体育馆场地管理系统1.0-2.0

前言

去年大二的时候,学校让我们自己做工程实践项目,我和队友选择了做体育馆场地管理系统。那个时候我们在网上找相关的技术博客、开源项目等就发现很少,今年五月份,我们又重构了之前的系统。所以,我准备写一篇文章介绍一下我们的体育馆场地管理系统。

1.0版本

1.项目功能简述
  • 该项目分为和用户交互的部分(前台)和管理员部分(后台)两个部分
  • 前台功能:登录注册部分、首页部分、个人中心部分
    在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

  • 后台功能:登录部分、功能查询部分
    在这里插入图片描述
    在这里插入图片描述
2.项目目录结构

在这里插入图片描述

  • 1.0版本使用原生Javaee+Jsp+Mysql,采用mvc分层方式搭建。
  • 数据库连接工具使用的是c3p0,数据库操作用的Commons,同时用到了封装的一些sql封装操作。
  • 用原生监听器完成定时任务。
  • 原生过滤器实现安全跳转,因为有些地址是在没有登录的情况下不能访问的,这里只是用了两层目录的方式来控制。
  • mvc三层中,admin和user分别对应着管理员和前台的代码实现。
  • baseServlet是使用了反射,来简化原生的servlet。
3.数据库设计

表结构:
在这里插入图片描述

  1. gms_admin(管理员表):只有一条信息,为管理员的
  2. gms_notice(通知表):通知信息,默认写了七条数据,太少前端展示有问题
  3. gms_order(订单表):用户下单后订单记录
  4. gms_type(场馆类型表):比如篮球场就位类型,篮球场1号…就为具体场地
  5. gms_user(用户表):存放用户注册信息
  6. gms_venue(场馆表):具体某个场馆,比如乒乓球1号,2号,3号…
  7. gms_vdstate(场馆分时状态表):一个场馆gms_venue对应多个分时状态,因为我们要展示最近三天内容,一天中以一小时间隔会有23个时间段,设计23个字符来表示状态以0,1,2分别表示三种颜色,场馆三种颜色(绿色、灰色、白色)表示状态,根据0,1,2就可以展示场馆状态。
    在这里插入图片描述

01表示对应的场馆编号,第二个字段表示哪一天,0表示不可预约(灰色),1表示可预约(白色),2表示已预约(黄色),后面23个字符,比如这里第一个2在第十三个字符位置,所以12:00-13:00位已预约

4.前端逻辑设计

