Java项目:SSH超市便利店综合管理系统

121 篇文章 2 订阅

作者主页:源码空间站2022

 简介:Java领域优质创作者、Java项目、学习资料、技术互助

文末获取源码

项目介绍

便利店管理系统共分为两个角色:管理员和销售人员

销售员角色包含以下功能:

销售员登录,管理销售记录等功能。

管理员角色包含以下功能:
管理员角色登录,销售员管理,商品管理,采购管理,库存管理,销售记录管理,成本报表统计,收入报表统计,利润报表统计等功能。

环境需要

1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。
2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA;
3.tomcat环境:Tomcat 7.x,8.x,9.x版本均可
4.硬件环境:windows 7/8/10 1G内存以上;或者 Mac OS; 

5.数据库:MySql 5.7版本;

6.是否Maven项目: 否;

技术栈

1. 后端:mysql+Spring+hibernate+spring mcv

2. 前端:JSP+css+javascript+bootstrap+jQuery+easyui+echarts

使用说明

1. 使用Navicat或者其它工具,在mysql中创建对应名称的数据库,并导入项目的sql文件;
2. 使用IDEA/Eclipse/MyEclipse导入项目,Eclipse/MyEclipse导入时,若为maven项目请选择maven;
若为maven项目,导入成功后请执行maven clean;maven install命令,然后运行;
3. 将项目中jdbc.properties配置文件中的数据库配置改为自己的配置;
4. 运行项目,输入localhost:8080/ 登录 
管理员账号密码:admin/123456

销售人员账号密码:user/123456

运行截图

管理员角色

销售角色

 

相关代码

登录Action

@Controller("loginAction")
@Scope("prototype")
public class LoginAction extends ActionSupport {

//============依赖注入start================
		@Autowired
		private ManageService manageService;//管理
		@Autowired
		private UserService userService;//用户
		
		
		//===========依赖注入end==================
		
		//-------------------------华丽分割线---------------------------------------------
		
		//============自定义参数start=============
		private Integer role;
		public Integer getRole() {
			return role;
		}
		public void setRole(Integer role) {
			this.role = role;
		}

		private String userName;//用户名
		private String passWord;//密码
		private String code;//统一社会信用代码: 
		private Integer type;//1新型材料、2生物医药、3富硒食品、4安康丝绸、5清洁能源、6装备制造
		private String zczb;//注册资本
		private String name;//企业名称
		private String djjg;//登记机关
		private String address;//地址
		private String  fr;//法定代表人
		private String info;//企业简介包含 经营内容和数据分析
		private Integer isSh;//是否审核 0否 1是
		//============自定义参数end=============
		
		//-------------------------华丽分割线---------------------------------------------
		
		public String getUserName() {
			return userName;
		}
		public void setUserName(String userName) {
			this.userName = userName;
		}
		public String getPassWord() {
			return passWord;
		}
		public void setPassWord(String passWord) {
			this.passWord = passWord;
		}
		public String getCode() {
			return code;
		}
		public void setCode(String code) {
			this.code = code;
		}
		public Integer getType() {
			return type;
		}
		public void setType(Integer type) {
			this.type = type;
		}
		public String getZczb() {
			return zczb;
		}
		public void setZczb(String zczb) {
			this.zczb = zczb;
		}
		public String getName() {
			return name;
		}
		public void setName(String name) {
			this.name = name;
		}
		public String getDjjg() {
			return djjg;
		}
		public void setDjjg(String djjg) {
			this.djjg = djjg;
		}
		public String getAddress() {
			return address;
		}
		public void setAddress(String address) {
			this.address = address;
		}
		public String getFr() {
			return fr;
		}
		public void setFr(String fr) {
			this.fr = fr;
		}
		public String getInfo() {
			return info;
		}
		public void setInfo(String info) {
			this.info = info;
		}
		public Integer getIsSh() {
			return isSh;
		}
		public void setIsSh(Integer isSh) {
			this.isSh = isSh;
		}

		//============文件上传start=============
		private File file;
		//提交过来的file的名字
	    private String fileFileName;
	    //提交过来的file的MIME类型
	    private String fileContentType;
	    public File getFile() {
			return file;
		}
		public void setFile(File file) {
			this.file = file;
		}
		public String getFileFileName() {
			return fileFileName;
		}
		public void setFileFileName(String fileFileName) {
			this.fileFileName = fileFileName;
		}
		public String getFileContentType() {
			return fileContentType;
		}
		public void setFileContentType(String fileContentType) {
			this.fileContentType = fileContentType;
		}
		//============文件上传end=============
		
