资源描述
计算机科学和技术学院课程设计成绩单
课程名称:数据库系统原理 指导老师:
姓名
性别
学号
班级
综合成绩
成绩等级
程序运行情况
(占总成绩20%)
□能正确运行 □基础能正确运行 □能运行但结果不完善
(20分) (15分) (10分)
程序功效完善程度
(占总成绩10%)
□完善 □基础完善 □不完善
(10分) (8分) (5分)
程序结构合理性
(占总成绩10%)
□合理 □基础合理 □不太合理
(10分) (8分) (5分)
对问题答辩情况
(占总成绩40%)
□概念正确有创新 □能正确回复全部问题 □基础能正确回复
(40分) (35分) (30分)
□部分问题回复概念不清楚
(20分)
学生工作态度和独立工作能力
(占总成绩10%)
□工作态度认真能独立完成任务 □工作态度认真但独立性较差
(10分) (8分)
□工作态度基础认真但缺乏独立性
(5分)
设计汇报规范性
(占总成绩10%)
□符合规范 □基础符合规范 □规范性较差
(10分) (8分) (5分)
优异:90分~100分 良好:80分~89分 中等:70~79分 及格:60~69分 不及格0分~59分
武汉科技大学计算机科学和技术学院制表
计算机科学和技术学院
课 程 设 计 报 告
课程名称: 数据库系统原理
专 业:
班 级: 级 班
学 号:
姓 名:
指导老师:
网上选课系统
一、试验目标
利用一个DBMS作为设计工具,了解并应用课程中相关数据库设计相关理论,能根据设计步骤完成完整数据库设计,包含需求分析、概念设计、逻辑设计、物理设计和实施。同时能够应用各个阶段经典工具
二、设备和环境
(1) 硬件设备:PC机一台
(2) 软件环境:安装Windows操作系统,安装数据库管理系统SQL Server等。
三、试验内容
完整实践应用数据库设计工程过程:需求分析\概念设计\逻辑设计\物理设计和实施:
(1)需求分析:选定一个应用,对所设计数据库系统有一定调研分析,其结果应该以简单需求分析说明书\数据字典和数据流图(2级数据流即可)表示;
(2)概念分析:使用E-R图作为描述工具.描述出局部和全局E-R图;
(3)逻辑设计:将E-R图转化为对应关系模式,并依据范式理论进行优化分析,关系模式不少于3个;
(4)物理设计:依据需要设计必需索引等结构;
(5)实施:以某种DBMS为工具创建出完整数据库.在数据库中要表现出知识点包含
①登录控制 (标准登录或混合登录)
②数据完整性(参考完整性、实体完整性、自定义完整性(包含触发器)
③设置用户,并对应设计用户权限和角色(用户设计最少3个,有不一样权限)
④以游标或存放过程完成相关操作最少2个,以文件方法保留
(6)以上内容,请具体描述,并有必需抓图.
四、试验结果及分析
1. 需求分析
伴随信息时代科技不停提升,学校规模不停扩大,教学质量不停提升,大学期间有很多公共选修课,以往选修课方法是课堂报名或纸上填写方法报名,这种方法即使直接,不过造成选课盲目性,而且学生选过课程后不好在更改查看,首先浪费大量人力,物力资源,其次浪费时间和在认为统计过程中不可避免出现差错情况。这给广大老师和学生带来很多不便,管理起来也相当困难。使用网上选课系统能够提前进行网上选课,而且选课以后学生还能够在查看和更改,随意选择各个老师课程,老师管理起来也比较方便。鉴于它关键性,这就迫切需要研制开发一款功效强大,操作简单,含有些人性化网上选课系统。
经过对学生选课管理系统工作内容和相关数据步骤分析,依据选课管理系统需要,设计出满足多种用户(管理员,老师,学生)实体,和她们之间关系,得到数据库模型。
系别包含系别号和系别名。专业表包含专业号和专业名。学生表包含学号,姓名,年纪,性别,年纪,系别号,专业号等。老师表包含老师号,姓名,性别,系别号。课程表包含课程号,课程名,学分,课时,开课状态,已选人数,限选人数等。 选课结果表包含学号,课程号,成绩。讲课表包含课程号,老师号。管理员表包含ID,用户名和密码。
数据字典:
名字:老师信息表
别名:Teachers
描述:统计老师信息
定义:老师信息表= 老师号+姓名+性别+系别号
位置:数据库
名字:系别表
别名: Depart
描述:统计系别信息
定义:系别表=系别名+系别号
位置:数据库
名字:专业表
别名: Profess
描述:统计专业信息
定义:专业表=专业名+专业号
位置:数据库
名字:学生信息表
别名:Students
描述:统计学生信息
定义:学生信息表= 学号+姓名+年纪+性别+年级+班级+系别名+专业名
位置:数据库
名字:课程表
别名:Course
描述:统计课程信息
定义:课程表= 课程号+课程名+学分+课时+开课状态+已选人数+限选人数
位置:数据库
名字:选课结果表
别名: Class
描述:统计选课信息
定义:选课结果表=学号+课程号+成绩
位置:数据库
名字:讲课表
别名: Result
描述:统计讲课信息
定义:讲课表=课程号+老师号
位置:数据库
名字:管理员表
别名: admin
描述:统计讲课信息
定义:管理员表=ID+用户名+密码
位置:数据库
数据流图:
学生
返回
课程选课
成绩查询
查询,更改选课
学生信息
老师
登陆
验证
申请课程
课程信息
老师信息
判分
管理员
(最高权限)
同意课程是否
管理员信息
登陆
验证
返回
结构数据流图
2. 概念结构设计
实体有:学生、系别、专业、课程、老师、管理员。
总体E-R图:
学生
老师
属于
系/专业
选择
申请
课
程
同意
管理员
局部E-R图:
系别
系别号
系别名
专业别
专业号
专业名
学生
学号
姓名
年纪
姓名
年级
班级
系别
专业
老师
老师号
姓名
性别
系别
课程
课程号
课程名
学分
状态(老师申请用)
课时
已选人数
限选人数
课程号
成绩
选课结果
学号
讲课
课程号
老师号
管理
ID
用户名
密码
各表关系局部E-R图
3. 逻辑结构设计
关系模式:
系别:(系别号,系别名)
专业:(专业号,专业名)
学生:(学号,姓名,年纪,性别,年级,班级,系别名,专业名)
老师:(老师号,姓名,性别,系别号)
课程:(课程号,课程名,学分,课时,状态,已选人数,限选人数)
选课结果:(学号,课程号,成绩)
讲课:(课程号,老师号)
管理员:(ID,用户名,密码)
共需8个数据表:系别表、专业表、学生表、老师表、课程表、选课结果表,讲课表,管理员表。
各表关系分析:
1) 过程分析:选课系统面向3个用户群体:学生,老师和管理员。首先,学生依据自己学号(主键)和姓名登陆选课系统,进入能够选课,查询自己信息(专业,所在系部等。)查询选课信息(并能够退选)。老师依据自己老师号和姓名进行登陆,可依据自己知识情况申请开设课程,并设计课时学分和人数等,有课老师学期末能够给学生成绩。管理员拥有最高权限,能够查看,更改全部老师学生信息,并经过调查审核同意老师开课是否。
2) 关系分析:系别/专业表存放是学生信息。学生表存放学生信息,主键学号。老师表存放老师信息,课程表存放选课信息,包含开课状态,是否已选满(check约束)等,选课结果包含学生学号和课程号(当学生选课后为自动触发填充型),讲课表依据老师申请状态自动填充。管理员表拥有最高权限,可更改,同意全部信息。
各表字段说明:
系别表Depart
字段
数据类型
长度
许可空值
备注
Depno
Char
20
否
主键
Depname
varchar
50
否
系别名
专业表Profess
字段
数据类型
长度
许可空值
备注
ProID
char
20
否
主键 专业号
ProName
varchar
50
否
专业名称
学生表Students
字段
数据类型
长度
许可空值
备注
Sno
char
20
否
学号 主键
Sname
varchar
50
否
学生姓名
Sage
char
20
否
学生年纪
Ssex
Char
20
否
性别
Sgrade
varchar
20
否
年级
Sclass
Varchar
20
否
班级
DepnO
char
20
否
学生系别
ProID
char
20
否
学生专业
老师表Teachers
字段
数据类型
长度
许可空值
备注
Tno
char
20
否
老师号 主键
Tname
varchar
50
否
老师姓名
Tsex
Char
20
否
老师性别
Depno
char
20
否
老师所在系
课程表Course
字段
数据类型
长度
许可空值
备注
Cno
char
20
否
课程号
Cname
varchar
50
否
课程名
Credit
float
否
学分
Ctime
int
否
课时
State
int
否
开课状态
Cstuno
char
20
否
已选人数
Ccstu
char
20
否
限选人数
选课结果表Result
字段
数据类型
长度
许可空值
备注
Sno
char
20
否
学号
Cno
char
20
否
课程号
Score
char
20
否
分数
讲课表class
字段
数据类型
长度
许可空值
备注
Cno
char
20
否
课程号
Tno
char
20
否
老师号
管理员表:admin
字段
数据类型
长度
许可空值
备注
ID
Int
否
主键 编号
Name
Char
20
否
用户名
Password
char
20
否
密码
4.代码编写和物理设计
① 登陆,建库,做好备份.(代码略)
② 数据完整性
各表中主键均不能为空且取值唯一,以选课表为例,列出各表及字段说明。
Course表设计
③ 各表间外键关系及约束.
部分代码:
create table Teachers
(
Tno char(5) primary key not null,
Tname char(10) not null,
Tsex char(2) not null ,
Depno char(20) foreign key references Depart(Depno) NOT NULL
)
因为代码较多其它略.
Students和result
Depart和teachers
Course和result
其它略!
约束部分代码:(Course表,其它略)
Cstuno char(20) not null check(Cstuno>=0) default 0,
Ccstu char(20) not null check(Ccstu>=0 and Ccstu<=120) default 50
Result表约束
④ 触发器设计:
⑤ 存放过程
create procedure sp_add
(@Sno char(20),@Cno char(5), @Score float)
as
if not exists(select * from Students where Sno=@Sno)/*检验学号*/
begin
print '该学号不存在!'
return -1
end
if not exists(select * from Course where Cno=@Cno)/*检验课程号*/
begin
print '该课程号不存在!'
return -1
end
if not exists(select * from Result where (Cno=@Cno and Sno=@Sno))/*检验课程号*/
begin
print '该课程号已经选过一次!'
return -1
end
begin
insert Result values (@Sno,@Cno,@Score)
update Course set Cstuno=Cstuno+1 where Cno=@Cno
end
选课存放过程
退课:/*退课存放过程*/
create procedure sp_delete
(@Sno char(20),@Cno char(5) )
as
if not exists(select * from Students where Sno=@Sno)/*检验学号*/
begin
print '该学号不存在!'
return -1
end
if not exists(select * from Course where Cno=@Cno)/*检验课程号*/
begin
print '该课程号不存在!'
return -1
end
if not exists(select * from Result where (Sno=@Sno and Cno=@Cno)) /*检验是否已经选课*/
begin
print '您还未选该课!'
return -1
end
begin
delete from Result where (Sno=@Sno and Cno=@Cno )
update Course set Cstuno=Cstuno-1 where Cno=@Cno
end
五、总结
经过此次课程设计,我对SQL Server有了更深了解,数据库和表是SQL Server 用于组织和管理数据基础对象,用户使用SQL Server 设计和实现查询信息,首要任务是实现数据库数据表示和存放,即创建数据库和表。感谢此次设计中老师和同学给和帮助.
展开阅读全文