数据库课设《学生学籍管理系统》设计报告.docx
《数据库课设《学生学籍管理系统》设计报告.docx》由会员分享,可在线阅读,更多相关《数据库课设《学生学籍管理系统》设计报告.docx(41页珍藏版)》请在冰豆网上搜索。
![数据库课设《学生学籍管理系统》设计报告.docx](https://file1.bdocx.com/fileroot1/2023-4/16/a3d32302-bec0-4a77-a54c-e843cdced15d/a3d32302-bec0-4a77-a54c-e843cdced15d1.gif)
数据库课设《学生学籍管理系统》设计报告
《学生学籍管理系统》设计报告
学院:
信息科学与工程
班级:
自动化0906
学号:
姓名:
catonlion
摘要
随着学校的规模不断扩大,学生数量急剧增加,有关学生的各种信息量也成倍增长。
面对庞大的信息量需要有学生管理系统来提高学生管理工作的效率。
通过这样的系统可以做到信息的规范管理、科学统计和快速查询、修改、增加、删除等,从而减少管理方面的工作量。
本系统主要用于学校学生信息管理,总体任务是实现学生信息关系的系统化、规范化和自动化,其主要任务是用计算机对学生各种信息进行日常管理,如查询、修改、增加、删除,另外还考虑到学生选课,针对这些要求设计了学生信息管理系统;本系统主要用于学校学生信息管理,总体任务是实现学生信息关系的系统化、规范化和自动化,其主要任务是用计算机对学生各种信息进行日常管理,如查询、修改、增加、删除,另外还考虑到学生用后意见,针对这些要求设计了学生信息管理系统。
本系统主要包括学生信息查询、教务信息维护和学生留言三部分。
其功能主要有:
1、有关学籍等信息的输入,包括输入学生基本信息、所在班级、所学课程和成绩等。
2、学生信息的查询,包括查询学生基本信息、所在班级、已学课程和成绩等。
3、学生信息的修改。
4、学生修改密码。
5、学生对于系统的用后建议,留言板功能。
学生信息管理系统是典型的信息管理系统(MIS),其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。
对于前者要求建立起数据一致性和完整性强、数据安全性好的库。
而对于后者则要求应用程序功能完备,易使用等特点。
经过分析,使用MICROSOFT公司的MicrosoftVisualStudio2005开发工具,利用其提供的各种面向对象的开发工具,尤其是数据窗口这一能方便而简洁操纵数据库的智能化对象,首先在短时间内建立系统应用原型,然后,对初始原型系统进行需求迭代,不断修正和改进,直到形成用户满意的可行系统。
关键字:
控件、web、类、数据库、VS2005、sql2005。
第一章绪论
1.1数据库技术的国内外发展与应用现状
随着计算机科学的发展,数据库技术在Internet中的应用越来越广泛,数据库在网站的建设中已经成为必不可少的重要内容。
可以说数据库技术已经成为网络的核心技术
数据库的发展概况
第一代数据库系统。
支持层次和网状这两种格式化数据模型的数据库系统,为第一代数据库系统。
层次数据库是数据库系统的先驱,而网状数据库则是数据库概念、方法、技术的奠基。
它们是数据库技术中研究得最早的两种数据库。
支持关系数据模型的关系数据库系统是第二代数据库系统。
20世纪80年代以来,几乎所有新开发的系统均是关系型数据库。
这些商用数据库技术的使用,特别是微机数据库系统的使用,使数据库技术日益广泛地应用到企业管理、办公自动化、情报检索、辅助决策等各个方面,成为实现和优化信息系统的基本技木。
关系模型建立在严格数学概念的基础上,概念简单、清晰,易于用户理解和使用,大大简化了用户的工作。
正因为如此,关系模型提出以后,便迅速发展,并在实际的商用数据库产品中得到了广泛应用,成为深受广大用户欢迎的数据模型。
关系数据库的发展
关系数据库管理系统及其产品从70年代至今,已成功地走过了三个阶段,它对关系模型的支持越来越完善,运行环境已从单机扩展到网络,对数据的收集、存储、处理和传播也由集中式走向分布式,从封闭式走向开放式。
目前关系数据库管理系统不仅提供了数据定义、数据存取、数据控制等基本操作和数据存储组织、并发控制、安全性完整性检查、系统恢复、数据库的重组织和重构造等基本功能,还开发了外围软件系统,为用户提供了一个良好的应用开发环境。
1.2、学生学籍管理数据库应用系统开发的意义
学生学籍管理系统是一个教育单位不可缺少的部分。
一个功能齐全、简单易用的学生学籍管理系统不但能有效地减轻学校相关工作人员的工作负担,它的内容对于学校的决策者和管理者来说都至关重要。
所以学生学籍管理系统应该能够为用户提供充足的信息和快捷的查询手段。
但一直以来人们使用传统人工的方式管理文件档案、统计和查询数据,这种管理方式存在着许多缺点,如:
效率低、保密性差,人工的大量浪费;另外时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少困难。
随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着来越重要的作用。
作为计算机应用的一部分,使用计算机对学校的各类信息进行管理,具有手工管理所无法比拟的优点.例如:
检索迅速、查询方便、效率高、可靠性好、存储量大、保密性好、寿命长、成本低等。
这些优点能够极大地提高学校信息管理的效率,也是一个单位科学化、正规化管理,与世界接轨的重要条
1.3数据库应用系统开发方法概述
根据软件工程中软件生命周期的思想,可将数据库设计分为五个基本步骤,其基本思想是过程迭代和逐步求精。
1.需求分析:
设计一个数据库,首先必须准确、全面和深入地了解和分析用户需求,包括数据需求和处理需求。
2.概念设计
在需求分析基础上,用概念数据模型(如E-R模型),表示数据及其相互间的联系,形成数据库概念结构(如E-R图)。
概念结构(模式)与具体DBMS无关,是对现实世界的可视化描述,容易被用户所理解,因而不但可用于后续的设计,也是与用户交流和数据库移植的重要文档。
3.逻辑设计
这一步是将数据库概念结构转换为DBMS所支持的数据库逻辑模式,例如,将E-R图转换为关系模型所支持的关系数据库模式。
逻辑设计也不仅仅是个数据模式的转换问题,还要进一步考虑数据模式的规范化、满足DBMS的各种限制等。
4.物理设计
这一步的任务是:
根据DBMS及计算机系统所提供的手段,为数据库逻辑模式选取一个最适合应用环境的物理模式(包括存储结构和存取方法等)。
5.数据库实施
这一步就是在实际的计算机平台上,真正建立数据库。
先运行用DDL编写的命令,建立数据库框架;然后通过DBMS的实用工具或专门编写的应用程序,将数据实际载入,最终建成数据库。
在数据库投入实用之前,要进行测试和试运行。
除单独测试之外,还要与数据库应用程序结合起来进行测试。
1.4、小结
当今时代,数据库是开发应用程序所必须的,学好数据库很有用。
第二章系统需求分析
2.1概述
学生学籍管理系统是一个教育单位不可缺少的部分。
一个功能齐全、简单易用的学籍管理系统不但能有效地减轻学校相关工作人员的工作负担,它的内容对于学校的决策者和管理者来说都至关重要。
所以学生信息管理系统应该能够为用户提供充足的信息和快捷的查询手段。
但一直以来人们使用传统人工的方式管理文件档案、统计和查询数据,这种管理方式存在着许多缺点,如:
效率低、保密性差,人工的大量浪费;另外时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少困难。
随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着来越重要的作用。
作为计算机应用的一部分,使用计算机对学校的各类信息进行管理,具有手工管理所无法比拟的优点.例如:
检索迅速、查询方便、效率高、可靠性好、存储量大、保密性好、寿命长、成本低等。
这些优点能够极大地提高学校信息管理的效率,也是一个单位科学化、正规化管理,与世界接轨的重要条件。
本系统的最终用户为管理员和学生,根据我们日常生活中的经历,结合学校管理员对学籍管理的需求,得到以下结果
2.2系统功能需求与数据需求
2.2.1数据流图
2.2.2系统功能需求
本系统的主要任务是实现对学校教导处的学生信息管理、成绩管理、课程管理及相关查询。
其主要功能包括:
针对不同的用户,管理系统主要有以下功能:
一.对学生:
1.登陆系统查看自己个人信息;
2.访问留言板,享用留言;
3.修改密码;
二.对管理员:
1.添加新的学生信息,以班级为单位,进行学生入库;
2.输入条件查询数据库内符合条件的学生名单,根据用户的要求,查询学生数据库的所有可能的信息;
3.对于选定的的学生信息进行删除或编辑操作,当学生毕业后,学生信息转移备份数据库中,系统的基本数据库中需要删除学生信息。
系统功能模块图:
2.2.3系统数据需求(数据字典)
数据库名:
StudentRecord
学生表SR_Student
序号
列名
数据类型
长度
标识
主键
允许空
默认值
字段说明
1
SID
nvarchar
100
√
学生学号
2
SName
nvarchar
100
学生姓名
3
PSW
nvarchar
100
((0))
密码
4
XueyuanName
nvarchar
100
所在学院
5
Class
nvarchar
100
所在班级
6
Sex
nchar
20
性别
7
Home
nvarchar
100
√
籍贯
8
PhoneNumber
nvarchar
100
√
电话号码
9
Email
nvarchar
100
√
电子邮箱
留言表SR_Message
序号
列名
数据类型
长度
标识
主键
允许空
默认值
字段说明
1
id
int
4
√
√
留言ID
2
UName
varchar
50
留言者名
3
Title
nvarchar
MAX
留言内容
4
Time
varchar
MAX
留言时间
班级表SR_Class
序号
列名
数据类型
长度
标识
主键
允许空
默认值
字段说明
1
CID
int
4
√
√
班级ID
2
ClassName
nvarchar
100
班级名称
3
XueYuanID
int
4
所在学院id
管理员表SR_Admin
序号
列名
数据类型
长度
标识
主键
允许空
默认值
字段说明
1
AID
int
4
√
√
id
2
AName
varchar
50
管理员名称
3
APSW
varchar
50
密码
专业表SR_Xueyuan
序号
列名
数据类型
长度
标识
主键
允许空
默认值
字段说明
1
XYID
int
4
√
√
学院id
2
XYName
nvarchar
100
学院名称
2.3小结
第三章系统设计
3.1概念设计(E-R图)
3.1.1设计方法及关键技术
根据对数据需求的分析,得到以下实体:
1.用户实体
其属性有:
用户编号,用户名,密码。
2.权限实体
其属性有:
权限编号,权限名称,备注。
权限实体
3.学生档案实体
其属性有:
学生学号,学生姓名,所在学院,所在班级,性别,籍贯,电话号码,电子邮箱
4.院系实体
其属性有:
院系编号,院系名称。
5.班级实体
其属性有:
班级编号,班级名称。
6.留言实体
其属性有:
留言编号,留言者,留言内容,留言时间。
各实体之间的联系有:
1.学生档案和院系、班级之间存在属于的联系:
一个院系、班级可以有多个学生,一个学生只能属于一个院系、班级;
2.用户和权限存在权限设置的联系:
一个用户可以有多个权限,而一个权限也可分配给多个用户。
3.留言内容和学生之间存在属于的联系,一个留言者可以有多条留言,一条留言只能有一个留言者。
3.1.2系统的E-R图
3.2逻辑设计(E-R图)
3.2.1设计方法及关键技术
在概念设计的基础上,根据设计得到系统总的E-R图,按照概念模式与关系表转化的一般规则,结合实际的需要进行逻辑设计,按照E—R图中的实体、实体的属性和实体之间的联系转化为关系模式。
3.2.2系统的逻辑模型
实体所对应的关系模式
学生表(学生学号,学生姓名,所在学院,所在班级,性别,籍贯,电话号码,电子邮箱)
学院(院系编号,院系名称)
班级(班级编号,院系编号,班级名称)
留言表(留言编号,留言者,留言内容,留言时间)
管理员表(管理员编号,管理员姓名,管理员密码
3.3.3系统的完整性与安全性设计
优化后的数据模型
学生表(学生学号,学生姓名,所在学院,所在班级,性别,籍贯,电话号码,电子邮箱)3NF
学院(院系编号,院系名称)3NF
班级(班级编号,院系编号,班级名称)3NF
留言表(留言编号,留言者,留言内容,留言时间)3NF
管理员表(管理员编号,管理员姓名,管理员密码)3NF
最后的ER图:
包括主外键,参照完整性、用户自定义完整性(约束、默认值与规则),安全性,请参见数据字典
3.3物理设计
学生学籍管理系统是多用户共享的系统,对同一个关系要建立多条存储路径,才能满足多用户的多种应用要求。
在数据库设计中,可供选用的存储方法主要有三种:
B+树索引方法、聚簇方法、HASH方法。
其中,B+数索引方法发展较为完善,也是目前大型数据库使用的经典存取方法,使用最为普遍,并且符合本系统的要求,因此,我们采用B+树索引方法作为系统的存取方法
所谓选择索引存取方法实际上就是根据应用要求确定对关系的哪些属性列立索引、哪些属性列建立组合索引、哪些索引要设计为唯一索引等。
根据本信息系统的具体情况,建立索引的依据如下:
一个属性经常在查询条件下出现。
一个属性经常作为最大值或最小值等聚集函数的参数。
一个属性经常在连接操作的连接条件出现。
属性名
对应实体
属性名
对应实体
学生号
学生信息
学生姓名
学生信息
院系号
院系信息
院系名称
院系信息
班级号
班级信息
班级名
班级信息
由于开发者的习惯、、和开发者磁盘的容量,决定将数据库存放于C盘,应用程序存放放在E盘
3.4系统功能设计(E-R图)
3.5系统开发平台选择
微软公司的visualstudio2005与sql2005配合开发。
3.6小结
ER图真难画,真难画,真难画,真难画!
!
!
第四章数据库应用系统的实现
4.1数据库的定义
4.1.1数据库的定义
1.数据库的创建
本系统采用sqlserver数据库,创建数据库StudentRecord,并在数据库StudentRecord中使用数据表结构设计如下:
2.数据库对象的定义
1、创建管理员表
CREATETABLE[dbo].[SR_Admin](
[AID][int]IDENTITY(1,1)NOTNULL,
[AName][varchar](50)COLLATEChinese_PRC_CS_ASNOTNULL,
[APSW][varchar](50)COLLATEChinese_PRC_CS_ASNOTNULL,
CONSTRAINT[PK_SR_Admin]PRIMARYKEYCLUSTERED
(
[AID]ASC
)WITH(IGNORE_DUP_KEY=OFF)ON[PRIMARY]
)ON[PRIMARY]
2、创建学生表
CREATETABLE[dbo].[SR_Student](
[SID][nvarchar](50)COLLATEChinese_PRC_CS_ASNOTNULL,
[SName][nvarchar](50)COLLATEChinese_PRC_CS_ASNOTNULL,
[PSW][nvarchar](50)COLLATEChinese_PRC_CS_ASNOTNULLCONSTRAINT[DF_SR_Student_PSW]DEFAULT((0)),
[XueyuanName][nvarchar](50)COLLATEChinese_PRC_CS_ASNOTNULL,
[Class][nvarchar](50)COLLATEChinese_PRC_CS_ASNOTNULL,
[Sex][nchar](10)COLLATEChinese_PRC_CS_ASNOTNULL,
[Home][nvarchar](50)COLLATEChinese_PRC_CS_ASNULL,
[PhoneNumber][nvarchar](50)COLLATEChinese_PRC_CS_ASNULL,
[Email][nvarchar](50)COLLATEChinese_PRC_CS_ASNULL,
CONSTRAINT[PK_SR_Student]PRIMARYKEYCLUSTERED
(
[SID]ASC
)WITH(IGNORE_DUP_KEY=OFF)ON[PRIMARY]
)ON[PRIMARY]
GO
USE[StudentRecord]
GO
ALTERTABLE[dbo].[SR_Student]WITHCHECKADDCONSTRAINT[CK_SR_Student]CHECK(([Sex]='女'OR[Sex]='男'))
3、创建学院表
CREATETABLE[dbo].[SR_Xueyuan](
[XYID][int]IDENTITY(1,1)NOTNULL,
[XYName][nvarchar](50)COLLATEChinese_PRC_CS_ASNOTNULL,
CONSTRAINT[PK_SR_Xueyuan]PRIMARYKEYCLUSTERED
(
[XYID]ASC
)WITH(IGNORE_DUP_KEY=OFF)ON[PRIMARY]
)ON[PRIMARY]
4、创建班级表
CREATETABLE[dbo].[SR_Class](
[CID][int]IDENTITY(1,1)NOTNULL,
[ClassName][nvarchar](50)COLLATEChinese_PRC_CS_ASNOTNULL,
[XueYuanID][int]NOTNULL,
CONSTRAINT[PK_SR_Class_1]PRIMARYKEYCLUSTERED
(
[CID]ASC
)WITH(IGNORE_DUP_KEY=OFF)ON[PRIMARY]
)ON[PRIMARY]
GO
USE[StudentRecord]
GO
ALTERTABLE[dbo].[SR_Class]WITHCHECKADDCONSTRAINT[FK_SR_Class_SR_Xueyuan]FOREIGNKEY([XueYuanID])
REFERENCES[dbo].[SR_Xueyuan]([XYID])
5、创建留言表
CREATETABLE[dbo].[SR_Message](
[id][int]IDENTITY(1,1)NOTNULL,
[UName][nvarchar](50)COLLATEChinese_PRC_CS_ASNOTNULL,
[Title][nvarchar](max)COLLATEChinese_PRC_CS_ASNOTNULL,
[Time][varchar](max)COLLATEChinese_PRC_CS_ASNOTNULL,
CONSTRAINT[PK_SR_Message]PRIMARYKEYCLUSTERED
(
[id]ASC
)WITH(IGNORE_DUP_KEY=OFF)ON[PRIMARY]
)ON[PRIMARY]
表视图
4.2应用系统的开发
主要功能模块对应的主要界面,完成的主要功能及主要应用程序
在本系统中会多次用到对象,因此封装一个sqlclass.cs类,减少代码的冗余。
publicclasssqlClass
{
publicsqlClass()
{
}
privatestaticSqlConnectioncon=newSqlConnection("server=.;database=StudentRecord;IntegratedSecurity=true");
privatestaticSqlCommandcmd=newSqlCommand();
privateSqlDataReadersdr=null;
publicSqlConnectionlinkToSql()//建立与数据库的链接
{
if(con.State==ConnectionState.Closed)
{con.Open();}
returncon;
}
publicvoidsqlClose()//关闭链接
{
if(con.State==ConnectionState.Open)
{con.Close();}
}
publicintcomd(stringcmdstr)//传入sql语句,执行sql命令
{
inti=0;
cmd.CommandText=cmdstr;
cmd.Connection=con;
i=cmd.ExecuteNonQuery();
returni;
}
publicSqlDataReadersdar(stringcomdstring)//传入sql语句,将命令结果以SqlDataReader形式返回
{
cmd.Connection=linkToSql();
cmd.CommandText=comdstring;
sdr=cmd.ExecuteReader();
returnsdr;
}
publicvoidsdaClose()//关闭SqlDataReader
{
if(sdr.IsClosed==false)
{sdr.Close();}
}
publicDataSetds(stringcmdstr,stringtableName)//传入sql语句,表名,以dataset形式返回结果
{
SqlDataAdaptersda=newSqlDataAdapter(cmdstr,con);
DataSetnds=new