资源描述
目录
1 前言 3
2 学生信息管理系统概述 4
3 可行性及需求分析 5
3.1 可行性分析 5
3.2 系统需求分析 6
4 详细设计 6
4.1 设计目标 6
4.2项目规划 7
4.3系统流程图 7
4.4数据库需求分析 8
4.5数据库逻辑结构设计 8
5 系统实现 9
5.1附加数据库 9
5.2登陆界面设计 10
5.3学生信息录入 13
5.4 学生信息修改 14
5.5 学生信息查询 15
5.6学生成绩录入 16
5.7用户管理 17
5.8修改用户密码 18
6 系统测试 20
结 论 21
参考文献 22
致 谢 23
学生信息管理系统的设计与实现
摘要:随着学校的规模不断扩大,学生数量急剧增长,需要管理的各种信息也成倍增加。同时由于计算机和网络技术的普及,建立一个C/S或者B/S结构的学生信息管理系统之后,学生可以通过网络来选课并管理自己的信息,使得学生信息管理工作系统化、规范化高了学校管理学生信息的效率。 学生信息管理系统是利用C/S开发设计的。数据库是基于SQL SERVER设计的。学校管理人员可以通过该系统方便、快速、有效的管理学生信息。 本系统主要实现了对高校从学生学籍信息录入、学生选课、学生考核、到学生成绩管理。整个系统分为学生信息管理、学生课程信息管理、教师管理、系统管理四大模块。其中,学生信息管理模块包括学生信息录入、学生信息修改。学生课程信息管理模块包括学生选课、学生课程查询。学生成绩管理模块包括学生成绩录入、学生成绩查询。系统管理模块包括用户权限、退出系统。整个系统从操作简便、灵活、实用的目的要求出发完成学生信息管理系统全过程。
关键词:计算机网络;数据库;信息管理;学生信息管理系统
1 前言
学生信息管理系统是针对学校人事处的大量业务处理工作而开发的管理软件,是典型的管理信息系统它是一个教育单位不可缺少的部分,它的内容对于学校的决策者和管理者来说都至关重要,它能够为用户提供充足的信息和快捷的查询手段。能有效的帮助学校和老师掌握学生的情况,为学生提供成绩跟课程方面的查询。在传统模式下利用人工进行学生信息管理,存在着较多的缺点,如:效率底,保密性差,时间一长将产生大量的文件和数据,更不便于查找,更新,维护等。诸如这些情况,令学校管理者对学生的信息管理带来了很大困难,严重影响了教育工作者的工作效率。随着科学技术的不断提高,计算机科学日渐成熟, 使用日趋成熟的计算机技术来代替传统的人工模式,来实现学生信息的现代化管理,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。作为计算机应用的一部分,使用计算机对学生信息进行管理,具有着手工管理所无法比拟的优点.例如:检索迅速、查找方便、易修改、可靠性高、存储量大、数据处理快捷、保密性好、寿命长、成本低、便于打印等。这些优点能够极大地提高学生信息管理的效率,也是学校的科学化、正规化管理,与世界接轨的重要条件。用计算机制作的学生信息管理系统还可以通过功能强大的Internet网及时的向学生的家长传递该生在校的最新成绩,有助于学校与家长的信息互动,为更好地把握学校的教育方针起到了一定的促进作用!因此,开发这样一套管理软件成为很有必要的事情。
2 学生信息管理系统概述
管理信息系统是一个由管理人员和计算机组成的用以进行信息的收集、传输、加工、存储、维护和使用的系统。它是一门综合了管理科学,系统理论,计算机科学的系统性边缘科学。
管理信息系统的物理组成:
1) 计算机硬件系统:包括主机、外部存储器、输入输出设备等。
2) 计算机软件系统:包括系统软件和应用软件两大部分。
3) 通信系统:包括线路等通信设施和与计算机网络、数据通信有关的软件等。
4) 工作人员:包括系统分析员、程序设计员、维护人员、管理员、操作人员等。
3 可行性及需求分析
3.1 可行性分析
1) 目的:可行性研究的目的是用最小的代价在尽可能的时间内确定问题是否能解决。
2) 经济性:由于学校等中小型管理系统并不复杂,且Visual Basic 6.0本身要求的运行环境不高 ,所以一 般Windows 2000以上的系统环境都可以使用。
3) 实用性:本学生信息管理系统管理系统无太多复杂的操作要求,也没有过分花哨的装饰品,人性化的设计界面可以使操作者轻易运用自如。
3.2 系统需求分析
系统功能系统的主要功能包括:信息的操作功能、查询功能、统计功能、分析功能和打印功能。
1) 信息操作功能:学生基本信息的添加、修改和删除。学生基本信息包括:学号、姓名、性别、出生日期和所在的专业。
2) 课程信息的添加、修改和删除:课程信息包括:课程号、所属专业、课程名称、课程类型、开课学期、学时数和学分。
3) 学生成绩信息的添加、修改和删除:学生成绩信息包括:学好、课程号、成绩和学分。
4) 查询功能:可以通过学号来查学生基本信息,通过学号和学期号查询学生的成绩,通过课程号查询该课程的信息。
5) 统计功能:统计当前信息所显示的信息数以及学生某个学期或所有学期课程的总学分。
6) 打印功能
4 详细设计
4.1 设计目标
本系统可以能减少很多不必要的资源,不用象以前那样用冗余的纸张式的管理。大节省了学校能源。并且计算机的存储与快速查询功能大大提高了学籍管理的效率,并且还提高了学籍信息管理的精确度。
方便快速的操作,可减少学籍信息管理的漏洞,又减少因工作的冗余出现的错误,并且操作非常简单,可减少许多不很必要的人员,这无论从物质上还是工作人员的工资上都为学校节约了开支。为学校增加了财富。
数据库分析
用户需求具体有学籍管理系统提供保存、更新、查询、维护,这就需求数据库结构能充分满足各种信息的输入与输出,实现有组织地、动态地存储大量关联数据,方便用户访问系统中的数据,它与文件系统的重要区别是数据的充分共享,交叉访问,与应用程序的高度独立性。
4.2项目规划
学生管理系统是各大中专院校不可缺少的一部分,是一个VB+SQL数据库开发应用程序,它主要包括用户登录、学生信息输入修改、学生信息查询以及学生成绩输入、学生成绩查询、系统用户管理等几个页面,因而该系统具有较强的实用性。
4.3系统流程图
系统初始化
附加数据库
系统登录
系统主界面
学生成绩信息管理
学生课程信息管理
系统管理
学生信息管理理
学生成绩录入
学生选课
课程查询
学生信息录入
学生信息修改
学生成绩查询
修改密码
用户管理
4.4数据库需求分析
课程选择
课程设置
学生注册
考核信息
课程信息管理
其它系统数据接口
考核信息管理
考核输入
学生信息管理
个人信息输入
4.5数据库逻辑结构设计
(1)kc(课程)见表1
表4-1
字段名
数据类型
是否允许为空
说明
课程号
Char(3)
Not null
主键
课程名
Char(16)
Not null
开课学期
tinyint
Not null
只能为1-8
学时
tinyint
Not null
学分
tinyint
null
(2)xs_kc(学生选课)见表2
表4-2
字段名
数据类型
是否允许为空
说明
学号
Char(6)
Not null
主键
课程号
Char(3)
Not null
主键
成绩
tinyint
null
学分
tinyint
null
(3)xs(学生)见表3
表4-3
字段名
数据类型
是否允许为空
说明
学号
Char(6)
Not null
主键
姓名
Char(8)
Not null
专业名
Char(10)
null
性别
Bit
Null
男1,女0
出生日期
SmallDatetime
Null
总学分
tinyint
null
照片
image
Null
备注
text
Null
(4)user1(管理员登录)见表4
表4-4
字段名
数据类型
说明
角色
Char(3)
用户名
Char(6)
主键
密码
Char(6)
Not null
5 系统实现
5.1附加数据库
“附加Server数据库”按钮的click事件添加如下的代码
Private Sub Command2_Click()
If Text1.Text = "" Then
MsgBox "请选择数据库文件!", , "XSCJ"
Exit Sub
End If
On Error GoTo dataerr
cn.Open "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;userid=sa;Initial Catalog=master"
cn.Execute ("sp_attach_db @dbname='" & strdata & "',@filename1='" & m & "'")
MsgBox "附加成功!", , "XSCJ"
cn.Close
Unload Me
Form1.Show
Exit Sub
dataerr:
MsgBox Err.Description, , "XSCJ"
cn.Close
End Sub
5.2登陆界面设计
“登录”按钮的click事件添加如下的代码:
Private Sub Command1_Click()
If Text1.Text = "" Or Text2.Text = "" Then
MsgBox "请输入完整的登录信息!"
Text1.SetFocus
Exit Sub
End If
If Text3.Text = "" Then
MsgBox "请输入验证码"
Text3.SetFocus
Exit Sub
End If
Dim i As Integer
i = Len(Text1.Text)
If i < 6 Then
MsgBox "用户名应为六位数字", , "提示"
Text1.SetFocus
Text1.Text = ""
Exit Sub
End If
i = Len(Text2.Text)
If i < 6 Then
MsgBox "密码应为六位", , "提示"
Text2.SetFocus
Text2.Text = ""
Exit Sub
End If
If UCase(Trim(Text3.Text)) <> Trim(Label4.Caption) Then
MsgBox "验证码输入错误"
Text3.SetFocus
Text3.Text = ""
Exit Sub
If option1.Value Then
Set sqlres = New ADODB.Recordset
sqlres.Open "select * from dlgl where 用户名='" + Trim(Text1.Text) + "' and 密码='" + Trim(Text2.Text) + "'", connectstring, adOpenDynamic, adLockPessimistic
If Not sqlres.EOF Then
juese = option1.Caption
yonghuming = Trim(Text1.Text)
mima = Trim(Text2.Text)
MsgBox "登录成功"
sqlres.Close
Unload Me
MDIForm1.Show
Exit Sub
Else
Randomize
i = Int(Rnd * 25 + 65)
j = Int(Rnd * 25 + 65)
k = Int(Rnd * 25 + 65)
l = Int(Rnd * 25 + 65)
Label4.Caption = Chr(i) & Chr(j) & Chr(k) & Chr(l)
Exit Sub
End If
End If
If Not sqlres.EOF Then
juese = Option2.Caption
yonghuming = Trim(Text1.Text)
mima = Trim(Text2.Text)
MsgBox "登录成功"
sqlres.Close
Unload Me
MDIForm1.Show
Exit Sub
Else
sqlres.Close
MsgBox "用户名或密码错误!"
Text1.Text = ""
Text2.Text = ""
Text3.Text = ""
Text1.SetFocus
Randomize
i = Int(Rnd * 25 + 65)
j = Int(Rnd * 25 + 65)
k = Int(Rnd * 25 + 65)
l = Int(Rnd * 25 + 65)
Label4.Caption = Chr(i) & Chr(j) & Chr(k) & Chr(l)
End If
End If
End Sub
5.3学生信息录入
“更新”按钮的click事件添加如下的代码:
Private Sub Command1_Click()
'Set sqlres = New ADODB.Recordset
'Adodc2.RecordSource = "select * from xs where 学号='" & Trim(Text1.Text) & "' "
'Adodc2.CommandType = adCmdText
'Adodc2.Refresh
Dim s As String
Dim bytedata() As Byte
Dim adofld As ADODB.Field
s = "select * from xs where 学号='" & Trim(Text1.Text) & "'"
sqlres.Open s, connectstring, adOpenDynamic, adLockPessimistic
If Trim(Text5.Text) <> "" Then
sqlres.Fields(5) = CInt(Text5.Text)
sqlres.Update
Adodc1.Refresh
MsgBox "修改学生信息成功!", vbOKOnly + vbExclamation, "修改学生信息"
Else
sqlres.AddNew
sqlres.Fields(0) = Trim(Text1.Text)
sqlres.Fields(1) = Trim(Text2.Text)
sqlres.Fields(2) = Combo1.Text
If Option1.Value = True Then
sqlres.Fields(3) = 1
Else
sqlres.Fields(3) = 0
End If
sqlres.Fields(7) = Trim(Text4.Text)
sqlres.Fields(4) = DTPicker1.Value
Set adofld = sqlres.Fields("照片")
If CommonDialog1.filename <> "" Then
Call picsavetodb(adofld, "filename")
End If
sqlres.Update
Adodc1.Refresh
Adodc1.Recordset.MoveLast
MsgBox "添加学生信息成功!", vbOKOnly + vbExclamation, "添加学生信息"
End If
CommonDialog1.filename = ""
sqlres.Close
Adodc1.RecordSource = "select * from xs,cxb where xs.性别=cxb.性别0"
End Sub
5.4 学生信息修改
5.5 学生信息查询
“查询”按钮的click事件添加如下的代码
Private Sub Command1_Click()
Dim str As String
str = "select * from xs,cxb where xs.性别=cxb.性别0 "
If Text1.Text = "" And Text2.Text = "" And Combo1.Text <> "所有专业" Then
str = "select * from xs,cxb where 专业名='" + Trim(Combo1.Text) + "' and xs.性别=cxb.性别0 "
End If
If Text1.Text <> "" And Text2.Text = "" Then
str = "select * from xs,cxb where 学号='" & Trim(Text1.Text) & "' and xs.性别=cxb.性别0"
End If
If Text1.Text <> "" And Text2.Text <> "" Then
str = "select * from xs where 学号='" & Trim(Text1.Text) & "' and 姓名='" & Trim(Text2.Text) & "'"
End If
If Text1.Text = "" And Text2.Text <> "" Then
str = "select * from xs where 姓名='" & Trim(Text2.Text) & "'"
End If
If Adodc1.Recordset.EOF Then
Text2.Text = ""
Combo1.Text = "所有专业"
Adodc1.RecordSource = "select * from xs,cxb where xs.性别=cxb.性别0"
Adodc1.Refresh
Adodc1.Recordset.MoveFirst
End If
If Text1.Text <> "" Or Text2.Text <> "" Then
Combo1.Text = Adodc1.Recordset("专业名")
End If
End Sub
5.6学生成绩录入
“更新”按钮的click事件添加如下的代码
Private Sub Command1_Click()
Dim 学号, 课程名, 成绩, 学分
If Trim(Text2.Text) = "" Then
MsgBox "成绩不能为空,请输入完整的信息!", , "提示"
Text2.SetFocus
Exit Sub
End If
sqlcmd.CommandText = "addscore"
sqlcmd.CommandType = adCmdStoredProc
Set 学号 = sqlcmd.CreateParameter("@学号", adVarChar, adParamInput, 6)
sqlcmd.Parameters.Append (学号)
Set 课程名 = sqlcmd.CreateParameter("@课程名", adVarChar, adParamInput, 16)
sqlcmd.Parameters.Append (课程名)
Set 成绩 = sqlcmd.CreateParameter("@成绩", adInteger, adParamInput)
sqlcmd.Parameters.Append (成绩)
Set 学分 = sqlcmd.CreateParameter("@学分", adInteger, adParamInput)
sqlcmd.Parameters.Append (学分)
sqlcmd("@学号") = Combo3.Text
sqlcmd("@课程名") = Combo2.Text
sqlcmd("@成绩") = CInt(Text2.Text)
sqlcmd("@学分") = 0
Adodc1.RecordSource = "select xs_kc.学号,姓名,专业名,课程名,成绩,xs_kc.学分 from xs,kc,xs_kc where 课程名='" + Trim(Combo2.Text) + "' and 专业名='" + Trim(Combo1.Text) + "' and xs.学号=xs_kc.学号 and kc.课程号=xs_kc.课程号"
Adodc1.Refresh
Adodc1.Recordset.MoveLast
End Sub
5.7用户管理
窗体的代码如下
Private sqlcon As New ADODB.Connection
Private sqlres As New ADODB.Recordset
Private Sub Command1_Click()
sqlres.MoveFirst
Text1.Text = sqlres.Fields(0)
Text2.Text = sqlres.Fields(1)
Text3.Text = sqlres.Fields(2)
End Sub
Private Sub Command2_Click()
sqlres.MovePrevious
If sqlres.BOF Then
sqlres.MoveFirst
sqlres.MoveNext
If sqlres.EOF Then
sqlres.MoveLast
End If
Text1.Text = sqlres.Fields(0)
Text2.Text = sqlres.Fields(1)
Text3.Text = sqlres.Fields(2)
End Sub
Private Sub Command4_Click()
End Sub
Private Sub Command5_Click()
Dim a As Integer
a = MsgBox("是否删除角色为:" & Trim(Text1.Text) & "用户名为:" + Trim(Text2.Text) + "记录?", vbYesNo, "提示")
If a = 6 Then
sqlres.Delete
sqlres.Update
End If
Set sqlcon = New ADODB.Connection
sqlcon.Open connectstring
Set sqlres = New ADODB.Recordset
sqlres.Open "select * from dlgl ", connectstring, adOpenDynamic, adLockPessimistic
End If
End Sub
Private Sub Form_Unload(Cancel As Integer)
sqlcon.Close
End Sub
5.8修改用户密码
“确定”按钮的click事件添加如下的代码
Private Sub Command1_Click()
If Text1.Text = "" Or Text2.Text = "" Or Text3.Text = "" Then
MsgBox "请输入完整信息"
Text1.SetFocus
Exit Sub
End If
i = Len(Text1.Text)
If i < 6 Then
MsgBox "密码应为六位", , "提示"
Text1.SetFocus
Text1.Text = ""
Exit Sub
End If
i = Len(Text2.Text)
If i < 6 Then
MsgBox "密码应为六位", , "提示"
Text2.SetFocus
Text2.Text = ""
Exit Sub
End If
If Trim(Text3.Text) <> Trim(Text2.Text) Then
MsgBox "前后输入的密码不一致!"
Text3.SetFocus
Text3.Text = ""
Exit Sub
End If
If juese = "管理员" Then
Set sqlres = New ADODB.Recordset
sqlres.Open "select * from dlgl where 用户名='" + yonghuming + "' and 密码='" + Trim(Text1.Text) + "'", connectstring, adOpenDynamic, adLockPessimistic
If Not sqlres.EOF Then
sqlres.Fields(2) = Trim(Text2.Text)
sqlres.Update
Else
MsgBox "原密码输入有误"
Text1.SetFocus
End If
sqlres.Fields(2) = Trim(Text2.Text)
Else
MsgBox "原密码输入有误"
Text1.SetFocus
Text1.Text = ""
Text2.Text = ""
Text3.Text = ""
Exit Sub
End If
End If
End Sub
6 系统测试
模块编程完结之后,对界面外观和功能等进行检测。模块测试时,检验模块每个功能是否都能正常使用,界面优化是否完善。对每个模块的测试进行记录,发现BUG时及时修正。修正BUG后应该需要继续测试,继续完善,这个过程是一个测试,修正,再测试,再修正的循环过程。
在测试过程中,出现过一些不符合标准的情况,经过修改,都基本与设计书的标准符合,根据界面简洁、干净的原则,重新选择了一种颜色渐淡的背景,一些被遗漏的操作也进行了修改和添加,能够完成正常的功能。 由于经验欠缺或其它某些原因,本次完成的系统仍然存在很多问题。测试只能尽量避免错误的产生和消除已经产生的错误,使程序中的错误密度达到尽可能低的程度,减少错误的引入,但是不可能完全杜绝软件中的错误。经过测试,本模块基本能符合要求,也能实现各功能。
测试所用方法:
黑盒测试:也称功能测试,将软件看作黑盒子,在完全不考虑程统开发周期中一个十分重要的阶段,其重要性体现在它是保证系统质量与可靠性的最后关口,是对整个系统开发过程的最终审查,如果错误不能在测试阶段被发现并纠正,就会造成不堪设想的后果。在仓库管理系统中测试的对象不仅仅是源程序,而是整个软件。系统测试是以找错误为目的,不是要证明程序无错,而是要精心选取那些易于发生错误的测试数据,以十分挑剔的态度,证明程序有错。
白盒测试:也称结构测试或逻辑驱动测试,它是按照程序内部的结构测试程序,通过测试来检测产品内部动作是否按照设计规格说明书的规定正常进行,检验 程序中的每条通路是否都能按预定要求正确工作。这一方法是把测试对象看作一个打开的盒子,测试人员依据程序内部逻辑结构相关信息,设计或选择测试用例,对程序所有逻辑路径进行测试,通过在不同点检查程序的状态,确定实际的状态是否与预期的状态一致。
结 论
学生信息管理系统是学校信息管理系统的一个重要组成部分。他为其他系统(如学校图书管理系统、学校档案管理系统、教学管理系统、总务后勤管理系统等)提供学生的基本信息,同时它也需要如教学管理系统提供课程设置数据等。这些系统在具体应用中构成一个大系统,相互调用对方的数据。由以上分析,我们可以充分认识到设计并开发一个学生信息管理系统的必要性和迫切性,本次设计和开发的学生信息管理系统应符合学校学生信息管理的规定,满足对学校学生信息管理的需要,并达到操作过程中的直观,方便,实用,安全等要求。系统采用模块化程序设计的方法,既便于系统功能的组合和修改,又便于未参与系统开发的技术维护人员补充和维护。通过教育网络或互联网把整个学校的学生信息汇聚起来,为学校教育主管部门提供全面及时的学生信息,方便管理,同时亦可通过校园网扩展各类信息化应用,共享学生信息。
参考文献
[1] 郑阿奇 Java EE 北京 电子工业出版社
[2] 陈雪莲 JSP程序设计教程 北京 清华大学出版社
[3] 宋海兰 ASP.NET 3.5项目开发实战 北京 电子工业出版社
致 谢
踉踉跄跄地忙碌了这些天,我的课程设计课题也终将告一段落。点击运行,也基本达到预期的效果,虚荣的成就感在没人的时候也总会冒上心头。但由于能力和时间的关系,总是觉得有很多不尽人意的地方,譬如功能不全、外观粗糙、底层代码的不合理……数不胜数。可是,我又会有点自恋式地安慰自己:做一件事情,不必过于在乎最终的结果,可贵的是过程中的收获。以此语言来安抚我尚没平复的心。毕业设计,也许是我大学生涯交上的最后一个作业了。想籍次机会感谢三年以来给我帮助的所有老师、同学,你们的友谊是我人生的财富,是我生命中不可或缺的一部分。我的课程设计指导老师晏老师,给我不厌其烦的指导。在此,特向她道声谢谢。
展开阅读全文