数据库课程设计图书馆管理系统Word下载.docx
- 文档编号:22216349
- 上传时间:2023-02-03
- 格式:DOCX
- 页数:17
- 大小:88.48KB
数据库课程设计图书馆管理系统Word下载.docx
《数据库课程设计图书馆管理系统Word下载.docx》由会员分享,可在线阅读,更多相关《数据库课程设计图书馆管理系统Word下载.docx(17页珍藏版)》请在冰豆网上搜索。
参照完整性、实体完整性、自定义完整性(包括触发器)
③安全性设计:
设置用户,并相应设计用户的权限或角色(用户设计至少3个,有不同的权限)
④使用触发器、游标或存储过程完成相关操作,至少使用1种技术。
(6)以上内容,请详细描述,并有必要抓图.
四、实验结果及分析
(一)需求分析
1、信息需求:
教务管理系统涉及的实体有:
学生:
学号、姓名、性别;
班级:
班级名称、学制、入学年份;
专业:
专业编号、专业名称;
系部:
系编号、系名称;
教师:
教工号、姓名;
课程:
课程号、课程名、学分。
实体间的联系:
一个系有若干专业,每个专业有若干个班级,每个班有若干个学生;
每个系有若干教师,教师分为两种:
授课教师和教学秘书,每个系有一名教学秘书;
一名教师可以教授多门课程,可以教授多个班级;
每个学生可以学习多名课程,每门课程可以被若干个学生学习。
学生选修课程分为必修和选修,每门课程都有一个期末成绩,可以重修或补考两次,总评取3个成绩中最高的,还有选修课程的年份和学期。
2、功能需求:
教务管理系统的用户分为:
学生、教师、管理员。
学生可以查询成绩、修改密码、选修课程。
教师又分为普通教师和教学秘书,普通教师可以登记成绩、查询成绩;
教学秘书可以查询成绩、为某个班级指定必修课、为教师指定其教授的课程及授课班级。
管理员具有管理系统的所有权利。
数据流图:
(二)概念结构设计
(三)逻辑结构设计
1、根据系统的概念结构分析,得出其关系模式如下:
系部(系编号,系名称)
专业(专业编号,所属系部,专业名称)
班级(班级名称,所属专业,所属系部)
学生(学号,姓名,性别,班级)
课程(课程号,课程名,学分)
教工(教工号,姓名,所属系部)
就职(系编号,系教学秘书)
教授(教工号,课程号,教授班级)
学习(学号,课程号,期末,总评,补考1,补考2,学期,学年,课程类型)
因为关系模式“就职”和“系部”具有相同的码,所以将两个关系模式合并,得到关系模式:
系部(系编号,系名称,系教学秘书)
2、设计视图:
(1)为学生查询成绩设计视图:
成绩1(课程名,期末,总评,重修1/补考1,重修2/补考2,学分,必修/选修,学年,学期)。
(2)为教师查询成绩设计视图:
成绩2(学号,姓名,课程名,期末,总评,必修/选修,学年,学期,班级)
(3)为教学秘书查询成绩设计视图:
成绩3(学号,姓名,课程名,总评,必修选修,学年,学期,班级)
(4)为教师上传成绩设计视图:
成绩4(学号,姓名,课程名,成绩)
(四)物理设计
1、根据逻辑结构所设计的关系模式创建基本表,并创建主键。
系统自动为主键字段创建索引。
系部表:
department
列名
数据类型
长度
允许空
主键/外键
索引
备注
dno
varchar
2
否
主键
升序
系编号
dname
10
系名
dtea
是
外键:
teacher.tno
系教学秘书
专业表:
subject
sbno
主
键
专业编号
department.dno
所属系部
sbname
专业名
班级表:
class
备
clname
20
班级名
所属专业
grade
4
入学年份
课程表:
course
cno
cname
credit
学生表:
student
sno
12
学号
sname
姓名
ssex
性别
class.clname
班级
教工表:
teacher
tno
18
教工号
tname
8
教工姓名
tsex
教授表:
tc
o
课程号
授课班级
学习表:
sc
student.sno
score
numernic
9
期末
sl
总评
score1
重修/补考1
score2
重修/补考2
term
1
学期
xyear
学年
type
6
课程类型
2、根据系统需要设计索引
(1)查询学生信息时经常要根据学生所在班级进行查询,为“学生表”的“班级”字段创建聚簇索引。
(2)查询教师信息时经常要根据教师所在系进行查询,为“教工表”的“所在系”
字段创建聚簇索引。
(五)实施
1、登录控制
本系统采用SQLSERVER身份验证,用户需要提供用户名和密码才能登陆数据库。
2、数据完整性
(1)实体完整性
为关系定义主键:
关系
系部
专业
学生
教工
课程
教授
学习
主码
(sbno,department)
(tno,cno,class)
(sno,cno)
(2)参照完整性
为关系定义外键:
department.teareferencesteacher.tno
subject.departmentreferencesdepartment.dno
class.departmentreferencesdepartment.dno
student.classreferencesclass.clname
teacher.departmentreferencesdepartment.dno
tc.tnoreferencesteacher.tno
oreferenceso
tc.classreferencesclass.clname
sc.snoreferencesstudent.sno
(3)自定义完整性
①student表的ssex属性只允许取“男”或“女”:
check(ssex=’男’orssex=’女’);
②sc表的score、sl、score1、score2属性值应该在0~100之间:
check(score>
=0andscore<
=100)、check(sl>
=0andsl<
=100)、check(score1>
=0andscore1<
=100)
、check(score2>
=0andscore2<
③系部名称、专业名称、班级名称都取唯一值:
UNIQUE
④创建触发器T2,作用:
添加学生信息时自动根据其学号生成其登录密码
createtriggerT2
onstudent
forinsert
as
ifupdate(sno)
begin
declare@spswchar(12)
select@spsw=snofrominserted
updatestudent
setspsw=@spsw
wheresno=(selectsnofrominserted)
end
⑤创建触发器T3,作用:
添加教师信息时自动根据其工号生成其登录密码
3、安全性设计
本系统用户分为四类:
管理员、学生、教师、教学秘书
管理员具有管理系统的所有权利;
学生可以查询成绩、修改密码、选修课程;
教师可以登记成绩、查询成绩;
--创建管理员用户
EXECsp_addloginadmin,admin
USEstu_course
EXECsp_grantdbaccessadmin,admin
--创建学生用户
EXECsp_addloginstudent,student
EXECsp_grantdbaccessstudent,student
--创建教师用户
EXECsp_addloginteacher,teacher
EXECsp_grantdbaccessteacher,teacher
--创建教学秘书用户
EXECsp_addlogindtea,dtea
EXECsp_grantdbaccessdtea,dtea
4、其它功能设计
①创建触发器T1:
添加或更改学生成绩时,自动生成总评
createtriggerT1
onsc
forinsert,update
ifupdate(score)orupdate(score1)orupdate(score2)
begin
declare@scorenumeric(18,1),@score1numeric(18,1),@score2numeric(18,1)
select@score=scorefrominserted
select@score1=score1frominserted
select@score2=score2frominserted
if@scoreisnotnulland@score1isnotnulland@score2isnotnull
updatesc
setsl=(
casewhen@score>
@score1and@score>
@score2then@score
when@score1>
@scoreand@score1>
@score2then@score1
else@score2end
)
wheresno=(selectsnofrominserted)andcno=(selectcnofrominserted)
end
else
if@scoreisnotnulland@score1isnotnull
@score1then@score
else@score1end
)
else
setsl=@score
end
触发器T2:
:
触发器T3:
②存储过程和游标:
教学秘书为学生指定必修课程
createprocstu_cou@subjectvarchar(20),@classvarchar(20),@cnamevarchar(50),@xyearvarchar(4),@termvarchar
(1)
declare@cnovarchar(4),@snovarchar(12),@pint,@nint,@sqlcodeint
declaresxcursorforselectsnofromstudentwhere@class=class
opensx
set@n=1
select@p=count(*)fromstudentwhere@class=class
select@cno=cnofromcoursewhere@cname=cname
while@n<
=@p
fetchsxinto@sno
insertintosc(sno,cno,term,type,xyear)values(@sno,@cno,@term,'
必修'
@xyear)
set@n=@n+1
closesx
调用此过程如:
execstu_cou'
商务英语'
'
商务英语B081'
大学英语'
2010'
1'
,就可以为“商务英语”专业“商务英语B081”班指定“2010”学年第“1”学期的“必修课”“大学英语”。
存储过程:
为教师指定其所教课程及所授班级
createproctea_cou@teachervarchar(8),@coursevarchar(50),@classvarchar(20)
declare@tnovarchar(10),@cnovarchar(4)
select@tno=tnofromteacherwhere@teacher=tname
select@cno=cnofromcoursewhere@course=cname
insertintotc(tno,cno,class)values(@tno,@cno,@class)
exectea_cou'
张雪'
日语B072'
,就可以为教师张雪指定所教课程“商务英语”及所教班级“日语B072”。
③视图
--学生查询成绩视图:
只能查询自己的信息
createviewuser_s1()
selectcname'
课程名称'
score'
期末'
sl'
总评'
score1'
重修1(补考1)'
score2'
重修2(补考2)'
credict'
学分'
type'
必修/选修'
xyear'
学年'
term'
学期'
fromcourse,sc
whereo=oandsc.sno=user
--教师查询成绩视图
createviewuser_t1
selectsc.sno'
学号'
sname'
姓名'
cname'
课程名'
tc.class'
班级'
fromstudent,sc,course,tc
wherestudent.sno=sc.snoando=oandtc.class=student.classandtc.tno=user
--教师上传成绩视图
createviewuser_t3(学号,姓名,班级,成绩)
selectsc.sno,sname,class,score
fromsc,student
wheresc.sno=student.sno
--教学秘书查询学生成绩视图
createviewuser_t4(学号,姓名,课程名,总评,必修选修,学年,学期,班级)
selectsc.sno,sname,cname,sl,type,xyear,term,tc.class
fromstudent,sc,course,tc,department
wherestudent.sno=sc.snoando=oandtc.class=student.classandtc.tno=department.dteaandtno=user
教师评价
评定项目
A
B
C
D
需求分析清楚
完整性设计完善
概念结构符合需求
游标和存储过程的使用
逻辑结构设计合理
操作熟练
索引设计合理
文字流畅
有完全性的设置
报告规范
其他:
评价教师签名:
年月日
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 课程设计 图书馆 管理 系统