学生信息管理系统VB.docx
《学生信息管理系统VB.docx》由会员分享,可在线阅读,更多相关《学生信息管理系统VB.docx(30页珍藏版)》请在冰豆网上搜索。
学生信息管理系统VB
课程设计
VB课程设计报告
系别:
计算机科学与技术系
专业(班级):
作者(学号):
指导教师:
完成日期:
2008年12月20日
教务处制
题目:
学生信息管理系统的实现
内容摘要:
学生信息管理系统主要包括班级管理信息的输入、查询、修改;学校基本课程信息的输入、修改;学生课程信息的设置和修改;学生成绩信息的输入、修改、查询以及统计。
1.需求分析----------------------------------------2
2.概要设计-----------------------------------------4
3.详细设计-----------------------------------------4
4.测试-----------------------------------------------25
5.附录或参考资料----------------------------------26
1:
需求分析
随着学校规模的不断扩大,学生的数量急剧增加,有关学生的各种信息管理也成倍增长。
而对于庞大的信息量,就需要有学生信息管理系统来提高学生管理工作的效率,取代从前的手工操作。
基于今后计算机的网路普及以及方便实现用户阅读及统一查询,所以使用SQLserver2000做数据库系统,使用VisualBasic作为前台处理软件。
(1)系统分析
a.系统功能分析
班级管理信息的输入,包括班级设置、年级的设置等;班级管理信息管理的查询;班级管理信息的修改;学校基本课程信息的输入;基本课程信息的修改;学生课程信息的设置和修改;学生成绩信息的输入;学生成绩信息的修改;学生成绩信息的查询;学生成绩信息的统计。
b.系统功能模块分析
上述各功能的系统功能模块图如下:
(2)数据库分析
数据库在一个信息管理系统中占有非常重要的地位,数据库结构设计的好坏将直接对应用系统的效率以及实现的效果产生影响。
合理的数据库结构设计可提高数据存储的效率,保证数据的完整和一致。
同时,合理的数据库结构也将有利于程序的实现。
数据库需求分析
用户的需求具体体现在各种信息的提供、保证、更新和查询,这就要求数据库结构能够充分满足各种信息的输出和输入。
针对一般学生信息管理系统的要求,通过对学生学习过程的内容和数据流程分析,设计如下的数据项和数据结构:
a.学生基本信息:
包括的数据项有:
学生学号、学生姓名、性别、出身日期、班号、联系电话、入校日期、家庭地址、备注等。
b.班级信息:
包括的数据项有:
班号、所在年级、班主任姓名、所在教室等。
c.课程基本信息:
包括的数据项有:
课程号、课程名称、课程类别、课程描述等。
d.课程设置信息:
包括数据项有:
年级信息、所学课程等。
e.学生成绩信息:
包括数据项有:
考试编号、所在班号、学生学号、学生姓名、所学课程、考试分数等。
根据上面的数据结构、数据项和数据流程,进行一下的数据库设计。
2.概要设计
(1)数据库设计
利用SQLserver2000数据库系统中的SQl企业管理器,建立数据库student.sql文件,数据库名为:
student,在student数据库中创建6个表,分别为:
学生基本信息表、班级基本信息表、课程基本信息表、年级课程基本信息表、学生成绩信息表、系统用户表。
(2)系统设计
用VisualBasic来编写数据库系统客户端程序即学生信息管理系统中各功能模块。
该系统包括:
工程文件Student_Mis.vbp,标准模块文件Module1.bas,主窗体文件frmMain.frm,登陆窗体文件frmLogin.frm,添加用户窗体文件frmAdduser.frm。
修改用户密码窗体文件frmModifyuserinfo.frm,添加学籍信息窗体文件frmAddsinfo.frm,修改学籍信息窗体文件frmModifysinfo.frm,查询学籍信息窗体文件frmInquiresinfo.frm,添加班级信息窗体文件frmAddclassinfo.frm,修改班级信息窗体文件frmModifyclassinfo.frm,添加课程信息窗体文件frmAddcourseinfo.frm,修改课程信息窗体文件frmModifycourseinfo.frm,设置年级课程窗体文件frmSetcourseinfo.frm,添加成绩信息窗体文件frmAddresult.frm,修改成绩窗体文件frmModifyresult.frm,查询成绩信息窗体文件frmInquireresult.frm。
3.详细设计
(1)数据库设计
a.数据库概念结构设计
得到数据项和数据结构后,设计出能够满足用户需求的各种实体,以及它们之间的关系。
这些实体包括具体信息,通过相互之间的作用形成数据段流动。
设计规划出的实体有:
年级实体、学生实体、课程实体。
各个实体具体的描述及关系的E-R图如下图所示。
b.数据库逻辑结构设计
学生信息管理系统数据库中各表设计结果如图1.1~1.6所示。
每个表格表示在数据库中的一个表。
表1.1student_info学生基本信息表
表1.2class_info班级信息表
表1.3course_info课程基本信息
表1.4gradecourse_info年级课程设计表格
表1.5result_info学生成绩信息表
表1.6user_info系统用户表
(2)系统设计
1.学生信息管理系统主窗体的创建
a.创建一个工程名为Student_Mis的工程文件Student_Mis.vbp。
b.创建学生信息管理系统的主窗体MID窗体,窗体名为frmMain,窗体文件名为:
frmMain.frm。
c.创建主窗体的菜单。
主窗体
表2.1菜单结果表
对象
属性
属性值
对象
属性
属性值
主菜单项1
名称
sysMenu
子菜单项2
名称
modifycionfoMenu
标题
系统
标题
修改班级信息
子菜单项1
名称
adduserMenu
主菜单项4
名称
courseMenu
标题
添加用户
标题
课程设置
子菜单项2
名称
modifypwdMenu
子菜单项1
名称
addcourseMenu
标题
修改密码
标题
添加课程设计
子菜单项3
名称
exitMenu
子菜单项2
名称
modifycourseMenu
标题
退出系统
标题
修改课程信息
主菜单项2
名称
sinfoMenu
子菜单项3
名称
gradecourseMenu
标题
学籍信息
标题
设计年级课程
子菜单项1
名称
addsinfoMenu
主菜单项5
名称
resultMenu
标题
添加学籍信息
标题
成绩管理
子菜单项2
名称
modifysinfoMenu
子菜单项1
名称
addresultMenu
标题
修改学籍信息
标题
添加成绩信息
子菜单项3
名称
inquiresinfoMenu
子菜单项2
名称
modifyresultMenu
标题
查询学籍信息
标题
修好学籍信息
主菜单项3
名称
classinfoMenu
子菜单项3
名称
inquireresultMenu
标题
班级管理
标题
查询成绩信息
子菜单项1
名称
addcinfoMenu
标题
添加班级信息
学生信息管理系统主窗体代码如下:
PrivateSubMDIForm_Load()
Me.Left=GetSetting(App.Title,"Settings","MainLeft",1000)
Me.Top=GetSetting(App.Title,"Settings","MainTop",1000)
Me.Width=GetSetting(App.Title,"Settings","MainWidth",6500)
Me.Height=GetSetting(App.Title,"Settings","MainHeight",6500)
EndSub
PrivateSubMDIForm_Unload(CancelAsInteger)
IfMe.WindowState<>vbMinimizedThen
SaveSettingApp.Title,"Settings","MainLeft",Me.Left
SaveSettingApp.Title,"Settings","MainTop",Me.Top
SaveSettingApp.Title,"Settings","MainWidth",Me.Width
SaveSettingApp.Title,"Settings","MainHeight",Me.Height
EndIf
EndSub
PrivateSubmodifycinfoMenu_Click()
frmModifyclassinfo.Show
EndSub
PrivateSubmodifycourseMenu_Click()
frmModifycourseinfo.Show
EndSub
PrivateSubmodifypwdMenu_Click()
frmModifyuserinfo.Show
EndSub
PrivateSubmodifyresultMenu_Click()
frmModifyresult.Show
EndSub
PrivateSubmodifysinfo_Menu_Click()
frmModifysinfo.Show
EndSub
d.创建公共模块。
在工程资源管理器中为项目添加一个名称为Module的标准模块文件Module.bas。
代码如下:
PublicfMainFormAsfrmMain
PublicUserNameAsString
SubMain()
DimfLoginAsNewfrmLogin
fLogin.ShowvbModal
IfNotfLogin.OKThen
'LoginFailedsoexitapp
End
EndIf
UnloadfLogin
SetfMainForm=NewfrmMain
fMainForm.Show
EndSub
PublicFunctionConnectString()_
AsString
'returnsaDBConnectString
ConnectString="FileDSN=studentinfo.dsn"
EndFunction
PublicFunctionExecuteSQL(ByValSQL_
AsString,MsgStringAsString)_
AsADODB.Recordset
'executesSQLandreturnsRecordset
DimcnnAsADODB.Connection
DimrstAsADODB.Recordset
DimsTokens()AsString
OnErrorGoToExecuteSQL_Error
sTokens=Split(SQL)
Setcnn=NewADODB.Connection
cnn.OpenConnectString
IfInStr("INSERT,DELETE,UPDATE",_
UCase$(sTokens(0)))Then
cnn.ExecuteSQL
MsgString=sTokens(0)&_
"querysuccessful"
Else
Setrst=NewADODB.Recordset
rst.OpenTrim$(SQL),cnn,_
adOpenKeyset,_
adLockOptimistic
'rst.MoveLast'getRecordCount
SetExecuteSQL=rst
MsgString="查询到"&rst.RecordCount&_
"条记录"
EndIf
ExecuteSQL_Exit:
Setrst=Nothing
Setcnn=Nothing
ExitFunction
ExecuteSQL_Error:
MsgString="查询错误:
"&_
Err.Description
ResumeExecuteSQL_Exit
EndFunction
PublicFunctionTesttxt(txtAsString)AsBoolean
IfTrim(txt)=""Then
Testtxt=False
Else
Testtxt=True
EndIf
EndFunction
2.系统用户管理模块的创建
a.系统用户管理模块主页实现:
用户登陆;用户添加;修改用户密码
用户登陆窗体的创建。
进入系统后出现如图2.1所示用户登陆窗体,用户首先输入用户名,然后输入密码。
如果用户3次输入密码不正确,将退出程序。
图2.1
代码如下:
OptionExplicit
PublicOKAsBoolean
'记录确定次数
DimmiCountAsInteger
PrivateSubForm_Load()
OK=False
miCount=0
EndSub
PrivateSubcmdCancel_Click()
OK=False
Me.Hide
EndSub
PrivateSubcmdOK_Click()
DimtxtSQLAsString
DimmrcAsADODB.Recordset
DimMsgTextAsString
'ToDo:
createtestforcorrectpassword
'checkforcorrectpassword
UserName=""
IfTrim(txtUserName.Text="")Then
MsgBox"没有这个用户,请重新输入用户名!
",vbOKOnly+vbExclamation,"警告"
txtUserName.SetFocus
Else
txtSQL="select*fromuser_Infowhereuser_ID='"&txtUserName.Text&"'"
Setmrc=ExecuteSQL(txtSQL,MsgText)
Ifmrc.EOF=TrueThen
MsgBox"没有这个用户,请重新输入用户名!
",vbOKOnly+vbExclamation,"警告"
txtUserName.SetFocus
Else
IfTrim(mrc.Fields
(1))=Trim(txtPassword.Text)Then
OK=True
mrc.Close
Me.Hide
UserName=Trim(txtUserName.Text)
Else
MsgBox"输入密码不正确,请重新输入!
",vbOKOnly+vbExclamation,"警告"
txtPassword.SetFocus
txtPassword.Text=""
EndIf
EndIf
EndIf
miCount=miCount+1
IfmiCount=3Then
Me.Hide
EndIf
ExitSub
EndSub
用户添加窗体的创建。
进入系统后,选择菜单“系统|添加用户”就可以添加用户,会出现如图2.2所示的窗体。
图2.2
代码如下:
PrivateSubcmdCancel_Click()
UnloadMe
EndSub
PrivateSubcmdOK_Click()
DimtxtSQLAsString
DimmrcAsADODB.Recordset
DimMsgTextAsString
IfTrim(Text1(0).Text)=""Then
MsgBox"请输入用户名称!
",vbOKOnly+vbExclamation,"警告"
ExitSub
Text1(0).SetFocus
Else
txtSQL="select*fromuser_Info"
Setmrc=ExecuteSQL(txtSQL,MsgText)
While(mrc.EOF=False)
IfTrim(mrc.Fields(0))=Trim(Text1(0))Then
MsgBox"用户已经存在,请重新输入用户名!
",vbOKOnly+vbExclamation,"警告"
Text1(0).SetFocus
Text1(0).Text=""
Text1
(1).Text=""
Text1
(2).Text=""
ExitSub
Else
mrc.MoveNext
EndIf
Wend
EndIf
IfTrim(Text1
(1).Text)<>Trim(Text1
(2).Text)Then
MsgBox"两次输入密码不一样,请确认!
",vbOKOnly+vbExclamation,"警告"
Text1
(1).SetFocus
Text1
(1).Text=""
Text1
(2).Text=""
ExitSub
Else
IfText1
(1).Text=""Then
MsgBox"密码不能为空!
",vbOKOnly+vbExclamation,"警告"
Text1
(1).SetFocus
Text1
(1).Text=""
Text1
(2).Text=""
Else
mrc.AddNew
mrc.Fields(0)=Trim(Text1(0).Text)
mrc.Fields
(1)=Trim(Text1
(1).Text)
mrc.Update
mrc.Close
Me.Hide
MsgBox"添加用户成功!
",vbOKOnly+vbExclamation,"添加用户"
EndIf
EndIf
EndSub
修改用户密码窗体的创建。
用户可以修改自己的密码,选择“系统|修改密码”,出现如图2.3所示,在这个窗体中放置看两个文本框,用来输入密码和确认密码。
图2.3
代码如下:
PrivateSubcmdCancel_Click()
UnloadMe
EndSub
PrivateSubcmdOK_Click()
DimtxtSQL,MsgTextAsString
DimmrcAsADODB.Recordset
IfTrim(Text1
(1).Text)<>Trim(Text1
(2).Text)Then
MsgBox"密码输入不正确!
",vbOKOnly+vbExclamation,"警告"
Text1
(1).SetFocus
Text1
(1).Text=""
Else
txtSQL="select*fromuser_Infowhereuser_ID='"&UserName&"'"
Setmrc=ExecuteSQL(txtSQL,MsgText)
mrc.Fields
(1)=Text1
(1).Text
mrc.Update
mrc.Close
MsgBox"密码修改成功!
",vbOKOnly+vbExclamation,"修改密码"
Me.Hide
EndIf
EndSub
3.学籍管理模块的创建
学籍信息管理主题实现如下功能:
添加学籍信息;修改学籍信息;查询学校信息。
添加学籍信息窗体的创建。
选择“学籍管理|添加学籍信息”菜单,将出现如图2.4所示的窗体。
图2.4
代码如下:
PrivateSubCommand1_Click()
DimmrcAsADODB.Recordset
DimtxtSQLAsString
DimMsgTextAsString
ifNotTesttxt(txtSID.Text)Then
MsgBox"请输入学号!
",vbOKOnly+vbExclamation,"警告"
txtSID.SetFocus
ExitSub
EndIf
IfNotTesttxt(txtName.Text)Then
MsgBox"请输入姓名!
",vbOKOnly+vbExclamation,"警告"
txtName.SetFocus
ExitSub
EndIf
IfNotTesttxt(comboSex.Text)Then
MsgBox"请选择性别!
",vbOKOnly+vbExclamation,"警告"
comboSex.SetFocus
ExitSub
EndIf
IfNotTesttxt(txtBorndate.Text)Then
MsgBox"请输入出生日期!
",vbOKOnly+vbExclamation,"警告"
txtBorndate.SetFocus
ExitSub
EndIf
IfNotTesttxt(comboClassno.Text)Then
MsgBox"请选择班号!
",vbOKOnly+vbExclamation,"警告"
comboClassno.SetFocus
ExitSub
EndIf
IfNotTesttxt(txtTel.Text)Then
MsgBox"请输入联系电话!
",vbOKOnly+vbExclamation,"警告"
txtTel.SetFocus
ExitSub
EndIf
IfNotTesttxt(txtRudate.Text)Then
MsgBox"请输入入校日期!
",vbOKOnly+vbExclamation,"警告"
txtRudate.SetFocus
Exit