数据库课程设计报告报告运动会成绩管理系统.docx

上传人:b****8 文档编号:29489259 上传时间:2023-07-23 格式:DOCX 页数:45 大小:987.10KB
下载 相关 举报
数据库课程设计报告报告运动会成绩管理系统.docx_第1页
第1页 / 共45页
数据库课程设计报告报告运动会成绩管理系统.docx_第2页
第2页 / 共45页
数据库课程设计报告报告运动会成绩管理系统.docx_第3页
第3页 / 共45页
数据库课程设计报告报告运动会成绩管理系统.docx_第4页
第4页 / 共45页
数据库课程设计报告报告运动会成绩管理系统.docx_第5页
第5页 / 共45页
点击查看更多>>
下载资源
资源描述

数据库课程设计报告报告运动会成绩管理系统.docx

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

数据库课程设计报告报告运动会成绩管理系统.docx

数据库课程设计报告报告运动会成绩管理系统

数据库原理与应用课程设计

说明书

题目:

运动会成绩管理系统

学院:

班级:

完成人:

组号:

XXX学号:

XXXX成绩:

XXX学号:

XXXX成绩:

 

指导教师:

 

山东科技大学

2014年6月27日

课程设计任务书

一、课程设计题目:

运动会成绩管理系统

二、课程设计应解决的主要问题:

〔按实现的系统功能〕

〔1〕运动工程、运发动、运动成绩以及班级名次的记录存储

〔2〕添加修改和删除工程表、运发动表和成绩表信息

〔3〕自动生成班级名次表〔触发器〕

〔4〕运发动表有改动时,自动更新班级名次表〔触发器〕

〔5〕成绩表有改动时自动对成绩表中记录按工程排名次〔触发器〕

〔6〕成绩表自动排名自动更新班级名次表中班级总分〔存储过程〕

〔7〕更新班级总分之后自动对班级排名(学院名次,学校名次)(存储过程)

〔8〕对成绩表进展初次排名功能

〔9〕通过工程号获得相应工程的排名表〔表值函数〕

〔10〕通过学号或或运动号获得某学生运动成绩表〔表值函数〕

〔11〕通过班级名称获得某班所有运发动运动成绩表〔表值函数〕

〔12〕通过学院名称获得学院所有运发动运动成绩表〔表值函数〕

〔13〕获得全校所有运发动的运动成绩表〔表值函数〕

〔14〕获得全校所有班级总分数以及在学院排名和早全校排名〔表值函数〕

 

三、任务发出日期:

2014-4-25课程设计完成日期:

2014-6-27

小组分工说明

小组编号题目:

运动会成绩管理系统

小组分工情况:

XXX:

参与数据库的讨论和设计;搜集整理数据、录入数据;设计了具体的逻辑构造,绘制E-R图;创立数据库以及工程表、运发动表、成绩表和班级名次表;实现了表之间的关联,创立必要的默认值、规那么;创立了相应的索引;创立了班级名次表的视图。

XXX:

参与数据库的讨论和设计;创立某工程名次表值函数;创立触发器实现成绩表的按工程自动排名功能;创立存储过程实现班级名次表的班级总成绩的更新功能;创立存储过程实现班级名次表的排名功能;创立触发器实现运发动表改动时自动更新班级名次表的功能;创立多个表值函数用于实现不同的查询功能:

工程查询函数,个人成绩查询函数,班级成绩查询函数,学院成绩查询函数,全校成绩查询函数,全校班级名次查询函数。

整个数据库局部的设计共创立了三个触发器,四个存储过程以及七个表值函数。

另外还设计了本运动会成绩管理系统的界面局部,以及文档编辑工作。

组长签字:

年月日

指导教师对课程设计的评价

成绩:

 

指导教师签字:

 

年月日

1需求分析

本系统是用于管理运动会成绩的系统,要实现的功能就是运动会成绩的增加,修改和删除,同时还应该具有运发动和运动工程的增加修改和删除功能。

(1)本系统面向用户有两种:

成绩管理员、学生运发动。

(2)管理员功能介绍

管理员正确登陆后,可以增加、删除、修改、查询运发动信息,比赛工程以及比赛成绩。

