MicrosoftSQLSERVER学生信息管理系统数据库设计示例doc.docx
《MicrosoftSQLSERVER学生信息管理系统数据库设计示例doc.docx》由会员分享,可在线阅读,更多相关《MicrosoftSQLSERVER学生信息管理系统数据库设计示例doc.docx(94页珍藏版)》请在冰豆网上搜索。
MicrosoftSQLSERVER学生信息管理系统数据库设计示例doc
学生信息管理系统(MicrosoftSQLSERVER)数据库设计示例
一、前言
随着我国教育产业化的飞速发展,社会对教育水平和教学管理软硬件的要求日益提高,尤其是学校对学生管理能够具有一整套完善的教学管理软件提出了更多的要求。
为了适应这种形式,教育系统尤其不仅首先要有坚实的硬件基础,还要有一整套完善的教学管理软件管理系统。
而要实现这一功能,就要求学校管理者配备一套高效的教育管理网络系统,以便在学校内实施良好的一整套完善的管理且以最快地速度响应教师和学生的需求,及时为他们提供服务,为他们提供一个高效、便捷的环境。
学生管理信息系统(MIS)是校园网络中一个重要的应用系统,它大大了改善学校教学、科研与管理的基础环境,在一定程度上反映出学校管理现代化的水平。
学生信息管理系统是典型的信息管理系统(MIS),其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面.对于前者要求建立数据一致性和完整性强,数据安全性好的数据库.而对于后者则要求应用程序功能完备,易使用等特点.
学生信息管理系统主要功能有学生学籍管理、成绩管理、班级管理、课程管理。
学生学籍管理主要有添加新学生学籍;学生学籍修改;学生学籍删除。
成绩管理包括成绩录入、成绩查询、成绩删除。
班级管理包括添加班级、修改班级。
课程管理包括设置课程、添加课程、修改课程。
同时系统采用分级使用,即分管理者和普通用户两个级别,管理者具有所有功能,普通用户即有部分功能将限制使用。
系统开发采用Microsoft公司的VisualBasic6.0,利用其强大的可视化界面功能及对数据库的支持。
系统中大量采用SQL查询语句,界面友好,功能较强。
采用MicrosoftSQLSERVER系统作为数据库,速度较快,数据能共享,能较好地解决访问速度及数据共享的问题。
二系统功能描述
本系统的主要任务是实现对学校的学生学籍管理、成绩管理、班级管理、课程管理。
系统采用分级使用其主要功能包括:
1. 学生学藉管理功能
添加新学生学籍。
添加新生的具体数据,主要有学号、姓名、性别、班号、联系电话、入学时间等详细信息。
修改学籍。
将已经入库的学籍信息进行修改、更新、删除(需要管理员权限)。
删除学籍。
删除已经入库的学籍信息(需要管理员权限)。
查询学籍。
根据学号、姓名、或班级进行党籍信息查询。
2.班级管理功能
添加班级。
添加班号、年级、班主任及教室等内容(需要管理员权限)。
修改班级。
修改、更新、删除已经入库的班级内容(需要管理员权限)。
3. 成绩管理功能
添加成绩。
主要内容为考试编号、班号、学号、姓名、课程及分数(需要管理员权限)。
修改成绩。
修改、更新、删除已经入库成绩单(需要管理员权限)。
查询成绩。
按条件进行成绩查询。
4. 课程管理功能
课程设置。
为每个年级进行课程安排。
(需要管理员权限)。
添加课程。
录入课程名称、课程编号、课程类型等信息。
(需要管理员权限)。
修改课程。
修改、更新、删除已经入库的课程信息。
(需要管理员权限)。
三、1、数据库概念结构设计
根据以上分析规划出的实体有:
用户信息实体(user_info)、学生学籍信息实体(student_Info)、成绩信息实体(result_Info)、班级课程实体(gradecourse_Info)、课程实体(course_Info)及班级实体(class_Info)。
用户实体E-R图
学生学籍信息实体E-R图
成绩信息实体E-R图
班级课程实体E-R图
课程实体E-R图
班级实体E-R图
2、数据库逻辑结构设计
(1)用户表user_Info
列名
数据类型
可否为空
说明
user_ID
char
NOTNULL
用户名
user_PWD
char
NULL
用户密码
user_Des
char
NULL
用户类型
(2)学生学籍表student_Info
列名
数据类型
可否为空
说明
student_ID
int
NOTNULL
主键
student_Name
char
NULL
学生名称
student_Sex
char
NULL
性别
born_Date
datetime
NULL
出生日期
class_NO
int
NULL
班级号
tele_Number
char
NULL
联系电话
ru_Date
datetime
NULL
入校日期
address
varchar
NULL
联系地址
comment
varchar
NULL
学生备注
(3)成绩表(result_Info)
列名
数据类型
可否为空
说明
exam_No
char
NOTNULL
考试编号
student_ID
int
NOTNULL
学号
student_Name
char
NULL
学生姓名
class_No
int
NULL
班号
course_Name
char
NULL
课程名
result
float
NULL
分数
(4)班级课程表(gradecourse_Info)
列名
数据类型
可否为空
说明
grade
char
NULL
年级
course_Name
char
NULL
课程名
(5)课程表(course_Info)
列名
数据类型
可否为空
说明
course_No
int
NOTNULL
课程号
course_Name
char
NULL
课程名
course_Type
char
NULL
课程类型
course_Des
char
NULL
课程描述
(6)班级表(class_Info)
列名
数据类型
可否为空
说明
class_No
int
NOTNULL
班号
grade
char
NULL
年级
director
char
NULL
班主任
classroom_No
char
NULL
教室
四、数据库结构的实现
经过前面的需求分析和概念结构设计以后,得到数据库的逻辑结构。
现在就可以在SQLServer2000数据库系统中实现该逻辑结构。
这是利用SQLServer2000数据库系统中的SQL查询分析器实现的。
下面给出创建这些表格的SQL语句。
1、创建用户表
CREATETABLE[dbo].[user_Info](
[user_ID][char](10)COLLATEChinese_PRC_CI_ASNOTNULL,
[user_PWD][char](10)COLLATEChinese_PRC_CI_ASNULL,
[user_Des][char](10)COLLATEChinese_PRC_CI_ASNULL
)ON[PRIMARY]
GO
2、创建学生信息表
CREATETABLE[dbo].[student_Info](
[student_ID][int]NOTNULL,
[student_Name][char](10)COLLATEChinese_PRC_CI_ASNULL,
[student_Sex][char]
(2)COLLATEChinese_PRC_CI_ASNULL,
[born_Date][datetime]NULL,
[class_NO][int]NULL,
[tele_Number][char](10)COLLATEChinese_PRC_CI_ASNULL,
[ru_Date][datetime]NULL,
[address][varchar](50)COLLATEChinese_PRC_CI_ASNULL,
[comment][varchar](200)COLLATEChinese_PRC_CI_ASNULL
)ON[PRIMARY]
3、创建成绩表
CREATETABLE[dbo].[result_Info](
[exam_No][char](10)COLLATEChinese_PRC_CI_ASNOTNULL,
[student_ID][int]NOTNULL,
[student_Name][char](10)COLLATEChinese_PRC_CI_ASNULL,
[class_No][int]NULL,
[course_Name][char](10)COLLATEChinese_PRC_CI_ASNULL,
[result][float]NULL
)ON[PRIMARY]
4、创建年级课程表
CREATETABLE[dbo].[gradecourse_Info](
[grade][char](10)COLLATEChinese_PRC_CI_ASNULL,
[course_Name][char](10)COLLATEChinese_PRC_CI_ASNULL
)ON[PRIMARY]
5、创建课程表
CREATETABLE[dbo].[course_Info](
[course_No][int]NOTNULL,
[course_Name][char](10)COLLATEChinese_PRC_CI_ASNULL,
[course_Type][char](10)COLLATEChinese_PRC_CI_ASNULL,
[course_Des][char](50)COLLATEChinese_PRC_CI_ASNULL
)ON[PRIMARY]
6、创建班级表
CREATETABLE[dbo].[class_Info](
[class_No][int]NOTNULL,
[grade][char](10)COLLATEChinese_PRC_CI_ASNULL,
[director][char](10)COLLATEChinese_PRC_CI_ASNULL,
[classroom_No][char](10)COLLATEChinese_PRC_CI_ASNULL
)ON[PRIMARY]
五、学生信息管理系统主窗体的创建
上面的SQL语句在SQLServer2000中查询分析器的执行,将自动产生需要的所有表格。
有关数据库结构的所有后台工作已经完成。
现在将通过航空公司管理信息系统中各个功能模块的实现,讲解如何使用VisualBasic来编写数据库系统的客户端程序。
1、创建公用模块
在VisualBasic中可以用公用模块来存放整个工程项目公用的函数、过程和全局变量等。
这样可以极大地提高代码的效率。
在项目资源管理器中为项目添加一个Module,保存为Module1.bas。
下面就可以开始添加需要的代码了。
由于系统中各个功能模块都将频繁使用数据库中的各种数据,因此需要一个公共的数据操作函数,用以执行各种SQL语句。
添加函数ExecuteSQL,代码如下:
'...............................
PublicDeclareFunctionShellExecuteLib"shell32.dll"Alias"ShellExecuteA"(ByValhWndAsLong,ByVallpOperationAsString,ByVallpFileAsString,ByVallpParametersAsString,ByVallpDirectoryAsString,ByValnShowCmdAsLong)AsLong
PublicDeclareFunctionGetWindowLongLib"user32"Alias"GetWindowLongA"(ByValhWndAsLong,ByValnIndexAsLong)AsLong
PublicDeclareFunctionSetWindowLongLib"user32"Alias"SetWindowLongA"(ByValhWndAsLong,ByValnIndexAsLong,ByValdwNewLongAsLong)AsLong
PublicDeclareFunctionSetLayeredWindowAttributesLib"user32"(ByValhWndAsLong,ByValcrKeyAsLong,ByValbAlphaAsByte,ByValdwFlagsAsLong)AsLong
PublicfMainFormAsfrmMain
PublicUserNameAsString
PublicmnUserTypeAsBoolean'判断用户类型
SubMain()
DimfLoginAsNewfrmLogin
fLogin.ShowvbModal
IfNotfLogin.OKThen
'LoginFailedsoexitapp
End
EndIf
UnloadfLogin
SetfMainForm=NewfrmMain
fMainForm.Show
EndSub
PublicFunctionConnectString()_
AsString
'returnsaDBConnectString
ConnectString="Driver={SQLServer};Server=ABS;Database=student;Uid=sa;Pwd=abs;"
'ConnectString="Provider=SQLOLEDB.1;Password=abs;PersistSecurityInfo=True;UserID=sa;InitialCatalog=student;DataSource=ABS"
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.CursorLocation=adUseClient
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、创建主窗体
这个项目我们使用多文档界面,单击工具栏中的ADDMDIForm按钮,产生一个窗体frmmain.
代码如下:
'...............................
PrivateSubis_usertype()
IfmnUserType=FalseThen
frmsjm.cmdaddsj.Enabled=False
frmsjm.cmdmodsj.Enabled=False
frmbjm.cmdaddbj.Enabled=False
frmbjm.cmdmodbj.Enabled=False
frmkcmod.cmdaddkc.Enabled=False
frmkcmod.cmdmodkc.Enabled=False
frmkcmod.cmdfindkc.Enabled=False
frmcjmod.cmdaddcj.Enabled=False
frmcjmod.cmdmodcj.Enabled=False
frmsjm.cmdaddsj.Enabled=False
frmsjm.cmdmodsj.Enabled=False
frmsys.cmdaddsys.Enabled=False
mnuadduser.Enabled=False
EndIf
EndSub
PrivateSubbjIMG_Click()
frmsjm.Hide
frmkcmod.Hide
frmcjmod.Hide
frmbjm.Show
EndSub
PrivateSubcjIMG_Click()
frmsjm.Hide
frmkcmod.Hide
frmbjm.Hide
frmcjmod.Show
EndSub
PrivateSubexitIMG_Click()
End
EndSub
PrivateSubImgHelp_Click()
frmhelp.Show
EndSub
PrivateSubkcIMG_Click()
frmsjm.Hide
frmbjm.Hide
frmcjmod.Hide
frmkcmod.Show
EndSub
PrivateSubMDIForm_Load()
Me.Caption="学生信息管理系统,操作员["&UserName&"]"
Loadfrmbjm
Loadfrmkcmod
Loadfrmcjmod
Callis_usertype
EndSub
PrivateSubMenuHelp_Click(IndexAsInteger)
frmhelp.Show
EndSub
PrivateSubmnuadduser_Click()
frmAdduser.Show
EndSub
PrivateSubmnuExit_Click()
End
EndSub
PrivateSubmnupsw_Click()
frmModifyuserinfo.Show
EndSub
PrivateSubsysIMG_Click()
frmsys.Show
EndSub
PrivateSubxjIMG_Click()
frmsjm.Show
frmbjm.Hide
frmkcmod.Hide
frmcjmod.Hide
EndSub
3创建frmLogin窗体
代码如下:
OptionExplicit
PrivateDeclareFunctionGetUserNameLib"advapi32.dll"Alias"GetUserNameA"(ByVallpbufferAsString,nSizeAsLong)AsLong
PrivateConstWS_EX_LAYERED=&H80000
PrivateConstGWL_EXSTYLE=(-20)
PrivateConstLWA_ALPHA=&H2
PrivateConstLWA_COLORKEY=&H1
'表示当前用户登录所选择的身份,即用户类型,0-表示教务管理人员;1-表示学生
DimUserTypeAsInteger
PublicOKAsBoolean
'记录确定次数
DimmiCountAsInteger
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