Php的校园竞赛信息网站设计与实现

摘 要

21世纪时信息化的时代,几乎任何一个行业都离不开计算机,将计算机运用于学校的学生竞赛管理也是十分常见的。过去使用手工的管理方式对校园竞赛信息进行管理,造成了管理繁琐、难以维护等问题,如今使用计算机对校园竞赛的各项基本信息进行管理,比起手工管理来说既方便又简单,而且具有易于管理、搜索速度快、存储量大等多个优点。将其使用在校园竞赛管理中,不仅能够提高校园竞赛中工作人员的工作效率,而且可以使学校竞赛信息更加科学与规范。在信息化时代的不断冲击下,校园竞赛信息与计算机技术的结合,将会是一条提高学校竞赛水平的捷径。

经过本人的综合考虑,校园竞赛信息网站的设计是采取面对对象的开发模式进行软件的开发和硬体的架设,能很好的满足实际使用的需求,完善了对应的软体架设以及程序编码的工作,系统采用PHP、Mysql,实现了本系统的全部功能。本次报告,首先分析了研究的背景、作用、意义,为研究工作的合理性打下了基础。针对校园竞赛信息网站的各项需求以及技术问题进行分析,证明了系统的必要性和技术可行性,然后对设计系统需要使用的技术软件以及设计思想做了基本的介绍,最后来实现校园竞赛信息网站和部署运行使用它。

关键词:PHP;Mysql数据库;校园竞赛

Design and implementation of campus competition information website based on PHP

Abstract

In the information age in the 21st century, almost any industry is inseparable from computers. It is also very common to apply computers to the management of student competitions in schools. In the past, the manual management method was used to manage the campus competition information, which caused the problems of cumbersome management and difficult maintenance. Now, the use of computer to manage the basic information of campus competition is not only convenient and simple compared with manual management, but also has many advantages, such as easy management, fast search speed, large storage capacity and so on. Using it in campus competition management can not only improve the work efficiency of staff in campus competition, but also make the school competition information more scientific and standardized. Under the continuous impact of the information age, the combination of campus competition information and computer technology will be a shortcut to improve the level of school competition.

After my comprehensive consideration, the design of campus competition information website adopts the object-oriented development mode for software development and hardware erection, which can well meet the needs of actual use and improve the corresponding software erection and program coding. The system adopts PHP and MYSQL to realize all the functions of the system. This report first analyzes the background, function and significance of the research, which lays a foundation for the rationality of the research work. This paper analyzes the various needs and technical problems of the campus competition information website, proves the necessity and technical feasibility of the system, and then makes a basic introduction to the technical software and design ideas needed to design the system. Finally, it realizes the deployment and operation of the campus competition information website.

Key words: PHPMysql database; Campus competition

 

目  录

第1章 绪论

1.1 研究背景与意义

1.2 开发现状

1.3 主要工作及论文结构

第2章 相关技术介绍

2.1 PHP脚本语言

2.2 mysql数据库

2.3 B/S结构

2.4 Phpstorm开发工具

2.5 Apache服务器概述

2.6 B/S体系工作原理

第3章 系统分析

3.1 可行性分析

3.1.1 技术可行性

3.1.2 经济可行性

3.1.3 社会可行性

3.2 系统功能需求

3.3 系统性能需求

3.4 业务流程分析

3.5 数据流程分析

第4章 系统设计

4.1 系统架构设计

4.2 总体结构设计

4.3 功能模块设计

4.3.1 用户模块

4.3.2 管理员模块

4.4 数据库设计

4.4.1 概念设计

4.4.2 逻辑设计

第5章 系统实现

5.1 数据库连接模块的实现

5.2 登录模块的实现

5.3 用户模块的实现

5.3.1 注册模块的实现

5.3.2 竞赛信息模块的实现

5.3.3 竞赛报名的实现

5.4 管理员模块的实现

5.4.1 用户管理模块的实现

5.4.2 竞赛管理模块的实现 33

5.4.3 成绩管理模块的实现 34

第6章 系统测试 35

6.2 测试目标 35

6.3 功能测试 37

6.4 测试结果 39

第7章 总结与展望 40

参考文献 42

致谢 43

  1. 绪论
    1. 研究背景与意义

随着国家教育体制改革,学校竞赛活动的举办也越来越频繁,报名参赛的学生数量也是越来越多。面对如此众多参与者信息的录入,人工采集信息的方式已经不能满足当下的需求。竞赛信息的管理又是一份繁琐的工作,参赛者的信息量很大,而且通常不允许出现错误。如果执行手工操作,则必须手动填写大量表格,这将使比赛管理工作又增加一个难度。

该系统设计的目的是使参与者信息的输入和管理自动化,标准化和系统化,从而提高管理效率。并围绕此管理目标对系统所需要的用户信息,选手信息,赛事信息,排名信息等进行管理和维护。

    1. 开发现状

