• SpringBoot+Vue实现前后端分离的乒乓球馆预约管理系统


    文末获取源码

    开发语言:Java
    开发工具:IDEA /Eclipse
    数据库:MYSQL5.7/8.0
    应用服务:Tomcat7/Tomcat8
    是否Maven项目:是
    后端框架:SpringBoot
    前端框架:vue+element等
    JDK版本:jdk1.8
    项目架构:B/S架构

    前言介绍 

    随着信息化时代的到来,管理系统都趋向于智能化、系统化,乒乓球馆预约管理系统

    也不例外,但目前国内仍都使用人工管理,市场规模越来越大,同时信息量也越来越庞大,人工管理显然已无法应对时代的变化,而乒乓球馆预约管理系统能很好地解决这一问题,轻松应对乒乓球馆预约平时的工作,既能提高人力物力财力,又能加快工作的效率,取代人工管理是必然趋势。

    本乒乓球馆预约管理系统以springboot作为框架,b/s模式以及MySql作为后台运行的数据库,同时使用Tomcat用为系统的服务器。本系统主要包括首页,个人中心,用户管理,乒乓球场管理,场地类型管理,场地预约管理,暂离申请管理,离开申请管理,管理员管理,留言反馈,系统管理等功能,通过这些功能的实现基本能够满足日常乒乓球馆预约管理的操作。

    本文着重阐述了乒乓球馆预约管理系统的分析、设计与实现,首先介绍开发系统和环境配置、数据库的设计,接着说明功能模块的详细实现,最后进行了总结。

    总体设计

    根据乒乓球馆预约管理系统的功能需求,进行系统设计。

    前台功能:用户进入系统可以实现首页,乒乓球场,公告信息,留言反馈,个人中心,后台管理等功能进行操作;

    后台由管理员和用户,主要功能包括首页,个人中心,用户管理,乒乓球场管理,场地类型管理,场地预约管理,暂离申请管理,离开申请管理,管理员管理,留言反馈,系统管理等功能;

    系统对这些功能进行整合,产生的功能结构图如下:

     

    前台功能模块 

    乒乓球馆预约管理系统,用户进入到平台首页,乒乓球场,公告信息,留言反馈,个人中心,后台管理等内容进行操作,如图

    用户注册

    在用户注册页面中输入用户账号,密码,确认密码,用户姓名,邮箱,用户手机,等内容进行用户注册操作;如图 

    乒乓球场

    在乒乓球场页面中可以查看场地名称,场地类型状态场地大小场地地址配套设施、封面等内容;并进行场地预约,收藏操作;如图 

     

    平台公告

    在平台公告页面中可以查看标题,图片、内容等内容,如图 

    个人中心

    在个人中心页面中输入用户账号,密码,用户姓名,性别,上传图片,用户手机,等内容进行更新信息,并可以根据需要对我的收藏进行详细的操作管理,如图 

    后台功能模块 

    后台用户登录,通过填写注册时输入的用户名、密码、选择角色等信息进行登录操作,如图

    管理员功能 

    管理员登录进入乒乓球馆预约管理系统可以查看首页,个人中心,用户管理,乒乓球场管理,场地类型管理,场地预约管理,暂离申请管理,离开申请管理,管理员管理,留言反馈,系统管理等功能进行详细操作,如图

    用户管理

    在用户管理页面中可以查看索引,用户账号,用户姓名,性别,头像,用户手机等内容,并进行详情,修改和删除等操作;如图 

    乒乓球场管理

    在乒乓球场管理页面中可以查看索引,场地名称,场地图片,场地类型,场地状态,场地大小,场地地址等内容,并进行修改和删除等操作;如图 

    场地类型管理

    在项目场地类型管理页面中可以查看索引,场地类型等内容,并进行修改和删除等操作;如图 

    场地预约管理

    在场地预约管理页面中可以查看索引,场地名称,场地类型,场地大小,场地地址,预约时间,预约备注,使用状态,账号,姓名,手机号码,审核回复,审核状态,审核,并进行详情,查看,修改和删除等操作;如图 

    暂离申请管理

    在暂离申请管理页面中可以查看索引,场地名称,场地类型,场地大小,场地地址,预约时间,预约备注,账号,用户姓名,用户手机,申请原因,申请时间,审核回复,审核状态,审核等内容,并进行详情,修改和删除等操作;如图 

    离开申请管理

    在离开申请管理页面中可以查看索引,场地名称,场地类型,场地大小,场地地址,预约时间,预约备注,账号,用户姓名,用户手机,离开备注,,离开时间,审核回复,审核状态,审核等内容,并进行详情,修改和删除等操作;如图 

    系统管理

    在平台公告页面中可以查看索引,标题,图片等内容,并进行详情,修改和删除等操作;还可对轮播图管理进行详细操作;如图

     

    用户功能 

    用户登录进入乒乓球馆预约管理系统可以查看首页,个人中心,场地预约管理,暂离申请管理,离开申请管理 ,留言反馈,我的收藏管理等功能进行详细操作,如图

    个人中心

    在个人中心页面通过填写用户账号,用户姓名,性别,年龄,头像,用户手机,等内容进行个人信息修改操作;如图 

    场地预约管理

    在场地预约管理页面中可以查看索引,场地名称,场地类型,场地大小,场地地址,预约时间,预约备注,使用状态,账号,姓名,手机号码,审核回复,审核状态,并进行详情,暂离,离开,修改和删除等操作;如图 

    部分核心代码 

    1. * 后端接口
    2. * @author
    3. * @email
    4. * @date 2022-03-26 17:54:50
    5. */
    6. @RestController
    7. @RequestMapping("/diannaoxinxi")
    8. public class DiannaoxinxiController {
    9. @Autowired
    10. private DiannaoxinxiService diannaoxinxiService;
    11. /**
    12. * 后端列表
    13. */
    14. @RequestMapping("/page")
    15. public R page(@RequestParam Map<String, Object> params,DiannaoxinxiEntity diannaoxinxi,
    16. HttpServletRequest request){
    17. EntityWrapper<DiannaoxinxiEntity> ew = new EntityWrapper<DiannaoxinxiEntity>();
    18. PageUtils page = diannaoxinxiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, diannaoxinxi), params), params));
    19. return R.ok().put("data", page);
    20. }
    21. /**
    22. * 前端列表
    23. */
    24. @IgnoreAuth
    25. @RequestMapping("/list")
    26. public R list(@RequestParam Map<String, Object> params,DiannaoxinxiEntity diannaoxinxi,
    27. HttpServletRequest request){
    28. EntityWrapper<DiannaoxinxiEntity> ew = new EntityWrapper<DiannaoxinxiEntity>();
    29. PageUtils page = diannaoxinxiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, diannaoxinxi), params), params));
    30. return R.ok().put("data", page);
    31. }
    32. /**
    33. * 列表
    34. */
    35. @RequestMapping("/lists")
    36. public R list( DiannaoxinxiEntity diannaoxinxi){
    37. EntityWrapper<DiannaoxinxiEntity> ew = new EntityWrapper<DiannaoxinxiEntity>();
    38. ew.allEq(MPUtil.allEQMapPre( diannaoxinxi, "diannaoxinxi"));
    39. return R.ok().put("data", diannaoxinxiService.selectListView(ew));
    40. }
    41. /**
    42. * 查询
    43. */
    44. @RequestMapping("/query")
    45. public R query(DiannaoxinxiEntity diannaoxinxi){
    46. EntityWrapper< DiannaoxinxiEntity> ew = new EntityWrapper< DiannaoxinxiEntity>();
    47. ew.allEq(MPUtil.allEQMapPre( diannaoxinxi, "diannaoxinxi"));
    48. DiannaoxinxiView diannaoxinxiView = diannaoxinxiService.selectView(ew);
    49. return R.ok("查询电脑信息成功").put("data", diannaoxinxiView);
    50. }
    51. /**
    52. * 后端详情
    53. */
    54. @RequestMapping("/info/{id}")
    55. public R info(@PathVariable("id") Long id){
    56. DiannaoxinxiEntity diannaoxinxi = diannaoxinxiService.selectById(id);
    57. return R.ok().put("data", diannaoxinxi);
    58. }
    59. /**
    60. * 前端详情
    61. */
    62. @IgnoreAuth
    63. @RequestMapping("/detail/{id}")
    64. public R detail(@PathVariable("id") Long id){
    65. DiannaoxinxiEntity diannaoxinxi = diannaoxinxiService.selectById(id);
    66. return R.ok().put("data", diannaoxinxi);
    67. }
    68. /**
    69. * 后端保存
    70. */
    71. @RequestMapping("/save")
    72. public R save(@RequestBody DiannaoxinxiEntity diannaoxinxi, HttpServletRequest request){
    73. diannaoxinxi.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    74. //ValidatorUtils.validateEntity(diannaoxinxi);
    75. diannaoxinxiService.insert(diannaoxinxi);
    76. return R.ok();
    77. }
    78. /**
    79. * 前端保存
    80. */
    81. @RequestMapping("/add")
    82. public R add(@RequestBody DiannaoxinxiEntity diannaoxinxi, HttpServletRequest request){
    83. diannaoxinxi.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    84. //ValidatorUtils.validateEntity(diannaoxinxi);
    85. diannaoxinxiService.insert(diannaoxinxi);
    86. return R.ok();
    87. }
    88. /**
    89. * 修改
    90. */
    91. @RequestMapping("/update")
    92. public R update(@RequestBody DiannaoxinxiEntity diannaoxinxi, HttpServletRequest request){
    93. //ValidatorUtils.validateEntity(diannaoxinxi);
    94. diannaoxinxiService.updateById(diannaoxinxi);//全部更新
    95. return R.ok();
    96. }
    97. /**
    98. * 删除
    99. */
    100. @RequestMapping("/delete")
    101. public R delete(@RequestBody Long[] ids){
    102. diannaoxinxiService.deleteBatchIds(Arrays.asList(ids));
    103. return R.ok();
    104. }
    105. /**
    106. * 提醒接口
    107. */
    108. @RequestMapping("/remind/{columnName}/{type}")
    109. public R remindCount(@PathVariable("columnName") String columnName, HttpServletRequest request,
    110. @PathVariable("type") String type,@RequestParam Map<String, Object> map) {
    111. map.put("column", columnName);
    112. map.put("type", type);
    113. if(type.equals("2")) {
    114. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    115. Calendar c = Calendar.getInstance();
    116. Date remindStartDate = null;
    117. Date remindEndDate = null;
    118. if(map.get("remindstart")!=null) {
    119. Integer remindStart = Integer.parseInt(map.get("remindstart").toString());
    120. c.setTime(new Date());
    121. c.add(Calendar.DAY_OF_MONTH,remindStart);
    122. remindStartDate = c.getTime();
    123. map.put("remindstart", sdf.format(remindStartDate));
    124. }
    125. if(map.get("remindend")!=null) {
    126. Integer remindEnd = Integer.parseInt(map.get("remindend").toString());
    127. c.setTime(new Date());
    128. c.add(Calendar.DAY_OF_MONTH,remindEnd);
    129. remindEndDate = c.getTime();
    130. map.put("remindend", sdf.format(remindEndDate));
    131. }
    132. }
    133. Wrapper<DiannaoxinxiEntity> wrapper = new EntityWrapper<DiannaoxinxiEntity>();
    134. if(map.get("remindstart")!=null) {
    135. wrapper.ge(columnName, map.get("remindstart"));
    136. }
    137. if(map.get("remindend")!=null) {
    138. wrapper.le(columnName, map.get("remindend"));
    139. }
    140. int count = diannaoxinxiService.selectCount(wrapper);
    141. return R.ok().put("count", count);
    142. }

  • 相关阅读:
    【Linux内核性能优化】ulimit(nproc、nofile)
    玩转gpgpu-sim 04记—— __cudaRegisterBinary() of gpgpu-sim 到底做了什么
    基于轻量级YOLOv5s开发构建隧道基建裂痕、脱落等缺陷问题检测系统
    实用设计模式实战:工厂+策略
    Django 之路由层
    银行转账p图在线制作生成,回执单凭证,工商农业邮政建设,易语言画板!
    Java实现数据结构——双链表
    【打卡】【sysfs相关API详解】21天学习挑战赛—RK3399平台开发入门到精通-Day20
    十天学完基础数据结构-第二天(数据结构简介)
    时间序列预测算法梳理(Arima、Prophet、Nbeats、NbeatsX、Informer)
  • 原文地址:https://blog.csdn.net/m0_49113107/article/details/126016584