课程设计论文竞赛管理系统代码数据字典流程图.docx

上传人:b****8 文档编号:10302347 上传时间:2023-02-10 格式:DOCX 页数:89 大小:5.05MB
下载 相关 举报
课程设计论文竞赛管理系统代码数据字典流程图.docx_第1页
第1页 / 共89页
课程设计论文竞赛管理系统代码数据字典流程图.docx_第2页
第2页 / 共89页
课程设计论文竞赛管理系统代码数据字典流程图.docx_第3页
第3页 / 共89页
课程设计论文竞赛管理系统代码数据字典流程图.docx_第4页
第4页 / 共89页
课程设计论文竞赛管理系统代码数据字典流程图.docx_第5页
第5页 / 共89页
点击查看更多>>
下载资源
资源描述

课程设计论文竞赛管理系统代码数据字典流程图.docx

《课程设计论文竞赛管理系统代码数据字典流程图.docx》由会员分享,可在线阅读,更多相关《课程设计论文竞赛管理系统代码数据字典流程图.docx(89页珍藏版)》请在冰豆网上搜索。

课程设计论文竞赛管理系统代码数据字典流程图.docx

课程设计论文竞赛管理系统代码数据字典流程图

信息工程学院

《数据库课程设计》论文

题目:

学科竞赛数据库设计

学号:

专业班级:

姓名:

指导老师:

完成日期:

学科竞赛管理系统数据库设计

摘要:

学科竞赛是每个学校有的一项活动,他可以提高学生学习的积极性,培养学生对学科的兴趣,丰富学生的课余生活,让学生在课下可以学到知识,交到朋友。

但学科竞赛的管理十分繁琐,流程复杂,工作量大。

因此老师和教务处都迫切需要一个能方便管理竞赛的系统。

该系统面向学生,老师,教务处,学院领导四种用户,涉及申请比赛,查询比赛,总结比赛,报名参赛,查询成绩等多方面功能。

这次设计包括需求分析,概念结构设计,物理结构设计,数据库实施四个方面。

关键字:

数据库;学科竞赛管理;SQLServer

1.需求分析1

业务流程图:

2

数据流程图:

3

2.数据库结构设计7

概念设计8

分E-R图建立8

全局/整体E-R图8

逻辑设计9

建立关系模式10

关系模式规范化处理11

用户子模式建立12

关系模式逻辑结构定义14

3.数据库物理设计15

4.数据库实施与测试16

SQLServer2008数据库实施与测试16

数据库及数据库对象建立16

数据入库16

数据库测试17

Oracle数据库实施与测试41

数据库及数据库对象建立41

数据入库41

数据库测试41

5.总结52

6.附录52

附录152

数据字典:

52

附录256

附录359

附录464

1.需求分析

需求分析是每个应用程序设计前必须的也是最重要的步骤,如果需求分析没做好,后期的工作可能算白费了。

因为软件的设计就是为了服务用户,如果对用户的需求分析错误,那么最终设计的软件就不是用户所需要的。

所以需求分析在软件开发周期中占有比较的的比重。

并且贯穿软件开发始终。

不能为了减少开发时间而缩短需求分析的时间。

需求分析需要全面考虑用户的每个需求,有些用户没提到的需求也要从其他需求中提去出来。

需求分析力求准确、完整、清晰、具体。

为了更好的分析需求,需要设计很多图和表。

包括业务流程图、数据流程图。

需要设计数据字典,包括数据项、数据结构、数据流、数据逻辑、数据存储。

概述:

学科竞赛信息管理系统旨在搭建一个信息平台,方便各类用户处理学科竞赛方面的事务,如方便用户浏览信息,简化管理中的各种操作,提高相关人员工作的效率。

其服务的对象有四个,分别为学生,教师,教务处管理员,学院管理员。

学生主要的业务有报名参赛,老师可以申报比赛,提交比赛总结,教务处和学院负责审核比赛和添加比赛,并且负责各项赛事的统计和分析工作。

所有用户都可以对赛事进行查询。

首先从业务的角度来描述其功能。

业务主要分为两个部分:

报名管理和过程管理,过程管理分为竞赛项目管理,竞赛统计管理,竞赛项目查询三部分。

报名管理:

系统根据竞赛的报名信息推荐给相关学生。

学生如果选择报名,不用填写信息,系统会将其个人信息直接存储在报名表中,待教师和学院进行审核,审核的结果会在开赛前几天公布。

竞赛项目管理:

教师填写竞赛申请表和报名信息,系统先交个学院审核,通过了再交给教务处审核。

通知老师最终的审核结果。

如果都审核通过了,教务处发布到系统中。

