基于微信小程序的“甬城”体育馆管理系统设计与实现_第1页
基于微信小程序的“甬城”体育馆管理系统设计与实现_第2页
基于微信小程序的“甬城”体育馆管理系统设计与实现_第3页
基于微信小程序的“甬城”体育馆管理系统设计与实现_第4页
基于微信小程序的“甬城”体育馆管理系统设计与实现_第5页
已阅读5页,还剩43页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

引言1.1课题背景改革开放以来,随着“科技是第一生产力”的提出,我国提出了“科技兴体”的发展战略,并围绕该战略的实践,颁布了1991-2000年、2001-2010年《体育科技发展规划》和《国家体育总局中长期体育科学与技术研究指导纲要(2011-2020)》,不断深化体育科技体制改革,创新体育科技服务模式REF_Ref23189\r\h[1]。此外,北京冬奥会和杭州亚运会的成功举办,更加点燃了人民群众对健身运动的热情。据国家发改委报道,到2021年底,我国经常参加体育锻炼人数占比37.2%。另外根据《2023年中国路跑赛事监管工作报告》显示,2023年我国全年共举办路跑赛事580场,参赛总人次550万。艾瑞咨询公司发布的“中国2015年互联网+体育发展报告”REF_Ref32368\r\h[2]显示我国在体育参与方面主要存在三大“难点”:场馆“选择难”、场地“预定难”和“约球难”。随着生活质量的提高,人们对待生活的态度已经开始由温饱转向对健康的追求,越来越多人进行体育锻炼,所以很多时候体育馆往往爆满,人们到达场馆后很难找到合适的空闲场地,传统的线下预定又不方便。随着信息技术的飞速发展,微信小程序已经渗透到各行各业,渗入了人们生活的方方面面。据国际财经时报网的数据统计,2021年微信小程序日活超过4.5亿,日均使用次数比较2020年增长了32%,活跃小程序则增长了41%REF_Ref17427\r\h[3]。1.2国内外现状及发展趋势在全球范围内,不同地区的体育场馆发展水平存在差异。发达国家投入巨大的资源进行体育场馆建设,提供先进的设施和服务。而一些发展中国家和地区由于经济限制,体育场馆的规模和质量相对较低。随着微信在国内普及范围不断扩大,越来越多的企业和机构开始利用微信小程序开发各种应用。其中也包括体育馆管理系统。通过微信小程序,用户可以更加便捷地查看场地信息、预约场地、管理个人信息等。目前我国有许多形形色色的健身场馆管理系统。例如刘小豫、聂维、朱亚兵开发了一套基于B/S三层结构和Java编程语言的健身房管理系统,确定了系统中的主要功能[4]。王古将在《高校体育馆管理软件系统研究与设计》一文中提到,熊雷采用JavaWeb和B/S三层架构为当地一家健身房设计了一套软件系统,详细的分析了系统功能,满足了健身房对客户信息管理的需求,提升了管理效率[5][6]。此外我国许多体育馆管理系统还结合了微信公众号,通过发布文章、活动通知等方式,与用户进行互动,提高用户粘性。相对于国内及一些发展中国家,部分发达国家在基于微信小程序(或其他类似平台)的体育馆管理系统方面的开发和应用起步较早。他们更早地认识到移动应用对于提高用户体验和服务效率的重要性。总的来说,基于微信小程序的体育馆管理系统在国内外都呈现出积极的发展态势。随着技术的进步和用户需求的不断变化,这种系统在未来还将继续完善和优化,为用户提供更加便捷、高效和个性化的服务。1.3研究意义本研究通过开发体育馆管理系统,旨在全面提升用户体验、提高管理效率并积极推动体育产业的发展。这一系统的实施不仅简化了用户的预约流程,为其提供了更便捷、高效的服务体验,还通过智能化管理释放了大量人力,显著提升了管理效率。此外,该系统的使用还促进了体育馆资源的有效整合和合理分配,优化了运营模式,为体育馆的可持续发展提供了有力支持。同时,该系统的成功开发也为其他类似行业提供了借鉴和参考,推动了行业的现代化发展。因此,本研究开发的体育馆管理系统具有重要的研究意义和应用价值。1.4主要研究内容和组织架构本研究旨在开发一个基于Vue前端、SpringBoot后端、微信小程序客户端以及MySQL数据库的体育馆预约管理系统。该系统的研究目的主要在于解决传统预约方式中存在的问题,提高预约和管理效率,提升用户体验。该系统的研究目的在于满足人民群众日益增长的运动需求,为体育馆提供更加优合理的管理和运营方案,同时为促进全民健身事业的发展出一份力。本文组织架构划分为七章,具体内容如下:第一章:引言:本章介绍课题背景和国内外体育馆系统的研究现状,阐述国内外体育馆的差异与发展趋势,并指出课题研究的意义。最后,总结本文的组织结构。第二章:系统关键技术简介:本章对在系统开发过程中所使用的关键技术进行介绍,包括SpringBoot技术、Vue技术、MySQL数据库以及微信小程序开发工具等。第三章:系统需求分析:本章对系统功能需求、可行性需求以及系统用例进行分析。第四章:系统详细设计:在本章中,首先概述系统架构的设计。接着,通过类图和动态模型的展示,详细阐述各个模块的功能设计及其实现过程。最后展示数据库的设计。第五章:系统实现:本章分别介绍小程序端和PC端各个功能模块的实现和运行效果截图。第六章:系统测试:本章节致力于详录系统主要模块的功能测试流程,全面展示系统核心模块的测试工作。第七章:结论与展望:在最后一章中,对整个系统的设计和论文的撰写进行了总结。通过回顾系统设计的各个方面,以及论文写作的过程和要点,总结了整个项目的经验和收获。在总结经验的基础上,还展望未来可以加入的功能。