(3)学生运发动主要功能介绍

学生登录后,可以查询〔比赛成绩、运动发动信息、运动工程〕。

1.1数据事实

数据实例

 

1.2主要用户视图

用户

需求

成绩管理员

登录〔正确输入用户名及密码登录〕

增加、删除、修改、查询运发动信息,比赛工程以及比赛成绩

学生

登录〔默认用户名〕

查询〔比赛成绩、运动发动信息、运动工程〕

2概念构造设计

 

 

图2.1系统边界

2.1局部ER图

 

图1工程表图2学生表

 

图3成绩表图4班级名次表

2.2全局ER图

 

3逻辑构造设计

关系模式如下:

运发动〔学号、、性别、学院、班级、运动号、工程一、工程二〕

运动工程〔工程号、工程名称〕

成绩〔学号、工程号、成绩、名次〕

班级排名〔学院、班级、总成绩、在学院名次、在校名次〕

4物理构造设计

学生表

列名

数据类型

允许空

说明

SNO

Int

学生编号

SName

Varchar(50)

SDept

Varchar(50)

系别

SClassNO

Varchar(50)

班级

SportsNO

Int

运动编号

工程表

列名

数据类型

允许空

说明

SportsNO

Int

工程编号

SportsName

Varchar(50)

工程名称

工程成绩表

列名

数据类型

允许空

说明

SNO

Int

学生编号

SportsNO

Int

工程编号

Score

Varchar〔50〕

成绩

Srank

int

名次

班级名次表

列名

数据类型

允许空

说明

sdeptname

Varchar〔20〕

学院

sclassname

Varchar〔20〕

班级

sclscore

int

总分

sclrankindept

int

学院名次

sclrankinsch

int

学校名次

5主要功能详细设计

5.1创立数据库

CREATEDATABASEsports

