1、 《数据库系统原理及应用》课程设计 题目: 学生学籍管理信息系统设计及实现 院 系: 基础及信息工程学院 专 业: 计算机科学及技术 姓 名: 年 级 : 指导教师: 摘要 随着信息技术在管理上越来越深入而广泛应用,管理信息系统实施在技术上已逐步成熟。管理信息系统是一个不断发展新型学科,任何一个单位要生存要发展,要高效率地把内部活动有机地组织起来,就必须建立及自身特点相适应管理信息系统,面对大量学生数
2、据、报表,手工处理方式已经很难跟上现代化步伐,随着计算机技术及网络通讯技术飞速发展,许多学校已经有了较好计算机应用甚至网络硬件基础建设。因此为提高学校管理工作现代化、科学化水平,保证信息处理即时化、准确化,开发一套对学生学籍进行管理软件是极其重要。 本文介绍了在Microsoft Visual Basic和Microsoft SQL Server环境下采用“自上而下地总体规划,自下而上地应用开发”策略开发一个管理信息系统过程。通过分析访客管理不足,创建了一套行之有效计算机管理学生方案。文章介绍了访客管理信息系统系统分析部分,包括可行性分析、业务流程分析等;系统设计部分主要介绍了系统功能设计
3、和数据库设计及代码设计。 关键词:SQL Server、Visual Basic 1 设计内容和要求 1.1设计背景 随着我国教育体制改革深入进行,教育系统得到了前所未有发展。学生管理正在逐步迈向管理信息现代化。但是我国学生管理信息化水平还处在初级阶段,主要表现在对学生交费管理、学生档案管理还是采用原有人工管理方式。学校规模不断扩大,学生数量急剧增加,有关学生各种信息量也成倍增长。由于大学生类别和专业设置多样化,大学生学籍管理历来是非常繁琐和复杂工作。面对庞大信息量, 这时人工管理几乎无法实现,在这种情况下用数据库进行管理变尤为必要,这可以发挥计算机优势,就需要有学生信
4、息管理系统来提高学生管理工作效率.通过这样系统,可以做到信息规范管理,科学统计和快速查询,从而减少管理方面工作量和减少人为错误。 1.2开发环境 本学生学籍管理系统(数据库系统)开发及运行环境如下: 开发环境:Windows XP 辅助工具:Microsoft Visual Basic 6.0 中文版 数据库管理系统:SQL Server 运行环境:Windows 2000/XP/2003 1.3内容和要求 1.3.1系统目标设计 (1)使得学生学籍管理工作更加清晰、条理化、自动化。 (2)很容易地完成新生信息输入、老生信息备份、毕业学生信息可以很容易地
5、 保存。 (3)当学生需要查询成绩时,可以很简单地将其需要信息从数据库中查找出来并可以打印查询结果。 (4)随着当今网络技术发展,提供网络在线查询功能,可以为毕业生提供更多就业机会。 1.4编写目 学生信息管理系统开发更方便了老师对学生查询管理,对学生基本情况进行了解,再次添加了对学生考试情况分数管理,这样更好让老师对学生每次考试成绩进行了解比较,了解该学生近期学习情况。同时在有权限老师登录以后可以轻松查询到要找学生具体班级.年所在年级和他们学号,因此而开发此系统是为了老师更好管理。 1.5项目背景 a. 所建议开发软件名称:学生学籍管理系统(
6、student information management system) b. 项目任务提出者:学校. c. 开发者:赵鹏、赵丹、李福灿。 d. 用户:学校、 学生 e. 实现软件单位:计算机基础及信息工程学院。 f. 项目及其他软件或其他系统关系: Student information management system 是一功能比较完善数据管理软件,具有数据操作方便高效迅速等优点。该软件采用功能强大数据库软件开发工具SQL Server 进行开发,具有很好可移植性,可在应用范围较广WINDOWS 系列操作系统上使用。 在学籍管理中,需要从大量日常教学活动中提取相关信息,
7、以反映教学情况。传统手工操作方式,易发生数据丢失,统计错误,劳动强度高,且速度慢。使用计算机可以高速,快捷地完成以上工作。在计算机联网后,数据在网上传递,可以实现数据共享,避免重复劳动,规范教学管理行为,从而提高了管理效率和水平。 学籍管理信息系统以计算机为工具,通过对学生信息管理所需信息管理,把管理人员从繁琐数据计算处理中解脱出来,使其有更多精力从事教务管理政策研究实施,教学计划制定执行和教学质量监督检查,从而全面提高教学质量。 2 需求分析 2.1 需求规定 该系统面向用户有:学校管理人员,普通用户。不同用户可以根据自己权限对系统数据进行相关操作,比如浏览和修改,系统预
8、先定义好各种用户权限。 加入网络模块以后,所有操作都可以通过网络进行。系统要能够抵制来自于网络非法访问甚至攻击。 2.2 系统功能要求 (1)学生学籍录入 可以在开学时候利用某些电子装置批量录入,以节约人员加快速度;当在学期中需要增加或减少学籍记录时,可由系统管理员在得到学校相关人员同意后单独进行操作,要保留操作记录。 (2)学生学籍修改 在得到学校相关人员同意后,由系统管理员修改记录,系统本身要记录该事件并保存原始数据。 (3)学生学籍删除 在得到学校相关人员同意后,由系统管理员删除记录,系统本身要记录该事件并保存原始数据。
9、 (4)学生学籍查询 用户凭用户名和对应密码登陆系统,然后可以根据其权限查看对应相关信息,密码由专门部门负责,系统对每次用户操作数据应该在一定时间段内保留。 系统可以方便进行对学生基本信息进行添加.修改.以及查询。帮助学生对学生考试情况进行更好管理和了解。方便了学生对学生查询管理,更快知道要查询学生在校具体班级.学号.姓名.专业等信息情况。 现在采用手工方式已经无法管理成千上万学生学籍信息,好在我们有计算机系统,它可以代替我们完成这项复杂而又枯燥工作,而且可以保证极好效率和正确性,这是手工作业所无法比及。目前,我国这方面应用还处于起步阶段,大部分学校还在用纸质材料
10、这无疑是一种巨大浪费。因此,这个系统广泛应用将会带来巨大利益,同时,将提高管理人员工作效率和质量。普通人只要学习操作说明,就会使用这个系统。 2.2.1功能要求: 系统管理:添加用户,删除用户,修改密码,重新登录。 学籍管理:档案浏览,档案添加,档案删除,档案查询,档案修改。 课程管理:课程设置,选课设置。 2.3 学生学籍管理信息系统特点 (1)采用 Windows 操作界面,简单易用,用户可以在使用同时获得实时帮助。 (2)采用数据库和程序分开设计方式,他们之间通过驱动程序连接,以使系统达到较高可靠性和扩
11、展性。 (3)如果有需要,可以给系统加上一个网络模块,用户可以远程登陆,然后根据其拥有权限执行相应功能,比如浏览信息或修改信息。 2·4 用户平台要求 系统主要使用于高校局域网,Win98、Win2000 、WinNT等环境下, Vb连接数据库,本系统需要DBMS放入学生学籍数据库。可进行查询,修改、处理等。 3 业务逻辑和数据流图 3·1 数据流图 管理人员 学生学籍管理信息系统 输入 添加用户 删除用户 当前输入 修改密码 学生 重新登录
12、 学生信息 0层数据流图 2处理要求 查询要求 检查有效性 有效管理要求 有效查询要求 3处理查询 学籍管理要求 学生情
13、况 无效输入 当前输入 1层数据流图 档案查询 目录文件 2.1要求处理类型 档案浏览 管理要求 档案添加
14、 档案删除 档案修改 3.2学生信息查询 学生情况 3.1查询类型处理 查询学生情况 数据文件 查询要求 3.3统计处理
15、 学生情况 统计表 2层数据流图 学生档案学籍 学生 地址信息 专业信息 学号 姓名 院系 血型 出生
16、日期 专业 民族 家庭住址 班级 邮编 电话 籍贯 学生学籍管理系统E-R图 4. 数据调查及分析 4·1原始数据 编写说明: 本节描述原始数据调查结果,列出数据清单。 原始数据描述: 数据名称:学生学籍管理信息系统 简述:系统中随时可以查询。 来源:每学期考试完毕由各系录入成绩,然后由教务科收集 去处:学生,老师 组成:存储学生信息档案,学生课程设置等,用于存放学生在校期间有关信息。 登录 成功 选择操作 开始 用户管理 学籍管理 班级管理 退出系统 添
17、加 修改 查询 结束 N Y 4.2 数据字典 4.2.1数据项 数据字典是系统中各类数据描述集合,是进行详细数据收集和数据分析所获得主要成果,数据字典是对系统所用到所有表结构描述,学籍管理主要数据见下表。 专业信息表 学期信息表 学生信息表 学生成绩 、 班级课程 课程设计 5 概念结构设计 概念结构设计是整个数据库设计关键,它通过对用户需求进行综合、归纳及抽象,形成独立于具体DBMS概念模型。 5.1数据流图 数据流图表达了数据和处理关系,根据用户需求分析和高校学籍管理系统需求,得出如下图1-1
18、所示学籍管理数据流图。 学生信息管理系统 学籍管理功能 课程管理功能 成绩管理功能 学籍添加 学籍修改 学籍查询 课程添加 课程修改 课程查询 成绩添加 成绩修改 成绩查询 系统功能模块设计图如图所示 5.2 系统E-R图 对于学生信息管理,我们可以将学生实体抽象出来,学生属于学院可以将学院作为一个实体,学生所属专业和毕业信息都将可以作为一个实体。 学生实体E-R图 专业实体E-R图 在学生信息管理中存在这样关系:选择(一个学生只能选择一个专业,而一个专业可以供多个学生选择,故是多对一关系)、学习(一个学生只能在一个院系学习
19、而一个院系可以供多个学生学习,故是多对一关系)。 学生关系E-R图 老师关系E-R图 对于学生学籍管理信息管理,我们可以将课程实体抽象出来。 课程实体E-R图 在信息管理中存在这样关系:毕业(一个学生拥有一个毕业信息,而一个毕业信息只属于一个学生,故是一对一关系)、选修(一个学生可以选修多门课程,而一门课程可以被多个学生选修,故是多对多关系)、开设(一个专业可以开设多门课程,而一门课程可以被多个专业选择,故是多对多关系)、授课(一门课程可以被多个老师讲授,而一个老师可以讲授多门课程,故是多对多关系)。 选修管理关系E-R图 以上是本系
20、统中基本实体和关系,本系统是将其分步找出来加以描述。 5.3 ado 链接技术 代码实现: Public txtsql As String Public username As String Public qxstr As String Public qxstra As String '执行相应SQL命令 Public Function ExecuteSQL(ByVal sql As String) As ADODB.Recordset Dim mycon As ADODB.Connection Dim rst As ADODB.Recordset
21、 Set mycon = New ADODB.Connection mycon.ConnectionString = connstring mycon.Open Dim stokens() As String On Error GoTo exectuesql_error stokens = Split(sql) If InStr("INSERT,DELETE,UPDATE", UCase(stokens(0))) Then mycon.Execute sql Else Set rst
22、 New ADODB.Recordset rst.Open Trim(sql), mycon, adOpenKeyset, adLockOptimistic Set ExecuteSQL = rst End If exectuesql_exit: Set rst = Nothing Set mycon = Nothing Exit Function exectuesql_error: Resume exectuesql_exit End Function '连接字符串,用户可以根据自己数据库进行
23、修改相应参数 Public Function connstring() As String connstring = "Provider=SQLOLEDB.1;Persist Security Info=False;UID=sa;PWD=;Initial Catalog=StuMIS;Data Source=(local)" End Function '检查用户权限 Public Function Executeqx(ByVal txt As String) As String Dim sql As String Dim mycon As ADODB.
24、Connection Dim rst As ADODB.Recordset Set mycon = New ADODB.Connection mycon.ConnectionString = connstring mycon.Open Set rst = New ADODB.Recordset sql = "select 标识 from 用户 where 用户名='" & username & "'" rst.Open Trim(sql), mycon, adOpenKeyset, adLockOptimistic
25、 If rst.EOF = True Then MsgBox "非法用户!", vbExclamation + vbOKOnly, "警告" Executeqx = "nothing" Exit Function End If If rst.Fields(0) = "1" Then Executeqx = "admin" Exit Function End If If rst.Fields(0) = "0" Then Executeqx = "re
26、adonly" Exit Function End If On Error GoTo exectuesql_error exectuesql_exit: Set rst = Nothing Set mycon = Nothing Exit Function exectuesql_error: Resume exectuesql_exit End Function 5.4 概念模型 概念模型是在对用户需求分析之后,通过画出本系统抽象出E-R图,由概念模型辅助工具Visual Basic进行设计,通过
27、具体地设置和绘图,最后就形成了如下所示概念模型图,生成概念结构就能真实、充分地反映现实世界,包括事物和事物之间联系,能满足用户对数据处理要求,是对现实世界一个真实模型。 6 逻辑结构设计 逻辑结构设计就是把概念结构设计阶段设计好基本E-R图转换为及选用DBMS产品所支持数据模型相符合逻辑结构。 设计逻辑结构一般分为3步进行: (1)将概念结构转换为一般关系、网状、层次模型; (2)将转换来关系、网状、层次模型向特定DBMS支持下数据模型转换; (3)对数据模型进行优化。 6.1 关系模型 将E-R图转换为关系模型实际上就是要奖实体型、实体属性和实体型之间联系转换为关系模式,这种
28、转换一般遵循如下原则:一个实体型转换为一个关系模式。实体属性就是关系属性,实体码就是关系码。对于实体型间联系则有以下不同情况: (1)一个1:1联系可以转换为一个独立关系模式,也可以及任意一端对应关系模式合并。如果转换为一个独立关系模式,则及该联系相连个实体码以及联系本身属性均转换为关系属性,每个实体码均是该关系侯选码。如果及某一端实体对应关系模式合并,则需要在关系模式属性中加入另一个关系模式码和联系本身属性。 (2)一个1:n联系可以转换为一个独立关系模式,也可以及n端对应关系模式合并。如果转换为一个独立关系模式,则及该联系相连个各实体码以及联系本身属性均转换为关系属性,而关系码为n端实
29、体码。 (3)一个m:n联系转换为一个关系模式。及该联系相连个实体码以及联系本身属性均转换为关系属性,各实体码组成关系码或关系码一部分。 (4)3个或3个以上实体间一个多元联系可以转换为一个关系模式。及该多元联系相连各实体码以及联系本身属性均转换为关系属性,各实体码组成关系码或关系码一部分。 (5)具有相同码关系模式可合并。 将概念结构设计阶段设计好基本E-R图转换为关系模型,如下所示: n 学生(学号,专业号,院系号,姓名,性别,出生日期,入学时间,政治面貌,家庭住址,籍贯,邮政编码,民族),此为学生实体对应关系模式。 n 课程(课程号,课程名,学分),此为课程实体对应关系模式。
30、 n 开设(专业号,课程号),此为专业开设课程关系对应关系模式。 7 物理结构设计及功能实现 7.1 物理结构设计 数据库物理设计就是为一个给定逻辑数据模型选取一个最适合应用要求物理结构过程。物理结构设计阶段实现是数据库系统内模式,它质量直接决定了整个系统性能。因此在确定数据库存储结构和存取方法之前,对数据库系统所支持事务要进行仔细分析,获得优化数据库物理设计参数 数据库物理设计通常分为两步: (1)确定数据库物理结构,在关系数据库中主要指存取方法和存取结构; (2)对物理结构进行评价,评价重点是时间和空间效率。 7.1.1 确定数据库存储结构 由于本系统数据库建立
31、不是很大,所以数据存储采用是一个磁盘一个分区。 7.1.2 存取方法和优化方法 存取方法是快速存取数据库中数据技术。数据库管理系统一般都是提供多种存取方法。常用存取方法有三类。第一类是索引方法,目前主要是B+树索引方法;第二类是聚簇方法;第三类是HASH方法。数据库索引类似书目录。在书中,目录允许用户不必浏览全书就能迅速地找到所需要位置。在数据库中,索引也允许应用程序迅速找到表中数据,而不必扫描整个数据库。在书中,目录就是内容和相应页号清单。在数据库中,索引就是表中数据和相应存储位置列表。使用索引可以大大减少数据查询时间。 但需要注意是索引虽然能加速查询速度,但是为数据库中每张表都设
32、置大量索引并不是一个明智做法。这是因为增加索引也有其不利一面:首先,每个索引都将占用一定存储空间,如果建立聚簇索引(会改变数据物理存储位置一种索引),占用需要空间就会更大;其次,当对表中数据进行增加、删除和修改时候,索引也要动态地维护,这样就降低了数据更新速度。 7.2 功能实现 完成数据库物理设计之后,设计人员就要用RDBMS提供数据定义语言和其他实用程序将数据库逻辑设计和物理设计结果严格描述出来,成为DBMS可以接受源代码,再经过调试产生目标模式。然后就可以组织数据入库,最后就在此基础上编写各个表相关触发器和存储过程。 7.2.1 触发器 触发器是用户定义在关系表上一类由事件驱动特
33、殊过程。一旦定义,任何用户对表增、删、改操作均由服务器自动激活相应触发器,在DBMS核心层进行集中完整性控制。由于本系统触发器比较多,在这里我只写出了其中一部分触发器。 主窗体 代码实现: Private Sub bjcx_Click(Index As Integer) If qxstra = "0" Then MsgBox " 你没有权限进行操作!", vbExclamation + vbOKOnly, "警告" Exit Sub End If 班级查询.Show End Sub Private Sub bjkcsz_Click(Index
34、 As Integer) If qxstra = "0" Then MsgBox " 你没有权限进行操作!", vbExclamation + vbOKOnly, "警告" Exit Sub End If 课程设置.Show End Sub Private Sub bjll_Click(Index As Integer) 班级浏览.Show End Sub Private Sub bjsc_Click(Index As Integer) If qxstra = "0" Then MsgBox " 你没有权限进行操作!", vbExclamation + vbOKOnly
35、 "警告" Exit Sub End If 班级删除.Show End Sub Private Sub bjtj_Click(Index As Integer) If qxstra = "0" Then MsgBox " 你没有权限进行操作!", vbExclamation + vbOKOnly, "警告" Exit Sub End If 班级添加.Show End Sub Private Sub cjll_Click(Index As Integer) 成绩浏览.Show End Sub Private Sub cjsc_Click(Index As In
36、teger) If qxstra = "0" Then MsgBox " 你没有权限进行操作!", vbExclamation + vbOKOnly, "警告" Exit Sub End If 成绩删除.Show End Sub Private Sub cjtj_Click(Index As Integer) If qxstra = "0" Then MsgBox " 你没有权限进行操作!", vbExclamation + vbOKOnly, "警告" Exit Sub End If 成绩添加.Show End Sub Private Sub cjxg_Click
37、Index As Integer) If qxstra = "0" Then MsgBox " 你没有权限进行操作!", vbExclamation + vbOKOnly, "警告" Exit Sub End If 成绩修改.Show End Sub Private Sub cxdl_Click(Index As Integer) 登录窗口.Show Unload Me End Sub Private Sub dacx_Click(Index As Integer) If qxstra = "0" Then MsgBox " 你没有权限进行操作!", vbExcla
38、mation + vbOKOnly, "警告" Exit Sub End If 档案查询.Show End Sub Private Sub dall_Click(Index As Integer) 档案浏览.Show End Sub Private Sub dasc_Click(Index As Integer) If qxstra = "0" Then MsgBox " 你没有权限进行操作!", vbExclamation + vbOKOnly, "警告" Exit Sub End If 档案删除.Show End Sub Private Sub datj_Cl
39、ick(Index As Integer) If qxstra = "0" Then MsgBox " 你没有权限进行操作!", vbExclamation + vbOKOnly, "警告" Exit Sub End If 档案添加.Show End Sub Private Sub daxg_Click(Index As Integer) If qxstra = "0" Then MsgBox " 你没有权限进行操作!", vbExclamation + vbOKOnly, "警告" Exit Sub End If 档案修改.Show End Sub Private
40、 Sub kcsz_Click(Index As Integer) If qxstra = "0" Then MsgBox " 你没有权限进行操作!", vbExclamation + vbOKOnly, "警告" Exit Sub End If 课程设置.Show End Sub Private Sub Picture1_Click() End Sub Private Sub scyh_Click(Index As Integer) If qxstra = "0" Then MsgBox " 你没有权限进行操作!", vbExclamation + vbOKOnly,
41、"警告" Exit Sub End If 删除用户.Show End Sub Private Sub tc_Click(Index As Integer) Unload Me End Sub Private Sub tjyh_Click(Index As Integer) If qxstra = "0" Then MsgBox " 你没有权限进行操作!", vbExclamation + vbOKOnly, "警告" Exit Sub End If 添加用户.Show End Sub Private Sub xgmm_Click(Index As Integer)
42、 修改密码.Show End Sub Private Sub xksz_Click() If qxstra = "0" Then MsgBox " 你没有权限进行操作!", vbExclamation + vbOKOnly, "警告" Exit Sub End If 选课设置.Show End Sub Private Sub xqsz_Click(Index As Integer) If qxstra = "0" Then MsgBox " 你没有权限进行操作!", vbExclamation + vbOKOnly, "警告" Exit Sub End If 学期
43、设置.Show End Sub Private Sub yxsz_Click(Index As Integer) If qxstra = "0" Then MsgBox " 你没有权限进行操作!", vbExclamation + vbOKOnly, "警告" Exit Sub End If 院系设置.Show End Sub Private Sub zysz_Click(Index As Integer) If qxstra = "0" Then MsgBox " 你没有权限进行操作!", vbExclamation + vbOKOnly, Exit Sub End
44、If 专业设置.Show End Sub (1)数据更新 CREATE TRIGGER scupdate ON dbo.student //建立学生信息表更新触发器 FOR UPDATE AS UPDATE SC //更新学生选课表SC SET SNO = (SELECT SNO FROM INSERTED) //将SC表中学号改成学生表改后 WHERE SNO = (SELECT SNO FROM DELETED); //更改对应学生学号 CREATE TRIGGER graduateupdate ON dbo.student //建立学生信息表更新触发器 FOR
45、 UPDATE AS UPDATE GRADUATE //更新学生毕业信息表GRADUATE SET SNO = (SELECT SNO FROM INSERTED) //将GRADUATE表中学号改成学生表修改后 WHERE SNO = (SELECT SNO FROM DELETED); //更改对应学生学号 CREATE TRIGGER majorupdate ON dbo.student //建立学生信息表更新触发器 FOR UPDATE AS UPDATE MAJOR //更新专业信息表MAJOR SET SNO = (SELECT SNO FROM IN
46、SERTED) //将MAJOR表中学号改成学生表修改后 WHERE SNO = (SELECT SNO FROM DELETED); //更改对应学生学号 CREATE TRIGGER student1 ON dbo.major //建立专业信息表更新触发器 FOR UPDATE AS UPDATE STUDENT //更新学生信息信息表STUDENT SET MNO = (SELECT MNO FROM INSERTED) //将STUDENT表中专业号改成专业表修改后 WHERE MNO = (SELECT MNO FROM DELETED); //更改对应专业号
47、CREATE TRIGGER student2update ON dbo.department //建立院系信息表更新触发器 FOR UPDATE AS UPDATE STUDENT //更新学生信息信息表STUDENT SET DMPNO = (SELECT DMPNO FROM INSERTED) //将STUDENT表中院系号改成专业表修改后 WHERE DMPNO = (SELECT DMPNO FROM DELETED); //更改对应院系号 (2) 数据删除 CREATE TRIGGER sc1update ON dbo.course //建立课程信息表删
48、除触发器 FOR DELETE AS UPDATE SC //删除选课信息表SC SET CNO = NULL //删除SC表中课程号删除 WHERE CNO = (SELECT CNO FROM DELETED) //找到对应课程号 CREATE TRIGGER stu_majorupdate ON dbo.major //建立专业信息表删除触发器 FOR DELETE AS UPDATE STUDENT //删除学生信息表STUDENT SET MNO = NULL //删除STUDENT 表中专业号删除 WHERE MNO = (SELECT
49、MNO FROM DELETED) //找到对应专业号 CREATE TRIGGER teacherupdate ON dbo.department //建立院系信息表删除触发器 FOR DELETE AS UPDATE TEACHER //删除教师信息表TEACHER SET DMPNO = NULL //删除TEACHER表中院系号删除 WHERE DMPNO = (SELECT DMPNO FROM DELETED) //找到对应院系号 登录窗体 代码实现: Private Sub Co
50、mmand1_Click() Dim mrc As ADODB.Recordset txtsql = "select 用户名,标识 from 用户 where 用户名='" & Trim(Text1.Text) & "" Set mrc = ExecuteSQL(txtsql) If mrc.EOF = True Then MsgBox " 用户名错误!", vbExclamation + vbOKOnly, "警告" Text1.SetFocus 'Text1.SelStart = 0