在这里插入图片描述
以上部分的解释如下:

  1. 红点1这里使用的是Bootstrap的标签页,我们点击需要的场馆(红点2),下面就会展示对应的场馆信息(红点3
  2. 场馆类型(红点2),通知消息(红点4),页面加载的时候就用ajax加载了所有的场馆类型并且展示,今日日期(红点5)也是页面加载的时候就进来了
  3. 红点6是通过红点2红点5场馆类型当前日期去查询数据库查出来的
  4. 具体逻辑:首先在页面加载的时候,场馆类型,详细信息,通知信息,当前日期,这些可以直接在ajax中获取并展示出来,然后在场馆类型的每个类型里面设置一个方法,点击这个方法的时候就会获取当前的日期,这样就可以直接请求获取所有场馆信息了。注意: 但是每次点击的时候必须先清除上一次展示的场馆信息,否则就会重叠。还有个问题,当我们点击了这个场馆选择后,变为绿色了,又去另外一个界面点击一下,返回过来绿色消失了,所以必须记录下这个颜色然后在展示列表信息。
5.后端逻辑设计
  1. 选择场馆的时候,我们需要生成一张订单表,同时修改数据库分时状态表的状态,告诉前台这个场馆被人预约了,同时要插入一条订单表到数据库,这两个操作是保持一致性的,所以要加事务控制。
  2. 订单在个人中心是可以提前取消预约的,那我们还是要修改分时状态表,以及修改订单表的状态为已取消,也要加事务控制。
  3. 定时任务是指:前端展示的时候显示了这一天的场馆这状态,比如当前时间是12:00,那么12:00之前的场馆状态就必须被修改为不可预约,避免用户再预约之前的场馆导致问题。同时,订单表也要修改,因为如果有些人预约的是12:00-13:00的场馆,当前时间已经为13:01的时候,这个订单要么被用户使用了,要么超时了,我们都需要将这个订单设置为已完成订单状态,每隔一分钟修改一次。
  4. 简单的登录、注册、修改密码、注销登录这里就不提了,还有个导出订单表的操作,是自己写的工具类,会调用就行了。

2.0版本

1.上个版本的问题
  1. 没有考虑线程安全问题—>多个用户同时预约同一个场馆。
  2. 分时状态表的设计问题,以23个字符来控制每个时间段的状态会导致很多问题。
  3. 访问权限问题以及安全跳转问题。
2.项目目录结构–用户部分

在这里插入图片描述

  1. 项目还是两部分,管理员和用户,由于是两个人开发的,所以用了两个端口号,只是操作的同一个数据库。
  2. 2.0在1.0的基础上使用SpringBoot+Vue搭建,其中Vue只是用来当模板引擎,用jquery操作。
  3. 项目使用maven构建,使用git作为项目版本管理。
  4. 数据库连接使用druid,数据库操作使用MyBatis框架。
  5. 使用thymeleaf作为url跳转使用,前后端使用json传输数据,实现前后端分离。
  6. 使用邮件发送通知,同时使用消息队列rabbitMq异步发送邮件。
  7. 使用Spring Security作为权限管理,控制地址访问安全问题。
  8. 使用加锁的方式解决线程安全问题,并用jmeter压力测试。
  9. 管理员改动不大,springboot+vue+定时任务+spring security
  10. 后续可继续改进:将分时状态表改为每个时间段一个,增加redis缓存以让首页减小压力。
3.改造后

登录注册:
在这里插入图片描述
首页部分:
在这里插入图片描述

  1. 之前是通过一个中间界面来展示预约的信息,但是在前后端分离中很难设计,需要跳转,所以我在首页点击的下面展示点中的场馆,这样的话也为以后点击多个场馆预约留下了接口。
  2. 这里其实用了加锁的操作,具体思路在项目的改造思路_User.md里面
    个人中心部分:
    在这里插入图片描述

为什么要用rabbitMq来发送异步邮件:

  1. 当我们选择好场馆提交后就要执行发送邮件任务,由于发送邮件很慢,所以放到消息队列里会好很多
  2. 也可以自己手动创建一个线程来专门发送邮件,这里只是为了锻炼一下自己的消息队列使用情况
  3. 如果不想发送邮件可以在代码中注释点,代码里的注释很详细
4.改造思路

管理员和用户部分的改造思路都在我的项目里面,大家可以通过在我的github上面看到,这里就不详述了。

5.其他说明
  1. 项目的搭建过程以及需要注意的事项我都放在github上面了。
  2. 本文我并未介绍管理员部分的功能和代码设计,其中还是有很多比一般管理员部分设计的好的地方。
  3. 文中提到的内容均为大的点,很多小的细节,在1.0中可能并没有全部记录,但是2.0中都记录到了改造思路里面。
  4. 转载请附加原文链接

项目地址

如果你对源码感兴趣的话,以下是我的项目的两个链接,其中包含了详细的搭建过程,如果觉得可以的话,麻烦点个star,谢谢。
1.0版本github链接

2.0版本github链接

  • 38
    点赞
  • 105
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
在旅游景区,经常会遇到游客打听从一个景点到另一个景点的最短路径和最短距离,这类游客不喜欢按照导游图的线路来游览,而是挑选自己感兴趣的景点游览。为于帮助这类游客信息查询,就需要计算出所有景点之间最短路径和最短距离。算法采用迪杰斯特拉算法或弗洛伊德算法均可。建立一个景区旅游信息管理系统,实现的主要功能包括制订旅游景点导游线路策略和制订景区道路铺设策略。 任务中景点分布是一个无向带权连通图,图中边的权值是景点之间的距离。 (1)景区旅游信息管理系统中制订旅游景点导游线路策略,首先通过遍历景点,给出一个入口景点,建立一个导游线路图,导游线路图用有向图表示。遍历采用深度优先策略,这也比较符合游客心理。 (2)为了使导游线路图能够优化,可通过拓朴排序判断图中有无回路,若有回路,则打印输出回路中的景点,供人工优化。 (3)在导游线路图中,还为一些不愿按线路走的游客提供信息服务,比如从一个景点到另一个景点的最短路径和最短距离。在本线路图中将输出任意景点间的最短路径和最短距离。 (4)在景区建设中,道路建设是其中一个重要内容。道路建设首先要保证能连通所有景点,但又要花最小的代价,可以通过求最小生成树来解决这个问题。本任务中假设修建道路的代价只与它的里程相关。 归纳起来,本任务有如下功能模块:(1)创建景区景点分布图;(2)输出景区景点分布图(邻接矩阵)(3)输出导游线路图;(4)判断导游线路图有无回路;(5)求两个景点间的最短路径和最短距离;(6)输出道路修建规划图。(7)主程序用菜单选项供用户选择功能模块。  
### 回答1: linewaves-2.0是一种新型的行为感应设备,可用于监测人们在特定环境中的运动和行为。它的主要特点是采用了先进的感应技术和人工智能算法,能够精确地识别和分析人的动作和活动。 linewaves-2.0具有多种应用场景。在室内环境中,它可以用于安防监控,通过识别人的行走轨迹和姿势,可以及时发现和报警可能的入侵者或异常行为。此外,它还可以应用于老年人和病患的监护,通过分析日常行为习惯变化来提供必要的关怀和帮助。 在商业领域中,linewaves-2.0可以作为一种市场调查工具。通过记录和分析人们在商店或购物中心中的行为模式,可以帮助商家了解顾客的需求和购买习惯,更好地做出营销策略。 此外,linewaves-2.0还可以应用于体育训练和健康管理领域。它可以精确地测量人的运动轨迹、姿势和速度,帮助运动员改善技术和提高训练效果。对于普通人来说,它可以监测日常活动量和姿势,提醒保持良好的生活习惯和姿势,预防慢性疾病的发生。 总之,linewaves-2.0是一种创新的行为感应设备,具有广泛的应用前景。它能够通过识别、分析和记录人的动作和活动,帮助监控安全、改善生活质量和提供个性化服务。 ### 回答2: LineWaves-2.0是一种新型的声波通讯技术,它是LineWaves-1.0的升级版。与之前的版本相比,LineWaves-2.0在传输效率、抗干扰能力和覆盖范围上都有了显著的改进。 首先,LineWaves-2.0的传输效率更高。它采用了新的编码和解码算法,可以实现更高速的数据传输。此外,它还利用了提高数据压缩和数据流管理的技术,有效地减少了数据传输过程中的延迟,提高了用户体验。 其次,LineWaves-2.0具备强大的抗干扰能力。通过广泛应用先进的信号处理和调制技术,它能够在复杂的环境中准确地抑制干扰信号。这使得LineWaves-2.0在嘈杂的环境中也能保持稳定的通讯质量,减少了信号丢失和失真的风险。 最后,LineWaves-2.0的覆盖范围更广。相比LineWaves-1.0,它的传输距离得到了扩大,可以实现更远距离的通讯。这使得用户可以在更广阔的区域内实现稳定的声波通讯,无需担心通讯中断问题。 总的来说,LineWaves-2.0是一种强大的声波通讯技术,它在传输效率、抗干扰能力和覆盖范围上都有了显著的提升。它的出现将为我们的通讯提供更可靠、高效和稳定的选择,为人们的生活带来更多便利。 ### 回答3: linewaves-2.0是一种新型的亚光和素雅的设计风格,适合于各种室内装修和家居设计。它结合了线条和波浪的元素,创造了一种流动而又有节奏感的空间氛围。 linewaves-2.0的设计理念是打造简洁、舒适和现代化的家居体验。其亚光的颜色和纹理能够为房间增添一种柔和而宁静的氛围。这种独特的设计风格适用于各种室内空间,无论是客厅、卧室还是办公室,都能创造出一种温馨而具有时尚感的环境。 linewaves-2.0设计的重点是线条和波浪的组合。线条元素带来一种简洁和几何感,使空间看起来更加整洁和有序。波浪元素则为空间增添了一种自然和流动感,使整个环境更加宜人和舒适。这种线条和波浪的组合创造了一种独特的美感,给人一种时尚、雅致的视觉享受。 linewaves-2.0还注重细节的处理,包括家具、灯具和装饰物等。它倡导以简洁和功能性为核心,注重材质的选择和工艺的精细。线条的运用使得家具看起来更为轻盈和时尚,而波浪的元素则为家居增添了一种柔和和温暖的感觉。 总的来说,linewaves-2.0是一种独特而具有时尚感的设计风格,它通过线条和波浪的组合,创造了一种流动、舒适和现代化的室内环境。无论是对于家庭还是办公空间,它都能营造出一种简洁、雅致和舒适的氛围,为人们带来愉悦的视觉和心灵享受。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值