版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
学习-----好资料课程设计任务书题 目 学生成绩管理系统系(部)数理系专业班级学生姓名学号12 月 21 日至 12 月 25 日 共 1 周指导教师(签字)系主任(签字)年 月 日更多精品文档学习-----好资料学生成绩管理系统通过完成从用户需求分析、概念结构设计,逻辑结构设计等一系列的数据库设计到上机编程、调试和应用等全过程,进一步理解和掌握教材中的相关内容。一.实验要求(1)先对选定的实验做简单的需求分析 ;(2)做出数据流图和数据字典 ;(3)在数据流图和字典的基础上做出 E-R图(概念结构设计);(4)在E-R图基础上进行关系模式设计(至少满足 3NF)(逻辑结构设计);5)根据需求分析的各种数据请求得出各种视图以及各种约束、规则、触发器脚本描述;(6)根据第(5)的内容在SQL-SERVER中设计中实例的数据库;(7)用自己熟悉的一门语言进行设计的功能的实现(8)整理前面几步的文档和程序源码,可执行程序,形成最终的实验报告。(9)实验报告的最后写出本次实验完成中遇到的问题及解决方法二.需求分析功能需求本系统开发的目的,就是通过系统开发,实现课程管理有关工作的计算机化,提高关键环节的处理速度和规范化,并对有关的工作进行集成和重组,通过网络系统实现集中管理、分散操作,提高选课管理工作的质量和效率。通过对学校的选课及成绩管理工作进行实际调查,学生可以自由选择课程、选老师,学生注册的行政班和教学班是游离的,开发工作需要涉及任课教师、学生、管理员(教务工作人员)三种用户。学生需求在学校规定的选课期间,学生通过任何一台连接因特网计算机的浏览器就能进行网上选课。学生以用户名和密码进入选课系统。 选课系统会根据用户名和密码自动识别所在的系,然后显示出与学生有关的课程列表。 系统必须控制某一门课程在学期间只能选一次。在学生选课时能自动进行有关逻辑判断,如: 是否选课超过了规定的门数,是否选择了不符合预修条件的课程, 是否选择的课程超过此课程最大选择人数,只有符合要求的选择才能选课成功。 学生可以更改部分个人信息如密码,电话号码等;学生可以查询已修课程成绩和已选课程信息。更多精品文档学习-----好资料教师需求任课教师登录后,可以查看自己所教课程的课程表;对于同一学期内有多门课程的教师,需要选择具体课程后,才能查看已选这门课程的学生信息:期末,教师可以上传这些学生的成绩。管理员需求系统管理员登录后,可以对学生,教师,课程,教学班级的基本信息进行添加,修改,删除等工作。课程安排是选课的核心,只有按照实际的教学情况安排出每个学期必修和选修的课程,才能保证选课的顺利进行。在每学期, 学生选课前,各院系管理员必须在该院系培养方案中录入本学期可以开设的课程和排课安排,对于需要预修条件的课程, 需要设置好预修条件。基础部管理员负责公共课的课程开设和排课安排。其中排课及教学班级的安排上要保证同一个教师在同一时间只能上一门课程;同一个教室同一时间也只能开一门课程。三.数据分析与建模数据流图和数据字典顶层图:数据字典:数据流项目:学生信息=姓名+学号+性别+年龄+专业+总学分成绩单=姓名+课目+成绩数据项条目:数据项名:成绩类型:int长度:4范围:100-0加工条目:处理过程:更多精品文档学习-----好资料过程名:学籍管理系统输入:学生信息,考试成绩,学生记录输出:统计表,成绩单数据字典:数据存储:数据存储名:学生记录组成:姓名+学号+性别+年龄+专业+总学分处理过程:处理过程名:录入存储处理输入:学生信息处理要求:如果没有所输入的学生记录,则建立新的学生记录,存储基本情况和课目成绩处理过程名:查询处理输入:学生信息,课程号输出:成绩处理要求:根据学生的学号查询相应的成绩处理过程名:统计处理输入:学生考试成绩输出:平均成绩,排名成绩数据字典:更多精品文档学习-----好资料数据流:新生信息=入学时间+姓名+年龄+专业+性别合格单=姓名+专业处理过程:处理过程名:审查输入:学生信息输出:合格单处理要求:根据学生信息判断是否是新生处理过程名:是否是新生输入:合格单输出:新生信息处理要求:根据合格单建立新生信息处理过程名:录入存储学生信息,各科成绩输入:新生信息,考试成绩输出:本次考试成绩数据字典:数据存储:数据存储名:考试成绩组成:姓名+专业+成绩+学号组织方式:一学号为关键字处理过程:处理过程名:有效性检查输入:学号,课程号输出:有效查询处理要求:根据所输入的信息查询有效性处理过程名:成绩查询输入:考试成绩输出:成绩处理要求:根据考试成绩查询成绩处理过程:更多精品文档学习-----好资料处理过程名:统计选择输入:学生记录输出:按规定统计成绩处理要求:根据所输入学生记录查询成绩2.E_R图1)学生实体E-R图2)课程实体E-R图3)教师实体E-R图各实体之间的E-R图3.E—R图转换为关系模式 :更多精品文档学习-----好资料1)学生(XS)(学号(sno),姓名(sname),专业(sdept),性别(ssex),出生日期(sbirth ),总 学分(all_credit) )学生表:主码:学号(sno)函数依赖:snoU.此表中,不存在非主属性对码的部分依赖,传递依赖,以及主属性对码的部分依赖和传递依赖,故满足 3NF2)课程(KC)(课程号(cno),课程名(cname),开课学期(term),学时(class_hour) ,学分(credit) )课程表:主码:课程号(cno)函数依赖:cnoU此表中不存在非主属性对码的部分依赖,传递依赖,以及主属性对码的部分依赖和传递依赖,故满足 3NF3)选课(XS_KC)(学号(sno),课程号(cno),成绩(grade))选课表:主码:(学号,课程号)外码:学号,课程号函数依赖:(sno,cno) U此表中不存在非主属性对码的部分依赖,传递依赖,以及主属性对码的部分依赖和传递依赖,故满足 3NF4)教师(TCH)(编号(tno), 姓名(tname),性别(tsex),出生日期(tbirth) ,职称(professional) ,专业(department))教师表:主码:编号(tno)函数依赖:tnoU此表中不存在非主属性对码的部分依赖,传递依赖,以及主属性对码的部分依赖和传递依赖,故满足 3NF5)授课(TCH_KC)(教师编号(tno), 课程号(cno),上课地点(place))授课表:主码:(教师编号,课程号)外码:教师编号,课程号函数依赖:(tno,cno) U此表中不存在非主属性对码的部分依赖,传递依赖,以及主属性对码的部分依赖和传递依赖,故满足3NF逻辑设计结果:数据库表名XS(学生)字段名数据类型含义说明空值情况备注SnoChar(10)学号不能为空主键SnameChar(10)姓名不能为空ssexChar(10)性别可以为空只能取“男”“女”,默认为“男”Sbirthdate出生日期可以空SdeptChar(10)所在专业可以空All_creditInt总学分可以空更多精品文档学习-----好资料数据库表名KC(课程)字段名数据类型含义说明空值情况备注CnoChar(10)课程号不能为空主键SnameChar(10)课程名不能为空creditint学分可以空Class_hourInt课时数可以空TermInt开课学期可以空数据库表名TCH(教师)字段名数据类型含义说明空值情况备注tnoChar(10)教师号不能为空主键tnameChar(10)姓名不能为空完全依赖Tno,是uniqueTbirthdate出生日期可以空TsexChar(10)性别可以空只能取“男”“女”,默认为男ProfessioChar(10)职称可以空nalDepartmenChar(10)专业可以空t更多精品文档学习-----好资料数据库表名字段名数据类型含义说明CnoChar(10)课程号SnoChar(10)学号Gradeint成绩
XS_KC(选课)空值情况 备注不能为空 主码不能为空 主码可以空数据库表名TCH_KC(授课)字段名数据类型含义说明空值情况备注TnoChar(10)教师编号不能为空主码CnoChar(10)课程号不能为空主码PlaceChar(10)授课地点可以空更多精品文档学习-----好资料四.数据库应用开发与运行此为主界面,有五个按钮,可进行查询,修改等操作。更多精品文档学习-----好资料上图为学生信息查询窗口,可按学号,姓名,专业进行查询下图学生选课信息窗口,双击上图学生信息查询窗口中表格左边,可弹出此窗口显示该学生选课信息。更多精品文档学习-----好资料上图为教师信息查询窗口,可按教师编号,姓名,职称部门进行查询,双击表格左部可显示教师授课信息,如下图所示。更多精品文档学习-----好资料此为学生信息修改窗口,单击一行,可在上面文本框中显示该生信息,并进行插入,修改,删除等操作。此为学生成绩录入窗口,单击一行可现实该生学号及所选课程,并在成绩文本框中进行添加及修改该课程成绩操作。更多精品文档学习-----好资料此为学生选课窗口,单击一行显示该行信息,可进行选课,删除操作五.结果分析、结论与体会在这次课程设计中,我遇到的困难很多,在解决它们的同时我又学到了很多,受益匪浅,特别是如何分析、建立、开发一个系统。在一个系统开发的过程中编码不是重要的,重要的是分析系统、建立起系统模型。在分析一个系统前,分析人员必须要对将要开发的系统所涉及到的各方面知识有一个认识,然后将系统的模型建立起来。在程序编写中,我认识到软件要有简便的界面,良好的程序风格。拥有这些条件,程序的可读性才会好,开发的复杂度才能大大减少,修改代码时更加容易下手。我认为,所谓友好的界面,就是用户需要的界面,力求简便全面。所以设计一个界面时,开发人员必须要了解用户的想法,从用户的角度去设计,当然,开发不能全听用户的意见,在详细分析了系统后,开发人员可以向用户提出一些修改的意见,在双方多次交流后定出程序所需的功能,以决定界面的实现。在编码中,良好的编程风格与习惯是提高工作效率的一个重要方面,而且良好的编程风格与习惯也是使软件便于维护的基础。那如何是良好的编程风格与习惯呢?我认为主要是程序的模块化、必要的注释。所谓模块化就是使程序的功能实现分成多个单独的功能模块,而不能在一大段代码中实现多个功能,如果这样做,别的人是非常难读懂你的程序。必要的注释,显而易见是要在程序的编写中加入对程序的说明,原因就是为了别人能读懂你的程序,过一段时间后你自己还能读懂自己的程序。最后说明下这次课程设计给我感受最深的有三点:.进行管理系统开发这样的工作,要有恒心,要能静下新来做,而不能浮躁。.要善于同别人交流与合作,善于获取各种有用的资源。更多精品文档学习-----好资料.要真真实实的多查资料,多问,多看。六.参考文献及资料[1]《学用VisualBasic编程》潭浩西安电子科技大学出版社[2]《数据库原理》丁宝康施伯乐著经济科学出版社[3]《SQLServer数据库开发入门与范例解析》夏邦贵著北京机械工业出版社[4]《SQLServer2005应用开发技术指南》彭东著北京清华大学出版社[5]《VisualBasic6.0》林陈雷著人民邮电出版社[6]《面向对象程序设计系列教材》龚沛曾著高等教育出版社[7]《VisualBasic6.0数据库开发与专业应用》敬铮著国防工业出版社[8]《VisualBasic6.0数据库程序设计高手》温贤发著科学出版社七.附录SQLServer建立五张表VB程序及控件设置更多精品文档学习-----好资料PrivateSubCommand3_Click()'取消Stusno.Text=""Stusname.Text=""Stusbirth.Text=""Stusdept.Text=""Stuall_credit.Text=""Stusexm=FalseStusexf=FalseEndSub'修改元组PrivateSubStuchange_Click()IfTrim(Stusno.Text)=""OrTrim(Stusname.Text)=""Or(Stusexm=FalseAndStusexf=False)ThenMsgBox"加*数据项不能为空,请重新设置 ",vbOKOnly,"信息提示"Stusno.SetFocusExitSubEndIfIfTrim(Stusbirth.Text)<>""ThenIfNotIsDate(Trim(Stusbirth.Text))ThenMsgBox"出生日期输入不正确,请重新输入 ",vbOKOnly,"信息提示"Stusbirth.SetFocusExitSub更多精品文档学习-----好资料EndIfEndIfStuADO.Recordset.Fields("学号")=Trim(Stusno.Text)StuADO.Recordset.Fields("姓名")=Trim(Stusname.Text)StuADO.Recordset.Fields("出生日期")=Trim(Stusbirth.Text)StuADO.Recordset.Fields("专业")=Trim(Stusdept.Text)StuADO.Recordset.Fields("总学分")=Trim(Stuall_credit.Text)IfStusexm=TrueThenStuADO.Recordset.Fields("性别")="男"Else:Stusexf=TrueStuADO.Recordset.Fields("性别")="女"EndIfStuADO.Recordset.UpdateEndSub'删除元组PrivateSubStuDel_Click()ret=MsgBox("是否要删除"+StuADO.Recordset("学号")+"号学生的记录?",vbYesNo,"提示")Ifret=vbYesThenStuADO.Recordset.DeleteEndIfStuADO.RecordSource ="selectsno学号,sname姓名,sdept专业,ssex性别,sbirth出生日期,all_credit总学分fromXS"Command3_ClickStuADO.RefreshEndSub'选中一行显示元组PrivateSubStuDG_Click()Stusno.Text=StuADO.Recordset("学号")Stusname.Text=StuADO.Recordset("姓名")Stusbirth.Text=StuADO.Recordset("出生日期")Stusdept.Text=StuADO.Recordset("专业")Stuall_credit=StuADO.Recordset("总学分")IfTrim(StuADO.Recordset(" 性别"))="男"ThenStusexm=TrueElseStusexf=TrueEndIfEndSub'插入元组PrivateSubStudinsert_Click()IfTrim(Stusno.Text)=""OrTrim(Stusname.Text)=""Or(Stusexm=FalseAndStusexf=False)Then更多精品文档学习-----好资料MsgBox"加*数据项不能为空,请重新设置 ",vbOKOnly,"信息提示"Stusno.SetFocusExitSubEndIfIfTrim(Stusbirth.Text)<>""ThenIfNotIsDate(Trim(Stusbirth.Text))ThenMsgBox"出生日期输入不正确,请重新输入 ",vbOKOnly,"信息提示"Stusbirth.SetFocusExitSubEndIfEndIfStuADO.Recordset.AddNewStuADO.Recordset.Fields("学号")=Trim(Stusno.Text)StuADO.Recordset.Fields("姓名")=Trim(Stusname.Text)StuADO.Recordset.Fields("出生日期")=Trim(Stusbirth.Text)StuADO.Recordset.Fields("专业")=Trim(Stusdept.Text)StuADO.Recordset.Fields("总学分")=Trim(Stuall_credit.Text)IfStusexm=TrueThenStuADO.Recordset.Fields("性别")="男"Else:Stusexf=TrueStuADO.Recordset.Fields("性别")="女"EndIfStuADO.Recordset.UpdateEndSub更多精品文档学习-----好资料'取消PrivateSubStucancel_Click()Stusno.Text=""Stusname.Text=""Stucname.Text=""EndSub'选课PrivateSubStuchoose_Click()StuADOXS.RecordSource="select*fromXSwheresno='"+Trim(Stusno.Text)+"'"StuADOXS.RefreshIfTrim(Stusno.Text)=""OrTrim(Stusname.Text)=""OrTrim(Stucname.Text)=""Thenret=MsgBox("输入不正确,请重新输入!",vbYes,"错误!")ElseIfTrim(Stusname.Text)<>Trim(StuADOXS.Recordset("sname"))Thenret=MsgBox("输入学号与姓名不匹配,请重新输入 !")ElseStuADOXS_KC.RecordSource="select*fromXS_KC"StuADOXS_KC.RefreshStuADOXS_KC.Recordset.AddNewStuADOXS_KC.Recordset.Fields("sno")=Trim(Stusno.Text)StuADOKC.RecordSource="select*fromKCwherecname='"+Trim(Stucname.Text)+"'"StuADOKC.RefreshStuADOXS_KC.Recordset.Fields("cno")=StuADOKC.Recordset("cno")更多精品文档学习-----好资料StuADOXS_KC.Recordset.UpdateStuADO.RefreshEndIfEndSub'删除元组PrivateSubStudelete_Click()ret=MsgBox("是否要删除"+StuADO.Recordset("学号")+"号学生的选课记录?",vbYesNo,"提示")Ifret=vbYesThenStuADOXS_KC.RecordSource="select*fromXS_KCwheresno='"+StuADO.Recordset(" 学号")+"'"StuADOXS_KC.RefreshStuADOXS_KC.Recordset.DeleteEndIfStuADO.RefreshStucancel_ClickEndSub'单击显示元组PrivateSubStuDG_Click()Stusno.Text=StuADO.Recordset("学号")Stusname.Text=StuADO.Recordset("姓名")Stucname.Text=StuADO.Recordset("课程名")EndSub更多精品文档学习-----好资料PrivateSubStuadd_Click()IfStugrade.Text=""Thenret=MsgBox("输入为空,请重新输入 ",vbYes,"错误提示")ElseStuADOKC.RecordSource="select*fromKCwherecname='"+Trim(Stucname.Text)+"'"StuADOKC.RefreshStuADOXS_KC.RecordSource = "select * from XS_KC where cno='" +StuADOKC.Recordset("cno")+"'"StuADOXS_KC.RefreshStuADOXS_KC.Recordset.Fields("sno")=Stusno.TextStuADOXS_KC.Recordset.Fields("cno")=StuADOKC.Recordset("cno")StuADOXS_KC.Recordset.Fields("grade")=Stugrade.TextStuADOXS_KC.Recordset.UpdateStuADO.RecordSource ="select sno学号,XS_KC.cno 课程号,cname课程名 ,grade成绩fromKC,XS_KCwhereKC.cno=XS_KC.cno"StuADO.RefreshEndIfEndSub'取消PrivateSubStucancel_Click()更多精品文档学习-----好资料Stusno.Text=""Stucname.Text=""Stugrade.Text=""EndSub'删除学生成绩PrivateSubStudelete_Click()ret=MsgBox("是否要删除"+Trim(StuADO.Recordset(" 学号"))+"号学生成绩?",vbYesNo,"提示")Ifret=vbYesThenStuADO.Recordset("成绩")=NullEndIfEndSub'单击显示元组PrivateSubStuDG_Click()Stusno.Text=StuADO.Recordset("学号")Stucname.Text=StuADO.Recordset("课程名")EndSub'修改学生成绩PrivateSubStusure_Click()IfStugrade.Text=""Thenret=MsgBox("输入为空,请重新输入 ",vbYes,"错误提示")ElseStuADOKC.RecordSource="select*fromKCwherecname='"+Trim(Stucname.Text)+"'"StuADOKC.RefreshStuADOXS_KC.RecordSource="select*fromXS_KCwherecno='"+StuADOKC.Recordset("cno")+"'"+"andsno='"+Trim(Stusno.Text)+"'"StuADOXS_KC.RefreshStuADOXS_KC.Recordset.Fields("grade")=Trim(Stugrade.Text)StuADOXS_KC.Recordset.UpdateStuADO.RecordSource ="select sno学号,XS_KC.cno 课程号,cname课程名 ,grade成绩fromKC,XS_KCwhereKC.cno=XS_KC.cno"StuADO.RefreshEndIfEndSub更多精品文档学习-----好资料PrivateSubCommand1_Click()StuSearch.ShowEndSubPrivateSubCommand2_Click()AddStu.ShowEndSubPrivateSubCommand3_Click()AddStuCourse.ShowEndSubPrivateSubCommand4_Click()AddStuGrade.ShowEndSubPrivateSubCommand5_Click()TchSearch.ShowEndSub更多精品文档学习-----好资料DimSqlStrAsStringPublicSubMakeSqlStr()SqlStr=""IfTrim(Stusno)<>""ThenSqlStr=SqlStr+"andsnolike'%"+Trim(Stusno.Text)+"%'"EndIfIfTrim(Stusname)<>""ThenSqlStr=SqlStr+"andsnamelike'%"+Trim(Stusname.Text)+"%'"EndIfIfTrim(Stusdept)<>""ThenSqlStr=SqlStr+"andsdept='"+Trim(Stusdept.Text)+"'"EndIfEndSubPrivateSubCommand1_Click()MakeSqlStrStuADO.RecordSource="selectsno学号,sname姓名,sdept专业,ssex性别,sbirth出生日期,all_credit总学分fromXSwhere(ssex='男'orssex='女')"_SqlStrStuADO.RefreshEndSubPrivateSubStuDG_DblClick()ShowStuKC.StuKCADO.RecordSource ="selectsname姓名,cname课程名,grade成绩,cred
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年济南市济阳区辅警考试公安基础知识考试真题库及答案
- 2025年宁夏银川市检察院书记员考试题(附答案)
- 2025年河北省沧州市检察官、法官入员额考试真题(附答案)
- 2026七年级数学下册 二元一次方程组知识树
- 2026八年级上课外古诗词诵读
- 神农科技集团校招试题及答案
- 上海地产集团校招面笔试题及答案
- 法院辩证思维研究报告
- 关于睡眠课题研究报告
- 大兴安岭地区漠河市2025年社区专职网格员考试题库及答案
- JGJ+196-2010建筑施工塔式起重机安装、使用、拆卸安全技术规程
- 建筑防水工程技术规程DBJ-T 15-19-2020
- 《创新创业基础》课件-模块四 创新成果保护与转化
- 燃料检修潜在风险与预控措施
- 中学生防震减灾知识
- 劳务合同模板电子下载
- 新安全生产法全文-安全生产法全文
- 初中体育-篮球绕杆运球教学课件设计
- 麦积山石窟课件
- 分数百分数应用题的复习课件
- 开复工安全检查表
评论
0/150
提交评论