springboot大学生竞赛管理系统-计算机毕业设计源码37276
摘 要
随着教育信息化的不断发展,大学生竞赛已成为高校教育的重要组成部分。传统的竞赛组织和管理方式存在着诸多问题,如信息不透明、效率低下、管理不便等。为了解决这些问题,提高竞赛组织和管理效率,本文设计并实现了一个基于Spring Boot的大学生竞赛管理系统。
这个系统旨在为大学生竞赛提供一个智能化、便捷化的管理平台,涵盖了竞赛分类管理、竞赛信息管理、报名信息管理、竞赛成绩管理和竞赛排名管理等功能。通过引入先进的技术和设计理念,本系统旨在为用户提供高效、便捷、安全的服务。本系统采用Spring Boot框架进行开发,具有高效性、可扩展性和安全性等特点。通过身份认证和权限管理机制,确保系统的安全性和可靠性。同时,系统还采用了加密技术、数据校验等安全措施,保障用户数据的安全。
总之,本文设计并实现了一个基于Spring Boot的大学生竞赛管理系统,涵盖了竞赛分类管理、竞赛信息管理、报名信息管理、竞赛成绩管理和竞赛排名管理等功能模块。该系统的研究成果对于提高大学生竞赛组织和管理效率具有重要意义,同时也为其他类似系统的开发提供了有益的参考和借鉴。
关键词:大学生竞赛管理系;Java编程语言;Spring Boot框
Design and Implementation of a College Student Competition Management System
Abstract
With the continuous development of educational informatization, college student competitions have become an important component of higher education. Traditional competition organization and management methods have many problems, such as information opacity, low efficiency, and inconvenient management. In order to address these issues and improve the efficiency of competition organization and management, this article designs and implements a college student competition management system based on Spring Boot.
This system aims to provide an intelligent and convenient management platform for college student competitions, covering functions such as competition classification management, competition information management, registration information management, competition score management, and competition ranking management. By introducing advanced technology and design concepts, this system aims to provide users with efficient, convenient, and secure services. This system is developed using the Spring Boot framework, which has the characteristics of efficiency, scalability, and security. Ensure the security and reliability of the system through identity authentication and permission management mechanisms. At the same time, the system also adopts security measures such as encryption technology and data verification to ensure the security of user data.
In summary, this article designs and implements a college student competition management system based on Spring Boot, covering functional modules such as competition classification management, competition information management, registration information management, competition score management, and competition ranking management. The research results of this system are of great significance for improving the efficiency of college student competition organization and management, and also provide useful reference and inspiration for the development of other similar systems.
Key words:College Student Competition Management Department; Java programming language; Spring Boot framework
目 录
第1章 绪论
1.1 研究背景与意义
1.2 国内外研究现状
1.3 论文组成结构
第2章 系统分析
2.1 可行性分析
2.1.1 技术可行性
2.1.2 经济可行性
2.1.3 操作可行性
2.2 需求分析
2.3 性能分析
2.4 用例分析
2.5 系统流程分析
第3章 系统设计
3.1 系统架构设计
3.2 系统功能结构
3.3 数据库设计
3.3.1 数据库E-R图设计
3.3.2 逻辑结构设计
第4章 系统实现
4.1 学生用户模块的实现
4.1.1 前台首页界面
4.1.2 用户注册界面
4.1.3 用户登录界面
4.1.4在线交流界面
4.1.5 竞赛信息界面
4.2 管理员功能模块的实现
4.2.1 管理员登录界面
4.2.2 管理员功能界面
4.2.3 系统用户管理界面
4.2.4竞赛分类管理界面
4.2.5 轮播图管理界面
4.3 教师用户模块的实现
4.3.1 学校新闻界面
4.3.2 报名信息界面
4.3.3 竞赛信息界面
第5章 系统测试
5.1 测试目的
5.2系统部分测试
5.2系统测试结果
第6章 总结
参考文献
致谢
随着高校学生参与课外活动的热情日益高涨,各类竞赛活动也越来越多。传统的竞赛管理方式往往效率低下,难以满足学生、管理员和教师用户等不同用户群体的多样化需求。因此,开发一款高效、便捷且用户友好的竞赛管理系统显得至关重要。
该系统旨在通过信息化手段,提高竞赛管理的效率和质量。传统的竞赛管理方式往往需要人工操作,不仅效率低下,而且容易出错。而大学生竞赛管理系统则提供了丰富的功能,包括活动报名、竞赛信息展示、在线交流、通知公告管理、学校新闻查看、个人信息管理等,这些功能可以帮助学生用户更加便捷地参与到竞赛活动中,并享受整个过程。
此外,该系统还有助于加强竞赛管理的规范化、透明化和公平性。通过系统记录和统计功能,可以方便地跟踪和管理竞赛的报名信息、成绩和排名等数据,有助于提高竞赛管理的科学性和准确性。同时,该系统还有助于加强用户之间的交流和互动,促进竞赛活动的推广和宣传。
总的来说,大学生竞赛管理系统研究具有重要的现实意义和价值。它不仅可以提高竞赛管理的效率和质量,还可以为学生提供更加丰富、多元、有趣的课外活动选择,促进他们的全面发展。通过不断优化和改进,我们相信该系统将成为高校课外活动管理的重要工具,为高校学生带来更好的服务体验。
国内方面,目前针对大学生竞赛管理系统的研究尚处于起步阶段,虽然有一些竞赛报名、成绩管理系统的实践应用,但整体上缺乏系统化、智能化、便捷化的管理平台。现有的竞赛报名、成绩管理系统主要针对个别竞赛或特定需求进行开发,功能较为单一,缺乏全面、智能的管理功能。同时,现有系统在性能、安全等方面还存在一些不足,如响应速度慢、数据泄露等,需要进一步改进和完善。此外,现有系统在用户界面、用户体验等方面也存在一些问题,需要提高易用性和友好性。
在国外方面,一些高校已经开发了较为成熟的大学生竞赛管理系统,具备智能化、便捷化的管理功能,如自动阅卷、成绩统计、排名管理等。这些系统通常由专业团队开发,采用先进的技术和设计理念,具有较高的性能和安全性。同时,这些系统在用户界面、用户体验等方面也做得比较好,使用户能够轻松地完成竞赛报名、成绩查询、排名查看等操作。这些系统的应用效果也得到了广泛认可,为高校竞赛组织和管理提供了新的解决方案。
综上所述,大学生竞赛管理系统的设计与实现是一个具有挑战性和发展潜力的研究领域。在国内,需要进一步深入研究和探索,开发出更加全面、智能、安全、易用的竞赛管理系统。在国际上,可以借鉴国外高校的成熟经验,引入先进的技术和设计理念,提高国内系统的性能和安全性,从而促进竞赛活动的健康发展。
根据市场调研得到的信息数据,结合国内外前沿研究,利用相关系统开发和设计方法,最终设计出大学生竞赛管理系统。
本文共有七章,如下所示。
第一章概述了大学生竞赛管理系统的研究背景和意义;精炼地总结了国内外研究情况和未来的研究趋势,最后给出了论文的组成结构。
第二章简要对系统各业务流程进行需求分析、可行性分析。
第三章对大学生竞赛管理系统进行设计。
第四章对大学生竞赛管理系统进行实现,并贴出相关页面截图,语言描述出具体功能实现的操作方法。
第五章对大学生竞赛管理系统采用测试用例的方式来对一些主要功能模块测试,最后得出测试结果。
第六章总结全文并对未来的研究做出展望。
在软件开发的过程中系统的可行性分析是必不可少的,可行性的研究就是评估问题是否能得到解决并且是要以最少的时间和最少的代价来解决。为实现上面的目标还要必须考虑到解决这些问题的方法的优点和缺点,还要考虑到实现了这些系统规模的开发带来的经济效益。这里可以用技术的可行性,操作的可行性,经济的可行性对我们的系统进行可行性的研究。大学生竞赛管理系统的可行性分析如下所示:
大学生竞赛管理系统的设计与实现Spring Boot具有技术可行性。Spring Boot是一个基于Java的开源框架,具有简单易用、高效灵活的特点,可以快速构建企业级应用程序。在大学生竞赛管理系统的开发中,可以利用Spring Boot框架的优势,简化开发流程,提高系统的运行效率。同时,通过引入身份认证、权限管理和成绩统计等关键技术,可以实现高效、便捷、安全的竞赛组织和管理。因此,从技术角度来看,大学生竞赛管理系统的设计与实现Spring Boot具有可行性。
大学生竞赛管理系统的设计与实现Spring Boot具有经济可行性。该系统的开发成本可以通过利用开源框架和组件来降低,从而节省开发时间和成本。该系统还可以提供高效、便捷、安全的服务,提高竞赛组织和管理效率,从而减少人工干预和错误,降低管理成本。因此,从经济角度来看,大学生竞赛管理系统的设计与实现Spring Boot具有可行性。
本系统是基于浏览器和服务器的大学生竞赛管理系统,系统开发完成之后用户只需要在浏览器中输入正确的URL地址即可进行访问。本系统的前台页面简单明了,在没有操作指导的情况下也可以进行操作,无论是系统管理员还是学生用户和教师用户在页面中所有的操作都是在浏览器中完成的,因此只要电脑在有网络的情况下,打开浏览器都能操作。而且在使用之前也不用进行相关的环境配置,因此本系统方便、简单、易于使用,所以该系统是容易并且可操作的。
在设计和实现大学生竞赛管理系统之前,我们进行了详尽的需求分析和市场调研。这一环节的核心目标是深入理解高校竞赛管理系统的需求,确保平台能够精准地满足各方需求。
明确用户需求:我们通过问卷调查、面对面访谈等方式,深入了解了高校竞赛管理系统的用户需求,包括学生、社团、学校等。我们了解到学生对于竞赛活动的兴趣、参与方式、时间安排等方面的需求,同时也了解到学校和社团在竞赛组织、宣传和管理方面的需求。
系统性能与界面设计:我们要求系统具备高度的稳定性和流畅性,确保学生在使用过程中的良好体验。在界面设计上,我们力求简洁、直观,使用户能够快速上手并轻松使用各项功能。我们将确保系统的响应速度和用户体验符合用户期望。
功能需求与业务逻辑:我们根据用户需求,梳理出了一系列功能需求,包括但不限于:竞赛报名与审核、竞赛信息发布、竞赛成绩统计、竞赛排名展示、交流互动等。我们深入分析了业务逻辑,确保系统能够高效地支持竞赛活动的整个生命周期。
数据安全与隐私保护:我们将高度重视用户数据的安全性和隐私保护,采取一系列措施确保用户信息的安全存储和传输。我们将对数据进行加密处理,防止数据泄露和滥用。
持续优化与迭代:我们认识到大学生竞赛管理系统需要随着用户反馈和市场环境的变化而不断优化和迭代。我们将定期收集用户反馈,对系统进行持续改进,以满足用户不断变化的需求。
综上所述,大学生竞赛管理系统旨在通过技术手段解决竞赛活动组织和管理中的实际问题,提升用户满意度。我们将致力于打造一个高效、便捷、安全的大学生竞赛管理系统,为高校竞赛活动带来更加丰富多彩的体验。
系统性能是系统设计中的重要考虑因素,直接影响用户的使用体验和系统的运行效率。大学生竞赛管理系统需要具备高效、稳定、可靠的性能特点,以满足用户的需求。
高并发处理能力:系统需要能够应对高并发访问,确保在大量用户同时使用时能够保持稳定运行。可以通过使用缓存技术、负载均衡等技术手段提高系统的并发处理能力。
快速响应速度:系统应具备快速的响应速度,确保用户在访问系统时能够获得流畅的体验。可以通过优化数据库查询、提高系统缓存命中率、采用异步处理等技术手段提高响应速度。
稳定性与可靠性:系统应具备稳定的运行环境和可靠的故障恢复机制,确保在异常情况下能够及时恢复运行,减少对用户的影响。
数据存储与传输安全性:系统应采用安全的数据存储和传输机制,确保用户数据的安全性和隐私保护。可以采用加密技术、数据脱敏等技术手段实现。
性能测试与优化:系统应进行性能测试,确保各项功能和性能指标符合预期。根据测试结果进行性能优化,提高系统的性能和效率。
通过以上性能分析,可以确保大学生竞赛管理系统在设计和实现过程中充分考虑性能因素,为用户提供高效、稳定、可靠的管理平台
(一)管理员用例功能介绍:管理员登录大学生竞赛管理系统,全面掌控竞赛管理的各项事宜,包括用户管理、竞赛分类管理、竞赛信息管理、报名信息管理、竞赛成绩管理、排名管理、公告管理等。此外,还可以发布和管理学校新闻、新闻分类和交流互动。这些功能将帮助管理员高效地组织和管理工作,确保竞赛的顺利进行。
管理员用例图如下所示。
图2-1 管理员用例图
(二)学生用户用例功能介绍:学生竞赛管理系统为学生用户提供了注册登录、在线交流、通知公告、学校新闻、竞赛信息、报名信息管理、个人中心等功能。学生用户可以通过首页查看竞赛信息、新闻动态和公告,并与其他参赛者进行在线交流。个人中心方便学生用户查看自己的报名信息、竞赛成绩和排名,更新报名信息,并收藏感兴趣的竞赛信息。这些功能将帮助学生用户更好地参与到竞赛活动中,并享受整个过程。
学生用户用例图如下所示。
图2-2 学生用户用例图
(三)教师用户用例功能介绍:大学生竞赛管理系统为教师用户提供了登录、在线交流、通知公告管理、学校新闻查看、竞赛信息管理、个人中心等功能。教师用户可以通过首页查看竞赛信息、新闻动态和公告,并与其他参赛者进行在线交流。个人中心方便教师用户查看自己的竞赛信息、更新报名信息,并收藏感兴趣的竞赛信息。这些功能将帮助教师更好地参与到竞赛管理中,提高竞赛管理的效率。
教师用户用例图如下所示。
图2-3教师用户用例图
系统中的所有用户(管理员、学生用户和教师用户)都可以实现增加数据功能,图2-4显示的就是在增加数据时的流程。
图2-4增加数据流程图
在录入系统信息的时候如果信息有错,可以对系统中的数据进行编辑。图2-5显示的就是修改数据的流程。
图2-5修改数据流程图
在系统中经常会出现一些过期的数据,那就可以直接删除这些数据,图2-6就是删除数据时的流程图。
图2-6删除数据流程图
由于本系统在逻辑事务处理方面对数据库的操作比较频繁所以系统在底层连接数据库时并没有使用原生的JDBC,而是把JDBC进行了封装,封装之后相当于一个连接数据库的工具DB UTIL,这样使用起来会更加方便而且这样进行封装还可以降低系统中代码的冗余,当我们需要连接和使用数据库时只需要调用这个工具里面的一个方法就可以了。而且通过封装可以把对数据库的操作独立起来,当需要连接不同种类的数据库时只需要加以修改就可以达到目的。
DAO层本来并无这个类,它只是java中MVC构造里的一个model概念,主要就是里面的一些方法,而这些方法就是用来访问数据库的方法。我们在软件开发时DAO层我们一般都放接口和接口的实现类,用于来规范实现类的我们叫它接口,实现类重点用于对数据库的操纵。
MVC是一种系统研发的关键模型,M是Model模型,它是系统内部关键程序运行的核心,主要进行对数据库的各种操作。视图View是V也叫做视图,主要的作用是对一些数据进行显示。控制器Controller 是C执行从View的视图层来读取数据,然后控制用户的输入。
系统架构如下图所示。
图3-1系统架构图
进入系统后首先要进行登录,验证你的身份,赋予你不同的权限。当你成功登录后,页面会有多个板块,分别是后台首页、系统用户、竞赛分类管理、竞赛信息管理、报名信息管理、竞赛成绩管理、竞赛排名管理、系统管理(轮播图)、通知公告管理、资源管理(学校新闻、新闻分类)、交流管理。系统分为学生用户、教师用户和管理员这三大模块,里面界面简单易懂,根据标示可以直接进行方便快捷的操作。
系统功能结构图如下所示。
图3-2系统功能结构图
一个好的系统它的后台数据库一定要考虑的全面,这和我们建造房子一个概念,房子不是随心所欲建起来的,一切都是在合理设计的基础是实现的,地基打牢固了房子才能建的更高。数据库如果设计的很合理,而且每个方面都能考虑到了那么这个系统才能不会出现大的问题。
一个好的数据库可以关系到程序开发的优劣,数据库设计离不开表结构的设计,还有表与表之间的联系,以及系统开发需要设计的数据表内容等信息。在进行数据库设计期间,要结合实际情况来对数据库进行针对性的开发设计。
大学生竞赛管理系统采用的是mysql数据库,数据存储快,因为大学生竞赛管理系统,主要的就是对信息的管理,信息内容比较多,这就需要好好的设计一个好的数据库,分类要清楚,不能添加信息的时候,造成信息太过混乱,设计好的数据库首先就需要先把各个实体之间的关系表达明确,
系统的主要实体间关系E-R图如下图所示。
图3-3系统E-R图
此环节把概念转变成数据。由于整个数据库所处理的信息过多,就只展示以下几个表。
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
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 | 用户编号: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
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 | 文章描述 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
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 | 更新时间: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
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 | 更新时间: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
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 | 更新时间: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
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: |
表competition_classification (竞赛分类)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | competition_classification_id | int | 10 | 0 | N | Y | 竞赛分类ID | |
2 | competition_categories | 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 | 更新时间 |
表competition_information (竞赛信息)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | competition_information_id | int | 10 | 0 | N | Y | 竞赛信息ID | |
2 | responsible_teacher | int | 10 | 0 | Y | N | 0 | 负责教师 |
3 | teachers_name | varchar | 64 | 0 | Y | N | 教师姓名 | |
4 | competition_name | varchar | 64 | 0 | N | N | 竞赛名称 | |
5 | competition_categories | varchar | 64 | 0 | Y | N | 竞赛类别 | |
6 | competition_time | varchar | 64 | 0 | Y | N | 竞赛时间 | |
7 | competition_venue | varchar | 64 | 0 | Y | N | 竞赛地点 | |
8 | competition_cover | varchar | 255 | 0 | Y | N | 竞赛封面 | |
9 | competitors | varchar | 64 | 0 | Y | N | 竞赛对象 | |
10 | competition_content | text | 65535 | 0 | Y | N | 竞赛内容 | |
11 | competition_rules | text | 65535 | 0 | Y | N | 参赛规则 | |
12 | competition_details | longtext | 2147483647 | 0 | Y | N | 竞赛详情 | |
13 | hits | int | 10 | 0 | N | N | 0 | 点击数 |
14 | praise_len | int | 10 | 0 | N | N | 0 | 点赞数 |
15 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
16 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | competition_ranking_id | int | 10 | 0 | N | Y | 竞赛排名ID | |
2 | responsible_teacher | int | 10 | 0 | Y | N | 0 | 负责教师 |
3 | teachers_name | varchar | 64 | 0 | Y | N | 教师姓名 | |
4 | competition_name | varchar | 64 | 0 | Y | N | 竞赛名称 | |
5 | competition_categories | varchar | 64 | 0 | Y | N | 竞赛类别 | |
6 | competition_time | varchar | 64 | 0 | Y | N | 竞赛时间 | |
7 | competition_venue | varchar | 64 | 0 | Y | N | 竞赛地点 | |
8 | student_users | int | 10 | 0 | Y | N | 0 | 学生用户 |
9 | student_no | varchar | 64 | 0 | Y | N | 学生学号 | |
10 | student_name | varchar | 64 | 0 | Y | N | 学生姓名 | |
11 | id_number | varchar | 64 | 0 | Y | N | 身份证号 | |
12 | student_gender | varchar | 64 | 0 | Y | N | 学生性别 | |
13 | competition_results | varchar | 64 | 0 | Y | N | 竞赛成绩 | |
14 | ranking | varchar | 64 | 0 | Y | N | 排名名次 | |
15 | awards | varchar | 64 | 0 | Y | N | 获奖奖项 | |
16 | ranking_situation | text | 65535 | 0 | Y | N | 排名情况 | |
17 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
18 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | competition_results_id | int | 10 | 0 | N | Y | 竞赛成绩ID | |
2 | responsible_teacher | int | 10 | 0 | Y | N | 0 | 负责教师 |
3 | teachers_name | varchar | 64 | 0 | Y | N | 教师姓名 | |
4 | competition_name | varchar | 64 | 0 | Y | N | 竞赛名称 | |
5 | competition_categories | varchar | 64 | 0 | Y | N | 竞赛类别 | |
6 | competition_time | varchar | 64 | 0 | Y | N | 竞赛时间 | |
7 | competition_venue | varchar | 64 | 0 | Y | N | 竞赛地点 | |
8 | student_users | int | 10 | 0 | Y | N | 0 | 学生用户 |
9 | student_no | varchar | 64 | 0 | Y | N | 学生学号 | |
10 | student_name | varchar | 64 | 0 | Y | N | 学生姓名 | |
11 | id_number | varchar | 64 | 0 | Y | N | 身份证号 | |
12 | student_gender | varchar | 64 | 0 | Y | N | 学生性别 | |
13 | registration_date | date | 10 | 0 | Y | N | 报名日期 | |
14 | competition_results | varchar | 64 | 0 | Y | N | 竞赛成绩 | |
15 | competition_situation | text | 65535 | 0 | Y | N | 竞赛情况 | |
16 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
17 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
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]用来搜索指定类型的论坛帖 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
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 | 更新时间: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | hits_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: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
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 | 更新时间: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
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已取消 |
表registration_information (报名信息)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | registration_information_id | int | 10 | 0 | N | Y | 报名信息ID | |
2 | responsible_teacher | int | 10 | 0 | Y | N | 0 | 负责教师 |
3 | teachers_name | varchar | 64 | 0 | Y | N | 教师姓名 | |
4 | competition_name | varchar | 64 | 0 | Y | N | 竞赛名称 | |
5 | competition_categories | varchar | 64 | 0 | Y | N | 竞赛类别 | |
6 | competition_time | varchar | 64 | 0 | Y | N | 竞赛时间 | |
7 | competition_venue | varchar | 64 | 0 | Y | N | 竞赛地点 | |
8 | student_users | int | 10 | 0 | Y | N | 0 | 学生用户 |
9 | student_no | varchar | 64 | 0 | Y | N | 学生学号 | |
10 | student_name | varchar | 64 | 0 | Y | N | 学生姓名 | |
11 | id_number | varchar | 64 | 0 | Y | N | 身份证号 | |
12 | student_gender | varchar | 64 | 0 | Y | N | 学生性别 | |
13 | registration_date | date | 10 | 0 | Y | N | 报名日期 | |
14 | number_of_participants | varchar | 64 | 0 | Y | N | 参赛人数 | |
15 | registration_content | text | 65535 | 0 | Y | N | 报名内容 | |
16 | registration_materials | varchar | 255 | 0 | Y | N | 报名资料 | |
17 | examine_state | varchar | 16 | 0 | N | N | 未审核 | 审核状态 |
18 | examine_reply | varchar | 16 | 0 | Y | N | 审核回复 | |
19 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
20 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
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 | 更新时间: |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | student_users_id | int | 10 | 0 | N | Y | 学生用户ID | |
2 | student_no | varchar | 64 | 0 | N | N | 学生学号 | |
3 | student_name | varchar | 64 | 0 | Y | N | 学生姓名 | |
4 | id_number | varchar | 90 | 0 | N | N | 身份证号 | |
5 | student_gender | varchar | 64 | 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 | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
1 | teacher_users_id | int | 10 | 0 | N | Y | 教师用户ID | |
2 | teacher_no | varchar | 64 | 0 | N | N | 教师工号 | |
3 | teachers_name | varchar | 64 | 0 | Y | N | 教师姓名 | |
4 | teacher_gender | varchar | 64 | 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 | 更新时间 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
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 | 文件类型 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
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 | 会员折扣 |
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
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 | 更新时间: |
进入系统首页,系统以上中下的布局进行展示,首先映入眼帘的是系统的导航栏,下面是轮播图,最下面是通知公告,其主界面展示如下图所示。
图4-1 前台首页界面图
用户注册:当用户想要进入系统中对信息进行查看的时候,就必须要登录到系统当中,要是新的用户没有系统的账号的话,点击“注册”按钮,就会进入到新用户注册这个界面上,用户输入对应的账号(必须填写)+密码(必须填写)+确认密码(必须填写,而且要与密码一直)+昵称+邮箱+选择用户身份等,然后点击“注册”,系统在用户这一数据库中会查询账号是不是存在,两次密码是不是一样,都填写正确就会注册成功,然后再进行登录,如果是之前已经注册过的用户很长时间没有使用,忘记密码,也可以点击“忘记密码”进行找回。用户注册界面如下图所示。
图4-2 用户注册界面图
注册代码如下:
public String encryption(String plainText) {
String re_md5 = new String();
try {
MessageDigest md = MessageDigest.getInstance("MD5");
md.update(plainText.getBytes());
byte b[] = md.digest();
int i;
StringBuffer buf = new StringBuffer("");
for (int offset = 0; offset < b.length; offset++) {
i = b[offset];
if (i < 0)
i += 256;
if (i < 16)
buf.append("0");
buf.append(Integer.toHexString(i));
}
re_md5 = buf.toString();
} catch (Exception e) {
e.printStackTrace();
}
return re_md5;
}
系统中的前台上注册后的用户是可以通过自己的账户名和密码进行登录的,当用户输入完整的自己的账户名和密码信息并点击“登录”按钮后,将会首先验证输入的有没有空数据,再次验证输入的账户名+密码和数据库中当前保存的用户信息是否一致,只有在一致后将会登录成功并自动跳转到系统的首页中;否则将会提示相应错误信息。用户登录界面如下图所示。
图4-3用户登录界面图
登录代码如下:
/**
* 登录
* @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-4在线交流界面图
学生用户可以浏览系统中发布的竞赛信息,包括竞赛名称、时间、地点、参赛要求等详细信息,以便选择合适的竞赛参与。竞赛信息界面图如下图所示。
图4-5竞赛信息界面图
管理员进入到系统登录界面,需要填写正确的登录名、密码、选择权限等信息输入准确无误后登录进入到系统操作界面。管理员的账号是在数据表表中直接设置生成的,不需要进行注册;修改密码:管理员可以随时修改自己进入系统的登录密码,以保证系统的安全性。管理员登录界面如下图所示。
图4-6管理员登录界面图
管理员可以查看后台首页、系统用户、竞赛分类管理、竞赛信息管理、报名信息管理、竞赛成绩管理、竞赛排名管理、系统管理(轮播图)、通知公告管理、资源管理(学校新闻、新闻分类)、交流管理)等,并且可以根据需要进行相应的操作,在功能界面还可以查看学生用户统计和教师用户统计。管理员功能界面如下图所示。
图4-7管理员功能界面图
管理员可以对系统中所有的用户角色进行管控,包含了管理员、学生用户、教师用户这三种角色,如果需要添加新的用户,点击页面中的“添加”按钮根据提示输入上用户信息,点击“提交”以后在对应的用户界面就可以查看到了,可以点击用户后面的“删除”按钮直接删除某一用户。系统用户管理界面如下图所示。
管理员可以管理竞赛的分类信息,包括添加、修改和删除竞赛的分类,以便对竞赛进行分类展示和管理。界面如下图所示。
图4-9竞赛分类列表界面图
图4-10竞赛分类添加界面图
管理员可以对系统前台展示的轮播图进行增删改查,方便用户进行查看。轮播图管理界面如下图所示。
图4-11轮播图管理界面图
@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);
}
教师用户可以浏览系统中发布的学校新闻,了解学校的最新动态、活动信息和校内新闻等内容。学校新闻界面如下图所示。
图4-12学校新闻界面
教师用户可以查看学生报名参加竞赛的信息,审核报名申请并进行相应处理。报名信息界面如下图所示。
图4-13报名信息界面图
教师用户可以查看管理的竞赛信息,包括竞赛时间、竞赛规则、竞赛名称、报名情况、成绩审核等。竞赛信息界面如下图所示。
图4-14竞赛信息界面图
对任何系统而言,测试都是必不可少的环节,测试可以发现系统存在的很多问题,所有的软件上线之前,都应该进行充足的测试之后才能保证上线后不会Bug频发,或者是功能不满足需求等问题的发生。下面分别从单元测试,功能测试和用例测试来对系统进行测试以保证系统的稳定性和可靠性。
5.2系统部分测试
系统测试包括:用户登录功能测试、竞赛信息查看功能测试、竞赛信息添加、竞赛信息搜索、密码修改功能测试,如表5-1、5-2、5-3、5-4、5-5所示:
用户登录功能测试:
表5-1 用户登录功能测试表
用例名称 | 用户登录系统 |
目的 | 测试用户通过正确的用户名和密码可否登录功能 |
前提 | 未登录的情况下 |
测试流程 | 1) 进入登录页面 2) 输入正确的用户名和密码 |
预期结果 | 用户名和密码正确的时候,跳转到登录成功界面,反之则显示错误信息,提示重新输入 |
实际结果 | 实际结果与预期结果一致 |
竞赛信息查看功能测试:
表5-2 竞赛信息查看功能测试表
用例名称 | 竞赛信息查看 |
目的 | 测试竞赛信息查看功能 |
前提 | 用户登录 |
测试流程 | 点击竞赛信息列表 |
预期结果 | 可以查看到所有竞赛信息 |
实际结果 | 实际结果与预期结果一致 |
管理员添加竞赛信息界面测试:
表5-3 管理员添加竞赛信息界面测试表
用例名称 | 竞赛信息添加测试用例 |
目的 | 测试竞赛信息添加功能 |
前提 | 管理员正常登录情况下 |
测试流程 | 1)管理员点击竞赛信息,然后点击添加后并填写信息。 2)点击进行提交。 |
预期结果 | 提交以后,页面首页会显示新的竞赛信息 |
实际结果 | 实际结果与预期结果一致 |
竞赛信息搜索功能测试:
表5-4竞赛信息搜索功能测试表
用例名称 | 竞赛信息搜索测试 |
目的 | 测试竞赛信息搜索功能 |
前提 | 无 |
测试流程 | 1)在搜索框填入搜索关键字。 2)点击搜索按钮。 |
预期结果 | 页面显示包含有搜索关键字的竞赛信息 |
实际结果 | 实际结果与预期结果一致 |
密码修改功能测试:
表5-5 密码修改功能测试表
用例名称 | 密码修改测试用例 |
目的 | 测试管理员密码修改功能 |
前提 | 管理员用户正常登录情况下 |
测试流程 | 1)管理员密码修改并完成填写。 2)点击进行提交。 |
预期结果 | 使用新的密码可以登录 |
实际结果 | 实际结果与预期结果一致 |
通过对大学生竞赛管理系统的调试,能够检测大学生竞赛管理系统的稳定性,为大学生竞赛管理系统正式运行、稳定运行提供了可预测性的维护备案。能够帮助使用者熟悉整个大学生竞赛管理系统,并对大学生竞赛管理系统可能出现的错误有所了解。本章节提供了部分调试用例及调试日志,可以帮助使用者解决简单的错误问题,也加深了开发者对于此框架下的大学生竞赛管理系统编写的了解度,为后期开发者顺利完成大学生竞赛管理系统、发布大学生竞赛管理系统提供了非常大的帮助。
本文描述了大学生竞赛管理系统的原理和开发过程,该系统是通过SpringBoot框架来搭建后台,中间件使用的是Tomcat服务器,数据库管理平台采用开源的Mysql,前台使用的是JQuery框架,同时使用Validate校验框架,这样就可以减少前端代码的输入量,而且基于JQuery框架的Validat框架使用简单,是流行的前端使用框架,前端使用的主要是HTML页面展示技术。
在开发前做了许多的准备,在本系统的设计和开发过程中阅览和学习了许多文献资料,从开发这个大学生竞赛管理系统的过程中我也收获了许许多多宝贵的方法以及设计思路,对系统的开发也起到了很重要的作用,系统的开发技术选用的都是自己比较熟悉的,比如Web、SpringBoot、MYSQL,这些技术都是在以前的学习中学到了,其中许多的设计思路和方法都是在以前不断地学习中摸索出来的经验,其实对于我们来说工作量还是比较大的,但是正是由于之前的积累与准备,才能顺利的完成这个项目,由此看来,积累经验跟做好准备是十分重要的事情。
当然在该系统的设计与实现的过程中也离不开老师以及同学们的帮助,正是因为他们的指导与帮助,我才能够成功的在预期内完成了这个系统。同时在这个过程当中我也收获了很多东西,此系统也有需要改进的地方,但是由于专业知识的浅薄,并不能做到十分完美,希望以后有机会可以让其真正的投入到使用之中。
参考文献
[1]刘婷婷,张曰花,陈红娟.高校大学生学科竞赛管理系统的设计[J].黑龙江科学,2024,15(05):119-121.
[2]杨慧洁.基于.NET平台的高校竞赛管理系统设计[J].信息与电脑(理论版),2024,36(01):1-3.
[3]孙成,闫晓莉.高校大学生竞赛信息管理系统的建设与分析[J].电脑知识与技术,2023,19(35):169-171+174.DOI:10.14004/j.cnki.ckt.2023.1839.
[4]杨友法,郭城,汪浩源,等.基于SpringBoot+Vue技术的学科竞赛管理系统的设计与实现[J].电脑知识与技术,2023,19(10):54-58.DOI:10.14004/j.cnki.ckt.2023.0502.
[5]Miroslav W .Practical Design Patterns for Java Developers:Hone your software design skills by implementing popular design patterns in Java[M].Packt Publishing Limited:2023-02-03.DOI:10.0000/9781804613320.
[6]吴小芳.SSH框架下学科竞赛管理系统设计与实现[J].福建电脑,2022,38(05):73-77.DOI:10.16707/j.cnki.fjpc.2022.05.018.
[7]Giuseppe B .Hands-On Software Architecture with Java:Learn key architectural techniques and strategies to design efficient and elegant Java applications[M].Packt Publishing Limited:2022-03-16.DOI:10.0000/9781800206144.
[8]杨正权.基于ASP.NET的网络综合布线技术课程线上竞赛管理系统设计[J].信息与电脑(理论版),2022,34(02):220-222.
[9]李燕.基于B/S架构的体育竞赛成绩管理系统设计[J].微型电脑应用,2021,37(11):47-49+60.
[10]管峰,陈昌,张维多.天文知识竞赛报名管理系统的设计与实现探讨[J].山西电子技术,2021,(05):81-82+86.
[11]胡沁涵,王亚男,杨季文,等.高校学科竞赛组织管理平台的研究与实现[J].福建电脑,2021,37(09):75-78.DOI:10.16707/j.cnki.fjpc.2021.09.020.
[12]Scott V G ,L J C .Computer Graphics Programming in OpenGL with Java[M].Mercury Learning and Information:2021-09-02.
[13]Thérèse H ,Mathieu J ,François P , et al.Concepts and Semantics of Programming Languages 2:Modular and Object‐oriented Constructs with OCaml, Python, C++, Ada and Java[M].John Wiley Sons, Inc.:2021-08-05.DOI:10.1002/9781119851196.
[14]侯军杰,杨威,陈畅.创新创业竞赛管理系统设计与实现[J].电子测试,2020,(20):80-81.DOI:10.16520/j.cnki.1000-8519.2020.20.031.
[15]沈佳棋,倪珊,王杰,等.基于Vue+SpringBoot的分类学科竞赛管理系统设计[J].无线互联科技,2020,17(17):74-77.
[16]韩菁,林立杰.高校竞赛管理信息系统构建初探[J].中国管理信息化,2020,23(16):219-220.
[17]方伟鉴,曾俊成,唐银翔,等.基于B/S的高校大学生学科竞赛大数据管理系统设计与实现[J].信息通信,2020,(06):164-165.
[18]刘伟,付元礼,黄辛迪,等.大学生学科竞赛管理系统的设计与实现[J].电脑知识与技术,2020,16(17):25-27.DOI:10.14004/j.cnki.ckt.2020.2057.
[19]D M ,N M .Data Structures and Program Design Using Java:A Self-Teaching Introduction[M].Mercury Learning Information:2020-02-18.
[20]蒋勤德.基于OLAP技术的学科竞赛管理系统设计与实现[D].广西大学,2019.DOI:10.27034/d.cnki.ggxiu.2019.000358.
致谢
经过几个月时间的努力终于完成了这篇文章,在文章的写作与研究的过程中遇到了很多困难,都在同学和老师的帮助下解决了。尤其非常感谢我最敬爱的老师,他对我进行了无私的指导和帮助,不厌其烦的帮助进行文章的修改。老师严谨的治学态度、渊博的学术知识、诲人不倦的敬业精神以及宽容的待人风范使我获益颇丰。此外,在校图书馆查找资料的时候,图书馆的老师也给我提供了很多方面的支持与帮助。在此,向帮助和指导过我的老师表示最衷心的感谢!感谢这篇文章所涉及到的各位学者。本文引用了数位学者的文献,如果没有各位学者的研究成果的帮助和启发,我将很难完成本篇文章的写作。感谢我的同学和朋友,在我写文章的过程中给与了我很多素材和帮助,还在文章的撰写和排版过程中提供热情的帮助。同时,感谢我的室友对我的热心指导和帮助,经常有不懂之处都是大家在帮助我,才使得我比较顺利的完成了这篇文章。由于我水平有限,所写文章难免有不足之处,恳请各位老师和学友批评和指正!
免费领取项目源码,请关注❥点赞收藏并私信博主,谢谢~
相关文章:
springboot大学生竞赛管理系统-计算机毕业设计源码37276
摘 要 随着教育信息化的不断发展,大学生竞赛已成为高校教育的重要组成部分。传统的竞赛组织和管理方式存在着诸多问题,如信息不透明、效率低下、管理不便等。为了解决这些问题,提高竞赛组织和管理效率,本文设计并实现了一个基于Sp…...
提高LabVIEW软件的健壮性
提高LabVIEW软件的健壮性,即增强其在各种操作条件下的可靠性和稳定性,是开发过程中非常重要的一环。健壮的软件能够在面对意外输入、极端环境和系统故障时依然表现出色,确保系统的连续性和可靠性。以下是详细的方法和策略,从多个角…...
不同深度的埋点事件如何微妙地改变广告系列的成本
/ 作者简介 / 本篇文章来自现金贷领域市场投放大佬 亮哥 的投稿,主要分享了在广告投放过程中,不同深度的埋点事件如何微妙地改变广告系列的成本的相关经验,相信会对大家有所帮助!同时也感谢作者贡献的精彩文章。 / 前言 …...
Perl 语言进阶学习
Perl 语言进阶学习 在掌握 Perl 的基础知识后,进一步学习 Perl 的高级特性和应用,将有助于提升编程效率和解决复杂问题的能力。本文将详细介绍 Perl 语言的高级功能、最佳实践以及实际应用案例。 目录 高级数据结构 多维数组复杂数据结构 引用与匿名数…...
el-input-number @input.native触发,修改值失效
试过在方法里用this.$set()、this.$next(()>{})没生效 解决方案:如下...
这些实用工具函数都撕不明白还敢说自己是高级前端
很多工具函数大家都知道,比如防抖函数,节流函数,深拷贝函数等,一问都会,一写就废,用lodash的掘友们,是不是基本功都退化了?CV工程师请不要把基本功给弄丢了,下面我来整理一下项目中常用的工具函数,多练练吧,不然面试现场写不出来多丢人啊! 1.防抖函数 /*** 防抖函…...
git 如何查看 commit 77062497
在Git中,要查看特定commit(如77062497)的详细信息,你可以使用git show命令。如果77062497是一个完整的commit哈希值(在Git中,commit哈希值通常是40位的十六进制数),你可能需要输入完…...
纯CSS瀑布流
<!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8"> <meta name"viewport" content"widthdevice-width, initial-scale1.0"> <title>瀑布流布局</title> <style>/* 瀑布…...
vue3 路由跳转新页面并传递参数与获取参数
打开新标签页面传递参数(useRouter ) import { useRouter } from vue-router const uRouter useRouter() let page uRouter.resolve({path:/mapRollerShutter,query:{type:Split,key:1}})window.open(page.href,_blank)页面接收(useRoute …...
NSAT-8000电源检测软件测试砖式电源模块的方案及优势
砖式电源模块类型 砖式电源,顾名思义其外观尺寸像块砖,具有体积小、功率大、安装方便等特点。砖式电源模块具备高可靠性和高稳定性,能够为设备提供稳定的电力输出,在通信、工业、医疗等领域广泛应用。 根据尺寸大小,砖…...
短链接服务Octopus-搭建实战
[WARNING] The POM for cn.throwx:octopus-contract:jar:1.0-SNAPSHOT is missing, no dependency information available 解决方案: cd octopus-contract/ mvn install -------------- ➜ octopus-server git:(master) ✗ mkdir -p /data/log-center/octopus/s…...
STM32(二):STM32工作原理
0、参考1、寄存器和存储器基本概念(1)基本概念(2)主要区别(3)联系(4)实际应用中的案例(5)总结(6)一些名词解释 2、STM32指南者板子-存…...
真实工作项目Java使用apache.poi生成word
加油,新时代打工人! 将实体类利用poi转成Word文件 demo示例 package com.fqpais.util;import com.fqpais.business.domain.TestReportTemplate; import com.fqpais.common.utils.StringUtils; import org.apache.poi.xwpf.usermodel.*; import org.slf4…...
[Python自动化办公]--从网页登录网易邮箱进行邮件搜索并下载邮件附件
[Python自动化办公]–从网页登录网易邮箱进行邮件搜索并下载邮件附件 使用说明 本文使用Python的selenium库进行操作邮箱登录、固定名称搜索邮件并下载附件,Python版本:3.9.16, selenium版本:4.19.0,EdgeBrowser版本:126.0.2…...
mysql8多值索引
MySQL8新出了一个多值索引,我还没体验过呢,今天试一试。 建表 我先建个表试一试多值索引的效果。我粗略地看了下多值索引的介绍,发现是只适用于数组类型的。所以我建一个含有数组字段的表试一试。语法还是挺麻烦的: create tabl…...
MT3055 交换排列
1.思路 若数对为(1,4)和(4,7),则说明14可以互换,47可以互换,并且17也可以互换。所以把可以交换的元素放到一个集合中。 例如样例1:有三个集合,…...
Zkeys三方登录模块支持QQ、支付宝登录
1,覆盖到根目录,并导入update.sql数据库文件到Zkeys数据库里 2. 后台系统权限管理,配置管理员权限-系统类别-找到云外科技,全部打勾 3,后台系统设置找到云外快捷登录模块填写相应的插件授权配置和登录权限配置&#x…...
数字探秘:用神经网络解密MNIST数据集中的数字!
用神经网络解密MNIST数据集中的数字! 一. 介绍1.1 MNIST数据集简介1.2 MLP(多层感知器)模型介绍1.3 目标:使用MLP模型对MNIST数据集中的0-9数字进行分类 二.数据预处理2.1 数据集的获取与加载2.2 数据集的探索性分析(E…...
11个IT运维领域必考证书,每一个都含金量极高
这几年,网络方向里,IT运维其实还是挺吃香的。 运维人员的职责不仅仅是确保系统的正常运行,还需要应对突发事件、优化性能以及保障信息安全。 面对如此复杂的工作环境,拥有专业认证不仅是对自身技能的肯定,更是提升职业…...
VScode 常用插件
基础开发插件 Chinese (Simplified)(简体中文语言包):这是适用于VS Code的中文(简体)语言包,适用于英语不太流利的用户。Auto Rename Tag:这个插件可以同步修改HTML/XML标签,当用户修…...
299k stars利用Public APIs提升开发效率:探索APILayer提供的开源资源
299k stars利用Public APIs提升开发效率:探索APILayer提供的开源资源 在现代软件开发中,API(应用程序接口)是实现应用间通信和功能扩展的关键工具。公共API(Public APIs)则为开发者提供了宝贵的资源&#…...
在目标检测数据集上微调Florence-2
Florence-2是由微软开源的轻量级视觉-语言模型,采用MIT许可。该模型在任务如图像描述、目标检测、定位和分割中展示了强大的零样本和微调能力。 图1。图示展示了每个任务所表达的空间层次和语义细粒度水平。来源:Florence-2:推进多种视觉任务的统一表示。 该模型将图…...
AI提示词:AI辅导「数学作业」
辅导孩子作业对许多家长来说可能是一件头疼的事,但这部分工作可以在一定程度上交给AI来完成。 打开ChatGPT4,输入以下内容: # Role 数学辅导专家## Profile - author: 姜小尘 - version: 02 - LLM: Kimi - language: 中文 - description: 专门为小学生…...
odoo文档的安装
步骤 1: 安装必要的软件 确保你已经安装了Git和Python 3.6、3.7或3.8之一。 步骤 2: 克隆 Odoo 文档存储库 打开终端,然后使用Git克隆Odoo的文档存储库。 git clone https://github.com/odoo/documentation.git cd documentation步骤 3: 安装 Python 依赖项 …...
02STM32软件安装新建工程
STM32软件安装&新建工程 1.软件安装:1.1Keil5 MDK安装1.2安装器件支持包离线安装支持包在线安装支持包 1.3软件注册:1.4安装驱动STLINK驱动JLink驱动在此文件夹下USB转串口 2.新建工程2.1STM32开发方式:1.寄存器2.标准库3.HAL库 固件库压…...
社区6月月报 | Apache DolphinScheduler重要修复和优化记录
各位热爱Apache DolphinScheduler的小伙伴们,社区6月月报更新啦!这里将记录Apache DolphinScheduler社区每月的重要更新,欢迎关注。 月度Merge Stars 感谢以下小伙伴上个月为Apache DolphinScheduler所做的精彩贡献(排名不分先后…...
Docker 使用基础(2)—镜像
🎬慕斯主页:修仙—别有洞天 ♈️今日夜电波:秒針を噛む—ずっと真夜中でいいのに。 0:34━━━━━━️💟──────── 4:20 🔄 ◀️ ⏸ …...
Docker学习笔记(三)Dockerfile
一、什么是Dockerfile Dockerfile 是一个用于自动化构建 Docker 镜像的文本文件,其中包含了从一个基础镜像开始,到最终形成所需定制镜像的所有指令集。这个文件中的每一条指令都对应着构建镜像过程中的一个步骤或一层,指导 Docker 如何安装软…...
学懂C#编程:C# 索引器(Indexer)的概念及用法
C#中的索引器(Indexer)是一种特殊的成员,它允许类或结构的实例像数组那样通过索引来访问其内部的数据。索引器提供了一种灵活的方式来暴露集合或数组类型的内部数据,使得客户端代码可以使用类似于数组下标的语法来访问类的成员&am…...
汇川CodeSysPLC教程03-2-14 与HMI通信
硬件连接 PLC与HMI连接采用何种连接方式,通常是参考双方支持哪些接口。PLC(可编程逻辑控制器)与HMI(人机界面)之间的通讯方式主要有以下几种: 串行通讯(Serial Communication)&…...
东莞网站网络/搜索引擎优化方法与技巧
http://netpbm.sourceforge.net/doc/系统环境:ubuntu 10.04 x86$ sudo apt-get install netpbm$ pngtopnm loongson.png > loongson.pnm说明:用来转换的图片必须为 png 格式,否则会有如下提示:pngtopnm: input file not a PNG …...
网站密码怎么做/在线seo优化
这是一份来自网络的代码,经过了我的修改和验证。首先我的运行环境是python3.7,需要安装pyuserinput库。直接上代码吧:#!/usr/bin/pythonimport osimport timeimport win32guiimport win32apiimport win32conimport pymouse,pykeyboardfrom py…...
wordpress 首页定制/球队积分排名
前言阿里巴巴一直是很多Java程序最想去的公司之一,今天我就给大家分享一个阿里Java程序员面经:阿里面试流程面试一般是四到五面,以电话面试为主。最后一轮面试时HR面试,所以只要挺过前面的技术面试一般就OK了。第一轮是考察基础&a…...
温州自助模板建站/百度网站提交入口
MovieClip.attachMovie 语法: anyMovieClip.attachMovie(idName, newname, depth); 参数: idName 要绑定的库中Movie的名字。这个名字就是元素的Linkage Properties对话框中输入的标识名。 newname 就是被绑定MC的实体名,必须是唯一的。 dept…...
企业网站推广的收获与启示/软件培训
as3 flash和android java类似,都是加一个一个的监听器,然后在回调函数里面处理事务win32的开发,是直接去扫描句柄信号做判断,as3 还有android java,相当于对句柄写好了可以录入函数的接口,等待你录入回调函…...
做调查问卷赚钱的网站/关键词优化排名网站
亲测可用,若有疑问请私信 一、设置导航栏颜色 在url后面拼接dd_nav_bgcolor参数即可,如下: 支持的格式:“AARRGGBB” http://abc.xyz?dd_nav_bgcolorFF5E97F6 二、微应用页面支持横屏 在url后面拼接dd_orientation参数即可,如…...