Java项目:超市管理系统(java+SSM+JSP+LayUI+jQ+Mysql)

news2024/12/19 22:51:18

源码获取:俺的博客首页 "资源" 里下载!

项目介绍

本项目分为超级管理员、总经理、店长、员工等角色,超级管理员可添加修改删除角色并进行角色菜单配置;
超级管理员角色包含以下功能:
商品管理:添加商品、库存查询、订单管理、商品删除查询;
销售管理:退货管理、销售统计;
基础资料管理:供应商管理、用户管理、角色管理

总经理角色包含以下功能:
商品管理:订单管理、商品删除查询;
销售管理:退货管理、销售统计;
基础资料管理:供应商管理;

店长角色包含以下功能:
商品管理:添加商品、库存查询、订单管理、商品删除查询;
销售管理:退货管理、销售统计;
员工角色包含以下功能:
商品管理:添加商品、库存查询;

环境需要

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.是否Maven项目: 是;
6.数据库:MySql 5.7等版本均可;

技术栈

1. 后端:Spring、Springmvc、Mybatis
2. 前端:JSP+css+javascript+jQuery+LayUI

使用说明

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

 

 

 

 

 

 

 

供应商管理控制层:

@RestController
@RequestMapping(value = "/provider")
public class ProviderController {

    private Logger logger = LoggerFactory.getLogger(ProviderController.class);

    private ProviderService providerServiceImpl;

    public ProviderController(ProviderService providerServiceImpl) {
        this.providerServiceImpl = providerServiceImpl;
    }

    @PostMapping(value = "/addProvider")
    public int addProvider(Provider provider) {
        return providerServiceImpl.addProvider(provider);
    }

    @PostMapping(value = "/delProvider/{id}")
    public int delProvider(@PathVariable("id") String id) {
        return providerServiceImpl.delProvider(id);
    }

    @PostMapping(value = "/updateProvider")
    public int updateProvider(Provider provider) {
        return providerServiceImpl.updateProvider(provider);
    }

    @GetMapping(value = "/findById/{id}")
    public Provider findById(@PathVariable("id") int id) {
        return providerServiceImpl.findById(id);
    }

    @GetMapping(value = "/findByName")
    public Provider findByName(@RequestParam("name") String name) {
        return providerServiceImpl.findByName(name);
    }

    @GetMapping(value = "/findAllByPage")
    public PageInfo<Provider> findAllByPage(PageInfo<Provider> info,
                                            @RequestParam(value = "name", defaultValue = "") String name) {
        return providerServiceImpl.findAll(info, name);
    }

}

订单管理控制层:

@RestController
@RequestMapping(value = "/order")
public class OrderController {

    private OrderService orderServiceImpl;

    public OrderController(OrderService orderServiceImpl) {
        this.orderServiceImpl = orderServiceImpl;
    }

    @PostMapping(value = "/addOrder")
    public int addOrder(Order order, HttpServletRequest request) {
        HttpSession session = request.getSession();
        Employee emp = (Employee) session.getAttribute("emp");
        order.setCreater(emp.getName());
        order.setUpdater(emp.getName());
        return orderServiceImpl.addOrder(order);
    }

    @PostMapping(value = "/delOrder/{id}")
    public int delOrder(@PathVariable("id") int id) {
        return orderServiceImpl.delOrder(id);
    }

    @PostMapping(value = "/updateOrder")
    public int updateOrder(Order order, HttpServletRequest request) {
        HttpSession session = request.getSession();
        Employee emp = (Employee) session.getAttribute("emp");
        order.setUpdater(emp.getName());
        return orderServiceImpl.updateOrder(order);
    }

    @GetMapping(value = "/findAllOrdersByPage")
    public PageInfo<Order> findAllOrdersByPage(PageInfo<Order> info,
                                               @RequestParam(value = "no", defaultValue = "") String no) {
        return orderServiceImpl.findAllOrdersByPage(info, no);
    }

    @GetMapping(value = "/findById/{id}")
    public Order findById(@PathVariable("id") int id) {
        return orderServiceImpl.findById(id);
    }

}

