学分管理系统数据库的设计与实现课程设计及代码.docx

上传人:b****5 文档编号:8300276 上传时间:2023-01-30 格式:DOCX 页数:13 大小:66.70KB
下载 相关 举报
学分管理系统数据库的设计与实现课程设计及代码.docx_第1页
第1页 / 共13页
学分管理系统数据库的设计与实现课程设计及代码.docx_第2页
第2页 / 共13页
学分管理系统数据库的设计与实现课程设计及代码.docx_第3页
第3页 / 共13页
学分管理系统数据库的设计与实现课程设计及代码.docx_第4页
第4页 / 共13页
学分管理系统数据库的设计与实现课程设计及代码.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

学分管理系统数据库的设计与实现课程设计及代码.docx

《学分管理系统数据库的设计与实现课程设计及代码.docx》由会员分享,可在线阅读,更多相关《学分管理系统数据库的设计与实现课程设计及代码.docx(13页珍藏版)》请在冰豆网上搜索。

学分管理系统数据库的设计与实现课程设计及代码.docx

学分管理系统数据库的设计与实现课程设计及代码

课程设计报告

 

课程设计题目:

学分管理系统数据库的设计与实现

 

专业:

班级:

姓名:

学号:

指导教师:

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语言有了基础的掌握,让我们可以很好地运用触发器和存储过程等模块,使我对一个完整数据库系统的设计过程有了更深入的了解和体会,为以后的更复杂的程序设计及软件的制作奠定了很好的基础,本次课程设计收获颇丰.

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

当前位置:首页 > 医药卫生 > 预防医学

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

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