数据库设计报告书.docx
《数据库设计报告书.docx》由会员分享,可在线阅读,更多相关《数据库设计报告书.docx(32页珍藏版)》请在冰豆网上搜索。
![数据库设计报告书.docx](https://file1.bdocx.com/fileroot1/2023-2/11/de2a1f53-2c5f-40c2-a6c8-8368c3e331c2/de2a1f53-2c5f-40c2-a6c8-8368c3e331c21.gif)
数据库设计报告书
一、系统概述…………………………………………………………...3
1.1目的………………………………………………………………………….3
1.2背景………………………………………………………………………….3
1.3范围………………………………………………………………………….3
二、需求说明…………………………………………………………...3
2.1功能分析……………………………………………………………………..3
2.2工作流图……………………………………………………………………..4
2.3数据流图……………………………………………………………………..5
2.4数据字典……………………………………………………………………..5
2.5概念模型设计(E-R图).........................................8
2.6逻辑设计……………………………………………………………………..8
三、系统设计…………………………………………………………...9
3.1软件模块结构设计............................................9
3.2数据库设计.................................................16
四、系统的功能………………………………………………………..20
4.1系统的主界面...............................................20
4.2学生管理模块...............................................20
4.3教师管理模块...............................................23
4.4成绩管理模块...............................................25
五、全文总结与体会…………………………………………………..28
参考文献
一、系统概述
1.1目的
往往管理学生档案信息是非常繁琐和极为重要的工作.我们在学习和工作中作出的努力怎样才能得到很好地保存与管理已经是我们所关心的问题了。
为此,通过ASP+SQL技术来编写一部管理学生信息的程序来方便学生和老师。
1.2背景
21世纪以高科技为核心的知识经济将占主导地位,国家的综合国力和国际竞争力将越来越取决于科学技术创新水平。
教育作为知识创新、传播和应用的基础,已经成为经济发展和社会进步的基础。
在信息爆炸时代,传统教学管理面临着诸多挑战。
1.3范围
系统包括的范围:
系统结构流程、前台结构、后台结构。
二、需求说明
2.1功能分析
教学管理系统包括学生信息、教师信息、成绩信息,具体功能如下:
(1)学生消息的添加、查询、删除、修改。
学生信息包括学生学号、姓名、性别、年龄。
实现了学生基本信息的录入,实现了按学号、姓名、系名称查询学生基本信息以及对学生基本信息的更新。
(2)教师信息的添加、查询、删除、修改。
教师信息包括老师所教课程、教师姓名、教师性别,老师所在系名、学历。
实现了教师基本信息的添加,实现了按姓名、系名称查询教职工基本信息以及对教师基本信息的更新。
(3)成绩信息的添加、查询、删除、修改。
成绩信息包括学号、姓名、课程编号、课程名称、成绩。
实现了成绩信息的录入,运用连接查询实现了按学号、学生姓名、课程号、课程名称、教师姓名查询学生成绩,按课程号、课程名称查询不及格学生学号、姓名,也实现了对成绩信息表的更新。
(4)退出系统。
实现了关闭系统的功能。
教学管理系统功能模块示意图:
2.2工作流图
2.3数据流图
2.4数据字典
2.4.1数据结构卡片为:
2.4.2数据项卡片:
选择其中一个数据结构卡片给出数据项卡片(选择第一个数据结构卡片)
2.4.3数据存储卡片(选择第一个数据结构卡片分析):
数据存储名:
查询结果
别名:
描述:
查询学生基本信息所得的结果
数据流来源:
学生基本信息表
数据流去向:
学校管理者
组成:
学号,姓名,专业,性别,年龄
2.4.4数据流卡片(选择第一个数据结构卡片分析)
数据流名:
学生基本信息表
别名:
学生登记表
描述:
用来录入学生基本信息
定义:
学生基本信息表=学号+姓名+专业+性别+年龄
流入数据流:
流出数据流:
存取方式:
随机
2.5概念模型设计(E-R图)
2.6逻辑设计
(1)Students(学号[主键],姓名,系名,性别,年龄);
(2)Teacher(编号[外键],教师姓名[主键],系名,学历);
(3)Grade(学号[外键],课程名称[外键],,成绩)(学号和课程名称作为主键);
综合上述关系模式可得,3个关系模式都只有一个主键,每个关系模式中的所有非主属性对候选键均没有部分函数和传递函数依赖,也没有主属性对候选键的部分函数依赖和传递函数依赖,故可以认为3个关系模式均达到BC范式,满足数据库的开发要求,无需再对每一个关系模式进行分解。
1)学生信息表
字段名称
数据类型
字段大小
必填字段
编号
char
10
是
姓名
char
10
是
性别
int
2
否
年龄
char
4
否
专业
char
15
否
2)成绩表
字段名称
数据类型
字段大小
必填字段
课程编号
char
5
是
课程名称
char
20
是
前置课程
char
5
否
学分
int
4
否
3)教师信息表
字段名称
数据类型
字段大小
必填字段
教师编号
int
4
否
教师姓名
char
10
是
性别
char
2
否
教授课程
char
10
否
备注
char
10
否
三、系统设计
3.1软件模块结构设计
3.1.1创建一个新的MFC工程,如图所示
3.1.2在对话框添加按钮,摆出各个部件的位置
下图为学生管理的界面示意图:
3.1.3给每个按钮做个新的对话框,如登记对话框如下图:
3.1.4以此类推,将所有的模块的界面及上面的部件全部摆出来,最后所有的素材如下图:
3.1.5实现对话框与对话框之间的跳转
例如要实现点击学生管理界面上的登记按钮跳到学生登记的界面
点击登记按钮跳转到下图
首先需要给学生登记界面对话框建立一个名为MyDlg_Stu_Reg的类,然后在双击学生管理界面上的登录按钮,添加下列代码:
voidMyDlg_Stu:
:
OnButton1()
{
MyDlg_Stu_RegstuDlg;//建立学生登记类的一个对象
stuDlg.cCid="";
if(stuDlg.DoModal()==IDOK)//生成学生登录对话框,并检测是否按下确定按钮,若按下则刷新学生管理界面的数据表
{
RefreshData();
}
}
其他所有按钮跳转均为上述方法可以实现。
3.1.6实现从界面对话框上输入数据并写入数据库
个人认为这个是整个软件的核心部分,也是最难的部分。
就还是拿学生登录对话框举例,从学生登录对话框输入学生的基本信息,然后点击确定,然后写入学生管理对话框。
首先应建立一个名为Student的类,该类的声明如下
classStudent
{
private:
intStuNum;
CStringStuNam;
CStringStuSex;
intStuAge;
public:
Student();
virtual~Student();
CStringArraya_StuNum;
CStringArraya_StuNam;
CStringArraya_StuSex;
CStringArraya_StuAge;
//读取和设置成员变量
intGetStuNum();
voidSetStuNum(intiStuNum);
CStringGetStuNam();
voidSetStuNam(CStringcStuNam);
CStringGetStuSex();
voidSetStuSex(CStringcStuSex);
intGetStuAge();
voidSetStuAge(intiStuAge);
//数据库操作
intHaveName(CStringcStuNam);
voidsql_insert();//向数据库中插入一行
voidsql_findSno(CStringcCid);//以学号查询
voidsql_findSname();//以姓名查询
voidsql_update(CStringb);//修改数据库
voidsql_delete(CStringa);//删除数据库
};
说明:
该类具有四个私有变量StuNum,StuNam,StuSex,StuAge,分别记录学生的学号,姓名,性别,年龄。
由于私有函数不能直接访问,故需要编写对应的成员函数,voidSetStuNum(intiStuNum),SetStuNam(CStringcStuNam),SetStuSex(CStringcStuSex),SetStuAge(intiStuAge),并把从外界获得的数据赋给私有变量。
还需要编写关于数据库操作的函数,例如数据库的插入函数voidsql_insert();
//数据库插入
voidStudent:
:
sql_insert()
{
//连接数据库
ADOConnm_AdoConn;
m_AdoConn.OnInitADOConn();
//设置INSERT语句
_bstr_tvSQL;
CStringstrStuNum;
strStuNum.Format("%d",StuNum);
CStringstrStuAge;
strStuAge.Format("%d",StuAge);
vSQL="INSERTINTOStudents(Cid,Cname,Csex,Cage,Cdept)VALUES("+strStuNum+",'"
+StuNam+"','"+StuSex+"',"+strStuAge+",'计算机')";
//执行INSERT语句
m_AdoConn.ExecuteSQL(vSQL);
//断开与数据库的连接
m_AdoConn.ExitConnect();
}
说明:
这个函数可以把Student类中的私有变量对应加到数据库之中。
现在还需要把对话框中用户输入的数据通过后台传入类Student中的私有变量,应该先给对话框中的编辑框建立类向导,如下图:
并给编辑框加上对应的变量名
现在需要给学生登记对话框中的确定按钮加上如下代码:
voidMyDlg_Stu_Reg:
:
OnOK()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
UpdateData(TRUE);
//intStuNum,StuAge;
//CStringStuNam,StuSex;
Studentstu;
stu.SetStuNum(m_Cid);
stu.SetStuAge(m_Cage);
stu.SetStuNam(m_Cname);
stu.SetStuSex(m_Csex);
if(m_Cname=="")
{
MessageBox("请输入学生姓名");
return;
}
if(cCid=="")//插入数据
if(stu.HaveName(m_Cname)==1)
{
MessageBox(m_Cname);
MessageBox("当前顾客已经存在,请重新输入顾客姓名");
return;
}
else
stu.sql_insert();
else//更新数据
if(m_Cname!
=cCname&&stu.HaveName(m_Cname)==1)
{
MessageBox("当前顾客已经存在,请重新输入顾客姓名");
return;
}
else
stu.sql_update(cCid);
//关闭对话框
CDialog:
:
OnOK();
}
到此为止即可以实现从对话框向数据库中增加数据,其他所有功能,添加,删除,修改,查询的处理方法与这个大同小异,就不多做叙述了。
3.2数据库设计
3.2.1建立一个新的数据库
打开SQLserver2000的企业管理器,在数据库里增添一个新的数据库,如下图:
3.2.2建立一个新的表
设计表的属性,如下图:
填写表的内容,如下图:
3.2.3数据库的链接
本程序采用ADO接口来实现数据库和MFC的链接
首先需要给工程中添加新的关于ADO的组件,添加方法为:
工程——添加到工程——ComponentsandControls,并添加下面三个控件:
MicrosoftDataComboControl,version6.0(OLEDB)
MicrosoftDataGridControl,version6.0(OLEDB)
MicrosoftDataListControl,version6.0(OLEDB)
如下图所示:
添加成功后,控件工具条会新增四个工具,如下图
需要再添加一个名为ADOConn.cpp和ADOConn.h的文件,并在ADOConn.h中添加下列代码:
#import"c:
\ProgramFiles\CommonFiles\System\ado\msado15.dll"no_namespacerename("EOF","adoEOF")rename("BOF","adoBOF")
点击ADODC控件的属性,链接数据库,如下图:
四、系统的功能
4.1系统的主界面
主界面代码详见:
计算机学生管理系统Dlg.cpp
4.2学生管理模块
4.2.1学生登记界面
4.2.2学生查询界面
4.2.3学生删除界面
4.3教师管理模块
4.3.1教师登记界面
4.3.2教师查询界面
4.3.3教师删除界面
4.4成绩管理模块
4.4.1成绩登记界面
4.4.2成绩查询界面
4.4.3成绩删除界面
五、全文总结与体会
一周的课设感觉每天的都过的特别的充实,记得课设的第一天,我基本上是一头雾水,根本不知道如何下手,看着老师给的例子和书上的例子,那无数张表,无数个对话框,还有那写密密麻麻的代码,我头皮发麻,不知道自己在短短的一周内真的能做完这么多不,万事开头难,我硬着头皮去一点点的研究,去翻书,去查资料,去问王老师。
开始不断的自己尝试,一个功能一个功能的实现。
我记得我首先实现的功能是在MFC上显示一张数据库里的表,当我把表成功的显示了时,我心里充满了成绩感,下决心一定要靠自己的能力把这个做完。
下面就是实现对话框之间的跳转,现在想想,这个应该是最简单的了,可是当时就是不会,就到处的问别人。
当我看到王老师一两分钟就帮我实现了这个功能,我不由得心升无限敬佩之情。
记得在实现从对话框中添加数据到数据库这一功能时,是最困难的,参考例子上的代码,放到我这里就是不对,后来仔细的看代码,一行一行的看,一行一行的改,最后终于成功的加入到数据库中了,可是还有个严重的问题,就是软件界面上的表不能即时刷新,这个问题纠缠了我好久,就是解决不了,问了好多同学,也在网上搜了好多解决方案,都不行。
最后经过我不懈的努力,终于在有一次成功,我当时激动的站起来了,把周围人吓了一跳,我想这就是课设的魅力所在吧。
成功的做好了一个模块,所有原理都会了,后面的工作基本就是完全的重复工作了,做起来就得心应手了,等到全做好后,发现自己好了不起,做成了一个软件了都。
当然这都需要十分的感谢王老师不耐其烦的指导,还有周围同学们无私的帮助。
自己从中受益匪浅,锻炼了自己的动手能力,也培养了耐心,更充实了自己。
没有大家的帮助,就没有这个作品,谢谢你们。
参考文献
1.《数据库原理及其应用教程》黄德才科学出版社
2.《SQLServer2000管理、开发及应用实例详解》陈世洪人民邮电出版社
3.《VC6.0数据库系统开发实例导航》吴继刚人民邮电出版社
4.《数据库原理及应用》周佩德电子工业出版社
5.《VisualBasic6.0编程实例大制作》李光明冶金工业出版社
评语