		//-------------------------华丽分割线---------------------------------------------

		public String login() {
			return "login";
		}
		
		public String home() {
			return "success";
		}
		
       //登录
		public String toLogin(){
			if(role==2){//销售
				String hql = "from User where userName = :userName and passWord = :passWord and isDelete = 0 ";
				  Map<String,Object> alias = new HashMap<String,Object>();
				  alias.put("userName",userName);
				  alias.put("passWord", passWord);
				  List<User> userList= userService.getByHQL(hql, alias);
				if(userList.size()>0){
					//将用户信息放入session
					HttpSession session = ServletActionContext.getRequest()
							.getSession();
					session.setAttribute("userId",userList.get(0).getId() );
					session.setAttribute("user", userList.get(0));
					session.setAttribute("role", 1);
					return "index";
				}else{
					return "login";
				}
			}else{
				
					String hql = "from Manage where name = :userName and passWord = :passWord";
					  Map<String,Object> alias = new HashMap<String,Object>();
					  alias.put("userName",userName);
					  alias.put("passWord", passWord);
					List<Manage> manageList=manageService.getByHQL(hql, alias);
					if(manageList.size()>0){
						//将用户信息放入session
						HttpSession session = ServletActionContext.getRequest()
								.getSession();
						session.setAttribute("role", 2);
						session.setAttribute("userName", manageList.get(0).getRealName());
						session.setAttribute("userId2",manageList.get(0).getId() );
						session.setAttribute("manage", manageList.get(0));
						session.setAttribute("roleId", role);
						return "index";
					}else{
						return "login";
					}
				}
			
			
		}

管理Action

@Controller("manageAction")
@Scope("prototype")
public class ManageAction extends ActionSupport implements ModelDriven<Manage>{
	
	private static final long serialVersionUID = 1L;

	//==========model==============
	  private Manage manage;
		@Override
		public Manage getModel() {
			if(manage==null) manage = new Manage();
			return manage;	
		}
		//==========model==============
	/**
	 * 依赖注入 start dao/service/===
	 */
	@Autowired
	private ManageService manageService;
	
	//依赖注入 end  dao/service/===
	
	//-------------------------华丽分割线---------------------------------------------
	
	//============自定义参数start=============
	
	//============自定义参数end=============
	
	//-------------------------华丽分割线---------------------------------------------
	
	//============文件上传start=======================================================
	private File file;
	//提交过来的file的名字
    private String fileFileName;
    //提交过来的file的MIME类型
    private String fileContentType;
    public File getFile() {
		return file;
	}
	public void setFile(File file) {
		this.file = file;
	}
	public String getFileFileName() {
		return fileFileName;
	}
	public void setFileFileName(String fileFileName) {
		this.fileFileName = fileFileName;
	}
	public String getFileContentType() {
		return fileContentType;
	}
	public void setFileContentType(String fileContentType) {
		this.fileContentType = fileContentType;
	}
	 //============文件上传end=========================================================
			
	 //-------------------------华丽分割线---------------------------------------------//
	
	 //=============公=======共=======方=======法==========区=========start============//
	/**
	 * 列表分页查询
	 * 	private String name;
	private String passWord;
	private String realName;//真实名
	private int type;//管理员类型 1 是超级管理员 2 是普通管理员
	 */
	public String manage(){
	    Map<String,Object> alias = new HashMap<String,Object>();
		StringBuffer sb = new StringBuffer();
		sb = sb.append("from Manage where 1=1 and type = 2");
		
		if(manage!=null && manage.getName() !=null && !"".equals(manage.getName())){
			sb.append("  and name like :name");
			alias.put("name", "%" +manage.getName()+ "%");
		}
		sb = sb.append("  order by id desc");
		Pager<Manage> pagers = manageService.findByAlias(sb.toString(),alias);
		ActionContext.getContext().put("pagers", pagers);
		ActionContext.getContext().put("Manage", manage);
		return SUCCESS;
    }
	
	/**
	 * 跳转到添加页面
	 * @return
	 */
	public String add(){
		return SUCCESS;
	}
	
	/**
	 * 执行添加
	 * @return
	 */
	public String exAdd(){
		manage.setType(2);
		manageService.save(manage);
		ActionContext.getContext().put("url", "/manage_manage.do");
		return "redirect";
	}
	

用户Action

@Controller("userAction")
@Scope("prototype")
public class UserAction extends ActionSupport implements ModelDriven<User>{
	
