数据库原理实验报告综合实验华东理工大学课程设计.docx

上传人:b****6 文档编号:6623100 上传时间:2023-01-08 格式:DOCX 页数:27 大小:460.44KB
下载 相关 举报
数据库原理实验报告综合实验华东理工大学课程设计.docx_第1页
第1页 / 共27页
数据库原理实验报告综合实验华东理工大学课程设计.docx_第2页
第2页 / 共27页
数据库原理实验报告综合实验华东理工大学课程设计.docx_第3页
第3页 / 共27页
数据库原理实验报告综合实验华东理工大学课程设计.docx_第4页
第4页 / 共27页
数据库原理实验报告综合实验华东理工大学课程设计.docx_第5页
第5页 / 共27页
点击查看更多>>
下载资源
资源描述

数据库原理实验报告综合实验华东理工大学课程设计.docx

《数据库原理实验报告综合实验华东理工大学课程设计.docx》由会员分享,可在线阅读,更多相关《数据库原理实验报告综合实验华东理工大学课程设计.docx(27页珍藏版)》请在冰豆网上搜索。

数据库原理实验报告综合实验华东理工大学课程设计.docx

数据库原理实验报告综合实验华东理工大学课程设计

 

 

《数据库原理》

实验报告本

2012~2013学年第一学期

专业

计算机科学与技术

班级

姓名

学号

指导教师

计算机实验教学中心

2012年12月

实验名称:

2012-2013赛季欧冠联赛小组赛管理系统

实验地点:

信息楼215

所使用的工具软件及环境:

SQLServer2008、VisualStudio2010

一、实验目的:

1.通过实践,掌握数据库设计方法;

2.学会在一个实际的RDBMS软件平台上创建数据库系统;

3.掌握通过ODBC、ADO访问数据库的方法;

二、实验内容:

1系统定义

项目来源:

在足球比赛中,人们往往希望较容易的获得球队、球员和赛程的一些信息,而管理员则希望简单方便的对其信息进行各种管理操作,同时,也需要较容易的获得球队积分,球员射手排行和各种不容错过的进球信息,所以我们选择完成一个足球联赛管理系统,这里我们就以本年度欧洲冠军联赛为载体,旨在对其球员、球队、赛程和各种排行信息进行总结和管理,方便用户和管理员进行数据的输入和查询,同时,我们也将把球迷的投票和投票结果进行管理,然后持续更新球迷最喜爱的球队和最喜爱的球员的信息,来和用户进行简单的互动,体现出我们项目的完整性和新颖性。

项目名称:

2012-2013赛季欧洲冠军联赛小组赛管理系统

项目介绍:

该系统以欧冠比赛为载体,通过SQLServer2008实现其数据库的编写和实现,利用VisualStudio2010的C#语言完成其编写过程,对本年度欧冠联赛的各种信息进行管理,通过制作的专门界面,可以对球队、球员、比赛情况、各种统计信息进行管理。

功能分析:

该系统是2012-2013赛季欧冠联赛小组赛管理系统,主要是通过欧冠联赛对足球比赛的球员、球队和比赛相关的一些活动进行系统的管理和维护,所以应该以小组赛况信息为中心,组织相关程序结构。

该系统的具体功能主要分为以下几个方面:

1)球队信息管理:

显示比赛球队的大体信息,包括球队在欧冠中的分组情况,有对球队信息的增删改查的功能。

2)球员信息管理:

显示球员自身的一些信息以及与球队的关联,具有对球员信息的增删改查的功能。

3)赛程信息管理:

显示本赛季安排的比赛信息,具有增删改查的功能。

4)比赛结果信息管理:

显示比赛结果的相关统计信息,包括比赛客队和主队的比赛结果和球员的进球统计等,具有增删改查的功能。

5)比赛积分信息管理:

根据比赛结果中相关数据计算每个球队的胜场数和负场数,可以选择所在的小组,然后按照结果显示相关排名,导出积分表格,显示比赛结果的排名信息,具有增删改查的功能。

6)球迷投票信息管理:

主要记录每个登陆的球迷的基本信息和其所喜爱的球队和球员,对所得票数进行统计,得出最后的TOP排行榜,具有查询功能。

