学分管理系统数据库的设计与实现课程设计及代码.docx
- 文档编号:8300276
- 上传时间:2023-01-30
- 格式:DOCX
- 页数:13
- 大小:66.70KB
学分管理系统数据库的设计与实现课程设计及代码.docx
《学分管理系统数据库的设计与实现课程设计及代码.docx》由会员分享,可在线阅读,更多相关《学分管理系统数据库的设计与实现课程设计及代码.docx(13页珍藏版)》请在冰豆网上搜索。
学分管理系统数据库的设计与实现课程设计及代码
课程设计报告
课程设计题目:
学分管理系统数据库的设计与实现
专业:
班级:
姓名:
学号:
指导教师:
2013年01月05日
目录
1.实验目的………………………………………………………………01
2.课程设计要求…………………………………………………………01
3.题目要求………………………………………………………………01
4.学分管理系统的需求分析……………………………………………02
1)处理对象…………………………………………………………02
2)处理功能要求……………………………………………………02
3)安全性和完整性要求……………………………………………03
5.学分管理系统的实体关系图及E—R图……………………………03
1)E-R图每个实体的属性…………………………………………04
2)将E-R图转换为关系模型………………………………………04
6.数据库代码生成………………………………………………………04
1)创建数据库………………………………………………………05
2)创建表……………………………………………………………05
3)根据表中内容录入数据…………………………………………06
4)创建视图…………………………………………………………06
5)简单查询…………………………………………………………06
6)创建触发器,保证数据一致性…………………………………07
7)创建存储过程,实现功能要求…………………………………10
8)判定毕业…………………………………………………………13
7.实验总结………………………………………………………………15
8.心得体会………………………………………………………………15
学分管理系统数据库的设计与实现
一、实验目的:
通过本次课程设计让学生能够综合运用所学的关系数据库原理知识解决并能设计一个实际问题,进一步掌握数据库原理的相关理论和数据库的设计实现过程,进一步提高学生的分析问题和解决问题的能力以及学生的动手能力。
二、课程设计要求:
1.对各个系统进行系统功能需求分析
2.数据库设计分析阶段,进行详细的数据库需求分析,进行概念数据库的设计,画出数据库的E-R图(局部和整体E-R图)
3.设计出详细的逻辑数据库结构,将各个实体和联系转化为相应的二维表即关系模式,指定各个关系的主关键字和外部关键字,并对各个关系的约束加以限定
4.通过企业管理器或是查询分析器实现各个二维关系(建议最好用SQL代码实现),要求建立相关的索引
5.根据系统功能需求设计相应的查询视图
6.要求根据系统功能需求建立存储过程
7.根据功能需求建立相应的触发器以保证数据的一致性
8.通过建立用户和权限分配实现数据库一定的安全性,考虑数据库的备份与恢复(此内容选作)
三、题目要求
描述:
设计一个学分管理系统。
假设每位学生必须完成基础课50学分,专业课50学分,选修课
24学分,人文类课程8学分和实验性课程20学分才能毕业。
实现下列功能:
1、录入某位学生的学分信息
2、给定学号,显示某位学生的学分完成情况;
3、给定班号,显示该班所有学生的学分完成情况;
4、给定学号,修改该学生的学分信息;
5、按照某类课程的学分高低进行排序;
6、给定学号,对该学生能否毕业进行确定。
四.学分管理系统的需求分析.
通过对两个班的同学学分成绩的调查,了解到两个班的同学学分管理仍处于人工管理阶段,没有标准的学生学分存档信息。
开发出合适的学生学分管理系统,可以方便学生学分的管理,提高学分管理工作的效率。
1.处理对象
系统要处理的对象包括学生基本信息、课程信息、教师信息三
个方面,各个信息包括如下信息
1)学生基本信息:
包括学生的姓名、学号、性别、系别、班级,可以方便学生信息的查询和更新;
2)课程基本信息:
包括课程代号、课程名、课程种类、学分,可以方便课程信息的查询与更新;
3)成绩基本信息:
包括学生的学号、学生选取的课程号、学生的成绩及学分,这可以提高查询效率。
2.处理功能要求
系统主要完成以下几个功能:
1)录入某位学生的学分信息;
2)给定学号,显示某位学生的学分完成情况;
2)给定班号,显示该班所有学生的学分完成情况;
3)给定学号,修改该学生的学分信息;
4)按照某类课程的学分高低进行排序;
5)给定学号,对该学生能否毕业进行确定。
3.安全性和完整性要求
安全性先通过试图机制,不同的用户只能访问系统授权的视图,这样可以满足系统数据一定程度上的安全性,在通过用户授权机制,用用户登入来识别用户级,根据这个级别来分配用户权限,达到更高层次的安全保密功能。
安全性要求用于描述学生基本信息、课程基本信息及教师基本信息的数据项能否为NULL,以及一些用户自定义是否符合实际要求。
五、学分管理系统的实体关系图及E—R图.
1.E-R图每个实体的属性.
学生:
学号,姓名,性别,班级,专业
课程:
课程号,课程名,学分,课程类型
2.将E-R图转换为关系模型:
学生:
(sno,sname,sex,class,dept)
课程:
(cno,cname,score,type)
选取:
(grade)
Course(课程信息表示例)
SC(学生选课情况表示例)
c_no
c_name
score
type
s_no
c_no
grade
score
001
数据结构
32
专业课
112070201
001
80
32
002
操作系统
30
基础课
112070202
002
85
30
003
计算机网络
28
选修课
112070203
003
80
28
004
数据库
32
专业课
112070204
004
95
32
005
网络基础
32
专业课
112070205
005
80
32
006
Java语言
32
专业课
112070206
006
70
32
007
数据库实验
24
实验课
112070207
007
80
24
008
马列主义
10.5
人文类
112070208
008
83
9
009
现代通信
27.5
选修课
112070209
009
70
24
Student(学生信息表示例)
s_no
s_name
sex
class
dept
112070201
赵一
男
1120702
计算机科学与技术
112070202
孙二
女
1120702
计算机科学与技术
112070203
李三
女
1120702
计算机科学与技术
112070204
赵涛
男
1120702
计算机科学与技术
112070205
周四
女
1120702
计算机科学与技术
112070206
吴五
男
1120702
计算机科学与技术
112070207
郑六
男
1120702
计算机科学与技术
112070208
王七
男
1120702
计算机科学与技术
112070209
冯八
男
1120702
计算机科学与技术
六.数据库代码生成
1.创建数据库
CREATEDATABASECredit--创建学分管理系统数据库
ON
(name=Credit_data,
filename='c:
\CreditData.mdf',
size=10,
maxsize=50,
filegrowth=5)
2.创建表:
CREATETABLECourse--创建课程信息表
(cnochar(20)primarykeynotnull,
cnamechar(20),
scorefloat,
typechar(20))
createtableStudent--创建学生信息表
(snochar(20)primarykeynotnull,
snamechar(20),
sexchar(10),
classchar(20),
deptchar(20))
createtableSC--学生选课情况表
(snochar(20)notnull,
cnochar(20)notnull,
gradeint,
scorefloat
constraintsc_primprimarykey(sno,cno))
CREATEUNIQUEindexSC_indonSC(sno,cno)--创建索引
3.根据表中内容录入数据:
使用:
insertinto表名(列名)
select
unionselect
unionselect
语句,进行多行录入
4.创建视图:
createviewshow--创建视图,提供基本查询
asselectsc.s_no,class,s_name,Course.c_no,c_name,sc.score,type
fromSC,Student,Course
whereSC.s_no=Student.s_noandSC.c_no=Course.c_no
5.简单查询:
selects_no,class,s_name,c_name,score,type--查询信息
Fromshow
orderbyclass,s_no
selects_no,s_name,c_name,class,score--根据名字查询
fromshow
wheres_name='赵涛'
6.创建触发器,保证数据一致性:
createtriggerc_insert--在Course表上创建插入触发器
onCourse
forinsert
as
select*fromshow
orderbys_no
createtriggerc_delete--在Course表上创建删除触发器
onCourse
fordelete
as
declare@oldcnovarchar(20)
select@oldcno=c_nofromdeleted
deletefromSCwherec_no=@oldcno
createtriggerc_update--在Course表上创建修改触发器
onCourse
forupdate
as
declare@oldcnovarchar(20),@newcnovarchar(20)
ifupdate(c_no)
begin
select@oldcno=c_nofromdeleted
select@newcno=c_nofrominserted
updateSCsetc_no=@newcnowherec_no=@oldcno
select*fromshow
end
updateCourse--在Course表上修改数据
setc_no='004'
wherec_name='数据库'
createtriggersc_insert--在SC表上创建插入触发器
onSC
forinsert
as
select*
fromshow
orderbys_no
createtriggersc_delete--在SC表上创建删除触发器
onSC
fordelete
as
select*
fromshow
orderbys_no
createtriggersc_update--在SC表上创建修改触发器
onSC
forupdate
as
select*
fromshow
orderbys_no
createtriggers_delete--在Student表上创建删除触发器
onStudent
fordelete
as
declare@oldsnovarchar(20)
select@oldsno=s_nofromdeleted
deletefromSCwheres_no=@oldsno
createtriggers_update--在Student表上创建修改触发器
onStudent
forupdate
as
declare@newsnovarchar(20)
updateSC
sets_no=@newsno
wheres_noin(selects_nofromdeleted)
7.创建存储过程,实现功能要求:
createprocedureluru--创建存储过程,在SC表中插入信息(录入某位学生的学分信息)
@snochar(20),
@cnochar(20),
@gradeint,
@scorefloat
)
as
insertintoSC(s_no,c_no,grade,score)
values(@sno,@cno,@grade,@score)
execluru'112070204','004','95','32'--录入信息
createproceduresno--创建存储过程,按给定学号,显示某位学生的学分完成情况
(@snochar(20))
as
selects_no,class,s_name,c_name,type,score
fromshow
wheres_no=@sno
orderbys_no,type
execsno'112070204'--给定一个学号查询
createproceduresum_score--创建存储过程,按给定学号,显示某位学生的各个课程类型获得学分情况
(@snochar(20))
as
selects_no,s_name,type,sum(score)asscore
fromshow
wheres_no=@sno
groupbys_no,type,s_name
execsum_score'112070204'--给定一个学号查询
createprocedureclass--创建存储过程,按给定班号,显示该班所有学生的学分完成情况
(@classchar(20))
as
select*
fromshow
whereclass=@class
orderbyclass
execclass'1120702'--给定一个班号查询
createprocedurescore_update--给定学号,修改该学生的学分情况
(
@snochar(20),
@cnochar(20),
@gradeint,
@scorefloat
)
as
updateSC
setc_no=@cno,grade=@grade,score=@score
wheres_no=@sno
Execscore_update@sno='112070204',@cno='004',
@grade='96',@score='35'--给定学号及学分情况,执行修改
createprocedurepaixu--创建存储过程,按照某类课程的学分高低进行排序
(@cnochar(20))
as
select*
fromshow
wherec_no=@cno
orderbyscoredesc
execpaixu'004'--给定一门课程的课程号
8.判定毕业
createviewgraduation--创建视图,用于判定学生是否毕业
asselects_no,s_name,type,sum(score)asscore
fromshow
groupbys_no,type,s_name
createprocedurejudge--判定毕业
(@snochar(10))
as
declare@jcfloat
declare@rwfloat
declare@syfloat
declare@xxfloat
declare@zyfloat
declare@xint
set@x=0
select@jc=scorefromgraduationwhere@sno=s_noandtype='基础课'
if@jc>=50
Begin
set@x=1
select@rw=scorefromgraduationwhere@sno=s_noandtype='人文类'
if@rw>=8
begin
set@x=2
select@sy=scorefromgraduationwhere@sno=s_noandtype='实验课'
if@sy>=20
begin
set@x=3
select@xx=scorefromgraduationwhere@sno=s_noandtype='选修课'
if@xx>=24
begin
set@x=4
select@zy=scorefromgraduationwhere@sno=s_noandtype='专业课'
if@zy>=50
begin
set@x=5
end
end
end
end
end
if@x!
=5
print'学号为'+@sno+',该生学分未修满,不准毕业!
'
else
print'学号为'+@sno+',该生学分修满,准许毕业!
'
EXECjudge@sno='112070204'--给定一个学号
七.实验总结:
经过本次学分管理系统数据库的设计与实现操作,我了解了目前学分管理的现状,学习并掌握了学分管理系统的设计思路,以及相应SQL语言的编写,同时,可以熟练运用流程控制语句来完成一些较为复杂的设计,也基本掌握了对于存储过程和触发器的相关操作及理解。
八.心得体会:
对于SQLServer2000的功能与特点以及相应的SQL语言有了基础的掌握,让我们可以很好地运用触发器和存储过程等模块,使我对一个完整数据库系统的设计过程有了更深入的了解和体会,为以后的更复杂的程序设计及软件的制作奠定了很好的基础,本次课程设计收获颇丰.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学分 管理 系统 数据库 设计 实现 课程设计 代码