微信小程序毕业设计-在线订餐系统项目开发实战(附源码+论文)

大家好!我是程序猿老A,感谢您阅读本文,欢迎一键三连哦。

💞当前专栏:微信小程序毕业设计

精彩专栏推荐👇🏻👇🏻👇🏻

🎀 Python毕业设计
🌎Java毕业设计

开发运行环境

①前端:微信小程序开发工具

② 后端:Java

  • 框架:springboot
  • JDK版本:JDK1.8
  • 服务器:tomcat7
  • 数据库:mysql 5.7
  • 数据库工具:Navicat12
  • 开发软件:eclipse/myeclipse/idea
  • Maven包:Maven3.3.9
  • 浏览器:谷歌浏览器

演示视频

前端:

weixin123在线订餐系统的设计与实现-微信端

后端:

weixin123在线订餐系统的设计与实现-服务端

原版高清演示视频-编号:123
https://pan.quark.cn/s/c0c9519df9d4

源码下载地址:

https://download.csdn.net/download/2301_76953549/89090138

论文目录

【如需全文请按文末获取联系】
在这里插入图片描述
在这里插入图片描述

一、项目简介

本微信小程序在线订餐系统管理员功能可以修改个人中心,用户管理,菜品分类管理,菜品信息管理,订单信息管理,取消订单管理,订单配送管理,菜品评价管理以及系统管理。微信小程序用户可以注册以及登录,登录之后可以可以查看菜品信息,可以对菜品信息进行收藏以及订购,还可以查看菜品资讯,可以对已经生成的订单信息进行取消操作,查看订单配送情况,以及查看菜品评价,我的收藏等。

二、系统设计

2.1软件功能模块设计

设计的管理员主要是为用户提供的一些信息进行服务的。设计的管理员功能结构图如下图所示:
在这里插入图片描述

用户主要是订餐购买这些情景,设计的用户功能结构图如下图所示:
在这里插入图片描述

2.2数据库设计

(1)菜品信息的实体属性图如下:
在这里插入图片描述
(2)菜品资讯实体属性图如图4.13所示:
在这里插入图片描述
(3)菜品分类信息实体属性图如图4.14所示:
在这里插入图片描述

三、系统项目部分截图

3.1管理员模块的实现

菜品信息管理
管理员可以管理菜品信息,可以对菜品信息添加修改删除。具体界面的展示如图5.1所示。
在这里插入图片描述
订单配送管理
管理员可以订单配送进行查询修改,删除操作。具体界面如图5.2所示。
在这里插入图片描述
订单统计管理
系统管理员可以对订单进行统计,可以统计取消订单和订单的比例。界面如下图所示:
在这里插入图片描述

3.2小程序用户模块的实现

系统首页
小程序用户是需要注册才可以进行登录的,登录后在首页可以搜索菜品名称,以及查看菜品,并且下面导航可以点击到其他功能模块。界面如下图所示:
在这里插入图片描述
我的菜单
在小程序里点击我的,会出现关于我的界面,在这里可以修改个人信息,以及可以点击其他功能模块。界面如下图所示:
在这里插入图片描述
收藏与下单
在商品详情界面,可以对商品进行收藏和下单操作,点击菜品图片右下角的五角星,是收藏操作,双击是取消,点击页面右下角的下单按钮,会进行下单操作。界面如下图所示:
在这里插入图片描述

四、部分核心代码