面对现今各国高校竞赛活动的举办越发频繁,踊跃报名参赛的学生数量也是越来越多。加之繁复的各种信息录入,单用传统的人工采集信息的方式已经不能满足当下的需求。如何利用现代信息技术使组织者具有快速高效的信息反馈能力和高效率,是目前举办方特别关心的一个问题。建立一个功能齐全的校园竞赛信息网站,避免由于人工操作产生的缺陷,已成为当今社会举办高校竞赛的重中之重。

    1. 主要工作及论文结构

本文的主要工作是研究如何将计算机和信息管理进行有机结合,从而利用Java语言以及Mysql数据库技术在Dreamweaver中实现了系统的功能模块,切实的开发出一套贴近¥新闻管理的实际,有效管理¥新闻的系统。

论文结构如下:

第一章绪论:主要对校园竞赛信息网站的开发背景,研究现状,目的,及意义进行了分析。

第二章开发技术及软件:主要把系统开发工具进行介绍,另外讲解开发系统所用到的一些特殊功能技术。

第三章系统分析:主要是对校园竞赛信息网站进行需求分析,以及对其数据流程与功能进行分析。

第四章系统设计:主要根据系统需求对系统的设计进行介绍,以及对数据的开发与功能模块设计的过程。

第五章系统实现:本章主要结合系统界面截图,介绍了系统各个功能实现的结果。

第六章系统测试:本章系统进行功能模块的测试,撰写测试用例,确保系统各大功能准确无误。

第七章总结与展望:对整个论文的研究内容进行总结,概括整个论文的特点,指出不足之处,为下步深究指明方向。

  1. 相关技术介绍
    1. PHP脚本语言

PHP是由一种使软件开发者可以响应客户端请求,而动态生成HTML、XML或其它格式文档的Web网页的技术标准。PHP技术是以PHP语言作为脚本语言的,PHP网页为整个服务器端的PHP库单元提供了一个接口来服务于HTTP的应用程序。

PHP使代码和特定的预定义动作可以嵌入到静态页面中,所以早期的PHP页面的控制都是通过页面里的PHP语言进行操作,但是这样代码的耦合度很高,不利于后期的开发与维护。通过PHP可以结合HTML网页、PHP指令和ActiveX元件建立动态、交互且高效的WEB服务器应用程序。有了PHP就不必担心客户的浏览器是否能运行所编写的代码,因为所有的程序都将在服务器端执行,包括所有嵌在普通HTML中的脚本程序。当程序执行完毕后,服务器仅将执行的结果返回给客户浏览器,这样也就减轻了客户端浏览器的负担,大大提高了交互的速度。

2.2 mysql数据库

MySQL 是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。MySQL 所使用的 SQL 语言是用于访问数据库的最常用标准化语言。因为其自身的功能相当强大,目前已成为最为流行的数据库软件之一。

MySQL是一个开放源码的小型关联式数据库管理系统,开发者为瑞典MySQL AB公司。目前MySQL被广泛地应用在Internet上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。

2.3 B/S结构

系统计划采用BS模式,是因为比传统的C/S结构具有明显的优越性。B/S模式不需要每台PC客户机都进行部署,只需要部署服务器端,维护费用低。对客户端几乎没有要求,在PC机或者手机上都可以通过浏览器登录。

2.4 Phpstorm开发工具

Phpstorm 是目前最便于PHP编程的开发环境之一,流行于各种平台应用程序的PHP集成开发环境。该开发环境不仅可以完成基本的应用软件的开发,同样的可以集成相当多的插件进行应用开发的辅助。软件虽然本身个头小,但是由于拥有众多的功能插件,使其具有结构上短小精悍,功能上全面强大的特色。在开发的过程中,对硬件的要求不高,使得人人只要具备一台一般性能的电脑,都可以进行开发,人人都可以是软件的创造者。

没有完美的开发工具,插件化是Phpstorm的优点,同样也是其缺点。开发的过程中如果需要添加协助开发的功能,需要对插件进行寻找与安装,当然Phpstorm本身是支持在线安装插件的,但是由于主要的插件都是国外开发人员创造的,使得我们安装插件时,需要访问境外的服务器,那么这也是在线安装插件往往速度慢,经常失败的原因,我们也可以使用阿里,淘宝等的镜像,但是操作难度肯定是比集成化要高。我们也可以进行本地安装,这就需要插件的相关压缩文件,对Phpstorm安装文件进行修改对于初学者来说一定的难度。

2.5 Apache服务器概述

Apache是轻量级的Web服务器[13],免费,开源,在很多中小型,并发访问用户不是很多的情况下被人们普遍使用,那么在国内那么受欢迎,个人觉得可能更多的还是免费的原因。通过在本地的计算机上安装Apache,就可以将本地计算机建立成一个小型的服务器,就可以通过http请求对本地服务器上的项目进行访问。

Apache是最先使用HTTP/1.1协议的Web服务器之一,它完全兼容HTTP/1.1协议并与HTTP/1.0协议向后兼容。Apache已为新协议所提供的全部内容做好了必要的准备。支持多计算机平台。Apache几乎可以在所有的计算机操作系统上运行,包括主流的UNIX、Linux及Windows操作系统。配置文件简单,易操作。用户可以通过直接修改Apache的配置文件信息来修改Apache,操作起来十分方便。

