学生选课管理系统数据库课程设计.docx
《学生选课管理系统数据库课程设计.docx》由会员分享,可在线阅读,更多相关《学生选课管理系统数据库课程设计.docx(32页珍藏版)》请在冰豆网上搜索。
![学生选课管理系统数据库课程设计.docx](https://file1.bdocx.com/fileroot1/2022-11/22/ce825edb-9b04-4fef-b01b-32548d4f4486/ce825edb-9b04-4fef-b01b-32548d4f44861.gif)
学生选课管理系统数据库课程设计
数据库系统原理及其应用教程
课程设计报告
设计题目选修课程管理系统的设计与实现
指导教师
摘要
随着计算机技术的日新月异,极大的推动的各个行业的信息化进程。
各大高校也急需进行信息化改革,以促进教学质量和工作效率快速提升。
本文是在对各大高校全校公开课学生选课情况进行实地调查后,进行详细分析讨论后撰写的学生选课管理系统数据库设计报告。
全文从最初的系统规划,到需求分析、概念设计、逻辑设计、物理设计。
每一阶段都进行了详细的分析。
接下来的实现、运行与维护阶段,还进行了对本系统的测试,最后是本次项目开发的心得和体会以及本文的参考文献。
本系统主要功能是对学生选课及相关信息进行管理。
较行业同类产品而言,本系统人机界面设计更加合理、人性化,用户操作简单方便。
数据库的安全性更高,对用户访问权限进行了严格控制。
数据存取速度更快,使用年限更长。
可以很好的满足高校公开课学生选课的要求,极大的提高了学校的工作效率。
关键字:
学生选课管理系统;分析;设计
一、概述
1.1设计背景
可行性研究的目的是用最小的代价在尽可能的短的时间内确定数据库系统是否可能开发、是否值得开发、是否可以开发(在该报告中主要是考查《学生选课管理系统》是否可能开发、是否值得开发、是否可以开发)。
其实质是在较高层次上以较抽象方式进行的、简化的压缩的需求分析和概要设计过程。
1.2设计目的
系统实现后,极大的方便对学生进行选课和选课后临时班级的安排管理,学生选课信息的管理。
避免在安排课程信息的滞后,减少信息交流的烦琐过程及其带来的开销。
促进高校教育的计算机信息化进程,提高学校的工作效率。
对于系统的本身而言,应该具有较高的实用性、安全性。
能够极大的满足学生选课,以及学校对选课信息的管理。
1.3设计内容
调查学校教务处,设计用于管理全校学生选修课活动的系统。
主要功能有:
①全校选修计划课程管理;
②全校选修开课课程管理;
③全校学生选课管理;
④全校选修课成绩管理;
能够实现课程的查询,修改与删除功能。
二、需求分析
2.1功能分析
主要功能:
教师和学生登陆系统的帐号和密码,初始都分别为教师和学号,登陆后密码可以修改。
其中教师的职位可以是管理员。
管理员和非管理员的老师及学生对系统的操作具有不同的权限。
管理员登陆系统,对学生选课情况进行管理,包括发布选课信息,对学生的选课情况进行查看。
管理员还可以对授课老师的信息进行增加、删除、修改、查询。
教师登陆系统,能查看自己的个人信息,及所授课的班级的所有学生的本门课程的成绩信息,并能进行增加和修改。
学生登陆系统,能进行选课,查看管理员发布的选课信息,自己的选课情况,本人的基本信息,以及课程的成绩。
系统自动分配学生选课后的临时班级。
性能要求:
管理员发布的信息、学生选课的信息以及管理员和学生对系统操作的信息必须及时的反映在本系统上,且无差错。
输入要求:
具有很好的容错性和兼容性
输出要求:
应迅速、准确、实时
2.2工作流图
系统需求:
用户的需求具体体现在选课信息和用户信息的提供、保存、更新和查询的方面。
这就要求数据库的设计必须合理,使之能够充分满足各种信息的输入和输出,保证数据存储的可靠性,并且能够快速取出和存入。
而前台显示部分,应具有人性化的界面,方便用户操作。
因各个学校的实际情况不同,系统应该具有兼容性。
例如:
一些学校学生人数较多,同时登陆系统,系统承载的负荷就很大。
系统需要同时处理很大的数据量,这时系统不会因此崩溃。
系统还应该具有较强的安全性,保证身份不同的用户,不能越权操作。
非合法用户不能对数据进行操作。
功能需求:
通过系统功能的分析,结合需求分析员在各大高校实地考查,调查的对象涵盖了,学校的教职工、在校师生。
特别是对已经运行了与本系统同类产品的学校的师生使用选课管理系统心得体会进行了分析,总结出如下的需求信息:
(1)学生的需求:
能进行选课,查看管理员发布的选课信息,自己的选课情况,本人的基本信息,课程的成绩;
(2)教师的需求:
能查看自己的个人信息,及所授课的班级的所有学生的本门课程的成绩信息,并能进行增加和修改;
(3)管理员的需求:
对学生选课情况进行管理,包括发布选课信息,对学生的选课情况进行查看。
管理员还可以对授课老师的信息进行管理。
2.3数据流图
系统顶层图:
根据系统主要信息的处理功能,整个系统可以看作登陆管理,用户选课管理两个部分。
从而得出了学生选课管理系统的顶层图如下所示:
注:
F1:
用户登陆信息F2:
用户注册信息F3:
用户基本信息F4:
用户基本信息
F5:
学生选课信息清单F6:
学生选课信息F7:
登陆错误信息F8:
系统反馈用户信息
F9:
用户信息清单F10:
修改密码后的用户信息
数据流程图一层分解图
(1)用户登陆管理。
用户在登陆时,系统会进行判断。
用户一共有三种类型,分别是学生,教师和管理员。
其中,一部分教师是管理员。
在登陆的只有学生和教师两种类型,管理员的身份由系统自行判断。
在判定时需要查询用户信息库。
用户信息库,包括学生注册信息,教师注册信息,管理员信息等。
学生选课管理系统一层分解图——登陆管理,如下图所示:
注:
F2.1:
学生登陆信息F2.2:
教师登陆信息F2.3:
管理员登陆信息
F7.1:
用户身份信息F7.2:
修改密码的错误信息
(2)用户操作管理。
在登陆管理进行判断后,发送学生登陆信息,教师登陆信息,管理员登陆信息的其中一种。
根据用户身份信息的不同,进入不同的管理界面,相应的操作的功能,权限都有所不同。
如下图所示:
注:
F3.1:
原始学生信息F5.1:
学生更新后的选课信
F6.1:
学生查询的选课信息F8.1:
学生操作后返回的信息
注:
F3.2:
原始教师信息5.2:
教师更新后的选课信息
F6.2:
教师查询的选课信息F8.1:
教师操作后返回的信息
注:
F3.3:
原始管理员信息F9.1更新后的用户信息F6.3:
管理员查询的选课信息F8.1:
管理员操作后返回的信息F5.3:
管理员更新后的选课信息
数据流程图二层分解图
(1)学生管理。
将P2.1进行分解,学生管理包括,查看选课信息和个人信息,进行选课、重新选课。
学生选课管理系统二层分解图——学生管理如下图所示:
注:
F3.1:
学生个人信息F5.1.1:
增加后的选课信息F5.1.2:
删除后的选课信息
(2)教师管理。
将P2.2进行分解,教师管理包括,查看选课信息和个人信息,填写学生的成绩。
学生选课管理系统二层分解图——学生管理如下图所示:
注:
F3.2.1:
教师个人信息F3.2.2:
学生个人信息
F5.2.2:
增加后的学生成绩信息F5.2.3:
修改后的学生成绩信息
(3)教师管理。
将P2.3进行分解,管理员管理包括,1.管理学生信息,包括对学生信息的查询、增加,修改,删除;2.管理教师信息,包括对教师信息的查询、增加,修改,删除;3.选课信息管理,包括发布选课信息,增加,修改,删除选课课程等。
学生管理系统二层分解图——学生管理如下图所示:
注:
F3.3.1:
原始学生信息F3.3.2:
原始教师信息F3.3.3:
原始课程信息
F3.3.4:
原始教室信息F9.1.1:
修改后学生信息F9.1.2:
修改后的教师信息F9.1.3:
修改后的课程信息F9.1.3:
修改后的班级信息
2.4数据字典
数据流条目
用户登陆信息数据流条目
编号
F1
数据流名称
用户登陆信息
来源
用户
去向
P1:
登陆管理
简述
用户在登陆时输入的账号、密码和验证码
组成
用户名+密码+身份+验证码
用户身份信息数据流条目
编号
F2
数据流名称
用户身份信息
来源
P1:
登陆管理
去向
P2:
用户操作管理
简述
登陆系统判断用户身份后发送的信息
组成
用户名+密码+身份+验证码
用户注册信息数据流条目
编号
F3
数据流名称
用户注册信息
来源
用户信息库
去向
P1:
登陆管理
简述
系统从用户信息库中查询出来的用户注册信息
组成
[学生注册信息]+[教师注册信息]+[管理员注册信息]
用户基本信息数据流条目
编号
F4
数据流名称
用户基本信息
来源
D1:
用户信息库
去向
P2:
用户操作管理
简述
系统从用户信息库中查询出来的用户基本信息
组成
[学生信息]+[教师信息]+[管理员信息]
用户基本信息数据流条目
编号
F5
数据流名称
学生选课信息清单
来源
P2:
用户操作管理
去向
D2:
选课信息库
简述
用户操作数据后存入选课信息库中的信息
组成
学号+课程号+成绩
用户基本信息数据流条目
编号
F6
数据流名称
学生选课信息
来源
D2:
选课信息库
去向
P2:
用户操作管理
简述
用户操作数据后存入选课信息库中的信息
组成
学号+课程号+成绩+[班级信息]
用户基本信息数据流条目
编号
F7
数据流名称
登陆错误信息
来源
D2:
选课信息库
去向
P2:
用户操作管理
简述
用户登陆时,输入的用户名,密码或验证码错误
组成
错误信息
用户基本信息数据流条目
编号
F8
数据流名称
系统反馈用户信息
来源
D2:
选课信息库
去向
P2:
用户操作管理
简述
用户进行操作后,系统反馈给用户信息
组成
查询或操作显示的信息,或错误提示信息
用户基本信息数据流条目
编号
F9
数据流名称
用户信息清单
来源
P2:
用户选课管理
去向
D1:
用户信息库
简述
用户操作数据后存入用户信息库中的信息
组成
[学生信息]+[教师信息]+[管理员信息]
用户基本信息数据流条目
编号
F10
数据流名称
修改密码后的用户信息
来源
P1:
登陆管理
去向
D1:
用户信息库
简述
用户修改密码后存入用户信息库的信息
组成
用户名+密码+身份
数据处理
登陆管理数据处理
编号
P1
名称
登陆管理
输入流
F1、F3
输出流
F2、F7、F10
简述
对登陆信息进行管理
处理
判断用户登陆时输入登陆信息是否正确
用户操作管理数据处理
编号
P2
名称
用户操作管理
输入流
F2、F4、F6
输出流
F5、F8
简述
用户相关操作的管理
处理
根据用户的不同,进行不同的的用户操作管理
数据存储
数据存储处理
编号
数据存储名
输入数据流
删除数据流
流量
D1
用户信息库
F9、F10
F3、F4
大
D2
选课信息库
F6
F5
大
三、概念模型设计
3.1实体之间的联系
根据需求分析,归结出合适的联系:
1、一个学生最多能够选两门课,一门课可以被多个学生选
2、一个老师最多能教一门课,一门课可以被多个老师教授,
3、教师中只有一个是管理员
4、一个学生可以属于不超过两个临时班级,一个临时班级可以有多名学生
5、一名教师可以在多个临时班级上课,一个临时班级只有一名教师教授
3.2E-R图
局部E-R图
(1)学生课程联系E-R图
(2)教师课程关系E-R图
(3)学生临时班级联系E-R图
(4)管理员教师关系实体E-R图
(5)教师班级关系实体E-R图
(6)课程临时班级关系实体E-R图
全局E-R图
四、逻辑设计
4.1概念模型向关系模型的转换
根据需求分析中的E-R图,通过对实体的属性和之间的联系的分析,我们将其由概念模型向关系模型转化,并且根据范式化理论进行优化
1:
N联系的转化的关系模式
(1)教师课程联系概念模型向关系模型的转化
教师表(教师号,教师名,性别,年龄,身份,密码,课程号)
课程表(课程号,课程名,学分,上课时间,开课时间,结束时间)
(2)教师临时班级联系概念模型向关系模型的转化
教师表(教师号,教师名,性别,年龄,身份,密码)
临时班级表(班级号,班级名,人数,地点,教师号)
(3)课程临时班级联系概念模型向关系模型的转化
临时班级表(班级号,班级名,人数,地点,课程号)
课程表(课程号,课程名,学分,上课时间,开课时间,结束时间)
M:
N联系的转化的关系模式
(1)学生选课联系概念模型向关系模型的转化
学生表(学号,姓名,性别,年龄,系部,密码)
课程表(课程号,课程名,学分,上课时间,开课时间,结束时间)
选课表(学号,课程号,成绩)
(2)学生班级联系概念模型向关系模型的转化
学生表(学号,姓名,性别,年龄,系部,密码)
临时班级表(班级号,班级名,人数,地点)
学生班级关系表(学生号,班级号)
4.2概念模型的优化
确定范式级别
根据上述分析所归结出来的数据依赖的种类和在本系统实际的开发过程中,需要涉及多表的查询及表的修改和删除,且存在多值依赖的实际情况下,其关系模式应达到BCNF。
实施规范化处理
由于学生选课联系的关系模式、学生班级的关系模式和教师管理员联系的关系模式已经不存非平凡且非函数依赖额多值依赖,所以在这里不需要做处理。
各个关系模式的函数依赖集如下:
教师课程联系:
F={教师号→教师名,教师号→性别,教师号→年龄,
教师号→身份,教师号→密码,教师号→课程号}
班级临时班级联系:
F={班级号→班级名,班级号→人数,班级号→地点,班级号→教师号}
课程临时班级联系:
F={班级号→班级名,班级号→人数,班级号→地点,
班级号→课程号}
选课联系:
F={(学号,课程号)→成绩}
学生班级联系:
F={(学生号,班级号)}
(1)教师课程联系概念模型向关系模型的优化
教师表(教师号,教师名,性别,年龄,身份,密码)
课程表(课程号,课程名,学分,上课时间,开课时间,结束时间)
教师课程联系(教师号,课程号)
(2)教师临时班级联系概念模型向关系模型的优化
教师表(教师号,教师名,性别,年龄,身份,密码)
临时班级表(班级号,班级名,人数,地点)
教师临时班级关系(班级号,教师号)
(3)课程临时班级联系概念模型向关系模型的优化
临时班级表(班级号,班级名,人数,地点)
课程表(课程号,课程名,学分,上课时间,开课时间,结束时间)
课程临时班级关系(班级号,课程号)
经过规范化处理后的所有关系模如下:
学生表(学号,姓名,性别,年龄,系部,密码)
课程表(课程号,课程名,学分,上课时间,开课时间,结束时间)
教师表(教师号,教师名,性别,年龄,身份,密码)
临时班级表(班级号,班级名,人数,地点)
教师课程关系(教师号,课程号)
教师临时班级关系(班级号,教师号)
选课表(学号,课程号,成绩)
学生临时班级关系表(学生号,班级号)
课程临时班级关系(班级号,课程号)
五、源代码及查询截图
5.1数据库的存储结构
通过需求分析,概要设计和逻辑设计流程得到本系统的数据库结构。
数据库的表设计
进一步确定上一章逻辑设计中设计好的关系模式中各个数据项的类型和长度,将每个关系转换为数据库中的二维表格,并确定了各个表的主键和外键,得到以下表结构:
学生表
字段名称
字段含义
数据类型及长度
约束
默认值
Sno
学号
varchar(15)
主键
Sname
姓名
varchar(15)
非空
Ssex
性别
varchar
(2)
男
Sage
年龄
int
>0或<40
Sclass
班级
varchar(15)
Sdept
系部
varchar(20)
Spass
密码
varchar(15)
非空
教师表
字段名称
字段含义
数据类型及长度
约束
默认值
Tno
教师号
varchar(15)
主键
Tname
姓名
varchar(15)
非空
Tsex
性别
varchar
(2)
男
Tage
年龄
int
>0或<100
Tpass
密码
varchar(15)
Status
身份
varchar(10)
课程表
字段名称
字段含义
数据类型及长度
约束
默认值
Cno
课程号
varchar(15)
主键
Cname
课程名
varchar(15)
非空
Credit
学分
int
Ctime
年龄
varchar(15)
Cbegintime
班级
varchar(15)
临时班级表
字段名称
字段含义
数据类型及长度
约束
默认值
Csno
课程号
varchar(15)
主键
Csname
课程名
varchar(15)
非空
Address
地址
varchar(15)
Number
人数
Int
>=0或<=100
选课表
字段名称
字段含义
数据类型及长度
约束
默认值
Sno
课程号
varchar(15)
主键,外键
Cname
课程名
varchar(15)
主键,外键
Grade
成绩
Int
>=0或<=100
学生临时班级关系表
字段名称
字段含义
数据类型及长度
约束
默认值
Sno
学号
varchar(15)
主键,外键
Csno
班级号
varchar(15)
主键,外键
教师课程关系表
字段名称
字段含义
数据类型及长度
约束
默认值
Tno
教师号
varchar(15)
主键,外键
Cno
课程号
varchar(15)
外键
教师临时班级关系表
字段名称
字段含义
数据类型及长度
约束
默认值
Csno
班级号
varchar(15)
主键,外键
Tno
教师号
varchar(15)
外键
课程临时班级关系表
字段名称
字段含义
数据类型及长度
约束
默认值
Csno
班级号
varchar(15)
主键,外键
Cno
课程号
varchar(15)
外键
数据的存放位置的设计
根据本系统的数据库的使用情况,主数据文件信息量大且使用频繁将其存储在高速存储器(硬盘)上。
将表和表上的索引存储在不同的磁盘上以便提高查询效率,同时这样可以提高物理I/O读写效率。
数据库备份文件和日志文件等文件因为使用频率小而且数据量非常大,存放在低速存储设备上。
关系模式的存取方法
关系模式采用索引存取方法与聚簇存取方法共用。
数据库安全性
在数据库中,由于用户的身份不同,对数据库的访问权限也就不同。
管理员几乎能够对所有的用户自定义表进行操作(包括增、删、改、查)。
但根据实际情况,学生一旦选课成功,管理员是无法对其选课信息进行修改。
同样,学生与教师对数据库的访问权限就更加小了。
这样也就保证了数据库安全性。
另外一方面,数据库表中,各表之间根据实体完整性、参照完整性、域完整性设置了各种约束。
一旦一张表被非法操作,如删除,修改。
也会影响其它的表。
所以这就要求DBA定时进行备份,防止当数据丢失时,引起不可估量的损失。
5.2实现
根据概要设计和逻辑设计的结果,在计算机上建立实际的数据库结构,导入数据进行程序调试。
数据库的实现
(1)创建数据库Student
createdatabaseStudent
on
(
name='学生选课管理库',
filename='E:
\db\学生选课管理库.mdf',
size=5,
maxsize=15,
filegrowth=2
)
视图的实现
(1)创建查询可供选择课程的视图
createviewcinfo
as
selectame,course.ccredit,class.address,course.ctime,course.cbegintime,course.cendtime,class.number,o,class.csname,class.csno
fromcourse,tc,class,cc
whereo=oando=oandclass.csno=cc.csno
(2)创建教师信息视图
createviewtinfo
as
selectteacher.tno,teacher.tname,teacher.tsex,teacher.tage,status,ame
fromteacher,course,tc
whereteacher.tno=tc.tnoando=o;
(3)创建教师教师授课视图
createviewtcinfo
as
selectteacher.tno,teacher.tname,o,ame
fromteacher,course,tc
whereteacher.tno=tc.tnoando=o
(4)学生的选课信息视图
createviewscinfo
as
selectstudent.sname,ame,course.ccredit,course.ctime,course.cbegintime,course.cendtime,student.sno
fromstudent,course,sc
wherestudent.sno=sc.snoando=o
(5)教师任教情况
createviewctinfo
as
selectteacher.tno,teacher.tname,class.csno,class.csname
fromclass,teacher,ct
whereclass.csno=ct.csnoandct.tno=teacher.tno
(6)教师课程班级之间关系的视图
createviewtcs
as
selecto,tc.tno,cc.csnofromcc,tcwhereo=o
(7)学生课程班级之间的关系的视图
createviewscc
as
selectscs.sno,scs.csno,ofromscs,ccwherescs.csno=cc.csno
select*fromsc
(8)学生的已选课程的成绩
createviewscgrade
as
s