	private static final long serialVersionUID = 1L;

	//==========model==============
	  private User user;
		@Override
		public User getModel() {
			if(user==null) user = new User();
			return user;	
		}
		//==========model==============
	/**
	 * 依赖注入 start dao/service/===
	 */
	@Autowired
	private UserService userService;

	
	//依赖注入 end  dao/service/===
	
	//-------------------------华丽分割线---------------------------------------------
	
	//============自定义参数start=============
	
	//============自定义参数end=============
	
	//-------------------------华丽分割线---------------------------------------------
	
	//============文件上传start=======================================================
	private File file;
	//提交过来的file的名字
    private String fileFileName;
    //提交过来的file的MIME类型
    private String fileContentType;
    public File getFile() {
		return file;
	}
	public void setFile(File file) {
		this.file = file;
	}
	public String getFileFileName() {
		return fileFileName;
	}
	public void setFileFileName(String fileFileName) {
		this.fileFileName = fileFileName;
	}
	public String getFileContentType() {
		return fileContentType;
	}
	public void setFileContentType(String fileContentType) {
		this.fileContentType = fileContentType;
	}
	 //============文件上传end=========================================================
			
	 //-------------------------华丽分割线---------------------------------------------//
	
	 //=============公=======共=======方=======法==========区=========start============//
	/**
	 * 列表分页查询
	 */
	public String user(){
	    Map<String,Object> alias = new HashMap<String,Object>();
		StringBuffer sb = new StringBuffer();
		sb = sb.append("from User where 1=1 and isDelete = 0 ");
		if(user!=null && user.getRealName() !=null && !"".equals(user.getRealName())){
			sb.append("  and realName like :realName ");
			alias.put("realName", "%" +user.getRealName()+ "%" );
		}
		sb = sb.append("order by id desc");
		Pager<User> pagers = userService.findByAlias(sb.toString(),alias);
		ActionContext.getContext().put("pagers", pagers);
		ActionContext.getContext().put("User", user);
		return SUCCESS;
    }
	