仓库管理控制层:

@RestController
@RequestMapping(value = "/warehouse")
public class WarehouseController {

    private WarehouseService warehouseServiceImpl;
    private GoodsService goodsServiceImpl;

    public WarehouseController(WarehouseService warehouseServiceImpl,
                               GoodsService goodsServiceImpl) {
        this.warehouseServiceImpl = warehouseServiceImpl;
        this.goodsServiceImpl = goodsServiceImpl;
    }

    @PostMapping(value = "/addWarehouse")
    public int addWarehouse(Warehouse warehouse) {
        Goods goods = goodsServiceImpl.findGoodsByName(warehouse.getGoods());
        if (goods != null) {
            warehouse.setId(UUID.randomUUID().toString().replace("-", ""));
            warehouse.setTime(new Date());
            warehouse.setPrice(goods.getPrice() * warehouse.getCount());
            warehouse.setType(GlobalConstant.inWarehouse);
            int addWarehouseResult = warehouseServiceImpl.addWarehouse(warehouse);
            goods.setWarehouse(goods.getWarehouse() + warehouse.getCount());
            int updateWarehouseCount = goodsServiceImpl.updateGoods(goods);
            return addWarehouseResult == updateWarehouseCount ? GlobalConstant.SUCCESS : GlobalConstant.ERROR;
        }
        Goods good = new Goods();
        good.setName(warehouse.getGoods());
        good.setCode(UUID.randomUUID().toString().replace("-", ""));
        Date date = new Date();
        good.setType(goodsServiceImpl.findAllByPage(new PageInfo<>(0, 1), null).getData().get(0).getName());
        good.setCreater(warehouse.getOperator());
        good.setCtime(date);
        good.setUpdater(warehouse.getOperator());
        good.setUtime(date);
        good.setStatus(1);
        good.setWarehouse(warehouse.getCount());
        int addGoodsRes = goodsServiceImpl.addGoods(good);
        warehouse.setId(UUID.randomUUID().toString().replace("-", ""));
        warehouse.setPrice(0d);
        warehouse.setType(GlobalConstant.inWarehouse);
        int addWarehouseRes = warehouseServiceImpl.addWarehouse(warehouse);
        return addGoodsRes == addWarehouseRes ? GlobalConstant.SUCCESS : GlobalConstant.ERROR;
    }

    @PostMapping(value = "/outWarehouse")
    public int outWarehouse(Goods goods) {
        Goods good = goodsServiceImpl.findGoodsById(goods.getId());
        good.setWarehouse(good.getWarehouse() - goods.getWarehouse());
        int outGoodsWarehouse = goodsServiceImpl.updateGoods(good);
        Warehouse warehouse = new Warehouse();
        warehouse.setId(UUID.randomUUID().toString().replace("-", ""));
        warehouse.setGoods(good.getName());
        warehouse.setCount(goods.getWarehouse());
        warehouse.setTime(new Date());
        warehouse.setType(GlobalConstant.outWarehouse);
        warehouse.setOperator(goods.getUpdater());
        int outWarehouse = warehouseServiceImpl.addWarehouse(warehouse);
        return outGoodsWarehouse == outWarehouse ? GlobalConstant.SUCCESS : GlobalConstant.ERROR;
    }

    @GetMapping(value = "/findAllByPage")
    public PageInfo<Warehouse> findAllByPage(PageInfo<Warehouse> info,
                                             @RequestParam(value = "id", defaultValue = "") String id) {
        return warehouseServiceImpl.findAllWarehouseByPage(info, id);
    }

}

源码获取:俺的博客首页 "资源" 里下载!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1696.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C语言高级-4栈

14天阅读挑战赛 目录 一、栈的原理 1、栈的定义 2、栈的应用 &#xff08;1&#xff09;选课问题 &#xff08;2&#xff09;旅游&#xff1a;怎么样把每个城市去且仅去一遍&#xff1f; &#xff08;3&#xff09;栈的使用场景 &#xff08;4&#xff09;思考&#xf…