7)竞猜管理信息系统:

主要是先从赛程表中选择出并未出结果的比赛场次及其时间,然后选择用户需要竞猜的场次,填入用户名和密码以及其竞猜的比分,最后可以查询竞猜是否成功,以及查看获奖情况。

2需求分析(DFD+DD)

(1)数据流图(DFD)

(2)数据字典

数据项是数据库的关系中不可再分的数据单位。

下表分别列出了数据的名称、数据的类型、长度、取值能否为空。

利用SQLServer2008建立“Soccer”数据库,其基本表清单及结构描述如下:

数据库中用到的表:

数据库表名

关系模式名称

备注

Course

赛程

赛程基本信息表

Player

球员

球员基本信息表

Score

积分

比赛积分信息表

Team

球队

球队基本信息表

Goal

进球

进球基本信息表

GoalScore

射手

球员进球排行表

Fans

球迷

球迷投票信息表

Prediction

竞猜

用户竞猜信息表

Award

获奖

用户获奖信息表

Course基本情况数据表,结构如下:

字段名

字段类型

允许Null值

说明

Host

varchar(20)

NotNull

主队

Guest

varchar(20)

NotNull

客队

Groupno

varchar(20)

NotNull

小组号

Gametime

datetime

NotNull

比赛时间

Hscore

int

主队得分

Gscore

int

客队得分

Player基本情况数据表,结构如下:

字段名

字段类型

允许Null值

说明

Pname

varchar(20)

NotNull

姓名

Tname

varchar(20)

NotNull

球队名称

Number

int

NotNull

球衣号码

Position

varchar(6)

NotNull

位置

Birth

datetime

生日

Team基本情况信息表,结构如下:

字段名

字段类型

允许Null值

说明

Tname

varchar(20)

NotNull

球队名称

Home

varchar(30)

主场地

Coach

varcar(20)

教练

Groupno

varchar

(2)

小组号

Captain

varchar(20)

队长

Score基本情况信息表,结构如下:

字段名

字段类型

允许Null值

说明

Tname

varchar(20)

NotNull

球队名称

Won

int

胜场

Even

int

平场

Beaten

int

负场

Goalno

int

总进球数

Lostno

int

总失球数

Point

int

积分

Goal基本情况信息表,结构如下:

字段名

字段类型

允许Null值

说明

Tname

varchar(20)

NotNull

球队名称

Number

int

NotNull

球衣号码

Turn

int

NotNull

比赛轮次

Goaltime

int

NotNull

进球时间

GoalScore基本情况信息表,结构如下:

字段名

字段类型

允许Null值

说明

Place

int

NotNull

排名

Pname

varchar(20)

NotNull

姓名

Tname

varchar(20)

NotNull

球队名称

Number

int

NotNull

球衣号码

Goals

in

NotNull

进球总数

Fans基本情况信息表,结构如下:

字段名

字段类型

允许Null值

说明

Sno

varchar(20)

NotNull

球迷编号

Sname

varchar(20)

球迷姓名

Ssex

varca(20)

球迷性别

Fteam

varchar(20)

球迷最喜爱球队

Fplayer

varchar(20)

球迷最喜爱队员

Prediction基本情况信息表,结构如下:

字段名

字段类型

允许Null值

说明

Users

varchar(30)

NotNull

用户名

Password

varchar(30)

NotNull

密码

Host

varchar(30)

NotNull

主队名称

Guest

varchar(30)

NotNull

客队名称

Phscore

int

竞猜主队比分

Pgscore

int

竞猜客队比分

Award基本情况信息表,结构如下:

字段名

字段类型

允许Null值

说明

Name

varchar(30)

NotNull

获奖者姓名

ID

varchar(30)

NotNull

身份证号

Mail

varchar(30)

NotNull

电子邮箱

Telephone

varchar(30)

NotNull

电话号码

3概念结构(E-R图)

由需求分析的结果,画出基本E-R如下:

对基本E-R图进行合并和消除数据冗余后得到E-R图如下:

由E-R图可知,本系统设计的实体包括:

(1)球员基本信息:

