学生成绩管理系统的数据库设计.docx
- 文档编号:3828371
- 上传时间:2022-11-25
- 格式:DOCX
- 页数:16
- 大小:116.73KB
学生成绩管理系统的数据库设计.docx
《学生成绩管理系统的数据库设计.docx》由会员分享,可在线阅读,更多相关《学生成绩管理系统的数据库设计.docx(16页珍藏版)》请在冰豆网上搜索。
学生成绩管理系统的数据库设计
课程设计报告书
课程名称:
数据库原理及应用
题目:
学生成绩管理系统的数据库设计
系名:
信息工程系
专业班级:
姓名:
学号:
指导教师:
年月日
课程设计任务书
学生姓名:
专业班级:
指导教师:
工作单位:
设计题目:
学生成绩管理系统的数据库设计
要求完成的主要任务:
(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)
1、创建数据库
2、根据ER图,创建表、建立主外键、约束、建立表测试数据;
3、常规业务:
(1)完成一个学生信息的录入
(2)查看学生档案
(3)查看学生成绩
(4)查看学生所有信息
4、创建索引与视图
1.为档案表中的主键创建索引;
2.创建视图[查询档案表要求字段全为中文字段名]
5、创建触发器
实现档案录入时候,做出记录,记录查阅档案的信息。
设计报告撰写格式要求:
1、明确课程设计的目的和重要性,认真领会课程设计的题目,读懂课程设计指导书的要求,学会设计的基本方法与步骤,学会如何运用前修知识与收集、归纳相关资料解决具体问题的方法。
严格要求自己,要独立思考,按时、独立完成课程设计任务。
2、设计报告:
要求层次清楚、整洁规范、不得相互抄袭,凡正文内容有整段完全相同者一律以抄袭论处。
设计报告正文字数不少于0.2万字(不包括附录)
时间安排:
消化资料、系统调查 1天
系统分析、总体设计,实施计划、撰写报告 3天
演示、验收 1天
指导教师签字:
年月日
系主任签字:
年月日
1概述
1、背景:
数据库原理课程设计
2、编写目的:
掌握数据库设计原理及相关软件的使用
3、软件定义:
学生信息管理系统
4、开发环境:
windowsXP、SQLserver2005
2需求分析
2.1功能需求
实现可以添加、修改和查询学生的档案记录,同时可以添加、修改和查询学生的成绩记录,有对学生成绩信息开放度的管理权;
2.2数据需求
通过调查,总结出用户对数据的需求如下:
(1)学生信息:
学号、学生姓名、性别、出生日期、所在系别、专业、班级等。
(2)课程信息:
课程编号、课程名称、所属专业等。
(3)选课信息:
学号、课程编号、开课时间、成绩等。
(4)记录信息:
对象、操作、时间等。
2.2概念结构设计
学生成绩管理E-R图2-1
主外键关系图2-2
2.3逻辑结构设计阶段
逻辑结构是独立于任何一种数据模型的信息结构。
逻辑结构的任务是把概念结构设计阶段设计好的基本E-R图转化为宜选用的DBMS所支持的数据模型相符合的逻辑结构并对其进行优化。
E-R图向关系模型转化要解决的问题是如何将实体型和实体间的联系转化为关系模式如何确定这些关系模式的属性和码。
数据字典:
学生信息表(学号,学生姓名,性别,出生日期,所在系别,专业,班级)
字段名
描述
数据类型
字段限制
Sid
学号
int
primarykeyidentity(01,1)notnull
Sname
学生姓名
Varchar(50)
notnull
Ssex
性别
Varchar(4)
Birthday
出生日期
Varchar(50)
notnull
Dept
所在系别
Varchar(50)
notnull
Profession
专业
Varchar(50)
notnull
class
班级
Varchar(50)
notnull
课程信息表(课程编号,课程名称,所属专业)
字段名
描述
数据类型
字段限制
lid
课程编号
int
primarykeyidentity(01,1)notnull
lname
课程名称
Varchar(50)
notnull
thepro
所属专业
Varchar(50)
notnull
选课信息表(学号,课程编号,开课时间,成绩)
字段名
描述
数据类型
字段限制
Sid
学号
int
notnull
Lid
课程编号
Int
notnull
Time
开课时间
Varchar(50)
Grade
成绩
int
notnull
记录信息表(对象,操作,时间)
字段名
描述
数据类型
字段限制
Tname
对象
Varchar(50)
notnull
Do
操作
Varchar(50)
notnull
Dtime
时间
Varchar(50)
notnull
3数据库实现
3.1创建数据库
createdatabasestudent
on
(
name='student_data',
filename='E:
\student_data.mdf',
size=10,
filegrowth=20%
)
Logon(
name='student_log',
filename='E:
\student_log.ldf',
size=3,
maxsize=20,
filegrowth=10%
)
3.2创建数据表
--创建学生信息表
droptablestudentinfo
createtablestudentinfo(
sidintprimarykeyidentity(01,1)notnull,
snamevarchar(50)notnull,
ssexvarchar(4),
birthdayvarchar(50)notnull,
deptvarchar(50)notnull,
professionvarchar(50)notnull,
classvarchar(50)notnull
)
--创建课程信息表
droptablelessonsinfo
createtablelessonsinfo(
lidintprimarykeyidentity(01,1)notnull,
lnamevarchar(50)notnull,
theprovarchar(50)notnull
)
--创建选课表
droptablecourseinfo
createtablecourseinfo(
sidintnotnull,
lidintnotnull,
timevarchar(50),
gradeint
)
--创建记录表
droptablerecord
createtablerecord(
tnamevarchar(100),
dovarchar(50),
dtimevarchar(50)
)
4完整性约束
--创建主键索引
createnonclustered
indexc_sl
oncourseinfo(sid,lid)
createnonclustered
indexlessons
onlessonsinfo(lid)
createnonclustered
indexstudent
onstudentinfo(sid)
学生信息表(学号(主键),学生姓名,性别,出生日期,所在系别,专业,班级)
课程信息表(课程编号(主键),课程名称,所属专业)
选课信息表(学号(外键),课程编号(外键),开课时间,成绩)
记录信息表(对象,操作,时间)
5SQL语句测试
5.1插入数据
--对学生表插入数据
insertintostudentinfo(sname,ssex,birthday,dept,profession,class)
values('小明','男','1992-12-14','信息工程系','计算机','1101')
insertintostudentinfo(sname,ssex,birthday,dept,profession,class)
values('小张','男','1992-02-22','信息工程系','计算机','1101')
insertintostudentinfo(sname,ssex,birthday,dept,profession,class)
values('小华','女','1991-06-04','信息工程系','软件','1101')
insertintostudentinfo(sname,ssex,birthday,dept,profession,class)
values('小红','女','1992-09-03','信息工程系','软件','1101')
insertintostudentinfo(sname,ssex,birthday,dept,profession,class)
values('小李','男','1992-12-26','信息工程系','软件','1102')
insertintostudentinfo(sname,ssex,birthday,dept,profession,class)
values('小吴','男','1993-01-17','经济管理系','经管','1101')
insertintostudentinfo(sname,ssex,birthday,dept,profession,class)
values('小普','女','1992-06-04','经济管理系','经管','1102')
insertintostudentinfo(sname,ssex,birthday,dept,profession,class)
values('小段','男','1991-04-21','经济管理系','经管','1103')
插入结果:
插入结果图5-1
--对课程信息报插入信息
insertintolessonsinfo(lname,thepro)
values('计算机网络','计算机')
insertintolessonsinfo(lname,thepro)
values('计算机组成原理','计算机')
insertintolessonsinfo(lname,thepro)
values('软件工程','软件')
insertintolessonsinfo(lname,thepro)
values('c语言基础','软件')
insertintolessonsinfo(lname,thepro)
values('java语言基础','计算机')
insertintolessonsinfo(lname,thepro)
values('经济管理学','经管')
插入结果:
插入结果图5-2
--对选课表插入信息
insertintocourseinfo(sid,lid,time,grade)
values('1','1','16',70)
insertintocourseinfo(sid,lid,time,grade)
values('1','2','16',70)
insertintocourseinfo(sid,lid,time,grade)
values('1','3','16',70)
insertintocourseinfo(sid,lid,time,grade)
values('2','2','16',80)
insertintocourseinfo(sid,lid,time,grade)
values('2','1','16',80)
insertintocourseinfo(sid,lid,time,grade)
values('2','3','16',80)
insertintocourseinfo(sid,lid,time,grade)
values('3','5','16',50)
insertintocourseinfo(sid,lid,time,grade)
values('3','4','16',50)
insertintocourseinfo(sid,lid,time,grade)
values('4','5','16',50)
insertintocourseinfo(sid,lid,time,grade)
values('4','4','16',70)
insertintocourseinfo(sid,lid,time,grade)
values('5','5','16',80)
insertintocourseinfo(sid,lid,time,grade)
values('5','4','16',50)
insertintocourseinfo(sid,lid,time,grade)
values('6','7','16',70)
insertintocourseinfo(sid,lid,time,grade)
values('7','7','16',80)
insertintocourseinfo(sid,lid,time,grade)
values('8','7','16',50)
插入结果:
插入结果图5-3
5.2数据查询
--学生信息查询视图
dropviewsinfo
createviewsinfo(姓名,性别,系别,专业,班级)
as
selectsname,ssex,dept,profession,classfromstudentinfo
select*fromsinfo
学生信息图5-4
--学生成绩查询视图
dropviewsgra
createviewsgra(姓名,课程名,成绩)
as
selectsname,lname,grade
fromlessonsinfo,courseinfo,studentinfo
wherelessonsinfo.lid=courseinfo.lid
andstudentinfo.sid=courseinfo.sid
select*fromsgra
学生成绩图5-5
--存储过程查询某人某科成绩
dropprocsgrade
createprocsgrade
@snamevarchar(50),
@lnamevarchar(50)
as
selectsname,lname,grade
fromlessonsinfo,courseinfo,studentinfo
wherelessonsinfo.lid=courseinfo.lid
andstudentinfo.sid=courseinfo.sid
andsname=@sname
andlname=@lname
execsgrade@sname=小明,@lname=计算机网络
某人某科成绩5-6
--获取当前时间
selectgetdate()
5.3创建触发器
--学生信息表记录
--删除
droptriggersd
createtriggersd
onstudentinfo
fordelete
as
insertintorecord(tname,do,dtime)
values('学生信息表','执行删除操作',getdate())
print'学生信息表执行删除操作成功'
--更新
droptriggersu
createtriggersu
onstudentinfo
forupdate
as
insertintorecord(tname,do,dtime)
values('学生信息表','执行更新操作',getdate())
print'学生信息表执行更新操作成功'
--插入
droptriggersi
createtriggersi
onstudentinfo
forinsert
as
insertintorecord(tname,do,dtime)
values('学生信息表','执行插入操作',getdate())
print'学生信息表执行插入操作成功'
--课程信息表记录
--删除
droptriggerld
createtriggerld
onlessonsinfo
fordelete
as
insertintorecord(tname,do,dtime)
values('课程信息表','执行删除操作',getdate())
print'课程信息表执行删除操作成功'
--更新
droptriggerlu
createtriggerlu
onlessonsinfo
forupdate
as
insertintorecord(tname,do,dtime)
values('课程信息表','执行更新操作',getdate())
print'课程信息表执行更新操作成功'
--插入
droptriggerli
createtriggerli
onlessonsinfo
forinsert
as
insertintorecord(tname,do,dtime)
values('课程信息表','执行插入操作',getdate())
print'课程信息表执行插入操作成功'
--选课信息表记录
--删除
droptriggercd
createtriggercd
oncourseinfo
fordelete
as
insertintorecord(tname,do,dtime)
values('选课信息表','执行删除操作',getdate())
print'选课信息表执行删除操作成功'
--更新
droptriggercu
createtriggercu
oncourseinfo
forupdate
as
insertintorecord(tname,do,dtime)
values('选课信息表','执行更新操作',getdate())
print'选课信息表执行更新操作成功'
--插入
droptriggerci
createtriggerci
oncourseinfo
forinsert
as
insertintorecord(tname,do,dtime)
values('选课信息表','执行插入操作',getdate())
print'选课信息表执行插入操作成功'
5.4触发器效果测试
--学生信息插入
insertintostudentinfo(sname,ssex,birthday,dept,profession,class)
values('xxx','男','1991-04-21','经济管理系','经管','1103')
插入结果图5-4
updatestudentinfo
setsname='更新'
wheresname='xxx'
更新结果图5-5
deletefromstudentinfo
wheresname='xxx'
删除结果图5-6
--记录表中数据查看
select*fromrecord
记录表数据查看图5-7
6总结
通过对这几天的学习我对数据库有一定得了解与认识,并且对于sqlserver2005的如何使用有了一定程度的掌握,sqlserver2005软件对于数据库而言,对数据的操作比较方便,我比较喜欢这个软件。
通过做这个课程设计,我对于数据库设计的步骤有了一个总体的思路。
但是又有很多的不足之处首先,在需求分析的时候,各个模板所要实现的功能不是很清楚。
其次,在画E-R图的时候各个实体之间的联系分析遇到了点困难,在图形上没有画出实体间的对与关系。
然后,对数据库的存储过程不了解。
所以导致系统涉及到数据的存储过程较少。
最后,对于触发器这一点,还没有很透彻的理解和应用,在创建触发器的时候目的不明确。
我会在以后学习的过程中更加努力完善自己。
设计过程中质疑(或答辩)记载:
1.你所创建的触发器的作用是什么?
当对表进行操作的时候,会记录下当前操作的对象和执行的什么操作以及时间。
2.如何让查询出的结果字段显示中文?
可以创建视图,在视图中将要显示的查询类容修改为相应的中文即可。
3.怎样执行插入操作?
输入insertinto<对象表>values(值)即可。
指导教师评语:
签名:
年月日
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学生 成绩管理系统 数据库 设计