基于javaweb的超市进销存管理系统(java+ssm+jsp+bootstrap+jquery+mysql)

运行环境

Java≥8、MySQL≥5.7、Tomcat≥8

开发工具

eclipse/idea/myeclipse/sts等均可配置运行

适用

课程设计,大作业,毕业设计,项目练习,学习演示等

功能说明

基于javaweb+SSM的超市进销存管理系统(java+SSM+JSP+bootstrap+jQuery+mysql)

ssm超市进销存管理系统

项目介绍

超市进销存管理系统,主要分为管理员与员工两种角色:管理员主要功能模块有: 进货管理:进货信息、退货信息; 商品信息管理:商品信息、商品类别; 库存管理:库存信息、库存预警、临期产品; 销售管理:销售信息、销售统计、顾客退货办理; 客户信息管理:客户信息; 供应商信息管理:供应商信息; 员工信息管理:员工信息;员工主要功能有: 进货管理:进货信息、退货信息; 商品信息管理:商品信息、商品类别; 库存管理:库存信息、库存预警、临期产品; 销售管理:销售信息、顾客退货办理; 客户信息管理:客户信息; 供应商信息管理:供应商信息;

环境需要

1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。

2.IDE环境:IDEA。注:该项目暂不支持Eclipse或者MyEclipse; 3.tomcat环境:Tomcat 7.x,8.x,9.x版本均可 4.硬件环境:windows 7/8/10 1G内存以上;或者 Mac OS; 5.是否Maven项目: 是;查看源码目录中是否包含pom.xml;若包含,则为maven项目,否则为非maven项目

6.数据库:MySql 5.7版本;

技术栈

  1. 后端:Spring SpringMVC MyBatis

  2. 前端:JSP+bootstrap+jQuery

使用说明

  1. 使用Navicat或者其它工具,在mysql中创建对应名称的数据库,并导入项目的sql文件;

  2. 将项目中db.properties与spring-mybatis.xml配置文件中的数据库配置改为自己的配置

  3. 使用IDEA/Eclipse/MyEclipse导入项目,Eclipse/MyEclipse导入时,若为maven项目请选择maven;

若为maven项目,导入成功后请执行maven clean;maven install命令,配置tomcat,然后运行;

  1. 运行项目,在浏览器中输入localhost:8080/chaoshi 登录

注意事项

项目路径必须为localhost:8080/chaoshi,前端代码中已写死,否则会报错;

用户管理控制层:

@RestController

@RequestMapping(“/user”)