2.6 B/S体系工作原理

B/S架构采取浏览器请求,服务器响应的工作模式。

用户可以通过浏览器去访问Internet上由Web服务器产生的文本、数据、图片、动画、视频点播和声音等信息;

而每一个Web服务器又可以通过各种方式与数据库服务器连接,大量的数据实际存放在数据库服务器中;

从Web服务器上下载程序到本地来执行,在下载过程中若遇到与数据库有关的指令,由Web服务器交给数据库服务器来解释执行,并返回给Web服务器,Web服务器又返回给用户。在这种结构中,将许许多多的网连接到一块,形成一个巨大的网,即全球网。而各个企业可以在此结构的基础上建立自己的Internet。

在 B/S 模式中,用户是通过浏览器针对许多分布于网络上的服务器进行请求访问的,浏览器的请求通过服务器进行处理,并将处理结果以及相应的信息返回给浏览器,其他的数据加工、请求全部都是由Web Server完成的。通过该框架结构以及植入于操作系统内部的浏览器,该结构已经成为了当今软件应用的主流结构模式。

  1. 系统分析
    1. 可行性分析

开发任何一个系统,都要对其可行性进行分析,对其时间和资源上的限制进行考虑,这样可以减少系统开发的风险。同时,分析之后不仅能够合理的运用人力,还能在各方面资源的消耗上得到节省。下面就对技术、经济和社会三个方面来介绍。

      1. 技术可行性

技术可行性主要考虑当前项目所用的技术是否能够符合,在设备上是否能够满足,及各种辅助工具是否提供帮助。本系统用的是PHP开发语言,调试相对简单,当前的计算机硬件配置也完全能满足开发的需求,因此在技术上是绝对可行的。软件方面:由于软件的开发平台成熟可行,它们速度快、容量大、可靠性能高、价格低,完全能满足系统的需求。采用PHP编程语言,已无技术上的问题。

      1. 经济可行性

系统所采用的主流的Thinkphp框架进行系统主体框架的搭建和Mysql后端数据库均为免费开发工具。故开发成本主要集中在后期的推广及系统维护上。相对于成本较高的C/S模式,也是选用了成本较低的B/S模式,所以经济上几乎没任何问题。

      1. 社会可行性

本系统是自行开发的系统,以方便高效管理校园竞赛信息为出发点,是具有实际意义的系统,开发的环境软件和用到的数据库也都是开源代码,不存在侵权等问题,所以在社会方面也是可行的。

    1. 系统功能需求

学生用例图如下所示。

图3-1 学生用例图

管理员用例图如下所示。

图3-2 管理员用例图

通过对用例图的分析和调查,根据本系统的实际需要,从用户角度提出需求功能如下:

1.管理员功能需求:

用户管理模块:管理员查看用户基本信息,并实现对用户信息的增加、删除、修改等功能。

修改登录密码模块:修改管理员用户的登录密码。

注册管理模块:管理员查看用户注册信息,内容,审核。

竞赛报名模块:管理员对学生竞赛报名申请进行审核。

最新赛事管理模块:管理最新竞赛信息。

内容管理模块:管理员发布公告可对其删除、修改。

竞赛信息管理模块:管理员查看竞赛表,并且添加竞赛数据,也能够删除竞赛数据。

竞赛成绩模块:根据参赛选手的实际比赛得分,管理员对竞赛排名成绩信息的公布维护、比赛结果处理等操作。

2.用户功能需求:

用户注册模块:将用户信息录入数据库,用户利用注册的账号以及密码登录系统,浏览查看各种信息,添加部分信息;

校园展示模块:用户可以对校园风采展示进行浏览。

竞赛信息模块:用户可以查看竞赛信息。

个人信息模块:修改信息功能,用户修改个人资料信息,但不能修改账号;密码修改功能,修改登录密码。

竞赛报名模块:从管理员发布的竞赛数据中选择要报名的竞赛类型,进行提交报名。

成绩查询模块:可以在系统上查看个人或者团体参与的竞赛得分等信息。

    1. 系统性能需求

评判一个系统好坏的一项重要指标就是性能,下面是对此系统的一些性能进行阐述。

1.系统的安全性和稳定性: 校园竞赛信息网站在管理权限上有着严格的控制,即想登录此平台进行操作,则必须要有操作权限,没有权限的用户是不可能登录平台查看任何的信息和数据,从而确保了系统的安全性。

2.数据的完整性和准确性:第一个是各项记录信息的完整性,信息记录的内容可以为空;第二个是各项信息数据之间相互联系的准确性;第三个是数据在不同记录信息的一致性

3.用户操作系统简单方便

在系统开发中按照“简单易用”的原则,能够使用户对系统的使用一目了然,既能保证用户使用,同时又能保证维护人员方便维护。

    1. 业务流程分析

业务流程图不仅能反映出内部业务之间的关系,而且能体现出作业顺序及信息的流动。校园竞赛信息网站必须支持整个组织在不同层次上的各种功能,各个功能模块之间又有各种不同相关的信息进行联系,构成了一个有机的整体,根据校园竞赛信息网站的特点以及结合所面临的实际情况,设计出了系统的业务流程图。

