1、数据库设计报告书一、系统概述.31.1 目的.31.2 背景.31.3 范围.3二、需求说明.32.1功能分析.32.2工作流图.42.3数据流图.52.4数据字典.52.5概念模型设计(E-R图).82.6逻辑设计.8三、系统设计.9 3.1软件模块结构设计.9 3.2 数据库设计.16四、系统的功能.204.1 系统的主界面.20 4.2 学生管理模块.20 4.3 教师管理模块.23 4.4 成绩管理模块.25五、全文总结与体会.28参考文献一、系统概述1.1 目的往往管理学生档案信息是非常繁琐和极为重要的工作.我们在学习和工作中作出的努力怎样才能得到很好地保存与管理已经是我们所关心的问
2、题了。为此,通过ASP+SQL技术来编写一部管理学生信息的程序来方便学生和老师。1.2 背景 21世纪以高科技为核心的知识经济将占主导地位,国家的综合国力和国际竞争力将越来越取决于科学技术创新水平。教育作为知识创新、传播和应用的基础,已经成为经济发展和社会进步的基础。在信息爆炸时代,传统教学管理面临着诸多挑战。1.3 范围系统包括的范围:系统结构流程、前台结构、后台结构。二、需求说明2.1功能分析教学管理系统包括学生信息、教师信息、成绩信息,具体功能如下:(1)学生消息的添加、查询、删除、修改。学生信息包括学生学号、姓名、性别、年龄。实现了学生基本信息的录入,实现了按学号、姓名、系名称查询学生
3、基本信息以及对学生基本信息的更新。(2)教师信息的添加、查询、删除、修改。教师信息包括老师所教课程、教师姓名、教师性别,老师所在系名、学历。实现了教师基本信息的添加,实现了按姓名、系名称查询教职工基本信息以及对教师基本信息的更新。(3)成绩信息的添加、查询、删除、修改。成绩信息包括学号、姓名、课程编号、课程名称、成绩。实现了成绩信息的录入,运用连接查询实现了按学号、学生姓名、课程号、课程名称、教师姓名查询学生成绩,按课程号、课程名称查询不及格学生学号、姓名,也实现了对成绩信息表的更新。(4)退出系统。实现了关闭系统的功能。 教学管理系统功能模块示意图:2.2工作流图2.3数据流图2. 4 数据
4、字典2.4.1 数据结构卡片为: 2.4.2 数据项卡片: 选择其中一个数据结构卡片给出数据项卡片(选择第一个数据结构卡片) 2.4.3数据存储卡片(选择第一个数据结构卡片分析):数据存储名:查询结果别名:描述:查询学生基本信息所得的结果数据流来源:学生基本信息表数据流去向:学校管理者组成:学号,姓名,专业,性别,年龄 2.4.4数据流卡片(选择第一个数据结构卡片分析)数据流名:学生基本信息表别名:学生登记表描述:用来录入学生基本信息定义:学生基本信息表=学号+姓名+专业+性别+年龄流入数据流:流出数据流:存取方式:随机2.5概念模型设计(E-R图) 2.6逻辑设计(1)Students(学号
5、主键,姓名,系名,性别,年龄);(2)Teacher(编号外键,教师姓名主键,系名,学历);(3)Grade(学号外键,课程名称外键,成绩)(学号和课程名称作为主键);综合上述关系模式可得,3个关系模式都只有一个主键,每个关系模式中的所有非主属性对候选键均没有部分函数和传递函数依赖,也没有主属性对候选键的部分函数依赖和传递函数依赖,故可以认为3个关系模式均达到BC范式,满足数据库的开发要求,无需再对每一个关系模式进行分解。1) 学生信息表字段名称数据类型字段大小必填字段编号 char10是姓名 char10是性别int2否年龄char4否专业char15否2)成绩表字段名称数据类型字段大小必填
6、字段课程编号 char 5是课程名称 char20是前置课程 char5否学分 int4否3)教师信息表字段名称数据类型字段大小必填字段教师编号int 4否教师姓名char10是性别char2否教授课程char10否备注 char10否三、系统设计3.1软件模块结构设计3.1.1创建一个新的MFC工程,如图所示3.1.2在对话框添加按钮,摆出各个部件的位置下图为学生管理的界面示意图:3.1.3给每个按钮做个新的对话框,如登记对话框如下图:3.1.4以此类推,将所有的模块的界面及上面的部件全部摆出来,最后所有的素材如下图:3.1.5实现对话框与对话框之间的跳转例如要实现点击学生管理界面上的登记按
7、钮跳到学生登记的界面点击登记按钮跳转到下图首先需要给学生登记界面对话框建立一个名为MyDlg_Stu_Reg的类,然后在双击学生管理界面上的登录按钮,添加下列代码:void MyDlg_Stu:OnButton1() MyDlg_Stu_Reg stuDlg;/建立学生登记类的一个对象 stuDlg.cCid = ; if (stuDlg.DoModal() = IDOK)/生成学生登录对话框,并检测是否按下确定按钮,若按下则刷新学生管理界面的数据表 RefreshData(); 其他所有按钮跳转均为上述方法可以实现。3.1.6实现从界面对话框上输入数据并写入数据库个人认为这个是整个软件的核心
8、部分,也是最难的部分。就还是拿学生登录对话框举例,从学生登录对话框输入学生的基本信息,然后点击确定,然后写入学生管理对话框。首先应建立一个名为Student的类,该类的声明如下class Student private: int StuNum; CString StuNam; CString StuSex; int StuAge;public: Student(); virtual Student(); CStringArray a_StuNum; CStringArray a_StuNam; CStringArray a_StuSex; CStringArray a_StuAge; /读取和
9、设置成员变量 int GetStuNum(); void SetStuNum(int iStuNum); CString GetStuNam(); void SetStuNam(CString cStuNam); CString GetStuSex(); void SetStuSex(CString cStuSex); int GetStuAge(); void SetStuAge(int iStuAge); /数据库操作 int HaveName(CString cStuNam); void sql_insert(); /向数据库中插入一行 void sql_findSno(CString
10、cCid); /以学号查询 void sql_findSname(); /以姓名查询 void sql_update(CString b); /修改数据库 void sql_delete(CString a); /删除数据库;说明:该类具有四个私有变量StuNum,StuNam,StuSex,StuAge,分别记录学生的学号,姓名,性别,年龄。由于私有函数不能直接访问,故需要编写对应的成员函数,void SetStuNum(int iStuNum),SetStuNam(CString cStuNam),SetStuSex(CString cStuSex),SetStuAge(int iStuA
11、ge),并把从外界获得的数据赋给私有变量。 还需要编写关于数据库操作的函数,例如数据库的插入函数void sql_insert();/数据库插入void Student:sql_insert() /连接数据库 ADOConn m_AdoConn; m_AdoConn.OnInitADOConn(); /设置INSERT语句 _bstr_t vSQL; CString strStuNum; strStuNum.Format(%d, StuNum); CString strStuAge; strStuAge.Format(%d, StuAge); vSQL = INSERT INTO Studen
12、ts (Cid, Cname, Csex, Cage, Cdept) VALUES( + strStuNum + , + StuNam + , + StuSex + , + strStuAge + , 计算机); /执行INSERT语句 m_AdoConn.ExecuteSQL(vSQL); /断开与数据库的连接 m_AdoConn.ExitConnect();说明:这个函数可以把Student类中的私有变量对应加到数据库之中。现在还需要把对话框中用户输入的数据通过后台传入类Student中的私有变量,应该先给对话框中的编辑框建立类向导,如下图:并给编辑框加上对应的变量名现在需要给学生登记对话
13、框中的确定按钮加上如下代码:void MyDlg_Stu_Reg:OnOK() / TODO: Add your control notification handler code here UpdateData(TRUE);/ int StuNum,StuAge;/ CString StuNam,StuSex; Student stu; stu.SetStuNum(m_Cid); stu.SetStuAge(m_Cage); stu.SetStuNam(m_Cname); stu.SetStuSex(m_Csex); if (m_Cname = ) MessageBox(请输入学生姓名);
14、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();到此为止即可以
15、实现从对话框向数据库中增加数据,其他所有功能,添加,删除,修改,查询的处理方法与这个大同小异,就不多做叙述了。 3.2 数据库设计3.2.1 建立一个新的数据库打开SQLserver2000的企业管理器,在数据库里增添一个新的数据库,如下图:3.2.2 建立一个新的表 设计表的属性,如下图: 填写表的内容,如下图:3.2.3 数据库的链接本程序采用ADO接口来实现数据库和MFC的链接首先需要给工程中添加新的关于ADO的组件,添加方法为:工程添加到工程Components and Controls,并添加下面三个控件:Microsoft DataCombo Control,version 6.0
16、 (OLEDB)Microsoft DataGrid Control,version 6.0 (OLEDB)Microsoft DataList Control,version 6.0 (OLEDB)如下图所示:添加成功后,控件工具条会新增四个工具,如下图需要再添加一个名为ADOConn.cpp和ADOConn.h的文件,并在ADOConn.h中添加下列代码:#import c:Program FilesCommon FilesSystemadomsado15.dll no_namespace rename(EOF,adoEOF) rename(BOF,adoBOF)点击ADODC控件的属性,
17、链接数据库,如下图:四、系统的功能4.1系统的主界面主界面代码详见:计算机学生管理系统Dlg.cpp4.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 成绩删除界面五、全文总结与体会 一周的课设感觉每天的都过的特别的充实,记得课设的第一天,我基本上是一头雾水,根本不知道如何下手,看着老师给的例子和书上的例子,那无数张表,无数个对话框,还有那写密密麻麻的代码,我头皮发麻,不知道自己在短
18、短的一周内真的能做完这么多不,万事开头难,我硬着头皮去一点点的研究,去翻书,去查资料,去问王老师。开始不断的自己尝试,一个功能一个功能的实现。我记得我首先实现的功能是在MFC上显示一张数据库里的表,当我把表成功的显示了时,我心里充满了成绩感,下决心一定要靠自己的能力把这个做完。下面就是实现对话框之间的跳转,现在想想,这个应该是最简单的了,可是当时就是不会,就到处的问别人。当我看到王老师一两分钟就帮我实现了这个功能,我不由得心升无限敬佩之情。记得在实现从对话框中添加数据到数据库这一功能时,是最困难的,参考例子上的代码,放到我这里就是不对,后来仔细的看代码,一行一行的看,一行一行的改,最后终于成功
19、的加入到数据库中了,可是还有个严重的问题,就是软件界面上的表不能即时刷新,这个问题纠缠了我好久,就是解决不了,问了好多同学,也在网上搜了好多解决方案,都不行。最后经过我不懈的努力,终于在有一次成功,我当时激动的站起来了,把周围人吓了一跳,我想这就是课设的魅力所在吧。成功的做好了一个模块,所有原理都会了,后面的工作基本就是完全的重复工作了,做起来就得心应手了,等到全做好后,发现自己好了不起,做成了一个软件了都。 当然这都需要十分的感谢王老师不耐其烦的指导,还有周围同学们无私的帮助。自己从中受益匪浅,锻炼了自己的动手能力,也培养了耐心,更充实了自己。没有大家的帮助,就没有这个作品,谢谢你们。参考文献1. 数据库原理及其应用教程 黄德才 科学出版社2. SQL Server 2000管理、开发及应用实例详解 陈世洪 人民邮电出版社3. VC6.0数据库系统开发实例导航 吴继刚 人民邮电出版社4. 数据库原理及应用 周佩德 电子工业出版社5. Visual Basic 6.0编程实例大制作 李光明 冶金工业出版社评 语
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1