球员姓名、所在球队名称、球衣号码、所在球队位置、生日;

(2)球队基本信息:

球队名称、主场地、教练、小组号、队长;

(3)赛程基本信息:

主客队名、小组号、比赛日期、主客队比分;

(4)进球表基本信息:

球队名称、球衣号码、比赛轮次、进球时间;

(5)积分榜基本信息:

球队名称、胜场、平场、负场、总进球、总失球、积分;

(6)射手榜基本信息:

名次、球员姓名、球队名称、球衣号码、进球数;

(7)球迷投票基本信息:

编号、姓名、最喜爱的球队、最喜爱的球员;

(8)比赛竞猜基本信息:

用户名、密码、主队名、客队名、竞猜主队进球数、竞猜客队进球数;

(9)获奖基本信息:

姓名、身份证号、电子邮箱、电话号码

4逻辑结构(关系模式集+视图)

1)有E-R图转化而得到的关系模式如下:

(1)Team(Tname,Home,Coach,Groupno,Captain)其主键为Tname

F={Tname->Home,Tname->Coach,Tname->Groupno,Tname->Captain}

为BC范式;

(2)Player(Pname,Tname,Number,Position,Birth)其主键为(Tname,Number)

F={(Tname,Number)->Pname,(Tname,Number)->Positioin,(Tname,Number)->Brith}

为BC范式;

(3)Course(Host,Guest,Groupno,Gametime,Hscore,Gscore)其主键为(Host,Guest)

F={(Host,Guest)->Groupno,(Host,Guest)->Gametime,(Host,Guest)->Hscore,(Host,Guest)->Gscore}

为BC范式;

(4)Goal(Tname,Number,Turn,Goaltime)其主键为(Tname,Number,Turn,Goaltime)

F={(Tname,Number,Turn,Goaltime)}

为BC范式

(5)Score(Tname,Won,Even,Beaten,Goalno,Lostno,Point)其主键为Tname

F={Tname->Won,Tname->Even,Tname->Beaten,Tname->Goalno,Tname->Lostno,Tname->Point}

为BC范式;

(6)GoalScore(Place,Pname,Tname,Number,Goals)其主键为(Tname,Number)

F={(Tname,Number)->Place,(Tname,Number)->Pname,(Tname,Number)->Goals}

为BC范式;

(7)Fans(Sno,Sname,Ssex,Fteam,Fplayer)其主键为Sno

F={Sno->Sname,Sno->Ssex,Sno->Fteam,Sno->Fplayer}

为BC范式;

(8)Prediction(Users,Password,Host,Guest,Phscore,Pgscore)其主键为(User,Password,Host,Guest)

F={(User,Password,Host,Guest)->Phscore,(User,Password,Host,Guest)->Pgscore}

为BC范式;

(9)Award(Name,ID,Mail,Telephone)其主键为ID

F={ID->Name,ID->Mail,ID->Telephome}

为BC范式。

2)确定关系模型的存取方法

在将概念模型转换成物理模型之后,我们可以对物理模型进行设计,双击物理模型的关系,可以对该关系的名称、注释等信息进行查询。

可对该关系的属性列进行设计,可分别设置其名称、码、数据类型以及主码、是否为空等。

在实际设计中最常用的存取方法是索引,使用索引可以大大减少数据的查询时间,在建立索引时应遵循:

在经常需要搜索的列上建立索引;在主关键字上建立索引;在经常用于连接的列上建立索引,即在外键上建立索引;在经常需要根据范围进行搜索的列上创建索引,因为索引已经排序,其指定的范围是连续的等规则。

才能充分利用索引的作用避免因索引引起的负面作用。

3)本系统用到的视图

(1)基于Fans表,创建一个选出Fteam及其所得票数的视图s_fteam1

Createviews_fteam1As

SELECTDISTINCTFteam,COUNT(Fteam)ASnumber

FROMFans

GROUPBYFteam

(2)创建基于视图s_fteam1的视图s_fteam,选出Fteam排名前三的数据

Createviews_fteamAs

SELECTTOP3Fteam,number

FROMs_fteam1

ORDERBYnumberDESC

(3)基于Fans表,创建一个选出Fplayer及其所得票数的视图s_fplayer1