系统的业务流程如下图所示。

图3-1系统业务流程图

    1. 数据流程分析

在分析了系统的业务流程之后,就要分析系统的数据流,为后面设计系统的数据库做好基础。这里主要利用数据流程图来说明数据流程。数据流程图是一个图示工具,容易理解,容易在开发和用户方之间进行交流,以及在开发组织内部交流。因此数据流程图作为一种模型工具已经广泛使用在软件工程的实践中。

系统的顶层数据流图如下图所示。

图3-2系统数据流图(顶层)

根据系统的业务流程,用户浏览所使用到的数据归纳为输出信息。而用户提交的数据则作为系统的输入数据。相应的,根据系统管理员业务流程,管理员对系统内容的添加、更新和删除等所操作的数据定义为输入信息。

  1. 系统设计
    1. 系统架构设计

操作系统题库管理系统的架构设计主要分为可以3层,主要有Web层,业务层,Model层。其中web层还包括View层和Controller层,Model层包括元数据扩展层和数据访问层。

图4-1系统架构图

视图层视图是指被用户所看到的并且能够与之进行交互的界面。视图可以向用户展示相关的数据,并接收用户输入的数据,但对用户数据不进行任何实际业务操作处理。

模型层通过控制层来处理视图层传递的数据,同一个模型可以给不同的视图提供数据,也可以被不同的视图重复使用。由于 Model 的主要内容是数据、方法和行为,其也是 MVVM 中逻辑最为复杂,代码量最多的部分,其中包含了许多应用中需要用到的业务逻辑,因此模型层的开发也变得尤为重要,后期一般不会对模型层进行大规模改动,也是 MVVM最稳定的部分。

控制层主要负责视图层和模型层之间的数据传输和处理请求操作。当用户通过视图发送数据和请求时,控制层可以接收请求和数据并决定调用哪些模型、通过模型的哪些操作来处理数据和请求,处理完成后,控制层再将数据返回给相应的视图。

    1. 总体结构设计

根据对系统的功能进行分析可以总结校园竞赛信息网站的具体功能模块包括下面的几个主要的功能模块:该系统主要从两大模块进行设计的,首先就是用户参与操作需要的模块,此外还需要有管理员用到的模块,两者之间不是互相独立的,他们之间有着密切的联系,同数据库表中的数据连接起来进行操作。每个模块访问相同的数据库,但访问的表不同。系统的各个功能模块是根据所收集的资料研究得到的。在以上分析功能的基础上,系统模块分为多个模块。用户含有的功能有注册,登录,竞赛报名,直击现场、竞赛成绩查询等,退出登录等功能,管理员含有的功能有修改密码,用户管理、竞赛活动管理、报名管理、战利品箱管理、成员管理等功能。

系统的功能结构图如下图所示。

                                    

图4-2系统功能结构图

    1. 功能模块设计
      1. 用户模块

用户模块主要实现用户的注册、登录、竞赛信息搜索、在线评论、在线报名、风采展示、个人资料修改、登录密码修改、竞赛成绩查询等功能。

用户注册:用户通过账号注册得到用户名和密码。

用户登录:用户在被管理员添加成功后,通过管理员提供的用户名、密码和输入验证码进行登录,操作非常简单。

个人资料管理:用户根据用户ID修改当前ID的一些属性的值。

修改个人登录密码:用户登录校园竞赛信息网站后可以自己修改自己的密码。

竞赛信息搜索:用户可以在线搜索并查看系统发布的不同竞赛信息。

竞赛报名:用户可以对自己想参与的竞赛提交报名申请。

校园风采展示:用户可以在系统看到校园风采展示等操作。

竞赛成绩:用户可以查看自己或者其他人参与的竞赛活动的具体成绩。

      1. 管理员模块

管理员模块是本系统重要开发部分,它的使用对象是系统管理员,在进入管理员模块前,需要输入正确的用户姓名、密码和验证码,才能进入管理员模块。界面右上方有退出系统按钮,点击可退出管理员模块界面。

系统用户管理:管理员添加、管理、查询管理员信息并有修改他们密码的权限。

注册用户管理:管理员管理已注册的用户,审核刚注册的用户,修改用户的基本信息。

竞赛信息管理:管理员录入竞赛信息,跳转至添加竞赛页面,填写竞赛信息,提交后,竞赛信息存储数据库的竞赛信息表中,包括竞赛分类、竞赛名称、竞赛图标、报名方式、等信息。

内容管理:竞赛内容信息管理包括竞赛活动信息录入、竞赛活动信息修改、肌酐活动信息删除,在数据库中设计并建立竞赛活动信息表,管理员添加竞赛活动信息,即往数据表中插入一条数据,删除竞赛活动信息,则在数据库删除一条数据,修改竞赛活动信息,则修改数据库的数据。

竞赛成绩公布成:管理员对各类竞赛活动,竞赛成员参与的成绩公布。

    1. 数据库设计
      1. 概念设计

E-R图一般是由实体、实体的属性与联系三个要素组成的。在规划系统中所使用的数据库实体对象及实体E-R图,则需要通过对系统的需求分析、业务流程设计和系统功能结构来确定的。

