竞赛管理系统的设计与实现.docx
- 文档编号:11519502
- 上传时间:2023-06-01
- 格式:DOCX
- 页数:37
- 大小:590.38KB
竞赛管理系统的设计与实现.docx
《竞赛管理系统的设计与实现.docx》由会员分享,可在线阅读,更多相关《竞赛管理系统的设计与实现.docx(37页珍藏版)》请在冰点文库上搜索。
竞赛管理系统的设计与实现
竞赛管理系统的设计与实现
摘要
随着国家教育体制的改革,竞赛活动的举办也越来越频繁,报名参赛的学生数量也是越来越多。
面对如此众多参与者信息的录入,人工采集信息的方式已经不能满足当下的需求。
竞赛信息的管理又是一份繁琐的工作,参赛者的信息量很大,而且通常不允许出现错误。
如果执行手工操作,则必须手动填写大量表格,这将使比赛管理工作又增加一个难度。
本论文所讲述的竞赛管理系统是在PyCharm环境下用Python中的Django框架和MySQL数据库来实现的,它具有检索迅速、查找方便、可靠性高、存储量大等特点。
该系统分为前端和后端两大部分,前端使用Bootstrap框架,主要实现的功能是用户的注册、登录、浏览赛事、搜索赛事、各个赛事浏览统计、报名、评审打分、排名等功能;后端主要实现的是对用户信息、赛事信息、排名信息的管理。
关键词:
竞赛管理系统;PyCharm;Django;MySQL
Designandimplementationofcompetition
managementsystem
Abstract
Withthereformofthenationaleducationsystem,competitionsarebeingheldmoreandmorefrequently,andthenumberofstudentsregisteringforcompetitionisalsoincreasing.Facedwiththeinputofinformationfromsomanyparticipants,thewayofmanuallycollectinginformationcannolongermeetthecurrentneeds.Themanagementofthecompetitioninformationisanothertedioustask.Theinformationofthecontestantsisverylarge,anderrorsareusuallynotallowed.Ifyouperformmanualoperations,youmustmanuallyfilloutalargenumberofforms,whichwillmakethegamemanagementworkmoredifficult.
ThecompetitionmanagementsystemdescribedinthispaperisimplementedinthePyCharmenvironmentusingtheDjangoframeworkandMySQLdatabaseinpython.Ithasthecharacteristicsoffastretrieval,convenientsearch,highreliabilityandlargestoragecapacity.Thesystemisdividedintotwoparts:
front-endandback-end.Thefront-endusesthebootstrapframework.Themainfunctionsareuserregistration,login,browsingevents,searchingevents,browsingstatisticsofvariousevents,registration,reviewscoring,ranking,etc.Themainrealizationisthemanagementofuserinformation,eventinformation,rankinginformation.
Keywords:
CompetitionManagementSystem;PyCharm;Django;MySQL
1绪论
1.1本设计的目的及意义
本设计来源于举办方对竞赛管理系统的实际需要,如果实行手工操作,在参赛人数太多时往往容易出错,但是竞赛项目是要保持公正严谨,不容许有丝毫错误发生。
该设计的目的是使参与者信息的输入和管理自动化,标准化和系统化,从而提高管理效率。
并围绕此管理目标对系统所需要的用户信息,选手信息,赛事信息,排名信息等进行管理和维护。
1.2本设计在国内的发展概况及存在的问题
随着国家教育体制的改革,竞赛活动的举办也越来越频繁,报名参赛的学生数量也是越来越多。
面对如此众多参与者信息的录入,通过人工采集信息的方式已经不能满足当下的需求。
如何利用现代信息技术使组织者具有快速高效的信息反馈能力和高效率,是目前举办方特别关心的一个问题。
建立一个功能齐全的竞赛管理系统,避免由于人工操作产生的缺陷,已成为当今社会举办高校竞赛的重中之重。
1.3本设计应解决的主要问题
要实现竞赛管理系统代替人工来工作,主要解决的问题有以下几个:
a.报名功能的实现:
用户可以在线上报名所想要参加的赛事。
b.评审打分功能的实现:
评审在评审打分入口实现评分功能。
c.排名功能的实现:
选手的成绩会进入排行榜内,选手可在排行榜中查询成绩,可以按照不同的排名规则进行排名。
d.评审给参赛人员打完分后,立马出成绩,排行榜实时更新。
e.数据库实时更新:
在后端添加信息后,保证前端能实时更新。
f.操作简单、界面简洁、功能齐全。
2需求分析
2.1可行性需求分析
2.1.1社会可行性
随着国家教育制度的改革,竞赛活动越来越多,参赛人员也越来越多。
如果一直使用人工来记录跟踪赛事,往往会有很多因素导致工作失误。
人们需要用一个集合多功能的竞赛管理系统来帮助他们完成这些工作,提高工作效率,减少工作失误。
2.1.2经济可行性
经济可行性是软件带来的经济效益与开发设计所需要的投资费用相比较是否适当,软件是否会比人工节省。
当然,一场大型赛事往往会聘请很多工作人员,而竞赛管理系统往往只需要一个超级管理员即可管理,相比之下,竞赛管理系统可以节省很多费用,设计系统是经济可行的。
2.2非功能性需求分析
系统应当满足以下系统性能指标:
a.系统稳定性和可靠性。
b.一般查询响应时间≤6秒。
c.系统拓展性。
d.系统满足界面的友好性,系统界面的友好性将会直接影响用户使用系统的效率,要尽可能满足用户已有的使用习惯。
e.系统应确保不间断工作。
f.系统独立性。
2.3功能性需求分析
2.3.1竞赛信息管理功能
前端实现竞赛信息的展示,后端实现对竞赛信息的管理。
竞赛信息可以自定义。
1.竞赛信息列表:
对竞赛信息进行增删改查操作。
2.赛事分类:
按不同评分规则分类,方便用户查找自己想要看的赛事信息。
3.赛事报名:
用户如果有中意的赛事,方可进行报名。
4.热门赛事:
对赛事每天的浏览量做一个统计并以表格的形式体现出来。
5.查询赛事:
用户可以查询自己想要查找的赛事。
2.3.2用户信息管理功能
用户对自己的信息进行查询或者修改等操作。
1.个人中心:
用户对自己的信息查看或修改。
2.绑定邮箱:
用户忘记密码时,可通过绑定的邮箱来找回自己的密码。
2.3.3参赛选手信息管理功能
参赛选手对自己的成绩进行查询,修改报名信息。
1.名人堂:
选手可以输入自己的准考证号进行查询,用户可以按照不同排名方式进行排名。
2.修改报名信息:
用户对自己的报名信息进行修改。
3运行环境
3.1硬件环境
1.处理器:
Intel(R)Core(TM)i7-6498DUCPU@2.50GHz2.60GHz
2.系统类型:
64位操作系统,基于x64的处理器
3.内存:
4.00GB
4.磁盘空间:
256GB
3.2软件环境
1.操作系统:
Windows10服务器
2.框架:
django框架
3.数据库:
MySQL5.7
4.浏览器:
GoogleChrome
5.虚拟环境:
virtualenv
4开发技术及开发工具
4.1开发技术介绍
4.1.1B/S结构及其优势
B/S结构是对C/S结构的一种改进。
用户的工作界面是通过WWW浏览器来实现的。
WEB浏览器成为了客户端上最主要的应用软件。
该模式下它统一了客户端,将系统功能实现的核心部分集中在服务器上并简化了系统的开发和维护。
该技术超越了传统的“客户机/服务器”两层结构,采用了用户界面层/事务层/数据库层这三层结构。
各层之间的功能联系如表4.1所示。
表4.1B/S三层体系结构之间的功能及联系
层次
功能及联系
用户界面层
只有简单的输入输出功能,处理极少部分的事务逻辑。
由于客户不需要安装客户端,只要有浏览器就能上网浏览,所以它面向的是大范围的用户,界面设计就要简单、通用。
事务层
它扮演着传送的角色。
当用户想要访问数据库时,首先会向WEB服务器发送请求,WEB服务器统一请求后会向数据库服务器发送访问数据库的请求,这个请求是以SQL语句实现的。
数据库层
它存储了大量的数据,并发挥着重要作用。
当数据库服务器接收WEB服务器发出的请求时,它将处理该SQL语句并将结果发送到WEB服务器,然后将收到的数据结果转换为HTML文本格式并将其发送给浏览器,这就是我们打开浏览器看到的界面。
所以B/S架构具有以下四点优点:
1.它不需要安装任何软件即可运行,只需要一台可以访问Internet的计算机,客户端实现零安装、零维护,使得系统非常容易进行拓展。
这也是它最大的一个特点。
2.通过需求推动ajax技术的发展,它的程序也能在客户端电脑上进行部分处理,从而减轻服务器的负担并增加了交互性,可以进行局部实时刷新。
3.B/S结构利用日益成熟的Web浏览器技术:
将浏览器的多种脚本语言和ActiveX技术相结合,用通用浏览器实现原来需要复杂专用软件才能实现的强大功能。
4.界面统一(均为浏览器模式),操作相对简单。
4.1.2web开发框架—django
django项目起源于一个在线新闻网站。
它是一个用Python语言编写的开源Web开发框架,遵循MVC设计模式。
它强调代码重用,多个组件可以很容易以“插件”的形式服务于整个框架,django有很多强大的第三方插件,可以开发出自己的工具包。
使得django具有很强的可扩展性,它还强调快速开发和DRY原则。
于2005年以开源的形式展示出来,django框架的核心模块有:
1.urls.py网址入口,关联对应的views.py中的一个函数(或者generic类),访问网址就对应该函数。
2.views.py处理urls.py中对应的用户请求,可以通过在templates模板中呈现网页,将需要看到的内容输入到网页中。
3.models.py与数据库操作有关,它用于保存或读取数据,不需要引用数据的时候可以不使用。
4.forms.py表单,用户在浏览器上输入数据提交时,实现验证数据并生成输入框的功能。
5.templates文件夹views.py中的函数渲染templates中的html模板,以获取web页面动态内容。
当然可以通过缓存来提高速度。
6.admin.pydjango自带的后台,只需要少量的代码就可以实现后台的管理。
7.settings.pydjango的设置,配置文件,比如用QQ发送验证码的配置、静态文件的位置、网页的语言、时区等。
8.static静态文件,用户存放js和css代码。
4.1.3MTV设计模式
django已经成为web开发者的常用框架,MTV是Model、Template、View三个单词的简写,分别代表模型、模版、视图。
在django中,控制器接受用户输入的部分由框架自行处理。
它们各自的职责如下表4.2所示:
表4.2MTV模式中各自的职责
层次
职责
模型(Model),数据存取层
处理与事务相关的所有事务:
如何存取、如何验证有效性、包含哪些行为以及数据之间的关系等。
模板(Template),表现层
处理与表现相关的决定:
如何在页面或其他类型文档中进行显示
视图(View),业务逻辑层
存取模型及调取恰当模板的相关逻辑。
模型与模板的桥梁。
可以看出django视图不需要处理用户的输入,只需要决定显示哪些数据给用户即可,django模板则是实现如何显示django视图指定的数据。
换言之,django把MVC中的视图分解为django视图和django模板这两个部分,分别决定“显示哪些数据”和“如何显示”,使得django的模板可以根据需要随时替换,而不仅仅限制于内置的模板。
4.2开发工具介绍
4.2.1JetBrainsPyCharm2018.3.5x64
PyCharm是Python的一个IDE,能够帮助用户在使用Python语言进行开发时提高该效率,例如调试、、项目管理、、智能提示、代码的跳转、单元测试以及版本控制等等。
另外,该IDE还拥有一些高级功能,它自带HTML,CSS和JavaScript编辑器,以用于支持django框架下的专业Web开发。
4.2.2MySQL5.7
MySQL是一种开放源代码的关系型数据库管理系统(RDBMS),它有以下优点:
1.适用性高,基本适用于所有平台
2.开源,版本更新较快
3.性能出色
4.提供用于管理、检查、优化数据库操作的管理工具
5.支持多线程,充分利用CPU资源
4.2.3Navicat12forMySQL
Navicat是一套快速可靠的数据库管理工具,专为简化数据库的管理及降低系统管理的成本而设。
可以让你以安全并且简单的方式创建、组织、访问、共用信息。
5系统概要设计
5.1系统功能结构设计
竞赛管理系统的功能结构图如图5.1所示:
图5.1竞赛管理功能结构图
5.2数据库连接
数据库连接代码如下图5.2所示:
图5.2连接数据库关键代码
Django很容易连接到数据库,只需要输入数据库类别、数据库名字、用户名和密码等即可进行连接。
5.3数据库E-R图
竞赛管理系统数据库E-R图如图5.3所示:
图5.3竞赛管理系统E-R图
5.4数据表详细设计
赛事信息详细设计如表5.1所示,对应的代码设计如图5.4所示:
表5.1赛事信息表
字段名称
数据类型
字段说明
event_name
varchar(32)
赛事名称
event_full_marks
varchar(10)
赛事满分
event_start_time
varchar(32)
赛事开始时间
event_end_time
varchar(32)
赛事结束时间
event_place
varchar(100)
赛事地点
event_rule
longtext
赛事规则
event_type
varchar(15)
赛事类型(外键)
图5.4赛事信息代码设计
赛事类型详细设计如表5.2所示,对应的代码设计如图5.5所示:
表5.2赛事类型表
字段名称
数据类型
字段说明
type_name
varchar(15)
类型名称
type_score_rule
longtext
类型对应评分规则
图5.5赛事类型代码设计
选手信息详细设计如表5.3所示,对应的代码设计如图5.6所示:
表5.3选手信息表
字段名称
数据类型
字段说明
player_name
varchar(100)
选手名字
player_registration_number
int
准考证号
player_score
int
选手分数
player_score_name
varchar(15)
选手分数对应的赛事名称(外键)
图5.6选手信息代码设计
报名信息详细设计如表5.4所示,对应的代码设计如图5.7所示:
表5.4报名信息表
字段名称
数据类型
字段说明
enroll_player_name
varchar(32)
报名选手名字
enroll_player_id_card
varchar(18)
报名选手身份证号
enroll_player_phone_num
varchar(11)
报名选手手机号码
enroll_player_grade
varchar(10)
包名选手所在年级
enroll_player_event_name
varchar(32)
报名选手所要参加的赛事
enroll_player_school
varchar(30)
报名选手所在学校
图5.7报名信息代码设计
6系统详细设计
6.1注册功能模块
用户注册时需要创建用户名,然后输入自己的邮箱,输入密码,两次密码必须一致,输入完之后先点击发送验证码,发送验证码之后30s不能再次发送,用户输入的邮箱将会收到一个4位数字验证码,输入正确的验证码点击注册即可注册成功。
注册界面如图6.1所示:
图6.1注册界面
由于django中内置了发送邮件功能,只需要在QQ邮箱官网中点击“设置”找到账户开启IMAP/SMTP服务,对应的views.py中的核心代码如图6.2所示:
图6.2views.py中发送邮件核心代码
setting.py中的核心代码如下图6.3所示:
图6.3setting.py中的核心代码
6.2登录功能模块
用户进入首页点击“登录”即可跳转至登录页面,登录账号可以是用户名也可以是绑定的邮箱号,输入正确的账号密码方可进行登录。
登录界面如图6.4所示:
图6.4登录界面
在django中有一个用户认证系统auth模块,登录时只需引用即可。
对应的核心代码如图6.5所示:
图6.5登录核心代码
6.3忘记密码功能模块
当用户忘记自己的登录密码时,可以在登录界面点击“忘记密码”进入忘记密码界面,输入注册时绑定的邮箱号,然后输入自己的新密码,点击发送验证码,在自己绑定的邮箱中可以收到验证码,输入获得的验证码点击重置即可。
忘记密码界面如图6.6所示:
图6.6忘记密码界面
6.4浏览赛事统计并显示
用户登录后可以看到这样的一个折线图表,折线图表记录了每天的总浏览量,该图表下面的热门赛事则记录了每场赛事的浏览量并取前5场热门赛事显示出来,这个也可以作为一个因素,间接影响用户是否报名该场赛事。
用户可以直接点击该热门赛事,进入赛事详细信息界面。
浏览赛事统计并显示界面如图6.7所示:
图6.7浏览赛事统计并显示界面
为了防止有用户恶意刷赛事的浏览次数,特意限制了一个用户在一天内用同一个浏览器看对应的赛事只能增加1次的阅读次数。
对应的核心代码如图6.8所示:
图6.8阅读次数核心代码
6.5导航条
当点击导航条里的“竞赛管理系统”或“首页”时,都会跳转至首页这个页面。
导航条里还包括了“赛事信息”,“名人堂”,“报名”,“搜索”功能。
当用户未登录时,导航条的右边会有登录注册按钮,当用户已登录时导航条的右边会显示用户的用户名。
用户名可以下拉,包括了“个人中心”,“后台管理”,“退出”功能。
用户未登录时导航条界面如图6.9所示:
图6.9用户未登录时导航条界面
用户已登录时导航条界面如图6.10所示:
图6.10用户已登录时导航条界面
用户名下拉的界面如图6.11所示:
图6.11用户名下拉的界面
6.6赛事信息
赛事信息界面分为两列,左边一列是赛事列表,把所有的赛事都显示出来,并且把重要的赛事信息跟着一起显示出来,右边则是赛事类型以及各个类型的评分标准,点击类型分类中的赛事类型可以跳转至对应的页面。
当赛事太多时需要分页,所以在界面的最下边设置了分页,点击页码即可跳转对应的页面,也可以点击“<<”和“>>”,分别对应前一页和后一页,当当前页码是第一页时,系统判定“<<”为不可点击,当当前页码为最后一页时,系统判定“>>”为不可点击。
以每5场赛事为一页进行分页显示,并在最下端显示出第几页。
当赛事过多时,为了界面简洁,将多余的页码用省略号表示。
赛事信息界面如图6.12所示:
图6.12赛事信息界面
赛事分类界面如图6.13所示:
图6.13赛事分类界面
赛事较少时页码如图6.14所示:
图6.14分页显示
赛事过多时页码如图6.15所示:
图6.15页面较多时分页显示
赛事显示核心代码如图6.16所示:
图6.16赛事显示核心代码
6.7赛事详细信息
当用户点击赛事名称进入赛事详细信息界面,该界面包括了赛事详细信息,在信息的下端有“点我报名”跟“评审打分入口”。
如果用户浏览完信息后觉得自己想报名该场赛事即可点击“点我报名”进入报名界面。
在最下端还设计了一点细节,用户浏览完这场赛事信息后可以不用切换出去,点击最下端的前一场或者后一场赛事即可
赛事详细信息界面如图6.17所示:
图6.17赛事详细信息界面
赛事详细信息显示的核心代码如图6.18所示:
图6.18赛事详细信息显示核心代码
6.8查询功能模块
当用户输入自己想要查找的赛事或者关键字之后,以输入“小学”为例。
查找界面会显示符合查找要求的所有赛事并显示出来。
查询功能界面如图6.19所示:
图6.19查询功能界面
查询功能核心代码如图6.20所示:
图6.20查询功能核心代码
6.9报名功能模块
用户报名可以点击导航条里的“名人堂”,也可以点击赛事详细信息里的“点我报名”。
用户可以帮他人报名,需要输入参赛选手的姓名、身份证号、手机号码、所在学校及所读年级、所参加的赛事。
确认信息后方可进行报名。
报名界面如图6.21所示:
图6.21报名界面
6.2.10名人堂模块
名人堂初始的排名是所有选手依据分数进行的排名,用户可以在这里看到各个选手的分数排名情况,可以选择排名方式,也可以查询选手的准考证号来查询选手的成绩。
名人堂界面如图6.22所示:
图6.22名人堂界面
点击赛事名称可以下拉选择不同赛事进入对应的排名,如下图6.23所示
图6.23排名方式
对应的核心代码如图6.24所示:
图6.24赛事排名核心代码
6.2.11个人中心模块
用户登录后通过点击用户名下拉后再点击个人中心按钮进入个人中心模块。
在个人中心中可以进行信息的查看,会显示上一次登录的时间,可以根据上一次登录的时间来看是否自己被盗号,可以进行密码修改,报名信息修改,但是不能修改已绑定的邮箱。
如果用户自己绑定的邮箱没用了或者被盗号了可以联系管理员将其原先的邮箱号删除,然后重新绑定邮箱号。
个人中心界面如图6.25所示:
图6.25个人中心界面
6.2.12后台管理模块
后台管理只有给定权限的用户才能进去,在后台可以进行所有信息和用户的管理。
后台管理界面如图6.26所示:
图6.26后台管理界面
7系统测试
7.1测试目的
系统测试是系统设计时比较重要的一部分。
在竞赛管理系统开发时,人类的主观理解不能完全符合客观现实,因此不可避免地会在系统开发的每个阶段发生错误。
在每个阶段结束之前通过简单的测试来发现更多的错误。
测试的目的有以下四点:
(1)通过测试发现与用户需
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 竞赛 管理 系统 设计 实现