	/**
	 * 跳转到添加页面
	 * @return
	 */
	public String add(){
		return SUCCESS;
	}
	

如果也想学习本系统,下面领取。回复:074ssh 

 

源码亲自运行测试过,放心使用! 一、功能介绍: 一个超市便利店销售管理系统,包含销售员和管理员两个权限用户,系统功能如下: 销售员可以添加、修改、删除销售单子; 管理员可以进行员工管理、商品管理、采购管理、库存管理、销售管理、成本报表、收入报表、利润报表等等。 服务器端采用SSH框架,前端采用的是Bootstrap的一个封装框架,数据库采用MySQL。 1)销售管理:主要是实现销售情况的计数 2)财务管理:主要是实现成本报表、收入报表、利润报表的制作,销售情况的分析 3)采购管理:主要是实现外在采购,制作相应的供应商的统计表,制作相应的物流配送公司的统计表,将采购回的商品的基本信息录入系统,做好相应的退货商品的登记 4)库存管理:做好库存商品登记(采购回来后、出商店后),及时整理相应信息,统计好需要增购得商品 5)商品管理:动态怎删改查商品类型 6)系统管理:主要是实现对历史记录进行简要的分析,实现用户的资料更新和数据备份。权限管理主要是可以进行用户的添加、删除、密码的修改。数据备份可以为用户提供直接备份数据。 二、技术介绍: 前端主要应用框架技术:HTML+CSS+JavaScript+jsp 后端主要应用框架技术:Spring+hibernate+struts2+mysql 开发工具:Myeclipse或Eclipse、jdk1.7、tomcat8、mysql5.6或5.7数据库。 温馨提示:有运行文档,带概要设计
超市管理系统+论文(一)_计算机专业毕业论文范文 小结 和传统管理模式相比较,使用本系统,毫无疑问会大大提高超市的运作效率,辅助提高超市的决策水平,管理水平,为降低经营成本, 提高效益,减少差错,节省人力,减少顾客购物时间,增加客流量,提高顾客满意度,增强超市扩张能力, 提供有效的技术保障。 由于开发者能力有限,加上时间仓促,本系统难免会出现一些不足之处,例如: 本系统只适合小型超市使用,不能适合中大型超市使用; 超市管理系统涉及范围宽,要解决的问题多,功能复杂,实现困难,但由于限于时间,本系统只能做出其中的一部分功能; 对于以上出现的问题,我们深表歉意,如发现还有其它问题,希望老师批评指正。 目录 1、项目计划 1.1系统开发目的 1.2背景说明 1.3项目确立 1.4应用范围 1.5定义 1.6参考资料 2、逻辑分析与详细分析 2.1系统功能 2.2数据流图 2.3用户类型与职能 2.4系统开发步骤 2.5系统环境需求 2.6系统安全问题 3、基于UML的建模 3.1语义规则 3.2 UML模型 3.3系统实现图 4、概要设计文档 5、逻辑设计文档 6、物理设计文档 7、小结 1、项目计划 1.1系统开发目的 (1)大大提高超市的运作效率; (2)通过全面的信息采集和处理,辅助提高超市的决策水平; (3)使用本系统,可以迅速提升超市的管理水平,为降低经营成本, 提高效益,增强超市扩张力, 提供有效的技术保障。 1.2背景说明 21世纪,超市的竞争也进入到了一个全新的领域,竞争已不再是规模的竞争,而是技术的竞争、管理的竞争、人才的竞争。技术的提升和管理的升级是超市业的竞争核心。零售领域目前呈多元发展趋势,多种业态:超市、仓储店、便利店、特许加盟店、专卖店、货仓等相互并存。如何在激烈的竞争中扩大销售额、降低经营成本、扩大经营规模,成为超市营业者努力追求的目标。 1.3项目确立 针对超市的特点,为了帮助超市解决现在面临的问题,提高小型超市的竞争力,我们将开发以下系统:前台POS销售系统、后台管理系统,其中这两个子系统又包含其它一些子功能。 1.4应用范围 本系统适应于各种小型的超市。 1.5 定义 (1)商品条形码:每种商品具有唯一的条形码,对于某些价格一样的商品,可以使用自定义条形码。 (2)交易清单:包括交易的流水账号、每类商品的商品名、数量、该类商品的总金额、交易的时间、负责本次收银的员工号。 (3)商品积压:在一定时期内,远无法完成销售计划的商品会造成积压。 (4)促销:在一定时期内,某些商品会按低于原价的促销价格销售。 库存告警提示:当商品的库存数量低于库存报警数量时发出提示。 (5)盘点:计算出库存、销售额、盈利等经营指标。 1.6 参考资料 《数据库原理及设计》 陶宏才编 清华大学出版社 《SQL Server 2000 实用教程》范立南编 清华大学出版社 《SQL Server 2000 编程员指南》李香敏编 北京希望电子出版社 《轻松搞定 SQL Server 2000 程序设计》Rebecca M.Riordan编 《软件工程规范》Watts S.Humphrey编 清华大学出版社 《软件工程理论与实践》 Shari Lawrence Pfleeger编 清华大学出版社 《软件需求分析》 Swapna Kishore编 机械工业出版社 《软件工程思想》 林锐编 2、逻辑分析与详细分析 2.1系统功能 (1)、零售前台(POS)管理系统,本系统必须具有以下功能: 商品录入:根据超巿业务特点制定相关功能,可以通过输入唯一编号、扫描条形码、商品名称等来实现精确或模糊的商品扫描录入。该扫描录入方法可以充分保证各种电脑操作水平层次的人员均能准确快速地进行商品扫描录入。 收银业务:通过扫描条形码或者直接输入商品名称(对于同类多件商品采用一次录入加数量的方式)自动计算本次交易的总金额。在顾客付款后,自动计算找零,同时打印交易清单(包括交易的流水账号、每类商品的商品名、数量、该类商品的总金额、交易的时间、负责本次收银的员工号)。如果顾客是本店会员并持有本人会员卡,则在交易前先扫描会员卡,并对所购物品全部实行95折优惠,并将所购物品的总金额累计到该会员的总消费金额中。 会员卡的有效期限为一年,满一年未续卡者,该会员卡将被注销。 安全性:OS登陆、退出、换班与操作锁定等权限验证保护;断电自动保护最大限度防止意外及恶意非法操作。 独立作业:有的断网收银即在网络服务器断开或网络不通的情况下,收银机仍能正常作业 (2)、后台管理系统,本系统必须具备以下功能 进货管理: 根据销售情况及库存情况,自动制定进货计划(亦可手工制定修改),可以避免盲目进货造成商品积压。 按计划单有选择性地进行自动入库登记。 综合查询打印计划进货与入库记
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值