2核心技术介绍2.1SpringBoot技术介绍SpringBoot是由Pivotal团队基于Java的Spring框架开发的一款开源工具,它内置Tomcat,无须打包部署就能直接运行[7]。自2014年发布以来,SpringBoot凭借其开箱即用、一键式启动及自动配置的核心特性,已成为现代企业级应用和微服务开发的事实标准[8]。在微服务架构方面,SpringBoot更是表现卓越。它通过无缝整合NetflixEureka、Consul或ZooKeeper等服务发现组件,实现了微服务的自动注册与发现,便于服务间的灵活调用。此外,配合SpringCloudGateway或NetflixZuul,SpringBoot能够作为API网关进行路由管理、负载均衡和安全控制。为保证系统的稳定性和可靠性,SpringBoot还集成了Hystrix或Resilience4j等容错工具实现服务熔断、线程隔离和流量控制机制。同时,对于消息驱动和事件处理场景,SpringBoot支持RabbitMQ、Kafka等消息中间件,促进微服务之间的异步解耦与事件驱动设计。SpringBoot框架核心是自动配置,它整理并重新组合了很多基础的常用框架,简化了开发模式,提高了开发效率,缩短了项目的开发周期[9]。王亚东等在《基于SpringBoot的需求发布平台设计》中也对其进行研究,肯定了其优点[10]。2.2Vue技术介绍Vue.js设计核心强调渐进式和组件化开发,从而为现代Web应用带来了革新性的构建体验。Vue.js通过一系列关键技术和生态支持,使得开发者能够高效地创建复杂且高性能的应用程序。Vue有以下特点:强大的组件系统:组件是Vue架构的基础单元,允许将用户界面拆分成可复用、自包含的组件,每个组件具有独立的HTML模板、逻辑处理和样式定义。组件间可通过props进行数据传递,利用插槽(slot)实现内容分发,提高代码复用率并促进团队协作。虚拟DOM及优化策略:Vue采用虚拟DOM技术以减少实际DOM操作次数,仅针对变化的部分进行渲染更新,显著提升运行性能。同时提供诸如keep-alive缓存、基于key属性的diff算法等策略,确保在大规模列表渲染和路由切换时保持流畅体验。声明式指令与条件渲染:Vue拥有丰富的指令系统如v-if、v-for、v-on等,让开发者能以声明式的方式控制元素行为和渲染逻辑。此外,它还支持动态组件、过渡效果以及动画处理等功能,丰富了用户体验设计的可能性。完善的生态系统支持:Vue.js生态系统包含了官方维护的VueRouter用于页面路由管理,Vuex用于状态集中管理,以及VueCLI工具链助力快速初始化项目与集成各种功能。同时兼容Axios等第三方HTTP库,以及ElementUI、AntDesignVue等成熟UI组件库,共同构成了一个强大且不断发展的社区环境。综上所述,Vue.js凭借优雅简洁的API设计、强健高效的组件体系以及繁荣的生态系统,在前端框架领域中占据重要地位,成为企业和个人开发者搭建高性能、易于维护、具有良好扩展性和卓越用户体验的Web应用的理想工具之一。张浩洋等在《基于Vue的数据管理平台实践与应用》[11]中指出使用Vue框架可以解决一系列大型应用的开发问题,极大提升开发效率,缩短开发周期,为其他大型系统开发提供了重要的经验。2.3MySQL数据库MySQL是是广泛应用于Web开发的数据库系统,具有可靠、高效及易用的特点。在访问数据库方面,MySQL仍是当前最为常用查询语言。对于像windows,MacOS,OpenBSD,AIX,Solaris等这些系统,都能够很好的支持,并且为多种语言提供接口[12]。王景在《基于MySQL的数据库查询性能优化技术研究》提出了用扫描索引数据表方式,包括主/外键属性行、属性列扫描,搜索外部用户想快速找到的数据内容,而无需对全表进行全盘扫描[13]。索引是加快查询的重要方法,如果数据量很小,索引的作用不大,当数据量很大的时候,尤其涉及多个表连接时,索引的作用更大[14]。系统的数据库设计采用MySQL,是看中了MySQL有以下几方面优点[15]:(1)MySQL服务器的功能强大,运行速度极快,安全性高。(2)MySQL服务器采用了客户机/服务器系统架构,支持多线程操作。(3)MySQL属于RDBMS,它将数据存储在表格中,支持SQL访问数据库。2.4微信小程序开发介绍微信小程序是腾讯于2017年推出的一种通过扫一扫或搜索功能即可快速启动的无需下载安装即可使用的应用平台,它基于微信生态系统而建立,为用户提供便捷服务,并为企业及个人开发者提供了巨大的市场机遇。开发微信小程序涉及一系列流程:首先,在开发前期需明确小程序的目标定位与功能需求,注册并认证微信小程序的开发者账号。设计阶段包括绘制详细的产品原型和交互逻辑设计,确保用户体验流畅。接下来进入实质性的开发环节,使用官方开发工具,采用JavaScript结合WXML(微信自定义标记语言)和WXSS(样式表)进行编码实现各项功能模块,同时集成微信小程序API以接入如用户授权、支付等核心服务。在开发完成后,利用开发工具进行详尽的功能测试、兼容性测试和性能优化,保证小程序在不同设备上的稳定运行和优质体验。经过内部测试与调试后,将打包好的小程序提交至微信公众平台审核,根据官方反馈对内容和功能进行调整。当小程序通过审核后,可设定上线时间并将最新版本发布到线上环境,使微信用户能够即时搜索和使用。总之,微信小程序从规划、设计、开发、测试到最终发布的全过程,旨在满足业务需求的同时,提供卓越的用户体验,从而在庞大的微信用户群中取得成功。2.5Java任务调度组件-QuartzJavaQuartz是一个功能强大的开源作业调度框架,专为Java应用程序设计,用于在指定时间或按照预定的时间间隔执行任务。它提供了灵活的调度机制,使开发人员能够精确地控制任务的执行时间,帮助开发人员简化定时任务的创建、管理和调度过程,提高系统的可维护性和可扩展性。JavaQuartz拥有强大的调度功能:Quartz支持丰富多样的调度方法,可以满足各种常规及特殊需求。它提供了简单触发器和Cron触发器,可以根据不同的时间规则来触发任务的执行。无论是固定间隔、固定延迟,还是基于Cron表达式的复杂调度规则,Quartz都能轻松应对。