如果审核不通过,教务处可以让老师修改项目预算,修改时间或地点后再次申请,或者直接放弃该项赛事。

竞赛统计管理:

学院赛事统计,可以查看某一年份各学院申报竞赛的数量和经费,也可以分析各个学院在某个比赛的表现,查询某个学生在校所获奖项等。

这些都可以作为报表导出。

竞赛赛事查询:

各用户可以根据不同的需求进行竞赛项目的查询操作,查看竞赛的报名情况,成绩等信息。

简化功能结构如下

业务流程图:

图1-2添加比赛业务

图1-3学生报名参赛业务

数据流程图:

图1-7第一层数据流程图3

图1-8第二层数据流程图1

图1-9第二层数据流程图2

图1-10第二层数据流程图3

根据数据流程图可以建立数据字典,分别有数据项,数据结构,数据流,数据逻辑和数据存储。

见附录1.

2.数据库结构设计

主要包括概念设计和逻辑设计两个部分。

概念设计

/*阐述概念设计目标、任务和方法,重点介绍概念设计的内容。

*/

概念模型是现实世界到机器世界的一个中间层次。

概念结构设计时整个数据库设计的关键,它通过对用户需求进行综合、归纳与抽象,形成一个独立于具体数据库管理系统的概念模型。

——数据库系统概论(王珊,萨师煊第五版)

概念设计就是将需求分析得到的用户需求抽象为信息结构(即概念模型)。

概念设计是在需求分析的基础上进行设计的,是把需求分析的成果转化为简单、清晰、易于理解的概念模型。

概念模型中最主要的就是E—R图。

2.1.1分E-R图建立

阐述分E-R图建立的思想(以中层数据为切入点,按照分层次/分模块思想),用E-R模式描述。

E-R图的建立以比赛为切入点。

分为教师申请比赛,学院或教务处添加或总结比赛。

学院或教务处审核比赛,学生报名参赛。

教师总结比赛等模块

2.1.2全局/整体E-R图

整体E-R图

整体E-R把各个E-R图按逻辑组合起来。

来粗略的描述整个系统要完成的功能。

E-R图如下:

图2-1全局E-R图

逻辑设计

逻辑结构设计的任务就是把概念结构设计阶段设计的基本E-R图转换为与选用数据库管理系统产品所支持的数据模型相符合的逻辑结构。

2.2.1建立关系模式

E-R图向关系模型的转换要解决的问题是,如何将实体型和实体间的联系转换为关系模式,如何确定这些关系模式的属性和码。

对于不同的实体间的联系有不同的转换方式。

1.一个1:

1联系可以转换为一个独立的关系模式,也可以与任意一端对应的关系模式合并。

如果转换为一个独立的关系模式,则与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性,每个实体的码均是该关系的候选码。

如果与某一端实体对应的关系模式合并,则需要再该关系模式的属性中加入另一个关系模式的码和联系本身的属性。

2.一个1:

n联系可以转换为一个独立的关系模式,也可以与n端对应的关系模式合并。

如果转换为一个独立的关系模式,则与该联系相连的各实体的码及联系本身的属性均转换为关系的属性,而关系的码为n端实体的码。

3.一个m:

n联系转换为一个关系模式,与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性,个实体的码组成关系的码或关系码的一部分。

4.三个或三个以上实体间的一个多元联系可以转换为一个关系模式。

与该多元联系相连的各实体的码以及联系本身的属性均转换为关系的属性,个各实体组成关系的码或关系码的一部分。

5.具有相同码的关系模式可以合并。

根据上面的转换原则得到的关系模式如下:

学生信息(学号,姓名,性别,生日,电话,邮箱,专业,所在班级,年级,系统登录密码,学号->姓名,学号->性别,学号->电话,学号->邮箱,学号->所在班级,学号->年级,学号->专业,学号->系统登录密码);

教师信息(工号,姓名,性别,生日,电话,邮箱,所在学院,登录密码,职务,备注,工号->姓名,工号->性别,工号->生日,工号->电话,工号->邮箱,工号->所在学院,工号->登录密码,工号->职务);

学院信息(学院名,负责人工号,学院名->负责人工号);2.2.22.2.3生信息视图(学号,姓名,性别,年龄,电话,邮箱,专业,所在学院,年级);

2.教师信息视图(工号,姓名,性别,年龄,电话,邮箱,所在学院);

3.已审核赛事信息视图(赛事编号,赛事名称,赛事信息,比赛时间,赛事级别,主办方,负责人工号,报名开始时间,报名结束时间,赛事举办地点);

4.学生成绩视图(学生姓名,专业,年级,学院,比赛名称,指导老师,比赛成绩,比赛排名,备注);

