目 录
随着高等教育的发展和校园文化活动的丰富,高校运动会已成为展示学生风采、提升校园凝聚力的重要平台。然而传统的人工管理方式已经无法满足高校运动会的管理需求。为了解决这个问题,本文提出并实现了高校运动会竞赛管理系统。本系统是采用基于Java语言、MySQL数据库和Spring Boot框架为基础设计开发。Spring Boot是一种新兴的Java开发框架,它提供了快速搭建应用程序的能力,并且具有很好的灵活性和可扩展性。该系统采用Spring Boot框架进行开发,能够快速地构建出高效、稳定、安全、易维护的应用程序。
本文首先阐述了系统的研究背景和意义;然后对系统进行了可行性、功能性等分析;接着详细介绍了系统的设计原理和实现细节,包括系统架构设计、功能结构设计、数据库设计、等;最后对系统进行了部署和测试。通过本系统的的成功实施,不仅为高校运动会的管理提供了有力支持,也为其他类似系统的设计和实现提供了有益的参考。
关键词:高校运动会;竞赛管理系统;Spring Boot
Abstract
With the development of higher education and the enrichment of campus cultural activities, university sports events have become an important platform to showcase student style and enhance campus cohesion. However, traditional manual management methods can no longer meet the management needs of university sports events. To address this issue, this article proposes and implements a competition management system for university sports events. This system is designed and developed based on Java language, MySQL database, and Spring Boot framework. Spring Boot is an emerging Java development framework that provides the ability to quickly build applications and has good flexibility and scalability. The system is developed using the Spring Boot framework, which can quickly build efficient, stable, secure, and easy to maintain applications.
This article first elaborates on the research background and significance of the system; Then, feasibility and functionality analyses were conducted on the system; Then, the design principles and implementation details of the system were introduced in detail, including system architecture design, functional structure design, database design, etc; Finally, the system was deployed and tested. The successful implementation of this system not only provides strong support for the management of university sports events, but also provides useful references for the design and implementation of other similar systems.
Keywords: College sports meet; Competition management system; Spring Boot
1 绪论
1.1 研究背景
高校运动会作为校园文化的重要组成部分,不仅为学生提供了展示才能的平台,还能增强学生的团队精神和竞争意识。然而,随着高校规模的扩大和学生参与度的提升,传统的管理方式已无法满足现代运动会的需求。随着信息化技术的发展,高校越来越倾向于采用信息化手段来管理各类活动。运动会作为高校重要的年度活动,其信息化管理需求尤为迫切。通过采用信息化手段,可以大大提高管理效率,减少出错率,为参赛者提供更好的参赛体验。
Spring Boot是一个开源的Java框架,它简化了Spring应用的初始搭建以及开发过程。使用SpringBoot可以快速地构建出稳定、可靠、高效的Web应用程序。因此,采用Spring Boot框架开发高校运动会竞赛管理系统是一个理想的选择。
随着高等教育的发展和校园文化活动的丰富,高校运动会已成为展示学生风采、提升校园凝聚力的重要平台。开发设计一个基于Spring Boot的高校运动会竞赛管理系统具有重要的意义。
首先,可以提高组织和管理效率:通过系统化管理各项功能,可以减少人力资源的浪费,提高工作效率。例如,通过该系统,运动员用户可以方便快捷的查看校运比赛项目信息并完成在线报名,管理员可以对项目信息、报名信息、成绩信息等进行系统化和信息化管理、提高管理效率。
其次,通过系统可以降低信息传递误差和时延:系统化的数据管理和信息共享,可以降低信息传递的误差和时延,提升比赛的公正性和公平性。
最后,有助于促进大学生体育运动的发展:该系统可以为学生提供一个便捷的报名和参与渠道,从而促进大学生体育运动的发展。
本系统前端部分基于MVVM模式进行开发,采用B/S模式,后端部分基于Java的Springboot框架进行开发。
前端部分:前端框架采用了比较流行的渐进式JavaScript框架Vue.js。使用Vue-Router和Vuex实现动态路由和全局状态管理,Ajax实现前后端通信,Element UI组件库使页面快速成型。后端部分:采用Springboot作为开发框架,同时集成MyBatis、Redis等相关技术。
SpringBoot是一个用于创建独立的、基于Spring的应用程序的框架。它简化了基于Java的应用程序的开发过程,提供了一种快速构建可部署的生产级应用程序的方式。它的主要特点是自动配置和约定优于配置。它通过使用默认值和自动配置来减少开发人员的配置工作量,使开发过程更加简单和高效。它还提供了一个起步依赖(Starter POM)的概念,可以一站式引入相关的依赖库和配置,以快速搭建项目。
它还具有内嵌的Web服务器,如Tomcat或Jetty,这使得应用程序可以作为一个独立的可执行JAR文件运行。此外,它还提供了健康检查、度量指标、安全性等方面的功能,帮助开发人员更好地管理和监控应用程序。它采用了Spring框架的核心功能,如依赖注入、面向切面编程等,并结合了其他开源项目,如Spring Data、Spring Security等,提供了丰富的功能和扩展性。
综上所述,SpringBoot是一个简化了Spring应用程序开发的框架,它提供了自动配置、约定优于配置、起步依赖等特性,使得开发人员可以更加便捷地构建可部署的应用程序。它的出现极大地简化了Java开发过程,提高了开发效率和项目的可维护性。
Vue(读音/vjuː/,相似于view)是一种具有高度灵活性的JavaScript架构,能够从基础到顶级,从低到高地实现多种功能,从而创造出一个完整的、高效的用户体验。Vue的核心库专注于视觉表示,它的操作简单,并且可以轻松地将其与其他第三方库和已存在的项目进行集成。此外,Vue可以通过搭配先进的工具和多样的支撑性库,来实现对复杂的网站(SPA)的高效管理。
Vue作为一种逐步改善的用户体验的框架,具备了独特的优势:首先,它的基础结构更加简单,而且可以轻松地被更多的人使用,而Vue的核心库则更加专注于视觉层,可以轻松地被更多的人使用,也可以被更多的库和现成的项目所使用。Vue 具备强大的功能,可以利用其内置的多个文档组件以及其强大的生态系统来实现更加精简、高效的单页应用。
MySQL 经过多次的更新,功能层面已经非常的丰富和完善了,从MySQL4版本到5版本进行了比较大的更新,在商业的实际使用中取得了很好的实际应用效果。最新版本的MySQL支持对信息的压缩,同时还能进行加密能更好的满足对信息安全性的需求。同时经过系统的多次更新,数据库自身的镜像功能也得到了很大的增强,运行的流畅度和易用性方面有了不小的进步,驱动的使用和创建也更加的高效快捷。最大的变动还是进行了空间信息的显示优化,能更加方便的在应用地图上进行坐标的标注和运算。强大的备份功能也保证了用户使用的过程会更加安心,同时支持的Office特性还支持用户的自行安装和使用。在信息的显示形式上也进行了不小的更新,增加了两个非常使用的显示区,一个是信息区,对表格和文字进行了分类处理,界面的显示更加清爽和具体。第二是仪表的信息控件,能在仪表信息区进行信息的显示,同时还能进行多个信息的比对,为用户的实际使用带来了很大的便捷。
2系统分析
可行性分析的目的是确定一个系统是否有必要开发、确定系统是否能以最小的代价实现。其工作主要有三个方面,分别是技术、经济和社会三方面的可行性。本文从这三个方面对高校运动会竞赛管理系统进行详细的分析。
2.1 可行性分析
(1)技术可行性
该系统主要使用Springboot框架和MySQL数据库进行开发,Java易于学习和使用灵活。在校期间也接触过Springboot和MySQL数据库的课程,对此有一定的开发经验,因此开发难度不高。所以从技术上来说是可行的。
(2)经济可行性
本系统设计所选择的开发工具和服务器都是免费的开源软件,又或者是适合学生使用的免费版本,并不需要支付费用,而且由本人单独完成,也不存在团队费用,几乎没有经济成本,具备经济可行性。
- 社会可行性
国家鼓励高校信息化建设和数字化校园的发展,支持高校运用信息技术提升管理和服务水平,开发基于Spring Boot的高校运动会竞赛管理系统符合国家相关政策。因此从社会角度分析是可行的。
一个系统要在开发和维护的过程中方便使用,必须采取一定的设计原则,其主要设计原则有:
简单性:系统功能简单易懂,只需要掌握基本的计算机操作能力即可使用。
针对性:针对特定的用户,没有多余的其他功能,使用户可以专心使用。
实用性:能够满足用户查看项目信息、报名信息、成绩信息等方面的需求。
先进性:本系统的代码采用读取数据的方式,方便后续开发、拓展。
2.3 业务流程分析
系统流程是用一些特定的符合和线条来进行演示用户在使用系统时的过程,在进行系统分析的时候,业务流程可以帮助开发人员更好的理解业务,发现错误,完善系统。
2.3.1 用户登录流程
登录模块主要满足管理员以及用户的权限登录,用户登录流程图如图2-1所示。
图2-1 用户登录流程图
2.3.2 删除信息流程
用户可选择要删除的信息并进行信息删除操作,在删除信息时系统提示是否确定删除信息,是则删除信息成功,系统数据库将信息进行删除。删除信息流程图如图2-2所示。
图2-2 删除信息流程图
按照基于Spring Boot的高校运动会竞赛管理系统的角色,主要包括裁判用户、运动员用户和管理员这三大角色,各角色功能如下:
- 裁判用户功能
- 注册登录:裁判可以通过注册成为系统用户,注册后需由管理员进行审核,审核通过后方可用账号密码登录。
- 首页:用户可以查看首页展示的轮播图、项目信息推荐、网站新闻等信息。
- 网站论坛:用户可以发布论坛和查看其他用户发表的论坛信息。用户可以查看论坛列表中某一论坛详情并可以点赞、收藏和评论,同时可以回复其他用户的评论信息。
- 网站公告:用户可以查看系统发布的网站公告、关于我们、联系方式、网站介绍等信息。
- 网站新闻:用户可以查看系统发布的新闻信息。点击新闻列表中某个新闻可以查看该新闻的详细并可以点赞、收藏和评论。
- 项目信息:的详细并可以点赞、收藏和评论。
- 项目信息:用户可以查看系统发布的所有项目信息,点击项目信息列表中某个项目可以查看该项目的详情并可以点赞、收藏和评论。
- 我的:用户点击我的头像的下拉菜单“我的账户”进入页面可以修改个人信息和登录密码,点击“个人中心”进入页面可以查看和管理个人首页、项目信息、项目类型、报名信息、成绩信息、网站论坛和收藏信息。;点击“退出”即可退出系统登录。
- 运动员用户功能
- 注册登录:运动员可以通过注册成为系统用户,注册后可以用账号密码登录。
- 首页:用户可以查看首页展示的轮播图、项目信息推荐、网站新闻等信息。
- 网站论坛:用户可以发布论坛和查看其他用户发表的论坛信息。用户可以查看论坛列表中某一论坛详情并可以点赞、收藏和评论,同时可以回复其他用户的评论信息。
- 网站公告:用户可以查看系统发布的网站公告、关于我们、联系方式、网站介绍等信息。
- 网站新闻:用户可以查看系统发布的新闻信息。点击新闻列表中某个新闻可以查看该新闻的详细并可以点赞、收藏和评论。
- 项目信息:用户可以查看系统发布的所有项目信息,点击项目信息列表中某个项目可以查看该项目的详情并可以报名、点赞、收藏和评论。
- 我的:用户点击我的头像的下拉菜单“我的账户”进入页面可以修改个人信息和登录密码,点击“个人中心”进入页面可以查看和管理个人首页、报名信息、成绩信息、网站论坛和收藏信息;点击“退出”即可退出系统登录。
- 管理员功能
- 登录:管理员可以通过在后台输入正确的账号和密码进行登录。
- 后台首页:管理员可以查看后台首页展示的相关信息。
- 系统用户:管理员负责对新注册的裁判用户的审核,可以对系统用户信息进行增删改查操作。
- 项目信息管理:管理员可以添加新的项目信息,可以对已有的项目信息进行查询、重置和删除操作。
- 项目类型管理:管理员可以添加新的项目类型信息,可以对已有的项目类型进行查询、重置和删除操作。
- 报名信息管理:管理员可以查看报名信息列表中某个运动员的报名信息详情和成绩记录信息,可以对报名信息进行查询、重置和删除操作。
- 成绩信息管理:管理员可以查看成绩信息列表中某个运动员的某个项目的成绩信息详情,可以对成绩信息进行查询、重置和删除操作。
- 系统管理:管理员可以查看所有轮播图信息,可以对系统轮播图信息进行增删改查操作。
- 网站公告管理:管理员可以查看所有网站公告信息,可以对网站公告信息进行增删改查操作。
- 资源管理:在资源管理界面,可以对网站新闻和新闻分类信息进行增删改查操作。
- 交流管理:在交流管理界面,管理员可以对网站论坛、论坛分类信息进行增删改查操作。
- 我的:管理员可以修改个人信息和登录密码;可以浏览网站首页;点击“退出”即可退出系统的登录。
2.5 系统用例分析
通过2.3的角色分析,得出了本基于Spring Boot的高校运动会竞赛管理系统的用例图:
裁判用户角色用例图如下图2-3所示。
图2-3 裁判用户角色用例图
运动员用户角色用例图如下图2-4所示。
图2-4运动员用户户角色用例图
管理员角色用例图如下图2-5所示。
图2-5 管理员角色用例图
2.6本章小结
本章主要通过对基于Spring Boot的高校运动会竞赛管理系统的可行性分析、流程分析、系统角色分析、系统用例分析,确定整个系统要实现的功能。同时也为基于Spring Boot的高校运动会竞赛管理系统的代码实现和测试提供了标准。
本章主要讨论的内容包括基于Spring Boot的高校运动会竞赛管理系统的架构设计、结构设计、数据库系统设计。
3.1 系统架构设计
本基于Spring Boot的高校运动会竞赛管理系统从架构上分为三层:表现层(UI)、业务逻辑层(BLL)以及数据层(DL)。
图3-1 系统架构设计图
表现层(UI):又称UI层,主要完成本系统的UI交互功能,一个良好的UI可以打打提高用户的用户体验,增强用户使用本系统时的舒适度。UI的界面设计也要适应不同版本的系统以及不同尺寸的分辨率,以做到良好的兼容性。UI交互功能要求合理,用户进行交互操作时必须要得到与之相符的交互结果,这就要求表现层要与业务逻辑层进行良好的对接。
业务逻辑层(BLL):主要完成本系统的数据处理功能。用户从表现层传输过来的数据经过业务逻辑层进行处理交付给数据层,系统从数据层读取的数据经过业务逻辑层进行处理交付给表现层。
数据层(DL):由于本系统的数据是放在服务端的MySQL数据库中,因此本属于服务层的部分可以直接整合在业务逻辑层中,所以数据层中只有数据库,其主要完成本基于Spring Boot的高校运动会竞赛管理系统的数据存储和管理功能。
整个系统是由多个功能模块组合而成的,要将所有的功能模块都一一列举出来,然后进行逐个的功能设计,使得每一个模块都有相对应的功能设计,然后进行系统整体的设计。基于Spring Boot的高校运动会竞赛管理系统结构图如图3-2所示。
图3-2 系统结构图
3.3 数据库设计
数据库可以说是所有软件的根本,如果数据库存在缺陷,那么会导致系统开发的不顺利、维护困难、用户使用不顺畅等一系列问题,严重时将会直接损害企业的利益,同时在开发完成后,数据库缺陷也更加难以解决。所以必须要对数据库设计重点把握,做到认真细致。因此,数据库设计是基于Spring Boot的高校运动会竞赛管理系统的重点要素。
3.3.1 数据库概念结构设计
下面是整个基于Spring Boot的高校运动会竞赛管理系统中主要的数据库表总E-R实体关系图。
图3-3 系统总E-R关系图
3.3.2 数据库表设计
将数据库概念设计的E-R图转换为关系数据库。在关系数据库中,数据关系由数据表组成,但是表的结构表现在表的字段上。本系统的主要数据库表如下所示:
表access_token (登陆访问时长)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | token_id | int | 10 | 0 | N | Y | 临时访问牌ID | |
2 | token | varchar | 64 | 0 | Y | N | 临时访问牌 | |
3 | info | text | 65535 | 0 | Y | N | ||
4 | maxage | int | 10 | 0 | N | N | 2 | 最大寿命:默认2小时 |
5 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
6 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
7 | user_id | int | 10 | 0 | N | N | 0 | 用户编号: |
表article (文章:用于内容管理系统的文章)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | article_id | mediumint | 8 | 0 | N | Y | 文章id:[0,8388607] | |
2 | title | varchar | 125 | 0 | N | Y | 标题:[0,125]用于文章和html的title标签中 | |
3 | type | varchar | 64 | 0 | N | N | 0 | 文章分类:[0,1000]用来搜索指定类型的文章 |
4 | hits | int | 10 | 0 | N | N | 0 | 点击数:[0,1000000000]访问这篇文章的人次 |
5 | praise_len | int | 10 | 0 | N | N | 0 | 点赞数 |
6 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
7 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
8 | source | varchar | 255 | 0 | Y | N | 来源:[0,255]文章的出处 | |
9 | url | varchar | 255 | 0 | Y | N | 来源地址:[0,255]用于跳转到发布该文章的网站 | |
10 | tag | varchar | 255 | 0 | Y | N | 标签:[0,255]用于标注文章所属相关内容,多个标签用空格隔开 | |
11 | content | longtext | 2147483647 | 0 | Y | N | 正文:文章的主体内容 | |
12 | img | varchar | 255 | 0 | Y | N | 封面图 | |
13 | description | text | 65535 | 0 | Y | N | 文章描述 |
表article_type (文章分类)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | type_id | smallint | 5 | 0 | N | Y | 分类ID:[0,10000] | |
2 | display | smallint | 5 | 0 | N | N | 100 | 显示顺序:[0,1000]决定分类显示的先后顺序 |
3 | name | varchar | 16 | 0 | N | N | 分类名称:[2,16] | |
4 | father_id | smallint | 5 | 0 | N | N | 0 | 上级分类ID:[0,32767] |
5 | description | varchar | 255 | 0 | Y | N | 描述:[0,255]描述该分类的作用 | |
6 | icon | text | 65535 | 0 | Y | N | 分类图标: | |
7 | url | varchar | 255 | 0 | Y | N | 外链地址:[0,255]如果该分类是跳转到其他网站的情况下,就在该URL上设置 | |
8 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
9 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
表athlete_users (运动员用户)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | athlete_users_id | int | 10 | 0 | N | Y | 运动员用户ID | |
2 | user_name | varchar | 64 | 0 | Y | N | 用户姓名 | |
3 | class_name | varchar | 64 | 0 | Y | N | 班级名称 | |
4 | college_name | varchar | 64 | 0 | Y | N | 学院名称 | |
5 | mobile_phone_number | varchar | 16 | 0 | Y | N | 手机号码 | |
6 | examine_state | varchar | 16 | 0 | N | N | 已通过 | 审核状态 |
7 | user_id | int | 10 | 0 | N | N | 0 | 用户ID |
8 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
9 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表auth (用户权限管理)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | auth_id | int | 10 | 0 | N | Y | 授权ID: | |
2 | user_group | varchar | 64 | 0 | Y | N | 用户组: | |
3 | mod_name | varchar | 64 | 0 | Y | N | 模块名: | |
4 | table_name | varchar | 64 | 0 | Y | N | 表名: | |
5 | page_title | varchar | 255 | 0 | Y | N | 页面标题: | |
6 | path | varchar | 255 | 0 | Y | N | 路由路径: | |
7 | position | varchar | 32 | 0 | Y | N | 位置: | |
8 | mode | varchar | 32 | 0 | N | N | _blank | 跳转方式: |
9 | add | tinyint | 3 | 0 | N | N | 1 | 是否可增加: |
10 | del | tinyint | 3 | 0 | N | N | 1 | 是否可删除: |
11 | set | tinyint | 3 | 0 | N | N | 1 | 是否可修改: |
12 | get | tinyint | 3 | 0 | N | N | 1 | 是否可查看: |
13 | field_add | text | 65535 | 0 | Y | N | 添加字段: | |
14 | field_set | text | 65535 | 0 | Y | N | 修改字段: | |
15 | field_get | text | 65535 | 0 | Y | N | 查询字段: | |
16 | table_nav_name | varchar | 500 | 0 | Y | N | 跨表导航名称: | |
17 | table_nav | varchar | 500 | 0 | Y | N | 跨表导航: | |
18 | option | text | 65535 | 0 | Y | N | 配置: | |
19 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
20 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
表collect (收藏)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | collect_id | int | 10 | 0 | N | Y | 收藏ID: | |
2 | user_id | int | 10 | 0 | N | N | 0 | 收藏人ID: |
3 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
4 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
5 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
6 | title | varchar | 255 | 0 | Y | N | 标题: | |
7 | img | varchar | 255 | 0 | Y | N | 封面: | |
8 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
9 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
表comment (评论)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | comment_id | int | 10 | 0 | N | Y | 评论ID: | |
2 | user_id | int | 10 | 0 | N | N | 0 | 评论人ID: |
3 | reply_to_id | int | 10 | 0 | N | N | 0 | 回复评论ID:空为0 |
4 | content | longtext | 2147483647 | 0 | Y | N | 内容: | |
5 | nickname | varchar | 255 | 0 | Y | N | 昵称: | |
6 | avatar | varchar | 255 | 0 | Y | N | 头像地址:[0,255] | |
7 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
8 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
9 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
10 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
11 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
表forum (论坛)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | forum_id | mediumint | 8 | 0 | N | Y | 论坛id | |
2 | display | smallint | 5 | 0 | N | N | 100 | 排序 |
3 | user_id | mediumint | 8 | 0 | N | N | 0 | 用户ID |
4 | nickname | varchar | 16 | 0 | Y | N | 昵称:[0,16] | |
5 | praise_len | int | 10 | 0 | Y | N | 0 | 点赞数 |
6 | hits | int | 10 | 0 | N | N | 0 | 访问数 |
7 | title | varchar | 125 | 0 | N | N | 标题 | |
8 | keywords | varchar | 125 | 0 | Y | N | 关键词 | |
9 | description | varchar | 255 | 0 | Y | N | 描述 | |
10 | url | varchar | 255 | 0 | Y | N | 来源地址 | |
11 | tag | varchar | 255 | 0 | Y | N | 标签 | |
12 | img | text | 65535 | 0 | Y | N | 封面图 | |
13 | content | longtext | 2147483647 | 0 | Y | N | 正文 | |
14 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
15 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
16 | avatar | varchar | 255 | 0 | Y | N | 发帖人头像: | |
17 | type | varchar | 64 | 0 | N | N | 0 | 论坛分类:[0,1000]用来搜索指定类型的论坛帖 |
表forum_type (论坛分类)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | type_id | smallint | 5 | 0 | N | Y | 分类ID:[0,10000] | |
2 | name | varchar | 16 | 0 | N | N | 分类名称:[2,16] | |
3 | description | varchar | 255 | 0 | Y | N | 描述:[0,255]描述该分类的作用 | |
4 | url | varchar | 255 | 0 | Y | N | 外链地址:[0,255]如果该分类是跳转到其他网站的情况下,就在该URL上设置 | |
5 | father_id | smallint | 5 | 0 | N | N | 0 | 上级分类ID:[0,32767] |
6 | icon | varchar | 255 | 0 | Y | N | 分类图标: | |
7 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
8 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
表notice (公告)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | notice_id | mediumint | 8 | 0 | N | Y | 公告id: | |
2 | title | varchar | 125 | 0 | N | N | 标题: | |
3 | content | longtext | 2147483647 | 0 | Y | N | 正文: | |
4 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
5 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
表praise (点赞)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | praise_id | int | 10 | 0 | N | Y | 点赞ID: | |
2 | user_id | int | 10 | 0 | N | N | 0 | 点赞人: |
3 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
4 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
5 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
6 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
7 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
8 | status | bit | 1 | 0 | N | N | 1 | 点赞状态:1为点赞,0已取消 |
表project_information (项目信息)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | project_information_id | int | 10 | 0 | N | Y | 项目信息ID | |
2 | entry_name | varchar | 64 | 0 | Y | N | 项目名称 | |
3 | project_cover | varchar | 255 | 0 | Y | N | 项目封面 | |
4 | project_type | varchar | 64 | 0 | Y | N | 项目类型 | |
5 | competition_venue | varchar | 64 | 0 | Y | N | 比赛场地 | |
6 | competition_date | datetime | 19 | 0 | Y | N | 比赛日期 | |
7 | registration_time | varchar | 64 | 0 | Y | N | 报名时间 | |
8 | project_details | longtext | 2147483647 | 0 | Y | N | 项目详情 | |
9 | praise_len | int | 10 | 0 | N | N | 0 | 点赞数 |
10 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
11 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表project_type (项目类型)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | project_type_id | int | 10 | 0 | N | Y | 项目类型ID | |
2 | project_type | varchar | 64 | 0 | Y | N | 项目类型 | |
3 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
4 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表referee_users (裁判用户)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | referee_users_id | int | 10 | 0 | N | Y | 裁判用户ID | |
2 | judges_name | varchar | 64 | 0 | Y | N | 裁判姓名 | |
3 | mobile_phone_number | varchar | 64 | 0 | Y | N | 手机号码 | |
4 | application_materials | varchar | 255 | 0 | Y | N | 申请材料 | |
5 | examine_state | varchar | 16 | 0 | N | N | 未审核 | 审核状态 |
6 | user_id | int | 10 | 0 | N | N | 0 | 用户ID |
7 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
8 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表registration_information (报名信息)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | registration_information_id | int | 10 | 0 | N | Y | 报名信息ID | |
2 | athlete_users | int | 10 | 0 | Y | N | 0 | 运动员用户 |
3 | user_name | varchar | 64 | 0 | Y | N | 用户姓名 | |
4 | mobile_phone_number | varchar | 16 | 0 | Y | N | 手机号码 | |
5 | entry_name | varchar | 64 | 0 | Y | N | 项目名称 | |
6 | project_type | varchar | 64 | 0 | Y | N | 项目类型 | |
7 | competition_venue | varchar | 64 | 0 | Y | N | 比赛场地 | |
8 | competition_date | datetime | 19 | 0 | Y | N | 比赛日期 | |
9 | registration_remarks | text | 65535 | 0 | Y | N | 报名备注 | |
10 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
11 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表score_center (成绩中心)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | score_center_id | int | 10 | 0 | N | Y | 成绩中心ID | |
2 | athlete_users | int | 10 | 0 | Y | N | 0 | 运动员用户 |
3 | user_name | varchar | 64 | 0 | Y | N | 用户姓名 | |
4 | players_demeanor | varchar | 255 | 0 | Y | N | 选手风采 | |
5 | entry_name | varchar | 64 | 0 | Y | N | 项目名称 | |
6 | project_type | varchar | 64 | 0 | Y | N | 项目类型 | |
7 | competition_date | datetime | 19 | 0 | Y | N | 比赛日期 | |
8 | personal_achievements | varchar | 64 | 0 | Y | N | 个人成绩 | |
9 | ranking_of_grades | int | 10 | 0 | Y | N | 0 | 成绩排名 |
10 | praise_len | int | 10 | 0 | N | N | 0 | 点赞数 |
11 | examine_state | varchar | 16 | 0 | N | N | 未审核 | 审核状态 |
12 | examine_reply | varchar | 16 | 0 | Y | N | 审核回复 | |
13 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
14 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
表slides (轮播图)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | slides_id | int | 10 | 0 | N | Y | 轮播图ID: | |
2 | title | varchar | 64 | 0 | Y | N | 标题: | |
3 | content | varchar | 255 | 0 | Y | N | 内容: | |
4 | url | varchar | 255 | 0 | Y | N | 链接: | |
5 | img | varchar | 255 | 0 | Y | N | 轮播图: | |
6 | hits | int | 10 | 0 | N | N | 0 | 点击量: |
7 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
8 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
表upload (文件上传)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | upload_id | int | 10 | 0 | N | Y | 上传ID | |
2 | name | varchar | 64 | 0 | Y | N | 文件名 | |
3 | path | varchar | 255 | 0 | Y | N | 访问路径 | |
4 | file | varchar | 255 | 0 | Y | N | 文件路径 | |
5 | display | varchar | 255 | 0 | Y | N | 显示顺序 | |
6 | father_id | int | 10 | 0 | Y | N | 0 | 父级ID |
7 | dir | varchar | 255 | 0 | Y | N | 文件夹 | |
8 | type | varchar | 32 | 0 | Y | N | 文件类型 |
表user (用户账户:用于保存用户登录信息)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | user_id | mediumint | 8 | 0 | N | Y | 用户ID:[0,8388607]用户获取其他与用户相关的数据 | |
2 | state | smallint | 5 | 0 | N | N | 1 | 账户状态:[0,10](1可用|2异常|3已冻结|4已注销) |
3 | user_group | varchar | 32 | 0 | Y | N | 所在用户组:[0,32767]决定用户身份和权限 | |
4 | login_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 上次登录时间: |
5 | phone | varchar | 11 | 0 | Y | N | 手机号码:[0,11]用户的手机号码,用于找回密码时或登录时 | |
6 | phone_state | smallint | 5 | 0 | N | N | 0 | 手机认证:[0,1](0未认证|1审核中|2已认证) |
7 | username | varchar | 16 | 0 | N | N | 用户名:[0,16]用户登录时所用的账户名称 | |
8 | nickname | varchar | 16 | 0 | Y | N | 昵称:[0,16] | |
9 | password | varchar | 64 | 0 | N | N | 密码:[0,32]用户登录所需的密码,由6-16位数字或英文组成 | |
10 | | varchar | 64 | 0 | Y | N | 邮箱:[0,64]用户的邮箱,用于找回密码时或登录时 | |
11 | email_state | smallint | 5 | 0 | N | N | 0 | 邮箱认证:[0,1](0未认证|1审核中|2已认证) |
12 | avatar | varchar | 255 | 0 | Y | N | 头像地址:[0,255] | |
13 | open_id | varchar | 255 | 0 | Y | N | 针对获取用户信息字段 | |
14 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
15 | vip_level | varchar | 255 | 0 | Y | N | 会员等级 | |
16 | vip_discount | double | 11 | 2 | Y | N | 0.00 | 会员折扣 |
表user_group (用户组:用于用户前端身份和鉴权)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | group_id | mediumint | 8 | 0 | N | Y | 用户组ID:[0,8388607] | |
2 | display | smallint | 5 | 0 | N | N | 100 | 显示顺序:[0,1000] |
3 | name | varchar | 16 | 0 | N | N | 名称:[0,16] | |
4 | description | varchar | 255 | 0 | Y | N | 描述:[0,255]描述该用户组的特点或权限范围 | |
5 | source_table | varchar | 255 | 0 | Y | N | 来源表: | |
6 | source_field | varchar | 255 | 0 | Y | N | 来源字段: | |
7 | source_id | int | 10 | 0 | N | N | 0 | 来源ID: |
8 | register | smallint | 5 | 0 | Y | N | 0 | 注册位置: |
9 | create_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间: |
10 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间: |
3.4本章小结
整个基于Spring Boot的高校运动会竞赛管理系统的需求分析主要对系统总体架构以及功能模块的设计,通过建立E-R模型和数据库逻辑系统设计完成了数据库系统设计。
4 系统实现
4.1用户注册登录模块
4.1.1 用户注册界面
用户右上角“注册”按钮进入注册页面填写账号、密码、确认密码、昵称、邮箱、身份等信息后点击“注册”按钮,系统会对输入的信息进行验证,验证通过后即可完成注册。其中裁判用户注册后需由管理员进行审核,审核通过后方可使用账号密码登录。其界面展示如下图4-1所示。
图4-1 用户注册界面图
用户注册的关键代码如下:
/**
* 注册
* @param user
* @return
*/
@PostMapping("register")
public Map<String, Object> signUp(@RequestBody User user) {
// 查询用户
Map<String, String> query = new HashMap<>();
Map<String,Object> map = JSON.parseObject(JSON.toJSONString(user));
query.put("username",user.getUsername());
List list = service.selectBaseList(service.select(query, new HashMap<>()));
if (list.size()>0){
return error(30000, "用户已存在");
}
map.put("password",service.encryption(String.valueOf(map.get("password"))));
service.insert(map);
return success(1);
}
4.1.3 用户登录界面
用户注册后可以通过自己的账户名和密码进行登录的,当用户输入完整的自己的账户名和密码信息并点击“登录”按钮后,系统会对输入的信息进行验证,验证通过后即可完成登录,其界面如下图4-2所示。
图4-2用户登录界面图
用户登录关键代码如下:
/**
* 登录
* @param data
* @param httpServletRequest
* @return
*/
@PostMapping("login")
public Map<String, Object> login(@RequestBody Map<String, String> data, HttpServletRequest httpServletRequest) {
log.info("[执行登录接口]");
String username = data.get("username");
String email = data.get("email");
String phone = data.get("phone");
String password = data.get("password");
List resultList = null;
Map<String, String> map = new HashMap<>();
if(username != null && "".equals(username) == false){
map.put("username", username);
resultList = service.selectBaseList(service.select(map, new HashMap<>()));
}
else if(email != null && "".equals(email) == false){
map.put("email", email);
resultList = service.selectBaseList(service.select(map, new HashMap<>()));
}
else if(phone != null && "".equals(phone) == false){
map.put("phone", phone);
resultList = service.selectBaseList(service.select(map, new HashMap<>()));
}else{
return error(30000, "账号或密码不能为空");
}
if (resultList == null || password == null) {
return error(30000, "账号或密码不能为空");
}
//判断是否有这个用户
if (resultList.size()<=0){
return error(30000,"用户不存在");
}
User byUsername = (User) resultList.get(0);
Map<String, String> groupMap = new HashMap<>();
groupMap.put("name",byUsername.getUserGroup());
List groupList = userGroupService.selectBaseList(userGroupService.select(groupMap, new HashMap<>()));
if (groupList.size()<1){
return error(30000,"用户组不存在");
}
UserGroup userGroup = (UserGroup) groupList.get(0);
//查询用户审核状态
if (!StringUtils.isEmpty(userGroup.getSourceTable())){
String res = service.selectExamineState(userGroup.getSourceTable(),byUsername.getUserId());
if (res==null){
return error(30000,"用户不存在");
}
if (!res.equals("已通过")){
return error(30000,"该用户审核未通过");
}
}
//查询用户状态
if (byUsername.getState()!=1){
return error(30000,"用户非可用状态,不能登录");
}
String md5password = service.encryption(password);
if (byUsername.getPassword().equals(md5password)) {
// 存储Token到数据库
AccessToken accessToken = new AccessToken();
accessToken.setToken(UUID.randomUUID().toString().replaceAll("-", ""));
accessToken.setUser_id(byUsername.getUserId());
Duration duration = Duration.ofSeconds(7200L);
redisTemplate.opsForValue().set(accessToken.getToken(), accessToken,duration);
// 返回用户信息
JSONObject user = JSONObject.parseObject(JSONObject.toJSONString(byUsername));
user.put("token", accessToken.getToken());
JSONObject ret = new JSONObject();
ret.put("obj",user);
return success(ret);
} else {
return error(30000, "账号或密码不正确");
}
}
4.2.1 前台首页界面
系统首页以上中下的布局进行展示,正上方是系统的导航栏,中间是轮播图,下面是网站公告、项目信息推荐、网站新闻等信息,其主界面展示如下图4-3所示。
图4-3 前台首页界面图
4.2.2个人中心界面
用户点击我的头像的下拉菜单“个人中心”进入页面可以查看和管理个人首页、项目信息、项目类型、报名信息、成绩信息、网站论坛和收藏信息。点击“报名信息”进入页面可以查看列表中某个运动员的报名详情,参加比赛后点击“成绩记录”可以提交该运动员的成绩信息。可以对项目信息、报名信息、成绩信息进行增删改查操作;可以添加或删除项目类型信息;可以添加、查询和删除网站论坛信息;可以查看或删除收藏列表信息。其界面如下图4-4所示。
图4-4 个人中心界面图
添加的代码如下:
@PostMapping("/add")
@Transactional
public Map<String, Object> add(HttpServletRequest request) throws IOException {
service.insert(service.readBody(request.getReader()));
return success(1);
}
public Map<String, Object> addMap(Map<String,Object> map){
service.insert(map);
return success(1);
}
删除的代码如下:
@RequestMapping(value = "/del")
@Transactional
public Map<String, Object> del(HttpServletRequest request) {
service.delete(service.readQuery(request), service.readConfig(request));
return success(1);
}
public void delete(Map<String,String> query,Map<String,String> config){
QueryWrapper wrapper = new QueryWrapper<E>();
toWhereWrapper(query, "0".equals(config.get(FindConfig.GROUP_BY)),wrapper);
baseMapper.delete(wrapper);
log.info("[{}] - 删除操作:{}",wrapper.getSqlSelect());
}
4.3.1 网站论坛界面
用户可以发布论坛和查看其他用户发表的论坛信息。用户可以查看论坛列表中某一论坛详情并可以点赞、收藏和评论,同时可以回复其他用户的评论信息;点击“发布内容”进入页面填写标题、分类、正文等信息后点击“提交”即可完成论坛的发布。其界面如下图4-5所示。
图4-5网站论坛界面图
4.3.2 网站新闻界面
用户可以查看系统发布的新闻信息。点击新闻列表中某个新闻可以查看该新闻的详细并可以点赞、收藏和评论。其界面如图4-6所示。
图4-6 网站新闻界面图
用户可以查看系统发布的所有项目信息,点击项目信息列表中某个项目可以查看该项目的详情并可以报名、点赞、收藏和评论。点击详情下方的“我要报名”进入页面后填写报名备注并确认报名信息点击“提交”即可完成该项目的报名。其界面如下图4-7所示:
图4-7 项目信息界面图
4.3.4 个人中心界面
用户点击我的头像的下拉菜单“个人中心”进入页面可以查看和管理个人首页、报名信息、成绩信息、网站论坛和收藏信息。可以查看报名信息列表中某个项目的报名详情,可以的对报名信息进行查询、重置和添加操作;可以查看成绩信息列表中某个项目的成绩详情;可以查看论坛列表中某个论坛的详情和评论信息,可以查询、重置和删除论坛信息;可以查询和重置成绩信息;其界面如下图4-8所示:
图4-8 个人中心界面图
4.4管理员功能模块
4.4.1 系统用户界面
管理员可以查看所有系统用户的信息,同时负责对新注册的裁判用户信息进行审核。可以对系统用户(管理员、裁判用户、运动员用户)信息进行增删改查操作。其界面如下图4-9所示。
图4-9系统用户界面图
管理员可以添加新的项目信息,可以查看项目信息列表中某个项目的详情和评论信息,可以对列表信息进行查询、重置和删除操作。其界面如下图4-10所示。
图4-10项目信息管理界面图
管理员可以查看报名信息列表中某个运动员的报名信息详情和成绩记录信息,可以对报名信息进行查询、重置和删除操作。其界面如下图4-11所示。
图4-11报名信息管理界面图
管理员可以查看成绩信息列表中某个运动员的某个项目的成绩信息详情,可以对成绩信息进行查询、重置和删除操作。其界面如下图4-12所示。
图4-12成绩信息管理界面图
4.4.5系统管理界面
在系统管理界面,管理员可以查看所有轮播图信息,可以对系统轮播图信息进行增删改查操作。其界面如下图4-13所示。
图4-13系统管理界面图
轮播图上传的关键代码如下:
@PostMapping("/upload")
public Map<String, Object> upload(@RequestParam("file") MultipartFile file) {
log.info("进入方法");
if (file.isEmpty()) {
return error(30000, "没有选择文件");
}
try {
//判断有没路径,没有则创建
String filePath = System.getProperty("user.dir") + "/src/main/resources/static/";
File targetDir = new File(filePath);
if (!targetDir.exists() && !targetDir.isDirectory()) {
if (targetDir.mkdirs()) {
log.info("创建目录成功");
} else {
log.error("创建目录失败");
}
}
String fileName = file.getOriginalFilename();
File dest = new File(filePath + fileName);
log.info("文件路径:{}", dest.getPath());
log.info("文件名:{}", dest.getName());
file.transferTo(dest);
JSONObject jsonObject = new JSONObject();
jsonObject.put("url", "/api/upload/" + fileName);
return success(jsonObject);
} catch (IOException e) {
log.info("上传失败:{}", e.getMessage());
}
return error(30000, "上传失败");
}
管理员可以查看所有网站公告信息,可以对网站公告信息进行增删改查操作。其界面如下图4-14所示。
图4-4网站公告管理界面图
4.4.7资源管理界面
在资源管理界面,管理员对网站新闻和新闻分类信息进行管理。管理员可以查看网站新闻列表中某个新闻的详情和评论信息,可以对网站新闻和新闻分类信息进行增删改查操作。其界面如下图4-15所示。
图4-15资源管理界面图
4.4.8交流管理界面
在交流管理界面,管理员对网站论坛和论坛分类进行管理。管理员可以查看网站论坛列表中某一论坛的详情和评论信息,可以对网站论坛、论坛分类信息进行增删改查操作。其界面如下图4-16所示。
测试存在于软件开发进程中的最后一个阶段,它可以保证一个软件的开发质量是否符合设计者的初衷,也为程序的正式上线做了最后一道质量检测的工序。软件测试主要是控制各种条件、包括软件输出方式,使用模式和运行环境等,来评估一个系统或应用是否符合设计标准。在软件测试过程中,我们一般刻意的去制造错误和极端条件,不能仅依照正常模式允许,而是多去尝试那些意外的情况。
只有在运行和维护阶段之前经历大量的测试的软件,才能说明它的质量是经得起检验的。最近计算机业界也都一致认为,测试应该存在于软件设计的每个阶段,因为越早发现错误,修复起来就越容易。
实际上,对于一个软件应用,错误是必然存在的,无论使用何种技术或手段,都不可能绝对的排除软件漏洞。测试是随着软件开发一同诞生的,两者是共同发展进步的。实际上,测试可以大幅度的降低维护的成本,如果一个漏洞在开发的早期就被发现,那么修复它的成本远比上线后再修复的成本要低得多。
测试有白盒测试和黑盒测试两种方式。
其中,白盒测试是将软件看成一个透明的白盒子,按照程序的内部控制结构和处理技术逻辑来选定测试用例、软件系统测试的逻辑路径及过程需要进行管理测试,又称玻璃盒测试。因此白盒测试需要选择足够多的测试用例,覆盖尽可能多的代码来发现程序中的错误。
黑盒测试,也称为功能测试。它将需软件看作一个黑盒,像一个普通用户一样来模拟软件的使用流程。黑盒测试通过大量的输入边界值或错误数据,来检查是否可产生正确的输出。
本系统测试 主要选择黑盒测试,少量采用白盒测试。通过测试达到以下测试目的:
1.检查各大功能模块的运行,确保其能够正确运行,并检查各页面的完整性,保证页面完整。
2.检查各个接口是否可以正确地输入和输出,保证数据流通稳定可行。
3.检查数据结构,保证其和外部接口没有访问错误,访问顺利。
4.检查原计划的性能需求有没有完成,运行流畅。
本系统的测试用例(部分):
登录部分测试用例 | |||||
编号 | 对象 | 项目 | 操作 | 预期结果 | 结果 |
1 | 登录 | 登录提示 | 使用正确的账号密码登录 | 成功登录 | 预期结果 |
2 | 登录提示 | 使用正确的账号但错误的密码登录 | 提示密码错误 | 预期结果 | |
3 | 登录提示 | 使用错误的账号登录 | 提示不存在账户 | 预期结果 | |
4 | 登录提示 | 不输入账号,点击登录 | 提示输入账号 | 预期结果 | |
5 | 登录提示 | 输入账号但不输入密码点击登录 | 提示输入密码 | 预期结果 | |
6 | 登录入口 | 已登录账号,查看登录入口 | 不显示登录入口 | 预期结果 |
处理器:Inter Core I7-4710MQ四核处理器
内存:4GB
硬盘:1T
操作系统:Windows 10
数据库:MySQL
全部测试用例都已通过(包括但不限于以上测试用例),且不存在漏洞,实现了论文开始时所作要求。本系统运行稳定,使用流畅,可以满足客户需求。
试运行后进行系统评估,可以认为该系统达到预定的目标要求,可以满足用户的需求,也满足了系统开发前所作目标。
系统在经过大量重复测试后运行十分稳定,安全实用,功能模块已经达到预定目标所需。
在规定的时间内实现系统的大部分功能,且满足要求,节省开发成本,符合本人经济情况。
第6章 总结
随着计算机互联网技术的迅猛发展,各行各业都已经实现采用计算机相关技术对日益放大的数据进行管理。该课题是基于Spring Boot的高校运动会竞赛管理系统以交流为核心展开的。本研究针对基于Spring Boot的高校运动会竞赛管理系统需求建模,数据建模及过程建模分析设计并实现程序研究的过程。给出系统应用架构并分析优劣势,通过功能分解图,系统组件图描述功能需求。设计建立了数据库,给出系统关键数据结构的定义。通过类关系图描述组件间的协作关系,给出各个类的定义方法。通过描述每一个类的字段,属性及方法实现系统的前后端代码。最终给出系统集成整合方法,完成基于Spring Boot的高校运动会竞赛管理系统的设计与实现。投入运行时,各功能均运行正常。系统的每个界面的操作符合常规逻辑,对使用者来说操作简单,界面友好。整个系统的各个功能设计合理,体现了人性化。
但是由于自己在系统开发过程中对一些用到的相关知识和技术掌握不够牢固,再加上自身开发经验欠缺,系统可能在有些方面的功能还不够完善,考虑的不够全面,因此整个系统还有待日后逐步完善。
[1]唐苏旭.基于SpringBoot的房屋租赁系统的设计与实现[D].首都经济贸易大学,2021.
[2]郭旭,张洁,李光军.基于ASP.NET的智慧校园运动会编排与成绩管理系统设计[J].电脑编程技巧与维护,2023,(07):104-106.
[3]石炜桦.羽毛球比赛管理系统的功能需求分析与设计研究[D].广州体育学院,2023.
[4]朱焱,邓述为.基于Java的基于Spring Boot的高校运动会竞赛管理系统[J].电脑编程技巧与维护,2022,(12):84-86.
[5]Hao Y .Retraction Note: Platform Design of Sports Meeting Management System for Regular Colleges and Universities Based on B/S Structure[J].Wireless Personal Communications,2022,128(2):1517-1517.
[6]Yang Y .Design and Implementation of Student Information Management System Based on Spring boot[J].Advances in Computer, Signals and Systems,2022,6(6):
[7]易方洲.线上比赛组织系统的设计与实现[D].北京邮电大学,2022.
[8]陈立.校园运动会管理系统的设计与实现[J].电子制作,2022,30(13):46-48.
[9]王波,胡伟涛.全员参与目标下高校运动会的探索性改革与实践研究[J].文体用品与科技,2022,(01):144-146.
[10]Daniela T K S ,Wanderley J M .Brazilian School Games: A globalized model for school sports policy[J].International Review for the Sociology of Sport,2021,56(6):897-916.
[11]Cheng F .Talent Recruitment Management System for Small and Micro Enterprises Based on Springboot Framework[J].Advances in Educational Technology and Psychology,2021,5(2):
[12]陈昭桦.高校运动会智能管理系统的设计与实现[D].华中师范大学,2021.
[13]张立威,王莉.河南省普通高校运动会开展现状的分析[J].当代体育科技,2021,11(08):198-200.
[14]焦龙.高校开展“全员运动会”的可行性分析[J].冰雪体育创新研究,2021,(03):96-96.
[15]J.R. L N ,Da P T J C ,Radu G , et al.A Logistics Management System for a Biomass-to-Energy Production Plant Storage Park[J].Energies,2020,13(20):5512-5512.
[16]王晓蓉.河南省普通高校运动会现状及对策研究[J].运动精品,2020,39(05):11-12.
[17]Liang C .School Vehicle Management System Based on JAVA Language[J].Academic Journal of Computing Information Science,2023,6(9):
[18]马庆.计算机软件开发中JAVA编程语言的应用[J].山西电子技术,2023,(06):84-86+98.
[19]熊群毓.大数据时代MySQL数据库的应用分析[J].信息与电脑(理论版),2023,35(14):209-212.
[20]张文.基于Spring Boot的国有企业固定资产信息管理系统的设计与实现[D].华东师范大学,2023.
大学生活在这个时候即将划上一个句号,但是对于我的人生道路来说,这仅仅是一个逗号,我将面对的是又一次征程的开始。
回忆过去,许许多多的事情浮现在脑海:刚上大学时欢乐心情和兴奋的场景还历历在目。一切都是那么新鲜,那么富有吸引力。有快乐也有艰辛,有收获也有失落。衷心感谢信息学院所有支持帮助过我的老师,谢谢你们多年来的关心和爱护。同窗的友情同样难忘,你们与我共同走过了人生中不平凡的道路,给我留下了值得珍藏的美好记忆。
最后,我要特别感谢指导基于Spring Boot的高校运动会竞赛管理系统设计的老师。本论文是在他的悉心指导和热情帮助下完成的,老师认真负责的工作态度,严谨的治学精神和精深的理论水平都使我受益匪浅。老师无论在理论上还是在实践中,都给予我很大的帮助,使我专业技能的应用水平得到很大提高,这对于我以后的工作和学习都有益处。值此论文完成之际,特别向老师表示衷心的感谢和崇高的敬意,谢谢他细心而又耐心地辅导,使得我得以顺利的完成毕业设计开发工作,同时也要感谢其他帮助过我的老师和同学,他们在我成长过程中给予了我很大的帮助,在此一并表示感谢。
由于本人水平有限,加上时间紧促,本文可能有不少缺点和不足,恳请各位老师给予帮助和指正。