package com.controller;import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Map;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Date;
import java.util.List;
import javax.servlet.http.HttpServletRequest;import com.utils.ValidatorUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.annotation.IgnoreAuth;import com.entity.CaipinxinxiEntity;
import com.entity.view.CaipinxinxiView;import com.service.CaipinxinxiService;
import com.service.TokenService;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.MD5Util;
import com.utils.MPUtil;
import com.utils.CommonUtil;/*** 菜品信息* 后端接口* @author * @email * @date 2021-04-12 17:15:39*/
@RestController
@RequestMapping("/caipinxinxi")
public class CaipinxinxiController {@Autowiredprivate CaipinxinxiService caipinxinxiService;/*** 后端列表*/@RequestMapping("/page")public R page(@RequestParam Map<String, Object> params,CaipinxinxiEntity caipinxinxi,HttpServletRequest request){EntityWrapper<CaipinxinxiEntity> ew = new EntityWrapper<CaipinxinxiEntity>();PageUtils page = caipinxinxiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, caipinxinxi), params), params));return R.ok().put("data", page);}/*** 前端列表*/@IgnoreAuth@RequestMapping("/list")public R list(@RequestParam Map<String, Object> params,CaipinxinxiEntity caipinxinxi, HttpServletRequest request){EntityWrapper<CaipinxinxiEntity> ew = new EntityWrapper<CaipinxinxiEntity>();PageUtils page = caipinxinxiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, caipinxinxi), params), params));return R.ok().put("data", page);}/*** 列表*/@RequestMapping("/lists")public R list( CaipinxinxiEntity caipinxinxi){EntityWrapper<CaipinxinxiEntity> ew = new EntityWrapper<CaipinxinxiEntity>();ew.allEq(MPUtil.allEQMapPre( caipinxinxi, "caipinxinxi")); return R.ok().put("data", caipinxinxiService.selectListView(ew));}/*** 查询*/@RequestMapping("/query")public R query(CaipinxinxiEntity caipinxinxi){EntityWrapper< CaipinxinxiEntity> ew = new EntityWrapper< CaipinxinxiEntity>();ew.allEq(MPUtil.allEQMapPre( caipinxinxi, "caipinxinxi")); CaipinxinxiView caipinxinxiView =  caipinxinxiService.selectView(ew);return R.ok("查询菜品信息成功").put("data", caipinxinxiView);}/*** 后端详情*/@RequestMapping("/info/{id}")public R info(@PathVariable("id") Long id){CaipinxinxiEntity caipinxinxi = caipinxinxiService.selectById(id);caipinxinxi.setClicknum(caipinxinxi.getClicknum()+1);caipinxinxi.setClicktime(new Date());caipinxinxiService.updateById(caipinxinxi);return R.ok().put("data", caipinxinxi);}/*** 前端详情*/@IgnoreAuth@RequestMapping("/detail/{id}")public R detail(@PathVariable("id") Long id){CaipinxinxiEntity caipinxinxi = caipinxinxiService.selectById(id);caipinxinxi.setClicknum(caipinxinxi.getClicknum()+1);caipinxinxi.setClicktime(new Date());caipinxinxiService.updateById(caipinxinxi);return R.ok().put("data", caipinxinxi);}/*** 后端保存*/@RequestMapping("/save")public R save(@RequestBody CaipinxinxiEntity caipinxinxi, HttpServletRequest request){caipinxinxi.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());//ValidatorUtils.validateEntity(caipinxinxi);caipinxinxiService.insert(caipinxinxi);return R.ok();}/*** 前端保存*/@RequestMapping("/add")public R add(@RequestBody CaipinxinxiEntity caipinxinxi, HttpServletRequest request){caipinxinxi.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());//ValidatorUtils.validateEntity(caipinxinxi);caipinxinxiService.insert(caipinxinxi);return R.ok();}/*** 修改*/@RequestMapping("/update")public R update(@RequestBody CaipinxinxiEntity caipinxinxi, HttpServletRequest request){//ValidatorUtils.validateEntity(caipinxinxi);caipinxinxiService.updateById(caipinxinxi);//全部更新return R.ok();}/*** 删除*/@RequestMapping("/delete")public R delete(@RequestBody Long[] ids){caipinxinxiService.deleteBatchIds(Arrays.asList(ids));return R.ok();}/*** 提醒接口*/@RequestMapping("/remind/{columnName}/{type}")public R remindCount(@PathVariable("columnName") String columnName, HttpServletRequest request, @PathVariable("type") String type,@RequestParam Map<String, Object> map) {map.put("column", columnName);map.put("type", type);if(type.equals("2")) {SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");Calendar c = Calendar.getInstance();Date remindStartDate = null;Date remindEndDate = null;if(map.get("remindstart")!=null) {Integer remindStart = Integer.parseInt(map.get("remindstart").toString());c.setTime(new Date()); c.add(Calendar.DAY_OF_MONTH,remindStart);remindStartDate = c.getTime();map.put("remindstart", sdf.format(remindStartDate));}if(map.get("remindend")!=null) {Integer remindEnd = Integer.parseInt(map.get("remindend").toString());c.setTime(new Date());c.add(Calendar.DAY_OF_MONTH,remindEnd);remindEndDate = c.getTime();map.put("remindend", sdf.format(remindEndDate));}}Wrapper<CaipinxinxiEntity> wrapper = new EntityWrapper<CaipinxinxiEntity>();if(map.get("remindstart")!=null) {wrapper.ge(columnName, map.get("remindstart"));}if(map.get("remindend")!=null) {wrapper.le(columnName, map.get("remindend"));}int count = caipinxinxiService.selectCount(wrapper);return R.ok().put("count", count);}/*** 前端智能排序*/@IgnoreAuth@RequestMapping("/autoSort")public R autoSort(@RequestParam Map<String, Object> params,CaipinxinxiEntity caipinxinxi, HttpServletRequest request,String pre){EntityWrapper<CaipinxinxiEntity> ew = new EntityWrapper<CaipinxinxiEntity>();Map<String, Object> newMap = new HashMap<String, Object>();Map<String, Object> param = new HashMap<String, Object>();Iterator<Map.Entry<String, Object>> it = param.entrySet().iterator();while (it.hasNext()) {Map.Entry<String, Object> entry = it.next();String key = entry.getKey();String newKey = entry.getKey();if (pre.endsWith(".")) {newMap.put(pre + newKey, entry.getValue());} else if (StringUtils.isEmpty(pre)) {newMap.put(newKey, entry.getValue());} else {newMap.put(pre + "." + newKey, entry.getValue());}}params.put("sort", "clicknum");params.put("order", "desc");PageUtils page = caipinxinxiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, caipinxinxi), params), params));return R.ok().put("data", page);}}

