• 基于J2EE平台的超市收银系统设计与实现


    目录
    1 绪论 1
    1.1课题背景 1
    1.2 国内外研究现状 1
    1.3 目的和意义 1
    1.4 系统设计思想 2
    1.5 系统开发环境 2
    1.5.1 Spring Tool Suite简介 2
    1.5.2 Spring Boot简介 3
    1.5.3 JPA技术 3
    1.5.4 Maven简介 3
    1.5.5 B/S简介 4
    2可行性分析 5
    2.1 操作可行性 5
    2.2 经济可行性分析 5
    2.3 技术可行性 5
    3需求分析 6
    3.1 功能需求分析 7
    3.1.1 用例图 7
    3.1.2 系统类图 8
    3.2 非功能性需求 8
    4 总体设计 9
    4.1 系统模块总体设计 9
    4.2 数据库设计 10
    4.2.1 数据库设计概述 10
    4.2.2 数据分析 10
    4.3数据库的详细设计 10
    4.3.1 E-R图 11
    4.3.2 数据表的设计 14
    5 详细设计 17
    5.1 系统运行平台设计 18
    5.2 系统主界面设计 18
    5.3 界面层与前台交互设计 19
    5.4 SpringBoot下的Druid数据库连接池 19
    5.5 JPA配置 19
    5.6 Spring Security配置 19
    5.7 DAO组件 21
    5.8 功能模块实现 21
    5.8.1 管理员管理模块设计与实现 21
    5.8.2 商品管理模块 22
    5.8.3 供应商管理功能模块 25
    5.8.4 会员管理模块 27
    5.8.5 仓库管理模块 28
    5.8.6 类别管理模块 30
    5.8.7 进货单管理模块 31
    5.8.8 销售查看模块 32
    5.8.9 收银操作模块 33
    6 测试 35
    6.1 概念 35
    6.2 测试的任务和目的 35
    6.3 软件测试的步骤 35
    6.4 功能测试 35
    6.5 数据应用测试 36
    6.7 兼容性测试 38
    总结 39
    致谢 41
    3需求分析
    需求分析就是去详细的了解要解决的问题,了解问题的需求。
    需求分析拥有策略性、方向性以及决策性,所以它是软件开发过程中极为重要的一部分,需求分析出现问题,会严重影响整个项目的开发工作。开发人员需要通过需求分析去了解系统工作的情况,以及用户的需求。在一个大型项目开发中,它的作用远大于程序设计。
    超市收银系统主要是实现用户登录之后可以进行的一些列的商品信息录入查询及商品进货时管理如供货商仓库等,可以完整关联相关模块,满足之前对系统相关设定的需求,对于会员的新增删除以及相应的折扣管理,还实现了对于收银操作的查询以及按具体时间进行检索某天的收银订单。
    3.1 功能需求分析
    3.1.1 用例图
    在这里插入图片描述

    图3-1 系统用例图
    3.1.2 系统类图
    在这里插入图片描述

    图3-2 系统类图
    4 总体设计
    系统总体设计是指对系统模块规划、系统数据库和系统功能结构的总体设计。为下一步的代码实现提供了指导。
    4.1 系统模块总体设计
    本系统一共分为8个系统模块,各个模块访问的是同一数据库,但是访问的数据表不同。根据每个模块的功能来设计数据库表与表之间的联系。本文转载自http://www.biyezuopin.vip/onews.asp?id=11765基于对功能的分析,系统分为8个管理功能模块:
    (1)商品管理:用对管理员进行操作,管理员主要有系统管理员、收银员,系统管理员能实现全部操作,而普通用户只能实现收银操作,其他的操作则不可以实现。
    (2)仓库管理:对仓库信息的操作,包括按条件查询、修改、增加和删除。
    (3)供应商管理:对供应商信息的操作,包括按条件查询、修改、增加和删除。
    (4)用户管理:对用户信息的操作,包括按条件查询、修改、增加和删除。
    (5)会员管理:用来操作会员信息,能够实现记录、删除和查看会员折扣率电话等信息,通过会员的姓名还可以查询该会员的会员号。
    (6)销售统计:实现对超市单个商品的销售情况的查看。
    (7)收银操作:收银操作的实现包括订单保存,计算订单价格,查找会员折扣率等操作。
    (8)商品类别管理:对商品类别信息的操作,包括按条件查询、修改、增加和删除。
    在这里插入图片描述

    图4-1 系统总体设计

    package com.controller;
    
    import java.util.List;
    
    import org.apache.commons.lang.StringUtils;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.security.core.context.SecurityContextHolder;
    import org.springframework.security.core.userdetails.UserDetails;
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.PathVariable;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestParam;
    import org.springframework.web.servlet.ModelAndView;
    
    import com.entity.user.Users;
    import com.service.UserService;
    
    @Controller
    public class UserController {
    	
    	@Autowired
    	private UserService userService;
    	
    	/*
    	 * 登录
    	 */
    	 @RequestMapping(value = {"/login"})
        public String login(){      
            return "/login";     
        }
    	 
    	 ///user/logout
    	 @RequestMapping(value = {"/user/logout"})
    	    public String logout(){      
    	        return "/login";     
    	    }
    	 
    	 //管理员操作
    	 @RequestMapping(value = {"/main"})
        public ModelAndView show2(){
    		 ModelAndView mvc = new ModelAndView("/admin");			
    		     mvc.addObject("username", getUserName());
            return mvc;     
        }
    	 
    	 /*
    	  * 用户操作
    	  */
    	@RequestMapping(value = {"/user/add"})
        public String userAdd(){
            return "user/add";     
        }
    	 
    	@RequestMapping(value = {"/user/list"})
        public ModelAndView userList(){
    		ModelAndView mvc = new ModelAndView("/user/list");			
    		List<Users> list = userService.findAllUser();
    		mvc.addObject("list", list);
            return mvc;     
        }
    	
    	@RequestMapping(value = {"/user/queryByCondition"})
    	public ModelAndView userQuery(@RequestParam String key) {
    		ModelAndView mov = new ModelAndView("/user/list");
    		if(StringUtils.isNotBlank(key)) {
    			List<Users> list = userService.findByUsernameLike("%"+key+"%");
    			mov.addObject("list", list);
    			return mov;
    				
    		}else {
    			List<Users> list = userService.findAllUser();
    			mov.addObject("list", list);
    	        return mov;   
    		}
    		
    	}
    	 
    	@RequestMapping(value = {"/user/update/{userId}"})
        public ModelAndView userUpdate(@PathVariable String userId){
    		
    		userService.getUser(Long.valueOf(userId));
    		ModelAndView mvc = new ModelAndView("/user/update");
    		Users user = userService.getUser(Long.valueOf(userId));
    		mvc.addObject("user", user);
    		return mvc;     
        }
    	 
    	 @RequestMapping(value = {"/user/delete/{userId}"})
    	 public ModelAndView userDelete(@PathVariable String userId){	
    		
    		userService.deleteUserById(Long.valueOf(userId));
    		ModelAndView mvc = new ModelAndView("/user/list");			
    		List<Users> list = userService.findAllUser();
    		mvc.addObject("list", list);
            return mvc;      
        }
    	 
    	 @RequestMapping(value = {"/user/save"})
    	 public ModelAndView userSave(@RequestParam String username,
    				@RequestParam String password,@RequestParam String position){
    		
    		Users user = new Users();
    //		user.setUserId(Long.valueOf(userId));
    		user.setUsername(username);
    		user.setPassword(password);
    		user.setPosition(position);
    		Users user2 = userService.saveUser(user);
    		
    		ModelAndView mvc = new ModelAndView("/user/list");			
    		List<Users> list = userService.findAllUser();
    		mvc.addObject("list", list);
            return mvc;     
        }
    	 
    	 @RequestMapping(value = {"/user/UpdateSuccess"})
    	 public ModelAndView userUpdateSuccess(@RequestParam String userId,@RequestParam String username,
    				@RequestParam String password,@RequestParam String position){
    		
    		Users user = userService.getUser(Long.valueOf(userId));
    		user.setUsername(username);
    		user.setPassword(password);
    		user.setPosition(position);
    		Users user2 = userService.saveUser(user);
    		
    		ModelAndView mvc = new ModelAndView("/user/list");			
    		List<Users> list = userService.findAllUser();
    		mvc.addObject("list", list);
            return mvc;     
        }
    	 
    	 public String getUserName() {
    		 Object principal = SecurityContextHolder.getContext().getAuthentication().getPrincipal();      
    		 if (principal instanceof UserDetails) {      
    //		     System.out.println("用户名:" + ((UserDetails) principal).getUsername()); 
    			 return ((UserDetails) principal).getUsername();
    		 }
    		 return null;
    	 }
    	 
    	 
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111
    • 112
    • 113
    • 114
    • 115
    • 116
    • 117
    • 118
    • 119
    • 120
    • 121
    • 122
    • 123
    • 124
    • 125
    • 126
    • 127
    • 128
    • 129
    • 130
    • 131
    • 132
    • 133
    • 134
    • 135
    • 136
    • 137
    • 138
    • 139
    • 140
    • 141
    • 142

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • 相关阅读:
    MySQL定位CPU利用率过高的SQL方法
    数字信号处理——多速率信号处理(2)
    Linux----硬链接与符号链接(软链接)
    求一份网页设计结课大作业,要求用到html,css,javascript,的知识
    可视化表格软件-FineReport图表跨sheet引用单元格数据
    【错误记录】exe4j 打包程序无法设置 jar 包依赖的问题 ( 将源码 和 依赖库打包到同一个 jar 包中 )
    算法专题-单调栈
    了解条码软件中的图形工具
    20年ICPC澳门站L - Random Permutation
    写好 Spring Starter : 控制好Bean的加载顺序与原理
  • 原文地址:https://blog.csdn.net/newlw/article/details/127663449