总体ER图如下图所示。

图4-3总体ER图

      1. 逻辑设计

将实体属性模型转换为关系数据库应该遵循以下几个原则:

1.一个实体转换后要对应一个关系。

2.所有的主键必须要定义为非空(not null)。

3.针对二元联系也应该按照一对多、弱对实、一对一和多对多等联系来定义外键。

得到数据库的关系后,设计如下表结构。

名称

类型

长度

不是null

主键

注释

group_id

mediumint

8

用户组ID

display

smallint

4

显示顺序

name

varchar

16

名称

description

varchar

255

描述

source_table

varchar

255

来源表:

source_field

varchar

255

来源字段:

source_id

int

10

来源ID:

register

smallint

1

注册位置:

create_time

timestamp

0

创建时间:

update_time

timestamp

0

更新时间:

名称

类型

长度

不是null

主键

注释

student_registration_id

int

11

学生注册ID

gender

varchar

64

性别

age

varchar

64

年龄

id_number

varchar

64

身份证号

college

varchar

64

学院

major

varchar

64

专业

student_number

varchar

64

学号

examine_state

varchar

16

审核状态

recommend

int

11

智能推荐

user_id

int

11

用户ID

create_time

datetime

0

创建时间

update_time

timestamp

0

更新时间

名称

类型

长度

不是null

主键

注释

department_information_id

int

11

院系信息ID

college_and_department_events

varchar

64

院系赛事

examine_state

varchar

16

审核状态

recommend

int

11

智能推荐

create_time

datetime

0

创建时间

update_time

timestamp

0

更新时间

名称

类型

长度

不是null

主键

注释

direct_attack_on_the_scene_id

int

11

直击现场ID

event_name

varchar

64

赛事名称

participating_team

varchar

64

参赛团队

award_winning_team

varchar

64

获奖团队

group_photo

varchar

255

合影

prize

varchar

64

奖品

previous_events

varchar

255

以往赛事

site_details

longtext

0

现场详情

hits

int

11

点击数

examine_state

varchar

16

审核状态

recommend

int

11

智能推荐

create_time

datetime

0

创建时间

update_time

timestamp

0

更新时间

名称

类型

长度

不是null

主键

注释

form_a_team_id

int

11

战队信息ID

team_name_

varchar

64

战队名称

team_icon

varchar

255

战队图标

member_name

varchar

64

成员姓名

student_number

int

11

学生学号

student_telephone

varchar

64

学生电话

number_of_teams

varchar

64

队伍人数

creation_date

date

0

创建日期

remarks

longtext

0

备注

examine_state

varchar

16

审核状态

recommend

int

11

智能推荐

create_time

datetime

0

创建时间

update_time

timestamp

0

更新时间

名称

类型

长度

不是null

主键

注释

competition_registration_id

int

11

比赛报名ID

event_name

varchar

64

赛事名称

event_type

varchar

64

赛事类型

college_and_department_events

varchar

64

院系赛事

organize_events

varchar

64

组织赛事

other_events

varchar

64

其他赛事

schedule_date

date

0

赛程日期

event_cover

varchar

255

赛事封面

event_details

longtext

0

赛事详情

examine_state

varchar

16

审核状态

recommend

int

11

智能推荐

create_time

datetime

0

创建时间

update_time

timestamp

0

更新时间

名称

类型

长度

不是null

主键

注释

team_recruitment_id

int

11

团队招募ID

team_name

varchar

64

团队名称

team_members

varchar

64

团队成员

team_photos

varchar

255

团队照片

contact_information

varchar

64

联系方式

team_resume

varchar

255

团队简历

examine_state

varchar

16

审核状态

recommend

int

11

智能推荐

create_time

datetime

0

创建时间

update_time

timestamp

0

更新时间

  1. 系统实现
    1. 数据库连接模块的实现

该系统是通过jdbc和Mysql达成连接的,新建一个jdbc.properties文件来填写与数据库连接所需要的驱动和参数。

jdbc.driverClass=com.Mysql.jdbc.Driver

jdbc.url=jdbc:Mysql://localhost:3306/tsi

jdbc.username=root

jdbc.password=123

第一个参数代表Mysql数据库的驱动,第二个参数代表要连接的数据库,第三个和第四个参数代表数据库连接名和密码。

后台与数据库访问主要是通过HQL语句来进行查询的,查询语句中的表名是表格的实体类名,在这种查询语句中*是不允许使用的,除非适合聚合函数一起使用才可以。

    1. 登录模块的实现

为确保系统安全性,系统操作员只有在登录界面输入正确的用户名、密码、权限以及验证码,单击“登录”按钮后才能够进入本系统的主界面。

用户登录流程图如下所示。

图5-2用户登录流程图

登录界面如下图所示。

图5-3登录界面

用户登录的逻辑代码如下所示。