C++多态之虚函数表详解及代码示例

引言 C相对其他面向对象语言来说&#xff0c;之所以灵活、高效。很大程度的占比在于其多态技术和模板技术。C虚函数表是支撑C多态的重要技术&#xff0c;它是C动态绑定技术的核心。 如果对多态还不了解的小伙伴&#xff0c;可以点这里C多态详解基础篇。 在不考虑继承的情况下…

Vue3 Hooks 模块化抽离

Vue3中的Hooks 其实就是业务逻辑的抽离&#xff0c;跟Vue2中mixin 本质上是一样的&#xff1a;将当前组件的业务逻辑抽离到一个公共的文件中&#xff0c;提高逻辑复用性&#xff0c;让当前组件看起来更加清爽&#xff0c;不太一样的地方是我们封装hooks 的时候一般是返回一个函…

如何不改动 GatewayWorker 依赖包下自定义协议

前言&#xff1a; GatewayWorker 是 Workerman 的一个框架&#xff0c;对应用层开发者更友好。GatewayWorker 多了一个网关&#xff0c;也就是 Gateway&#xff0c;负责与客户端连接&#xff0c;消息转发等。而自定义的协议&#xff0c;也就是 gateway 面向客户端提供服务的协议…

java毕业设计——基于java+JDBC+sqlserver的物业管理系统设计与实现(毕业论文+程序源码)——物业管理系统

基于javaJDBCsqlserver的物业管理系统设计与实现&#xff08;毕业论文程序源码&#xff09; 大家好&#xff0c;今天给大家介绍基于javaJDBCsqlserver的物业管理系统设计与实现&#xff0c;文章末尾附有本毕业设计的论文和源码下载地址哦。 文章目录&#xff1a; 基于javaJDB…

【H5微信授权】简单实现H5页面微信授权功能,微信开发者工具报错 系统错误,错误码-1,undefined解决办法【详细】

前言 最近写到了H5公众号&#xff0c;需要微信授权的功能。 这里记录一下授权的流程和踩了个坑 图片 授权代码执行后会跳转到授权的地方&#xff0c;没有授权的会有确认授权&#xff0c;授权过得会这样&#xff0c;直接自动登录&#xff0c;然后再跳转到中转页 授权流程 …

204 - 205.表的基本用法

表的基本操作 1.基本概念 1.1数据库和表的关系 每个数据库包含N张表&#xff0c;及表示在库中 1.2 表&#xff08;二维表&#xff09; 行和列组成&#xff0c;可以将复杂的数据保存在简单的表中 表中的每一行就是一条完整的记录 表中的列用于保存每条记录中特点的信息 2.…

【Redis】散列表(Hash)和列表(List)的运用和理解以及Hash和List应用场景对比详解

文章目录一. 散列表(hash)1.1 基本操作1.2 当value字符串的内容是数字时二.列表&#xff08;List&#xff09;2.1 基本操作三.Hash和List的应用场景3.1Hash的应用场景3.2List的应用场景一. 散列表(hash) Redis哈希是字符串类型字段和值的映射表。哈希特别适合存储对象。 Redis中…

mindspore.dataset的map问题

1、创建一个包含transform的自定义类并实例化 2. 类的实现如下&#xff1a; 请注意&#xff1a;在call函数中&#xff0c;我并没有调用init中定义的transform操作。 3. ImageFolder_forPretrain的定义如下。 在划红线的那行&#xff0c;出现错误。 错误信息&#xff1a; 疑问…

【Spark】spark-submit作业提交及参数设定

note 文章目录note一、Spark的常用启动方式1.1 local本地模式1.2 Standalone模式1.3 Spark on Yarn模式二、spark-submit 详细参数说明--master--deploy-mode--class--name--jars--packages--exclude-packages--repositories--py-files--files--conf PROPVALUE--properties-fil…

【趣学算法】Day3 贪心算法——背包问题