5.待审核赛事信息视图(赛事编号,赛事名称,赛事信息,比赛时间,赛事级别,主办方,负责人工号,报名开始时间,报名结束时间,赛事举办地点,赛事预算,赛事申请信息,赛事总结,赛事审核信息)

6.已审核赛事视图(赛事编号,赛事名称,赛事信息,比赛时间,赛事级别,主办方,负责人工号,报名开始时间,报名结束时间,赛事举办地点,赛事预算,赛事申请信息,赛事总结,赛事审核信息)

图2-2全部视图

2.2.4关系模式逻辑结构定义

关系模式总共有九个,一下为其汇总表。

表2-2医院门诊管理系统关系模式汇总表

关系模式名称

含义

备注

studentInfor

学生详细信息

附录2附表1

teacherInfor

教师详细信息

附录2附表2

departInfor

学院信息

附录2附表3

contestInfor

赛事详细信息

附录2附表4

notice

通知相关内容

附录2附表5

stunotice

学生通知记录

附录2附表6

teanotice

教师通知记录

附录2附表7

conResult

竞赛成绩信息

附录1附表8

majInfor

专业学院关系

附录1附表9

3.数据库物理设计

数据库的物理设计时为逻辑数据模型选取一个合适的物理结构(包括存储结构和存取方法)从而最大限度地提高数据库的效率。

数据库的物理设计通常分为两步:

(1)确定数据库的物理结构,在关系数据库中主要指存取方法和存储结构

(2)对物理结构进行评价,评价的重点是时间和空间效率。

由于在建立主键的时候,数据库自动将其当做聚簇索引,而一张表只能建立一个聚簇索引,所以这里主要考虑非聚簇索引的设计。

虽然索引会明显提高数据查询的效率,但索引的加入也会带来弊端。

(1)索引的建立会增加数据库的磁盘占用空间。

索引并不像视图那样是虚的,它是实际存在的一种表,索引任何索引都会占据一定的空间。

(2)索引的建立会影响insert,delete,update等语句的功能。

因为执行这些语句的同时,索引也要做相应的调整和更新。

就该数据库而言,学生信息是该系统的基础,大多数业务都围绕着某个学院的学生进行的,如通知某个学院的学生参加比赛,查询某个学院的学生信息,所以学生表表会经常涉及到关于某个学院的查询和连接操作。

并且学生信息表在建立后就很少插入,更新和删除,根据上面的讨论,可以对学生信息表中的专业名称建立非聚簇索引。

另外竞赛信息也是该系统的基础,在学生查看所在学院竞赛,教务处统计某个学院竞赛经费和举办情况这些业务中会经常涉及到ORDERBY、GROUPBY、UNION、DISTINCT操作,所以对竞赛信息表中的学院名称也建立非聚簇索引。

再者,竞赛成绩信息是该系统的中心,无论是学生,老师,学院,还是教务处,都会涉及到查询某个竞赛成绩的操作,而且每个竞赛都会有排名,这涉及到ORDERBY操作,查询某个竞赛某个学院的比赛情况,这涉及到GROUPBY操作。

并且一但竞赛成绩被录入,就不会对该成绩信息进行更新、插入和删除操作。

所以,对竞赛成绩中的竞赛编号建立非聚簇索引。

图2-3全部

索引

4.数据库实施与测试

SQLServer2008数据库实施与测试

4.1.1数据库及数据库对象建立

按照逻辑设计的成果,由于存在外键约束,所以对建表的顺序有约束。

根据各个约束条件。

分别建立学院信息表,专业信息表,教师信息表,学生信息表,赛事信息表,通知信息表,学生通知表,教师通知表,赛事成绩表。

DDL语句见附录3。

4.1.2数据入库

选择一些学院和专业录入到数据库,然后随机录入教师和学生信息。

然后根据,在录入过程中根据外键约束做相应调整。

数据库测试

下面主要对建立的存储过程和触发器测试。

/*教师申请比赛的存储过程*/

createproceduretea_apply_contest

@conNamevarchar(30),

@conInfortext,

@conLevelvarchar(20),

@conHostvarchar(20),

@conTeaIdvarchar(10),

@conBudgetsmallint,

@conApplytext

as

insertintoconInfor

conName,

conInfor,

conLevel,

conHost,

conTeaId,

conBudget,

conApply,

conVerify

values

@conName,

@conInfor,

@conLevel,

@conHost,

@conTeaId,

@conBudget,

@conApply,

'未审核'

go

测试代码

exectea_apply_contest

'Java知识大赛',

'数据库设计的比赛,面向全院',

'院级',

'信息工程学院',