public function login()

    {

        if (Request::isPost()) {

            $request = Request::param();

            $result = $this->validate($request, $this->validate);

            if (true !== $result) {

                // 验证失败 输出错误信息

                $data['error'] = 30000;

                $data['message'] = $result;

            } else {

                $request['password'] = md5($request['password']);

                $result = $this->model->login($request, $this->table);

                $data = $result;

            }

        } else {

            $data['error'] = 30000;

            $data['message'] = "field的值不能为空!";

        }

        return json_encode($data);

    }

public function login($request=[],$table_name = ''){

        $username = $request['username'];

        $password = $request['password'];

        $bol = $this->where(['username'=>$username])->find();

        if ($bol){

            $password = md5($password);

            if ($request['password']==$bol['password']) {

                //添加token信息

                $access_token['create_time'] = date('Y-m-d H:i:s');

                $access_token['update_time'] = date('Y-m-d H:i:s');

$access_token['info'] = json_encode($bol);

                // $access_token['info'] = $bol;

                $access_token['token'] = md5(date('Y-m-d H:i:s'));

                $bol_token = Db::name('AccessToken')->insert($access_token);

                if ($bol_token){

                    $data['obj'] = $bol;

                    $data['obj']['token'] = $access_token['token'];

                    return ['result' => $data];

                }else{

                    return ['error' => ['code' => 5000, 'message' => '登录失败,token生成失败']];

                }

            } else {

                return ['error' => ['code' => 5000, 'message' => '登录失败,密码不正确']];

            }

        }else{

            return ['error' => ['code' => 5000, 'message' => '登录失败,账号不存在']];

        }

    }

    1. 用户模块的实现
      1. 注册模块的实现

用户输入用户名、密码、电话、姓名等必填信息后,点击注册按钮完成用户的注册。

用户注册流程图如下所示。

图5-5用户注册流程图

用户注册界面如下图所示。

图5-5用户注册界面

用户注册关键代码如下所示。

public function register()

    {

        if (Request::isPost()) {

            $request = Request::param();

            $request['create_time'] = isset($request['create_time']) ? $request['create_time'] : date('Y-m-d H:i:s');

            $request['update_time'] = isset($request['update_time']) ? $request['update_time'] : date('Y-m-d H:i:s');

            $result = $this->validate($request, $this->validate);

            if (true !== $result) {

                // 验证失败 输出错误信息

                $data['error'] = 30000;

                $data['message'] = $result;

            } else {

                $request['password'] = md5($request['password']);

                $result = $this->model->register($request, $this->table);

                $data = $result;

            }

        } else {

            $data['error'] = 30000;

            $data['message'] = "field的值不能为空!";

        }

        return json_encode($data);

    }

public function register($request=[],$table_name = ''){

        $username = $request['username'];

        $bol = $this->where(['username'=>$username])->find();

        if (!$bol){

            $result = self::allowField(true)->save($request);

            if ($result) {

                return ['result' => 1];

            } else {

                return ['error' => ['code' => 3000, 'message' => '注册失败']];

            }

        }else{

            return ['error' => ['code' => 3000, 'message' => '注册失败,账号已存在']];

        }

    }

      1. 竞赛信息模块的实现

用户点击某个竞赛信息进入竞赛详细页,点击评论按钮进入竞赛页,搜索竞赛信息。

竞赛信息流程图如下所示。

图5-9竞赛信息流程图

竞赛信息界面如图所示。

图5-10竞赛信息界面

竞赛信息关键代码如下所示。

public function avg_group()

    {

        $request = Request::param();

        if (isset($request['groupby']) && isset($request['field'])) {

            if (!empty($request['groupby']) && !empty($request['field'])) {

                $result = $this->model->avg_group($request, $this->table, $this->table_id);

                $data = $result;

            } else {

                $data['error']['code'] = 30000;

                $data['error']['message'] = "groupby或者field的值不能为空!";

            }

        } else {

            $data['error']['code'] = 30000;

            $data['error']['message'] = "groupby或者field的值不能为空!";

        }

        return json_encode($data);

    }

      1. 竞赛报请模块的实现

用户点击某个竞赛活动进入竞赛详细页,点击报名申请按钮进入报名申请页,提交报名申请信息,管理员管理用户的报名申请信息,审核报名申请信息。

竞赛报名流程图如下所示。

图5-12竞赛报名流程图

竞赛报名界面如图所示。

图5-13竞赛报名界面

竞赛报名关键代码如下所示。

public function avg()

    {

        $request = Request::param();

        if (isset($request['field'])) {

            if (!empty($request['field'])) {

                $result = $this->model->avg_field($request, $this->table, $this->table_id);

                $data = $result;

            } else {

                $data['error']['code'] = 30000;

                $data['error']['message'] = "field的值不能为空!";

            }

        } else {

            $data['error']['code'] = 30000;

            $data['error']['message'] = "field的值不能为空!";

        }

        return json_encode($data);

    }

    1. 管理员模块的实现
      1. 用户管理模块的实现

系统用户管理主要是对新用户的添加和旧用户的删除。新用户的添加主要是指添加用户名称并确定其密码;旧用户的删除也是从下拉菜单中找到对应的用户名称将其删除。不论是新用户添加还是旧用户的删除,这个权限只有管理员具有。

用户管理流程图如下所示。

