餐廳收銀系統(tǒng)|基于SSM實現(xiàn)餐廳收銀系統(tǒng)
項目編號:BS--XX-091
一,環(huán)境介紹
語言環(huán)境:Java:? jdk1.8
數(shù)據(jù)庫:Mysql: mysql5.7
應(yīng)用服務(wù)器:Tomcat:? tomcat8.5.31
開發(fā)工具:IDEA或eclipse
開發(fā)技術(shù):spring+spring mvc+mybatis+bootstrap+jquery
二,項目簡介
本項目基于SSM實現(xiàn)用于餐廳的收銀管理系統(tǒng),包含了四個模塊
1.桌位模塊
桌位模塊主要是用于管理桌位的模塊,包括點菜到結(jié)賬的流程
將桌位人數(shù)設(shè)置為0可以滯空當(dāng)前桌位
2.賬單模塊
賬單模塊記錄了每一天的帳單匯總,同時提供了年月日賬單的統(tǒng)計,在日賬單內(nèi)可以查看當(dāng)日的所有消費詳情,還提供了按日期或日期區(qū)間搜索賬單的功能
3.日常維護(hù)模塊
提供了桌位菜單用戶供應(yīng)商的配置功能,也就是增刪改查
? 添加菜品時,添加酒水類時,可以選擇進(jìn)貨內(nèi)的酒水,這樣的話在結(jié)賬后若客人點了該酒水,會將銷售信息記錄在酒水庫存內(nèi)的銷售信息里
4.酒水庫存模塊
查看添加酒水的進(jìn)銷存信息
三,系統(tǒng)展示
下面展示系統(tǒng)的運行模塊:
用戶登陸

數(shù)據(jù)維護(hù)—菜品維護(hù)


桌位維護(hù)


賬戶維護(hù)


賬戶維護(hù)


開桌就餐


點菜

結(jié)賬


查看賬單

查看單桌消費

