数据库技术与应用课程设计成绩管理系统.docx
《数据库技术与应用课程设计成绩管理系统.docx》由会员分享,可在线阅读,更多相关《数据库技术与应用课程设计成绩管理系统.docx(44页珍藏版)》请在冰豆网上搜索。
数据库技术与应用课程设计成绩管理系统
中国矿业大学环境与测绘学院
数据库技术与应用课程实践
第一章系统分析与设计…………………………………………………………………3
1.1系统功能分析…………………………………………………………………….3
1.2数据库设计………………………………………………………………………..3
第二章系统实施…………………………………………………………………………….5
2.1主界面设置……………………………………………………………………..6
2.2全局变量设置………………………………………………………………….9
2.3用户登录窗口…………………………………………………………………11
2.4密码修改窗口…………………………………………………………………12
2.5用户注册窗口…………………………………………………………………16
第三章信息维护……………………………………………………………………………16
3.1添加学生记录…………………………………………………………………16
3.2查询学生记录…………………………………………………………………20
3.3生成报表窗口…………………………………………………………………28
3.4关于系统窗口…………………………………………………………………29
第四章实验总结………………………………………………………………………….31
4.1实验过程…………………………………………………………………………31
4.2问题解决………………………………………………………………………….31
4.3经验总结………………………………………………………………………….33
第五章参考资料…………………………………………………………………………..33
第一章系统分析与设计
1.1系统功能分析
随着学校的规模不断扩大,学生数量急剧增加,有关学生的各种信息量也成倍增长。
面对庞大的信息量就需要有一个学生信息管理系统来提高学生管理工作的效率。
通过这样的系统可以做到信息的规范管理、快速查询、修改、增加、删除等,从而减少管理方面的工作量。
设计内容为管理员登录该系统进行七个模块操作:
1)、学生基本情况维护:
增加、修改、删除、报表、查询(按学号、姓名、性别、班级、家庭住址、生日)
2)、教师基本情况维护:
增加、修改、删除、报表、查询(按教师编号、教师姓名、部门编号、学历、职称、家庭住址、性别)
3)、学生成绩维护:
增加、修改、删除、报表、查询(按学号、专业)
4)、部门信息维护:
增加、修改、删除、报表、查询(按部门编号、部门名称)
5)、课程信息维护:
增加、修改、删除、报表、查询(按课程编号、课程名称、学时、类型)
6)、课程类型维护:
增加、修改、删除、报表、查询(按编号、名称)
7)、用户信息维护:
重新登录、修改密码、用户注册
1.2数据库设计
在系统设计过程中,首先要建立的就是数据库。
本数据库采用SQLServer
2000来构造,数据库名称为School,共使用了8个表,它们分别是用户信息表(Operator)、学生信息表(Student)、学生成绩表(SC)、教师信息表(Teacher)、课程信息表(Course)、课程类型表(Type)、部门信息表(Sdept)、班级信息表(Class)。
1)、用户信息表(Operator):
表结构如下表所示:
名称
字段名称
类型
长度
允许空否
用户名
operator_name
char
10
否
密码
password
text
16
否
2)学生信息表(Student):
表结构如下表所示:
名称
字段名称
类型
长度
允许空否
学号
Sno
char
10
否
姓名
Sname
text
16
否
性别
Ssex
char
2
否
出生日期
Sbirth
char
10
班级编号
Sclass
char
10
家庭住址
Saddress
char
50
联系电话
Sphone
char
16
简历
Sresume
char
100
3)学生成绩表(SC):
表结构如下表所示:
名称
字段名称
类型
长度
允许空否
学号
Sno
char
10
否
课程号
Cno
char
10
否
成绩
Grade
int
4
否
4)教师信息表(Teacher):
表结构如下表所示:
名称
字段名称
类型
长度
允许空否
教师编号
Tno
char
10
否
教师姓名
Tname
char
8
否
部门编号
Tsdeptno
char
10
学历
Tbackground
char
10
职称
Tlevel
char
10
生日
Tbirth
text
16
性别
Tsex
char
2
否
家庭住址
Taddress
char
50
联系电话
Tphone
char
16
简历
Tresume
char
100
5)课程信息表(Course):
表结构如下表所示:
名称
字段名称
类型
长度
允许空否
课程编号
Cno
char
10
否
课程名称
Cname
char
20
否
学时
Credit
int
4
课程类型
Ctype
char
10
6)课程类型表(Type):
表结构如下表所示:
名称
字段名称
类型
长度
允许空否
课程类型编号
Typeno
char
10
否
课程类型名称
Typename
text
16
否
7)部门信息表(Sdept):
表结构如下表所示:
名称
字段名称
类型
长度
允许空否
部门编号
Typeno
char
10
否
部门名称
Typename
char
16
否
8)班级信息表(Class):
表结构如下表所示:
名称
字段名称
类型
长度
允许空否
班级编号
Classno
char
10
否
班级名称
Classname
text
16
否
所属部门编号
Classsdept
char
10
否
第二章系统实施
2.1主界面设置
在SQLServer2000中新建一个名为School的数据库,并在该数据库中按照上面的设置建立八个基本表。
然后再VisiualBasic6.0简体中文企业版中建立主窗体frm_main.主界面如下图所示:
因为程序在运行的时候我才能抓取到当前窗体,程序运行的时候Imagelist控件隐藏了,所以我们只能看到ToolBar控件。
使用ToolBar程序的美观性和直观性都有了一些提高,下面是ToolBar控件的代码。
这一过程使用selectcase……endselect语句,比使用if……endif
语句,程序简化很多。
下面试这一部分的代码:
OptionExplicit
PrivateSubClassmanagement_Click()'班级管理
frmclass.Show
EndSub
PrivateSubcoursemanage_Click()'课程设置
frm_course.Show
EndSub
PrivateSubcoursequery_Click()'课程查询
frm_course.Show
EndSub
PrivateSubCoursetype_Click()'课程类型
frmtype.Show
EndSub
PrivateSubexit_Click()'退出
UnloadMe
EndSub
PrivateSubgradeadd_Click()'录入成绩信息
frm_grade.Show
EndSub
PrivateSubgradequery_Click()‘成绩查询
frm_grade.Show
EndSub
PrivateSubhelp_Click()‘帮助文档
frmhelp.Show
EndSub
PrivateSubloginagain_Click()'重新登录
frm_login.Show
EndSub
PrivateSubpasswordmodify_Click()'密码修改
frm_psdmodify.Show
EndSub
PrivateSubquerybycourse_Click()'通过课程查询成绩
frm_course.Show
EndSub
PrivateSubquerybystudent_Click()'通过学生查询成绩
frm_student.Show
EndSub
PrivateSubreadme_Click()‘使用须知
frmreadme.Show
EndSub
PrivateSubregister_Click()‘用户注册
frm_register.Show
EndSub
PrivateSubsdeptset_Click()‘部门管理
frmsdept.Show
EndSub
PrivateSubstudentadd_Click()'录入学生信息
frm_studentadd.Show
EndSub
PrivateSubstudentmodify_Click()'学生信息修改
frm_student.Show
EndSub
PrivateSubstudentquery_Click()'学生信息查询
frm_student.Show
EndSub
PrivateSubteacheradd_Click()'添加教师信息
frmteacheradd.Show
EndSub
PrivateSubteachermodify_Click()'修改教师信息
frmteacher.Show
EndSub
PrivateSubteacherquery_Click()'查询教师信息
frmteacher.Show
EndSub
‘选择ToolBar上每个按钮的关键字
PrivateSubToolbar1_ButtonClick(ByValButtonAsMSComctlLib.Button)
SelectCaseButton.Key
Case"password"
frm_psdmodify.Show
Case"student"
frm_student.Show
Case"grade"
frm_grade.Show
Case"teacher"
frmteacher.Show
Case"class"
frmclass.Show
Case"course"
frm_course.Show
Case"sdept"
frmsdept.Show
Case"help"
frmhelp.Show
Case"exit"
UnloadMe
EndSelect
EndSub
2.2全局变量设置
程序编写过程中需要用到一些全局变量,并且软件的启动从SubMain过程开始,这一过程包含了软件的初始化,School数据库的恢复。
这一部分的运行过程人们看不到,主要代码为:
OptionExplicit
PublicconnAsNewADODB.Connection
PublicrecoAsNewADODB.Recordset
Publicreco2AsNewADODB.Recordset
Publicconn_str1AsString
Publicconn_str2AsString
PublicconstringAsString
PubliccnnAsADODB.Connection
Publicrst_studentAsADODB.Recordset
Publicrst_courseAsADODB.Recordset
Publicrst_gradeAsADODB.Recordset
Publicrst_operatorAsADODB.Recordset
Publicrst_classAsADODB.Recordset
Publicrst_teacherAsADODB.Recordset
Publicrst_sdeptAsADODB.Recordset
Publicrst_typeAsADODB.Recordset
PubliciAsInteger
PublicSubMain()
reco.CursorLocation=adUseClient
reco2.CursorLocation=adUseClient
conn_str1="Provider=SQLOLEDB.1;IntegratedSecurity=SSPI;PersistSecurityInfo=False;InitialCatalog=School;DataSource="
conn_str2="Provider=SQLOLEDB.1;IntegratedSecurity=SSPI;PersistSecurityInfo=False;InitialCatalog=master;DataSource="
DB_ADDconn.Openconn_str1'连接到数据库"
frm_login.Show
EndSub
'====关闭记录集====
PublicSubClose_Reco()
Ifreco.State=1Then
reco.Close
EndIf
EndSub
PublicSubDB_ADD()
DimsAsString
OnErrorGoToErrorCheck
a:
conn.Openconn_str2
reco.Open"select*fromsysdatabaseswherename='School'",conn,1,3
Ifreco.RecordCount<>1Then
mkdir_kill
conn.Execute"restoredatabaseSchoolfromdisk='"&App.Path&"\backup\School'"
Else
reco.Close
conn.Close
ExitSub
EndIf
reco.Close
conn.Close
ExitSub
ErrorCheck:
MsgBox"您可能没有启动SQLServer服务",,"提示"
Shell"netstartMSSQLServer"
MsgBox"启动成功!
",,"提示"
GoToa
EndSub
PublicSubmkdir_kill()
OnErrorResumeNext
MkDir"C:
\Programfiles"
MkDir"C:
\ProgramFiles\MicrosoftSQLServer"
MkDir"C:
\ProgramFiles\MicrosoftSQLServer\MSSQL"
MkDir"C:
\ProgramFiles\MicrosoftSQLServer\MSSQL\Data"
Kill"C:
\ProgramFiles\MicrosoftSQLServer\MSSQL\Data\School_Log.LDF"
Kill"C:
\ProgramFiles\MicrosoftSQLServer\MSSQL\Data\School_Data.MDF"
EndSub
2.3用户登录
为了保障系统的安全,用户在未登录之前不能看到主界面,下面是一个登录验证窗口:
用户只有输入了有效的用户名和密码,才能进入主界面进行各种操作。
为了增强系统的安全性,系统对用户输错密码的次数进行了限制,如果用户连续三次输入密码错误,则登录界面将关闭,用户必须重新运行软件才能继续登录。
这一部分的代码为:
OptionExplicit
PrivateSubcmd_cancel_Click()
UnloadMe
EndSub
PrivateSubcmd_yes_Click()
DimsqlAsString
Dimrst_loginAsNewADODB.Recordset
IfTrim(txt_user.Text)=""Then
MsgBox"用户名不能为空",vbExclamation+vbOKOnly,"没有这个用户"
txt_user.SetFocus
Else
sql="select*fromOperatorwhereoperator_name='"&txt_user.Text&"'"
'在这个地方遇到了问题,执行到下一句总是出错,也看不出来是什么问题,想了很久之后我在SQLServer
'2000查询分析器执行了上面的select*fromOperator,发现不能执行,换其他的表就没有问题,然后我
'了几个表,发现是Operator表没有设置主键,所以出错了,然后我设置了主键,问题就解决了。
'所以,对数据库中的每一个表都设置主键是很有必要的。
rst_login.Opensql,cnn,adOpenKeyset,adLockPessimistic
Ifrst_login.EOF=TrueThen
MsgBox"没有这个用户",vbExclamation+vbOKOnly,"没有权限"
txt_user.SetFocus
Else
IfTrim(rst_login.Fields("Password").Value)=Trim(txt_password.Text)Then
rst_login.Close
UnloadMe
frm_main.Show
Else
MsgBox"密码不正确",vbExclamation+vbOKOnly,""
txt_password.Text=""
txt_password.SetFocus
EndIf
EndIf
EndIf
i=i+1
Ifi=3Then
UnloadMe
EndIf
ExitSub
EndSub
PrivateSubForm_Load()
DimstrcnnAsString
strcnn="Provider=SQLOLEDB.1;IntegratedSecurity=SSPI;PersistSecurityInfo=False;InitialCatalog=School;DataSource="
Setcnn=NewADODB.Connection
cnn.Openstrcnn
i=0
EndSub
2.4密码修改
根据经验我们知道,长期使用同一个密码是不安全的,所以该成绩管理系统提供了密码修改功能。
为了保证系统的安全,虽然用户已经登录,但是必须再次输入用户名和密码,验证用户的权限,才能修改密码。
新密码的长度不能低于6位。
可以是数字、字母和特殊字符的组合,且不能和原来的密码一样。
用户可以选择输入密码的时候,新密码是否可见,默认为新密码不可见。
下面是修改密码窗体frm_psdmodify的界面:
这一部分的代码为:
OptionExplicit
PrivateSubcmd_cancel_Click()
DimoptAsString
opt=MsgBox("您确定要退出修改密码吗?
",vbYesNo,"")
Ifopt=vbYesThen'对用户行为进行确认
UnloadMe
Else
ExitSub
EndIf
EndSub
PrivateSubcmd_check_Click()
'再次验证用户权限,保障系统安全
'未验证权限则无权修改密码
DimsqlAsString
Dimrst_loginAsNewADODB.Recordset
IfTrim(txt_user.Text)=""Then
MsgBox"用户名不能为空",vbExclamation+vbOKOnly,"没有这个用户"
txt_user.SetFocus
Else
sql="select*fromOperatorwhereoperator_name='"&txt_user.Text&"'"
rst_login.Opensql,cnn,adOpenKeyset,adLockPessimistic
Ifrst_login.EOF=TrueThen
MsgBox"没有这个用户",vbExclamation+vbOKOnly,"没有权限"
txt_user.SetFocus
Else
IfTrim(rst_login.Fields("Password").Value)=Trim(txt_password.Text)Then
rst_login.Close
MsgBox"恭喜,您可以开始修改密码!
新密码的长度不能低于六位,建议您使用数字和字母的组合。
",vbInformation,""
txt_newpass1.SetFocus
cmd_yes.Enabled=True
Else
MsgBox"密码不正确",vbExclamation+vbOKOnly,""
txt_password.Text=""
txt_password.SetFocus
EndIf
EndIf
EndIf
EndSub
PrivateSubcmd_yes_Click()
Dimsql1AsString
Dimrst_psdAsNewADODB.Recordset'新密码不能为空
Iftxt_newpass1.Text=""Then
MsgBox"密码不能为空",vbInformation,"密码不能为空"
txt_newpass1.SetFocus
Else
Iftxt_newpass1.T