一、项目介绍
自习室管理系统利用Java框架开发的一款管理系统,数据存储到MySQL中,前台使用HTML对界面进行设计和实现。本文先充分调查自习室管理系统的需求分析,深入剖析系统应该具有的功能,并设计完善的数据库。利用成熟的开发技术完成编码工作,最后进行投入前的测试工作。最终,完成前台和后台的自习室管理系统的功能,主要包括具有用户登录模块,预约管理模块,自习室管理模块,会员管理模块,交流管理模块,系统管理模块等,通过前后台实现数据的传递。
关键词:预约座位;Java语言;自习室;MySQL
二、开发环境
开发语言:Java
框架:springboot
JDK版本:JDK1.8
服务器:tomcat7
数据库:mysql
数据库工具:Navicat11
开发软件:eclipse/myeclipse/idea
Maven包:Maven
————————————————
三、功能介绍
自习室管理系统可以为自习室管理员提供自习室管理功能。可以让顾客搜索门店信息、在线预约座位、使用计时计费;可以在顾客到达门店自助开门,并寻找座位的功能;到达预约时间后,提醒是否继续使用,如果结束,结算收费;可以让管理员权限登录,可以查看自习室使用情况和收入。本系统有具有用户登录模块,预约管理模块,自习室管理模块,会员管理模块,交流管理模块,系统管理模块,在线交流模块,预约自习室模块,查看相关信息模块,学生注册模块组成。
其中系统用例图如3.1所示:
图3.1系统用例图
其中用户登录中,通过程序访问该自习室管理系统,选择登录界面,进行登录。登录成功进入到系统,登录失败,提示用户不存在,需要重新输入正确的用户名和密码。
用户管理中,先运行自习室管理系统,然后录入会员信息,验证信息后,保存信息到数据库,如果保存失败,提示错误信息,并返回到主界面。
自习室管理中,启动自习室管理系统,进入到自习室创建的页面,填写创建自习室的基本信息,创建成功后更新自习室数据库表的记录。在自习室修改或者删除的页面,完成操作后,更新自习室数据库表的记录。在自习室列表界面,查询所有的自习室数据库表的记录,然后绑定数据到自习室列表中。
预约管理中,先运行自习室管理系统,然后录入会员信息,验证信息后,保存信息到数据库,如果保存失败,提示错误信息,并返回到主界面。
公告管理中,启动自习室管理系统,进入到公告创建的页面,填写创建公告的基本信息,创建成功后更新公告数据库表的记录。在公告修改或者删除的页面,完成操作后,更新公告数据库表的记录。在公告列表界面,查询所有的公告数据库表的记录,然后绑定数据到公告列表中。
4.2.1 管理员功能设计
管理员管理包括用户登录、会员管理、公告管理、自习室分类管理、自习室管理、预约信息管理、套餐管理、系统管理。
管理员功能结构图如下图4-2所示。
图 4.2 管理员功能结构图
管理员需要先进行登录,获得操作的权限后才能进行信息管理。在本系统中,管理员可以登录服务器端对用户进行管理,进行权限内的功能管理,管理员添加会员信息,对会员的基本信息进行管理,还可以管理系统内的自习室信息。管理员发布公告,制定相关的制度,添加系统通知,都可以在通知栏目中进行录入,最终添加的通知信息保存到数据库中。
4.2.2 商家功能设计
商家主要通过注册后进行登录,然后管理自己的自习室座位信息,管理预约信息、系统管理。
商家功能结构图如下图4-2所示。
图 4.3 商家功能结构图
商家需要先进行登录,获得操作的权限后才能进行信息管理。商家功能模块实现商家注册、商家登录、上传店铺信息、个人信息管理、店铺信息管理、查看用户预约、消息管理等功能。
4.2.3 会员功能设计
会员用户功能包括用户登录、查看个人信息、查看公告、查看自习室、在线预约、结束使用、在线交流、查看公告、我的。
会员用户功能设计图如下图4.4所示。
图 4.4 会员用户功能结构图
会员用户登录后,在首页,查看操作菜单,可以修改个人信息和修改个人密码,修改个人信息和密码的功能流程一致,都是通过先获取到个人信息后,然后进行修改,通过数据库修改语句更新信息。
自习室查看中,查看所有的在线自习室信息,然后预约自习室。到达预约日期后,使用自习室,结束使用。
论坛交流,在论坛中可以查看其他会员的交流内容,对感兴趣的回答可以进行回复,也可以发表自己的看法,参与讨论。
查看公告,查看管理员发布的通知信息,及时了解需要相关的公告资讯。
四、核心代码
部分代码:
package com.example.controller;
import cn.hutool.core.util.StrUtil;
import cn.hutool.crypto.SecureUtil;
import com.example.common.Result;
import com.example.common.ResultCode;
import com.example.entity.Caiwu;
import com.example.exception.CustomException;
import com.example.service.CaiwuService;
import com.example.utils.MapWrapperUtils;
import com.example.utils.jwt.JwtUtil;
import com.example.vo.CaiwuVo;
import org.springframework.beans.BeanUtils;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@RestController
@RequestMapping(value = "/caiwu")
public class CaiwuController {
@Resource
private CaiwuService caiwuService;
@PostMapping
public Result<Caiwu> add(@RequestBody CaiwuVo caiwu) {
caiwuService.add(caiwu);
return Result.success(caiwu);
}
@PostMapping("/deleteList")
public Result<Caiwu> deleteList(@RequestBody CaiwuVo caiwu) {
caiwuService.deleteList(caiwu.getList());
return Result.success();
}
@DeleteMapping("/{id}")
public Result delete(@PathVariable Long id) {
caiwuService.delete(id);
return Result.success();
}
@PutMapping
public Result update(@RequestBody CaiwuVo caiwu) {
caiwuService.update(caiwu);
return Result.success();
}
@GetMapping("/{id}")
public Result<Caiwu> detail(@PathVariable Integer id) {
Caiwu caiwu = caiwuService.findById(id);
return Result.success(caiwu);
}
@GetMapping
public Result<List<Caiwu>> all() {
return Result.success(caiwuService.list());
}
@PostMapping("/page")
public Result<CaiwuVo> page(@RequestBody CaiwuVo caiwuVo) {
return Result.success(caiwuService.findPage(caiwuVo));
}
@PostMapping("/login")
public Result login(@RequestBody Caiwu caiwu, HttpServletRequest request) {
if (StrUtil.isBlank(caiwu.getZhanghao()) || StrUtil.isBlank(caiwu.getMima())) {
throw new CustomException(ResultCode.PARAM_LOST_ERROR);
}
Caiwu login = caiwuService.login(caiwu);
// if(!login.getStatus()){
// return Result.error("1001","状态限制,无法登录系统");
// }
if(login != null) {
HashMap hashMap = new HashMap();
hashMap.put("user", login);
Map<String, Object> map = MapWrapperUtils.builder(MapWrapperUtils.KEY_USER_ID,caiwu.getId());
String token = JwtUtil.creatToken(map);
hashMap.put("token", token);
return Result.success(hashMap);
}else {
return Result.error();
}
}
@PutMapping("/updatePassword")
public Result updatePassword(@RequestBody Caiwu info, HttpServletRequest request) {
Caiwu caiwu = caiwuService.findById(info.getId());
String oldPassword = SecureUtil.md5(info.getMima());
if (!oldPassword.equals(caiwu.getMima())) {
return Result.error(ResultCode.PARAM_PASSWORD_ERROR.code, ResultCode.PARAM_PASSWORD_ERROR.msg);
}
info.setMima(SecureUtil.md5(info.getNewPassword()));
Caiwu caiwu1 = new Caiwu();
BeanUtils.copyProperties(info, caiwu1);
caiwuService.update(caiwu1);
return Result.success();
}
}
五、效果图
六、文章目录
目 录
摘 要 2
Abstract 3
目 录 5
1系统概述 8
1.1 研究的背景和意义 8
1.2 国内外研究现状 8
1.3 研究内容 9
2系统技术 11
2.1 Java技术 11
2.2 MYSQL数据库 11
2.3 JSON数据 12
3系统需求分析 13
3.1 可行性分析 13
3.1.1 经济可行性 13
3.1.2 技术可行性 13
3.1.3 法律可行性 13
3.2 需求分析 13
3.2.1 非功能性需求 13
3.2.2 功能性需求 14
4系统设计 17
4.1 架构设计 17
4.2 功能设计 18
4.2.1 管理员功能设计 18
4.2.2 商家功能设计 19
4.2.3 会员功能设计 19
4.3 数据库设计 20
4.3.1 数据库设计原则 20
4.3.2 数据库ER图设计 21
4.3.3 数据库表设计 22
5 系统实现 29
5.1管理员功能实现 29
5.1.1 管理员登录功能实现 29
5.1.2 用户管理功能实现 29
5.1.3 商家管理功能实现 31
5.2商家功能实现 32
5.2.1 自习室座位管理功能实现 32
5.2.2 座位预约管理功能实现 32
5.3 会员功能实现 33
5.3.1 会员登录管理实现 33
5.3.2 个人中心功能实现 34
5.3.3 自习室预约功能实现 35
5.2.4 座位签出功能实现 36
5.2.5 公告查看功能实现 36
第6章 系统测试 38
6.1 程序测试 38
6.2 测试用例 39
6.3 系统测试结果 40
结论 41
参考文献 42
致谢 43