3需求分析3.1可行性分析3.1.1技术可行性分析本项目采用Vue.js与微信小程序作为前端技术,SpringBoot作为后端技术,以及MySQL作为数据存储方案,是相当可行的选择。另外系统采取加密措施保护用户数据,如使用HTTPS协议[16]进行数据传输,确保用户信息在传输过程中不被窃取或篡改。Vue.js和微信小程序提供了优秀的用户体验和交互效果,而SpringBoot则为后端服务提供了稳定可靠的基础,并且与前端技术具有良好的集成能力。MySQL作为关系型数据库系统,提供了稳定、可靠的数据存储解决方案。这些技术选型具有广泛的数据支持和丰富的资源,能够满足体育馆管理系统的开发需求,并为系统的稳定运行和持续发展提供良好的技术基础。3.1.2经济可行性分析微信小程序的开发成本相对较低,相较于传统APP,无需复杂安装配置,通过微信即可轻松使用,这为体育馆管理系统的推广普及提供了极大便利。经济可行性是项目成功的关键,要确保所有花费符合预算。本系统采用Java编写,依托微信平台,无需额外费用。独立开发,无需额外成本,个人电脑即可满足需求。因此,该系统完全满足经济可行性要求,具有高性价比和实用性。3.1.3操作可行性分析基于微信小程序的体育馆管理系统操作便捷,用户无需下载即可使用。界面清晰,功能齐全,满足用户在线预订、查询、支付、充值等需求。系统稳定安全,保障用户数据隐私。整体而言,该系统操作可行性强,适用于体育馆日常管理与服务。3.2功能需求分析3.2.1小程序端具体功能小程序端主要使用对象是广大体育爱好者、学生和普通市民等体育馆的潜在用户。用户可以使用小程序浏览体育馆的场地信息、设施介绍和价格等。同时,可通过小程序进行场地预约。具体功能如下:1.用户登录和注册用户首次使用时需要注册,填写基本信息并创建账号。注册成功后,用户可以使用所设置的账号和密码进行登录。2.体育馆信息浏览用户可以在小程序浏览各个体育馆的名称、地址等详细信息。方便选择合适的场地进行预约。3.场地预约与管理用户可浏览场馆信息,然后根据需求选择场地预约。预约界面提供清晰的日历视图和时间段选择。随后进行支付。预约成功后,用户可以查看和管理自己的预约记录。4.器材租借用户到场成功签到后,为避免出现未带运动器材的情况,可在小程序端进行器材租借操作,使用完毕需进行归还。5.扫码签到用户预约完成并抵达场地后,扫描场地提供的二维码即可完成签到。6.签退功能用户到馆签到后,可进行运动,运动结束时,在小程序端可直接签退。7.活动信息与公告通知用户可在进入小程序之前查看管理员发布的活动信息和相关公告。8.个人中心用户可以在个人中心界面进行查看和修改个人信息、修改密码、查看租借情况和余额充值操作。9.地图导航用户在场地详情页面可查看场馆地址,点击地址可通过跳转手机带有的地图APP导航至体育馆。10.余额充值用户可在小程序端进行余额充值,选择金额并完成支付,充值记录实时更新至个人账户,方便用户在系统内快速支付场馆预订费用。3.2.2PC端具体功能本系统PC端主要使用对象为体育馆的管理员,通常负责体育馆的日常运行工作,主要功能如下:1.管理员登录与权限管理PC端设有管理员登录入口,管理员需输入正确的账号和密码,选择正确的角色身份,并填写验证码进行登录。登录后,系统将展示相应的管理功能。2.场地信息管理管理员可以对体育馆的场馆和场地信息进行全面管理。3.教练和器材信息管理管理员可对教练的信息和馆内器材的详细信息进行统一管理。同时可更改器材使用状态。4.预约订单管理管理员可以查看和处理所有用户的场地预约订单。5.资讯管理管理员可以发布体育馆的系统公告和活动通知。6.热度信息统计与分析管理员可以查看热度信息,热度信息图表数据来源为场地的预约次数。3.3系统用例分析通过分析,“甬城”体育馆系统主要存在管理员、用户两种角色。用户通过注册登录,进入小程序。用户可在小程序端查看体育馆场地、活动、公告信息,可预约自己感兴趣的场地,还可租借器材,进行余额充值。管理员负责体育馆的日常运行、场地管理等工作,对相关数据进行增删改查操作。此外,管理员可通过热度信息模块带有的柱状图和扇形图,清晰了解各个场地的预约热度。1.小程序端用例用户注册登录后可以查看体育馆相关活动和公告信息,查看场馆及场地信息,查看个人信息,租赁器材,余额充值,查看场地导航。在查看场地信息时,可对心仪的场地进行预约。在个人信息界面可以查看并修改个人信息及密码、查看器材租借记录和交易情况记录。用例图如图3.1所示。图3.1用户用例图2.管理员用例管理员登录后端管理系统后,可对体育馆各项信息进行管理。可查看场地预约热度信息。在用户管理中,对小程序用户、管理员和教练信息进行管理。可根据需要发布通知公告和活动信息。在器材管理对器材的使用状态进行实时更新。并查看用户预约记录。用例图如图3.2所示。图3.2管理员用例图

