数据库原理与技术中学排课系统的数据库实现文档格式.docx
- 文档编号:20066147
- 上传时间:2023-01-16
- 格式:DOCX
- 页数:16
- 大小:178.40KB
数据库原理与技术中学排课系统的数据库实现文档格式.docx
《数据库原理与技术中学排课系统的数据库实现文档格式.docx》由会员分享,可在线阅读,更多相关《数据库原理与技术中学排课系统的数据库实现文档格式.docx(16页珍藏版)》请在冰豆网上搜索。
(6)将E-R图转换成关系模式,并注明主码和外码;
(7)建立数据字典;
(8)创建数据库;
(9)根据题目的要求写查询、存储过程、触发器等。
题目:
(11)某中学的排课管理系统
●实现班级、课程等基本信息的管理;
●实现学生、教师信息的管理;
●实现班级课程及课程的任课教师和排课管理;
●创建存储过程检测指定教师、指定节次是否有课;
●创建存储过程生成指定班级的课程表;
●创建存储过程生成指定老师的课程表;
●建立数据库相关表之间的参照完整性约束。
三、说明书(含需求分析、系统数据库的设计、数据字典、数据库及数据库对象创建的SQL语句、其他题目要求完成的查询、视图、存储过程、触发器等的创建代码)。
题目为第11题(中学的排课管理系统)
1、问题的描述
排课系统为了减轻教务人员的工作量,实现教务工作自动化,解决排课这一大难的教务办公软件。
尤其针对中学的排课一直都没有很好的解决方法,但是此问题又是每个学校在每个学期都会碰到的必要行政作业。
在查阅了有关资料了解后,在分析以往一些排课软件的基础上,提出一个中学通用排课系统的设计方法,并对一些具体的问题给出相应解决方案。
但是,由于技术、经验的有限和数据量过大,目前我们很难做出一个满足所有需要的排课系统。
因为它不仅要考虑到教室冲突问题和教师冲突问题,还要考虑到分段课、单双周课时的资源利用问题;
另外由于中学的教学特点,还要处理合班课、分班课、体育课与选修课等特殊课程。
针对这些问题,在此专门对数据库设计作了一些探索,并于架构的选择和模块的划分上经过精心调整,在系统的设计上要体现了人性化的操作。
该设计贴近用户需求,功能完整,架构合理,并用大量的框图模型体现了系统的规划。
每次输入数据后,用手工更改数据库存量和安排课程,另外课表也无法用限制条件自动生成.以及直接导出到EXCLE表中,所以,迫切希望有一套完全适合排课管理应用的软件,以减轻管理人员的工作负担。
2.需求分析
2.1需求分析
利用计算机实现计算机自动排课管理势在必行。
对于教育单位来说,利用计算机支持其高效率完成排课管理的日常事务,是适应现代教学制度要求、推动教学管理走向科学化、规范化的必要条件;
而排课管理是一项琐碎、复杂而又十分细致的工作,课表信息录入,教师授课安排,限制条件输入,课表的自动生成等管理,一般不允许出错,如果实行手工操作,须手工填制大量的表格,这就会耗费教育工作人员大量的时间和精力,计算机进行排课工作的管理,不仅能够保证各项信息准确无误、快速输出,同时计算机具有手工管理所无法比拟的优点.例如:
检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。
这些优点能够极大地提高排课管理的效率,也是教育的科学化、正规化管理,与世界接轨的重要条件。
本系统在性能上应达到如下要求:
●系统软件运行应该速度快、稳定、可靠,具有很高的健壮性和容错、纠错能力;
●系统软件操作上应简单、方便,界面简洁明了、美观;
●系统软件应能具有较高的安全性,对内对外都有严格的身份认证和数据保密的措施;
●系统软件在结构上应具有很好的可扩展性,便于将来的功能扩展和维护;
数据计算准确无误,精确度符合业务的需要。
2.2系统结构图
2.3数据流图
学生表班级课表
教师表课程表(开课目录)
3.逻辑结构设计
3.1局部E-R图
1.教师E-R图
2.班级E-R图
3.课程E-R图
4.学生E-R图
3.2全局E-R图
3.3数据字典
1班级表
字段名称
数据类型
可否为空
说明
班级编号
Nvarchar(50)
主键
班级人数
Int
Null
本班人数
所在教室
NotNull
班级所在教室
年级
班级所属年级
班主任
班主任姓名
2课程表
课程编号
课程号
课程名称
每周节数
Int
每周课程节数
3教师表
教师编号
6位编码
教师姓名
学历
教师学历
职务
教师担任职务
职称
教师的职称
所任课程
主表为课程表
电话
联系电话
邮箱
联系邮箱
5学生表
学号
姓名
性别
Char
(2)
男女
入学时间
datatime
时间
成绩
Float
nvarchar(50)
外键
三位编码
6排课表
ID
自增1
班级课表ID
主表为课程信息
学年
null
排课年份
学期
排课月份
星期
Notnull
星期数
节号
第几节
6班级课程表
主表为班级信息
任课教师
上,下学期
4.数据库实现
4.1创建表的sql语句
1.班级表
createtable班级表(班级编号nvarchar(50)primarykey,
班级人数int,所在教室nvarchar(50)notnull,年级nvarchar(50)notnull,班主任nvarchar(50))
2.班级课程表
createtable班级课程表(班级课表IDintprimarykey,
班级编号nvarchar(50)notnull,课程编号nvarchar(50)notnull,教师编号nvarchar(50)notnull,学年nvarchar(50),学期varchar(50))
3.教师表
createtable教师表(教师编号nvarchar(50)primarykey,
教师姓名nvarchar(50)notnull,学历nvarchar(50),职务nvarchar(50),所任课程nvarchar(50),电话varchar(50),邮箱varchar(50))
4.排课表
createtable排课表(IDintprimarykey,
班级课表IDintnotnull,学年nvarchar(50),学期nvarchar(50),星期int,节号int)
5.学生表
createtable学生表(学号nvarchar(50)primarykey,
姓名nvarchar(50)notnull,入学时间datatime,成绩nvarchar(50),班级编号nvarchar(50)notnull,年级nvarchar(50))
6.课程表
createtable课程表(课程编号nvarchar(50)primarykey,
课程名称nvarchar(50)notnull,每周节数int))
4.2创建存储过程检测指定教师、指定节次是否有课
1.创建存储过程的代码:
createprocup_jssfyk(@jsxmnvarchar(50),@xqnvarchar(50),@jhnvarchar(50))
as
begin
declare@xnvarchar(50),@ynvarchar(50)
select@x=教师编号from班级课程表where班级课表ID=(
select班级课表IDfrom排课表where星期=@xqand节号=@jh)
select@y=教师编号from教师表where教师姓名=@jsxm
if(@x=@y)
print'
该教师本时段有课:
'
selectdistinct课程名称from课程表
join班级课程表on班级课程表.课程编号=课程表.课程编号and教师编号=@x
end
elseprint'
该教师本时段没课'
2执行语句:
execup_jssfyk'
杨宇'
3,4
3.结果:
3.1当教师有课的时候就查询出所上的课程:
3.2当教师没有该时段没有课的时候:
例如:
马玉'
5,1
4.删除存储过程的语句:
dropprocup_jssfyk
4.3创建存储过程生成指定班级的课程表
3.1可以创建视图显示出课表(创建视图是为了显示数据的方便)
创建视图的语句:
createVIEWV_kb
SELECTTOP(100)PERCENT班级课程表.班级编号,排课表.星期,排课表.节号,课程表.课程名称
FROM班级课程表INNERJOIN
课程表ON班级课程表.课程编号=课程表.课程编号INNERJOIN
排课表ON班级课程表.班级课表ID=排课表.班级课表ID
ORDERBY班级课程表.班级编号,排课表.节号,排课表.星期
Go
3.2创建存储过程生成指定班级的课程表
说明:
前面的定义视图生成课表只是查询出了所有的课而已,并没有按一个课表的形式显示出来,下面的查询将查询结果按照我们平常所见的课表的形式显示出来.
1.创建存储过程的语句:
createprocup_xukb1(@bjbhnvarchar(50))
SELECT节号,
(select课程名称from课程表a,班级课程表b,排课表c
wherea.课程编号=b.课程编号andb.班级课表ID=c.班级课表IDandb.班级编号=@bjbhandc.节号=x.节号andc.星期=1)as星期一
(select课程名称from课程表a,班级课程表b,排课表c
wherea.课程编号=b.课程编号andb.班级课表ID=c.班级课表IDandb.班级编号=@bjbhandc.节号=x.节号andc.星期=2)as星期二,
wherea.课程编号=b.课程编号andb.班级课表ID=c.班级课表IDandb.班级编号=@bjbhandc.节号=x.节号andc.星期=3)as星期三,
(select课程名称from课程表a,班级课程表b,排课表c
wherea.课程编号=b.课程编号andb.班级课表ID=c.班级课表IDandb.班级编号=@bjbhandc.节号=x.节号andc.星期=4)as星期四,
wherea.课程编号=b.课程编号andb.班级课表ID=c.班级课表IDandb.班级编号=@bjbhandc.节号=x.节号andc.星期=5)as星期五
FROM排课表x
groupby节号
orderby节号
end
2.执行语句:
execup_xukb1'
1'
3.结果:
4.4创建存储过程生成指定老师的课程表
前面的定义视图的生成课表只是查询出了所有的课而已,并没有按一个课表的形式显示出来,下面的查询将查询结果按照我们平常所见的课表的形式显示出来.
createprocup_jskb1(@jsxmnvarchar(50))
wherea.课程编号=b.课程编号andb.班级课表ID=c.班级课表IDandb.教师编号=(select教师编号from教师表where教师姓名=@jsxm)
andc.节号=x.节号andc.星期=1)as星期一
wherea.课程编号=b.课程编号andb.班级课表ID=c.班级课表IDandb.教师编号=(select教师编号from教师表where教师姓名=@jsxm)
andc.节号=x.节号andc.星期=2)as星期二,
andc.节号=x.节号andc.星期=3)as星期三,
andc.节号=x.节号andc.星期=4)as星期四,
andc.节号=x.节号andc.星期=5)as星期五
execup_jskb1'
4.5.建立数据库相关表之间的参照完整性约束。
4.7.结束语(结论)
1.本设计中我做的是中学的排课系统,由于中学课程的一些特殊性,每个班级都有固定的教室,在这个数据库设计中就没有考虑教室.
2.系统中是按照每天八节课的结构来设计课表的,可能在实际的运用当中,我们还应该考虑早自习,晚自习,所以在具体的运用是该数据库还有待完善.
3.创建存储过程的时候,三个存储过程有点不一样,查询班级课表的时候,我们是直接给定班级编号,但是在查询关于的教师的是否有课,或查询课表的时候,我们需要用到教师编号,但是结合实际,我们一般不会去记每个教师的教师编号,而是直接给定其姓名,所以在查询教师的课的时候,给定的是教师姓名,先在教师表中将其的教师编号查出.
4.查询出课表,生成课表是在编程中实现的,在数据库中没有实际的意义,但是由于本设计我们只是做数据库的部分,我们要生成课表,就无法像我们所使用的真实课表一样,所以只是按顺序显示出班级的课程,及教师的课程.
5.经过查阅资料以及请教老师,能过实现在数据库中像一个基本课表的形式显示出课程信息.像教师课程表中,没有课程的时段全为NULL.
6.数据库中的数据只是填充了一些简单的例子数据,例如班级的课表,只是填充了一个班的课表信息.
四、数据库的完整备份
备份文件附加在缩包中(zxpkxt.bak)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 原理 技术 中学 系统 实现