图5-15用户管理流程图

用户管理界面如下图所示。

图5-16用户管理界面

系统用户管理关键代码如下所示。

public function get_obj()

    {

        $request = Request::param();

        $result = $this->model->get_obj($request, $this->table, $this->table_id, $this->table_id);

        $data['result'] = $result;

        return json_encode($data);

    }

      1. 竞赛管理模块的实现

竞赛管理功能主要指对其竞赛类型、竞赛名称、竞赛图标、报名申请等一些基本信息的添加、删除和修改。

竞赛管理流程图如下所示。

图5-19竞赛管理流程图

竞赛管理如下图所示。

图5-20竞赛管理界面

竞赛管理关键代码如下所示。

public function get_list()

    {

        $request = Request::param();

        $result['list'] = $this->model->get_list($request, $this->table, $this->table_id);

        $result['count'] = $this->model->list_count($request, $this->table, $this->table_id);

        $data['result'] = $result;

        return json_encode($data);

    }

      1. 成绩管理模块的实现

用户查看竞赛成绩信息,管理员审核竞赛成绩,发布成绩。

成绩管理流程图如下所示。

图5-25成绩管理流程图

成绩管理界面如下所示。

图5-27成绩管理界面

成绩管理关键代码如下所示。

public function get_list($request=[],$table_name = '',$table_id = ''){

        $page = 1;

        $size = $table_name == "auth" ? 100 : 10;

        $where = [];

        $order = $table_id.'_id desc';

        $field = '*';

//        echo $order;exit;

        $columns = Db::query( "show COLUMNS FROM `".$table_name."`");

        foreach($columns as $key=>$val){

            $field_name = $val['Field'];

            if(isset($request['like'])){

                if ($request['like']==true){

                    //字段模糊查询

                    if(isset($request[$field_name])){

                        $where[] = [$field_name, '=', $request[$field_name]];

                    }

                }else{

                    //字段模糊查询

                    if(isset($request[$field_name])){

                        $where[] = [$field_name, 'like', '%' . $request[$field_name] . '%'];

                    }

                }

            }else{

                //字段模糊查询

                if(isset($request[$field_name])){

                    $where[] = [$field_name, 'like', '%' . $request[$field_name] . '%'];

                }

            }

            //范围查询

            if(isset($request[$field_name.'_min'])){

                $where[] = [$field_name, '>=', $request[$field_name.'_min']];

            }

            if(isset($request[$field_name.'_max'])){

                $where[] = [$field_name, '<=', $request[$field_name.'_max']];

            }

        }

        //分页

        if (isset($request['page'])){

            $page = $request['page'];

        }

        if (isset($request['size'])){

            $size = $request['size'];

        }

        //排序

        if (isset($request['order'])){

            $order = $request['order'];

        }

        //查询字段

        if (isset($request['field'])){

            $field = $request['field'];

        }

        //模糊查询

        $list= $this->where($where)->order($order)->field($field)->page($page, $size)->select()->toArray();

        foreach($list as &$l){

         foreach($l as &$o){

         if(strpos($o,$_SERVER['HTTP_HOST']) === false){

         $o = str_replace('upload','http://'.$_SERVER['HTTP_HOST'].'/upload',$o);

         }

         }

        }

        return $list;

    }

  1. 系统测试
    1. 测试目标

系统测试是用于检查软件的质量、性能、可靠性等是否符合用户需求。一套严谨的、规范的、完善的测试过程将大大提高软件的质量、可信度、可靠性,降低软件的出错率,降低用户风险系数。通过在计算机上对系统进行测试试验并从中发现此系统中存在的问题和错误然后加以修改,使之更加符合用户需求。

1.测试的目的是通过测试来发现程序在执行过程中的错误的过程。

2.好的测试方案是可以检验出还未被发现的错误的方案。

3.好的测试是发现了到目前为止还未被发现的错误的测试。

4.该系统能够完成校园竞赛报名、校园竞赛维护、组建战队、用户维护、校园展示等功能,做到所开发的系统操作简单,尽量使系统操作不受用户对电脑知识水平的限制。

    1. 功能测试

下表是校园竞赛信息网站的测试用例,检测了校园竞赛管理中对校园竞赛信息的增加,删除,修改,查询操作是否成功运行。观察系统的响应情况,得出该功能也达到了设计目标,系统运行正确。

前置条件;用户登录系统。

表6-1 校园竞赛管理的测试用例

功能描述

用于校园竞赛管理

测试目的

检测校园竞赛管理时的各种操作的运行情况

测试数据以及操作

预期结果

实际结果

点击添加校园竞赛,必填项合法输入,点击保存

提示添加成功

与预期结果一致

点击添加校园竞赛,必填项输入不合法,点击保存

提示必填项不能为空

与预期结果一致

点击修改校园竞赛,必填项修改为空,点击保存

提示必填项不能为空

与预期结果一致

点击修改校园竞赛,必填项输入不合法,点击保存

提示必填项不能为空

与预期结果一致

点击删除校园竞赛,选择校园竞赛删除

提示删除成功

与预期结果一致

