数据库设计排课表管理系统.docx
- 文档编号:24235728
- 上传时间:2023-05-25
- 格式:DOCX
- 页数:36
- 大小:940.32KB
数据库设计排课表管理系统.docx
《数据库设计排课表管理系统.docx》由会员分享,可在线阅读,更多相关《数据库设计排课表管理系统.docx(36页珍藏版)》请在冰豆网上搜索。
数据库设计排课表管理系统
《数据库原理与应用》课程设计
—排课表管理系统
班级:
计算机12-2
学号:
12041216
姓名:
周行
一.管理系统的主要功能表或功能图
功能序号
功能名称
功能说明
1
学生管理
登记学生名单,并提供查询
2
教师管理
登记教师基本情况名单,并提供查询
3
课程管理
登记课程基本情况,并提供管理
4
教室管理
统计教室基本情况,并提供分配功能
5
授课管理
统筹教师讲授课程,并提供查询
7
选课管理
登记学生选课信息,并提供查询
8
教室安排
为课程安排教室,并提供视图
9
时间分配
合理安排教师及学生时间,并提供查询
二.画出管理系统顶层的数据流图和某一子模块的数据流图
三.根据概念结构设计的结果画E-R图
四.数据库设计包括:
数据库名称、数据文件、日期文件的设置。
数据库名称:
课程安排表。
状态:
正常
所有者:
dell\dell1
创建时间:
2014/11/26
大小:
12MB
可用空间:
8.42MB
用户数:
4
五.数据表设计包括:
数据表结构设计、录入的原始数据。
说明:
(1)数据库中包含的数据表的个数及名称。
数据表个数:
12
数据表名称:
班级表;
教师表;
学生表;
课程表;
教室表;
教师授课表;
教师意见表;
时间表;
教师时间状态表;
学生时间状态表;
教室时间状态表;
学生选课表;
视图个数:
2
视图名称:
公共任选课;
教室安排表;
(2)数据表结构设计需填写下表。
班级表
字段名称
数据类型
是否允许空值
约束
说明
CId
nchar(5)
×
主键
班级号
CName
nchar(10)
√
班级名
CNumber
int
√
班级人数
教师表
字段名称
数据类型
是否允许空值
约束
说明
TId
nchar(10)
×
主键
教师号
TName
nchar(20)
×
教师姓名
TSex
nchar(5)
√
CHECK
性别
DId
nchar(3)
√
所属学院
Title
nchar(10)
√
职称
学生表
字段名称
数据类型
是否允许空值
约束
说明
SId
nchar(8)
×
主键
学号
SName
nchar(20)
√
学生姓名
SSex
nchar(5)
√
CHECK
性别
SAge
int
√
年龄
SCId
nchar(4)
×
外码
班级号
课程表
字段名称
数据类型
是否允许空值
约束
说明
CoId
nchar(7)
×
主键
课程号
CoName
nchar(20)
√
唯一键
课程名称
LTime
int
√
默认值
学时
[Function]
nchar
(2)
√
教学用具
教室表
字段名称
数据类型
是否允许空值
约束
说明
CRId
nchar(7)
×
主键
教室号
ADnumber
int
√
教师授课表
字段名称
数据类型
是否允许空值
约束
说明
TId
nchar(10)
×
主键,外键
教师号
CoId
nchar(7)
×
主键,外键
课程号
LTime
int
√
学时
教师意见表
字段名称
数据类型
是否允许空值
约束
说明
TId
nchar(10)
×
主键,外键
教师号
think1
nchar(100)
√
意见1
Think2
nchar(100
√
意见2
时间表
字段名称
数据类型
是否允许空值
约束
说明
TimeId
char
(2)
×
主键
时间号
TimeName
char(10)
√
时间代称
教师时间状态表
字段名称
数据类型
是否允许空值
约束
说明
TId
nchar(10)
×
主键,外键
教师号
TimeId
char
(2)
×
主键,外键
时间号
State
nchar
(1)
×
默认值
状态
学生时间状态表
字段名称
数据类型
是否允许空值
约束
说明
SId
nchar(8)
×
主键,外键
学号
TimeId
char
(2)
×
主键,外键
时间号
State
nchar
(1)
×
默认值
状态
教室时间状态表
字段名称
数据类型
是否允许空值
约束
说明
CRId
nchar(7)
×
主键,外键
教室号
TimeId
char
(2)
×
主键,外键
时间号
State
nchar
(1)
×
默认值
状态
学生选课表
字段名称
数据类型
是否允许空值
约束
说明
SId
nchar(8)
×
主键,外键
学号
CoId
nchar(7)
×
主键,外键
课程号
CCoName
nchar(20)
√
课程名称
CTName
nchar(20)
√
授课老师
CLTime
int
√
课时
(3)数据表记录需用图说明。
班级表
教师表
学生表
课程表
教室表
教师授课表
教师意见表
时间表
教师时间状态表
学生时间状态表
教室时间状态表
学生选课表
六.数据库功能设计
要求:
可以使用自定义函数、存储过程(含游标)。
说明:
每个自定义函数、存储过程要求包含:
名称、功能、入口参数、源代码、结果(用图说明)。
编码说明:
学号采用8位字符串表示。
例:
12041216从左到右分别表示入学时间,学院,系,班级,随机数(按报道先后)。
(可扩展)
教室号采用7位字符串表示。
例:
0204081从左到右分别表示所在教学楼,所在楼层,随机数(从1递增),功能。
功能序号:
1空教室;2办公室;3计算机实验室;4土木实验室;5食品实验室;6多媒体教室,7仓库。
(可扩展,可缩减)
课程号采用7位字符串表示。
例:
0024011从左到右分别表示课程性质,所属学院,系别,班级,是否任选(专业),随机数。
课程性质:
0公共课;1专业课;2自然任选课;3人文任选课;4艺体任选课;
例:
1041206表示C语言课程,为工学院计算机系二班专业课。
1041012表示计算机维护课程,为工学院计算机系专业任选课;
时间编号采用4位字符串表示。
例:
0111分别表示星期总数,星期几,第几节。
班级号采用4位字符串表示。
例:
0412从左到右分别表示学院,系,随机数。
(可扩展)。
添加存储过程(以学生为例)
功能:
添加学生
入口参数:
学号,学生姓名,性别,年龄,班级
源代码:
createprocedure添加学生@SIdnchar(8),@SNamenchar(20),@SSexnchar(5),@SAgeint,@SCIdnchar(4)
as
begin
insertinto学生表(SId,SName,SSex,SAge,SCId)
values(@SId,@SName,@SSex,@SAge,@SCId)
End
建立公共任选课视图
功能:
建立公共任选课视图
入口参数:
无
createview公共任选课
as
select*
from课程表
whereCoIdlike'2_%'orCoIdlike'3_%'orCoIdlike'4_%'
注释:
2,3,4开头课程分别为自然任选课;人文任选课;艺体任选课;只显示任选课!
!
建立教室安排表视图
功能:
建立教室安排表视图
入口参数:
无
createview教室安排表
as
selectCoId,CoName,CRId
from课程表a,教室表b
wherea.[Function]=SUBSTRING(b.CRId,5,1)andb.ADnumber>=dbo.选某门课人数(a.CoId)
注释:
[a.[Function]=SUBSTRING(b.CRId,5,1)]表示课程所需功能与教室功能匹配;
[b.ADnumber>=dbo.选某门课人数(a.CoId)]表示教室容纳人数大于等于选某门课人数;
[dbo.选某门课人数(a.CoId)]选某门课人数自定义函数。
游标教师号修改教师信息
功能:
依据教师号修改教师信息
入口参数:
已知教师号,修改的姓名,性别,学院号,职称
源代码:
createprocedure游标教师号修改教师@TIdnchar(10),@TNamenchar(20),@TSexnchar(5),@DIdnchar(3),@Titlenchar(10)
as
begin
declare@TId1nchar(10)
declare游标cursorforselectTIdfrom教师表
open游标
fetchnextfrom游标into@TId1
while@@FETCH_STATUS=0
begin
if@TId1=@TId
begin
select'原记录',TId,TName,TSex,DId,Titlefrom教师表where@TId=TId
update教师表
setTName=@TName,TSex=@TSex,DId=@DId,Title=@Title
whereCurrentof游标
select'已改记录',TId,TName,TSex,DId,Titlefrom教师表whereTId=@TId
break
end
fetchnextfrom游标into@TId1
end
close游标
deallocate游标
end
结果:
生成课程表
功能:
以学生为单位,生成课程表
入口参数:
学生学号
源代码:
createprocedure生成课程表@SIdnchar(8)
as
begin
declare@CoIdnchar(7)
declare@TIdnchar(10)
declare@CRIdnchar(7)
declare@TimeIdchar
(2)
declare@教室状态nchar
(1)
declare@教师状态nchar
(1)
declare@学生状态nchar
(1)
declare@xint--用于判断循环是否是@@FETCH_STATUS=0循环完全结束
declare@yint--用于判断是教师状态影响,还是学生状态影响
set@x=2
declare游标cursorforselectCCoIdfrom学生选课表whereCSId=@SId
open游标
fetchnextfrom游标into@CoId
while@@FETCH_STATUS=0
begin
select@TId=TIdfrom教师授课表whereCoId=@CoId
if@CoId='0011000'
begin
declare游标cursorforselectTimeIdfrom时间表whereTimeName='公共高数'
declare游标cursorforselectCRIdfrom教室安排表whereCoId=@CoId
end
elsebeginif@CoIdlike'005100_'
begin
declare游标cursorforselectTimeIdfrom时间表whereTimeName='公共英语'
declare游标cursorforselectCRIdfrom教室安排表whereCoId=@CoId
end
elsebeginif@CoIdlike'1____1_'
begin
declare游标cursorforselectTimeIdfrom时间表whereTimeName='专业任选'
declare游标cursorforselectCRIdfrom教室安排表whereCoId=@CoId
end
elsebeginif@CoIdlike'2%'or@CoIdlike'3%'or@CoIdlike'4%'
begin
declare游标cursorforselectTimeIdfrom时间表whereTimeName='公共选修'
declare游标cursorforselectCRIdfrom教室安排表whereCoId=@CoId
end
elsebeginif@CoIdlike'1____0_'
begin
declare游标cursorforselectTimeIdfrom时间表whereTimeNamelike'专业课_'
declare游标cursorforselectCRIdfrom教室安排表whereCoId=@CoId
end
else
begin
declare游标cursorforselectTimeIdfrom时间表
declare游标cursorforselectCRIdfrom教室安排表whereCoId=@CoId
end
end
end
end
end
--依据课程性质粗略选择课程时间同时定义查询教室游标
open游标
fetchnextfrom游标into@TimeId
while@@FETCH_STATUS=0
begin
select@教师状态=Statefrom教师时间状态表whereTimeId=@TimeIdandTId=@TId
select@学生状态=Statefrom学生时间状态表whereTimeId=@TimeIdandSId=@SId
if@学生状态='0'
begin
if@教师状态='0'
begin
open游标--利用游标找合适的教室
fetchnextfrom游标into@CRId
while@@FETCH_STATUS=0
begin
select@教室状态=Statefrom教室时间状态表whereTimeId=@TimeIdandCRId=@CRId
if@教室状态='0'
begin
select@SId学号,@TimeId时间号,@CoId课程号,@TId教师号,@CRId教室号--显示课程表
update教室时间状态表
setState='1'
whereCRId=@CRIdandTimeIdin(selectTimeIdfrom时间表whereTimeNamein(selectTimeNamefrom时间表whereTimeId=@TimeId))--将教室状态置.
update教师时间状态表
setState='1'
whereTId=@TIdandTimeIdin(selectTimeIdfrom时间表whereTimeNamein(selectTimeNamefrom时间表whereTimeId=@TimeId))--将教师状态置.
update学生时间状态表
setState='1'
whereSId=@SIdandTimeIdin(selectTimeIdfrom时间表whereTimeNamein(selectTimeNamefrom时间表whereTimeId=@TimeId))--将学生状态置.
set@x=0--@x标记
print'跳出教室循环'
break--跳出教室循环
end
else
begin
set@x=2--@x标记
fetchnextfrom游标into@CRId
end
end
if@x=2
beginprint'课程:
'+@CoId+'没有找到合适教室!
!
'set@x=1end--@x标记
close游标
deallocate游标
end
else
beginfetchnextfrom游标into@TimeId
end--寻找教师合适时间
end
else
beginfetchnextfrom游标into@TimeId
end--寻找学生合适时间
if@x=0--利用@x标记判断内循环
begin
print'跳出时间循环'break
end
else
beginfetchnextfrom游标into@TimeIdend--利用@x判断是找到合适教室而跳出循环,还是循环内部@@FETCH_STATUS=0而造成循环终结
end
ifexists(select*fromMASTER.dbo.syscursorswherecursor_name='游标')--判断游标是否已被释放
begindeallocate游标end
close游标
deallocate游标
fetchnextfrom游标into@CoId
end
close游标
deallocate游标
End
结果:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 设计 课表 管理 系统