作者主页:源码空间站2022

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

文末获取源码

项目介绍

用于餐厅的收银管理系统,包含了四个模块
1.桌位模块
桌位模块主要是用于管理桌位的模块,包括点菜到结账的流程
将桌位人数设置为`0`可以滞空当前桌位

2.账单模块
账单模块记录了每一天的帐单汇总,同时提供了年月日账单的统计,在日账单内可以查看当日的所有消费详情,还提供了按日期或日期区间搜索账单的功能

3.日常维护模块
提供了桌位菜单用户供应商的配置功能,也就是增删改查

添加菜品时,添加酒水类时,可以选择进货内的酒水,这样的话在结账后若客人点了该酒水,会将销售信息记录在酒水库存内的销售信息里

4.酒水库存模块
查看添加酒水的进销存信息

管理员角色包含以下功能:

登录,查看桌位,开桌,点菜,结账,查看账单,添加菜品,查看菜品,桌位维护,添加桌位,添加账号,查看账号,添加供应商,进货信息管理,添加进货信息等功能。

由于本程序规模不大,可供课程设计,毕业设计学习演示之用

环境需要

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项目:否;
7.Redis数据库;

技术栈

1. 后端:Spring+SpringMVC+Mybatis

2. 前端:JSP+Bootstrap+jQuery

使用说明

1. 使用Navicat或者其它工具,在mysql中创建对应名称的数据库,并导入项目的sql文件;
2. 使用IDEA/Eclipse/MyEclipse导入项目,Eclipse/MyEclipse导入时,若为maven项目请选择maven;若为maven项目,导入成功后请执行maven clean;maven install命令,然后运行;
3. 将项目中applicationcontext-mybatis.xml配置文件中的数据库配置改为自己的配置;

4. 运行项目,输入localhost:8080/login.html 登录

管理员账号/密码:admin/adminadmin

运行截图 

代码相关

桌位管理控制器

