(Java毕业设计)茶室客户自带茶品管理系统(附源码+论文)

大家好!我是职场程序猿,感谢您阅读本文,欢迎一键三连哦。

💞当前专栏:Java毕业设计

精彩专栏推荐👇🏻👇🏻👇🏻

👉🎀 安卓app毕业设计
👉🌎微信小程序毕业设计

一、项目简介

在目前的茶室管理中应该而且能够充分发挥计算机管理的长处,实现信息化管理、智能化管理。当前茶室运营模式一般是统一提供茶叶,如此设置并不能很好满足每个人的饮茶洗好。本文通过应用 JSP 技术和采用MYSQL 数据库系统开发了基于 B/S(Browser/Server,浏览器/服务模式)模式的茶室客户自带茶品管理系统,对客户自带的茶叶进行统一管理。它运用方便、操作简单,效率很高。借助 B/S 模式,我们可以方便对客户自带茶进行维护和管理,而且能够方便不同客户对自己喜好茶叶的交流,进一步促进茶文化的传播。

二、系统设计

2.1软件功能模块设计

茶室客户自带茶品管理系统的整体结构设计如图4-2所示。
在这里插入图片描述

登录系统结构图,如图4-3所示:

在这里插入图片描述

管理员结构图,如图4-4所示。
在这里插入图片描述

2.2数据库设计

1、管理员信息实体属性图如图4-5所示。在这里插入图片描述

2.客户实体图如图4-6所示:在这里插入图片描述

茶品信息实体图如图4-7所示:
在这里插入图片描述

三、系统项目部分截图

3.1登录功能模块

系统主界面如下图5-1所示,包括:首页、公告信息、自带茶品信息、喝茶文化信息、进入后台系统、登录、注册等功能按钮。在这里插入图片描述

3.2管理员后台功能

选择管理员成功登录系统后,可以看到主要包括信息展示,自带茶品信息,喝茶文化信息、密码修改等功能,如下图5-3所示。在这里插入图片描述

3.3个人信息管理功能

登录进入系统后台可以通过个人信息模块查看或更新个人相关的信息,如图5-8所示。在这里插入图片描述

四、论文目录

1 概述 1
1.1课题背景及意义 1
1.2 国内外研究现状 1
1.3 论文研究的目的与意义 2
1.4 本课题主要工作 2
2 系统开发环境 3
2.1 Java 相关技术简介 3
2.1.1 Mysql数据库 3
2.1.2 Java 简介 4
2.1.3 JSP 技术简介 5
2.1.4 JDBC 简介 6
2.2 B/S结构 6
2.4Mysql数据库 7
3 系统分析 8
3.1 可行性分析 8
3.1.1 技术可行性 8
3.1.2操作可行性 8
3.1.3 经济可行性 9
3.1.4 法律可行性 9
3.2系统流程分析 9
3.2.1系统开发流程 9
3.2.2 用户登录流程 10
3.2.3 系统操作流程 11
3.2.4 添加信息流程 11
3.2.5 修改信息流程 12
3.2.6 删除信息流程 13
4 系统设计 13
4.1 系统概述 13
4.2 系统结构设计 14
4.3数据库设计 16
4.3.1 数据库设计原则 16
4.3.2 数据库实体 17
4.3.3 数据库表设计 18
5统详细设计 22
5.1用户登录功能模块 22
5.2用户订单会员功能 24
5.3管理员功能模块 25
6系统测试 28
6.1系统测试的意义 28
6.2 测试方法 29
6.3测试分析 29
结 论 30
致 谢 31
参考文献 32

五、部分核心代码

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("chaguanInfo", "茶馆信息", "layui-icon-table", "chaguanInfo"));
			array.add(getJsonObject("chapinInfo", "自带茶品信息", "layui-icon-table", "chapinInfo"));
			array.add(getJsonObject("wenhuaInfo", "喝茶文化信息", "layui-icon-table", "wenhuaInfo"));
			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("chaguanInfo", "茶馆信息", "layui-icon-table", "chaguanInfo"));
			array.add(getJsonObject("chapinInfo", "自带茶品信息", "layui-icon-table", "chapinInfo"));
			array.add(getJsonObject("wenhuaInfo", "喝茶文化信息", "layui-icon-table", "wenhuaInfo"));
			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("chapinInfoComment", "自带茶品评论", "layui-icon-group", "chapinInfoComment"));
		dataArray.add(getJsonObject("wenhuaInfoComment", "喝茶文化评论", "layui-icon-group", "wenhuaInfoComment"));

        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);
    }
}

获取源码或论文可分享

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值