五、获取源码或论文

如需对应的论文或源码,以及其他定制需求,也可以点我头像查看个人简介联系。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Flink系列一:flink光速入门 (^_^)

引入 spark和flink的区别&#xff1a;在上一个spark专栏中我们了解了spark对数据的处理方式&#xff0c;在 Spark 生态体系中&#xff0c;对于批处理和流处理采用了不同的技术框架&#xff0c;批处理由 Spark-core,SparkSQL 实现&#xff0c;流处理由 Spark Streaming 实现&am…

期刊的分类与级别

在学术界&#xff0c;期刊的分类与级别构成了一个评价学术成果和学者贡献的重要标准&#xff0c;同时也是学术出版与学术交流的基础。然而&#xff0c;对于初涉学者来说&#xff0c;理解期刊的分类与级别可能并不直观。本文旨在提供一个系统性的解释&#xff0c;并阐述为何期刊…

云南区块链商户平台发票助手成品

目录 1 概述2 功能对比3 项目演示图4 核心逻辑4.1智能赋码4.2 解密方法4.3 登录与检测4.4 发票金额大写转换4.5 检查登录是否失效4.6 验证码识别5 演示效果6 项目部署6.1 Web站点部署6.1.1 环境6.1.2 前端6.1.3 后端6.2 Docker部署6.2.1 构建镜像6.2.2 创建容器6.3.3 访问项目域…

基于PHP+MySQL开发的一套游泳馆预约报名小程序开发源码模板

最近新开发了一套游泳馆线上预约报名小程序&#xff0c;其主要功能有预约功能&#xff0c;报名功能&#xff0c;支付功能&#xff0c;个人中心&#xff0c;订单管理&#xff0c;商品管理等等。 游泳馆预约报名小程序系统-运行环境 开发语言&#xff1a;PHP 数据库&#xff1a;M…

54.WEB渗透测试-信息收集- 端口、目录扫描、源码泄露(2)

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 内容参考于&#xff1a; 易锦网校会员专享课 上一个内容&#xff1a;53.WEB渗透测试-信息收集-端口、目录扫描、源码泄露&#xff08;1&#xff09; 关于源码…

Postman 连接数据库 利用node+xmysql

1、准备nodejs环境 如果没有安装&#xff0c;在网上找教程&#xff0c;安装好后&#xff0c;在控制台输入命令查看版本&#xff0c;如下就成功了 2、安装xmysql 在控制台输入 npm install -g xmysql 3、连接目标数据库 帮助如下&#xff1a; 示例&#xff1a; 目标数据库…

【Redis数据库百万字详解】数据持久化

文章目录 一、持久化1.1、什么是持久化1.2、持久化方式1.3、RDB优缺点1.4、AOF优缺点 二、RDB持久化触发机制2.1、手动触发2.2、自动触发 三、RDB持久化配置3.1、配置文件3.2、配置查询/设置3.3、禁用持久化3.4、RDB文件恢复 四、RDB持久化案例4.1、手动持久化4.2、自动持久化案…

补充一下关于大众点评如何获取cookie的问题

第一步&#xff1a;先打开网站https://www.dianping.com/&#xff0c;然后再用手机号登录&#xff0c;在选择自己要爬的城市 第二步&#xff1a;打开按f12或者右键鼠标选择最下面的检查就打开这个页面了&#xff0c;如果是英文页面就选择network,如果是中文就选择网络 第三步&a…

2024精选热门骨传导耳机推荐,你不会还不挑选吧?

骨传导耳机作为最近两年来才兴起的耳机品类&#xff0c;在街头的出现频率并不是很高&#xff0c;很多人对骨传导耳机不够了解甚至没听说过。骨传导耳机不入耳的设计&#xff0c;安全性、舒适性和稳定性都更高&#xff0c;既然有这么多的优势&#xff0c;那就为大家挑选几款高性…