@Controller
public class DeskController {@Autowiredprivate DeskService deskService;@Resource(name="redisUtil")private RedisUtil redisUtil;@Autowiredprivate DishMapper dishMapper;//显示桌位列表页面@RequestMapping(value="/desklist.html")public String showDeskList(Model model, HttpSession session, @RequestParam(required=false)String show){if(session.getAttribute("user")==null){//权限控制return "redirect:login.html";}List<Desk> desks=deskService.getDesks();model.addAttribute("desks", desks);if(!"desk".equals(show)){return "redirect:desklist.html?show=desk";}else{return "/desk/desklist";}}//桌位详情页面@RequestMapping(value="/deskinfo.html")public String showDeskInfo(@RequestParam(required=false)String id,Model model,HttpSession session){if(session.getAttribute("user")==null){//权限控制return "redirect:login.html";}Desk desk=null;int status=0;String deskCode=null;if(id!=null && id!=""){desk=deskService.getDeskById(id);}if(desk!=null){status=desk.getStatus();deskCode=desk.getDeskCode();}if(status==1){//如果桌位状态为空if(deskCode!=null && deskCode!=""){//传过来的桌位编号不为空时redisUtil.del(deskCode);//删除缓存内的桌位菜单信息}}else if(status==2){//如果桌位状态为未买单if(deskCode!=null && deskCode!=""){//传过来的桌位编号不为空时List<DeskInfo_detail> deskDish=redisUtil.getList(deskCode);//从缓存取出当前桌位的点菜信息Double totalMoney=0.0;//总计if (deskDish==null || deskDish.size()==0) {deskDish=new ArrayList<DeskInfo_detail>();redisUtil.addList(deskCode, deskDish);}for (int i = 0; i < deskDish.size(); i++) {if(deskDish.get(i).getCost()!=null){totalMoney+=deskDish.get(i).getCost();}         }model.addAttribute("totalMoney", totalMoney);model.addAttribute("deskDish", deskDish);}}List dishes=redisUtil.getList("allDishes");//先从缓存中查询if(dishes == null || dishes.size()==0){//如果缓存中没有则从数据库查dishes=dishMapper.getDish();redisUtil.addList("allDishes",dishes);}Dishes dishesUtil=Dishes.getDishes();//菜单工具类dishesUtil.setAllDish(dishes);//将查询出来的菜品放在工具类中dishesUtil.count();//格式化菜品(分类)//session.setAttribute("dishUtil",dishesUtil);model.addAttribute("desk", desk);return "/desk/deskinfo";}//ajax点菜@RequestMapping("/selectDish.do")@ResponseBodypublic Object selectDish(DeskInfo_detail deskInfo_detail,@RequestParam(required=false)String deskCode){List<DeskInfo_detail> deskDish=redisUtil.getList(deskCode);if(deskDish==null){deskDish=new ArrayList<DeskInfo_detail>();System.out.println("------------------------------新建桌位号"+deskCode+"菜单列表------------------------------");}boolean addFlag=true;//标记是否有相同的菜品,默认为true表名不存在相同菜名for (int i = 0; i < deskDish.size(); i++) {if(deskDish.get(i).getDishName().equals(deskInfo_detail.getDishName())){//如果存在相同的菜品int oldNum=deskDish.get(i).getDishNum();//得到原来的数目String newContent=deskInfo_detail.getContent();int newNum=oldNum+deskInfo_detail.getDishNum();//将新添加的数目和原来的数目相加得到新数目deskDish.get(i).setDishNum(newNum);//修改数目deskDish.get(i).setCost(newNum*deskDish.get(i).getPrice());//修改小计deskDish.get(i).setContent(newContent);addFlag=false;//存在相同的,将标记设置为falsebreak;}}if(addFlag){//如果不存在相同的菜品,addFlag的值为truedeskDish.add(deskInfo_detail);}       redisUtil.addList(deskCode, deskDish);//更新缓存return JSON.toJSONString(deskDish);}//更改桌位状态@RequestMapping("/changeStatus.do")@ResponseBodypublic Object changeDeskStatus(Desk desk){boolean flag=false;if(desk!=null){if(desk.getStatus()!=null && desk.getStatus()!=2 ){desk.setStatus(2);flag=deskService.updateDeskStatus(desk);}else{return JSON.toJSONString("OK");}} if(flag){return JSON.toJSONString("OK");}else{return JSON.toJSONString("NO");}}//更改桌位@RequestMapping("/changeDesk.do")@ResponseBodypublic Object changeDesk(Desk desk){boolean flag=deskService.updateDesk(desk);String str="";if(flag){str="true";}else{str="false";}return JSON.toJSONString(str);}//更改菜品@RequestMapping("/updateDish.do")@ResponseBodypublic Object updateDish(DeskInfo_detail deskInfo_detail,@RequestParam(required=false)String deskCode){List<DeskInfo_detail> deskDish=redisUtil.getList(deskCode);for (int i = 0; i < deskDish.size(); i++) {if(deskDish.get(i).getDishName().equals(deskInfo_detail.getDishName())){//找到相同的菜品String newContent=deskInfo_detail.getContent();//得到新的备注int newNum=deskInfo_detail.getDishNum();//得到修改过后的数目deskDish.get(i).setDishNum(newNum);//修改数目deskDish.get(i).setCost(newNum*deskDish.get(i).getPrice());//修改小计deskDish.get(i).setContent(newContent);//修改备注redisUtil.addList(deskCode, deskDish);//更新缓存break;}}return JSON.toJSONString(deskDish);}//删除菜品@RequestMapping("/delDish.do")@ResponseBodypublic Object delDish(DeskInfo_detail deskInfo_detail,@RequestParam(required=false)String deskCode){List<DeskInfo_detail> deskDish=redisUtil.getList(deskCode);for (int i = 0; i < deskDish.size(); i++) {if(deskDish.get(i).getDishName().equals(deskInfo_detail.getDishName())){//找到相同的菜品deskDish.remove(i);//删除该菜品redisUtil.addList(deskCode, deskDish);//更新缓存break;}}return JSON.toJSONString(deskDish);}@ResponseBody@RequestMapping("/alldish.do")public ModelAndView showAlldish(ModelAndView modelAndView,Pager pager){Dishes dishes=Dishes.getDishes();if("allDish".equals(pager.getOpr())){pager.setTotalCount(dishes.getAllDishCount());pager.setPageSize(PagerTools.dishMenuPagerSize);pager.count();List<Dish> list=dishes.getAllDish(pager);pager.setList(list);}else if("soup".equals(pager.getOpr())){pager.setTotalCount(dishes.getSoupsCount());pager.setPageSize(PagerTools.dishMenuPagerSize);pager.count();List<Dish> list=dishes.getSoups(pager);pager.setList(list);}else if("fry".equals(pager.getOpr())){pager.setTotalCount(dishes.getFrysCount());pager.setPageSize(PagerTools.dishMenuPagerSize);pager.count();List<Dish> list=dishes.getFrys(pager);pager.setList(list);}else if("other".equals(pager.getOpr())){pager.setTotalCount(dishes.getOthersCount());pager.setPageSize(PagerTools.dishMenuPagerSize);pager.count();List<Dish> list=dishes.getOthers(pager);pager.setList(list);}else if("drink".equals(pager.getOpr())){pager.setTotalCount(dishes.getDrinksCount());pager.setPageSize(PagerTools.dishMenuPagerSize);pager.count();List<Dish> list=dishes.getDrinks(pager);pager.setList(list);}modelAndView.setViewName("/desk/dishMenu/allDish");modelAndView.addObject("pager",pager);return modelAndView;}//桌位维护//添加桌位 ajax验证@ResponseBody@RequestMapping("/deskCodeIsExist.do")public Object deskCodeIsExist(@RequestParam(required =false) String deskCode){boolean flag=deskService.isExist(deskCode);return flag?JSON.toJSONString("1"):JSON.toJSONString("0");}//添加桌位@ResponseBody@RequestMapping("/addDesk.do")public Object addDesk(Desk desk){System.out.println("~~~~~~~~~~~~~~~~~~~~~添加桌位:"+desk.getDeskCode()+"~~~~~~~~~~~~~~~~~~~~~");boolean flag=deskService.addDesk(desk);if(flag){System.out.println("~~~~~~~~~~~~~~~~~~~~~添加桌位:"+desk.getDeskCode()+"成功~~~~~~~~~~~~~~~~~~~~~");}else{System.out.println("~~~~~~~~~~~~~~~~~~~~~添加桌位:"+desk.getDeskCode()+"失败~~~~~~~~~~~~~~~~~~~~~");}return flag?JSON.toJSONString("1"):JSON.toJSONString("0");}//ajax分页加载桌位@ResponseBody@RequestMapping("/ajaxShowDesk.do")public ModelAndView ajaxShowDesk(DeskPager pager, ModelAndView modelAndView){modelAndView.setViewName("/daily/desk/deskList");pager.setPageSize(PagerTools.delDishListPagerSize);pager.setTotalCount(deskService.getTotalCount(pager));pager.count();pager.setList(deskService.getDesksByPager(pager));modelAndView.addObject("pager",pager);return modelAndView;}//删除桌位@ResponseBody@RequestMapping("/delDesk.do")public Object delDesk(@RequestParam(required=false) String id){int data=deskService.delDesk(id);return JSON.toJSONString(data);}//更改桌位@ResponseBody@RequestMapping("/alertDesk.do")public Object delDesk(Desk desk){boolean data=deskService.updateDesk(desk);return JSON.toJSONString(data?"1":"0");}}

如果也想学习本系统,下面领取。关注并回复:134ssm

Java项目:SSM餐厅点餐收银管理系统相关推荐