'3000',

'申请说明书'

go

测试结果:

图4-1

图4-2

/*学院或教务处添加比赛的过程*/

createprocedureadd_contest

@conNamevarchar(30),

@conInfortext,

@conLevelvarchar(20),

@conHostvarchar(20),

@conTeaIdvarchar(10),

@conBudgetsmallint,

@conApplytext

as

insertintoconInfor

conName,

conInfor,

conLevel,

conHost,

conTeaId,

conBudget,

conApply,

conVerify

values

@conName,

@conInfor,

@conLevel,

@conHost,

@conTeaId,

@conBudget,

@conApply,

'审核通过'

go

execadd_contest

'C++语言知识大赛',

'关于C语言知识设计的比赛,面向全院',

'院级',

'信息工程学院',

'3000',

'申请说明书'

go

测试结果:

图4-3

/*显示待审核比赛存储过程*/

createprocedureshow_unverify

as

select

from

conInfor,

teaInfor

whereconVerify='未审核'

and=

go

execshow_unverify

go

图4-4

/*审核比赛过程*/

createprocedureverify_contest

@conIDint,

@verifyInforvarchar(10)

as

updateconInfor

set=@verifyInfor

where=@conID

go

execverify_contest'2','审核未通过'

go

execverify_contest'3','审核通过'

go

图4-5

/*设置报名和比赛信息的过程*/

createprocedureset_reg_infor

@conIDint,

@conTimedatetime,

@regBegindatetime,

@regEnddatetime,

@conAddressvarchar(50)

as

updateconInfor

set

=@conTime,

=@regBegin,

=@regEnd,

=@conAddress

where

=@conID

and='审核通过'

go

execset_reg_infor

8,

'2015/6/2412:

00',

'2015/6/2320:

00',

'2015/6/2410:

00',

'信息工程学院m2'

go

测试结果

图4-6

/*测试ident_current()函数,该函数返回刚插入后数据项的主键*/

insertintonotice

noticeTime,

noticeHostID,

noticeInfo

values

'2015/6/2400:

05',

'测试5'

selectident_current('notice')

go

/*赛事负责人通知学生参加某个比赛*/

dropprocedurecon_notice

go

createprocedurecon_notice

@conIDint,

@noticeTimedatetime,

@noticeHostIDvarchar(10),

@stuGradechar(4),

@namevarchar(20)

as

begin

if(select

fromconInfor

where=@conID)='审核通过'

begin

declare

@conNamevarchar(30),

@conLevelvarchar(20),

@noticeIDint

select@conName=

selectconName

fromconInfor

whereconID=@conID

select@conLevel=

selectconLevel

fromconInfor

whereconID=@conID

insertintonotice

noticeTime,

noticeHostID,

noticeInfo

values

@noticeTime,

@noticeHostID,

@conName+'马上就要开始了,希望你踊跃报名参加!

'

select@noticeID=

selectident_current('notice')

declare@stuIDchar(10)

if@conLevel='校级'

begin

declareuni_cursorcursor

forselectstuID

fromstuInfor

wherestuGrade=@stuGrade

openuni_cursor

fetchnextfromuni_cursor

into@stuID

while(@@FETCH_STATUS=0)

begin

insertintostuNotice

stuNotID,

stuNotTo

values

@noticeID,

@stuID

fetchnextfromuni_cursor

into@stuID

end

closeuni_cursor

deallocateuni_cursor

end

if@conLevel='院级'

begin

declaredep_cursorcursor

forselectstuID

from

stuInfor,

majInfor

where

stuGrade=@stuGrade

and=

and=@name

opendep_cursor

fetchnextfromdep_cursor

into@stuID

while(@@FETCH_STATUS=0)

begin

insertintostuNotice

stuNotID,

stuNotTo

values

@noticeID,

@stuID

fetchnextfromdep_cursor

into@stuID

end

closedep_cursor

deallocatedep_cursor

end

if@conLevel='专业级'

begin

declaremaj_cursorcursor

forselectstuID

fromstuInfor

where

stuGrade=@stuGrade

andstuMajor=@name

openmaj_cursor

fetchnextfrommaj_cursor

into@stuID

while(@@FETCH_STATUS=0)

begin

insertintostuNotice

stuNotID,

stuNotTo

values

@noticeID,

@stuID

fetchnextfrommaj_cursor

into@stuID

end

closemaj_cursor

deallocatemaj_cursor

end

end

else

return

end

go

execcon_notice

1,

'2015/6/2323:

00',

'2013',

'信息工程学院'

go

execcon_notice

3,

'2015/6/2322:

00',

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

当前位置:首页 > 高等教育 > 文学

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

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