点击搜索校园竞赛,输入存在的校园竞赛名

查找出校园竞赛

与预期结果一致

点击搜索校园竞赛,输入不存在的校园竞赛名

不显示校园竞赛

与预期结果一致

下表是竞赛报名管理功能的测试用例,检测了竞赛报名管理中竞赛报名单的操作是否成功运行。观察系统的响应情况,得出该功能也达到了设计目标,系统运行正确。

前置条件;用户登录系统。

表6-2 竞赛报名管理的测试用例

功能描述

用于竞赛报名管理

测试目的

检测竞赛报名管理时各种操作的情况

测试数据以及操作

预期结果

实际结果

未选择校园竞赛,点击提交

提示请选择校园竞赛

与预期结果一致

未上传成绩,点击提交

提示请选择成绩

与预期结果一致

    1. 测试结果

根据以上测试情况,测试结果如下表所示。

表6-1测试结果表

测试项目

测试结果

登录测试

成功

修改密码测试

成功

直击现场测试

成功

校园风采测试

成功

校园竞赛报名测试

成功

组建战队测试

成功

用户管理测试

成功

竞赛管理测试

成功

战利品箱测试

成功

竞赛成绩测试

成功

  1. 总结与展望

本研究针对校园竞赛信息网站的需求建模,数据建模及过程建模分析设计并实现校园竞赛信息网站的过程。给出系统应用架构并分析优劣势,通过功能分解图,系统组件图描述功能需求。设计建立了数据库,给出系统关键数据结构的定义。通过类关系图描述组件间的协作关系,给出各个类的定义方法。通过描述每一个类的字段,属性及方法实现校园竞赛信息网站的前后端代码。最终给出系统集成整合方法,完成校园竞赛信息网站的设计与实现。

在此项目的开发中,不光明白了前端开发和后台在整个系统中起到了什么作用,因为前后台的连接,用户可以对系统进行操作,可以在输入自己的相关信息后,通过后台加工,完成对数据库的查找、修改、添加,而理解了这些关系与实现的方法后。再去完善整个系统的功能就更加清晰与简单了。此次的项目它涉及了前台与后台系统的搭建,在学校所学的知识基础上,此次的项目,让我对于一个系统的前端开发,以及后台的作用都有了一个更深切的认知。

参考文献

  1. 胡沁涵,王亚男,杨季文,朱晓旭,刘钊.高校学科竞赛组织平台的研究与实现[J].福建电脑,2021,37(09):75-78.
  2. [2]Tao Zhang,Mengxia Chen. Research on Structural Design Competition and Innovation Ability Development[J]. Journal of Educational Research and Policies,2021,3(5):
  3. 侯军杰,杨威,陈畅.创新创业竞赛信息系统设计与实现[J].电子测试,2020(20):80-81.
  4. [4]任嘉,徐卓农,邓飞.对高校学科竞赛管理系统改进的研究[J].科技视界,2020(20):168-170.

[5]傅旭波,吴叶海,柳志鹏,孙冠荣,孙耀然.校园足球智慧化模式实践研究[J].青少年体育,2020(05):44-46+74.

[6]David S. Williams II. Understanding Spatial Relationships in Admission Competition[J]. New Directions for Institutional Research,2018,2018(180):

[7]本刊编辑.“青少年校园足球数据云”在校园足球教学管理中的价值[J].校园足球,2019(10):69-71.

[8]王一帆.江苏省高校校园体育竞赛网站研究[J].同行,2019(08):144.

[9]陈伟,方霞,吴俊.基于数字化校园的学生学科竞赛信息系统[J].实验室研究与探索,2019,34(10):201-205.

[10]张立天,孙强.驻济高校体育竞赛管理与校园体育文化建设调查研究[J].搏击(体育论坛),2018,7(06):17-19.

[11]王云凯.基于B/S架构的校园竞赛系统分析与设计——以西南财经大学职业生涯规划大赛报名系统为例[J].中国教育信息化,2018(19):88-90.

[12]雷鸣,任平社,刘军.基于数字化校园背景下高校教学群体竞赛管理系统的开发与应用[J].科技信息,2018(34):29.

[13]吴嘉玲. 网络环境下高校体育综合管理平台的设计与构想[C]//Management Science and Engineering(MSE 2011 V6).,2018:490-494.

[14]韩志超.学生网管团队的建设与管理[J].中国教育网络,2018(12):73-75.

致谢

在此论文完成之际,感谢我的指导老师。在指导老师的网页设计课上,当时我学到了很多东西,这对于我实习过程中也打了一定的基础,而且指导老师对于我的设计也提出许多建议,并予以悉心的指导,对于一些细小的问题都耐心的指导我去完善,授予我写论文的好友,时常的鼓励我,另外感谢教导我完善此项目的前端同学,对于这个项目,我是边学习边实现完成的,有许多东西开始并不是很明白,但前端开发的同学非常耐心的引导我去将这个项目完成,在系统的后端开发中,所用到的后台开发技术也时常会给我讲解,助于我更好的将论文完成,在此对帮助到我的同学和一直予以教导的指导老师致以衷心的感谢,祝事业有成。

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