大家好!我是职场程序猿,感谢您阅读本文,欢迎一键三连哦。
💞当前专栏:Java毕业设计
精彩专栏推荐👇🏻👇🏻👇🏻
目录
一、项目简介
本论文首先对基于WEB的茶座约茶平台进行了需求分析,从系统开发环境、系统目标、设计流程、功能设计等几个方面进行系统的总体设计,使用Java语言设计了基于WEB的茶座约茶平台软件,主要完成了注册登陆、信息公告、茶座约茶、购茶信息等各项功能的设计,实现对茶座约茶平台展示。在设计过程中,充分保证了系统代码的良好可读性、实用性、易扩展性、通用性、便于后期维护、操作方便以及页面简洁等特点。通过对系统的功能进行测试,测试结果证明该系统界面友好、功能完善,有着较高的使用价值,具有庞大的潜在用户群体和较广阔的应用前景。
二、系统设计
2.1数据库设计原则
学习编程,我们都知道数据库设计是基于需要设计的系统功能,我们需要建立一个数据库关系模型,用于存储数据信息,这样当我们在程序中时,就没有必要为程序页面添加数据,从而提高系统的效率。数据库存储了很多信息,可以说是信息管理系统的核心和基础,数据库还提供了添加、删除、修改和检查,使系统能够快速找到自己想要的信息,而不是在程序代码中找到。数据库中信息表的每个部分根据一定的关系精确地组合,排列和组合成数据表。
通过系统的功能进行规划分成管理员和用户,随后根据功能模块分成几个相应的实体信息。
三、系统项目部分截图
3.1系统主界面
主界面采用盒状布局形式,如图5-1,通过对应主页面上方动态链接来实现选项的功能选项的排列。主界面顶部有公告信息、茶室约茶、进入后台系统、登录及注册几个功能的快速链接。
3.2系统功能模块
公告信息功能模块
在公告信息模块中,将展示发布的各类公告信息,包含标题,时间,内容等,如图5-3所示。
茶馆约茶功能模块
模块功能主要是实现茶馆约茶功能,如图5-4所示。用户可以选择茶馆,提交约茶时间,编辑约茶名称等。
3.3系统后台功能模块
在后台系统中,可以对各类数据信息进行编辑,包含管理员信息、用户信息、茶座约茶、茶馆信息、公告信息等,如图5-7所示。
四、论文目录
五、部分核心代码
4.1 用户部分
package com.example.controller;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.io.IoUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.poi.excel.ExcelUtil;
import cn.hutool.poi.excel.ExcelWriter;
import com.example.common.Result;
import com.example.common.ResultCode;
import com.example.entity.UserInfo;
import com.example.service.UserInfoService;
import com.example.exception.CustomException;
import com.example.common.ResultCode;
import com.example.vo.UserInfoVo;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.example.service.*;
import org.springframework.web.bind.annotation.*;
import org.springframework.beans.factory.annotation.Value;
import cn.hutool.core.util.StrUtil;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@RestController
@RequestMapping(value = "/userInfo")
public class UserInfoController {
@Resource
private UserInfoService userInfoService;
@PostMapping
public Result<UserInfo> add(@RequestBody UserInfoVo userInfo) {
userInfoService.add(userInfo);
return Result.success(userInfo);
}
@DeleteMapping("/{id}")
public Result delete(@PathVariable Long id) {
userInfoService.delete(id);
return Result.success();
}
@PutMapping
public Result update(@RequestBody UserInfoVo userInfo) {
userInfoService.update(userInfo);
return Result.success();
}
@GetMapping("/{id}")
public Result<UserInfo> detail(@PathVariable Long id) {
UserInfo userInfo = userInfoService.findById(id);
return Result.success(userInfo);
}
@GetMapping
public Result<List<UserInfoVo>> all() {
return Result.success(userInfoService.findAll());
}
@GetMapping("/page/{name}")
public Result<PageInfo<UserInfoVo>> page(@PathVariable String name,
@RequestParam(defaultValue = "1") Integer pageNum,
@RequestParam(defaultValue = "5") Integer pageSize,
HttpServletRequest request) {
return Result.success(userInfoService.findPage(name, pageNum, pageSize, request));
}
@PostMapping("/register")
public Result<UserInfo> register(@RequestBody UserInfo userInfo) {
if (StrUtil.isBlank(userInfo.getName()) || StrUtil.isBlank(userInfo.getPassword())) {
throw new CustomException(ResultCode.PARAM_ERROR);
}
return Result.success(userInfoService.add(userInfo));
}
/**
* 批量通过excel添加信息
* @param file excel文件
* @throws IOException
*/
@PostMapping("/upload")
public Result upload(MultipartFile file) throws IOException {
List<UserInfo> infoList = ExcelUtil.getReader(file.getInputStream()).readAll(UserInfo.class);
if (!CollectionUtil.isEmpty(infoList)) {
// 处理一下空数据
List<UserInfo> resultList = infoList.stream().filter(x -> ObjectUtil.isNotEmpty(x.getName())).collect(Collectors.toList());
for (UserInfo info : resultList) {
userInfoService.add(info);
}
}
return Result.success();
}
@GetMapping("/getExcelModel")
public void getExcelModel(HttpServletResponse response) throws IOException {
// 1. 生成excel
Map<String, Object> row = new LinkedHashMap<>();
row.put("name", "张天志");
row.put("password", "123456");
row.put("nickName", "老张");
row.put("sex", "男");
row.put("age", 22);
row.put("birthday", "TIME");
row.put("phone", "18843232356");
row.put("address", "上海市");
row.put("email", "aa@163.com");
row.put("cardId", "342425199001116372");
row.put("level", 2);
List<Map<String, Object>> list = CollUtil.newArrayList(row);
// 2. 写excel
ExcelWriter writer = ExcelUtil.getWriter(true);
writer.write(list, true);
response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8");
response.setHeader("Content-Disposition","attachment;filename=userInfoModel.xlsx");
ServletOutputStream out = response.getOutputStream();
writer.flush(out, true);
writer.close();
IoUtil.close(System.out);
}
}
4.2菜单部分
package com.example.controller;
import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject;
import com.example.common.Result;
import com.example.entity.Account;
import com.example.service.*;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.util.HashMap;
import java.util.Map;
@RestController
public class MenuController {
@Resource
private AdminInfoService adminInfoService;
@Resource
private UserInfoService userInfoService;
@Resource
private ChaguanInfoService chaguanInfoService;
@Resource
private AdvertiserInfoService advertiserInfoService;
@GetMapping(value = "/getMenu", produces="application/json;charset=UTF-8")
public String getMenu(HttpServletRequest request) {
Account account = (Account) request.getSession().getAttribute("user");
Integer level;
if (account == null) {
level = 1;
} else {
level = account.getLevel();
}
JSONObject obj = new JSONObject();
obj.putOpt("code", 0);
obj.putOpt("msg", "");
JSONArray dataArray = new JSONArray();
dataArray.add(getJsonObject("/", "系统首页", "layui-icon-home", "/"));
JSONObject tableObj = new JSONObject();
tableObj.putOpt("title", "信息管理");
tableObj.putOpt("icon", "layui-icon-table");
if (1 == level) {
JSONArray array = new JSONArray();
array.add(getJsonObject("adminInfo", "管理员信息", "layui-icon-table", "adminInfo"));
array.add(getJsonObject("userInfo", "用户信息", "layui-icon-table", "userInfo"));
array.add(getJsonObject("reserveInfo", "茶座约茶", "layui-icon-table", "reserveInfo"));
array.add(getJsonObject("chaguanInfo", "茶馆信息", "layui-icon-table", "chaguanInfo"));
array.add(getJsonObject("advertiserInfo", "公告信息", "layui-icon-table", "advertiserInfo"));
array.add(getJsonObject("accountAdminInfo", "个人信息", "layui-icon-user", "accountAdminInfo"));
tableObj.putOpt("list", array);
}
if (2 == level) {
JSONArray array = new JSONArray();
array.add(getJsonObject("reserveInfo", "茶座约茶", "layui-icon-table", "reserveInfo"));
array.add(getJsonObject("chaguanInfo", "茶馆信息", "layui-icon-table", "chaguanInfo"));
array.add(getJsonObject("advertiserInfo", "公告信息", "layui-icon-table", "advertiserInfo"));
array.add(getJsonObject("accountUserInfo", "个人信息", "layui-icon-user", "accountUserInfo"));
tableObj.putOpt("list", array);
}
dataArray.add(tableObj);
dataArray.add(getJsonObject("reserveInfoComment", "茶座约茶评论", "layui-icon-group", "reserveInfoComment"));
dataArray.add(getJsonObject("updatePassword", "修改密码", "layui-icon-password", "updatePassword"));
dataArray.add(getJsonObject("login", "退出登录", "layui-icon-logout", "login"));
obj.putOpt("data", dataArray);
return obj.toString();
}
private JSONObject getJsonObject(String name, String title, String icon, String jump) {
JSONObject object = new JSONObject();
object.putOpt("name", name);
object.putOpt("title", title);
object.putOpt("icon", icon);
object.putOpt("jump", jump);
return object;
}
@GetMapping(value = "/getTotal", produces="application/json;charset=UTF-8")
public Result<Map<String, Integer>> getTotle() {
Map<String, Integer> resultMap = new HashMap<>();
resultMap.put("adminInfo", adminInfoService.findAll().size());
resultMap.put("userInfo", userInfoService.findAll().size());
resultMap.put("chaguanInfo", chaguanInfoService.findAll().size());
resultMap.put("advertiserInfo", advertiserInfoService.findAll().size());
return Result.success(resultMap);
}
}