计算机科学与技术学院课程设计成绩单.docx
《计算机科学与技术学院课程设计成绩单.docx》由会员分享,可在线阅读,更多相关《计算机科学与技术学院课程设计成绩单.docx(20页珍藏版)》请在冰豆网上搜索。
计算机科学与技术学院课程设计成绩单
计算机科学与技术学院课程设计成绩单
计算机科学与技术学院课程设计成绩单
课程名称:
数据库系统原理指导教师:
姓名
性别
学号
班级
综合成绩
成绩等级
程序运行情况
(占总成绩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操作系统,安装数据库管理系统SQLServer2000等。
三、实验内容
完整实践应用数据库设计的工程过程:
需求分析\概念设计\逻辑设计\物理设计和实施:
(1)需求分析:
选定一个应用,对所设计的数据库系统有一定的调研分析,其结果应该以简单的需求分析说明书\数据字典和数据流图(2级数据流即可)表示;
(2)概念分析:
使用E-R图作为描述工具.描述出局部和全局的E-R图;
(3)逻辑设计:
将E-R图转化为相应的关系模式,并根据范式理论进行优化分析,关系模式不少于3个;
(4)物理设计:
根据需要设计必要的索引等结构;
(5)实施:
以某种DBMS为工具创建出完整的数据库.在数据库中要表现出的知识点包括
①登录控制(标准登录或混合登录)
②数据完整性(参照完整性、实体完整性、自定义完整性(包括触发器)
③设置用户,并相应设计用户的权限和角色(用户设计至少3个,有不同的权限)
④以游标或存储过程完成相关操作至少2个,以文件方式保存
(6)以上内容,请详细描述,并有必要抓图.
四、实验结果及分析
1.需求分析
随着信息时代科技不断提高,学校规模不断扩大,教学质量不断提高,大学期间有许多公共选修课,以往的选修课方法是课堂报名或者纸上填写方式报名,这种方法虽然直接,但是造成选课的盲目性,而且学生选过课程后不好在更改查看,一方面浪费大量的人力,物力资源,另一方面浪费时间以及在认为统计过程中不可避免的出现差错的情况。
这给广大的老师和学生带来诸多的不便,管理起来也相当困难。
使用网上选课系统可以提前进行网上选课,并且选课以后学生还可以在查看和更改,随意选择各个老师的课程,老师管理起来也比较方便。
鉴于它的重要性,这就迫切需要研制开发一款功能强大,操作简单,具有人性化的网上选课系统。
通过对学生选课管理系统工作内容和相关数据流程分析,根据选课管理系统的需要,设计出满足各种用户(管理员,教师,学生)的实体,以及他们之间的关系,得到数据库的模型。
系别包括系别号与系别名。
专业表包括专业号与专业名。
学生表包括学号,姓名,年龄,性别,年纪,系别号,专业号等。
教师表包括教师号,姓名,性别,系别号。
课程表包括课程号,课程名,学分,学时,开课状态,已选人数,限选人数等。
选课结果表包括学号,课程号,成绩。
授课表包括课程号,教师号。
管理员表包括ID,用户名与密码。
数据字典:
名字:
教师信息表
别名:
Teachers
描述:
记录教师的信息
定义:
教师信息表=教师号+姓名+性别+系别号
位置:
数据库
数据流图:
结构数据流图
2.概念结构设计
实体有:
学生、系别、专业、课程、教师、管理员。
总体E-R图:
局部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.代码编写与物理设计
1登陆,建库,做好备份.(代码略)
2数据完整性
各表中主键均不能为空且取值唯一,以选课表为例,列出各表及字段说明。
Course表设计
③各表间的外键关系及约束.
部分代码:
createtableTeachers
(
Tnochar(5)primarykeynotnull,
Tnamechar(10)notnull,
Tsexchar
(2)notnull,
Depnochar(20)foreignkeyreferencesDepart(Depno)NOTNULL
)
由于代码较多其它略.
Students与result
Depart与teachers
Course与result
其他略!
约束部分代码:
(Course表,其它略)
Cstunochar(20)notnullcheck(Cstuno>=0)default0,
Ccstuchar(20)notnullcheck(Ccstu>=0andCcstu<=120)default50
Result表约束
④触发器设计:
5存储过程
createproceduresp_add
(@Snochar(20),@Cnochar(5),@Scorefloat)
as
ifnotexists(select*fromStudentswhereSno=@Sno)/*检验学号*/
begin
print'该学号不存在!
'
return-1
end
ifnotexists(select*fromCoursewhereCno=@Cno)/*检验课程号*/
begin
print'该课程号不存在!
'
return-1
end
ifnotexists(select*fromResultwhere(Cno=@CnoandSno=@Sno))/*检验课程号*/
begin
print'该课程号已经选过一次!
'
return-1
end
begin
insertResultvalues(@Sno,@Cno,@Score)
updateCoursesetCstuno=Cstuno+1whereCno=@Cno
end
选课存储过程
退课:
/*退课存储过程*/
createproceduresp_delete
(@Snochar(20),@Cnochar(5))
as
ifnotexists(select*fromStudentswhereSno=@Sno)/*检验学号*/
begin
print'该学号不存在!
'
return-1
end
ifnotexists(select*fromCoursewhereCno=@Cno)/*检验课程号*/
begin
print'该课程号不存在!
'
return-1
end
ifnotexists(select*fromResultwhere(Sno=@SnoandCno=@Cno))/*检验是否已经选课*/
begin
print'您还未选该课!
'
return-1
end
begin
deletefromResultwhere(Sno=@SnoandCno=@Cno)
updateCoursesetCstuno=Cstuno-1whereCno=@Cno
end
五、总结
通过本次课程设计,我对SQLServer2000有了更深的了解,数据库和表是SQLServer2000用于组织和管理数据的基本对象,用户使用SQLServer2000设计和实现查询信息,首要的任务是实现数据库的数据的表示和存储,即创建数据库和表。
感谢此次设计中老师和同学给与的帮助.