四,核心代碼展示
package controller;import com.alibaba.fastjson.JSON;import dao.user.UserMapper;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.ResponseBody;import org.springframework.web.servlet.ModelAndView;import pojo.Pager;import pojo.Provider;import pojo.User;import service.user.UserService;import tools.PagerTools;import java.util.HashMap;import java.util.Map;public class UserController { ? ?
? ?private UserService userService; ? ?
? ?
? ?public Object addUser(User user){ ? ? ? ?return JSON.toJSONString(userService.addUser(user));
? ?} ? ?
? ?public ModelAndView showUserList(ModelAndView modelAndView, Pager pager){
? ? ? ?pager.setPageSize(PagerTools.deskBillPagerSize);
? ? ? ?pager.setTotalCount(userService.getTotalCount(pager));
? ? ? ?pager.count();
? ? ? ?pager.setList(userService.showUserList(pager));
? ? ? ?modelAndView.addObject("pager",pager);
? ? ? ?modelAndView.setViewName("/daily/user/userList"); ? ? ? ?return modelAndView;
? ?} ? ?
? ?
? ?public Object delUserById(User user){ ? ? ? ?return JSON.toJSONString(userService.delUserById(user));
? ?} ? ?
? ?
? ?public Object updateUser(User user){ ? ? ? ?return JSON.toJSONString(userService.updateUser(user));
? ?} ? ?
? ?public ModelAndView loadUserInfoById(ModelAndView modelAndView,Pager pager){
? ? ? ?pager.setPageSize(1);
? ? ? ?pager.setTotalCount(userService.getTotalCount(pager));
? ? ? ?pager.count();
? ? ? ?modelAndView.addObject("user",userService.showUserList(pager).get(0));
? ? ? ?modelAndView.setViewName("/daily/user/updateUser"); ? ? ? ?return modelAndView;
? ?} ? ?
? ?
? ?public Object userIsExist(User user){
? ? ? ?System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~");
? ? ? ?System.out.println(user.getIdentity()+user.getUserCode()+user.getPhone());
? ? ? ?System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~"); ? ? ? ?int phoneFlag=-1; ? ? ? ?int identityFlag=-1; ? ? ? ?int userCodeFlag=-1; ? ? ? ?if(user.getUserCode()!=null && !user.getUserCode().equals("")){
? ? ? ? ? ?userCodeFlag=userService.userIsExist(user);
? ? ? ?} ? ? ? ?if(user.getIdentity()!=null && !"".equals(user.getIdentity())){
? ? ? ? ? ?identityFlag=userService.userIsExist(user);
? ? ? ?} ? ? ? ?if(user.getPhone()!=null && !"".equals(user.getPhone())){
? ? ? ? ? ?phoneFlag=userService.userIsExist(user);
? ? ? ?} ? ? ? ?return "{\"userCodeFlag\":\""+userCodeFlag+"\",\"phoneFlag\":\""+phoneFlag+"\",\"identityFlag\":\""+identityFlag+"\"}";
? ?}
}
package controller;import com.alibaba.fastjson.JSON;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Controller;import org.springframework.ui.Model;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestParam;import org.springframework.web.bind.annotation.ResponseBody;import org.springframework.web.servlet.ModelAndView;import pojo.*;import service.drink.ProviderService;import tools.BillCodeUtil;import tools.PagerTools;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpSession;import javax.sound.midi.Soundbank;import java.util.List;public class DrinkController { ? ?
? ?private ProviderService providerService; ? ?
? ?public String drink(HttpSession session) { ? ? ? ?if(session.getAttribute("user")==null){//權(quán)限控制
? ? ? ? ? ?return "redirect:login.html";
? ? ? ?} ? ? ? ?return "/drink/drink";
? ?}
? ?; ? ?//加載供應(yīng)下拉列表
? ?
? ?
? ?public Object loadProviderSelect() { ? ? ? ?return JSON.toJSONString(providerService.getProvider());
? ?}
? ?; ? ?//加載進(jìn)貨信息
? ?
? ?
? ?public ModelAndView loadDrinkBill(ModelAndView modelAndView, DrinkBillPager pager) { ? ? ? ?int totalCount = providerService.getDrinkBillCount(pager); ? ? ? ?if (totalCount != 0) {
? ? ? ? ? ?pager.setTotalCount(totalCount);
? ? ? ?} else {
? ? ? ? ? ?pager.setTotalCount(1);
? ? ? ?}
? ? ? ?pager.setPageSize(PagerTools.drinkBillPagerSize);
? ? ? ?pager.count();
? ? ? ?pager.setList(providerService.getDrinkBill(pager));
? ? ? ?modelAndView.addObject("pager", pager);
? ? ? ?modelAndView.setViewName("/drink/ajaxJinhuoList"); ? ? ? ?return modelAndView;
? ?} ? ?//加載進(jìn)貨信息
? ?
? ?
? ?public Object loadDrinkBillCode(DrinkBillPager pager) { ? ? ? ?int totalCount = providerService.getDrinkBillCount(pager); ? ? ? ?if (totalCount != 0) {
? ? ? ? ? ?pager.setTotalCount(totalCount);
? ? ? ?} else {
? ? ? ? ? ?pager.setTotalCount(1);
? ? ? ?}
? ? ? ?pager.setPageSize(100);
? ? ? ?pager.count();
? ? ? ?List<Drinkbill> drinkBills=providerService.getDrinkBill(pager); ? ? ? ?return JSON.toJSONString(drinkBills);
? ?} ? ?//del刪除進(jìn)貨信息
? ?
? ?
? ?public Object delDrinkBill( {
? ? ? ?providerService.delDrinkSellBill(id); ? ? ? ? String id)return JSON.toJSONString(providerService.delDrinkBill(id));
? ?} ? ?//del刪除銷售信息
? ?
? ?
? ?public Object delDrinkSellBill( { ? ? ? ? String id)return JSON.toJSONString(providerService.delDrinkSellBill(id));
? ?} ? ?//更新進(jìn)貨信息
? ?
? ?
? ?public Object delDrinkBill(Drinkbill drinkbill) {
? ? ? ?drinkbill.setIsPay(2); ? ? ? ?return JSON.toJSONString(providerService.updateDrinkBill(drinkbill));
? ?}
? ?; ? ?//添加進(jìn)貨信息
? ?
? ?
? ?public Object addDrinkBill(Drinkbill drinkbill, DrinkSellBill drinkSellBill) { ? ? ? ?String drinkBillCode = BillCodeUtil.getBillCode();
? ? ? ?drinkbill.setDrinbillCode(drinkBillCode); ? ? ? ?int addDrinkBillFlag = providerService.addDrinkBill(drinkbill);
? ? ? ?drinkSellBill.setDrinkbillId(drinkbill.getId());
? ? ? ?drinkSellBill.setDrinkBillCode(drinkBillCode); ? ? ? ?int addDrinkSellBillFlag = providerService.addDrinkSellBill(drinkSellBill); ? ? ? ?return "{\"addDrinkBillFlag\":\"" + addDrinkBillFlag + "\",\"addDrinkSellBillFlag\":\"" + addDrinkSellBillFlag + "\"}";
? ?} ? ?//加載銷售信息
? ?
? ?
? ?public ModelAndView loadDrinkSellBill(ModelAndView modelAndView, DrinkBillPager pager) { ? ? ? ?int totalCount = providerService.getDrinkSellBillCount(pager); ? ? ? ?if (totalCount != 0) {
? ? ? ? ? ?pager.setTotalCount(totalCount);
? ? ? ?} else {
? ? ? ? ? ?pager.setTotalCount(1);
? ? ? ?}
? ? ? ?pager.setPageSize(PagerTools.drinkBillPagerSize);
? ? ? ?pager.count();
? ? ? ?pager.setList(providerService.getDrinkSellBill(pager));
? ? ? ?modelAndView.addObject("pager", pager);
? ? ? ?modelAndView.setViewName("/drink/sellList"); ? ? ? ?return modelAndView;
? ?} ? ?//加載銷售信息
? ?
? ?
? ?public ModelAndView loadSuplusDrinkBill(ModelAndView modelAndView, DrinkBillPager pager) { ? ? ? ?int totalCount = providerService.getDrinkSellBillCount(pager); ? ? ? ?if (totalCount != 0) {
? ? ? ? ? ?pager.setTotalCount(totalCount);
? ? ? ?} else {
? ? ? ? ? ?pager.setTotalCount(1);
? ? ? ?}
? ? ? ?pager.setPageSize(PagerTools.drinkBillPagerSize);
? ? ? ?pager.count();
? ? ? ?pager.setList(providerService.getSuplusDrinkBill(pager));
? ? ? ?modelAndView.addObject("pager", pager);
? ? ? ?modelAndView.setViewName("/drink/suplusDrinkBillList"); ? ? ? ?return modelAndView;
? ?} ? ?//添加供應(yīng)商
? ?
? ?
? ?public Object addProvider(Provider provider){ ? ? ? ?return JSON.toJSONString(providerService.addProvider(provider));
? ?} ? ?//驗證供應(yīng)商是否存在
? ?
? ?
? ?public Object isProExist({ ? ? ? ? String proName)return JSON.toJSONString(providerService.isProExist(proName));
? ?} ? ?//加載供應(yīng)商列表
? ?
? ?public ModelAndView showProviderList(ModelAndView modelAndView,Pager pager){
? ? ? ?pager.setTotalCount(providerService.getTotalCount(pager));
? ? ? ?pager.setPageSize(3);
? ? ? ?pager.count(); ? ? ? ?if("".equals(pager.getOpr()) || pager.getOpr()==null){
? ? ? ? ? ?modelAndView.addObject("provider",providerService.getProviderList(pager).get(0));
? ? ? ? ? ?modelAndView.setViewName("daily/provider/updateProvider");
? ? ? ?}else{
? ? ? ? ? ?pager.setList(providerService.getProviderList(pager));
? ? ? ? ? ?modelAndView.setViewName("daily/provider/providerList");
? ? ? ? ? ?modelAndView.addObject("pager",pager);
? ? ? ?} ? ? ? ?return modelAndView;
? ?} ? ?//刪除供應(yīng)商
? ?
? ?
? ?public Object delProviderById(Pager pager){ ? ? ? ?return JSON.toJSONString(providerService.delProviderById(pager));
? ?} ? ?//更改供應(yīng)商
? ?
? ?
? ?public Object updateProvider(Provider provider){ ? ? ? ?return JSON.toJSONString(providerService.updateProvider(provider));
? ?}
}
package controller;import com.alibaba.fastjson.JSON;import org.apache.commons.io.FilenameUtils;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestParam;import org.springframework.web.bind.annotation.ResponseBody;import org.springframework.web.multipart.MultipartFile;import org.springframework.web.servlet.ModelAndView;import pojo.Dish;import pojo.Pager;import pojo.dish.Dishes;import service.dish.DishService;import tools.BillCodeUtil;import tools.PagerTools;import tools.RedisUtil;import javax.annotation.Resource;import javax.servlet.http.HttpServletRequest;import java.io.File;import java.io.IOException;import java.util.ArrayList;import java.util.List;public class DishController { ? ?
? ?private DishService dishService; ? ?
? ?private RedisUtil redisUtil; ? ?
? ?
? ?public Object addDish(Dish dish, { ? ? ? ? MultipartFile file,
? ? ? ? ? ? ? ? ? ? ? ? ?HttpServletRequest request)boolean addFlag = false;//添加標(biāo)記
? ? ? ?String fifleFlag = null;//文件上傳狀態(tài)標(biāo)記
? ? ? ?System.out.println("addDish~~~~~~~~~~~~~~~~~~~~~~~");
? ? ? ?System.out.println("~~~~~~~~~~~~~~~~~~~dishName:" + dish.getDishName()); ? ? ? ?if (!file.isEmpty()) { ? ? ? ? ? ?String path = request.getSession().getServletContext().getRealPath("assets" + File.separator + "img");//獲取/statics/upload的地址
? ? ? ? ? ?System.out.println("存儲地址:" + path); ? ? ? ? ? ?String oldFileName = file.getOriginalFilename();//獲取原文件名
? ? ? ? ? ?System.out.println("原文件名:" + oldFileName); ? ? ? ? ? ?String newFileName = BillCodeUtil.getBillCode() + "_"+oldFileName;//新文件名
? ? ? ? ? ?String prefix = FilenameUtils.getExtension(oldFileName);//獲取文件后綴,對后綴進(jìn)行判斷,過濾不符合條件的文件
? ? ? ? ? ?System.out.println("~~~文件類型:" + prefix + "~~~");
? ? ? ? ? ?System.out.println("~~~文件大?。?#34; + file.getSize() + "~~~"); ? ? ? ? ? ? ? if (file.getSize() < PagerTools.maxFileSize) {
? ? ? ? ? ? ? ? ? ?System.out.println("~~~~~~~~~文件大小驗證通過~~~~~~~~~~~"); ? ? ? ? ? ? ? ? ? ?try {
? ? ? ? ? ? ? ? ? ? ? ?file.transferTo(new File(path + File.separator +newFileName));
? ? ? ? ? ? ? ? ? ? ? ?System.out.println("上傳成功");
? ? ? ? ? ? ? ? ? ? ? ?dish.setFileName(newFileName);//將新文件名保存在對象中
? ? ? ? ? ? ? ? ? ? ? ?addFlag = dishService.addDish(dish);//添加至數(shù)據(jù)庫
? ? ? ? ? ? ? ? ? ? ? ?System.out.println("菜品" + dish.getDishName() + "添加成功");
? ? ? ? ? ? ? ? ? ?} catch (IllegalStateException e) {
? ? ? ? ? ? ? ? ? ? ? ?e.printStackTrace();
? ? ? ? ? ? ? ? ? ?} catch (IOException e) {
? ? ? ? ? ? ? ? ? ? ? ?e.printStackTrace();
? ? ? ? ? ? ? ? ? ?}
? ? ? ? ? ? ? ?} else {
? ? ? ? ? ? ? ? ? ?fifleFlag = "圖片不能大于500KB";
? ? ? ? ? ? ? ?}
? ? ? ?} ? ? ? ?if (addFlag) {//添加成功時
? ? ? ? ? ?//刷新緩存
? ? ? ? ? ?redisUtil.del("allDishes"); ? ? ? ? ? ?return JSON.toJSONString("OK");
? ? ? ?} else { ? ? ? ? ? ?return "{'fifleFlag':'" + fifleFlag + "'}";
? ? ? ?}
? ?} ? ?//ajax驗證菜品名是否存在
? ?
? ?
? ?public Object dishNameIsExist( { ? ? ? ? String dishName)boolean existFlag = false; ? ? ? ?if (dishName != "" && dishName != null) {
? ? ? ? ? ?existFlag = dishService.isExist(dishName);
? ? ? ?} ? ? ? ?if (existFlag) { ? ? ? ? ? ?return JSON.toJSONString("0");//存在該菜品
? ? ? ?} ? ? ? ?return JSON.toJSONString("1");//不存在該菜品
? ?} ? ?//加載菜品列表
? ?
? ?
? ?public ModelAndView dishList(Pager pager, ModelAndView modelAndView, ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? { ? ? ? ? String dishName)if (dishName == null || "".equals(dishName)) {//如果沒有輸入查詢名字則當(dāng)作opr=allDish
? ? ? ? ? ?pager.setOpr("allDish");
? ? ? ?}
? ? ? ?modelAndView.setViewName("/daily/dish/dishList"); ? ? ? ?Dishes dishes = Dishes.getDishes();
? ? ? ?pager.setPageSize(PagerTools.delDishListPagerSize); ? ? ? ?if (dishes.getAllDishCount() == 0) { ? ? ? ? ? ?if(redisUtil.getList("allDishes")==null){
? ? ? ? ? ? ? ?redisUtil.addList("allDishes",dishService.getDish());
? ? ? ? ? ?}
? ? ? ? ? ?dishes.setAllDish(redisUtil.getList("allDishes"));
? ? ? ?}
? ? ? ?pager.setTotalCount(dishes.getAllDishCount()); ? ? ? ?if ("serchDish".equals(pager.getOpr())) {//優(yōu)先查詢
? ? ? ? ? ?pager.setPageSize(dishes.getAllDishCount());//搜索時把所有菜品全部查出
? ? ? ? ? ?System.out.println("~~~~~~~~~~~~~~~~~~~~~~" + dishName);
? ? ? ?}
? ? ? ?pager.count();
? ? ? ?List<Dish> list = dishes.getAllDish(pager); ? ? ? ?if ("serchDish".equals(pager.getOpr())) {//優(yōu)先查詢
? ? ? ? ? ?List<Dish> serchList = new ArrayList<Dish>(); ? ? ? ? ? ?if (dishName != null && !"".equals(dishName)) {
? ? ? ? ? ? ? ?System.out.println("~~~~~~~~查找相同菜品的數(shù)據(jù)~~~~~~~~~~"); ? ? ? ? ? ? ? ?for (Dish dish : list) { ? ? ? ? ? ? ? ? ? ?if(dish.getDishName().contains(dishName)){
? ? ? ? ? ? ? ? ? ? ? ?System.out.println("~~~~~~~~~~~找到與"+dishName+"相似的菜品~~~~~~~~~~~");
? ? ? ? ? ? ? ? ? ? ? ?serchList.add(dish);
? ? ? ? ? ? ? ? ? ?}
? ? ? ? ? ? ? ?}
? ? ? ? ? ? ? ?pager.setList(serchList);
? ? ? ? ? ?}
? ? ? ?} else {
? ? ? ? ? ?pager.setList(list);
? ? ? ?}
? ? ? ?modelAndView.addObject("pager", pager); ? ? ? ?return modelAndView;
? ?} ? ?//ajax刪除菜品
? ?
? ?
? ?public Object delDish({
? ? ? ?System.out.println( String id)"~~~~~~~~~~~~~~開始刪除Dish~~~~~~~~~~~~~~~"); ? ? ? ?boolean delFlag=false;
? ? ? ?System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~id="+id); ? ? ? ?if(id!=null && !"".equals(id)){
? ? ? ? ? ?System.out.println("~~~~~~~~~~~~~~~進(jìn)入刪除~~~~~~~~~~~~~~~~");
? ? ? ? ? ?delFlag=dishService.delDishById(id);
? ? ? ?} ? ? ? ?if(delFlag){//刪除成功
? ? ? ? ? ?System.out.println("~~~~~~~~~~~~~~刪除Dish成功~~~~~~~~~~~~~~~");
? ? ? ? ? ?redisUtil.del("allDishes");//刷新redis
? ? ? ? ? ?Dishes.getDishes().setAllDish(null);//刷新單例
? ? ? ? ? ?return JSON.toJSONString(0);//刪除成功
? ? ? ?} ? ? ? ?return JSON.toJSONString(1);//刪除失敗
? ?}
}
五,項目總結(jié)
? ?項目功能完整,運行無誤,適合做畢業(yè)設(shè)計使用?