数据库技术与应用课程设计成绩管理系统.docx

上传人:b****8 文档编号:10935487 上传时间:2023-02-23 格式:DOCX 页数:44 大小:231.63KB
下载 相关 举报
数据库技术与应用课程设计成绩管理系统.docx_第1页
第1页 / 共44页
数据库技术与应用课程设计成绩管理系统.docx_第2页
第2页 / 共44页
数据库技术与应用课程设计成绩管理系统.docx_第3页
第3页 / 共44页
数据库技术与应用课程设计成绩管理系统.docx_第4页
第4页 / 共44页
数据库技术与应用课程设计成绩管理系统.docx_第5页
第5页 / 共44页
点击查看更多>>
下载资源
资源描述

数据库技术与应用课程设计成绩管理系统.docx

《数据库技术与应用课程设计成绩管理系统.docx》由会员分享,可在线阅读,更多相关《数据库技术与应用课程设计成绩管理系统.docx(44页珍藏版)》请在冰豆网上搜索。

数据库技术与应用课程设计成绩管理系统.docx

数据库技术与应用课程设计成绩管理系统

中国矿业大学环境与测绘学院

数据库技术与应用课程实践

 

第一章系统分析与设计…………………………………………………………………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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 农学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1