14天阅读挑战赛努力是为了不平庸~ 算法学习有些时候是枯燥的&#xff0c;这一次&#xff0c;让我们先人一步&#xff0c;趣学算法&#xff01; ❤️一名热爱Java的大一学生&#xff0c;希望与各位大佬共同学习进步❤️ &#x1f9d1;个人主页&#xff1a;周小末天天开心 各位大…

tomcat应用部署

目录 tomcta介绍 tomcat安装 每个目录的作用 端口 实验开始 安装&#xff0c;启动MySQL 创建数据库 更改数据库连接 项目导入tomcat和数据库查看 重启tomcat 访问应用 【注意】 tomcta介绍 Tomcat的是完全开源的 Tomcat的是免费的 Tomcat不支持EJB 应用范围&#xff1…

创造一个表格编辑距离指标

这个是我自研的&#xff0c; 与百度PaddleOCR的方式略有不同。 数据的格式&#xff1a; 相当于一个目标检测有两类&#xff0c;分别是table和cell。 在预测值和标签中要先把根据位置关系所有的cell划分到不同的table中。 另外cell标签中还有起止位置 比如 四个数字代表行和…

window10远程桌面控制Ubuntu系统

Windows操作系统作为全球使用最多的个人操作系统&#xff0c;在我们身边随处可见&#xff0c;但放眼各类电子设备的操作系统&#xff0c;windows并不是一家独大&#xff0c;服务器系统大多基于Linux系统开发、手机操作系统几乎都是安卓、更不用说还有苹果的iOS、树莓派、Ubuntu…

【MySQL高级篇】数据库到底是什么?一文带你快速上手MySQL

在学习JavaWeb过程中&#xff0c;数据库学习是不可或缺的。整个JavaWeb体系中&#xff0c;数据库部分用于储存和管理数据&#xff0c;而数据作为网页中非常重要的一部分&#xff0c;自然我们是有必要深入学习数据库的。 推荐学习专栏&#xff1a;Java编程 进阶之路 文章目录1. …

【C语言 数据结构】顺序表的使用

本文借鉴点击跳转 上一篇&#xff1a;线性表的简绍 文章目录顺序表什么是顺序表顺序表的初始化顺序表插入元素顺序表删除元素顺序表 什么是顺序表 顺序表又称顺序存储结构&#xff0c;是线性表的一种&#xff0c;专门存储逻辑关系为“一对一”的数据。 顺序表存储数据的具体…

Linux~一些基本开发工具的使用(yum,vim,gcc,gdb,makefile)

目录 一.yum——安装软件 二.Vim——文本编辑器 &#xff08;1&#xff09;.命令模式 &#xff08;2&#xff09;.底行模式 &#xff08;3&#xff09;.插入模式 tips:给对应用户配置sudo命令 一些注意事项 三.gcc/g——编译器 &#xff08;1&#xff09;.gcc如何完成…

客快物流大数据项目(八十三):Kudu的优化

文章目录 Kudu的优化 一、​​​​​​​Kudu关键配置 二、​​​​​​​​​​​​​​Kudu的使用限制 1、​​​​​​​​​​​​​​主键 2、Cells 3、​​​​​​​字段 4、表 5、其他限制 6、​​​​​​​​​​​​​​分区限制 7、扩展建议和限制 8、​…

2- 创建Spring项目—— 方式1

导包&#xff1a; 地址&#xff1a;https://repo.spring.io/ui/native/libs-release-local/org/springframework/spring/ 如&#xff1a;包名&#xff1a;spring-5.2.3.RELEASE-dist.zip 将其下libs文件夹下的4个jar包导入&#xff1a; spring-context-5.2.3.RELEASE.jar、…

物联网ARM开发-3协议-单总线应用红外遥控

前言&#xff1a;单总线类传感器-红外遥控的实现 目录 一、红外遥控工作原理讲解 1、光的基础知识 2、红外通信 3、红外NEC协议详解 二、红外遥控实例讲解 1、实验目的&#xff1a;按下遥控按键&#xff0c;主机通过红外接收器接收到信号并解码&#xff0c;识别出按键的…