学生成绩管理系统VB+SQL.docx
- 文档编号:9924811
- 上传时间:2023-05-22
- 格式:DOCX
- 页数:32
- 大小:730.48KB
学生成绩管理系统VB+SQL.docx
《学生成绩管理系统VB+SQL.docx》由会员分享,可在线阅读,更多相关《学生成绩管理系统VB+SQL.docx(32页珍藏版)》请在冰点文库上搜索。
学生成绩管理系统VB+SQL
课程设计任务书
题目学生成绩管理系统
系(部)数理系
专业
班级
学生姓名
学号
12月21日至12月25日共1周
指导教师(签字)
系主任(签字)
年月日
学生成绩管理系统
通过完成从用户需求分析、概念结构设计,逻辑结构设计等一系列的数据库设计到上机编程、调试和应用等全过程,进一步理解和掌握教材中的相关内容。
一.实验要求
(1)先对选定的实验做简单的需求分析;
(2)做出数据流图和数据字典;
(3)在数据流图和字典的基础上做出E-R图(概念结构设计);
(4)在E-R图基础上进行关系模式设计(至少满足3NF)(逻辑结构设计);
(5)根据需求分析的各种数据请求得出各种视图以及各种约束、规则、触发器脚本描述;
(6)根据第(5)的内容在SQL-SERVER中设计中实例的数据库;
(7)用自己熟悉的一门语言进行设计的功能的实现
(8)整理前面几步的文档和程序源码,可执行程序,形成最终的实验报告。
(9)实验报告的最后写出本次实验完成中遇到的问题及解决方法
二.需求分析
1.功能需求
本系统开发的目的,就是通过系统开发,实现课程管理有关工作的计算机化,提高关键环节的处理速度和规范化,并对有关的工作进行集成和重组,通过网络系统实现集中管理、分散操作,提高选课管理工作的质量和效率。
通过对学校的选课及成绩管理工作进行实际调查,学生可以自由选择课程、选老师,学生注册的行政班和教学班是游离的,开发工作需要涉及任课教师、学生、管理员(教务工作人员)三种用户。
2.学生需求
在学校规定的选课期间,学生通过任何一台连接因特网计算机的浏览器就能进行网上选课。
学生以用户名和密码进入选课系统。
选课系统会根据用户名和密码自动识别所在的系,然后显示出与学生有关的课程列表。
系统必须控制某一门课程在学期间只能选一次。
在学生选课时能自动进行有关逻辑判断,如:
是否选课超过了规定的门数,是否选择了不符合预修条件的课程,是否选择的课程超过此课程最大选择人数,只有符合要求的选择才能选课成功。
学生可以更改部分个人信息如密码,电话号码等;学生可以查询已修课程成绩和已选课程信息。
3.教师需求
任课教师登录后,可以查看自己所教课程的课程表;对于同一学期内有多门课程的教师,需要选择具体课程后,才能查看已选这门课程的学生信息:
期末,教师可以上传这些学生的成绩。
4.管理员需求
系统管理员登录后,可以对学生,教师,课程,教学班级的基本信息进行添加,修改,删除等工作。
课程安排是选课的核心,只有按照实际的教学情况安排出每个学期必修和选修的课程,才能保证选课的顺利进行。
在每学期,学生选课前,各院系管理员必须在该院系培养方案中录入本学期可以开设的课程和排课安排,对于需要预修条件的课程,需要设置好预修条件。
基础部管理员负责公共课的课程开设和排课安排。
其中排课及教学班级的安排上要保证同一个教师在同一时间只能上一门课程;同一个教室同一时间也只能开一门课程。
三.数据分析与建模
1.数据流图和数据字典
顶层图:
数据字典:
数据流项目:
学生信息=姓名+学号+性别+年龄+专业+总学分
成绩单=姓名+课目+成绩
数据项条目:
数据项名:
成绩
类型:
int
长度:
4
范围:
100-0
加工条目:
处理过程:
过程名:
学籍管理系统
输入:
学生信息,考试成绩,学生记录
输出:
统计表,成绩单
数据字典:
数据存储:
数据存储名:
学生记录
组成:
姓名+学号+性别+年龄+专业+总学分
处理过程:
处理过程名:
录入存储处理
输入:
学生信息
处理要求:
如果没有所输入的学生记录,则建立新的学生记录,存储基本情况和课目成绩
处理过程名:
查询处理
输入:
学生信息,课程号
输出:
成绩
处理要求:
根据学生的学号查询相应的成绩
处理过程名:
统计处理
输入:
学生考试成绩
输出:
平均成绩,排名成绩
数据字典:
数据流:
新生信息=入学时间+姓名+年龄+专业+性别
合格单=姓名+专业
处理过程:
处理过程名:
审查
输入:
学生信息
输出:
合格单
处理要求:
根据学生信息判断是否是新生
处理过程名:
是否是新生
输入:
合格单
输出:
新生信息
处理要求:
根据合格单建立新生信息
处理过程名:
录入存储学生信息,各科成绩
输入:
新生信息,考试成绩
输出:
本次考试成绩
数据字典:
数据存储:
数据存储名:
考试成绩
组成:
姓名+专业+成绩+学号
组织方式:
一学号为关键字
处理过程:
处理过程名:
有效性检查
输入:
学号,课程号
输出:
有效查询
处理要求:
根据所输入的信息查询有效性
处理过程名:
成绩查询
输入:
考试成绩
输出:
成绩
处理要求:
根据考试成绩查询成绩
处理过程:
处理过程名:
统计选择
输入:
学生记录
输出:
按规定统计成绩
处理要求:
根据所输入学生记录查询成绩
2.E_R图
1)学生实体E-R图
2)课程实体E-R图
3)教师实体E-R图
4)各实体之间的E-R图
3.E—R图转换为关系模式:
1)学生(XS)(学号(sno),姓名(sname),专业(sdept),性别(ssex),出生日期(sbirth),总学分(all_credit))
学生表:
主码:
学号(sno)
函数依赖:
snoU.
此表中,不存在非主属性对码的部分依赖,传递依赖,以及主属性对码的部分依赖和传递依赖,故满足3NF
2)课程(KC)(课程号(cno),课程名(cname),开课学期(term),学时(class_hour),
学分(credit))
课程表:
主码:
课程号(cno)
函数依赖:
cnoU
此表中不存在非主属性对码的部分依赖,传递依赖,以及主属性对码的部分依赖和传递依赖,故满足3NF
3)选课(XS_KC)(学号(sno),课程号(cno),成绩(grade))
选课表:
主码:
(学号,课程号)
外码:
学号,课程号
函数依赖:
(sno,cno)U
此表中不存在非主属性对码的部分依赖,传递依赖,以及主属性对码的部分依赖和传递依赖,故满足3NF
4)教师(TCH)(编号(tno),姓名(tname),性别(tsex),出生日期(tbirth),职称(professional),专业(department))
教师表:
主码:
编号(tno)
函数依赖:
tnoU
此表中不存在非主属性对码的部分依赖,传递依赖,以及主属性对码的部分依赖和传递依赖,故满足3NF
5)授课(TCH_KC)(教师编号(tno),课程号(cno),上课地点(place))
授课表:
主码:
(教师编号,课程号)
外码:
教师编号,课程号
函数依赖:
(tno,cno)U
此表中不存在非主属性对码的部分依赖,传递依赖,以及主属性对码的部分依赖和传递依赖,故满足3NF
4.逻辑设计结果:
数据库表名XS(学生)
字段名
数据类型
含义说明
空值情况
备注
Sno
Char(10)
学号
不能为空
主键
Sname
Char(10)
姓名
不能为空
ssex
Char(10)
性别
可以为空
只能取“男”“女”,默认为“男”
Sbirth
date
出生日期
可以空
Sdept
Char(10)
所在专业
可以空
All_credit
Int
总学分
可以空
数据库表名KC(课程)
字段名
数据类型
含义说明
空值情况
备注
Cno
Char(10)
课程号
不能为空
主键
Sname
Char(10)
课程名
不能为空
credit
int
学分
可以空
Class_hour
Int
课时数
可以空
Term
Int
开课学期
可以空
数据库表名TCH(教师)
字段名
数据类型
含义说明
空值情况
备注
tno
Char(10)
教师号
不能为空
主键
tname
Char(10)
姓名
不能为空
完全依赖Tno,是unique
Tbirth
date
出生日期
可以空
Tsex
Char(10)
性别
可以空
只能取“男”“女”,默认为男
Professional
Char(10)
职称
可以空
Department
Char(10)
专业
可以空
数据库表名XS_KC(选课)
字段名
数据类型
含义说明
空值情况
备注
Cno
Char(10)
课程号
不能为空
主码
Sno
Char(10)
学号
不能为空
主码
Grade
int
成绩
可以空
数据库表名TCH_KC(授课)
字段名
数据类型
含义说明
空值情况
备注
Tno
Char(10)
教师编号
不能为空
主码
Cno
Char(10)
课程号
不能为空
主码
Place
Char(10)
授课地点
可以空
四.数据库应用开发与运行
此为主界面,有五个按钮,可进行查询,修改等操作。
上图为学生信息查询窗口,可按学号,姓名,专业进行查询
下图学生选课信息窗口,双击上图学生信息查询窗口中表格左边,可弹出此窗口显示该学生选课信息。
上图为教师信息查询窗口,可按教师编号,姓名,职称部门进行查询,双击表格左部可显示教师授课信息,如下图所示。
此为学生信息修改窗口,单击一行,可在上面文本框中显示该生信息,并进行插入,修改,删除等操作。
此为学生成绩录入窗口,单击一行可现实该生学号及所选课程,并在成绩文本框中进行添加及修改该课程成绩操作。
此为学生选课窗口,单击一行显示该行信息,可进行选课,删除操作
5.结果分析、结论与体会
在这次课程设计中,我遇到的困难很多,在解决它们的同时我又学到了很多,受益匪浅,特别是如何分析、建立、开发一个系统。
在一个系统开发的过程中编码不是重要的,重要的是分析系统、建立起系统模型。
在分析一个系统前,分析人员必须要对将要开发的系统所涉及到的各方面知识有一个认识,然后将系统的模型建立起来。
在程序编写中,我认识到软件要有简便的界面,良好的程序风格。
拥有这些条件,程序的可读性才会好,开发的复杂度才能大大减少,修改代码时更加容易下手。
我认为,所谓友好的界面,就是用户需要的界面,力求简便全面。
所以设计一个界面时,开发人员必须要了解用户的想法,从用户的角度去设计,当然,开发不能全听用户的意见,在详细分析了系统后,开发人员可以向用户提出一些修改的意见,在双方多次交流后定出程序所需的功能,以决定界面的实现。
在编码中,良好的编程风格与习惯是提高工作效率的一个重要方面,而且良好的编程风格与习惯也是使软件便于维护的基础。
那如何是良好的编程风格与习惯呢?
我认为主要是程序的模块化、必要的注释。
所谓模块化就是使程序的功能实现分成多个单独的功能模块,而不能在一大段代码中实现多个功能,如果这样做,别的人是非常难读懂你的程序。
必要的注释,显而易见是要在程序的编写中加入对程序的说明,原因就是为了别人能读懂你的程序,过一段时间后你自己还能读懂自己的程序。
最后说明下这次课程设计给我感受最深的有三点:
1.进行管理系统开发这样的工作,要有恒心,要能静下新来做,而不能浮躁。
2.要善于同别人交流与合作,善于获取各种有用的资源。
3.要真真实实的多查资料,多问,多看。
6.参考文献及资料
[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=False
Stusexf=False
EndSub
'修改元组
PrivateSubStuchange_Click()
IfTrim(Stusno.Text)=""OrTrim(Stusname.Text)=""Or(Stusexm=FalseAndStusexf=False)Then
MsgBox"加*数据项不能为空,请重新设置",vbOKOnly,"信息提示"
Stusno.SetFocus
ExitSub
EndIf
IfTrim(Stusbirth.Text)<>""Then
IfNotIsDate(Trim(Stusbirth.Text))Then
MsgBox"出生日期输入不正确,请重新输入",vbOKOnly,"信息提示"
Stusbirth.SetFocus
ExitSub
EndIf
EndIf
StuADO.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=TrueThen
StuADO.Recordset.Fields("性别")="男"
Else:
Stusexf=True
StuADO.Recordset.Fields("性别")="女"
EndIf
StuADO.Recordset.Update
EndSub
'删除元组
PrivateSubStuDel_Click()
ret=MsgBox("是否要删除"+StuADO.Recordset("学号")+"号学生的记录?
",vbYesNo,"提示")
Ifret=vbYesThen
StuADO.Recordset.Delete
EndIf
StuADO.RecordSource="selectsno学号,sname姓名,sdept专业,ssex性别,sbirth出生日期,all_credit总学分fromXS"
Command3_Click
StuADO.Refresh
EndSub
'选中一行显示元组
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("性别"))="男"Then
Stusexm=True
Else
Stusexf=True
EndIf
EndSub
'插入元组
PrivateSubStudinsert_Click()
IfTrim(Stusno.Text)=""OrTrim(Stusname.Text)=""Or(Stusexm=FalseAndStusexf=False)Then
MsgBox"加*数据项不能为空,请重新设置",vbOKOnly,"信息提示"
Stusno.SetFocus
ExitSub
EndIf
IfTrim(Stusbirth.Text)<>""Then
IfNotIsDate(Trim(Stusbirth.Text))Then
MsgBox"出生日期输入不正确,请重新输入",vbOKOnly,"信息提示"
Stusbirth.SetFocus
ExitSub
EndIf
EndIf
StuADO.Recordset.AddNew
StuADO.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=TrueThen
StuADO.Recordset.Fields("性别")="男"
Else:
Stusexf=True
StuADO.Recordset.Fields("性别")="女"
EndIf
StuADO.Recordset.Update
EndSub
'取消
PrivateSubStucancel_Click()
Stusno.Text=""
Stusname.Text=""
Stucname.Text=""
EndSub
'选课
PrivateSubStuchoose_Click()
StuADOXS.RecordSource="select*fromXSwheresno='"+Trim(Stusno.Text)+"'"
StuADOXS.Refresh
IfTrim(Stusno.Text)=""OrTrim(Stusname.Text)=""OrTrim(Stucname.Text)=""Then
ret=MsgBox("输入不正确,请重新输入!
",vbYes,"错误!
")
ElseIfTrim(Stusname.Text)<>Trim(StuADOXS.Recordset("sname"))Then
ret=MsgBox("输入学号与姓名不匹配,请重新输入!
")
Else
StuADOXS_KC.RecordSource="select*fromXS_KC"
StuADOXS_KC.Refresh
StuADOXS_KC.Recordset.AddNew
StuADOXS_KC.Recordset.Fields("sno")=Trim(Stusno.Text)
StuADOKC.RecordSource="select*fromKCwherecname='"+Trim(Stucname.Text)+"'"
StuADOKC.Refresh
StuADOXS_KC.Recordset.Fields("cno")=StuADOKC.Recordset("cno")
StuADOXS_KC.Recordset.Update
StuADO.Refresh
EndIf
EndSub
'删除元组
PrivateSubStudelete_Click()
ret=MsgBox("是否要删除"+StuADO.Recordset("学号")+"号学生的选课记录?
",vbYesNo,"提示")
Ifret=vbYesThen
StuADOXS_KC.RecordSource="select*fromXS_KCwheresno='"+StuADO.Recordset("学号")+"'"
StuADOXS_KC.Refresh
StuADOXS_KC.Recordset.Delete
EndIf
StuADO.Refresh
Stucancel_Click
EndSub
'单击显示元组
PrivateSubStuDG_Click()
Stusno.Text=StuADO.Recordset("学号")
Stusname.Text=StuADO.Recordset("姓名")
Stucname.Text=StuADO.Recordset("课程名")
EndSub
PrivateSubStuadd_Click()
IfStugrade.Text=""Then
ret=MsgBox("输入为空,请重新输入",vbYes,"错误提示")
Else
StuADOKC.RecordSource="select*fromKCwherecname='"+Trim(Stucname.Text)+"'"
StuADOKC.Refresh
StuADOXS_KC.RecordSource="select*fromXS_KCwherecno='"+StuADOKC.Recordset("cno")+"'"
StuADOXS_KC.Refresh
StuADOXS_KC.Recordset.Fields("sno")=Stusno.Text
StuADOXS_KC.Recordset.Fields("cno")=StuADOKC.Recordset("cno")
StuADOXS_KC.Recordset.Fields("grade")=Stugrade.Text
StuADOXS_KC.Recordset.Update
StuADO.RecordSource="selectsno学号,XS_KC.cno课程号,cname课程名,grade成绩fromKC,XS_KCwhereKC.cno=XS_KC.cno"
StuADO.Refresh
EndIf
EndSub
'取消
PrivateSub
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学生 成绩管理系统 VB SQL