Createviews_fplayer1As

SELECTDISTINCTFplayer,COUNT(Fplayer)ASnumber

FROMFans

GROUPBYFplayer

(4)创建基于视图s_fplayer1的视图s_fplayer,选出Fplayer排名前三的数据

Createviews_fplayerAs

SELECTTOP3Fplayer,number

FROMs_fplayer1

ORDERBYnumberDESC

(5)创建基于Course表的视图s_prediction,选出还没有比分的比赛赛程基本信息

Createviews_predictionAs

SELECTGametime,Host,Guest

FromCourse

WHEREHscoreisnullandGscoreisnull

(6)创建基于Prediction表的视图s_quizquery,选出其中的除密码以外的所有信息,密码要用户自己输入,判断正确后才能进行下面的操作

Createviews_quizquery

SelectUsers,Host,Guest,Phscore,Pgscore

FormPrediction

4)本系统用到的存储过程

(1)根据传入参数是Tname还是Groupno来从Team表中查询其他的信息

CreateProcedurep_soccerStock@columnvarchar(30),@valuevarchar(50)

AS

IF@column='Tname'

SELECTTname,Home,Coach,Groupno,Captain

FROMTeam

WHERETnameLIKE'%'+@value+'%'

ELSE

SELECTTname,Home,Coach,Groupno,Captain

FROMTeam

WHEREGroupnoLIKE'%'+@value+'%'

(2)根据传入参数Groupno来从Team表和Score做连接,查询其每组的球队和积分

CreateProcedurep_scoreStock@valueNVarChar

(2)

AS

SELECTScore.Tname,Won,Even,Beaten,Goalno,Lostno,Point

FROMTeam,Score

WHERETeam.Tname=Score.TnameandGroupnoLIKE'%'+@value+'%'

(3)根据传入参数Tname,从Player表中查询属于某球队的所有球员的信息

CreateProcedurep_playerStock@columnvarchar(20),@valuevarchar(50)

AS

SELECTPname,Number,Position,Birth

FROMPlayer

WHERETnameLIKE'%'+@value+'%'

(4)根据传入参数Turn,从Goal表中查询某轮比赛的所有球员进球信息

CreateProcedurep_bookStock]@columnvarchar(30),@valuevarchar(50)

AS

SELECTTname,Number,GoalTime

FROMGoal

WHERETurnLIKE'%'+@value+'%'

5物理设计(存储结构及索引)

确定数据库的存储结构主要指确定数据的存放位置和存储结构,包括确定关系、索引、日志、备份等的存储安排及存储结构,以及确定系统存储参数的配置。

索引设计:

各表都有自己的主键,主键为聚集索引,而且每个表只能建立一个聚集索引,所以只能创建非聚集索引。

(1)创建Course信息表代码:

CREATETABLECourse(

Hostvarchar(20)NOTNULL,

Guestvarchar(20)NOTNULL,

Groupnovarchar

(2)NOTNULL,

GametimedatetimeNOTNULL,

HscoreintNULL,

GscoreintNULL,

CONSTRAINTPK_CoursePRIMARYKEY(Host,Guest)

(2)创建球队Team信息表、球员Player信息表、Goal信息表、Score信息表、GoalScore信息表、Fans信息表、Prediction信息表、Award信息表代码,在此不再赘述。

6系统实现(代码见附录)

1)主界面

功能:

主界面的主要功能是对用户选择相应操作的触发,如球队管理功能、球员管理功能等。

界面设计:

2)球队管理模块

功能:

添加、删除、修改和查询球队的信息

界面设计:

3)球员管理模块

功能设计:

添加、删除、修改和查询球员的信息

界面设计:

4)赛程管理模块

功能设计:

分别对赛程表和进球表进行查询等操作。

界面设计:

5)TOP榜管理模块

功能设计:

主要是对小组积分和球员射手榜的查询等功能

界面设计:

6)球迷投票管理模块

功能设计:

主要是记录球迷的基本信息和对投票的记录与管理

界面设计:

7)用户竞猜管理模块

功能设计:

主要是记录用户的基本信息和对比赛结果的竞猜情况,

