学生管理系统修改后.docx
《学生管理系统修改后.docx》由会员分享,可在线阅读,更多相关《学生管理系统修改后.docx(117页珍藏版)》请在冰豆网上搜索。
学生管理系统修改后
学生信息管理系统(MicrosoftSQLSERVER)
一、前言
学生信息管理系统是典型的信息管理系统(MIS),其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面.对于前者要求建立数据一致性和完整性强,数据安全性好的数据库.而对于后者则要求应用程序功能完备,易使用等特点.
学生信息管理系统主要功能有学生学籍管理、成绩管理、班级管理、课程管理。
学生学籍管理主要有添加新学生学籍;学生学籍修改;学生学籍删除。
成绩管理包括成绩录入、成绩查询、成绩删除。
班级管理包括添加班级、修改班级。
课程管理包括设置课程、添加课程、修改课程。
同时系统采用分级使用,即分管理者和普通用户两个级别,管理者具有所有功能,普通用户即有部分功能将限制使用。
系统开发采用Microsoft公司的VisualBasic6.0,利用其强大的可视化界面功能及对数据库的支持。
系统中大量采用SQL查询语句,界面友好,功能较强。
采用MicrosoftSQLSERVER系统作为数据库,速度较快,数据能共享,能较好地解决访问速度及数据共享的问题。
二系统功能描述
本系统的主要任务是实现对学校的学生学籍管理、成绩管理、班级管理、课程管理。
系统采用分级使用其主要功能包括:
1. 学生学藉管理功能
● 添加新学生学籍。
添加新生的具体数据,主要有学号、姓名、性别、班号、联系电话、入学时间等详细信息。
● 修改学籍。
将已经入库的学籍信息进行修改、更新、删除(需要管理员权限)。
● 删除学籍。
删除已经入库的学籍信息(需要管理员权限)。
● 查询学籍。
根据学号、姓名、或班级进行党籍信息查询。
2.班级管理功能
● 添加班级。
添加班号、年级、班主任及教室等内容(需要管理员权限)。
● 修改班级。
修改、更新、删除已经入库的班级内容(需要管理员权限)。
3. 成绩管理功能
● 添加成绩。
主要内容为考试编号、班号、学号、姓名、课程及分数(需要管理员权限)。
● 修改成绩。
修改、更新、删除已经入库成绩单(需要管理员权限)。
● 查询成绩。
按条件进行成绩查询。
4. 课程管理功能
● 课程设置。
为每个年级进行课程安排。
(需要管理员权限)。
● 添加课程。
录入课程名称、课程编号、课程类型等信息。
(需要管理员权限)。
● 修改课程。
修改、更新、删除已经入库的课程信息。
(需要管理员权限)。
三、
1、数据库概念结构设计
根据以上分析规划出的实体有:
用户信息实体(user_info)、学生学籍信息实体(student_Info)、成绩信息实体(result_Info)、班级课程实体(gradecourse_Info)、课程实体(course_Info)及班级实体(class_Info)。
图1-1用户实体E-R
学生学籍
图1-2学生学籍信息实体E-R
成绩
图1-3成绩信息实体E-R
图1-4班级课程实体E-R
图1-5课程实体E-R
图1-6班级实体E-R
2、数据库逻辑结构设计
表2-1用户表user_Info
列名
数据类型
可否为空
说明
用户名
Char(12)
NOTNULL
主键
用户密码
Char(8)
NOTNULL
用户类型
Char
NULL
表2-2学生学籍表student_Info
列名
数据类型
可否为空
说明
学号
Int(10)
NOTNULL
主键
姓名
Cha(8)
NOTNULL
性别
Char
(1)
NOTNULL
出生日期
Datetime(8)
NULL
班级号
Int(7)
NULL
联系电话
Char(11)
NULL
入校日期
Datetime(8)
NULL
联系地址
Varchar(20)
NULL
学生备注
Varchar
NULL
表2-3成绩表(result_Info)
列名
数据类型
可否为空
说明
学号
Int(10)
NOTNULL
主键
姓名
Char(8)
NOTNULL
课程编号
Int(6)
NOTNULL
主键
课程名称
Char(20)
NULL
学分
INT
NULL
表2-4班级课程表(gradecourse_Info)
列名
数据类型
可否为空
说明
年级编号
Char(8)
NOTNULL
主键
课程名称
Char(20)
NOTNULL
授课老师
Char(8)
NOTNULL
表2-5课程表(course_Info)
列名
数据类型
可否为空
说明
课程号
Int(6)
NOTNULL
主键
课程
Char(20)
NULL
课程类型
Char
NULL
表2-6班级表(class_Info)
列名
数据类型
可否为空
说明
班号
Int()
NOTNULL
主键
年级
char
NULL
班主任
char
NULL
教室
char
NULL
班级人数
INT
NULL
四、数据库结构的实现
经过前面的需求分析和概念结构设计以后,得到数据库的逻辑结构。
现在就可以在SQLServer2000数据库系统中实现该逻辑结构。
这是利用SQLServer2000数据库系统中的SQL查询分析器实现的。
下面给出创建这些表格的SQL语句。
1、创建用户表
CREATETABLE[dbo].[用户表](
[用户名][char](12)COLLATEChinese_PRC_CI_ASNOTNULL,
[用户密码][int]NOTNULL,
[用户类型][char](10)COLLATEChinese_PRC_CI_ASNULL,
CONSTRAINT[PK_用户表]PRIMARYKEYCLUSTERED
([用户名]ASC
)WITH(IGNORE_DUP_KEY=OFF)ON[PRIMARY]
)ON[PRIMARY]
2、创建学生信息表
CREATETABLE[dbo].[学生学籍表](
[学号][char](11)COLLATEChinese_PRC_CI_ASNOTNULL,
[姓名][char](8)COLLATEChinese_PRC_CI_ASNOTNULL,
[性别][char]
(2)COLLATEChinese_PRC_CI_ASNOTNULL,
[出生日期][datetime]NULL,
[班级号][int]NULL,
[联系电话][char](11)COLLATEChinese_PRC_CI_ASNULL,
[入校日期][datetime]NULL,
[联系地址][char](20)COLLATEChinese_PRC_CI_ASNULL,
[学生备注][varbinary](50)NULL,
CONSTRAINT[PK_学生学籍表]PRIMARYKEYCLUSTERED
(
[学号]ASC
)WITH(IGNORE_DUP_KEY=OFF)ON[PRIMARY]
)ON[PRIMARY]
3、创建成绩表
USE[学生管理系统]
GO
/******对象:
Table[dbo].[成绩表]脚本日期:
01/01/200602:
32:
41******/
SETANSI_NULLSON
GO
SETQUOTED_IDENTIFIERON
GO
SETANSI_PADDINGON
GO
CREATETABLE[dbo].[成绩表](
[学号][char](11)COLLATEChinese_PRC_CI_ASNOTNULL,
[班号][nchar](5)COLLATEChinese_PRC_CI_ASNULL,
[课程名][varchar](20)COLLATEChinese_PRC_CI_ASNULL,
[姓名][varchar](12)COLLATEChinese_PRC_CI_ASNOTNULL,
[课程编号][char](10)COLLATEChinese_PRC_CI_ASNOTNULL,
[学分][tinyint]NOTNULL,
CONSTRAINT[PK_成绩表]PRIMARYKEYCLUSTERED
(
[学号]ASC,
[课程编号]ASC
)WITH(IGNORE_DUP_KEY=OFF)ON[PRIMARY]
)ON[PRIMARY]
4、创建年级课程表
CREATETABLE[dbo].[gradecourse_Info](
[年级][char](10)COLLATEChinese_PRC_CI_ASNULL,
[课程名][char](10)COLLATEChinese_PRC_CI_ASNULL
)ON[PRIMARY]
5、创建课程表
USE[学生管理系统]
GO
/******对象:
Table[dbo].[课程表]脚本日期:
01/01/200600:
43:
35******/
SETANSI_NULLSON
GO
SETQUOTED_IDENTIFIERON
GO
SETANSI_PADDINGON
GO
CREATETABLE[dbo].[课程表](
[课程号][char](9)COLLATEChinese_PRC_CI_ASNOTNULL,
[课程名][varchar](20)COLLATEChinese_PRC_CI_ASNULL,
[课程类型][varchar](20)COLLATEChinese_PRC_CI_ASNULL
)ON[PRIMARY]
GO
SETANSI_PADDINGOFF
6、创建班级表
USE[学生管理系统]
GO
/******对象:
Table[dbo].[班级表]脚本日期:
01/01/200601:
00:
48******/
SETANSI_NULLSON
GO
SETQUOTED_IDENTIFIERON
GO
SETANSI_PADDINGON
GO
CREATETABLE[dbo].[班级表](
[班级号][char](20)COLLATEChinese_PRC_CI_ASNULL,
[年级][varchar](20)COLLATEChinese_PRC_CI_ASNULL,
[班主任][varchar](12)COLLATEChinese_PRC_CI_ASNULL,
[教室][varchar](12)COLLATEChinese_PRC_CI_ASNULL,
[班级人数][char](10)COLLATEChinese_PRC_CI_ASNULL
)ON[PRIMARY]
GO
SETANSI_PADDINGOFF
五、学生信息管理系统主窗体的创建
上面的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:
createt