HTML静态网页成品作业(HTML+CSS)—— 美食湘菜介绍网页(5个页面)

&#x1f389;不定期分享源码&#xff0c;关注不丢失哦 文章目录 一、作品介绍二、作品演示三、代码目录四、网站代码HTML部分代码 五、源码获取 一、作品介绍 &#x1f3f7;️本套采用HTMLCSS&#xff0c;未使用Javacsript代码&#xff0c;共有5个页面。 二、作品演示 三、代…

层出不穷的大模型产品,你怎么选?

一&#xff1a;简介 关于大模型AIGC产品的选择与发展趋势&#xff0c;目前许多互联网公司都在不断投入资源和精力开发基于大规模模型的人工智能产品。这些产品通常能够处理更复杂的任务并提供更高质量的服务&#xff0c;如智能问答、自然语言处理、图像识别等。在产品选择上&am…

python11 序列的相关操作

枚举遍历 序列的相关操作 text "hello,python" # in 判断字符是否在序列中&#xff0c;存在返回true,否则返回false print(p是否存在:,(p in text)) print(a是否存在:,(a in text)) # not in 判断字符不在序列中&#xff0c;不存在返回true,否则返回false print(p不…

Ubuntu22.04下源码编译安装pythonocc-7.8

Ubuntu22.04下源码编译安装pythonocc-7.8 本文介绍Ubuntu下手动编译安装pythonocc&#xff0c;及安装过程遇到的各种坑 基本依赖安装 sudo apt-get update sudo apt-get install -y wget libglu1-mesa-dev libgl1-mesa-dev libxmu-dev libxi-dev build-essential cmake libf…

挑战你的数据结构技能:复习题来袭【6】

1. (单选题)设无向图的顶点个数为n,则该图最多有&#xff08;&#xff09;条边 A. n-1 B. n(n-1)/2 C. n(n1)/2 D. 0 答案&#xff1a;B 分析&#xff1a; 2. (单选题)含有n个顶点的连通无向图,其边的个数至少为()。 A. n-1 B. n C. n1 D. nlog2n 答案&#xff1a;A…

Java:流程控制语句

文章目录 一、顺序结构二、分支结构2.1 if2.2 switch 三、循环结构3.1 for3.2 while3.3 do...while 四、流程控制4.1 break4.2 continue 五、结语 一、顺序结构 顺序结构语句是Java程序默认的执行流程&#xff0c;按照代码的先后顺序&#xff0c;从上到下依次执行。 二、分支结…

前端开发入门指南:掌握网页设计的第一课

UI设计与前端开发是相辅相成&#xff0c;UI设计可以视觉美化产品界面&#xff0c;而前端开发可以通过代码实现设计稿。作为UI设计师&#xff0c;如果画出来的图片美观方便对前端开发者非常有益。如果设计复比较难以实现&#xff0c;沟通就会变得更加困难。因此&#xff0c;UI设…

VSCODE 常用快捷键

快捷按键 注释 CTRL /CTRL KSHIFT ALT A取消注释 CTRL /CTRL KSHIFT ALT A搜索文件 Ctrl P移动到某一行 Ctrl g打开一个新窗口 Ctrl Shift N关闭窗口 Ctrl Shift W新建文件 Ctrl N文件间切换 Ctrl Tab全部文件搜索 Ctrl Shift F全屏 F11 打开文件出现中文乱码 文件右下角…

Docker桥接网络分析

前言 《虚拟局域网(VLAN)》一文中描述了虚拟网卡、虚拟网桥的作用&#xff0c;以及通过iptables实现了vlan联网&#xff0c;其实学习到这里自然就会联想到目前主流的容器技术&#xff1a;Docker&#xff0c;因此接下来打算研究一下Docker的桥接网络与此有何异同。 猜测 众所周知…

html 使用svg矢量图时无法 调整宽高问题解决,不能像图片一样设置宽高比例问题

引入的路径后加 #svgView(preserveAspectRatio(none)) 具体代码如下 修改前 <img src"/assets/svgs/full_screen_full.svg" class"im"> 修改后 <img src"/assets/svgs/full_screen_full.svg#svgView(preserveAspectRatio(none))" cla…

Bigdecimal 除法用法

Bigdecimal 除法使用引言 在开发中遇到了一个Bigdecimal的问题&#xff0c;在此记录一下。 ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result.距离如下图。 // 问题代码BigDecimal result BigDecimal.ONE.divide(new BigDec…