排球赛事网的设计与实现
摘要
随着近几年来计算机技术、网络技术及相应软件技术的迅猛发展,人们的生活已越来越离不开计算机了,而且总是要花费很多时间在它上面。一直以来,排球作为一项大众喜爱的运动,得到广泛传播。随着各项排球赛事的普及,将最新的信息通过网络传递给人们已势在必行。由此开发了本排球赛事网站。文中着重论述了该系统的功能与实现、前台浏览、后台管理等。并对关键的有关技术作了较详细的介绍。
本网站采用ASP.NET技术作为创建应用程序的方式,以C#作为编程语言,采用MVC模式,SQL Server数据库作为后台数据库。它是基于Browser/Server结构下形成的数据驱动的Web应用程序。
本文系统的分析了软件开发的背景及过程;首先介绍了软件的开发环境,其次介绍了本软件的详细设计过程:数据库的设计、各个模块的设计和实现,以及具体界面的设计和功能。最后对在本软件开发过程中的问题进行了总结。
该网站系统可以完成对各类信息的浏览、查询、添加、删除、修改等功能。主要实现了后台管理员维护数据,前台用户浏览、交流等功能。
关键词:排球;赛事;网站;ASP;数据库;SQL Sever
一、排球赛事网站需求分析
1 系统概述
1.1 项目来源及背景
无论是在世界的哪一个地方,总是会看到排球的身影。随着互联网的迅猛发展,信息时代的感染,人类的生产和生活方式产生发生了很大改变。
大到世界杯排球赛小到学校的比赛,每一场的比赛都会产生大量的信息。排球赛事网站可以及时用更直观的数据与信息展现在人们的眼前。有助于分析球员的综合能力,球队的综合实力;也可以帮助人们更好地了解赛事的进展情况。
和篮球一样,排球也是近代才新发明出来的一种运动。更为巧合的是,两种运动都在同一个学校诞生,并且时间相近。1895年美国马萨诸塞州霍克奥克市基督教男子青年会体育干事威廉-摩根,认为当时流行的篮球运动过于激烈,于是就创造了一种比较温和、活动量适度、男女老少都可以参加的室内游戏。
当时,这种游戏没有严格的规则,也没有正式的名字,玩时双方人数不限,击球的次数也不限,只要使球不落地并把它从网上回击到对方场地上即可。这种游戏就是排球运动的雏形。这个新的运动项目最初起名叫mintonette(小网子),1896年,即摩根创造这种网上击球游戏的第二年,美国普林菲尔德市立学校的艾-特-哈尔斯戴特博士,根据摩根游戏的特点,把这项运动命名为“volleyball”。这一名称得到大家的公认,并沿用至今。
摩根游戏一问世即受到人们的喜爱。为使这项运动能成为竞赛项目得以推广,摩根制订出了世界上第一个排球比赛规则。根据摩根制订的比赛规则,1896年在斯普费尔德体育专科学校举行了被称为世界上最早的排球比赛。
1946年,国际排球联合会成立。1964年东京奥运会排球首次进入奥运大家庭。在奥运排球史上,没有哪个国家可以长期统治。苏联队是赢得奖牌数最多的国家,而日本女排和美国男排则在上世纪七八十年代实力突出,中国女排也曾经两度夺金。
排球1964年成为奥运会正式比赛项目,中国女排一直是世界排坛的一支劲旅,先后夺得了1984年和2004年两届奥运会金牌。随着雅典奥运会夺冠功臣们的逐渐老去,中国女排的成绩有所下滑,不过在一干新鲜血液注入之后,她们又重新看到了卫冕奥运会冠军的希望。
1.2 用户的特点
本系统的用户都是网上用户,包括两类,一类是对网站后台的操作者,他们每个人有自己的任务,他们需要给网站数据库中添加数据,写新闻,上传图片等功能。另一类是浏览用户,他们会在网站页面上看到这些数据。
1.3 项目目标
本项目设定的目标如下:
- 系统能够提供有好的用户界面,是操作人员工作量最大限度的减少;
- 本系统具有良好地运行效率;
- 通过这个项目可以提高自己的开发能力和对项目的管理能力;
2 应用环境
2.1 系统运行的网络环境
无论是对系统有管理能力的管理员,还是一般的网络游客都可以登录到该网站,管理人员可以通过自己管理账户的用户名和密码登录到网站的后台对数据进行操作,对赛况,新闻,球队等操作。一般游客们就可以在前台找到管理人员更新的数据信息了。
2.2 系统运行的硬件环境
本系统的硬件环境如下:
客户机:普通PC
- · CPU:P41.8GHz以上
- · 内存:256MB以上
- · 能够运行IE6.0以上
- · 分辨率:推荐使用1024×768像素
Web服务器
- · CPU:P41.0GHz
- · 内存:1G以上
- · 硬盘:80GB以上
- · 网卡:1Mb/s速度
数据库服务器
- · CPU:P42.0GHz
- · 内存:1GB以上
- · 硬盘:80GB以上
2.3 系统运行的软件环境
本系统本系统的软件环境如下:
- 操作系统:Windows2000或以上版本
- 数据库: SQL Server2008
- 开发包:.Net 3.5 MVC 2.0
- Web服务器:IIS 5.0
- 浏览器:IE6.0以上
3 功能规格
3.1 角色定义
管理员
系统管理员其实可以派上出两类,一类是对数据操作的管理人员,他们可以对新闻、球队、球员、比赛结果等信息进行操作;另一类是不仅可以对以上信息进行操作而且还可以对用户进行操作的具有最高权限的管理员。
游客
游客是指那些网络用户访问到该网站前台的那些用户,这些用户只可以访问前台,访问管理员已经做过处理的一些数据,例如看看新闻,查看一下球员信息之类的操作。
数据库
数据库是一个与系统产生交互的外部系统,这个角色负责系统的数据查询、增加、删除和修改等操作。
3.2 系统主用例图
排球赛事网站可以大致分为两个组成部分,一个具有良好用户界面的前台子系统。一个是具有管理功能的后台子系统。前台可以提供用户浏览赛况,新闻,查询球员等操作。后台可以对数据进行增删改查等操作。如图1-1所示。
图1-1 系统的主用例图
3.3 前台子系统
客可以访问网站中开放的数据,查询自己需要了解的信息。游客的主要功能包括新闻浏览,球员信息查询,球队信息查询,比赛结果查看、赛程查询等功能。图1-2是它的用例图。
图1-2 前台子系统的功能用例图
前台子系统的这些用例描述如下:
- F-C-1:新闻浏览。游客访问到排球赛事门户网站在主页当中就可以看到一些比较热门的新闻列表。游客只需要点击列表中标题就可以访问新闻的内容。
- F-C-2:赛况查看。游客在主页当中点击赛事,就可以跳转到赛事的首页当中,里面列出了相关信息。游客可以查看当天比赛的结果,和将要进行的比赛。
- F-C-3:球员查看。游客在主页当中点击球员,就可以跳转到球员的首页当中,里面列出了球员相关信息。游客可以点击然后查看球员信息。
- F-C-4:球队查看。游客在主页当中点击球员,就可以跳转到球队的首页当中,里面列出了球队相关信息。游客可以点击然后查看球队信息。
新闻浏览
新闻浏览是浏览已经上传的新闻,具体描述如下。
用例描述:新闻浏览;
执行者:游客;
前置条件:无;
后置条件:无;
基本路径:
- 游客登录到网站,显示出新闻列表;
- 点击任何一个新闻,进入新闻查看新闻详细内容界面;
- 显示新闻内容。
赛况查看
赛况查看是浏览已经上传的赛程和赛况信息,具体描述如下。
用例描述:赛况查看;
执行者:游客;
前置条件:无;
后置条件:无;
基本路径:
- 游客登录到网站;
- 游客点击赛况连接进入赛况首页;
- 显示赛况信息;
- 点击想看的具体比赛或者具体球队进入赛况详细信息进行查看。
球员查看
球员查看是浏览已经上传的球员信息,具体描述如下。
用例描述:球员查看;
执行者:游客;
前置条件:无;
后置条件:无;
基本路径:
- 游客登录到网站;
- 游客点击球员连接进入球员首页;
- 显示球员信息列表;
- 点击想看的具体球员详细信息进行查看。
球队查看
球队查看是浏览已经上传的球队信息,具体描述如下。
用例描述:球队查看;
执行者:游客;
前置条件:无;
后置条件:无;
基本路径:
- 游客登录到网站;
- 游客点击球队连接进入球队首页;
- 显示球队信息列表;
- 点击想看的具体球队详细信息进行查看。
3.4 后台子系统
后台子系统主要是提供公司人员对系统的管理功能,他的功能分为登录管理、新闻管理、赛况管理、球队管理、球员管理等相应功能。图1-3是它的用例图。
图1-3 后台子系统的功能用例图
后台子系统的这些用例描述如下:
- F-A-1登录管理。用户管理是由系统管理员增加用户,编辑用户名,修改用户权限,是具有不同权限的用户进入系统主界面时,具有不同的功能。
- F-A-2:新闻管理。新闻管理是管理员登录到系统,实现对新闻的增加、删除、修改等功能。
- F-A-3:球员管理。球员管理是管理员登录到系统,实现对球员的增加、删除、修改等功能。
- F-A-4:球队管理。球队管理是管理员登录到系统,实现对球队的增加、删除、修改等功能。
- F-A-5:赛况管理。赛况管理是管理员登录到系统,实现对赛程的增加,删除,修改等功能,以及对已经结束的比赛的结果进行增加,删除,修改。
登录管理
登录到后台的所有人都需要通过登录界面进入相应的管理界面,在登录界面输入用户名和密码,系统首先判断用户名和密码的正确性,然后根据用户名所确定其权限。有权限则在页面上显示该功能,没有权限则不显示。图1-4是它的流程图。
图1-4 登录流程图图
新闻管理
在排球赛事门户网站当中,有一个专门负责存储比赛新闻信息的库。新闻管理模块主要是完成对每个新闻添加、删除、修改等维护功能。具体描述如下。
用例描述:新闻管理;
执行者:管理员;
前置条件:管理员具有此项功能;
后置条件:如果新闻维护成功,则在数据库和新闻文件中随之发生变化。
基本路径:
- 进入新闻管理界面,首先展示目前已经有的新闻列表;
- 点击每一个新闻标题可以浏览这个新闻的具体内容以及进行修改;
- 增加新闻时,填写新闻标题和新闻内容等信息;
- 可以删除选择的新闻。
球员管理
球员是排球比赛的重要组成部分,这个网站有一个球员信息库。管理员可以通过该模块来对球员的相应信息进行增加、删除、修改等操作。用例的具体描述如下。
用例描述:球员管理;
执行者:管理员;
前置条件:管理员具有此项功能;
后置条件:如果球员维护成功,则在数据库中随之发生变化。
基本路径:
- 进入球员管理界面,首先展示目前已经有的球员列表;
- 点击每一个球员姓名可以浏览这个球员的信息并且可以修改;
- 增加球员时,填写球员的详细信息;
- 可以删除选择的球员。
球队管理
不只是球员是排球比赛的重要组成部分,球队也同样重要。管理员可以通过该模块来对球队的相应信息进行增加、删除、修改等操作。用例的具体描述如下。
用例描述:球队管理;
执行者:管理员;
前置条件:管理员具有此项功能;
后置条件:如果球队维护成功随之发生变化。
基本路径:
- 进入球队管理界面,首先展示目前已经有的球队列表;
- 点击每一个球队可以浏览信息并且进行修改;
- 增加球队时,填写球队的详细信息;
- 可以删除选择的球队。
赛况管理
赛况管理才是排球赛事门户网站的重点。因为每一场比赛都会产生大量的数据,两个球队的数据,每个球员的数据。该模块就是对还未进行的比赛以及比赛已经结束的信息的汇总。用例的具体描述如下。
用例描述:赛程管理;
执行者:管理员;
前置条件:管理员具有此项功能;
后置条件:如果赛程维护成功随之发生变化。
基本路径:
- 进入赛程管理界面,首先展示目前已经有的比赛列表;
- 点击每一比赛的标题可以浏览相应比赛情况并且进行修改;
- 增加比赛时,填写两个球队以及一些其他的详细信息;
- 可以删除选择的比赛;
- 可以对选中的比赛添加结果;
- 点击已经添加结果的比赛可以详细查看比赛信息,同时可以修改。
用户管理
系统管理员进行权限设置,在用户管理界面中对用户进行增加、删除、修改、查询。具体功能描述如下。
用例描述:用户管理;
执行者:系统管理员管理员;
前置条件:管理员具有此项功能;
后置条件:如果用户维护成功随之发生变化。
基本路径:
- 进入用户管理界面,显示目前的系统用户以及每个用户的一些信息;
- 点击不同的用户,可以显示这个用户的信息;
- 可以增加用户,也可以删除用户。
4 性能需求
根据用户对本系统的要求,确定系统在响应时间、可靠性、安全性等方面有较高的必能要求。
4.1 界面需求
系统的界面要求如下。
- 页面内容:主题突出,站点定义、术语和行文格式统一、规范、明确、栏目、菜单设置和布局合理,传递的信息准确、及时。内容丰富,文字准确,语句通顺,专用术语规范,行文格式统一规范。
- 导航结构:页面具有明确的导航指示,且便于理解,方便用户使用。
- 技术环境:页面大小适当,能用各种常用浏览器以不同分辨率浏览,无错误链接和空链接;采用CSS样式表,确保字体大小和版面布局效果良好。
- 艺术风格:界面、版面简洁清爽,突出信息,字体合理。
4.2 响应时间需求
无论是前台系统还是后台系统,当用户登录,进行任何操作的时候,系统应该及时地进行反应,反应的时间在5秒以内。系统应能监测出各种非正常情况,如与设备的通信中断,无法连接数据库服务器等,以避免出现长时间等待甚至无响应。
4.3 可靠性需求
系统应保证7×24小时内不宕机,保证20人可以同时在客户端登录,此时系统能正常运行,正确提示相关内容。
4.4 开放性需求
系统应具有较强的灵活性,以适应将来功能扩展的需求。
4.5 可扩展性需求
系统设计要求能够体现扩展性要求,以适应将来功能扩展的需求。
4.6 系统安全性需求
系统有严格的权限管理功能,各功能模块需有相应的权限方能进入。系统需能够防止各类误操作可能造成的数据丢失,破坏。防止用户非法获得网页以及内容。
二、排球赛事网站概要设计
1 系统分析
本系统可以实现与排球赛事有关的资料信息的管理。
前台子系统包括查询新闻、查看球员、查看球队、查看比赛信息等功能。
后台子系统包括新闻管理、球员管理、球队管理、赛况管理等功能。本系统的总体功能结构图如图2-1所示:
图2-1系统总体功能结构图
2 界面设计
本系统是用户界面按功能分前台界面和后台界面。
前台界面设计
前台主要是为网络游客提供浏览新闻,查看球员球队信息以及赛程相关信息的。在前台界面,访客首先进入首页,首页就已经陈列了许多热门的新闻。如图2-2所示:
图2-2前台主页界面
后台界面设计
登陆界面:通过输入用户名和密码实现用户登录,并判断用户的权限。如图2-3所示:
图2-3登陆界面
管理首页:根据用户的权限,进入首页,并在首页中展示此用户相应可以操作的权限功能;
新闻管理:包括“新闻列表”、“添加新闻”、“修改新闻”、“查看新闻详细内容”等页面;
球员管理:包括“球员列表”、“添加球员”、“修改球员”、“查看球员详细内容”等页面。“添加球员”,“查看球员”等页面界面如图2-4,图2-5所示:
图2-4添加球员界面
图2-5查看球员界面
球队管理:包括“球队列表”、“添加球队”、“修改球队”、“查看球队详细内容”等页面;
赛程管理:包括“赛程列表”、“添加赛程”、“修改赛程”、“添加比赛结果”、“查看比赛结果”等界面;
用户管理:包括“用户列表”、“用户信息”、“修改用户信息”、“添加用户”和“删除用户”等界面。
3 体系结构
系统的总体结构设计遵循如下原则。
- 系统应具有良好的适应性:能适应用户对系统的软件环境、管理内容、模式和界面的要求;
- 系统应具有可靠性:采用成熟的技术方法和软件开发平台,以保证系统在以后的实际应用中安全、可靠;
- 系统应具有较好的安全性:应提高安全机制和用户权限限制机制的完善程度,确保数据的受限访问;
- 系统应具有良好的可维护性:系统应易于维护、安装;
- 系统应具有良好的可扩展性:系统应适应未来信息化建设的要求,能方便地进行功能扩展,以建立完善的信息集成管理体系。
本系统采用ASP.NET MVC体系结构,这是一个基于模型(Model)一视图(View)一控制器(Controller),即MVC模式的应用架构的框架。
3.1 体系结构
Asp.net MVC 是微软官方提供的MVC模式编写Asp.net Web应用程序的一个框架,它由Castle的MonoRail而来。MVC (Model View Controller)把一个web应用分成了三个部分:Model、View、Controller。ASP.NET MVC框架提供了一个可以代替Asp.net Web窗体的基于MVC的应用。
视图,就是一组aspx文件,这些aspx文件没有业务逻辑,只有极其少量的模型信息,有标签。这些标签可以使.Net的标签,也可以是Html的标准标签。
控制器,控制器是有Action组成的,Action是MVC框架中的核心组件。Action主要负责接受HTTP请求的信息,将请求转发过来的适当的Action对象,Action本身就是完成一组实际的业务逻辑。
模型,模型表示应用程序的状态和业务逻辑。更加有针对性的应用需求,不必重新设计框架。图2-X 为MVC原理图。
图2-X MVC原理图
3.2 系统进行环境
下面讲述系统运行的网络结构,硬件、软件环境。
网络结构环境
本系统的网络拓扑图如图2-9所示。
图2-9 网络拓扑图
其中局域网或者远程用户皆可以为管理员或者游客。
系统结构环境
本系统是一个方便用户操作与管理的系统,充分地合理利用资源的系统。也是一个基于B/S(浏览器/服务器)结构的系统。此系统用C#脚本语言开发,并且需要微软的SQL数据库和网络服务器。系统会安置在Windows操作系统上。任何网络浏览器都可以作为客户端来运行。图2-10为系统的工作原理。
图2-4 系统工作原理图
4 数据模型
本系统的数据模型设计内容主要是进行数据库的设计。
4.1 数据库的概念结构模型设计
概念设计用来反映现实世界中的实体、属性和它们之间的关系等的原始数据形式,建立数据库的每一幅用户视图。图2-10是系统E-R图(Entity Relationship Diagram,实体-联系图)。
图2-11 系统E-R图
4.2 数据库的逻辑结构模型设计
数据库的逻辑设计是将各局部的E-R图进行分解、合并后重新组织起来形成数据库全局逻辑结构,包括所确定的关键字和属性、重新确定的记录结构、所建立的各个数据之间的相互关系。根据本系统需求分析,系统的数据库包括了用户管理、新闻管理、登录管理、球队管理、球员管理,赛况管理。
数据库管理包括的表:
用户、登录管理包括的库表:
UserTable——用户表;
新闻管理包括的库表:
NewsTable——新闻表;
球员管理包括的库表:
PlayerTable——球员表;
球队管理包括的库表:
TeamTable——球队表;
赛况管理包括的库表:
EventTable——赛事表;
ResultTable——比赛结果表;
PlayerEventTable——球员比赛数据统计表;
表2-1 UserTable 用户表
字段名称 |
数据类型 |
说明 |
UserName |
varchar(20) |
用户名 |
UserRole |
varchar(20) |
用户身份 |
UserPassword |
varchar(30) |
用户密码 |
UserInfo |
nvarchar(20) |
用户简介 |
表2-2 NewsTable 新闻表
字段名称 |
数据类型 |
说明 |
Id |
int |
新闻编号 |
Topic |
nvarchar(200) |
新闻标题 |
Date |
varchar(20) |
上传日期 |
Author |
nvarchar(50) |
作者 |
表2-3 PlayerTable 球员表
字段名称 |
数据类型 |
说明 |
Id |
Int |
球员编号 |
Name |
varchar(50) |
球员姓名 |
Nationality |
varchar(50) |
国籍 |
ChineseName |
nvarchar(50) |
中文名 |
Height |
int |
身高 |
Weight |
int |
体重 |
Birthday |
varchar(20) |
生日 |
Info |
text |
简介 |
Team |
int |
所属球队编号 |
表2-4 TeamTable 球队表
字段名称 |
数据类型 |
说明 |
Id |
int |
球队编号 |
Name |
nvarchar(50) |
球队名称 |
City |
nvarchar(50) |
球队城市 |
Info |
text |
球队简介 |
表2-5 EventTable 赛事表
字段名称 |
数据类型 |
说明 |
Id |
Int |
比赛编号 |
Date |
varchar(20) |
日期 |
Host |
int |
主队编号 |
Visit |
int |
客队编号 |
Tag |
int |
是否结束 |
表2-6 ResultTable 比赛结果表
字段名称 |
数据类型 |
说明 |
Id |
int |
比赛编号 |
HostPoint |
int |
主队得分 |
VisitPoint |
int |
客队得分 |
表2-7 PlayerEventTable 球员比赛数据统计表
字段名称 |
数据类型 |
说明 |
EvrntId |
int |
比赛编号 |
PlayerId |
int |
队员编号 |
Position |
int |
球员位置 |
Total |
int |
出手次数总计 |
4.3 数据库物理结构模型设计
信息存储结构的设计在系统的设计中至关重要,要考虑到数据冗余、系统执行效率、信息控制以及维护等方面的要求。信息的管理离不开数据库的支持,我采用SQL Server 2008数据库管理系统。
数据库的物理设计主要是对数据在内存中的安排,包括对索引区、缓冲区的设计,对使用的外存设备及外存空间的组织,包括索引区、数据块的组织与划分,设置访问数据的方式方法。需在非系统卷(操作系统所在卷以外的其他卷)上安装SQL Server程序及数据库文件。内存是影响Microsoft SQL Server系统性能的一个重要因素,应在Microsoft SQL Server数据库安装后进行内存选项(Memory)设置,最大配置值为2GB。
为了确定SQL Server系统最适宜的内存需求,可以从总的物理内存中减去 Windows 2000 Server需要的内存(12MB)以及其他一些内存需求后综合确定,理想的情况是给SQL Server分配尽可能多的内存,而不产生页面调度。设置服务器的虚拟内存为1GB。
5 模块设计
按照功能的分解,本系统分为前台和后台两个系统。根据页面流的设计,后台系统分为用户登录、用户管理、新闻管理、球员管理、球队管理和赛况管理等功能。针对不同用户,提供了两类功能登录接口:即管理员登录接口和游客登录接口,这些接口都以Web页面的形式提供。通过各自的页面,管理员和游客从事各自的活动。
以下将分小节介绍各个部分的设计。
5.1 前台模块设计
前台是运行在公用网络上,可以显示新闻列表,球员球队列表以及赛况列表等信息。游客也可以查看其详细内容。
表示层设计
界面 |
文件 |
功能描述 |
首页 |
Index.aspx |
前台的首页 |
新闻列表 |
News.aspx |
列出新闻列表 |
新闻显示 |
NewsShow.aspx |
显示新闻内容 |
球员列表 |
Player.aspx |
列出球员列表 |
球员信息显示 |
PlayerShow.aspx |
显示球员基本信息 |
球队列表 |
Team.aspx |
列出球队列表 |
球队显示 |
TeamShow.aspx |
显示球队基本信息 |
赛程列表 |
Event.aspx |
列出赛程列表 |
赛程显示 |
EventShow.aspx |
显示赛程详细信息 |
根据界面的设计可以确定各个界面的访问入口以及界面之间切换关系。
控制层设计
控制层是系统的业务逻辑处理的部分,在这里需要接受界面传过来的信息,并对这些信息进行处理。同时还要把一些信息显示到页面上。
事件 |
Action |
入口 |
Controller |
出口 |
进入主页面 |
Index |
Index.aspx |
Home |
Index.aspx |
进入新闻列表 |
News |
News.aspx |
Home |
News.aspx |
进入查看新闻内容 |
NewsShow |
News.aspx |
Home |
NewsShow.aspx |
进入球员列表 |
Player |
Player.aspx |
Home |
Player.aspx |
查看球员详细信息 |
PlayerShow |
Player.aspx |
Home |
PlayerShow.aspx |
进入球队列表 |
Team |
Team.aspx |
Home |
Team.aspx |
查看球队详细信息 |
TeamShow |
Team.aspx |
Home |
TeamShow.aspx |
进入赛程列表 |
Event |
Event.aspx |
Home |
Event.aspx |
查看赛程详细信息 |
EventShow |
Event.aspx |
Home |
EventShow.aspx |
5.2 用户管理模块设计
表示层设计
界面 |
ASPX |
功能描述 |
用户管理首页 |
Index.aspx |
用户管理的首页 |
用户列表 |
List.aspx |
列出用户列表 |
显示用户信息 |
Show.aspx |
显示用户详细信息 |
添加用户信息 |
Register.aspx |
填写用户信息提交。 |
修改用户信息 |
Alter.aspx |
修改用户信息 |
控制层设计
事件 |
Action |
入口 |
Controller |
出口 |
进入首页 |
Index |
Index.aspx |
User |
Index.aspx |
显示用户列表 |
List |
List.aspx |
User |
List.aspx |
进入添加用户界面 |
Register |
List.aspx |
User |
Register.aspx |
提交用户添加 |
RegisterAction |
Register.aspx |
User |
Alert.aspx |
删除用户 |
DeleteAction |
List.aspx |
User |
Alert.aspx |
进入用户相信细信息查看 |
Show |
List.aspx |
User |
Show.aspx |
进入修改用户信息界面 |
Alter |
List.aspx |
User |
Alter.aspx |
提交修改用户信息 |
AlterAction |
Alter.aspx |
User |
AlterAction.aspx |
模型层设置
模型组件 |
描述 |
UserModels |
用户的实体 |
UserManager |
对用户实体的数据库操作 |
5.3 新闻管理模块设计
表示层设计
界面 |
ASPX |
功能描述 |
新闻管理首页 |
Index.aspx |
新闻管理的首页 |
新闻列表 |
List.aspx |
列出新闻列表 |
显示新闻信息 |
Show.aspx |
显示新闻详细信息 |
添加新闻 |
UpLoad.aspx |
填写新闻信息提交。 |
修改新闻 |
Alter.aspx |
提交新闻修改信息 |
控制层设计
事件 |
Action |
入口 |
Controller |
出口 |
进入首页 |
Index |
Index.aspx |
News |
Index.aspx |
显示新闻列表 |
List |
List.aspx |
News |
List.aspx |
进入添加新闻界面 |
UpLoad |
List.aspx |
News |
UpLoad.aspx |
提交新闻添加添加 |
UpLoadAction |
UpLoad.aspx |
News |
Alert.aspx |
删除用户 |
DeleteAction |
List.aspx |
News |
Alert.aspx |
进入新闻内容信息查看 |
Show |
List.aspx |
News |
Show.aspx |
进入修改新闻信息界面 |
Alter |
List.aspx |
News |
Alter.aspx |
提交修改新闻信息 |
AlterAction |
Alter.aspx |
News |
AlterAction.aspx |
模型设计
模型组件 |
描述 |
NewsModels |
新闻的实体 |
NewsManager |
对新闻实体的数据库操作 |
5.4 球员管理模块设计
表示层设计
界面 |
ASPX |
功能描述 |
球员管理首页 |
Index.aspx |
球员管理的首页 |
球员列表 |
List.aspx |
列出球员列表 |
显示球员信息 |
Show.aspx |
显示球员详细信息 |
添加球员 |
AddPlayer.aspx |
填写球员信息提交。 |
修改球员 |
Alter.aspx |
提交球员修改信息 |
控制层设计
事件 |
Action |
入口 |
Controller |
出口 |
进入首页 |
Index |
Index.aspx |
Player |
Index.aspx |
显示球员列表 |
List |
List.aspx |
Player |
List.aspx |
进入添加球员界面 |
AddPlayer |
List.aspx |
Player |
AddPlayer.aspx |
提交球员添加添加 |
UpLoadAction |
AddPlayer.aspx |
Player |
Alert.aspx |
删除球员 |
DeleteAction |
List.aspx |
Player |
Alert.aspx |
进入球员内容信息查看 |
Show |
List.aspx |
Player |
Show.aspx |
进入修改球员信息界面 |
Alter |
List.aspx |
Player |
Alter.aspx |
提交修改球员信息 |
AlterAction |
Alter.aspx |
Player |
AlterAction.aspx |
模型设计
模型组件 |
描述 |
PlayerModels |
球员的实体 |
PlayerManager |
对球员实体的数据库操作 |
5.5 球队管理模块设计
表示层设计
界面 |
ASPX |
功能描述 |
球队管理首页 |
Index.aspx |
球队管理的首页 |
球队列表 |
List.aspx |
列出球队列表 |
显示球队信息 |
Show.aspx |
显示球队详细信息 |
添加球队 |
Add.aspx |
填写球队信息提交。 |
修改球队 |
Alter.aspx |
提交球队修改信息 |
控制层设计
事件 |
Action |
入口 |
Controller |
出口 |
进入首页 |
Index |
Index.aspx |
Team |
Index.aspx |
显示球员列表 |
List |
List.aspx |
Team |
List.aspx |
进入添加球员界面 |
Add |
List.aspx |
Team |
Add.aspx |
提交球员添加添加 |
AddAction |
AddPlayer.aspx |
Team |
Alert.aspx |
删除球员 |
DeleteAction |
List.aspx |
Team |
Alert.aspx |
进入球员内容信息查看 |
Show |
List.aspx |
Team |
Show.aspx |
进入修改球员信息界面 |
Alter |
List.aspx |
Team |
Alter.aspx |
提交修改球员信息 |
AlterAction |
Alter.aspx |
Team |
AlterAction.aspx |
模型设计
模型组件 |
描述 |
TeamModels |
球队的实体 |
TeamManager |
对球队实体的数据库操作 |
5.6 赛况管理模块设计
表示层设计
界面 |
ASPX |
功能描述 |
赛程管理首页 |
Index.aspx |
赛程管理的首页 |
赛程列表 |
List.aspx |
列出赛程列表 |
显示赛程信息 |
Show.aspx |
显示赛程详细信息 |
添加赛程 |
Add.aspx |
填写赛程信息提交。 |
修改赛程 |
Alter.aspx |
提交球队修改信息 |
添加比赛结果 |
InsertResult |
给赛程添加结果 |
控制层设计
事件 |
Action |
入口 |
Controller |
出口 |
进入首页 |
Index |
Index.aspx |
Event |
Index.aspx |
显示赛程列表 |
List |
List.aspx |
Event |
List.aspx |
进入添加赛程界面 |
Add |
List.aspx |
Event |
Add.aspx |
提交赛程添加添加 |
AddAction |
Add.aspx |
Event |
Alert.aspx |
删除赛程 |
DeleteAction |
List.aspx |
Event |
Alert.aspx |
进入赛程内容信息查看 |
Show |
List.aspx |
Event |
Show.aspx |
进入修改赛程信息界面 |
Alter |
List.aspx |
Event |
Alter.aspx |
提交修改球员信息 |
AlterAction |
Alter.aspx |
Event |
Alert.aspx |
进入输入结果 |
InsertResult |
Show.aspx |
Event |
InsertResult.aspx |
提交结果 |
InsertResultAction |
InsertResult.aspx |
Event |
Alert.aspx |
模型设计
模型组件 |
描述 |
EventModels |
赛程的实体 |
EventManager |
对赛程实体的数据库操作 |
ResultModels |
比赛结果实体 |
ResultManager |
对结果实体的数据库操作 |
EDModels |
球员比赛数据的实体 |
EDManager |
对球员比赛数据的数据库操作 |
5.7 登录管理模块设计
表示层设计
界面 |
ASPX |
功能描述 |
登陆界面 |
Login.aspx |
登陆的主页面 |
控制层设计
事件 |
Action |
入口 |
Controller |
出口 |
用户登录 |
LoginAction |
Login.aspx |
User |
BG/Index |
三、排球赛事网站详细设计
1 系统设计概述
根据《排球赛事网站》的概要设计,按照功能分解,本系统分为前台子系统和后台子系统。根据页面流的设计,后台子系统又分为用户管理、登录管理、新闻管理、球员管理、球队管理、赛况管理6个模块,如图3-1所示。
图3-1 后台子系统模块设计
2 详细设计概述
由于本系统采用的ASP.NET MVC体系结构 设计。并采用面向对象语言C#语言和ASP.NET的脚本语言实现。整个开发过程中,尽可能采用“可复用”原则,例如采用标签库,统一数据库的基本操作,统一结果显示等。
本文档的详细设计主要是按照ASP.NET MVC的三个层次分别编制视图层、控制层和模型层模块的伪代码,为下一步的编码提供基础。伪代码是一种算法描述语言。使用伪代码简单,可读性好,并且类似自然语言。
3 用户管理模块的详细设计
用户管理主要实现排球赛事门户网站用户的维护和发布,用户管理的视图层、控制层和模块层如表3-1所示。
表3-1用户管理模块的详细设计
视图层 |
视图层 |
视图层 |
控制器 |
模块 |
ASPX |
表单 |
客户端标签 |
控制器 |
模块 |
Index;Register;List;Show;Alter |
RegisterAction;AlterAction; |
HtmlHelper.TextBox;HtmlHelper.DropDownList;HtmlHelper.TextArea;HtmlHelper.CheckBox;HtmlHelper.ActionLink |
Register;RegisterAction;Delete;DeleteAction;AlterInfo;AlterInfoAction |
UserModels;IUserManage;UserManage; |
3.1 视图层
用户管理视图层Register代码如下:
<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title></title>
</head>
<body>
<div>
<%using (Html.BeginForm("RegisterAction", "User"))
{ %>
<div>用户名:<%=Html.TextBox("TextName")%></div>
<div>密码:<%=Html.Password("TextPwd")%></div>
<div>确认密码:<%=Html.Password("TextPwd2")%></div>
<div><input type="submit" value="提交"> <input type="reset" value="重置"></div>
<%} %>
</div>
</body>
</html>
3.2 控制层
用户管理控制层UserController如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Data.Sql;
using System.Data.SqlClient;
using System.Data.SqlTypes;
using System.Web.Security;
using VolleyballSite.Code;
namespace VolleyballSite.Controllers
{
public class UserController : Controller
{
public ActionResult Login()
{
return View();
}
public void LoginAction()
{
string strname = Request.Form["TextName"];
string strpwd = Request.Form["TextPwd"];
if (strname != null && strpwd != null)
{
Models.UserManage usermanage = new Models.UserManage();
string role = usermanage.Login(strname, strpwd);
Response.Write("<p>"+role+"</p>");
if (role == null)
{
Response.Write("<script>alert('密码和账号不符');</script>");
}
else
{
FormsAuthentication.SetAuthCookie(strname, false);
Response.Write("<script>alert('登陆成功');</script>");
}
}
else
{
Response.Write("<script>alert('用户密码其中一个都不能为空');</script>");
}
}
[Volley(Roles = "admin")]
public ActionResult IsOk()
{
return View();
}
public ActionResult Register()
{
return View();
}
public void RegisterAction()
{
string strname = Request.Form["TextName"];
string strpwd = Request.Form["TextPwd"];
Models.UserModels user = new Models.UserModels();
user.UserName = strname;
user.UserPassword = strpwd;
user.UserRole = "no";
Models.UserManage usermanage = new Models.UserManage();
string o = usermanage.insert(user);
Response.Write(o);
}
public ActionResult Delete()
{
return View();
}
public void DeleteAction()
{
string strname = Request.Form["uID"];
Models.UserModels user = new Models.UserModels();
user.UserName = strname;
user.UserPassword = null;
user.UserRole = null;
Models.UserManage usermanage = new Models.UserManage();
string o = usermanage.delete(user);
Response.Write(o);
}
public ActionResult AlterInfo()
{
string user_name = Request.QueryString["UserName"];
ViewData["UserName"] = user_name;
return View();
}
public void AlterInfoAction()
{
string user_name = Request.Form["TextName"];
string user_pwd = Request.Form["TextPwd"];
string user_pwd2 = Request.Form["TextPwd2"];
Models.UserManage usermanage = new Models.UserManage();
string role = usermanage.Login(user_name, user_pwd);
if (role == null)
{
Response.Write("<script>alert('密码不对');</script>");
}
else
{
Models.UserModels user = new Models.UserModels();
user.UserName = user_name;
user.UserPassword = user_pwd2;
string o = usermanage.alter(user_name, user);
Response.Write(o);
}
}
}
}
3.3 模型层
下面是用户管理模型层UserModels的代码描述:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data.Sql;
using System.Data.SqlClient;
using System.Data.SqlTypes;
namespace VolleyballSite.Models
{
public class UserModels
{
public string UserName { set; get; }
public string UserPassword { set; get; }
public string UserRole { set; get; }
}
public interface IUserManage
{
string insert(UserModels user);
string delete(UserModels user);
string alter(string username, UserModels user);
UserModels getUser(string user_name);
List<UserModels> select(string attribute);
string Login(string user_name,string user_password);
}
public class UserManage : IUserManage
{
Code.SqlManager sql;
public UserManage()
{
sql = new Code.SqlManager();
}
public string insert(UserModels user)
{
try
{
string selectstr = "select count(*) from UserTable where userName = '" + user.UserName + "'";
int tempn = Convert.ToInt32(sql.ExecuteScalar(selectstr));
if (tempn != 0)
{
return "<script>alert('该用户已存在!');</script>";
}
string insertstr = "insert into UserTable(userName,userRole,userPassword) values('" + user.UserName + "','" + user.UserRole + "','" + user.UserPassword + "')";
tempn = sql.ExecuteNonQuery(insertstr);
if (tempn > 0)
return("<script>alert('注册成功');</script>");
else
return("<script>alert('失败了');</script>");
}
catch (SqlException ex)
{
return ("<script>alert('"+ex.Message+"');</script>");
}
}
public string delete(UserModels user)
{
try
{
string selectstr = "select count(*) from UserTable where userName = '" + user.UserName + "'";
int tempn = Convert.ToInt32(sql.ExecuteScalar(selectstr));
if (tempn == 0)
{
return "<script>alert('该用户不存在!');</script>";
}
string insertstr = "delete UserTable where UserName = '"+user.UserName+"'";
tempn = sql.ExecuteNonQuery(insertstr);
if (tempn > 0)
return ("<script>alert('删除成功');</script>");
else
return ("<script>alert('失败了');</script>");
}
catch (SqlException ex)
{
return ("<script>alert('" + ex.Message + "');</script>");
}
}
public string alter(string username, UserModels user)
{
try
{
string updeteuser = "update UserTable set UserName = '" + user.UserName + "' ,UserPassword = '" + user.UserPassword + "' where UserName = '" +username+ "'";
int tempn = sql.ExecuteNonQuery(updeteuser);
if (tempn == 0)
{
return "<script>alert('更新失败!');</script>";
}
else
{
return "<script>alert('成功啦!');</script>";
}
}
catch (SqlException ex)
{
return ("<script>alert('" + ex.Message + "');</script>");
}
}
public UserModels getUser(string user_name)
{
return null;
}
public List<UserModels> select(string attribute)
{
try
{
List<UserModels> list_user = new List<UserModels>();
System.Data.SqlClient.SqlDataReader reader;
string select_str_all = "SELECT [UserName], [UserRole] FROM [UserTable]";
reader = sql.ExecuteReader(select_str_all);
while (reader.Read())
{
UserModels user = new UserModels();
user.UserName = reader.GetString(0);
user.UserRole = reader.GetString(1);
list_user.Add(user);
}
return list_user;
}
catch (Exception ex)
{
throw ex;
}
}
public string Login(string user_name,string user_password)
{
return sql.ExecuteLogin(user_name, user_password);
}
}
}
其他模型组件的伪代码详见光盘,它有关于每个类代码的详细描述。
4 球员管理模块的详细设计
球员管理主要实现排球赛事门户网站球员的维护和发布,球队管理的视图层、控制层和模块层如表3-2所示。
表3-2球员管理模块的详细设计
视图层 |
视图层 |
视图层 |
控制器 |
模块 |
ASPX |
表单 |
客户端标签 |
控制器 |
模块 |
AddPlayer;Alter;Index;List;Show |
AddPlayerAction;AlterAction; |
HtmlHelper.TextBox;HtmlHelper.DropDownList;HtmlHelper.TextArea;HtmlHelper.CheckBox;HtmlHelper.ActionLink |
Index;AddPlayer;AddPlayerAction;getLoc;List;delete;getLocationString;Alter;AlterAction |
PlayerModels;PlayerManage; |
4.1 视图层
球员管理视图层包括ASPX组件、Form组件以及标签库等。共有5个ASPX文件,详见光盘描述。
4.2 控制层
球员管理控制层共有9个Action,每个Action代码的描述详见光盘PlayerController.cs。
4.3 模型层
球员管理控制层代码的描述详见光盘PlayerModels.cs。
5 球队管理模块的详细设计
球队管理主要实现排球赛事门户网站球队的维护和发布,球队管理的视图层、控制层和模块层如表3-3所示。
表3-3球队管理模块的详细设计
视图层 |
视图层 |
视图层 |
控制器 |
模块 |
ASPX |
表单 |
客户端标签 |
控制器 |
模块 |
Index;Add;List;Show;Alter |
AddAction;AlterAction; |
HtmlHelper.TextBox;HtmlHelper.DropDownList;HtmlHelper.TextArea;HtmlHelper.CheckBox;HtmlHelper.ActionLink |
Index;Add;AddAction;getLocationId;List;Show;getLocation;Alter;AlterAction;DeleteAction |
TeamModels;ITeamManage;TeamManage; |
图3-1 添加球队时序图
5.1 视图层
球队管理视图层包括ASPX组件、Form组件以及标签库等。共有5个ASPX文件,详见光盘描述
5.2 控制层
球队管理控制层共有10个Action,每个Action代码的描述详见光盘TeamController.cs。
5.3 模型层
球队管理控制层代码的描述详见光盘TeamModels.cs。
6 新闻管理模块的详细设计
新闻管理主要实现排球赛事门户网站新闻的维护和发布,新闻管理的视图层、控制层和模块层如表3-4所示。
表3-4新闻管理模块的详细设计
视图层 |
视图层 |
视图层 |
控制器 |
模块 |
ASPX |
表单 |
客户端标签 |
控制器 |
模块 |
Index;UpLoad;Show;Alter |
UpLoadAction;AlterAction; |
HtmlHelper.TextBox;HtmlHelper.DropDownList;HtmlHelper.TextArea;HtmlHelper.CheckBox;HtmlHelper.ActionLink |
Index;Show;UpLoad;UpLoadAction;Alter;AlterAction |
NewsModels;INewsManage;NewsManage; |
6.1 视图层
新闻管理视图层包括ASPX组件、Form组件以及标签库等。共有5个ASPX文件,详见光盘描述。
6.2 控制层
新闻管理控制层共有6个Action,每个Action代码的描述详见光盘NewsController.cs。
6.3 模型层
新闻管理控制层代码的描述详见光盘NewsModels.cs。
7 赛况管理模块的详细设计
赛况管理主要实现排球赛事门户网站赛程的维护和发布,赛况管理的视图层、控制层和模块层如表3-5所示。
表3-5赛况管理模块的详细设计
视图层 |
视图层 |
视图层 |
控制器 |
模块 |
ASPX |
表单 |
客户端标签 |
控制器 |
模块 |
Index;Add;InsertResult;List;Show |
AddAction;AlterAction;InsertResultAction; |
HtmlHelper.TextBox;HtmlHelper.DropDownList;HtmlHelper.TextArea;HtmlHelper.CheckBox;HtmlHelper.ActionLink |
Index;Add;AddAction;List;Show;getShow;getShowPlayer;InsertReturn;InsertResultAction |
EventModels;NewEventModels;PlayerEventModels;EventManage;PlayerResultManage;EDModels;EDPModels;EDTeamModels;EDManage;ResultModels;ResultManage |
7.1 视图层
赛况管理视图层包括ASPX组件、Form组件以及标签库等。共有5个ASPX文件,详见光盘描述。
7.2 控制层
赛况管理控制层共有9个Action,每个Action代码的描述详见光盘EventController.cs。
7.3 模型层
赛况管理控制层代码的描述详见光盘EventModels.cs。
8 登录管理模块的详细设计
登录管理主要实现排球赛事门户网站用户的登录。
8.1 视图层
登录管理视图层包括ASPX组件、Form组件以及标签库等。共有5个ASPX文件,详见光盘描述
8.2 控制层
登录管理控制层共有4个Action,每个Action代码的描述详见光盘AccountController.cs
8.3 模型层
登录管理控制层代码的描述详见光盘AccountModels.cs。
五、排球赛事网站测试计划
1 测试项目
本次测试的项目是排球赛事网站中的前台功能,即用户的登录以及浏览。
用户登录模块测试
本模块的测试采用两个测试用例。测试的方法是黑盒测试,测试用例1描述如下:新增加用户名“李鼎浩”,密码“123456”,数据库UserTable表中出现正确的数据,并且进行用户登录,登陆成功。
用户浏览模块测试
本模块的测试采用多个个测试用例。测试的方法是黑盒测试。分别对球员、球队、赛况以及新闻信息进行浏览,信息无误,无链接错误。
六、总结、展望与感想
6.1 总结和展望
排球赛事网站在后台数据管理、前台信息浏览方面具有极大的便利性。本系统综合了现有的一些赛事网站的特点,从界面设计到系统设置都是从方便用户的角度出发。
- 用户界面简洁友好。突出信息的表达,操作简单,使用方便。
- 信息全。网站为所有访客提供了一些特色服务,介绍了球队、球员的相关信息以及最新的赛事新闻,方便用户了解相关信息。
- 纠错能力好。网站可以及时全面地处理各种错误异常,特别是对用户提交的信息进行判断,若出现输入错误或信息为空的现象,系统就会及时给予用户出错提示。
6.2 感想
三年前从未想过毕业设计是怎样的一件工作,怎样去想办法做好,时间过得很快,毕业设计就要接近尾声了,虽然毕业设计采用了很多以前未曾接触过的技术,但还是顺利完成了,这是一种对自身学习能力与实践能力很好的考验!
在这段日子里,虽然一边在工作,时间比较紧张,但是毕业设计充实了我的生活,更给了我一次锻炼的机会。经过几个月的努力,虽说最后的设计还存在着一些不足之处,但从总体上来说,我还是通过自己的劳动顺利地完成了毕业设计的任务要求,从中学到的不仅是这几年来都不曾真正学懂的知识,更学到了在面对困难时的态度。从系统的开发过程中,我感受到了做事养成严谨的态度的重要性。通过这次的毕业设计我深刻认识到做每一件事都要有耐心,认真的态度去对待,这样才会实现自己心中所理想的效果。在以后的学习和生活中要严格要求自己,基础知识在掌握的基础上要更好的去应用。
毕业不是结束,而是新的开始,未来还有有无数挑战等待着我,我满怀憧憬与自信迎接挑战!