学生档案管理系统.docx
《学生档案管理系统.docx》由会员分享,可在线阅读,更多相关《学生档案管理系统.docx(32页珍藏版)》请在冰豆网上搜索。
![学生档案管理系统.docx](https://file1.bdocx.com/fileroot1/2023-1/15/0d482041-c701-4331-8319-d377f1ff6d18/0d482041-c701-4331-8319-d377f1ff6d181.gif)
学生档案管理系统
沈阳航空航天大学
课程设计
学号2009040603049
班级94060302_____
姓名__冯光才_______
指导教师___刘学平_______
2011年7月6日
沈阳航空航天大学
课程设计任务书
学院:
机电工程专业:
车辆工程班级:
94060302
学号:
45题目:
学生档案管理系统
一、课程设计时间
2011年6月27日~7月1日(第17周),共计1周。
二、课程设计内容
用VB+Access组合,编写“学生档案管理系统”软件。
学生信息存储到Access数据库的一个表中,学生信息至少包括:
班级、学号、姓名、性别、出生日期、政治面貌、家庭地址、入学成绩、入学时间、联系电话等。
程序能实现对学生数据进行维护、分类查询、汇总、打印等功能。
用户界面中的菜单至少应包括“数据维护”、“查询”、“汇总”、“打印”、“退出”5项。
三、课程设计要求
程序质量:
✧贯彻事件驱动的程序设计思想。
✧用户界面友好,功能明确,操作方便;可以增加其它功能或修饰。
✧代码应适当缩进,并给出必要的注释,以增强程序的可读性。
课程设计说明书:
✧课设结束后,上交课程设计说明书和源程序。
课程设计说明书的内容参见提供的模板。
四、指导教师和学生签字
指导教师:
________学生签名:
________
五、成绩
六、教师评语
目录
学号:
45题学生档案管理系统2
一、需求分析4
二、设计分析4
三、关键技术6
四、总结13
五、完整的源程14
六、参考文献34
一、需求分析
用VB+Access组合,编写“学生档案管理系统”软件。
学生信息存储到Access数据库的一个表中,学生信息至少包括:
班级、学号、姓名、性别、出生日期、政治面貌、家庭地址、入学成绩、入学时间、联系电话等。
程序能实现对学生数据进行维护、分类查询、汇总、打印等功能。
用户界面中的菜单至少应包括“数据维护”、“查询”、“汇总”、“打印”、“退出”5项。
二、设计分析
(1)基本原理:
建立程序设计与数据库的连接,用SQL语句在数据库中查找,添加和更改数据。
(2)总体设计:
图1总体设计
(3)详细设计:
图1详细设计
(4)数据库设计:
数据库设计是总体设计阶段非常重要的环节,数据库结构的变化会造成编码的改动,所以必须认真设计数据库结构后再进行编码,从而避免无谓的重复工作。
具体表格如下
学生基本信息表(rsb.dbf)
学生基本信息表(rsb.dbf)用于记录学号、姓名、班级政治面貌、家庭住址、联系电话等信息,其逻辑结构如表1所示。
表1学生基本信息表
班级
学号
姓名
性别
出生日期
家庭住址
联系电话
三、关键技术
(1)建立与数据库的连接代码如下
PublicgUserNameAsString'保存用户名称
PublicflagAsInteger'添加和修改的标志
PublicgSQLAsString'保存SQL语句
PubliciflagAsInteger'数据库是否打开标志
PublicconnAsNewADODB.Connection
PublicFunctionTransactSQL(ByValsqlAsString)AsADODB.Recordset
DimconAsADODB.Connection
DimrsAsADODB.Recordset
DimstrConnectionAsString
DimstrArray()AsString
Setcon=NewADODB.Connection'创建连接
Setrs=NewADODB.Recordset'创建记录集
OnErrorGoToTransactSQL_Error
strConnection="Provider=Microsoft.jet.oledb.4.0;DataSource="&App.Path&"\Person.mdb"
strArray=Split(sql)
con.OpenstrConnection'打开连接
IfStrComp(UCase$(strArray(0)),"select",vbTextCompare)=0Then
rs.OpenTrim$(sql),con,adOpenKeyset,adLockOptimistic
SetTransactSQL=rs'返回记录集
iflag=1
Else
con.Executesql'执行命令
iflag=1
EndIf
TransactSQL_Exit:
Setrs=Nothing
Setcon=Nothing
ExitFunction
TransactSQL_Error:
MsgBox"查询错误:
"&Err.Description
iflag=2
ResumeTransactSQL_Exit
EndFunction
PublicSubTabToEnter(KeyAsInteger)
IfKey=13Then'判断是否为回车键
SendKeys"{TAB}"'转换为Tab键
EndIf
EndSub
Submain()
DimfLoginAsNewfrmLogin
fLogin.ShowvbModual'显示窗体
EndSub
(2)查询学生档案是SQL语句在数据库中查找学生个人信息。
PrivateSubsetSQL()'设置SQL语句
IfIDCheck.Value=vbCheckedThen
query="select*fromStuffInfowhereSID='"&Trim(Me.SID)&"'"
EndIf
IfNameCheck.Value=vbCheckedThen
query="select*fromStuffInfowhereSName='"&Trim(Me.SName)&"'"
EndIf
IfTimeCheck.Value=vbCheckedThen
query="select*fromStuffInfowhereSIsTimebetween#"
query=query&fromdate&"#and#"&todate&"#"
EndIf
IfIDCheck.Value=vbCheckedAndNameCheck.Value=vbCheckedThen
query="select*fromStuffInfowhereSID='"&Trim(Me.SID)
query=query&"'andSName='"&Trim(Me.SName)&"'"
EndIf
IfNameCheck.Value=vbCheckedAndTimeCheck.Value=vbCheckedThen
query="select*fromStuffInfowhereSName='"&Trim(Me.SName)
query=query&"'andSIsTimebetween#"&fromdate
query=query&"#and#"&todate&"#"
EndIf
EndSub
PrivateSubcmdOK_Click()
IfTrim(Me.SID)=""AndTrim(Me.SName)=""AndTimeCheck.Value<>vbCheckedThen
MsgBox"请选择查询的条件!
",vbOKOnly+vbExclamation,"警告!
"
Else
CallCombineDate
CallsetSQL
frmResult.createList(query)
frmResult.Show
UnloadMe
EndIf
EndSub
(3)打印学生档案表格。
PrivateSubPrint_Click()
DimBeginPage,EndPage,NumCopies,i
'设置“取消”为True
CommonDialog1.CancelError=True
OnErrorGoToErrHandler
'显示“打印”对话框
CommonDialog1.ShowPrinter'从该对话框取得选定的值
BeginPage=CommonDialog1.FromPage'开始页
EndPage=CommonDialog1.ToPage'结束页
NumCopies=CommonDialog1.Copies'打印份数
Fori=1ToNumCopies
Nexti
ExitSub
ErrHandler'用户按了“取消”按钮
ExitSub
EndSub
(4)运用msgbox提示是否退出。
PrivateSubSystem_EXIT_Click()
DimuendAsString
uend=MsgBox("您是否要退出",vbYesNo,"关闭程序")
Ifuend=vbYesThen
End
EndIf
EndSub
四、总结
这次课设我的题目是书店图书销售系统,通过这次课设让我了解了VB与数据库之间的联系,可以应用ADO技术使VB与数据库进行联系,还可以应用SQL语言查询和更改数据库中的信息,并能向其中添加新的信息。
在课设过程中,我遇到了重重困难,例如:
VB与数据库的连接技术,通过老师的指点和自己查阅资料,我克服了困难,顺利的完成了任务。
同时我也了解了VB的出现是一场技术革命,它在生活中各个方面都能发挥巨大的作用,所以,学好VB是社会发展的需要。
五、完整的源
1.Module1
PublicgUserNameAsString'保存用户名称
PublicflagAsInteger'添加和修改的标志
PublicgSQLAsString'保存SQL语句
PubliciflagAsInteger'数据库是否打开标志
PublicconnAsNewADODB.Connection
PublicFunctionTransactSQL(ByValsqlAsString)AsADODB.Recordset
DimconAsADODB.Connection
DimrsAsADODB.Recordset
DimstrConnectionAsString
DimstrArray()AsString
Setcon=NewADODB.Connection'创建连接
Setrs=NewADODB.Recordset'创建记录集
OnErrorGoToTransactSQL_Error
strConnection="Provider=Microsoft.jet.oledb.4.0;DataSource="&App.Path&"\Person.mdb"
strArray=Split(sql)
con.OpenstrConnection'打开连接
IfStrComp(UCase$(strArray(0)),"select",vbTextCompare)=0Then
rs.OpenTrim$(sql),con,adOpenKeyset,adLockOptimistic
SetTransactSQL=rs'返回记录集
iflag=1
Else
con.Executesql'执行命令
iflag=1
EndIf
TransactSQL_Exit:
Setrs=Nothing
Setcon=Nothing
ExitFunction
TransactSQL_Error:
MsgBox"查询错误:
"&Err.Description
iflag=2
ResumeTransactSQL_Exit
EndFunction
PublicSubTabToEnter(KeyAsInteger)
IfKey=13Then'判断是否为回车键
SendKeys"{TAB}"'转换为Tab键
EndIf
EndSub
Submain()
DimfLoginAsNewfrmLogin
fLogin.ShowvbModual'显示窗体
EndSub
2.frmAddUser
OptionExplicit
PrivateSubcmdCancel_Click()
UnloadMe
EndSub
PrivateSubcmdOK_Click()
DimsqlAsString
DimrsAsADODB.Recordset
IfTrim(UserName.Text)=""Then'判断用户名称是否为空
MsgBox"请输入用户名称!
",vbOKOnly+vbExclamation,"警告"
ExitSub
UserName.SetFocus
Else
sql="select*fromUserInfowhereUserID='"&UserName&"'"
Setrs=TransactSQL(sql)
Ifrs.EOF=FalseThen'判断是否已经存在用户
MsgBox"这个用户已经存在!
请重新输入用户名称!
",vbOKOnly+vbExclamation,"警告"
UserName.SetFocus
UserName.Text=""
PassWord.Text=""
confirmPWD.Text=""
ExitSub
Else
IfTrim(PassWord.Text)<>Trim(confirmPWD.Text)Then'判断两次密码是否相同
MsgBox"两次输入的密码不一致,请重新输入密码!
",vbOKOnly+vbExclamation,"警告"
PassWord.Text=""
confirmPWD.Text=""
PassWord.SetFocus
ExitSub
ElseIfTrim(PassWord.Text)=""Then'判断密码是否为空
MsgBox"密码不能为空!
",vbOKOnly+vbExclamation,"警告"
PassWord.Text=""
confirmPWD=""
PassWord.SetFocus
Else'添加用户
sql="insertintoUserInfo(UserID,UserPWD)values('"&UserName
sql=sql&"','"&PassWord&"')"
TransactSQL(sql)
MsgBox"添加成功!
",vbOKOnly+vbExclamation,"添加结果"
'重新设置初始化为空
UserName.Text=""
PassWord.Text=""
confirmPWD.Text=""
UserName.SetFocus
EndIf
EndIf
EndIf
EndSub
PrivateSubForm_Load()
UserName.Text=""
PassWord.Text=""
confirmPWD.Text=""
EndSub
3.frmChangePWD
OptionExplicit
PrivateSubcmdCancel_Click()
UnloadMe
EndSub
PrivateSubcmdOK_Click()
DimsqlAsString
DimrsAsADODB.Recordset
'IfTrim(OldPWD.Text)=UserPWDThen'判断是否输入旧密码
'MsgBox"请输入旧密码!
",vbOKOnly+vbExclamation,"警告"
'OldPWD.SetFocus
'ExitSub
'Else
IfTrim(NewPWD.Text)=""Then'判断是否输入新密码
MsgBox"请输入新密码!
",vbOKOnly+vbExclamation,"警告"
NewPWD.SetFocus
ExitSub
ElseIfTrim(NewPWD.Text)<>Trim(ConfirmPWD.Text)Then'判断两次密码是否相同
MsgBox"两次密码不同!
",vbOKOnly+vbExclamation,"警告"
NewPWD.Text=""
ConfirmPWD.Text=""
NewPWD.SetFocus
Else
'IfTrim(OldPWD.Text)=UserPWDThen'修改密码
sql="updateUserInfosetUserPWD='"&NewPWD&"'whereUserID='"
sql=sql&gUserName&"'"
TransactSQL(sql)
MsgBox"密码已经修改!
",vbOKOnly+vbExclamation,"修改结果"
UnloadMe
EndIf
EndSub
PrivateSubForm_Load()
'OldPWD.Text=""
NewPWD.Text=""
ConfirmPWD.Text=""
EndSub
4.frmCheck
OptionExplicit
PrivatequeryAsString
PrivatefromdateAsString
PrivatetodateAsString
PrivateSubcmdCancel_Click()
UnloadMe
ExitSub
EndSub
PrivateSubCombineDate()
fromdate=Me.FromYear.Text&"-"&Me.FromMonth.Text&"-1"
fromdate=Format(Me.FromYear.Text&"-"&Me.FromMonth.Text&"-1","yyyy-mm-dd")
todate=Me.ToYear.Text&"-"&Me.ToMonth.Text&"-1"
todate=Format(todate,"yyyy-mm-dd")
EndSub
PrivateSubsetSQL()
IfIDCheck.Value=vbCheckedThen
query="select*fromStuffInfowhereSID='"&Trim(Me.SID)&"'"
EndIf
IfNameCheck.Value=vbCheckedThen
query="select*fromStuffInfowhereSName='"&Trim(Me.SName)&"'"
EndIf
IfTimeCheck.Value=vbCheckedThen
query="select*fromStuffInfowhereSIsTimebetween#"
query=query&fromdate&"#and#"&todate&"#"
EndIf
EndSub
PrivateSubcmdOK_Click()
CallCombineDate
CallsetSQL
frmResult.createList(query)
frmResult.Show
UnloadMe
EndSub
PrivateSubForm_Load()
DimiAsInteger
DimsqlAsString
DimrsAsNewADODB.Recordset
sql="selectdistinctdatepart(yy,SIsTime)fromStuffInfo"
Setrs=TransactSQL(sql)
IfNotrs.EOFThen
rs.MoveFirst
WhileNotrs.EOF
IfNotIsNull(rs.Fields(0))Then
Me.FromYear.AddItemrs(0)
Me.ToYear.AddItemrs(0)
EndIf
rs.MoveNext
Wend
rs.Close
Me.FromYear.ListIndex=0
Me.ToYear.ListIndex=0
EndIf
Fori=1To12
Me.FromMonth.AddItemi
Me.ToMonth.AddItemi
Nexti
Me.FromMonth.ListIndex=0
Me.ToMonth.ListIndex=0
EndSub
5.frmCheckStuff
OptionExplicit
PrivatequeryAsString'保存SQL语句
PrivatefromdateAsString'起始时间
PrivatetodateAsString'结束时间
PrivateSubcmdCancel_Click()
UnloadMe
ExitSub
EndSub
PrivateSubCombineDate()'获得起始和结束时间
fromdate=Me.FromYear.Text&"-"&Me.FromMonth.Text&"-1"
fromdate=Format(Me.FromYear.Text&"-"&Me.F