4系统设计4.1系统架构设计经过对体育馆管理系统的需求进行的详细分析,得出了该系统可以分为小程序端和用来进行信息管理的PC端。整个体育馆管理系统的系统功能框架图如图4.1所示:图4.1系统功能框架图4.2类图设计1.用户模块:本模块包括实体类User,控制层UserController类,控制层可以调用服务层UserService接口中的方法实现用户登录注册以及修改密码功能。UserService通过调用UserMapper的接口访问数据库。用户模块类图如图4.2所示。图4.2用户模块类图2.器材租借:本模块主要包括实体类MaterialLease,控制层MaterialLeaseController类,控制层可以调用服务层MaterialLeaseService接口中的方法实现器材的租借和归还功能。MaterialLeaseServiceImpl类实现MaterialLeaseService类接口,然后再通过调用MaterialLeaseDao的接口访问数据库。器材租借模块类图如图4.3所示。图4.3器材租借模块类图3.交易支付:本模块主要包括实体类Amount,控制层AmountController类,控制层可以调用服务层AmountService接口中的方法实现场地费用的支付和余额充值的功能。AmountServiceImpl类实现AmountService类接口,然后再通过调用AmountDao的接口访问数据库。交易支付模块类图如图4.4所示。图4.4交易支付模块类图4.3动态模型设计4.3.1用户登录模块首次使用的用户经过注册后,进入登录界面,进行登录操作,输入账号密码,点击登录按钮,向服务器发送请求,系统在数据库检索相关数据,校验账号密码,若数据匹配正确,返回登录成功信息;反之显示错误信息。用户登录时序图如图4.5所示。图4.5用户登录模块时序图4.3.2用户管理模块管理员登录后,可执行用户管理操作,包括添加、删除、修改和查询用户信息。删除用户可选择逐个或批量操作。管理员能够在用户管理界面查看用户的完整信息。时序图如图4.6所示。图4.6用户管理模块时序图4.3.3场地管理模块管理员进入系统后,可在场地管理列表查看场馆及场地信息,对场地信息进行全面的管理。包括添加新的场地、编辑现有场地的信息(如场地分类、状态、场地照片等)、删除不再使用的场地,以及查询和统计场地的预约使用情况等。时序图如图4.7所示。图4.7场地管理模块时序图4.4数据库设计4.4.1概念设计数据库概念设计是数据库系统开发中至关重要的一步,涉及到对业务需求和数据结构的深入理解。对于体育馆管理系统,其数据库概念设计主要关注于如何合理组织和管理体育馆、场地、用户、预约等核心实体及其关系。1、管理员实体包含ID、姓名、权限等属性。与其他实体如用户等有关联关系,管理员拥有管理系统的权限,可以执行用户管理等操作。E-R图如图4.8所示。图4.8管理员信息实体图2、用户实体包含用户名、余额等属性,与其他实体如预约订单有关联关系,用户可进行预约支付等操作。E-R图如图4.9所示。图4.9用户信息实体图3、场地实体包含场地类型、价格、状态、介绍等属性,与用户实体有关联关系,具体E-R图如图4.10所示。图4.10场地信息实体图4、器材实体包含使用状态、器材分类等属性,与管理员、用户等有关联关系,具体E-R图如图4.11所示。图4.11场地信息实体图其中用户可以查看馆内活动和通知公告,是多对多的关系。用户与订单、场地、个人信息均为一对多的关系。管理员能对公告和活动,场地,订单,器材,用户信息进行管理,均为一对多的关系;管理员还能查看热度信息,也是一对多的关系。系统整体E-R图如图4.12所示。图4.12系统整体E-R图4.4.2数据库表结构设计基于上述实体关系,对数据库表进行了详尽设计,包括管理员表、器材表及器材租借表等,确保数据完整、准确,为高效管理提供支持。各数据库表具体信息如下所示:1.用户信息表(user)存储用户信息的数据结构包括用户名、密码、电话等字段。此外还包含邮箱、邮箱、等信息。这些字段共同描述了用户信息表的属性。详细设计如下表4.1所示。表4.1用户信息表字段名字段类型长度备注idint50主键namevarchar30姓名passwordvarchar50密码phonevarchar11电话rolevarchar30角色accountvarchar余额avatorvarchar头像emailvarchar30邮箱2.管理员信息表(admin)记录管理员的的信息数据,涵盖了管理员的姓名、角色标识等关键字段,其余还有电话、密码等信息。详细设计如表4.2所示。表4.2管理员信息表字段名字段类型长度备注idint50主键namevarchar30姓名passwordvarchar50密码phonevarchar11电话rolevarchar30角色标识usernamevarchar用户名avatorvarchar头像emailvarchar30邮箱3.场地信息表(site)记录和管理场地信息数据,包含了场地的名称、价格、状态等重要字段。此外还有分类、描述等信息。详细设计如表4.3所示。表4.3场地信息表字段名字段类型长度备注idint50主键namevarchar30场地名称avatarvarchar场地图片department_idvarchar11场地分类iddescriptionvarchar255场地描述moneyvarchar场地价格statusvarchar10场地状态4.预约表(reserve)记录预约记录的信息数据包含多个字段,其中关键信息包括预约场地的时间段和用户id,此外还包含预约状态、用户id等信息。详细设计如表4.4。表4.4预约信息表字段名字段类型长度备注idint 50主键site_idint50场地IDhoursvarchar255预约场地时间段timedatetime预约场地时间段user_idint50用户IDstateint预约状态1已预约2已取消3已完成4失效5.热度信息表(heats)记录预约热度信息,包含场地id和场地id等关键字段。剩余还有场地类型和场地名称id等信息。这些字段共同描述了热度信息表的属性。详细设计如表4.5所示。表4.5热度信息表字段名字段类型长度备注idint50主键Heatint热度department_idvarchar50运动场地类型ids_idint50运动场地名称id6.教练信息表(coach)记录教练的信息数据,包括姓名、职业等级、所属场馆、任教时间等关键字段,其余还有性别、所属场馆、教练状态等信息。这些字段共同描述了教练表的属性。详细设计如表4.6所示。表4.6教练信息表字段名字段类型长度备注idint50主键namevarchar30姓名gendervarchar30性别1男2女3其他agevarchar30年龄castevarchar职业等级0一级1二级2三级3高级4国家级department_idvarchar50教练所属场馆statestatevarchar30教练状态1休假2在场3离职teaching_timeDate任教时间7.器材信息表(material)记录器材的信息,包括分类、使用状态等关键字段。其余还有器材名字等信息。详细设计如表4.7所示。表4.7器材信息表字段名字段类型长度备注idint50主键namevarchar30器材名字countvarchar255数量descriptionvarchar50器材描述equipment_idint30器材分类numbervarchar50编号statusvarchar255使用的状态8.通知信息表(notice)记录通知的信息数据,包括创建人、状态等关键字段,剩余还有标题、创建人、内容等信息,这些字段共同描述了通知信息表的属性。详细设计如表4.8所示。表4.8通知信息表字段名字段类型长度备注idint50主键uervarchar30创建人statevarchar50状态titlevarchar50标题contentint255内容timevarchar50创建时间9.资讯信息表(information)为了记录资讯的信息,包括资讯内容、标题等重要字段。详细设计如表4.9所示。表4.9资讯信息表字段名字段类型长度备注idint50主键avatarvarchar资讯图片contentvarchar50资讯内容titlevarchar50资讯标题information_partint30资讯分类idtimevarchar发布的时间usernamevarchar50发布人10.定时任务信息表(quartz_job)用于记录和管理定时任务的信息数据。它包含了创建日期、方法名称、任务名称等关键字段,剩余还有cron表达式、任务状态等信息。详细的设计参考表4.10。表4.10定时任务信息表字段名字段类型长度备注idbigint50主键IDbean_namevarchar50SpringBean名称create_timedatetime创建日期cron_expressionvarchar50cron表达式is_pausebit状态:1暂停、0启用job_namevarchar50任务名称method_namevarchar50方法名称paramsvarchar50参数remarkvarchar50备注11.器材租借信息表(material_lease)该表用于记录和管理器材租借的信息。它包含了用户id、租借数量和状态等关键字段。另外还包括租借时间和归还时间等信息。这些字段信息共同构成了器材租借信息表。详细的表结构设计请参考表4.11。表4.11器材租借信息表字段名字段类型长度备注idbigint50主键IDmaterial_idvarchar50器材iduser_idvarchar50用户idquantityvarchar50租借数量statevarchar状态:0正在借用1归还creat_timedatetime0租借时间return_timedatetime0归还时间12.交易记录表(amount)该表用于记录交易记录的信息。包含支付方式、支付用途等关键字段。其他还包含用户id、交易时间、本次消费等信息。详细的表结构设计请参考表4.12。表4.12交易记录信息表字段名字段类型长度备注idbigint50主键IDpay_amountdecimal12本次消费user_idvarchar50用户idcreate_timedatetime0交易时间statevarchar消费形式:0充值1预约消费pay_typevarchar50支付方式:0微信1个人账户pay_purposevarchar50支付用途

