学生成绩管理系统的数据库设计.docx

上传人:b****7 文档编号:8885669 上传时间:2023-02-02 格式:DOCX 页数:16 大小:117.32KB
下载 相关 举报
学生成绩管理系统的数据库设计.docx_第1页
第1页 / 共16页
学生成绩管理系统的数据库设计.docx_第2页
第2页 / 共16页
学生成绩管理系统的数据库设计.docx_第3页
第3页 / 共16页
学生成绩管理系统的数据库设计.docx_第4页
第4页 / 共16页
学生成绩管理系统的数据库设计.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

学生成绩管理系统的数据库设计.docx

《学生成绩管理系统的数据库设计.docx》由会员分享,可在线阅读,更多相关《学生成绩管理系统的数据库设计.docx(16页珍藏版)》请在冰豆网上搜索。

学生成绩管理系统的数据库设计.docx

学生成绩管理系统的数据库设计

课程设计报告书

课程名称:

数据库原理及应用

 

题目:

学生成绩管理系统的数据库设计

系名:

信息工程系

专业班级:

姓名:

学号:

指导教师:

 

年月日

 

课程设计任务书

学生姓名:

专业班级:

指导教师:

工作单位:

设计题目:

学生成绩管理系统的数据库设计

要求完成的主要任务:

(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)

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(值)即可。

 

指导教师评语:

 

签名:

年月日

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 职业教育 > 职业技术培训

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1