  1. 餐饮收银管理系统如何连接mysql_基于jsp+mysql+Spring+mybatis的SSM餐厅点餐收银管理系统...

    运行环境: 最好是java jdk 1.8,我们在这个平台上运行的.其他版本理论上也可以. IDE环境: Eclipse,Myeclipse,IDEA都可以 tomcat环境: 最好是Tomcat 7 ...

  2. 基于javaweb的餐厅点餐收银管理系统(java+ssm+jsp+bootstrap+mysql)

    基于javaweb的餐厅点餐收银管理系统(java+ssm+jsp+bootstrap+mysql) 运行环境 Java≥8.MySQL≥5.7.Tomcat≥8 开发工具 eclipse/idea/ ...

  3. 基于SSM饭店点餐收银管理系统【数据库设计、论文、源码、开题报告】

    数据库脚本下载地址: https://download.csdn.net/download/itrjxxs_com/86500763 主要使用技术 Spring+SpringMVC+Mybatis+B ...

  4. 基于SSM的饭店点餐收银管理系统【数据库设计、源码、开题报告】

    数据库脚本下载地址: https://download.csdn.net/download/itrjxxs_com/86500763 主要使用技术 Spring+SpringMVC+Mybatis+B ...

  5. 基于java的超市收银管理和基于SSM+mysql的Web便利店收银管理系统