ON(

NAME=运动会数据,

FILENAME='D:

\SQL\sports.MDF',

SIZE=10MB,

MAXSIZE=100MB

LOGON(

NAME=运动会数据日志,

FILENAME='D:

\SQL\sports_Log.LDF',

SIZE=5MB,

MAXSIZE=25MB

5.2创立数据表

1、创立工程表

usesports

createtablesp

(sportnointNOTNULLPRIMARYKEY,

sportnamevarchar(30)notnull

2、创立学生表

createtablestu

(snointNOTNULLPRIMARYKEY,

snamevarchar(10)notnull,

sdeptvarchar(20),

sclassnamevarchar(20),

ssexvarchar

(2),

spnointnotnullunique,

sportno1intforeignkeyreferencessp(sportno)notnull,

sportno2intforeignkeyreferencessp(sportno)

3、创立成绩表

------------全体运发动的各个工程的成绩表

createtablesc

(snointFOREIGNKEYreferencesstu(sno),

sportnointFOREIGNKEYreferencessp(sportno),

scorevarchar(10),

srankint

primarykey(sno,sportno)

4、创立名次表

-------------记录全校所有班级的得分以及在学院的名次和在全校的名次

createtableclscore

(sdeptnamevarchar(20),--学院名

sclassnamevarchar(20)primarykey,--班级名称

sclscoreint,--班级成绩

sclrankindeptint,--班级在学院中的名次

sclrankinschint--班级在学校中的名次

5.3添加数据〔仅以一条为例〕

1、添加运动工程表记录

usesports

insertintospvalues(1,'男子一百'),(2,'男子二百')

2、添加学生表记录

usesports

insertintostuvalues(10103,'浩','数学','数学一班','男',10001,1,3),

(10105,'钱浩','数学','数学一班','男',10002,2,4)

3、添加比赛成绩表记录

usesports

insertintosc(sno,sportno,score)values

(10103,1,'12.2')

5.4数据库完整性

1、绑定列上默认值

usesports

go

createdefaultssexas'男'

go

execsp_bindefault'ssex','stu.ssex'

go

2、绑定规那么

createrulerule_sportnoasc1between1and12

go

createrulerule_snoasc1between10101and40340

go

execsp_bindrule'rule_sportno','sp.sportno'

go

execsp_bindrule'rule_sno','stu.sno'

go

5.5成绩表按成绩自动排名〔触发器,函数,存储过程〕

功能简介:

当sc表有成绩插入删除或者修改时就触发,实现对sc表中单工程名次nrank属性的及时更新,更新完之后,调用存储过程,实现对clscore表中班级成绩和班级排名的更新。

5.5.1更新工程名次触发器

--触发器----及时更新sc表

--当有成绩插入删除或者修改sc表时就触发

--实现对sc表中单工程名次nrank属性的及时更新

usesports

go----------------------------插入更新与删除操作sc表

ifexists(select*fromsysobjectswherename='trSC'andtype='TR')

droptriggertrSC

go

createtriggertrSC

onscafterinsert,update,delete

as

declaresportno0int,sno0int,sportno1int,sportno2int

selectsno0=sno,sportno0=sportnofrominserted

selectsportno1=sportno1,sportno2=sportno2fromstuwheresno=sno0

ifsportno0notin(sportno1,sportno2)

--ifsportno0!

=sportno1andsportno0!

=sportno2

begin

print'操作有误,此记录与运发动表不一致,请先修改运发动表!

'

rollback

end

else

begin

--更新名次

--声明变量

declaresnoint,sportnoint,rankint

declareiu_scSportno_cursorCURSORfor

selectsportnofromsp

openiu_scSportno_cursor

fetchnextfromiu_scSportno_cursorintosportno

whilefetch_status=0

begin

setrank=1

--声明游标

declareiu_sc_cursorCURSORfor

selectsnofromscRankFun(sportno)

--翻开游标

openiu_sc_cursor

--提取第一行

fetchnextfromiu_sc_cursorintosno

whileFETCH_STATUS=0

begin

updatesc

setsrank=rank

wheresno=snoandsportno=sportno

setrank=rank+1

fetchnextfromiu_sc_cursorintosno

end

closeiu_sc_cursor

deallocateiu_sc_cursor

fetchnextfromiu_scSportno_cursorintosportno

end

closeiu_scSportno_cursor

deallocateiu_scSportno_cursor

end

-----------执行存储过程updateClscore,更新clscore表-----------

execupdateClscore

go

Go

测试代码及截图如下:

5.5.2计算班级总成绩存储过程

存储过程:

当sc表名次有变动时,及时更新clscore表中的班级总成绩

---------------当sc表有更新时,及时更新clscore表中每个班的总分数----------

usesports

go

ifexists(select*fromsysobjectswherename='updateClscore'andtype='P')

dropprocedureupdateClscore

go

createprocedureupdateClscoreas

begin

declareclassnamevarchar(20),srankint,srankTotalint

declarecursor_classcursorfor

selectsclassnamefromstugroupbysclassname

opencursor_class

fetchnextfromcursor_classintoclassname

whileFETCH_STATUS=0

begin

setsrankTotal=0

declarecursor_srankcursorfor

selectsrankfromscwheresnoin(selectsnofromstuwheresclassname=classname)

opencursor_srank

fetchnextfromcursor_srankintosrank

whileFETCH_STATUS=0

begin

ifsrank<8

setsrankTotal=srankTotal+(8-srank)

else

setsrankTotal=srankTotal+0

fetchnextfromcursor_srankintosrank

end

updateclscore

setsclscore=srankTotalwheresclassname=classname

closecursor_srank

deallocatecursor_srank

fetchnextfromcursor_classintoclassname

end

closecursor_class

deallocatecursor_class

------------执行存储过程,更新clscore表,进展班级排名---------------

execupdateClscore_rank

end

Go

测试代码及截图如下:

5.5.3班级排名存储过程

存储过程:

更新clscore表,对clscore表中的班级总成绩分别按学院和学校排名次

--------------存储过程,更新clscore表,进展班级排名---------------

usesports

ifexists(select*fromsysobjectswherename='updateClscore_rank'andtype='p')

dropprocupdateClscore_rank

go

createprocupdateClscore_rank

as

begin

declaredeptvarchar(20),classvarchar(20),rankint

------------在学院排名次-------------

declarecursor_deptcursorfor

selectsdeptnamefromclscoregroupbysdeptname

opencursor_dept

fetchnextfromcursor_deptintodept

whileFETCH_STATUS=0

begin

setrank=1

declarecursor_classcursorfor

selectsclassnamefromclscorewheresdeptname=deptorderbysclscoredesc

opencursor_class

fetchnextfromcursor_classintoclass

whileFETCH_STATUS=0

begin

updateclscore

setsclrankindept=rankwheresclassname=class

setrank=rank+1

fetchnextfromcursor_classintoclass

end

closecursor_class

deallocatecursor_class

fetchnextfromcursor_deptintodept

end

closecursor_dept

deallocatecursor_dept

------------在学校排名次-------------

declarecursor_classcursorfor

selectsclassnamefromclscoreorderbysclscore

opencursor_class

fetchnextfromcursor_classintoclass

setrank=1

whileFETCH_STATUS=0

begin

updateclscore

setsclrankinsch=rankwheresclassname=class

setrank=rank+1

fetchnextfromcursor_classintoclass

end

closecursor_class

deallocatecursor_class

end

Go

5.5.4工程排名表值函数

------------------------------某工程排名函数表值函数

--输入:

某个工程的编号

--输出:

此工程的排序后的运发动学号顺序表

usesports

go

ifexists(select*fromsysobjectswherename='scRankFun'andtype='TF')

dropfunctionscRankFun

go

createfunctionscRankFun(sportnoint)

returnssttable

snoint,

sportnoint

as

begin

ifsportnoin(3,4,8,10)

begin

insertst

selectsno,sportno

fromsc

wheresportno=sportno

orderbyscoredesc

end

else

begin

insertst

selectsno,sportno

fromsc

wheresportno=sportno

orderbyscore

end

return

end

Go

5.6更新clscore表〔触发器〕

触发条件:

当运发动表stu有变动时,触发

功能:

根据运发动表stu中的信息,更新clscore表中的学院名和班级名

usesports

go

ifexists(select*fromsysobjectswherename='trClscoreSTU'andtype='TR')

droptriggertrClscoreSTU

go---------------------当stu表有变动时,及时更新

createtriggertrClscoreSTU

onstuafterinsert,update,delete

as

begin

declaresdeptnamevarchar(20),sclassnamevarchar(20)

declarestuSclassname_cursorcursorfor

selectsdept,sclassnamefromstu

openstuSclassname_cursor

fetchnextfromstuSclassname_cursorintosdeptname,sclassname

whilefetch_status=0

begin

ifnotexists(select*fromclscorewheresclassname=sclassname)

insertintoclscore(sdeptname,sclassname)values(sdeptname,sclassname)

fetchnextfromstuSclassname_cursorintosdeptname,sclassname

end

closestuSclassname_cursor

deallocatestuSclassname_cursor

end

go

go

5.7成绩表按照工程初始名次

usesports

--声明变量

go

declaresnoint,sportnoint,countspint

setsportno=1

selectcountsp=COUNT(*)fromsp

whilesportno<=countsp--所有工程均要排名

begin

declarerankint

setrank=1

--声明游标

declaresc_cursorCURSORfor

selectsnofromscRankFun(sportno)

--翻开游标

opensc_cursor

--提取第一行

fetchnextfromsc_cursorintosno

whileFETCH_STATUS=0

begin

usesports

updatesc

setsrank=rank

wheresno=sno

setrank=rank+1

fetchnextfromsc_cursorintosno

end

closesc_cursor

deallocatesc_cursor

setsportno=sportno+1

end

Go

5.8查询某个工程的全部成绩和排名〔表值函数〕

输入:

工程号

输出:

此工程的所有运发动的学号,,成绩,名次,班级,学院

----------------表值函数实现下面的查询功能------------------

--查询某个工程的全部成绩和排名

usesports

ifexists(select*fromsysobjectswherename='spFun'andtype='TF')

dropfunctionspFun

go

createfunctionspFun(sportnoint)

returnssttable

(学号int,varchar(20),成绩varchar(20),名次int,班级varchar(20),学院varchar(20))

as

begin

insertintost

selectstu.sno,stu.sname,s

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

当前位置:首页 > 高中教育 > 语文

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

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