5系统实现5.1移动端小程序的实现在小程序端中,主要有注册登录、首页显示通知公告及活动信息、场馆及场地信息显示、场地预约、修改个人信息、更改密码等功能。5.1.1用户登录注册模块用户用户在进入系统前,需进行快速注册。在进行快速注册时,会根据输入数据的现实情况判断数据库中是否存在相同账号,当检测到不合规情况时,系统会根据情况给出相应的具体提示。例如,用户名已经存在,系统将提示“用户名已存在”;如果密码不一致,系统将提示“密码不一致”;如果密码长度不符合要求,系统将提示“密码长度不符合”。其中账号所输入内容未设条件,中英文均可,密码要求为6-12位。在设置密码时,为避免错误操作,用户需输入第二次次密码进行确认。注册成功后,自动跳转至登录页面。用户登录注册效果图如图5.1所示。图5.1用户登录注册效果图登录注册关键代码如下:publicAccountlogin(Accountaccount){AccountdbUser=userMapper.selectByUsername(account.getUsername());if(ObjectUtil.isNull(dbUser)){thrownewCustomException(ResultCodeEnum.USER_NOT_EXIST_ERROR);}if(!account.getPassword().equals(dbUser.getPassword())){thrownewCustomException(ResultCodeEnum.USER_ACCOUNT_ERROR);}StringtokenData=dbUser.getId()+"-"+RoleEnum.USER.name();Stringtoken=TokenUtils.createToken(tokenData,dbUser.getPassword());dbUser.setToken(token);returndbUser;}//注册publicvoidregister(Accountaccount){Useruser=newUser();BeanUtils.copyProperties(account,user);add(user);}5.1.2系统首页及公告显示模块用户成功登录后,进入系统首页,进入后首先弹出公告信息展示。用户浏览结束后,点击右上角,即可关闭公告栏,随即显示“活动公告”信息展示,浏览结束后,点击右上角“×”,即可关闭。效果图如图5.2所示。图5.2公告及活动公告显示效果图5.1.3系统首页用户进入系统,浏览完公告信息之后,即可看到系统首页。首页主要设计的功能模块有场地预约和个人信息管理。系统首页列有场馆名称,用户可自主进行选择查看场馆,另外首页还设有搜索设置,用户可直接通过搜索,寻找自己心仪的场馆。效果图如图5.3所示。图5.3系统首页效果图5.1.4场馆及场地信息显示界面用户找到适合场馆后,可进行下设场地详情信息的查看,包括场地位置、介绍、价格等。同时用户可对可用场地进行预约操作。场馆及场地信息显示效果图如图5.4所示。图5.4场馆及场地信息显示效果图5.1.5预约模块用户预约模块作为体育馆预约管理系统的核心组成部分,其主要目标是为用户提供便捷的场地预约服务。用户可以通过该模块轻松查阅各类场地的详细信息,如场地名称、描述以及价格等。此外,用户还可以根据自己的需求,在系统中灵活选择适合的时间段进行预约。在预约过程中,系统会清晰地展示预约的日期和锻炼时间段,以便用户随时了解预约的详细情况。这一功能不仅简化了预约流程,还提升了用户体验,使用户能够高效、准确地预约到心仪的体育场地。图5.5为预约日期及时间选择效果图。图5.5预约日期及时间选择效果图系统还为用户提供了预约记录的查看功能,使用户能够方便地查阅自己的预约历史。此外,用户还可以根据实际需求随时取消已预约的场地。用户预约模块为体育馆的客户提供了便捷的预约服务,提升了用户体验和预约管理的效率。具体效果图如图5.6所示。图5.6用户预约记录显示效果图关键代码如下:List<ReserveVO>list=reserveMapper.selectAll(reserve);for(ReserveVOdbReserve:list){if(dbReserve.getTime().equals(reserve.getTime())){if(dbReserve.getHours().equals(reserve.getHours())){thrownewCustomException(ResultCodeEnum.RESERVE_ERROR);}}}AccountcurrentUser=TokenUtils.getCurrentUser();reserve.setUserId(currentUser.getId());reserveMapper.insert(reserve);Heatsheats=newHeats();Heatsheat=heatsMapper.selectBysId(reserve.getSiteId());heats.setId(heat.getId());heats.setHeat(heat.getHeat()+1);heatsMapper.updateById(heats);}5.1.6定时任务注入模块在用户执行完预约操作后,系统会执行定时任务操作。判断预约记录里的预约状态。具体执行描述如下:本次定时任务于2024年03月15日11时48分启动,按照预先设置的调度计划,成功在指定时间间隔(每5秒执行一次)内执行了操作。执行内容概述:任务成功地从数据库表中获取最新数据,并按照预设规则对数据库中的相关预约记录进行了更新。在执行定时任务后,预约表里面所有过期的预约状态都变成失效。任务执行过程中的每一步操作都被详细记录在日志文件中,包括开始和结束时间、执行的具体操作以及任务名称、方法名称。执行效果分析:任务执行过程中,定时任务执行时是单独新建的线程,运行时不影响其他线程。本次任务连续执行了多个周期,在每天的9,12,17,22点执行,未出现中断或异常情况,表现出良好的稳定性。综上所述,本次定时任务执行效果良好,达到了预期目标。定时任务执行成功效果图如5.7所示。图5.7定时任务成功注入效果图关键代码如下:publicvoidaddJob(QuartzJobquartzJob){try{JobDetailjobDetail=JobBuilder.newJob(ExecutionJob.class).withIdentity(JOB_NAME+quartzJob.getId()).build();TriggercronTrigger=newTrigger().withIdentity(JOB_NAME+quartzJob.getId()).startNow().withSchedule(CronScheduleBuilder.cronSchedule(quartzJob.getCronExpression())).build();cronTrigger.getJobDataMap().put(QuartzJob.JOB_KEY,quartzJob);((CronTriggerImpl)cronTrigger).setStartTime(newDate());scheduler.scheduleJob(jobDetail,cronTrigger);if(quartzJob.getIsPause()){pauseJob(quartzJob);}}5.1.7个人信息模块用户页面可进行余额充值操作,以及查看个人的详细信息、我的租借和交易记录。在个人信息界面的最下方,用户可以选择退出登录。用户界面效果图如图5.8所示。在此界面可进行个人信息的修改。例如修改姓名、电话和邮箱地址。个人信息修改如图5.9所示。在本界面头像右侧,有“去充值”按钮,可进行账户余额操作。充值完可在交易记录查看,交易记录查看效果图如图5.10所示。此外,用户还可以在此界面进行密码修改操作,以确保账户安全。修改密码操作:先输入原密码,其次在修改密码时,为避免误操作需要用户两次输入新密码,即可进行密码修改,若两次密码输入有误,会弹出“密码不一致”的提示。修改密码操作如图5.11所示。图5.8用户界面图5.9个人信息修改界面图5.10交易记录界面图5.11修改密码界面修改密码关键代码如下:publicvoidupdatePassword(Accountaccount){UserdbUser=userMapper.selectByUsername(account.getUsername());if(ObjectUtil.isNull(dbUser)){thrownewCustomException(ResultCodeEnum.USER_NOT_EXIST_ERROR);}if(!account.getPassword().equals(dbUser.getPassword())){thrownewCustomException(ResultCodeEnum.PARAM_PASSWORD_ERROR);}dbUser.setPassword(account.getNewPassword());userMapper.updateById(dbUser);}5.1.8器材租借模块用户在完成到场签到后可直接在小程序端进行器材租借。可直接在小程序端进行器材租借操作。这一功能使得租借操作更加简单且容易操作。无需再进行繁琐的线下申请和等待。只需在小程序端即可完成租借操作,大大提升了用户体验和租借效率。小程序提供了直观易用的界面,使用户能够轻松浏览并选择所需的器材,然后按照系统提示完成租借流程。为用户带来了更加便捷和高效的服务体验。效果图如图5.12所示。图5.12器材租借和归还界面效果图5.1.9地图导航模块在场地详情页上,设置了地图导航功能。用户可以点击地图,然后使用手机上的导航应用程序,方便地前往体育馆。这项功能使用户能够轻松找到目的地,提升了使用体育馆小程序的便利性和舒适度。效果图如图5.13所示。图5.13地图导航页面效果图关键代码如下:<mapid="myMap"class="map-class"longitude="{{mbLocal.longitude}}"latitude="{{mbLocal.latitude}}"markers="{{markers}}"bindregionchange="onDregionChange"bindlabeltap="onClickMarker"bindtap="onMapClikc"></map>5.1.10预约支付模块用户在选择场地和预约时间段后,需要进行场地费用的支付。这一步骤是用户确认预订的重要环节,通过支付操作,用户确保了场地的预约生效,并为体育馆服务支付费用。完成支付后,预约记录里即显示该条预约记录。支付效果图如图5.14所示。图5.14预约支付页面效果图5.1.11余额充值模块在个人信息界面提供了便捷的余额充值功能。进入该界面后,用户可以轻松找到充值按钮,并按照系统提示进行充值操作。通过输入充值金额、选择支付方式等步骤,用户即可完成余额的充值过程。效果图如图5.15所示。图5.15余额充值页面效果图5.2管理系统PC端的实现WEB端为管理员对各项数据进行后台管理的界面。5.2.1WEB端登录页面管理员登录界面如图5.16所示。要求管理员输入用户名、密码和验证码,在填完必填项后,点击登录,系统进行信息校验,若输入的信息与数据库相符,则成功登录并跳转至首页,继而进行相关操作;若信息有误,系统将即时显示具体的错误信息,提示重新登陆。图5.16登录界面效果图管理员登录关键代码如下:publicAccountlogin(Accountaccount){AccountdbAdmin=adminMapper.selectByUsername(account.getUsername());if(ObjectUtil.isNull(dbAdmin)){thrownewCustomException(ResultCodeEnum.USER_NOT_EXIST_ERROR);}if(!account.getPassword().equals(dbAdmin.getPassword())){thrownewCustomException(ResultCodeEnum.USER_ACCOUNT_ERROR);}StringtokenData="";if(account.getRole().equals(RoleEnum.ADMIN.name())){tokenData=dbAdmin.getId()+"-"+RoleEnum.ADMIN.name();}if(account.getRole().equals(RoleEnum.COACH.name())){tokenData=dbAdmin.getId()+"-"+RoleEnum.ADMIN.name();}Stringtoken=TokenUtils.createToken(tokenData,dbAdmin.getPassword());dbAdmin.setToken(token);returndbAdmin;}在管理员登录界面为增强系统安全性,设置了验证码输入环节,确保只有正确的管理员才可以访问系统和相关服务。本系统验证码设置为为4位的数字,每次点击都会重新生成新的图片增加了破解的难度。同时,验证码设计为易于分辨的彩色数字,在保证数据安全的同时,提高用户体验和识别度。图5.17所示。图5.17登录界面验证码效果图生成验证码关键代码如下:@GetMapping("/getValidateCode")publicvoidgetValidateCode(HttpServletRequestrequest,HttpServletResponseresponse){ValidateCodePropertiescode=newValidateCodeProperties();setHeader(response,code.getType());Captchacaptcha=createCaptcha(code);ValidateCodeCache.setCache(request.getParameter("key"),captcha.text().toLowerCase());try{captcha.out(response.getOutputStream());}catch(IOExceptione){e.printStackTrace();thrownewCustomException(ResultCodeEnum.VALIDATE_CODE_ERROR);}}privatevoidsetHeader(HttpServletResponseresponse,Stringtype){if("gif".equalsIgnoreCase(type)){response.setContentType(MediaType.IMAGE_GIF_VALUE);}response.setHeader(HttpHeaders.PRAGMA,"No-cache");response.setHeader(HttpHeaders.CACHE_CONTROL,"no-cache");response.setDateHeader(HttpHeaders.EXPIRES,0L);}5.2.2系统首页管理员成功登录后,进入系统主页界面。管理员在该页面上能够执行一系列管理操作,涵盖了信息管理、用户管理、器材管理、场地管理以及预约管理等多个方面。主页右侧可看到发布的公告列表。如图5.18所示。图5.18系统首页效果图5.2.3信息管理模块信息管理模块是体育馆管理系统的核心之一,主要涵盖了信息发布、热度管理和资讯分类及管理服务。信息管理界面主要负责对系统公告、活动通知、各个场地的预约热度以及其他相关消息进行增删改查操作和查询操作,确保及时传达消息给用户。界面如图5.19所示。图5.19信息管理界面效果其中热度信息模块是体育馆管理系统的亮点之一,运用柱状图和扇形图,可以让管理员更加清晰了当的看出各个场地的预约次数。热度信息可以帮助管理员了解用户对不同场地信息的关注程度,从而优化场地信息的展示和发布策略,提高信息的曝光率和吸引力。热度信息界面如图5.20所示。图5.20热度信息界面效果图关键代码如下:heat(){this.heatData=this.heatData.map((item)=>{return{value:item.heat,name:item.siteName};});},aggregatedItems(){constdepartmentHeatMap={};this.heatData.forEach((item)=>{if(departmentHeatMap[item.departmentName]){departmentHeatMap[item.departmentName]+=item.heat;}else{departmentHeatMap[item.departmentName]=item.heat;}});for(constdepartmentNameindepartmentHeatMap){this.department.push({name:departmentName,value:departmentHeatMap[departmentName],});}console.log(this.department);},体育馆资讯分为馆内公告和活动通知。公告主要为馆内场地修缮及其他事务通知,活动通知则是体育馆举办的日常活动。管理员可以在资讯管理对馆内公告和活动信息进行增删改查操作,还可以编辑已发布的信息以及修改信息中的图片。具体效果图可参考图5.21和图5.22。图5.21资讯信息分类效果图图5.22修改资讯图片效果图资讯活动数据增删改关键代码如下:@PostMapping(value="/api/activity")publicObjectadd(@Validated@RequestBodyActivityactivity){activityService.insert(activity);returnResult.success();}@PostMapping("/api/activity/delete/{id}")publicObjectdelete(@PathVariable(value="id")Longid){activityService.delete(id);returnResult.success();}@PostMapping(value="/api/activity/update")publicObjectupdate(@Validated@RequestBodyActivityactivity){activityService.update(activity);returnResult.success();}5.2.4用户管理模块用户管理模块作用在于管理系统的人员信息。如图5.23所示,管理员可以在该模块中轻松对用户和教练的信息进行操作。此外,用户管理模块还提供了新增用户的功能,管理员可以直接添加用户数据。同时管理员也可删除不再需要的用户账户。通过对用户数据的统计和分析,管理员可以了解用户活跃度和注册趋势,为系统的优化和改进提供重要参考。如图5.24所示。图5.23用户管理界面效果图图5.24新增教练信息效果图5.2.5器材管理界面该模块详细记录器材的名称、数量、使用状态等信息,方便管理人员快速查询和定位器材。还可更新器材的状态,如可使用、已损坏等,确保器材的使用情况一目了然。通过器材管理模块,可以实现对器材的高效管理,降低器材丢失和损坏的风险,提高器材使用效率。效果图如图5.25所示。图5.25器材管理效果图5.2.6场地管理界面在场地管理模块中,管理员可以进行全面的场地管理。该模块的核心目标是实现对体育馆内各类场地的高效管理与维护,确保场地的正常运行和优质使用体验。管理员可以对现有场地进行编辑、更新和删除操作,还可随时更新场地状态,以确保场地信息的准确性和完整性。如图5.26所示。图5.26场地管理效果图5.2.7预约管理界面在该模块中,主要实现对预约用户信息的管理,使管理员能够清楚地了解每位用户的身份和预约情况。此模块还提供对预约信息的查找和删除功能,管理员可以根据需要检索特定用户的预约信息。在此模块中,通过定时任务去处理过期的预约,数据库表中有四种预约状态显示:1已预约2已取消3已完成4失效。页面显示中,已过期的预约只能进行删除预约操作。如图5.27所示。未进行的预约可进行编辑操作。图5.27用户预约管理界面效果图关键代码如下:<el-table:data="tableData"strip@selection-change="handleSelectionChange"><el-table-columntype="selection"width="55"align="center"></el-table-column><el-table-columnprop="id"label="序号"width="70"align="center"sortable></el-table-column><el-table-columnprop="userName"label="用户姓名"></el-table-column><el-table-columnprop="siteName"label="场地名称"></el-table-column><el-table-columnlabel="场地图片"><templatev-slot="scope"><divstyle="display:flex;align-items:center"><el-imagestyle="width:40px;height:40px;"v-if="scope.row.siteAvatar":src="scope.row.siteAvatar":preview-src-list="[scope.row.siteAvatar]"></el-image></div></template></el-table-column><el-table-columnprop="hours"label="场地场次"></el-table-column><el-table-columnprop="time"label="预约时间"></el-table-column><el-table-columnlabel="操作"align="center"width="180"><templatev-slot="scope"><el-buttonsize="mini"type="primary"plain@click="handleEdit(scope.row)"v-if="scope.row.state===1">编辑</el-button><el-button:class="{'btn_1':scope.row.state===1,'btn_2':scope.row.state===2}"size="mini"type="primary"plain@click="reservation(scope.row)">{{scope.row.state===1?"取消预约":"删除预约"}}</el-button></template></el-table-column></el-table>5.2.8管理员修改密码界面管理员也可以进行修

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论