界面设计:

三、出现的问题和解决方案

1)关于界面:

(1)刚开始编程的时候对按钮的操作却没有任何反应,很纠结,后来发现是按钮的Name属性与函数编程中的按钮的名称弄混了,比如有个按钮的Name为button1,则必须该按钮的Click函数为privatevoidbutton1_Click(objectsender,EventArgse),否则用户单击的时候将不会产生任何响应。

(2)对界面的安排和设置不合理,导致界面很乱,许多静态文本和按钮等混淆在一起,最终导致功能完善的不合理。

最后查阅资料,了解到可以在Form中插入多个Panel面板或者是GroupBox分组框,将每个不同功能的控件,包括Label、TextBox、Button、RadioButton

ComboBox等放在相同的Panel或者GroupBox中,这样界面分配合理且有条理,不仅美观,对功能的实现也起到了一点帮助的作用。

(3)对ComboBox内的选项进行初始化的时候遇到了一些问题,因为我把Form的Load函数初始化Combox和在Combox中的Item初始化的时候都做了一遍,不仅浪费了代码和时间,有时还会导致冲突错误。

解决方法很简单,两种方法取其一种就可以了,这里推荐直接在Item中添加选项,因为简单和全可视化操作,但是如果其中的选项要在数据库的表中查询,则必须使用Load方法的初始化其选项。

(4)实验完成后发现窗口的背景和所有控件的大小都不随窗口的大小改变而改变,即每当最大化窗口或者拉伸窗口的时候,控件并不随着改变其大小,这样就会导致界面不美观。

查了一下资料,有两种解决方案:

第一,更改控件的Dock或Anchor的属性,使其可以随着窗口的变换而变换,即将Anchor设置为Top,Left,Bottom,Right或者将Dock设置为靠近上下左右四个方向停靠,试验了一下,果真可以,但是当窗口中控件很多的情况下,不仅一个一个设置很麻烦,而且当Anchor和Dock属性用多了以后,窗口拉伸的时候会出现不停的闪烁的现象,而且无法避免;第二,直接设置完成控件的大小后,设置其大小不可改变,这样只需要更改窗口的MaximizeBox为False,并将FormBorderStyle设置为FixedSingle即可,这样既方便又有效限制了用户的操作规范,不至于发生什么界面混乱的状况,但是不能随意修改大小某些时候也会有些限制;所以,这里我们仅采用第二种做法。

2)关于数据库:

(1)往表中插入数据,只能每次插入一条记录吗?

最终答案:

是的,在SQLServer中,用INSERT…VALUES…每次只能插入一条记录。

(2)对定义了外键的表插入数据时,例如对Reports表插入元组时,总是说插入错误。

最终解决:

在表中定义了外键之后,对表进行插入时,要注意数据与被引用表中的一致性。

要插入的元组中,属于外键的数据必须是在被引用表中存在的。

例如:

在Reports中定义Sno为外键,参照表Students中的Sno。

那么在Reports表中要插入(‘S88’,’T02’,’C01’,88)时,如果Students表中没有“S88”这条记录,那么插入失败。

另外,如果这些规定都符合了,但插入语句VALUES()括号里的各字段值顺序跟表中的顺序不一致,也会出现同样的错误提示。

(3)在SQL语句的末尾都可以加分号“;”,但是为什么在创建视图的语句后面加了分号会报错?

最终解决:

在SQLServer2000中,查询分析器中的语句规则是,各条语句后面不用加任何标点符号。

但鉴于人们的使用习惯,基本上允许在每条语句的后面加上“;”。

个别语句可能会有影响。

另外也可以用“GO”来隔开各条语句。

它的意义在于告诉系统,在两个“GO”之间的语句作为一批去处理。

(4)为何建了新的用户,却登录不了?

最终解决:

建立管理员账号(如sa)时,若定义为以WINDOWS验证登录。

而建立其它用户,如USER1时,定义为WINDOWS+SQL验证登录。

这样USER1无法登录。

只有将sa登录方式改为以WINDOWS+SQL验证登录之后,方可以USER1登录。

若不改S

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

当前位置:首页 > 党团工作 > 入党转正申请

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

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