public class UserController {

@Autowired

private UserService userService;

@Autowired

private RoleService roleService;

/**

  • 登录

  • @param username 用户名

  • @param password 密码

  • @param request

  • @return

*/

@SysLog(“登陆操作”)

@PostMapping(“/login”)

public Result login(String username, String password, HttpServletRequest request) {

try {

//获取当前登录主体对象

Subject subject = SecurityUtils.getSubject();

UsernamePasswordToken token = new UsernamePasswordToken(username, password);

subject.login(token);

LoginUserVO userDTO = (LoginUserVO) subject.getPrincipal();

request.getSession().setAttribute(“username”, userDTO.getUser());

return Result.success(true, “200”, “登录成功”);

} catch (UnknownAccountException e) {

e.printStackTrace();

return Result.error(false, “400”, “登录失败,用户名不存在”);

}catch (IncorrectCredentialsException e) {

e.printStackTrace();

return Result.error(false, “400”, “登录失败,密码错误”);

}catch (AuthenticationException e) {

e.printStackTrace();

return Result.error(false, “400”, “登录失败,账户禁用”);

/**

  • 得到登陆验证码

  • @param response

  • @param session

  • @throws IOException

*/

@RequestMapping(“/getCode”)

public void getCode(HttpServletResponse response, HttpSession session) throws IOException {

//定义图形验证码的长和宽

LineCaptcha lineCaptcha = CaptchaUtil.createLineCaptcha(116, 36,4,5);

session.setAttribute(“code”,lineCaptcha.getCode());

try {

ServletOutputStream outputStream = response.getOutputStream();

lineCaptcha.write(outputStream);

outputStream.close();

} catch (IOException e) {

e.printStackTrace();

/**

  • 查询所有用户信息

  • @param userVO

  • @return

*/

@SysLog(“用户查询操作”)

@RequestMapping(“/userList”)

public DataGridViewResult userList(UserVO userVO) {

//分页构造函数

IPage page = new Page<>(userVO.getPage(), userVO.getLimit());

QueryWrapper queryWrapper = new QueryWrapper<>();

queryWrapper.like(!StringUtils.isEmpty(userVO.getUsername()), “username”, userVO.getUsername());

queryWrapper.like(!StringUtils.isEmpty(userVO.getUname()), “uname”, userVO.getUname());

/**

  • 翻页查询

  • @param page 翻页对象

  • @param queryWrapper 实体对象封装操作类

*/

IPage userIPage = userService.page(page, queryWrapper);

return new DataGridViewResult(userIPage.getTotal(), userIPage.getRecords());

/**

  • 添加用户信息

  • @param user

  • @return

*/

@SysLog(“用户添加操作”)

@PostMapping(“/adduser”)

public Result addRole(User user) {

user.setUcreatetime(new Date());

String salt = UUIDUtil.randomUUID();

user.setPassword(PasswordUtil.md5(“000000”, salt, 2));

user.setSalt(salt);

user.setType(1);

boolean bool = userService.save(user);

try {

if (bool) {

return Result.success(true, “200”, “添加成功!”);

} catch (Exception e) {

e.printStackTrace();

return Result.error(false, null, “添加失败!”);

/**

  • 校验用户名是否存在

  • @param username

  • @return

*/

@RequestMapping(“/checkUserName”)

public String checkUserName(String username) {

Map<String, Object> map = new HashMap<>();

try {

QueryWrapper queryWrapper = new QueryWrapper<>();

queryWrapper.eq(“username”, username);

User user = userService.getOne(queryWrapper);

if (user != null) {

map.put(“exist”, true);

map.put(“message”, “用户名已存在”);

} else {

map.put(“exist”, false);

map.put(“message”, “用户名可以使用”);

} catch (Exception e) {

e.printStackTrace();

return JSON.toJSONString(map);

/**

  • 修改用户信息

  • @param user

  • @return

*/

@SysLog(“用户修改操作”)

@PostMapping(“/updateuser”)

public Result updateUser(User user) {

boolean bool = userService.updateById(user);

try {

if (bool) {

return Result.success(true, “200”, “修改成功!”);

} catch (Exception e) {

e.printStackTrace();

return Result.error(false, null, “修改失败!”);

/**

  • 删除单条数据

  • @param id

  • @return

*/

@SysLog(“用户删除操作”)

@RequestMapping(“/deleteOne”)

public Result deleteOne(int id) {

boolean bool = userService.removeById(id);

try {

if (bool) {

return Result.success(true, “200”, “删除成功!”);

} catch (Exception e) {

e.printStackTrace();

return Result.error(false, null, “删除失败!”);

/**

  • 重置密码

  • @param id

  • @return

*/

@SysLog(“用户修改操作”)

@PostMapping(“/resetPwd”)

public Result resetPwd(int id) {

User user = new User();

String salt = UUIDUtil.randomUUID();

user.setUid(id);

user.setPassword(PasswordUtil.md5(“000000”, salt, 2));

user.setSalt(salt);

boolean bool = userService.updateById(user);

try {

if (bool) {

return Result.success(true, “200”, “重置成功!”);

} catch (Exception e) {

e.printStackTrace();

return Result.error(false, null, “重置失败!”);

/**

  • 根据id查询当前用户拥有的角色

  • @param id

  • @return

*/

@RequestMapping(“/initRoleByUserId”)

public DataGridViewResult initRoleByUserId(int id) {

List<Map<String, Object>> mapList = null;

try {

//查询所有角色列表

mapList = roleService.listMaps();

//根据用户id查询用户拥有的角色

Set roleIdList = userService.findRoleByUserId(id);

for (Map<String, Object> map : mapList) {

//定义标记 默认不选中

boolean flag = false;

int roleId = (int) map.get(“roleid”);

for (Integer rid : roleIdList) {

if (rid == roleId) {

flag = true;

break;

map.put(“LAY_CHECKED”, flag);

} catch (Exception e) {

e.printStackTrace();

return new DataGridViewResult(Long.valueOf(mapList.size()), mapList);

/**

  • 为用户分配角色

  • @param roleids

  • @param userid

  • @return

*/

@SysLog(“用户添加操作”)

@RequestMapping(“/saveUserRole”)

public Result saveUserRole(String roleids, int userid) {

try {

if (userService.saveUserRole(userid, roleids)) {

return Result.success(true, null, “分配成功”);

} catch (Exception e) {

e.printStackTrace();

return Result.error(false, null, “分配失败”);

/**

  • 修改密码

  • @param newPassWord1

  • @param newPassWord2

  • @return

*/

@RequestMapping(“/updateUserPassWord”)

public Result updateUserPassWord(String newPassWord1, String newPassWord2,HttpSession session) {

User sessionUser = (User) session.getAttribute(“username”);

if (newPassWord1.equals(newPassWord2)){

User user = new User();

String salt = UUIDUtil.randomUUID();

user.setUid(sessionUser.getUid());

user.setPassword(PasswordUtil.md5(newPassWord1, salt, 2));

user.setSalt(salt);

boolean bool = userService.updateById(user);

if (bool){

return Result.success(true,null,“修改成功”);

}else {

return Result.error(false,null,“修改失败!”);

}else {

return Result.error(false,null,“修改失败,两次密码不一致!”);

供应商管理控制层:

@RestController

@RequestMapping(“/provider”)

public class ProviderController {

@Autowired

private ProviderService providerService;

/**

  • 供应商模糊查询

  • @param

  • @return

*/

@SysLog(“供应商查询操作”)

@RequestMapping(“/providerList”)

public DataGridViewResult providerList(ProviderVO providerVO) {

//创建分页信息 参数1 当前页 参数2 每页显示条数

IPage page = new Page<>(providerVO.getPage(), providerVO.getLimit());

QueryWrapper queryWrapper = new QueryWrapper<>();

queryWrapper.like(!StringUtils.isEmpty(providerVO.getProvidername()),“providername”, providerVO.getProvidername());

queryWrapper.like(!StringUtils.isEmpty(providerVO.getTelephone()),“telephone”, providerVO.getTelephone());

IPage providerIPage = providerService.page(page, queryWrapper);

/**

  • logsIPage.getTotal() 总条数

  • logsIPage.getRecords() 分页记录列表

*/

return new DataGridViewResult(providerIPage.getTotal(),providerIPage.getRecords());

/**

  • 供应商批量删除

  • @param ids

  • @return

*/

@SysLog(“供应商删除操作”)

@RequestMapping(“/deleteList”)

public Result deleteList(String ids) {

//将字符串拆分成数组

String[] idsStr = ids.split(“,”);

List list = Arrays.asList(idsStr);

boolean bool = providerService.removeByIds(list);

if(bool){

return Result.success(true,“200”,“删除成功!”);

return Result.error(false,null,“删除失败!”);

/**

  • 添加供应商信息

  • @param provider

  • @param session

  • @return

*/

@SysLog(“供应商添加操作”)

@PostMapping(“/addprovider”)

public Result addProvider(Provider provider, HttpSession session){

User user = (User) session.getAttribute(“username”);

provider.setOpername(user.getUname());

boolean bool = providerService.save(provider);

if(bool){

return Result.success(true,“200”,“添加成功!”);

return Result.error(false,null,“添加失败!”);

/**

  • 修改供应商信息

  • @param provider

  • @return

*/

@SysLog(“供应商修改操作”)

@PostMapping(“/updateprovider”)

public Result updateProvider(Provider provider){

boolean bool = providerService.updateById(provider);

if(bool){

return Result.success(true,“200”,“修改成功!”);

return Result.error(false,null,“修改失败!”);

/**

  • 删除单条数据

  • @param id

  • @return

*/

@SysLog(“供应商删除操作”)

@RequestMapping(“/deleteOne”)

public Result deleteOne(int id) {

boolean bool = providerService.removeById(id);

if(bool){

return Result.success(true,“200”,“删除成功!”);

return Result.error(false,null,“删除失败!”);

/**

  • 加载下拉框

  • @return

*/

@RequestMapping(“/loadAllProvider”)

public DataGridViewResult loadAllProvider(){

QueryWrapper queryWrapper = new QueryWrapper<>();

List list = providerService.list(queryWrapper);

return new DataGridViewResult(list);

类别管理控制层:

@RestController

@RequestMapping(“/category”)

public class CategoryController {

@Autowired

private CategoryService categoryService;

/**

  • 类别模糊查询

  • @param

  • @return

*/

@SysLog(“类别查询操作”)

@RequestMapping(“/categoryList”)

public DataGridViewResult categoryList(CategoryVO categoryVO) {

//创建分页信息 参数1 当前页 参数2 每页显示条数

IPage page = new Page<>(categoryVO.getPage(), categoryVO.getLimit());

QueryWrapper queryWrapper = new QueryWrapper<>();

queryWrapper.like(!StringUtils.isEmpty(categoryVO.getCatename()),“catename”, categoryVO.getCatename());

IPage categoryIPage = categoryService.page(page, queryWrapper);

/**

  • logsIPage.getTotal() 总条数

  • logsIPage.getRecords() 分页记录列表

*/

return new DataGridViewResult(categoryIPage.getTotal(),categoryIPage.getRecords());

/**

  • 类别批量删除

  • @param ids

  • @return

*/

@SysLog(“类别删除操作”)

@RequestMapping(“/deleteList”)

public Result deleteList(String ids) {

//将字符串拆分成数组

String[] idsStr = ids.split(“,”);

List list = Arrays.asList(idsStr);

boolean bool = categoryService.removeByIds(list);

if(bool){

return Result.success(true,“200”,“删除成功!”);

return Result.error(false,null,“删除失败!”);

/**

  • 添加类别信息

  • @param category

  • @return

*/

@SysLog(“类别添加操作”)

@PostMapping(“/addcategory”)

public Result addCategory(Category category){

boolean bool = categoryService.save(category);

if(bool){

return Result.success(true,“200”,“添加成功!”);

return Result.error(false,null,“添加失败!”);

/**

  • 修改类别信息

  • @param category

  • @return

*/

@SysLog(“类别修改操作”)

@PostMapping(“/updatecategory”)

public Result updateCategory(Category category){

boolean bool = categoryService.updateById(category);

if(bool){

return Result.success(true,“200”,“修改成功!”);

return Result.error(false,null,“修改失败!”);

/**

  • 删除单条数据

  • @param id

  • @return

*/

@SysLog(“类别删除操作”)

@RequestMapping(“/deleteOne”)

public Result deleteOne(int id) {

boolean bool = categoryService.removeById(id);

if(bool){

return Result.success(true,“200”,“删除成功!”);

return Result.error(false,null,“删除失败!”);


基于javaweb的超市进销存管理系统(java+ssm+jsp+bootstrap+jquery+mysql)相关推荐

  1. 基于javaweb的图书进销存管理系统(java+ssm+jsp+bootstrap+mysql)

    基于javaweb的图书进销存管理系统(java+ssm+jsp+bootstrap+mysql) 运行环境 Java≥8.MySQL≥5.7.Tomcat≥8 开发工具 eclipse/idea/m ...

  2. 基于javaweb的业务代办帮跑腿管理系统(java+ssm+jsp+bootstrap+jquery+mysql)

    基于javaweb的业务代办帮跑腿管理系统(java+ssm+jsp+bootstrap+jquery+mysql) 运行环境 Java≥8.MySQL≥5.7.Tomcat≥8 开发工具 eclip ...

  3. Java项目:图书进销存管理系统(java+SSM+JSP+bootstrap+Mysql)

    源码获取:俺的博客首页 "资源" 里下载! 项目介绍 本系统是基于SSM和bootstrap进行开发的项目.主要也是为了完成学校的学习任务,整体可能没有那么完美,练练手倒还行. 该 ...

  4. 基于javaweb的实现进销存系统(java+ssm+bootstrap+jsp+mysql)

    基于javaweb的实现进销存系统(java+ssm+bootstrap+jsp+mysql) 运行环境 Java≥8.MySQL≥5.7.Tomcat≥8 开发工具 eclipse/idea/mye ...

  5. 基于javaweb的企业绩效考核管理系统(java+ssm+jsp+bootstrap+jquery+mysql)

    基于javaweb的企业绩效考核管理系统(java+ssm+jsp+bootstrap+jquery+mysql) 运行环境 Java≥8.MySQL≥5.7.Tomcat≥8 开发工具 eclips ...

  6. Java项目:医药进销存系统(java+SSM+JSP+Layui+jQuery+Maven+mysql)

    源码获取:博客首页 "资源" 里下载! 功能介绍 医药进销存系统,主要功能包括: 公告管理:发布公告.公告列表: 生产管理:订单列表.增加生产.订单日志: 分店采购:分店审核.采购 ...

  7. Java项目:流浪猫狗救助管理系统(java+SSM+JSP+bootstrap+jQuery+mysql)

    源码获取:博客首页 "资源" 里下载! 项目介绍 流浪猫狗救助管理系统.该项目分为前后台: 前台主要功能包括:会员的注册登陆,流浪猫狗知识,领养中心,团队活动,流浪宠物详情,申请领 ...

  8. Java项目:企业绩效考核管理系统(java+SSM+JSP+bootstrap+jQuery+Mysql)

    源码获取:俺的博客首页 "资源" 里下载! 项目介绍 本项目包含管理员与员工两种角色: 管理员角色包含以下功能: 个人信息查看,出勤管理,员工管理,奖励与罚款,工资设置,管理员登录 ...

  9. 基于javaweb的超市进销存系统设计和实现(java+Springboot+ssm+mysql+jsp+maven)

    基于javaweb的超市进销存系统设计和实现(java+Springboot+ssm+mysql+jsp+maven) 一.项目简述 本系统主要实现的功能有: 用户管理,商品管理,销售管理,进货退货管 ...

最新文章

  1. windows api中文文档_Web服务开发:Spring集成Swagger,3步自动生成API文档
  2. 怒肝两个月MySQL源码,我总结出这篇2W字的MySQL协议详解(超硬核干货)!!
  3. Eclipse 中maven插件坏死解决办法
  4. CloudFlare免费CDN优化指南
  5. 建模准备一定要做的这几件事
  6. Es-nested嵌入式属性
  7. mysql定期删除数据_mysql数据库如何实现定期删除数据库一些东西
  8. 暴笑小笑话集----转自通信公社
  9. The Last Non-zero Digit POJ - 1150(n!mod p)
  10. idea 2018.1 创建springboot开启找回Run Dashboard
  11. tina中信号带宽_关于通频带,3dB带宽,三阶截点和1dB压缩点,截止频率,频率范围,带宽,特征频率(中心频率),截止频率和增益(db)...
  12. toolstripmanager --工具栏或菜单的合并
  13. 开源势不可挡 IBM Power Systems Linux中心成立
  14. IT 趣味故事:TCP 出“大事”了!
  15. web 基本概念辨异 —— URI 与 URL
  16. StanfordDB class自学笔记 (九) Relational Design Theory 关系设计理论
  17. 高斯09linux教程,Gaussian 09的安装与使用
  18. PHP100视频教程解压密码[连载结束]
  19. 神经网络与误差反向传播算法
  20. mysql 3306无法访问_Mysql 3306端口无法被远程机器访问

热门文章

  1. 音频编解码之G711
  2. 邮件群发平台_海外疫情持续严重影响外贸市场,U-Mail邮件群发应对出招
  3. Grin v0.5在Ubuntu下的安装和启动
  4. 【SPSS】2.定义变量
  5. Verilog——补码转换
  6. RISC-V ELF规范和函数调用规范
  7. 十大远古神秘失落文明
  8. python数据分析-线性回归选择基金
  9. 16-内存分配与回收策略-对象优先分配Eden+大对象进老年代
  10. JMeter安装教程------详细