网络数据库课程设计报告.docx
- 文档编号:9155396
- 上传时间:2023-02-03
- 格式:DOCX
- 页数:35
- 大小:729.20KB
网络数据库课程设计报告.docx
《网络数据库课程设计报告.docx》由会员分享,可在线阅读,更多相关《网络数据库课程设计报告.docx(35页珍藏版)》请在冰豆网上搜索。
网络数据库课程设计报告
网络数据库课程设计报告
题目:
学生信息管理系统
学号:
1003102429
姓名:
计蓓蓓
专业:
网络技术
班级:
二班
指导教师:
何丽娟
石家庄职业技术学院信息工程系
2012年1月
第一章系统概述
1.1系统功能与应用背景
目前,学校的学生信息管理工作已经不局限于对学生基本信息数据库的维护,而是越来越多地参与到其他相关部门提供一些必要的协调与服务。
学生信息管理的现状主要为:
缺乏统一的管理的模式,学生数据较为分散,随着学生的改变,需要经常对数据进行变更,而且对于变动的数据不能做到及时统一与修正。
本系统提供了一套学生综合信息管理的平台,使得系统管理人员对学校的年级进行分类,进而确定各个所对应的部门信息,在已有专业信息的基础上能够对所有的学生信息进行分类管理。
本系统的主要功能包括以下几个方面:
1、学生信息的基本管理
2、用户基本信息管理
第二章系统设计
2.1系统功能模块划分
根据本例开始部分描述的系统功能如图2-1所示。
学生信息管理
2.2数据库设计
一、数据库需求分析
在设计数据库结构时,应该尽可能满足用户所提出的各项要求,同时避免冗余数据的产生。
由于在学生信息管理系统中需要采集大量的信息,包括基本管理、用户管理等,如果不能有效合理地组织表的结构以及每张表所包含的字段,那么在后期进行数据整理及汇总时,将增加开发人员的工作难度和工作量。
根据学生的基本信息及相关特点,可以总结出以下规律:
(1)基本管理包含学生信息管理、课程信息管理、成绩信息管理;
(2)学生信息管理包含一个或多个学生;
(3)一门课程包含多名学生;
(4)每名学生都有不同的学号;
(5)每名学生都有自己对应的成绩;
(6)一个角色对应一个或多个用户。
二、数据库概念结构设计
根据数据库需求分析的结果,就可以确定程度中所包含的实体与实体之间的关系,作为数据库逻辑结构设计的基础与指导。
根据本系统的需要,可以归纳出以下实体:
学籍信息实体、课程信息实体、成绩信息实体、用户信息实体。
为了更好地理解各个实体及其含义,用E-R图对实体进行描述。
学生信息实体如图2-2所示。
课程信息实体如图2-3所示
成绩信息实体如图2-4所示。
三、数据库逻辑结构设计
系统数据库名称为:
学生信息管理系统,数据库中包括:
(1)学生信息管理;
(2)课程信息管理;(3)学生成绩管理;(4)用户管理。
下面列出各个表的数据结构,如表2-1~2-3所示。
表2-1学生信息管理的数据结构
字段名
类型
长度
学号
姓名
性别
入学成绩
出生日期
联系电话
家庭住址
char
char
char
int
datetime
char
char
10
8
2
12
30
表2-2课程信息管理的数据结构
字段名
类型
长度
课程号
课程名
学分
教师
课程性质
char
char
int
char
char
6
8
8
4
表2-3学生成绩管理的数据结构
字段名
类型
长度
学号
课程号
分数
char
char
int
10
6
四、设置表与表之间的关系
一般情况下,数据库中所包含的表都不是独立存在的,而是表与表之间有一定的关系,称为关联。
如果数据库中的信息不能满足正常的依赖关系就会破坏数据的完整性和一致性。
根据本实例的特点,需要依次设置学籍信息管理、课程信息管理与成绩管理之间的关系,如图2-5所示。
图2-5系统关系图
五、文件夹及文件的设计
在开发学生信息管理系统之前,设计了如图所示的文件夹架构图,在开发时只需将相应文件保存到对应文件夹下即可,如图2-6所示。
2.1
图2-6文件夹结构图
2.3主要模块流程图
登录系统流程图:
如图2-7所示。
第三章
系统实现
3.1SQLServer服务器端数据处理
一、创建insert触发器
创建insert触发器方法,如图3-1所示。
图3-1触发器
二、创建存储过程
创建存储过程方法,如图3-2所示。
图3-2存储过程
3.2客户界面的实现
一、用户登录界面
用户登录窗体,如图3-3所示。
图3-3用户登录窗体
本系统是通过用户登录进而操作的。
用户登录界面中[登录]按钮的代码为:
privatevoidbtnok_Click(objectsender,EventArgse)
{
using(SqlConnectioncon=newSqlConnection(strcon))
{
if(txtname.Text==""||txtpassword.Text=="")
{
MessageBox.Show("请输入用户名或密码!
");
}
else
{
try
{
this.Hide();
con.Open();
SqlCommandcmd=newSqlCommand();
cmd.Connection=con;
cmd.CommandText="select*from用户管理where用户名称='"+txtname.Text+"'and用户密码='"+txtpassword.Text+"'";
if(cmd.ExecuteScalar()!
=null)
{
学生管理系统主界面=new学生管理系统();
主界面.ShowDialog();
}
this.Close();
}
catch(Exceptioner)
{
MessageBox.Show(er.Message);
}
finally
{
con.Close();
}
}
}
}
二、主界面设计
系统主界面窗体,如图3-4所示。
图3-4系统主界面窗体
本实例主界面如图所示。
由图可知,“基本管理”菜单下面有学生信息管理、课程信息管理、成绩信息管理三个子菜单。
“用户管理”菜单下面有添加用户和浏览用户两个子菜单,用户方便操作人员查看所有有权登录系统的人员。
主界面代码为:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.ComponentModel;
usingSystem.Data;
usingSystem.Drawing;
usingSystem.Linq;
usingSystem.Text;
usingSystem.Windows.Forms;
using学生信息管理系统.用户管理;
namespace学生信息管理系统
{
publicpartialclass学生管理系统:
Form
{
public学生管理系统()
{
InitializeComponent();
}
privatevoid学生信息管理ToolStripMenuItem_Click(objectsender,EventArgse)
{
学生信息管理student=new学生信息管理();
student.ShowDialog();
}
privatevoid课程信息管理ToolStripMenuItem_Click(objectsender,EventArgse)
{
课程信息管理course=new课程信息管理();
course.ShowDialog();
}
privatevoid成绩信息管理ToolStripMenuItem_Click(objectsender,EventArgse)
{
成绩信息管理score=new成绩信息管理();
score.ShowDialog();
}
privatevoid添加用户ToolStripMenuItem_Click(objectsender,EventArgse)
{
添加用户add=new添加用户();
add.ShowDialog();
}
privatevoid浏览用户ToolStripMenuItem_Click(objectsender,EventArgse)
{
修改用户update=new修改用户();
update.ShowDialog();
}
privatevoid浏览用户ToolStripMenuItem1_Click(objectsender,EventArgse)
{
浏览用户browse=new浏览用户();
browse.ShowDialog();
}
privatevoid退出系统ToolStripMenuItem_Click(objectsender,EventArgse)
{
this.Close();
}
}
}
三、学生信息管理
学生信息管理窗体,如图3-5所示。
图3-5学生信息管理
其中课程信息管理与成绩信息管理的设定方法与学生信息管理的方法类似。
学生信息管理的代码为:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.ComponentModel;
usingSystem.Data;
usingSystem.Drawing;
usingSystem.Linq;
usingSystem.Text;
usingSystem.Windows.Forms;
usingSystem.Data.SqlClient;
namespace学生信息管理系统
{
publicpartialclass学生信息管理:
Form
{
public学生信息管理()
{
InitializeComponent();
}
privateDataSetmyDataSet=newDataSet();//初始化一下新的DataSet
privateCurrencyManagermyBind;//用于数据导航控制
privatevoid学生信息管理_Load(objectsender,EventArgse)
{
stringstrcon="DataSource=.;InitialCatalog=学生信息管理系统;IntegratedSecurity=True";
SqlConnectioncon=newSqlConnection(strcon);
con.Open();
SqlDataAdapteradp=newSqlDataAdapter("select*from学生信息管理",con);
adp.Fill(myDataSet,"学生表");
this.dataGrid1.DataSource=myDataSet.Tables[0];
con.Close();
myBind=(CurrencyManager)this.BindingContext[myDataSet,"学生表"];//设置dataGridView1数据导航控制
this.dataGrid1.Select(myBind.Count-1);
myBind.Position=myBind.Count-1;
this.dataGrid1.CurrentRowIndex=myBind.Position;
SetBindings();
}
privatevoidSetBindings()
{
textBox1.DataBindings.Add("Text",myDataSet,"学生表.学号");
textBox2.DataBindings.Add("Text",myDataSet,"学生表.姓名");
textBox3.DataBindings.Add("Text",myDataSet,"学生表.性别");
textBox4.DataBindings.Add("Text",myDataSet,"学生表.入学成绩");
textBox5.DataBindings.Add("Text",myDataSet,"学生表.出生日期");
textBox6.DataBindings.Add("Text",myDataSet,"学生表.联系电话");
textBox7.DataBindings.Add("Text",myDataSet,"学生表.家庭住址");
}
privatevoidtoolBar1_ButtonClick(objectsender,ToolBarButtonClickEventArgse)
{
if(e.Button.ToolTipText=="首记录")
{
this.dataGrid1.UnSelect(myBind.Position);//取消原选中的行
myBind.Position=0;
this.dataGrid1.Select(myBind.Position);//选中当前行
this.dataGrid1.CurrentRowIndex=myBind.Position;//移动表头指针图标
return;
}
if(e.Button.ToolTipText=="上记录")
{
if(myBind.Position==0)
{
MessageBox.Show("已经到了第一条记录!
");
}
else
{
this.dataGrid1.UnSelect(myBind.Position);
myBind.Position--;
this.dataGrid1.Select(myBind.Position);
this.dataGrid1.CurrentRowIndex=myBind.Position;
return;
}
}
if(e.Button.ToolTipText=="下记录")
{
if(myBind.Position==myBind.Count-1)
{
MessageBox.Show("已经到了最后一条记录!
");
}
else
{
this.dataGrid1.UnSelect(myBind.Position);
myBind.Position++;
this.dataGrid1.Select(myBind.Position);
this.dataGrid1.CurrentRowIndex=myBind.Position;
return;
}
}
if(e.Button.ToolTipText=="尾记录")
{
this.dataGrid1.UnSelect(myBind.Position);
myBind.Position=myBind.Count-1;
this.dataGrid1.Select(myBind.Position);
this.dataGrid1.CurrentRowIndex=myBind.Position;
return;
}
if(e.Button.ToolTipText=="插入")
{
try
{
if(textBox1.Text!
=""&&textBox2.Text!
=""&&textBox3.Text!
=""&&textBox4.Text!
=""&&textBox5.Text!
=""&&textBox6.Text!
=""&&textBox7.Text!
="")
{
stringstrcon="DataSource=.;InitialCatalog=学生信息管理系统;IntegratedSecurity=True";
SqlConnectioncon=newSqlConnection(strcon);
con.Open();
stringcmd="insertinto学生信息管理(学号,姓名,性别,入学成绩,出生日期,联系电话,家庭住址)values('"+textBox1.Text+"','"+textBox2.Text+"','"+textBox3.Text+"','"+textBox4.Text+"','"+textBox5.Text+"','"+textBox6.Text+"','"+textBox7.Text+"')";
SqlCommandmycmd=newSqlCommand(cmd,con);
mycmd.ExecuteNonQuery();
con.Close();
myDataSet.Tables["学生表"].Rows[myBind.Position].BeginEdit();
myDataSet.Tables["学生表"].Rows[myBind.Position].EndEdit();
myDataSet.Tables["学生表"].AcceptChanges();
MessageBox.Show("插入成功!
");
}
else
{
MessageBox.Show("必须填满所有字段值!
");
}
}
catch(Exceptioner)
{
MessageBox.Show("保存数据记录发生"+er.ToString());
}
}
if(e.Button.ToolTipText=="修改")
{
}
if(e.Button.ToolTipText=="删除")
{
DialogResultr=MessageBox.Show("是否删除当前记录!
","删除当前记录!
",MessageBoxButtons.YesNo,MessageBoxIcon.Question);
intss=(int)r;
if(ss==6)
{
try
{
stringstrcon="DataSource=.;InitialCatalog=学生信息管理系统;IntegratedSecurity=True";
SqlConnectioncon=newSqlConnection(strcon);
con.Open();
stringcmd="deletefrom学生信息管理where学号="+textBox1.Text;
SqlCommandmycmd=newSqlCommand(cmd,con);
mycmd.ExecuteNonQuery();
myDataSet.Tables["学生表"].Rows[myBind.Position].Delete();
myDataSet.Tables["学生表"].AcceptChanges();
con.Close();
MessageBox.Show("删除成功!
");
}
catch(Exceptioner)
{
MessageBox.Show("删除记录错误信息:
"+er.ToString());
}
}
}
if(e.Button.ToolTipText=="退出")
{
this.Close();
}
}
privatevoidbutton1_Click(objectsender,EventArgse)
{
try
{
myDataSet.Clear();
stringstr=textBox8.Text;
stringsqlcmd="select*from学生信息管理where学号="+str;
stringstrcon="DataSource=.;InitialCatalog=学生信息管理系统;IntegratedSecurity=True";
SqlConnectioncon=newSqlConnection(strcon);
con.Open();
SqlDataAdaptermycmd=newSqlDataAdapter(sqlcmd,con);
mycmd.Fill(myDataSet,"学生表");
dataGrid1.DataSource=myDataSet.Tables[0];
con.Close();
myBind=(CurrencyManager)this.BindingContext[myDataSet,"学生表"];
this.dataGrid1.Select(myBind.Count-1);
myBind.Position=myBind.Count-1;
}
catch
{
MessageBox.Show("没有相关学号的信息!
");
}
}
}
}
四、用户管理
用户管理的各窗体如图3-6~3-8所示。
其中包括添加用户、修改用户和浏览用户。
添加用户窗体,如图3-6所示。
图3-6添加用户窗体
添加用户的代码为:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.ComponentModel;
usingSystem.Data;
usingSystem.Drawing;
usingSystem.Linq;
usingSystem.Text;
usingSystem.Windows.Forms;
usingSystem.Data.SqlClient;
namespace学生信息管理系统.用户管理
{
publicpartialclass添加用户:
Form
{
stringstrcon="DataSource=.;InitialCatalog=学生信息管理系统;IntegratedSecurity=True";
public添加用户()
{
InitializeComponent();
}
privatevoidbtnok_Click(objectsender,EventArgse)
{
if(txtid.Text==""||txtname.Text==""||txtpassword.Text==""||txtremark.Text=="")
{
MessageBox.Show("请将用户信息填写完整!
");
}
else
{
using(SqlConnectioncon=newSqlConnection(strcon))
{
if(con.State==ConnectionState.Closed)
{
con.Op
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 网络 数据库 课程设计 报告