资源描述
资料内容仅供您学习参考,如有不当之处,请联系改正或者删除。
石家庄铁道学院课程设计
Vb语言课程设计
小型学生成绩管理系统
单 位 分院(系)
专 业
学 号
学生姓名
指导教师
完成日期 年月日
摘 要
成绩管理是学校管理中相当繁重的工作, 牵涉到学生成绩管理、 教师管理和课程管理等。由于成绩记录的数量众多、 管理复杂容易造成混乱, 成绩管理系统能够实现对整个成绩信息进行准确而高效的记载。
本系统的主要功能及任务是:
·方便学生对自己的成绩信息进行浏览;
·方便教师对学生的成绩信息进行浏览、 查找并进行管理;
·提供一个电子化的成绩管理平台。
为满足为学校服务这一基本功能, 数字校园应定位于信息服务, 对学生的成绩的高效而准确的管理系统设计的出发点和最终目的, 既要能够满足学生和老师的一般需求, 又要能够针对用户的类型、 需求特征等确定它的的权限以便进行管理。
学生成绩管理系统以学校实际成绩管理情况为依据, 提供了成绩浏览、 查找和更新, 统计查询等实用而丰富的功能。本系统使用Visual Basic 6.0中文版作为开发工具, 后台数据库采用 Microsoft Access 的MDB数据库。
关键词: 小型学生成绩管理系统, SQL, VB , 数据库, 控件, 控件与数据库的绑定
目 录
一.选题的意义………………………………………………………………4
1 选择该题目的原因………………………………………………………4
2 完成此题目用到的数据结构和知识点…………………………………4
二.系统功能简介……………………………………………………………5
1 系统概述…………………………………………………………………5
2 系统的组成及各模块的功能……………………………………………5
3 系统的运行环境…………………………………………………………5
三.系统设计…………………………………………………………………6
1 总体结构设计…………………………………………………………6
2 数据库设计……………………………………………………………6
四.系统实现…………………………………………………………………7
1 登录模块的设计和实现…………………………………………………8
2 学生登录模块的设计和实现……………………………………………9
3 教师登录模块的设计和实现……………………………………………10
4 学生成绩查询模块设计和实现…………………………………………11
5 学生密码修改模块设计和实现…………………………………………12
6 主窗体模块的设计与实现………………………………………………13
7 添加用户模块的设计与实现……………………………………………15
8 修改密码模块的设计与实现……………………………………………16
9 学生信息添加模块的设计与实现………………………………………18
10 学生信息修改模块的设计与实现……………………………………19
11 学生信息查询模块的设计与实现……………………………………21
12 学生成绩录入模块的设计与实现…………………………………22
13 学生成绩修改模块的设计与实现…………………………………24
14 学生成绩查询模块的设计与实现………………………………26
15 项目统计模块的设计与实现……………………………………28
五.总结…………………………………………………………28
1 遇到及解决的问题………………………………………………28
2 心得体会……………………………………………………………29
3 后记…………………………………………………………………29
参考文献…………………………………………………………29
一 选题的意义
1.选该题的原因
从大的方面来讲, 现在中国的部分高中及其以下级别的大部分中学, 学生成绩的管理水平还停留在纸介质的基础上, 这样的机制已经不能适应时代的发展, 因为它浪费了许多人力和物力, 在信息时代这种传统的管理方法必然被计算机为基础的信息管理所取代。我选择这个题目, 希望能够在信息管理方面有所提高。改革的总设计师邓小平同志说过”科学技术是第一生产力”, 我希望能用我一年的所学编制出一个实用的程序来帮助学校进行更有效的信息管理。
从小的方面来说, 我感觉这个题目和我的学校生活密切相关, 我也比较熟悉该系统, 更容易学到对于我vb语言学习有用的知识。
2.完成此题目用到的数据结构和知识点。
2.1数据结构:
经过可视化数据管理器能够进行数据库操作。建立数据库: 启动可视化数据管理器, 创立数据库, 创立数据库表, 然后编辑数据库。
2.2知识点:
Access技术: 能够开发关系数据库, 数据库能汇集各种信息以供查询、 存储和检索。数据库(Database)是由一些有意义和有关系的数据(data)所组合而成。一个数据库中, 包含了许多条记录(Record),而每条记录是由多个字段(Field)所组成,不同的字段存放这不同的数据。因此数据库的严格定义是一组相关记录的集合, 而字段则是最基本的数据项, 也是数据库中最小的单位。在计算机中用来帮我们管理数据库的系统, 我们称之为数据库管理管理系统( Database Management System DBMS) 。数据库管理系统是架构在一个或多个数据库之上, 并针对数据库中的数据进行管理运用。
Access 的优点在于它能使用数据表示图或自定义窗体收集信息, 数据表示图提供了一种类似于 Excel 的电子表格, 能够使数据库一目了然。另外, Access 允许创立自定义报表用于打印或输出数据库中的信息。Access也提供了数据存储库, 能够使用桌面数据库文件把数据库文件置于网络文件服务器, 与其它网络用户共享数据库。如上所述, Access 作为关系数据库开发具备了许多优点, 能够在一个数据包中同时拥有桌面数据库的便利和关系数据库的强大功能。
结构化查询语言SQL: 结构化查询语言(Structrued Query Lauguage,SQL)是访问数据库的标准语言, 使用SQL语言能够从数据库中获取数据, 建立数据库和数据库对象, 增加, 修改数据和实现复杂的查询功能。它是本系统实现的基础。
使用data控件访问数据库: 主要使用的是data控件和数据绑定控件编写数据库应用程序的方法。
二.系统功能简介
1.系统概述
随着学校的规模不断扩大, 学生数量急剧增加, 有关学生的各种信息量也成倍增长。面对庞大的信息量, 需要有学生管理系统来提高学生管理工作的效率。经过这样的系统, 能够做到信息的规范管理、 科学统计和快速的查询, 从而减少管理方面的工作量。
2.系统的组成以及各模块的功能
系统开发的总任务是实现学生信息关系的系统化、 规范化和自动化。
系统主要由五部分组成: 系统用户的管理、 学生成绩的管理、 学生学籍信息的管理、 信息的查询, 其中还包括登录界面以及成绩的统计模块。
各模块的主要功能如下:
●系统用户的管理: 实现用户的添加、 删除和密码的修改
●学生学籍信息的管理: 实现学生学籍信息的添加、 删除和修改。
●学生成绩的管理: 实现学生成绩的录入, 删除和修改。
●学生信息的查询: 实现学生学籍的查询、 成绩的查询。
● 学生成绩信息的统计: 实现学生男女生人数以及不及格人数的统计。
3.系统的运行环境
系统使用环境
操作系统: windows xp/ /me/98
系统支持: visual basic 6.0及以上版本
数据库: access
系统开发环境
操作系统: windows xp/ /me/98
系统支持: visual basic 6.0
三 系统设计
1.总体结构设计
对上述各项功能进行集中、 分块, 按照结构化层序设计的要求, 得到如下所示的系统功能功能模块图。
小型成绩管理系统
成绩查询
成绩修改
成绩录入
成绩管理
信息查询
信息修改
信息添加
学生信息
项目统计
退出系统
修改密码
添加用户
统计信息
系统管理
2.数据库设计
数据库在本成绩管理系统中占有非常重要的地位, 数据库结构的好坏将直接对应用系统的效率以及实现的效率产生影响。合理的数据库及结构设计能够提高数据存储的效率, 保证数据的完整和一致。同时合理的数据库结构也将有利于程序的实现。设计本系统的数据库应该充分满足用户的需求。
针对一般学生管理系统的需求, 经过对学生学习过程的内容的分析, 设计如下面所示的数据项和数据结构
l 基本信息表: 包括的字段有: 学号, 姓名, 性别, 年龄, 联系电话, 家庭住址。
l 成绩表: 包括的字段有: 学号, 姓名, 性别, 年龄, 高数成绩, 英语成绩, 计算机成绩, 平均成绩。
l 密码表: 包括的字段有: 用户名, 密码。
l 教师密码表: 包括的字段有: 用户名, 密码。
⑵得到上面的数据项就能够设计出能够满足用户需求的各种实体以及她们之间的关系。由上面的设计规划出的实体有: 用户实体、 信息实体、 成绩实体。
按照以上实体进行设计: ( 1) 打开可视化数据管理器程序( 2) 建立数据库( 3) 创立数据库表( 4) 添加字段( 5) 生成表⑹ 添加内容
基本信息表
字段名称
数据类型
字段大小
学号
文本
10
姓名
文本
10
性别
文本
2
年龄
数字
2
联系电话
数字
50
班级
文本
50
家庭住址
文本
50
等。
四 系统实现
现在已经完成了程序各个功能模块的创立, 现在能够进行系统的实现了
1 登录界面实现
第一个登陆界面选择用户类型, 分为教师和学生。具体图形及相关代码如下所示:
核心代码:
Private Sub Command1_Click()
dl.Hide
xsdl.Show 进入学生登陆界面
End Sub
Private Sub Command2_Click()
dl.Hide
jsdl.Show 进入教师登陆界面
End Sub
Private Sub Form_Load()
Label1.Width = dl.ScaleWidth
Label1.Left = dl.ScaleWidth 设定标签( 欢迎使用成绩管理系统) 的起始值
End Sub
Private Sub Timer1_Timer()
If Label1.Left + Label1.Width >= 0 Then
Label1.Left = Label1.Left - 50
Else
Label1.Left = dl.ScaleWidth 使上述标签以一定的时间运动
End If
End Sub
学生登陆界面
核心代码如下:
Private Sub Command1_Click()
UserName = ""
If Trim(Text1.Text) = "" Then
MsgBox "用户名不能为空, 请重新输入! ", vbOKOnly + vbExclamation, "警告" ‘ 判断输入是否为空, 若是, 则弹出窗体警告!
Text1.SetFocus
Else
Data1.RecordSource = "select * from 密码表 where 用户名='" & Text1.Text & "' and 密码='" & Text2.Text & "'" 连接数据库, 查找满足条件的记录。
Data1.Refresh 刷新数据库
If Data1.Recordset.BOF = True And Data1.Recordset.EOF = True Then
MsgBox "用户名或密码输入错误, 请重新输入! ", vbOKOnly + vbExclamation, "警告"
Text1.SetFocus
Text2.SetFocus 判断所查找的记录是否存在, 即输入的用户名和密码是否匹配
Else
UserName = Text1.Text
Text2.Text = ""
Me.Hide
Form4.Show 若是匹配 , 则当前窗体隐藏, 进入学生成绩查询界面。
End If
End If
End Sub
Private Sub Command2_Click()
Text1.Text = ""
Text2.Text = ""
End Sub ”取消”按钮, 使两个文本框内容为空。
Private Sub Timer1_Timer()
If Label1.Left + Label1.Width >= 0 Then
Label1.Left = Label1.Left - 50
Else
Label1.Left = dl.ScaleWidth 使标签按一定的时间运动, 达到电子滚动的效果。
End If
End Sub
教师登陆界面:
核心代码如下所示;
该界面代码与上个界面基本一致。
Private Sub Command1_Click()
UserName = ""
If Trim(Text1.Text) = "" Then
MsgBox "用户名不能为空, 请重新输入! ", vbOKOnly + vbExclamation, "警告"
Text1.SetFocus
Else
Data1.RecordSource = "select * from 教师密码表 where 用户名='" & Text1.Text & "' and 密码='" & Text2.Text & "'"
Data1.Refresh
If Data1.Recordset.BOF = True And Data1.Recordset.EOF = True Then
MsgBox "用户名或密码输入错误, 请重新输入! ", vbOKOnly + vbExclamation, "警告"
Text1.SetFocus
Text2.SetFocus
Else
UserName = Text1.Text
Me.Hide
main.Show
End If
End If
End Sub
Private Sub Command2_Click()
Text2.Text = ""
Text3.Text = ""
End Sub
Private Sub Timer1_Timer()
If Label3.Left + Label3.Width >= 0 Then
Label3.Left = Label3.Left - 50
Else
Label3.Left = jsdl.ScaleWidth
End If
End Sub
Private Sub Form_Load()
Label3.Width = jsdl.ScaleWidth
Label3.Left = jsdl.ScaleWidth
End Sub
学生成绩查询界面:
使用一个data控件, 一个MSFlexgrid控件, 两个命令按钮。
代码如下:
Private Sub Command1_Click()
End
End Sub 单击”退出系统”按钮, 结束程序。
Private Sub Command2_Click()
Me.Hide
xiugaimima.Show 单击修改 ”密码按钮”, 进入学生修改密码界面。
End Sub
Private Sub Form_Load()
Data1.RecordSource = "select * from 成绩表 where 学号='" & xsdl.Text1.Text & "'"
Data1.Refresh
End Sub 当界面载入的时候, 就连接数据库, 并查找出满足学号等于学生登陆窗体中的用户名的记录。
学生密码修改界面:
代码如下:
Private Sub Command1_Click()
If Trim(Text1.Text) <> Trim(Text2.Text) Then
MsgBox "密码输入不正确!", vbOKOnly + vbExclamation, "信息提示"
Text1.SetFocus
Text1.Text = "" 判断两次输入地密码是否一致, 若不一致 , 则弹出警告, 重新输入!
Else
Data1.RecordSource = "select * from 密码表 where 用户名='" & xsdl.Text1.Text & " '"
Data1.Refresh
Data1.Recordset.Edit
Data1.Recordset.Fields("密码") = Text1.Text
Data1.Recordset.Update
MsgBox "密码修改成功! ", vbOKOnly + vbExclamation, "修改密码"
End If 若是一致, 则连接数据库, 将所输入的新密码修改并加入数据库。
End Sub
Private Sub Command2_Click()
Text1.Text = ""
Text2.Text = ""
End Sub 单击”取消”按钮, 将文本框清空。
Private Sub Command3_Click()
Me.Hide
Form4.Show 单击”返回”按钮, 当前窗体隐藏, 学生成绩查询界面出现。
End Sub
主窗体界面:
代码如下:
Private Sub tcxt_Click()
End 单击”退出系统”按钮, 结束程序。
End Sub
Private Sub tjyh_Click()
Me.Hide
tianjiayonghu.Show 单击”添加用户”按钮, 当前窗体隐藏, ”添加用户窗体”出现。
End Sub
Private Sub xgmm_Click()
Me.Hide
jiaoshimimaxiugai.Show 单击”修改密码”按钮, 当前窗体隐藏, ”教师修改密码”窗体出现。
End Sub
Private Sub xmtj_Click()
Me.Hide
xiangmutongji.Show 单击”项目统计”按钮, 进入”项目统计”界面
End Sub
Private Sub xxcx_Click()
Me.Hide
xinxichaxun.Show 单击”信息查询”按钮, 进入”学生信息查询”界面。
End Sub
Private Sub xxtj_Click()
Me.Hide
xueshengxinxitianjia.Show 单击”信息添加”按钮, 进入”学生信息添加”界面。
End Sub
Private Sub xxxg_Click()
Me.Hide
xinxixiugai.Show 单击”信息修改”按钮, 进入”学生信息修改”界面。
End Sub
Private Sub cjcx_Click()
main.Hide
chengjichaxun.Show
End Sub 单击”成绩查询”按钮, 进入”成绩查询”界面。
Private Sub cjlr_Click()
Me.Hide
chengjiluru.Show
End Subv 单击”成绩录入”按钮, 进入”成绩录入”界面。
Private Sub cjxg_Click()
Me.Hide
chengjixiugai.Show 单击”成绩修改”按钮, 进入成绩修改界面。
End Sub
添加用户界面:
代码如下:
Private Sub Command1_Click()
If Trim(Text1.Text) = "" Then
MsgBox "请输入用户名! ", vbOKOnly + vbExclamation, "信息提示"
Text1.SetFocus 判断用户名是否为空, 若为空, 则弹出警告, 输入用户名!
Exit Sub
Else
Data1.RecordSource = "select * from 教师密码表 where 用户名='" & Text1.Text & "'"
Data1.Refresh
If Not Data1.Recordset.EOF Then
MsgBox "用户已存在, 请重新输入用户名! ", vbOKOnly + vbExclamation, "提示信息"
Text1.SetFocus
Text1.Text = "": Text2.Text = "": Text3.Text = ""
Exit Sub
End If
End If 若不为空, 连接数据库, 判断该用户名是否已经存在, 若已经存在, 弹出警告, 重新输入!
If Trim(Text2.Text) <> Trim(Text3.Text) Then
MsgBox "两次输入的密码不一样, 请确认! ", vbOKOnly + vbExclamation, "警告"
Text2.SetFocus
Text2.Text = ""
Text3.Text = "" 若两次输入地密码不一致, 则弹出警告, 确认并重新输入密码。
Exit Sub
Else
With Data1
.Recordset.AddNew
.Recordset.Fields(0) = Trim(Text1.Text)
.Recordset.Fields(1) = Trim(Text2.Text)
.Recordset.Update
End With
MsgBox "添加用户成功! ", vbOKOnly + vbExclamation, "添加用户"
End If
End Sub 若上述情况均没有, 则连接数据库, 将输入的用户信息添加到”教师密码表”中去。
Private Sub Command2_Click()
Text1.Text = ""
Text2.Text = ""
Text3.Text = "" 单击”取消”按钮, 将文本框清空。
End Sub
Private Sub Command3_Click()
Me.Hide
main.Show 单击”返回”按钮, 返回到主界面。
End Sub
修改密码界面:
代码如下:
Private Sub Command1_Click()
If Trim(Text1.Text) <> Trim(Text2.Text) Then
MsgBox "密码输入不正确!", vbOKOnly + vbExclamation, "信息提示"
Text1.SetFocus
Text1.Text = "" 判断两次输入的密码是否一致, 若不一致, 弹出警告, 并重新输入。
Else
Data1.RecordSource = "select * from 密码表 where 用户名='" & xsdl.Text1.Text & " '"
Data1.Refresh
Data1.Recordset.Edit
Data1.Recordset.Fields("密码") = Text1.Text
Data1.Recordset.Update 若一致, 连接数据库, 进行修改, 将所输入密码保存到数据库中去。
MsgBox "密码修改成功! ", vbOKOnly + vbExclamation, "修改密码"
End If
End Sub 弹出”修改成功”的窗体。
Private Sub Command2_Click()
Text1.Text = ""
Text2.Text = ""
End Sub 清空文本框。
Private Sub Command3_Click()
Me.Hide
Form4.Show
End Sub 返回主界面。
添加学生信息界面:
代码如下:
Private Sub Command1_Click()
If Text2.Text = "" Or Text3.Text = "" Then
MsgBox "学号和姓名不能为空! ", vbOKOnly + vbExclamation, "警告"
Exit Sub 判断”学号”和”姓名”是否为空, 若是, 则弹出警告, 重新输入!
Else
Data1.RecordSource = "select * from 基本信息表 where 学号='" & Trim(Text2.Text) & " ' "
Data1.Refresh
If Data1.Recordset.BOF = False And Data1.Recordset.EOF = False Then
MsgBox "输入的学号已经存在, 请重新输入! ", vbOKOnly + vbExclamation, "警告"
Text2.Text = ""
Text3.Text = ""
Text2.SetFocus 若不为空, 连接数据库, 判断输入的学号是否已经存在, 若存在, 弹出警告, 重新输入!
Else
Data1.Recordset.AddNew
Data1.Recordset.Fields(0) = Text2.Text
Data1.Recordset.Fields(1) = Text3.Text
Data1.Recordset.Fields(2) = text4.Text
Data1.Recordset.Fields(3) = Text5.Text
Data1.Recordset.Fields(4) = Text6.Text
Data1.Recordset.Fields(5) = Text7.Text
Data1.Recordset.Fields(6) = Text8.Text
Data1.Recordset.Update
MsgBox "添加成功! " 若不为空, 且输入的学号不存在, 则连接数据库, 将所输入的信息添加到”基本信息表”中。
Data2.RecordSource = "select * from 成绩表 where 学号='" & Trim(Text2.Text) & " ' "
Data2.Refresh
Data3.RecordSource = "select * from 密码表 where 用户名='" & Trim(Text2.Text) & " ' "
Data3.Refresh
Data2.Recordset.AddNew
Data2.Recordset.Fields(0) = Text2.Text
Data2.Recordset.Fields(1) = Text3.Text
Data2.Recordset.Update
Data3.Recordset.AddNew
Data3.Recordset.Fields(0) = Text2.Text
Data3.Recordset.Fields(1) = Text2.Text
Data3.Recordset.Update
End If 同时, 也将输入的学号添加到”成绩表”与”密码表”中, 以及”成绩表”中加入学号与姓名, ”密码表”中用户名与为学号。
End If
End Sub
Private Sub Command2_Click()
Me.Hide
main.Show
End Sub
修改学生信息界面:
代码如下:
Private Sub Command1_Click()
If Text1.Text = "" Then
MsgBox "请输入内容! "
Else 判断输入内容是否为空
Data1.Recordset.Edit
Data1.Recordset.Fields(0) = Text2.Text
Data1.Recordset.Fields(1) = Text3.Text
Data1.Recordset.Fields(2) = text4.Text
Data1.Recordset.Fields(3) = Text5.Text
Data1.Recordset.Fields(4) = Text6.Text
Data1.Recordset.Fields(5) = Text7.Text
Data1.Recordset.Fields(6) = Text8.Text
Text9.Text = Str((Val(Text6.Text) + Val(Text8.Text) + Val(Text7.Text)) / 3)
Data1.Recordset.Fields(7) = Text9.Text
Data1.Recordset.Update
MsgBox "修改成功" 不为空时, 对数据库进行修改, 并保存入数据库。
End If
End Sub
Private Sub Command10_Click()
If Trim(Text1.Text) = "" Then
MsgBox "学号不能为空, 请重新输入! ", vbOKOnly + vbExclamation, "警告"
Text1.SetFocus
Else 判断输入学号是否为空
Data1.RecordSource = "select * from 成绩表 where 学号='" & Text1.Text & " '"
Data1.Refresh
If Data1.Recordset.EOF Then
MsgBox "学号不存在, 请重新输入! ", vbOKOnly + vbExclamation, "警告"
Text1.SetFocus
Text1.Text = ""
Text2.Text = ""
Text3.Text = ""
text4.Text = ""
Text5.Text = ""
Text6.Text = ""
Text7.Text = ""
Text8.Text = ""
Text9.Text = "" 如果输入的学号数据库无此记录, 则重新输入。
Else
Text2.Text = Data1.Recordset.Fields(0)
Text3.Text = Data1.Recordset.Fields(1)
text4.Text = Data1.Recordset.Fields(2)
Text5.Text = Data1.Recordset.Fields(3)
Text6.Text = Data1.Recordset.Fields(4)
Text7.Text = Data1.Recordset.Fields(5)
Text8.Text = Data1.Recordset.Fields(6)
End If 由此记录的话, 直接显示在文本框中。
End If
End Sub
Private Sub Command2_Click()
Me.Hide
main.Show
End Sub 进入主界面
Private Sub Command3_Click()
If Text1.Text = "" Then
MsgBox "请输入内容! "
Else
mybookmark = Data1.Recordset.Bookmark
Str2$ = MsgBox("是否删除当前记录? ", vbOKCancel, "删除当前记录")
If Str2$ = vbOK Then 确定删除
Data1.Recordset.Delete 删除数据库中的相应记录
Data1.Refresh
Text1.Text = ""
Text2.Text = ""
Text3.Text = ""
text4.Text = ""
Text5.Text = ""
Text6.Text = ""
Text7.Text = ""
Text8.Text = ""
Text9.Text = ""
End If
End If 请空各文本框
End Sub
学生信息查询界面:
代码如下:
Private Sub Command1_Click()
If Combo1.Text = "按学号" Then
Data1.RecordSource = "select * from 基本信息表 where 学号='" & Text1.Text & "'"
Data1.Refresh
Else
Data1.RecordSource = "select
展开阅读全文