springboot柒柒酒肆点餐小程序95899-计算机课程设计、毕业设计
前言博主介绍一线全栈工程师毕设实战引路人。技术栈覆盖Java、Python、C#、PHP、Node.js及UniApp跨端开发擅长多语言项目落地与架构设计。持续分享毕设源码、开题报告、技术选型心得与职场踩坑经验。用工程化思维写代码帮你把毕设做成作品集。精彩专栏 推荐订阅Java精品项目案例【2000套】Python精品项目案例【500套】uniapp/微信小程序/安卓app精品实战案例【800套】✅获取源码请私信✅感兴趣的可以先收藏起来还有大家在毕设选题项目以及论文编写等相关问题都可以找我咨询希望帮助更多的人❤️系统实现用户功能实现桌号信息列表功能实现用户进入小程序之后最先看到的是可以使用的就餐桌号。系统从数据库中获取当前还没有被占用的桌号编码并按餐座位置排序显示出来。用户选择一个空闲的桌号之后系统就锁定这个桌号所对应的本次用餐会话。桌号信息列表界面在线点餐功能实现用户选择桌号之后进入菜品浏览页面。系统按菜品分类展示名称、价格和封面图片。用户在菜品卡片上点击查看详情之后再输入想要购买的数量然后点击加入购物车。系统把选品暂存在本地缓存中等待最后提交。在线点餐界面我的订单功能实现用户在订单页面可以查看所有的历史订单记录。系统按订单状态分组显示待支付订单有取消入口已完成订单有评价按钮。用户点击催单按钮后系统给管理员发送提醒。我的订单界面评论管理功能实现用户对已经完成的订单进入评价页面。系统展示一星到五星评分组件用户选择等级之后填写文字内容。提交时系统对评价信息的长度进行校验校验通过后将评价信息保存到数据库中并关联到对应的订单上。评论管理界面用户反馈功能实现用户在反馈页面下拉选择问题类型。系统会给出文本域的输入框用户填写完之后再点击提交按钮。系统会把反馈的时间和当前的登录用户账号一起保存起来并且把状态标记为待处理。用户反馈界面管理员功能实现后台首页功能实现管理员登录成功之后就进入了统计概览页面。系统显示当天订单数、未处理的反馈数量、低库存菜品警报。利用柱状图近一周订单变化情况便于管理员了解营业情况。后台首页界面系统用户管理功能实现管理员在用户管理页面可以查看所有的操作员账号列表。系统提供新增用户表单输入用户名、密码、角色后完成创建。管理员可以修改已经存在的账号信息或者删除不再使用的账户所有的操作都会立即写入到数据库中。系统用户管理界面桌号信息管理功能实现管理员对餐厅所有的桌号基础数据进行维护。系统显示桌号编码、容纳人数和当前位置信息管理员可以新增桌号或者修改已有的条目。生成二维码功能把桌号编码变成图片给用户扫码使用。桌号信息管理界面用户反馈管理功能实现管理员在反馈列表查看用户提交的全部建议与投诉。系统按照提交时间倒序排列未处理的条目用高亮显示。管理员查看完详情之后再填入回复内容保存时系统会将处理状态变更为已处理。用户反馈管理界面在线点餐管理功能实现管理员管理上架的所有菜品信息。系统显示菜品名称、价格、库存、上架下架状态等信息管理员可对菜品的详细信息进行修改并可上传新的封面图片。点击下架按钮之后该菜品就不会再出现在用户的点餐页面上。在线点餐管理界面订单列表管理功能实现管理员查看系统所有的订单记录。系统根据订单状态进行筛选展示待接单订单有接单按钮已完成订单不能修改。管理员对异常订单进行退款操作系统同步修改订单状态以及库存数量。订单列表管理界面数据库参考CREATE TABLE goods ( goods_id mediumint(8) unsigned NOT NULL AUTO_INCREMENT COMMENT 产品ID, title varchar(125) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT 标题, img text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci COMMENT 封面图用于显示于产品列表页, description varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT 描述, price_ago double(8,2) unsigned NOT NULL DEFAULT 0.00 COMMENT 原价, price double(8,2) unsigned NOT NULL DEFAULT 0.00 COMMENT 卖价, sales int(10) unsigned NOT NULL DEFAULT 0 COMMENT 销量, inventory int(11) NOT NULL DEFAULT 0 COMMENT 商品库存, type varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT COMMENT 商品分类, hits int(10) unsigned NOT NULL DEFAULT 0 COMMENT 点击量, content longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci COMMENT 正文, img_1 text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci COMMENT 主图1, img_2 text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci COMMENT 主图2, img_3 text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci COMMENT 主图3, img_4 text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci COMMENT 主图4, img_5 text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci COMMENT 主图5, create_time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 创建时间, update_time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 更新时间, customize_field text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci COMMENT 自定义字段, source_table varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT 来源表, source_field varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT 来源字段, source_id int(10) unsigned NOT NULL DEFAULT 0 COMMENT 来源ID, user_id int(11) unsigned DEFAULT 0 COMMENT 添加人, integral int(11) DEFAULT 0 COMMENT 积分, list_status smallint(1) DEFAULT 1 COMMENT 上架状态0下架1上架, PRIMARY KEY (goods_id) USING BTREE ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COLLATEutf8mb4_general_ci COMMENT商品信息; CREATE TABLE cart ( cart_id int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT 购物车ID, title varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT 标题, img varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT 0 COMMENT 图片, user_id int(10) unsigned NOT NULL DEFAULT 0 COMMENT 用户ID, create_time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 创建时间, update_time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 更新时间, state int(1) unsigned NOT NULL DEFAULT 0 COMMENT 状态使用中已失效, price double(8,2) NOT NULL DEFAULT 0.00 COMMENT 单价, price_ago double(8,2) NOT NULL DEFAULT 0.00 COMMENT 原价, price_count double(10,2) NOT NULL DEFAULT 0.00 COMMENT 总价, num int(8) unsigned NOT NULL DEFAULT 1 COMMENT 数量, goods_id mediumint(8) unsigned NOT NULL COMMENT 商品id, type varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT 未分类 COMMENT 商品分类, description varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT 描述, norms varchar(64) COLLATE utf8mb4_general_ci DEFAULT COMMENT 规格, PRIMARY KEY (cart_id) USING BTREE ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COLLATEutf8mb4_general_ci COMMENT购物车; DROP TABLE IF EXISTS message_inform; CREATE TABLE message_inform ( message_inform_id int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 通知ID, user_id int(10) unsigned NOT NULL DEFAULT 0 COMMENT 通知人ID, title varchar(255) DEFAULT NULL COMMENT 标题, state varchar(255) DEFAULT NULL COMMENT 状态, type varchar(64) DEFAULT NULL COMMENT 分类, content varchar(255) DEFAULT NULL COMMENT 内容, create_time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 创建时间, update_time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 更新时间, PRIMARY KEY (message_inform_id) USING BTREE, KEY user_id (user_id) ) ENGINEInnoDB DEFAULT CHARSETutf8 ROW_FORMATDYNAMIC COMMENT通知记录;代码参考/** * 桌号信息对象 */ Autowired public DeskNumberInformationController(DeskNumberInformationService service) { setService(service); } PostMapping(/add) Transactional public MapString, Object add(HttpServletRequest request) throws IOException { MapString,Object paramMap service.readBody(request.getReader()); paramMap.entrySet().removeIf(entry - { Object value entry.getValue(); return value instanceof String ((String) value).isEmpty(); }); DeskNumberInformation desk_number_information new DeskNumberInformation(); desk_number_information.setDesk_number_code(paramMap.get(desk_number_code)null?null:String.valueOf(paramMap.get(desk_number_code))); MapString, String mapdesk_number_code new HashMap(); mapdesk_number_code.put(desk_number_code,String.valueOf(paramMap.get(desk_number_code))); List listdesk_number_code service.selectBaseList(service.select(mapdesk_number_code, new HashMap())); if (listdesk_number_code.size()0){ return error(30000, 字段桌号编码内容不能重复); } desk_number_information.setCapacity(paramMap.get(capacity)null?null:Double.valueOf(String.valueOf(paramMap.get(capacity)))); desk_number_information.setDining_seat_position(paramMap.get(dining_seat_position)null?null:String.valueOf(paramMap.get(dining_seat_position))); desk_number_information.setDining_seat_photo(paramMap.get(dining_seat_photo)null?null:String.valueOf(paramMap.get(dining_seat_photo))); desk_number_information.setPraise_len(paramMap.get(praise_len)null?null:Integer.valueOf(String.valueOf(paramMap.get(praise_len)))); desk_number_information.setCollect_len(paramMap.get(collect_len)null?null:Integer.valueOf(String.valueOf(paramMap.get(collect_len)))); desk_number_information.setCreate_by(paramMap.get(create_by)null?null:Integer.valueOf(String.valueOf(paramMap.get(create_by)))); this.addEntity(desk_number_information); System.out.println(桌号信息新增成功); return success(1); } PostMapping(/set) Transactional public MapString, Object set(HttpServletRequest request) throws IOException { MapString,String queryMap service.readQuery(request); MapString,String configMap service.readConfig(request); MapString,Object paramMap service.readBody(request.getReader()); paramMap.entrySet().removeIf(entry - { Object value entry.getValue(); return value instanceof String ((String) value).isEmpty(); }); DeskNumberInformation desk_number_information new DeskNumberInformation(); desk_number_information.setDesk_number_code(paramMap.get(desk_number_code)null?null:String.valueOf(paramMap.get(desk_number_code))); desk_number_information.setCapacity(paramMap.get(capacity)null?null:Double.valueOf(String.valueOf(paramMap.get(capacity)))); desk_number_information.setDining_seat_position(paramMap.get(dining_seat_position)null?null:String.valueOf(paramMap.get(dining_seat_position))); desk_number_information.setDining_seat_photo(paramMap.get(dining_seat_photo)null?null:String.valueOf(paramMap.get(dining_seat_photo))); desk_number_information.setPraise_len(paramMap.get(praise_len)null?null:Integer.valueOf(String.valueOf(paramMap.get(praise_len)))); desk_number_information.setCollect_len(paramMap.get(collect_len)null?null:Integer.valueOf(String.valueOf(paramMap.get(collect_len)))); this.setEntity(queryMap,configMap,desk_number_information); System.out.println(桌号信息修改成功); return success(1); /** * 用户反馈对象 */ Autowired public UserFeedbackController(UserFeedbackService service) { setService(service); } PostMapping(/add) Transactional public MapString, Object add(HttpServletRequest request) throws IOException { MapString,Object paramMap service.readBody(request.getReader()); paramMap.entrySet().removeIf(entry - { Object value entry.getValue(); return value instanceof String ((String) value).isEmpty(); }); UserFeedback user_feedback new UserFeedback(); user_feedback.setFeedback_user(paramMap.get(feedback_user)null?null:Integer.valueOf(String.valueOf(paramMap.get(feedback_user)))); user_feedback.setFeedback_number(paramMap.get(feedback_number)null?null:String.valueOf(paramMap.get(feedback_number))); user_feedback.setType_of_feedback(paramMap.get(type_of_feedback)null?null:String.valueOf(paramMap.get(type_of_feedback))); user_feedback.setFeedback_content(paramMap.get(feedback_content)null?null:String.valueOf(paramMap.get(feedback_content))); user_feedback.setProcessing_status(paramMap.get(processing_status)null?null:String.valueOf(paramMap.get(processing_status))); user_feedback.setHandling_reply(paramMap.get(handling_reply)null?null:String.valueOf(paramMap.get(handling_reply))); user_feedback.setCreate_by(paramMap.get(create_by)null?null:Integer.valueOf(String.valueOf(paramMap.get(create_by)))); this.addEntity(user_feedback); System.out.println(用户反馈新增成功); return success(1); } PostMapping(/set) Transactional public MapString, Object set(HttpServletRequest request) throws IOException { MapString,String queryMap service.readQuery(request); MapString,String configMap service.readConfig(request); MapString,Object paramMap service.readBody(request.getReader()); paramMap.entrySet().removeIf(entry - { Object value entry.getValue(); return value instanceof String ((String) value).isEmpty(); }); UserFeedback user_feedback new UserFeedback(); user_feedback.setFeedback_user(paramMap.get(feedback_user)null?null:Integer.valueOf(String.valueOf(paramMap.get(feedback_user)))); user_feedback.setFeedback_number(paramMap.get(feedback_number)null?null:String.valueOf(paramMap.get(feedback_number))); user_feedback.setType_of_feedback(paramMap.get(type_of_feedback)null?null:String.valueOf(paramMap.get(type_of_feedback))); user_feedback.setFeedback_content(paramMap.get(feedback_content)null?null:String.valueOf(paramMap.get(feedback_content))); user_feedback.setProcessing_status(paramMap.get(processing_status)null?null:String.valueOf(paramMap.get(processing_status))); user_feedback.setHandling_reply(paramMap.get(handling_reply)null?null:String.valueOf(paramMap.get(handling_reply))); this.setEntity(queryMap,configMap,user_feedback); System.out.println(用户反馈修改成功); return success(1); /** * 在线点餐对象 */ Autowired public OrderingOnlineController(OrderingOnlineService service) { setService(service); } PostMapping(/add) Transactional public MapString, Object add(HttpServletRequest request) throws IOException { MapString,Object paramMap service.readBody(request.getReader()); paramMap.entrySet().removeIf(entry - { Object value entry.getValue(); return value instanceof String ((String) value).isEmpty(); }); OrderingOnline ordering_online new OrderingOnline(); ordering_online.setSpecification_of_dishes(paramMap.get(specification_of_dishes)null?null:String.valueOf(paramMap.get(specification_of_dishes))); ordering_online.setHits(paramMap.get(hits)null?null:Integer.valueOf(String.valueOf(paramMap.get(hits)))); ordering_online.setPraise_len(paramMap.get(praise_len)null?null:Integer.valueOf(String.valueOf(paramMap.get(praise_len)))); ordering_online.setComment_len(paramMap.get(comment_len)null?null:Integer.valueOf(String.valueOf(paramMap.get(comment_len)))); ordering_online.setCart_title(paramMap.get(cart_title)null?null:String.valueOf(paramMap.get(cart_title))); ordering_online.setCart_img(paramMap.get(cart_img)null?null:String.valueOf(paramMap.get(cart_img))); ordering_online.setCart_description(paramMap.get(cart_description)null?null:String.valueOf(paramMap.get(cart_description))); ordering_online.setCart_price_ago(paramMap.get(cart_price_ago)null?null:Double.valueOf(String.valueOf(paramMap.get(cart_price_ago)))); ordering_online.setCart_price(paramMap.get(cart_price)null?null:Double.valueOf(String.valueOf(paramMap.get(cart_price)))); ordering_online.setCart_inventory(paramMap.get(cart_inventory)null?null:Double.valueOf(String.valueOf(paramMap.get(cart_inventory)))); ordering_online.setCart_type(paramMap.get(cart_type)null?null:String.valueOf(paramMap.get(cart_type))); ordering_online.setCart_content(paramMap.get(cart_content)null?null:String.valueOf(paramMap.get(cart_content))); ordering_online.setCart_img_1(paramMap.get(cart_img_1)null?null:String.valueOf(paramMap.get(cart_img_1))); ordering_online.setCart_img_2(paramMap.get(cart_img_2)null?null:String.valueOf(paramMap.get(cart_img_2))); ordering_online.setCart_img_3(paramMap.get(cart_img_3)null?null:String.valueOf(paramMap.get(cart_img_3))); ordering_online.setCart_img_4(paramMap.get(cart_img_4)null?null:String.valueOf(paramMap.get(cart_img_4))); ordering_online.setCart_img_5(paramMap.get(cart_img_5)null?null:String.valueOf(paramMap.get(cart_img_5))); ordering_online.setListStatus(paramMap.get(list_status)null?null:Integer.valueOf(String.valueOf(paramMap.get(list_status)))); ordering_online.setSku(paramMap.get(sku)null?null:String.valueOf(paramMap.get(sku))); ordering_online.setCreate_by(paramMap.get(create_by)null?null:Integer.valueOf(String.valueOf(paramMap.get(create_by)))); this.addEntity(ordering_online); System.out.println(在线点餐新增成功); return success(1); } PostMapping(/set) Transactional public MapString, Object set(HttpServletRequest request) throws IOException { MapString,String queryMap service.readQuery(request); MapString,String configMap service.readConfig(request); MapString,Object paramMap service.readBody(request.getReader()); paramMap.entrySet().removeIf(entry - { Object value entry.getValue(); return value instanceof String ((String) value).isEmpty(); }); OrderingOnline ordering_online new OrderingOnline(); ordering_online.setSpecification_of_dishes(paramMap.get(specification_of_dishes)null?null:String.valueOf(paramMap.get(specification_of_dishes))); ordering_online.setHits(paramMap.get(hits)null?null:Integer.valueOf(String.valueOf(paramMap.get(hits)))); ordering_online.setPraise_len(paramMap.get(praise_len)null?null:Integer.valueOf(String.valueOf(paramMap.get(praise_len)))); ordering_online.setComment_len(paramMap.get(comment_len)null?null:Integer.valueOf(String.valueOf(paramMap.get(comment_len)))); ordering_online.setCart_title(paramMap.get(cart_title)null?null:String.valueOf(paramMap.get(cart_title))); ordering_online.setCart_img(paramMap.get(cart_img)null?null:String.valueOf(paramMap.get(cart_img))); ordering_online.setCart_description(paramMap.get(cart_description)null?null:String.valueOf(paramMap.get(cart_description))); ordering_online.setCart_price_ago(paramMap.get(cart_price_ago)null?null:Double.valueOf(String.valueOf(paramMap.get(cart_price_ago)))); ordering_online.setCart_price(paramMap.get(cart_price)null?null:Double.valueOf(String.valueOf(paramMap.get(cart_price)))); ordering_online.setCart_inventory(paramMap.get(cart_inventory)null?null:Double.valueOf(String.valueOf(paramMap.get(cart_inventory)))); ordering_online.setCart_type(paramMap.get(cart_type)null?null:String.valueOf(paramMap.get(cart_type))); ordering_online.setCart_content(paramMap.get(cart_content)null?null:String.valueOf(paramMap.get(cart_content))); ordering_online.setCart_img_1(paramMap.get(cart_img_1)null?null:String.valueOf(paramMap.get(cart_img_1))); ordering_online.setCart_img_2(paramMap.get(cart_img_2)null?null:String.valueOf(paramMap.get(cart_img_2))); ordering_online.setCart_img_3(paramMap.get(cart_img_3)null?null:String.valueOf(paramMap.get(cart_img_3))); ordering_online.setCart_img_4(paramMap.get(cart_img_4)null?null:String.valueOf(paramMap.get(cart_img_4))); ordering_online.setCart_img_5(paramMap.get(cart_img_5)null?null:String.valueOf(paramMap.get(cart_img_5))); ordering_online.setListStatus(paramMap.get(list_status)null?null:Integer.valueOf(String.valueOf(paramMap.get(list_status)))); ordering_online.setSku(paramMap.get(sku)null?null:String.valueOf(paramMap.get(sku))); this.setEntity(queryMap,configMap,ordering_online); System.out.println(在线点餐修改成功); return success(1);前端基于uni-app框架构建跨平台用户界面使用HTML5、CSS3和JavaScript/Vue.js实现页面结构与交互逻辑通过uni-app内置路由或Vue Router管理页面导航Vuex或Pinia维护全局状态。采用uni-ui或uView等组件库快速搭建界面使用uni.request或Axios经适配封装HTTP请求实现与后端的数据通信同时可调用uni-app提供的丰富原生API如相机、定位、支付等增强移动端能力。后端基于Spring Boot框架搭建遵循Controller-Service-Mapper三层架构。Controller层接收前端请求并校验参数Service层处理核心业务逻辑Mapper层通过MyBatis或MyBatis-Plus完成数据库操作。使用Spring Security或Shiro结合JWT实现用户认证与权限控制。数据库采用MySQL存储持久化数据Redis缓存热点信息以提升系统性能。开发工具使用HBuilderX或VSCode开发前端uni-appIDEA开发后端Git进行版本管理Maven管理后端依赖npm或yarn管理前端依赖并通过HBuilderX的App发布功能或命令行工具完成多端iOS、Android、H5、各小程序打包发布。源码获取私信联系我即可~大家点赞、收藏、关注、评论啦精彩专栏 推荐订阅Java精品项目案例【2000套】Python精品项目案例【500套】uniapp/微信小程序/安卓app精品实战案例【800套】✅获取源码请私信✅感兴趣的可以先收藏起来还有大家在毕设选题项目以及论文编写等相关问题都可以找我咨询希望帮助更多的人❤️