SQL课程设计学生信息管理系统.docx
《SQL课程设计学生信息管理系统.docx》由会员分享,可在线阅读,更多相关《SQL课程设计学生信息管理系统.docx(18页珍藏版)》请在冰豆网上搜索。
![SQL课程设计学生信息管理系统.docx](https://file1.bdocx.com/fileroot1/2022-11/27/8978bfa8-4963-4039-a146-da87b6b2b38f/8978bfa8-4963-4039-a146-da87b6b2b38f1.gif)
SQL课程设计学生信息管理系统
辽宁工业大学
《管理信息系统设计专题》报告
题目:
学生信息管理系统
院(系):
软件学院
专业班级:
软件技术000班
学号:
000000000
学生姓名:
000000
指导教师:
000000
教师职称:
副教授
起止时间:
2010.06.28-2010.07.09
设计任务及评语
院(系):
软件学院教研室:
软件教研室
学号
000000
学生姓名
00000
专业班级
软件技术001
设计题目
学生信息管理系统
设计任务
要求根据管理信息系统及数据库设计原理,按照系统设计的步骤和规范,完成各阶段的设计内容。
需求分析具体实际,数据流图、数据字典、关系模型要规范。
在sqlserver2000上实现数据库的模型建立(数据库、表的建立、完整性约束的实现、关系图、必要的存储过程及触发器的编程),并用VB实现简单的应用程序。
设计过程中,要严格遵守设计的时间安排,听从指导教师的指导。
正确地完成上述内容,规范完整地撰写出设计报告。
指导教师评语及成绩
成绩:
指导教师签字:
年月日
目录
第1章设计目的与要求1
1.1设计目的1
1.2设计环境1
1.3主要参考资料1
1.4设计内容及要求1
第2章设设计内容2
2.1数据库设计2
2.1.1需求分析2
2.1.2概念设计6
2.1.3逻辑设计7
2.1.4物理设计8
2.1.5数据库实现9
2.2程序设计12
2.2.1概要设计12
2.2.2程序实现13
第3章设计总结15
参考文献16
第1章设计目的与要求
1.1设计目的
本实践课的主要目的是:
(1)、掌握运用管理系统及数据库原理知识进行系统分析和设计的方法;
(2)掌握关系数据库的设计方法;(3)掌握SQLServer2000技术应用;(4)掌握简单的数据库应用程序编写方法;(5)理解C/S模式结构。
1.2设计环境
在设备CPU:
T1400@1.73GHZ;硬盘:
250G;分辨率:
最佳效果1024*768的情况下,运用VB6.0为前台工具,采用VB语言,以SQLServer2000作为后台数据库,在WindowsXP环境下编写并测试运行的。
1.3主要参考资料
1.《管理信息系统》黄梯云高等教育出版社
2.《数据库系统概论》萨师煊高等教育出版社
3.《SQLServer2000数据库应用系统开发技术》朱如龙编,机械工业出版社。
4.《SQLServer2000数据库应用系统开发技术实验指导》朱如龙编,机械工业出版社
1.4设计内容及要求
一、内容
1.要求根据管理信息系统及数据库设计原理,按照数据库系统设计的步骤和规范,完成各阶段的设计内容。
2.需求分析具体实际,数据流图、数据字典、关系模型要正确规范
3.在sqlserver2000上实现设计的数据库模型。
4.对应用程序进行概要设计。
5.用VB实现简单的应用程序编写。
二、要求
设计过程中,要严格遵守课程设计的时间安排,听从指导教师的指导。
正确地完成上述内容,规范完整地撰写出课程设计报告。
第2章设设计内容
2.1数据库设计
2.1.1需求分析
数据项和数据结构如下:
学生信息管理系统包括班级信息管理、学籍信息管理、班级信息管理、成绩信息管理、课程信息管理、查询管理六大快,而年级信息管理又包括了学校年级设置于学校信息设置,学籍信息管理包括了班级信息管理,成绩信息管理包括了成绩信息管理,课程信息管理包括了课程信息管理和年级课程开设两块,查询管理包括了班级信息查询,课程信息查询,成绩信息查询以及血迹信息管理。
学校年级设置主要就是对于学校里的年级的设置,学籍性息设置主要是针对于学生们的学籍的管理班级信息管理主要是针对于班级信息的设置成绩信息设置主要是针对于学生们的成绩,课程信息设置主要是针对于课程的一些基本信息管理,年级课程开设主要是针对于一些课程开设的时间,而查询这一块主要就是各种的查询,类如班级信息,课程信息等一些基本信息的查询都是由这一块完成的
1.系统工作流程图
系统工作流程图主要描述出了系统在工作时候的大致情况,通过这个图我们可以很容易的了解系统工作时的大致情况,具体如图2.1.1所示。
图2.1.1系统工作流程图
2.系统业务流程图:
业务流程图是一种用尽可能少、尽可能简单的方法来描述业务处理过程的方法。
由于它的符号简单明了,所以非常易于阅读和理解业务流程。
但它的不足是对于一些专业性较强的业务处理细节缺乏足够的表现手段,它比较适用于反映事务处理类型的业务过程
图2.1.2系统业务流程图
3.系统数据流程图:
数据流程图是描述系统数据流程的工具,它将数据独立抽象出来,通过图形方式描述信息的来龙去脉和实际流程。
图2.1.3系统数据流程图
4.数据字典:
1)数据项:
表2.1.1数据项
数据项名称
数据项含义说明
别名
数据类型
长度
取值范围
学号
为学生设置的代号
无
整型
4
a000-x999
教师名称
教师名称
无
字符型
100
中、外文
班级
班级名
无
整型
4
中文
专业
专业名
无
整型
4
中文
学费
学费多少
无
整型
4
a000-x999
出生日期
出生日期
无
整型
4
a000-x999
入学时间
入学时间
无
整型
4
a000-x999
课程
课程名
无
整型
4
中、外文
成绩
成绩
无
整型
4
a000-x999
2)数据结构的定义:
数据结构的名称:
班级信息
含义说明:
数据库中用来说明班级类型的信息
数据结构组成:
班级编号+类型名称+班级数量+住宿费+人数
数据结构的名称:
学校信息
含义说明:
数据库中用来说明学校信息的
数据结构组成:
学校名称+班级编号+专业编号+学生信息+教师信息+课程信息
3)数据流的定义:
数据流名称:
班级信息设置
简要说明:
学校对班级进行设置
数据流来源:
班级信息管理模块
数据流去向:
P1.8
数据结构:
班机编号+班级名称
数据流名称:
课程管理
简要说明:
对各科目进行管理
数据流来源:
P1.8
数据流去向:
课程管理模块
数据结构:
课程编号+课程名称
4)数据存储:
数据存储名:
课程信息
输入数据流:
课程基本信息,
输出数据流:
正确的课程信息
数据存储名:
课程信息
输入数据流:
更新后的课程信息
输出数据流:
目前的课程信息,课程具体开课时间等
2.1.2概念设计
学生性息管理系统的实体E-R图:
学籍性息表E-R图如图2.1.4所示
图2.1.4学生信息表E-R图
成绩性息表E-R图如图2.1.5所示。
图2.1.5房间E-R图
年级信息表E-R图如图2.1.6所示
图2.1.6年级信息管理E-R图
学生信息管理总体E-R图如图2.1.7所示。
图2.1.7整体E-R图
2.1.3逻辑设计
逻辑结构设计就是将概念结构设计出来概念模型转换乘具体DBMS所能支持的数据模型(即逻辑结构),并对其进行优化。
逻辑结构设计一般分为三步进行:
1.从E-R图向关系模式转化数据库的逻辑设计主要是将概念模型转换成一般的关系模式,也就是将E-R图中的实体、实体的属性和实体之间的联系转化为关系模式。
一个实体类型转换为一个关系模型,将每种实体类型转换为一个关系,实体的属性就是关系的属性,实体的关键字就是关系的关键字。
将“客房”实体转换为一个关系模型,其中,带下划线的属性为主属性,该主属性为关系模型外键。
年级基本信息(年级编号、班级编号、班级名称、班级数量、年级人数)。
班级(班级编号、班级数、班级人数、班级名称。
)
学籍信息(学生姓名、学好、科目、成绩、学分)
2.1.4物理设计
1.存储结构
数据库在物理设备上的存储结构与存取方法称为数据库的物理结构,它依赖于给定的计算机系统。
物理设计通常分为两步:
(1)确定数据库的物理结构,在关系数据库中主要指存取方法和存储结构;
(2)对物理结构进行评价,评价的重点是时间和空间效率。
存储结构是建立一种由逻辑结构到存储空间的映射。
存储结构是把一组结点存放在按地址相邻的存储单元里,结点间的逻辑关系用存储单元的自然顺序关系来表达的,即用一块存储区域存储线性数据结构,为使用整数编码访问数据结点提供了便利。
2.索引的创建
为表创建一个以student_id为索引的关键字的唯一聚簇索引
1)展开数据库中的表右键student_id表,单击所有任务弹出的索引管理。
2)在窗体点新建索引名称为student,点击复选框“聚簇索引”、“惟一值”。
3.事务日志文件备份及存放
在大型系统中,数据库的数据备份、日志文件备份等数据只在故障恢复时才使用,而且数据量很大,可以考虑放在磁带上。
对于拥有多个磁盘驱动器或磁盘阵列的系统,可以考虑将表和索引分别存放在不同的磁盘上,在查询时,由于两个磁盘驱动器分别工作,因而可以保证物理读写速度比较快。
将比较大的表分别存放在不同的磁盘上,可以加快存取的速度,特别是在多用户的环境下。
将日志文件和数据库对象(表、索引等)分别放在不同的磁盘可以改进系统的性能。
由于各个系统所能提供的对数据进行物理安排的手段、方法差异很大,因此设计人员应该在仔细了解给定的DBMS在这方面提供了什么方法、系统的实际应用环境的基础上进行物理安排。
4.存取方法:
现行的DBMS一般都提供了多种存取方法,其中,最常用的是索引法。
索引法是为了加速对表中的数据行的检索而创建的一种分散的存储结构。
是针对一个表而建立的,它能够以一列或多列的值为关键字,迅速查找/存取表中行数据加快了数据检索。
例如在本数据库中:
年级基本信息(年级编号、班级编号、班级名称、班级数量、年级人数。
班级(班级编号、班级数、班级人数、班级名称。
)
整个系统需要调用年级基本信息表、班级表等,所以年级基本信息表属性“编号”,班级表中的属性“班级编号”,将经常出现在查询条件中,可以考虑在上面建立索引以提高效率。
2.1.5数据库实现
1.成绩信息表:
学号,姓名,课程编号,课程名称,成绩,学分,,班级,专业。
表2.1.2成绩信息表
列名
数据类型大小
允许空
Number
Char(20)
否
Name
Char(20)
是
Namber
Char(20)
是
Kechengname
Char(20)
是
prefission
Char(8)
是
scord
Char(10)
是
grade
Char(50)
是
professional
Char(20)
是
2.年级信息表:
年级数,年级编号,班级编号,班级名称,班级数,
表2.1.3年级信息表
列名
数据类型大小
允许空
Gradenameber
Char(20)
否
GradeNumbers
Char(20)
是
Classnumber
Char(20)
是
Classname
Char(20)
是
Classnumber
Char(8)
是
3.学籍信息表:
姓名,学号,班级,性别,成绩,民族,籍贯,专业
表2.1.4学籍信息表
列名
数据类型大小
允许空
Number
Char(20)
Name
Char(20)
是
Sex
Char(20)
是
National
Char(20)
是
Native
Char(8)
是
Class
Char(50)
是
Prefessional
Char(20)
是
以关系型为目标将E-R实体图中概念模型映射为关系模型,具体旅店信息管理模型实现设计,如图所示:
图2.1.8系统关系图
我选取制作的是年级信息模块
所用的数据库为:
年级信息。
1)存储过程:
Createprocedurenianjion学生信息
(@nanjichar(20)
@numberchar(20)
@banjichar(20)
@nianjishuchar(20)
@banjimingchar(20)
AS
Insertinto年级基本信息(年级数,班级数,班级编号,班级名,年级编号)valuse(@number,@number,@name)
GO
2)触发器程序:
为表建立my触发器以自动更新class表中的学生人数目
USEJWGL
GO
IFEXISTS(SELECTnameFROMsysobjects
WHEREtype='TR'ANDname='student_insert')
DROPTRIGGERstudent_insert
GO
CREATETRIGGERstudent_insertONstudent
FORUPDATE
AS
IFUPDATE(class_id)
BEGIN
UPDATEroomSETstudent_num=(
SELECTCOUNT(r.class_id)FROMstudentr,insertedi
WHEREr.typeld_id=i.typeld_id)
FROMstudentm,insertedi
WHEREm.typeld_id=i.typeld_id
UPDATEroomSETstudent_num=(
SELECTCOUNT(r.student_id)FROMstudentr,deletede
WHEREr.typeld_id=e.typeld_id)
FROMstudentm,deletede
WHEREm.typeld_id=e.typeld_id
END
GO
2.2程序设计
2.2.1概要设计
为了实现无纸化办公,以及规范化,迅捷话等我们开发了这一学生成绩管理系统,系统主要需要完成的功能有:
学校信息管理、教师信息管理、学生性息管理、课程性息管理、成绩性息编辑、成绩性息查询、补考重修管理以及帮助说明,通过分工我要完成的是教师性息管理、课程性息管理以及补考重修管理三个模块。
整体功能模块图如图2.2.1所示:
图2.2.1整体功能模块图
年级信息管理包括学校年级设置、学校信息设置。
其中学校信息设置时,可以输入学校学院编号实现对学校信息的设置,包括学生住宿等;学校年级设置时,可以输入年级编号实现对学校年级信息的设计,包括年级名称等如图2.2.2所示
图2.2.2课程管理功能模块图
2.2.2程序实现
学校年级设置运新后窗口如图2.2.3所示:
图2.2.3学校年级设置窗口图
学校年级设置窗口代码如下:
PrivateSubcmdDel_Click()
IftxtGradeNo.Text=""Then
MsgBox"请选择要删除的记录!
",vbOKOnly+vbInformation,"删除记录"
ExitSub
EndIf
IfMsgBox("确认要删除年级编号为"&txtGradeNo.Text&"的记录吗?
",vbOKCancel+vbQuestion,"删除记录")=vbOKThen
myAddGrade.rsDK1"select*fromschoolgrade_infowheregrade_No='"&txtGradeNo.Text&"'"
myAddGrade.rs1.Delete
myAddGrade.rsDK1"select*fromschoolgrade_info"
IfmyAddGrade.rs1.EOFThen
AddGradeGrid.Clear
AddGradeGrid.FormatString="|年级编号|年级名称"
Else
SetAddGradeGrid.DataSource=myAddGrade.rs1
AddGradeGrid.FormatString="|年级编号|年级名称"
EndIf
cmdDel.Enabled=False
cmdSave.Enabled=False
txtGradeNo.Text=""
txtGradeName.Text=""
EndIfEndSub
程序连接代码如下:
PublicFunctionrsDK(TableAsString)
SetrsSims=NewADODB.Recordset
WithrsSims.Source=Table
.ActiveConnection=cnSIMS
.CursorType=adOpenKeyset
.LockType=adLockOptimistic
.Open,,,,adCmdTableEndWithEndFunction
第3章设计总结
通过这次为期两周时间的课程设计让我对数据库这一学科的很多知识得到了一次更深的理解,当初原本以为自己已经基本掌握了数据库SQL的全部知识,但当我开始着手实际操作时才发现原来过去自己所掌握的知识是那么的贫乏。
这次我们所做的课设题目为学生成绩管理系统,我们四个人分工合作,一人一部分,开始做表时还算顺利,但当到了后来设计窗体,报表什么的问题就来了,很多东西都不懂,为此我们去图书馆参阅了很多书籍,也请教过很多次老师同学,但是因为我们的没有经验,所以设计出来的东西总是漏洞百出,不是数据冗余,就是文档组织不合理,而且最后发现帮助文档居然没有编,就一个空空的空文档,点进去什么也没有,更可气的是在点击教师性息管理界面的时候居然有些性息不显示,反复检查也检查不出来是哪里出了问题,最后才发现居然是属性没有设好。
还有就是在与vb连接的时候真可谓是困难重重阿,不断地试不断的失败,最后在同学们的帮助下总算是ok了,再者还有存储过程和触发器的部分那代码写起来总是丢三落四,结果就是总是出现语法错误无法完成,经过耐心的检查终于找到了原因
总的来说这课程设计真的不是很好过,不仅需要丰富的知识,严谨的思维,还需要充分的耐心,往往一个小小的窗口就能让我们改来改去该半天,不过经过此次的可生设计不仅让我学到了很多过去漏掉的只是,而且也让我更有耐心了
参考文献
1黄剀涛.VisualBasic6.0中文版高级应用.北京:
北京大学出版社,2006:
31-35
2孙春来.SQLServer中文版编程基础.上海:
电子工业出版社,2008:
195-210
3知寒工作室.SQLServer2000案例教程.北京:
机械工业出版社,2007:
619-625
4徐建平,赵永.SQLServer2000基础教程.北京:
机械工业出版社出版,2006:
51-69
5《SQLServer开发指南》熊桂喜清华大学出版社
6《SQLServer开发和应用》刘玉生电子工业出版社
7《SQLServer2000开发指南》张营电子工业出版社
8《VB.NET编程实例详解》王华杰中国铁道出版社
9《VB.NET数据库开发》Thomsen清华大学出版社
10《SQLServer应用开发技术指南》彭东清华大学出版社
11《数据库原理及应用》钱雪忠北京邮电大学出报社
12《数据库原理概论》王珊高等教育出版社