体育馆场地管理系统1.0-2.0
发布时间:2025-12-10 11:27:58
浏览次数:2
文章目录
- 前言
- 1.0版本
- 1.项目功能简述
- 2.项目目录结构
- 3.数据库设计
- 4.前端逻辑设计
- 5.后端逻辑设计
前言
去年大二的时候,学校让我们自己做工程实践项目,我和队友选择了做体育馆场地管理系统。那个时候我们在网上找相关的技术博客、开源项目等就发现很少,今年五月份,我们又重构了之前的系统。所以,我准备写一篇文章介绍一下我们的体育馆场地管理系统。
1.0版本
1.项目功能简述
- 该项目分为和用户交互的部分(前台)和管理员部分(后台)两个部分
- 前台功能:登录注册部分、首页部分、个人中心部分
2.项目目录结构
- 1.0版本使用原生Javaee+Jsp+Mysql,采用mvc分层方式搭建。
- 数据库连接工具使用的是Commons,同时用到了封装的一些sql封装操作。
- 用原生监听器完成定时任务。
- 原生过滤器实现安全跳转,因为有些地址是在没有登录的情况下不能访问的,这里只是用了两层目录的方式来控制。
- mvc三层中,admin和user分别对应着管理员和前台的代码实现。
- baseServlet是使用了反射,来简化原生的servlet。
3.数据库设计
表结构:
gms_admin(管理员表):只有一条信息,为管理员的gms_notice(通知表):通知信息,默认写了七条数据,太少前端展示有问题gms_order(订单表):用户下单后订单记录gms_type(场馆类型表):比如篮球场就位类型,篮球场1号…就为具体场地gms_user(用户表):存放用户注册信息gms_venue(场馆表):具体某个场馆,比如乒乓球1号,2号,3号…gms_vdstate(场馆分时状态表):一个场馆gms_venue对应多个分时状态,因为我们要展示最近三天内容,一天中以一小时间隔会有23个时间段,设计23个字符来表示状态以0,1,2分别表示三种颜色,场馆三种颜色(绿色、灰色、白色)表示状态,可以根据0,1,2就可以展示场馆状态。
01表示对应的场馆编号,第二个字段表示哪一天,0表示不可预约(灰色),1表示可预约(白色),2表示已预约(黄色),后面23个字符,比如这里第一个2在第十三个字符位置,所以12:00-13:00位已预约
4.前端逻辑设计
以上部分的解释如下:
红点1这里使用的是Bootstrap的标签页,我们点击需要的场馆(红点2),下面就会展示对应的场馆信息(红点3)场馆类型(红点2),通知消息(红点4),页面加载的时候就用ajax加载了所有的场馆类型并且展示,今日日期(红点5)也是页面加载的时候就进来了红点6是通过红点2和红点5即场馆类型和当前日期去查询数据库查出来的具体逻辑:首先在页面加载的时候,场馆类型,详细信息,通知信息,当前日期,这些可以直接在ajax中获取并展示出来,然后在场馆类型的每个类型里面设置一个方法,点击这个方法的时候就会获取当前的日期,这样就可以直接请求获取所有场馆信息了。注意: 但是每次点击的时候必须先清除上一次展示的场馆信息,否则就会重叠。还有个问题,当我们点击了这个场馆选择后,变为绿色了,又去另外一个界面点击一下,返回过来绿色消失了,所以必须记录下这个颜色然后在展示列表信息。5.后端逻辑设计
选择场馆的时候,我们需要生成一张订单表,同时修改数据库分时状态表的状态,告诉前台这个场馆被人预约了,同时要插入一条订单表到数据库,这两个操作是保持一致性的,所以要加事务控制。订单在个人中心是可以提前取消预约的,那我们还是要修改分时状态表,以及修改订单表的状态为已取消,也要加事务控制。定时任务是指:前端展示的时候显示了这一天的场馆这状态,比如当前时间是12:00,那么12:00之前的场馆状态就必须被修改为不可预约,避免用户再预约之前的场馆导致问题。同时,订单表也要修改,因为如果有些人预约的是12:00-13:00的场馆,当前时间已经为13:01的时候,这个订单要么被用户使用了,要么超时了,我们都需要将这个订单设置为已完成订单状态,每隔一分钟修改一次。简单的登录、注册、修改密码、注销登录这里就不提了,还有个导出订单表的操作,是自己写的工具类,会调用就行了。