数据库课程设计(学生成绩管理系统)0/30得分:课程设计报告2012年1月3日学生信息管理系统设计姓名李富荣班级09网络1班学号20090504113课程名称数据库原理及应用指导教师王建颖数据库课程设计(学生成绩管理系统)1/30目录一概述…………………………………………………….11.1目的与要求……………………………………………….11.2设计环境…………………………………………………..1二需求分析…………………………………………………..12.1系统功能要求设计………………………………………….12.2系统模块设计…………………………………………………12.3数据字典………………………………………………………2三概念模型设计………………………………………………..4四逻辑和物理结构设计……………………………………….44.1由系统E—R图转化而得到的关系模式………………54.2确定关系模型的存取方法………………………………..54.3确定数据库的存储结构…………………………………..55.1数据库的实施……………………………………………5五数据库的实施与维护……………………………………..55.1数据库的实施………………………………………………65.2部分操作截图…………………………………………………255.3数据库的维护……………………………………………….27六总结……………………………………………………………27数据库课程设计(学生成绩管理系统)1/30学生信息管理系统一概述1.1目的与要求随着科技的发展,基本上所有的具有一定数量数据的机构都开始使用计算机数据库来做管理。几乎所有学校也都已经在使用计算机管理数据的机制,大大减少了学校学生成绩管理的工作量。该课程设计要求设计一个学生成绩的数据库管理系统,数据库中要求包含学生的基本信息,学科基本信息,以及学生所学课程的考试成绩。要方便学生进行成绩查询,通过该课程设计,应该达到把数据库理论知识更加的巩固加深,加强动手能力与实践能力,学以致用,与现实生活中的应用充分的结合起来。1.2设计环境①MicrosoftSQLServer2000②MicrosoftVisualC++6.0二需求分析2.1系统功能要求设计此系统实现如下系统功能:(1)使得学生的成绩管理工作更加清晰、条理化、自动化。(2)通过用登录系统,查询学生基本信息,学生所选课程成绩,添加或删除等功能。容易地完成学生信息的查询操作。(3)设计人机友好界面,功能安排合理,操作使用方便,并且进一步考虑系统在安全性,完整性,并发控制,备份和恢复等方面的功能要求。2.2系统模块设计成绩管理系统大体可以分成二大模块如,一是学生的基本信息模块,里面应该包含学生的各方面的基本信息;再者便是课程管理模块,在该模块中应该包含有对学生成绩信息的查询和处理,如平均成绩、最好成绩、最差成绩以及不及格学生的统计等功能模块;再其次还有教师、课程等相关信息的模块;可以得到系统流程图:数据库课程设计(学生成绩管理系统)2/302.3数据字典数据项是数据库的关系中不可再分的数据单位,下表分别列出了数据的名称、数据类型、长度、取值能否为空。利用SQLServer2000建立“学生选课”数据库,其基本表清单及表结构描述如下:数据库中用到的表:数据库表名关系模式名称备注Student学生学生个人信息表Course课程课程基本信息表Class班级班级成绩信息表SC学生选课学生选课信息SC基本情况数据表,结构如下:字段名字段类NotNull说明登陆失败班级信息学生信息退出系统用户验证教师信息登陆成功选课信息学生成绩查询课程信息数据库课程设计(学生成绩管理系统)3/30型SC_snoCharPrimarykey学号Student_CnocharPrimarykey课程号Student_Gradeintnotnull成绩Student表信息Student_SnocharPrimarykey学号Student_Snamevarcharnotnull姓名Student_Ssexcharnotnull性别Student_Sageintnotnull年龄Student_SClnocharnotnull班级号course数据表,结构如下:字段名字段类型约束控制说明Course_cnochar主键(primarykey)课程号Course_cnamevarcharreference课程名Course_cpnocharnotnull先修课课号Course_ccreditintnotnull学分Coursectnocharnotnull教师号Class情况数据表,结构如下:字段名字段类型约束控制说明Classclnocharprimarykey班级号Classvarcharnotnull班级名称数据库课程设计(学生成绩管理系统)4/30clname三概念模型设计由需求分析的结果可知,本系统设计的实体包括:(1)学生基本信息:(学号,姓名,性别,年龄,班级号,成绩)。(2)课程基本信息:(课程名,课程号,先修课课号,教师号,学分)。这些实体间的联系包括:(1)每位学生可以学习多门课程,每门课程可供多位学生学习。由上述分析可得到系统的E—R图:四逻辑和物理结构设计4.1由系统E—R图转化而得到的关系模式如下:学分性别班级号班级号班级成绩年龄学号班级课程号先修棵名称课程名名成绩课程教师号学生姓名数据库课程设计(学生成绩管理系统)5/30(1)学生(学号,姓名,性别,年龄,班级号)(2)课程(课程号,课程名,先修课程号,学分,教师号),其中主关键字为课程号;(3)班级(班级号,班级成绩)其中主关键字为班级号。可以与学生关系模式合并为:学生(课程号号,成绩,班级号,班级成绩)。4.2确定关系模型的存取方法在将概念模型转换成物理模型之后,我们可以对物理模型进行设计,双击物理模型的关系,可以对该关系的名称、注释等信息进行查询。可对该关系的属性列进行设计,可分别设置其名称、码、数据类型以及主码、是否为空等。在实际设计中最常用的存取方法是索引发,使用索引可以大大减少数据的查询时间,在建立索引时应遵循:在经常需要搜索的列上建立索引;在主关键字上建立索引;在经常用于连接的列上建立索引,即在外键上建立索引;在经常需要根据范围进行搜索的列上创建索引,因为索引已经排序,其指定的范围是连续的等规则。才能充分利用索引的作用避免因索引引起的负面作用。4.3确定数据库的存储结构确定数据库的存储结构主要指确定数据的存放位置和存储结构,包括确定关系、索引、日志、备份等的存储安排及存储结构,以及确定系统存储参数的配置。因为该成绩管理系统的数据量小,,所以我们只用把数据存储在使用的电脑硬盘上,不用作更多的安排。(1)创建学生基本信息表:下图显示了学生,课程和成绩三个关系的物理设计其中课程号与学号号分别为关系的主码。五数据库的实施与维护数据库课程设计(学生成绩管理系统)6/305.1数据库的实施:此阶段主要任务包括创建数据库,加载初始数据,数据库试运行,数据库的安全性和完整性控制数据库的备份与恢复,数据库性能的监督分析和改仅,数据库的重组和重构等。首先在数据库中建立一个学生成绩管理系统数据库,然后新建一个数据源。主要代码如下:voidCDialogSTU::Add(){_variant_tvar;CStringstr;UpdateData(true);if(m_StuID.IsEmpty()||atof(m_StuID)==0){AfxMessageBox(请重新输入正确的学生学号);return;}if(m_ClaID.IsEmpty()||atof(m_ClaID)==0){AfxMessageBox(请重新输入正确的班级号);return;}if(!m_pRecordsetCLA-adoBOF){m_pRecordsetCLA-MoveFirst();while(!m_pRecordsetCLA-adoEOF)//比较将要加入的班级号,查看该班级号是否在班级表中存在{var=m_pRecordsetCLA-GetCollect(Clno);str=(LPCSTR)_bstr_t(var);if(atof(m_ClaID)==atof(str)){数据库课程设计(学生成绩管理系统)7/30break;}m_pRecordsetCLA-MoveNext();}if(m_pRecordsetCLA-adoEOF){AfxMessageBox(请重新输入正确的班级号!);return;}}if(!m_pRecordset-adoBOF){m_pRecordset-MoveFirst();while(!m_pRecordset-adoEOF)//比较讲要加入的学生学号,查看该学生是否已经存在{var=m_pRecordset-GetCollect(Sno);str=(LPCSTR)_bstr_t(var);if(atof(m_StuID)==atof(str)){AfxMessageBox(该学生已存在);break;}m_pRecordset-MoveNext();}if(!m_pRecordset-adoEOF){return;}else{try数据库课程设计(学生成绩管理系统)8/30{m_pRecordset-AddNew();m_pRecordset-PutCollect(Sno,_variant_t(m_StuID));m_pRecordset-PutCollect(Sname,_variant_t(m_StuName));var.iVal=m_StuAge;m_pRecordset-PutCollect(Sage,var.iVal);m_pRecordset-PutCollect(Ssex,_variant_t(m_StuSex));m_pRecordset-PutCollect(Sclno,_variant_t(m_ClaID));m_pRecordset-Update();m_pRecordset-MoveFirst();m_grid.DeleteAllItems();AddToGrid();m_pRecordset-MoveLast();AfxMessageBox(插入成功!);}catch(_com_error*e){AfxMessageBox(e-ErrorMessage());}}}}voidCDialogSTU::Modify(){_variant_tvar;CStringstr;UpdateData(true);if(m_StuID==||atof(m_StuID)==0){AfxMessageBox(学号不能为空);return;数据库课程设计(学生成绩管理系统)9/30}if(m_ClaID.IsEmpty()||atof(m_ClaID)==0){AfxMessageBox(请重新输入正确的班级号);return;}if(!m_pRecordsetCLA-adoBOF){m_pRecordsetCLA-MoveFirst();while(!m_pRecordsetCLA-adoEOF)//比较将要加入的班级号,查看该班级号是否在班级表中存在{var=m_pRecordsetCLA-GetCollect(Clno);str=(LPCSTR)_bstr_t(var);if(atof(m_ClaID)==atof(str)){break;}m_pRecordsetCLA-MoveNext();}if(m_pRecordsetCLA-adoEOF){AfxMessageBox(请输入正确的班级号);return;}else{try{m_pRecordset-PutCollect(Sno,_variant_t(m_StuID));数据库课程设计(学生成绩管理系统)10/30m_pRecordset-PutCollect(S