学生成绩管理系统VB+SQL.docx

上传人:b****3 文档编号:3806558 上传时间:2023-05-06 格式:DOCX 页数:32 大小:730.47KB
下载 相关 举报
学生成绩管理系统VB+SQL.docx_第1页
第1页 / 共32页
学生成绩管理系统VB+SQL.docx_第2页
第2页 / 共32页
学生成绩管理系统VB+SQL.docx_第3页
第3页 / 共32页
学生成绩管理系统VB+SQL.docx_第4页
第4页 / 共32页
学生成绩管理系统VB+SQL.docx_第5页
第5页 / 共32页
学生成绩管理系统VB+SQL.docx_第6页
第6页 / 共32页
学生成绩管理系统VB+SQL.docx_第7页
第7页 / 共32页
学生成绩管理系统VB+SQL.docx_第8页
第8页 / 共32页
学生成绩管理系统VB+SQL.docx_第9页
第9页 / 共32页
学生成绩管理系统VB+SQL.docx_第10页
第10页 / 共32页
学生成绩管理系统VB+SQL.docx_第11页
第11页 / 共32页
学生成绩管理系统VB+SQL.docx_第12页
第12页 / 共32页
学生成绩管理系统VB+SQL.docx_第13页
第13页 / 共32页
学生成绩管理系统VB+SQL.docx_第14页
第14页 / 共32页
学生成绩管理系统VB+SQL.docx_第15页
第15页 / 共32页
学生成绩管理系统VB+SQL.docx_第16页
第16页 / 共32页
学生成绩管理系统VB+SQL.docx_第17页
第17页 / 共32页
学生成绩管理系统VB+SQL.docx_第18页
第18页 / 共32页
学生成绩管理系统VB+SQL.docx_第19页
第19页 / 共32页
学生成绩管理系统VB+SQL.docx_第20页
第20页 / 共32页
亲,该文档总共32页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

学生成绩管理系统VB+SQL.docx

《学生成绩管理系统VB+SQL.docx》由会员分享,可在线阅读,更多相关《学生成绩管理系统VB+SQL.docx(32页珍藏版)》请在冰点文库上搜索。

学生成绩管理系统VB+SQL.docx

学生成绩管理系统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

'取消

PrivateSubStucanc

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2