    基于Java实现的超市收银.SSM+mysql便利店超市收银管理系统 主要技术 SpringBoot\SSM(两个版本都有) JSP.JSTL.jQuery.HTML.CSS.JS Mysql boo ...

  6. 基于SSM和mysql实现的Web便利店收银管理系统实现,Javaweb实现的超市收银平台

    基于Java实现的超市收银.SSM+mysql便利店超市收银管理系统 感兴趣的朋友可以家 3060912346 主要技术 SpringBoot\SSM(两个版本都有) JSP.JSTL.jQuery. ...

  7. java项目-第136期ssm超市收银管理系统-java毕业设计

    java项目-第136期ssm超市收银管理系统-计算机毕业设计 [源码请到资源专栏下载] 今天分享的项目是<超市收银管理系统> 该项目分为超级管理员和收银员2个角色. 管理员拥有最大的权限 ...

  8. Java毕设项目——超市POS收银管理系统(java+SSM+Maven+Mysql+Jsp)

    文末获取源码 开发语言:Java 框架:SSM 技术:Jsp JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 5.7/8.0 数据库工具:Navicat11 开发软件:eclip ...

  9. 基于javaweb的超市收银管理系统(java+ssm+html+mysql)

    基于javaweb的超市收银管理系统(java+ssm+html+mysql) 运行环境 Java≥8.MySQL≥5.7.Tomcat≥8 开发工具 eclipse/idea/myeclipse/s ...

最新文章

  1. 3.4.2 停止等待协议
  2. hibernate ORM related
  3. redis单线程为何快
  4. js/vue 高德地图绘制驾车路线图
  5. mysql弄丢初始密码_MySql密码丢失
  6. 框架基础——全面解析Java注解
  7. mysql通常使用语句_Mysql 常用SQL语句集锦
  8. Storm精华问答 | Storm如何连接MySQL?
  9. 最优化学习笔记(三)——梯度下降法
  10. 人脸年龄编辑:无可奈何花落去,似曾相似春又来!
  11. iscsi网络存储服务
  12. baacloud无法连接到_加入 Beta 版“Baacloud33” - TestFlight - Apple
  13. 锤子手机T2发布会PPT模板
  14. php毕业设计商城模板,基于Thinkphp的毕业设计网上购物商城
  15. 7.8 Cound 练习
  16. 罗永浩是偏执,还是骗子?
  17. Java设计原则——依赖倒转原则
  18. 娱乐_3D相册(HTML)_七夕
  19. 一行Python都可以做什么?这35行看懂十行就算入门,全能看懂必是高手
  20. 启动模式,BOOT0和BOOT1详解

热门文章

  1. 华硕(ASUS)笔记本的型号解析
  2. 零基础学习下载FL Studio2023水果编曲软件
  3. 别说996,就是9-12-6我都能干…
  4. 干货!机器学习遇上运筹优化,助力企业降本增效:一种双层优化方法
  5. 计算机应用物联网方向6,计算机应用技术学科研究方向2:物联网关键技术及应用...
  6. 求一个矩阵的逆矩阵(用伴随矩阵求)
  7. 《怎么准备托福考试》官方指导
  8. zabbix snmp 自动发现、自定义自动发现规则和监控项原型实现原理
  9. 最新官方有道翻译接口破解调用(详)
  10. VUE.js中文官方文档