基于java+ssm+vue的电子点菜系统微信小程序

项目介绍

中国有着五千年文化历史,传统的食谱已经不能和现代化的社会相结合,所以我想开发一套关于食谱方面的毕业设计,随着人们对健康的关注,食物的营养高低也越来越重视,但大部份人关心的是某种单一的食物有什么营养,而忽略了吃饭方试是否健康,下面是我为大家推荐关于健康的小分类, 保证营养均衡1)依据《中国用户膳食指南》。2)营养素间比例适宜。3)食物搭配合理,注意主副、粗细、荤素搭配。2、进餐定时定量(一般成人一日三餐,特殊人群三餐两点等)。3、兼顾饮食习惯,注重烹调方法(营养素损失)。4、考虑季节和市场供应。5、满足膳食多样化,并兼顾经济承受能力。6、及时调整食谱

本论文主要讲述了电子点餐系统为开发背景,该系统它主要是对需求分析和功能需求做了介绍,并且对系统做了详细的测试和总结。具体从业务流程、数据库设计和系统结构等多方面的问题。望能利用先进的计算机技术和网络技术来改变目前的电子点餐系统管理状况,提高管理效率。

该系统采用了微信开发者工具,将所有业务模块采用以浏览器交互的模式,选择开发工具选择微信开发者工具、后台结合MySQL作为系统的数据库,ssm框架来进行系统的设计。基本实现了电子点餐系统应有的主要功能模块,本系统有管理员、用户二个角色。

本论文对电子点餐系统的发展背景进行详细的介绍,并且对系统开发技术进行介绍,然后对系统进行需求分析,对电子点餐系统业务流程、系统结构以及数据都进行详细说明。
在这里插入图片描述

开发环境

编程语言:Java
数据库 :Mysql
系统架构:B/S
后端框架:SSM
编译工具:idea或者eclipse,微信开发者工具,jdk1.8,maven
支持定做:java/php/python/android/小程序vue/爬虫/c#/asp.net

系统实现

5.1用户注册用户功能实现
用户通过注册窗口,进行在线填写自己的用户账号、用户姓名、密码、性别、年龄、联系电话、电子邮箱等等,信息编辑完成后核对信息无误后进行选择注册,系统核对用户所输入的账号信息是否准确,核对信息准确无误后系统进入到操作界面。如图5-1所示。
在这里插入图片描述

图5-1用户注册用户界面图

用户登录通过用户名、密码行页面,进入到电子点餐系统主界面,进入到操作界面,进行相对应操作,如图5-2所示。
在这里插入图片描述

图5-2用户登录界面图

客户端首页页面可以查看首页、特色餐品、特价餐品、我的等信息,进行查看操作,如图5-3所示。

在这里插入图片描述

图5-3用户首页界面图

用户进入特色餐品页面可以查看餐品编号、餐品名称、餐品分类、图片、价格、数量等信息,可以进行点餐查看操作,如图5-4所示。

在这里插入图片描述
在这里插入图片描述

图5-4特色餐品界面图

用户进入我的页面可以查看首页、特色餐品、特价餐品、我的(特色餐品、订单信息、特价餐品、活动订单用户信息)等信息,进行提交操作,如图5-5-所示。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

图5-5我的界面图

5.4 管理员功能实现
管理员登录:管理员通过电子点餐系统进行登录,通过填写用户名、密码、角色等信息,输入完成后选择登录即可进入学生竟赛管理系统,如图5-6所示。
在这里插入图片描述

图5-6管理员登录主界面图

管理员进入到界面,通过界面的任务大厅,登录成功后进入到系统可以进行查看首页、个人中心、餐品分类管理、特色餐品管理、订单信息管理、用户管理、特价餐品管理、活动订单管理、系统管理等功能模块,进行相对应操作,如图5-7所示。
在这里插入图片描述

图5-7管理员功能界面图

管理员对个人中心进行操作填写原密码、新密码、确认密码并进行添加、删除、修改以及查看,如图5-8示。

在这里插入图片描述

图5-8个人中心界面图

管理员进入到特色餐品管理界面,通过界面查看特色餐品管理,信息如下:餐品编号、餐品名称、餐品分类、图片、价格、数量等信息,可以进行添加‘修改、删除等相对应操作,如图5-9所示。
在这里插入图片描述

图5-9特色餐品管理界面图

管理员进入到订单信息管理界面,通过界面查看餐品编号、餐品名称、价格、数量、总金额、用户账号、用户姓名、下单时间、图片、是否支付等信息,可以进行添加、修改、删除等相对应操作,如图5-10所示。

在这里插入图片描述
在这里插入图片描述

图5-10订单信息管理界面图

管理员进入用户管理界面,通过界面的任务大厅,可以查看用户账号、用户姓名、房号、联系电话、头像、类型、分类、登记时间等信息,进行相对应操作,如图5-11所示。
在这里插入图片描述

图5-11用户管理界面图

管理员进入到特价餐品管理界面,通过界面的任务大厅,可以查看餐品编号、餐品名称、餐品分类、原价格、活动价格、数量、图片等信息,进行添加、删除、修改相对应操作,如图5-12所示。

在这里插入图片描述
在这里插入图片描述

图5-12特价餐品管理面图

系统管理:通过新建操作可在轮播图/餐品资讯中加入新的图片,还可以对以上传的图片进行修改操作,以及餐品资讯的添加删除操作,如图5-13所示。
在这里插入图片描述

图5-13系统管理界面图

核心代码

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.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.TesecanpinEntity;
import com.entity.view.TesecanpinView;

import com.service.TesecanpinService;
import com.service.TokenService;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.MPUtil;
import com.utils.CommonUtil;


/**
 * 特色餐品
 * 后端接口
 * @author
 * @email
 * @date
 */
@RestController
@RequestMapping("/tesecanpin")
public class TesecanpinController {
    @Autowired
    private TesecanpinService tesecanpinService;



    /**
     * 后端列表
     */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params,TesecanpinEntity tesecanpin, HttpServletRequest request){

        EntityWrapper<TesecanpinEntity> ew = new EntityWrapper<TesecanpinEntity>();
		PageUtils page = tesecanpinService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, tesecanpin), params), params));
        return R.ok().put("data", page);
    }

    /**
     * 前端列表
     */
	@IgnoreAuth
    @RequestMapping("st")
    public R list(@RequestParam Map<String, Object> params,TesecanpinEntity tesecanpin, HttpServletRequest request){
        EntityWrapper<TesecanpinEntity> ew = new EntityWrapper<TesecanpinEntity>();
		PageUtils page = tesecanpinService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, tesecanpin), params), params));
        return R.ok().put("data", page);
    }

	/**
     * 列表
     */
    @RequestMapping("sts")
    public R list( TesecanpinEntity tesecanpin){
       	EntityWrapper<TesecanpinEntity> ew = new EntityWrapper<TesecanpinEntity>();
      	ew.allEq(MPUtil.allEQMapPre( tesecanpin, "tesecanpin"));
        return R.ok().put("data", tesecanpinService.selectListView(ew));
    }

	 /**
     * 查询
     */
    @RequestMapping("/query")
    public R query(TesecanpinEntity tesecanpin){
        EntityWrapper< TesecanpinEntity> ew = new EntityWrapper< TesecanpinEntity>();
 		ew.allEq(MPUtil.allEQMapPre( tesecanpin, "tesecanpin"));
		TesecanpinView tesecanpinView =  tesecanpinService.selectView(ew);
		return R.ok("查询特色餐品成功").put("data", tesecanpinView);
    }

    /**
     * 后端详情
     */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") Long id){
        TesecanpinEntity tesecanpin = tesecanpinService.selectById(id);
        return R.ok().put("data", tesecanpin);
    }

    /**
     * 前端详情
     */
	@IgnoreAuth
    @RequestMapping("/detail/{id}")
    public R detail(@PathVariable("id") Long id){
        TesecanpinEntity tesecanpin = tesecanpinService.selectById(id);
        return R.ok().put("data", tesecanpin);
    }




    /**
     * 后端保存
     */
    @RequestMapping("ve")
    public R save(@RequestBody TesecanpinEntity tesecanpin, HttpServletRequest request){
    	tesecanpin.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    	//ValidatorUtils.validateEntity(tesecanpin);

        tesecanpinService.insert(tesecanpin);
        return R.ok();
    }

    /**
     * 前端保存
     */
    @RequestMapping("/add")
    public R add(@RequestBody TesecanpinEntity tesecanpin, HttpServletRequest request){
    	tesecanpin.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    	//ValidatorUtils.validateEntity(tesecanpin);

        tesecanpinService.insert(tesecanpin);
        return R.ok();
    }

    /**
     * 修改
     */
    @RequestMapping("/update")
    public R update(@RequestBody TesecanpinEntity tesecanpin, HttpServletRequest request){
        //ValidatorUtils.validateEntity(tesecanpin);
        tesecanpinService.updateById(tesecanpin);//全部更新
        return R.ok();
    }


    /**
     * 删除
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Long[] ids){
        tesecanpinService.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<TesecanpinEntity> wrapper = new EntityWrapper<TesecanpinEntity>();
		if(map.get("remindstart")!=null) {
			wrapper.ge(columnName, map.get("remindstart"));
		}
		if(map.get("remindend")!=null) {
			wrapper.le(columnName, map.get("remindend"));
		}


		int count = tesecanpinService.selectCount(wrapper);
		return R.ok().put("count", count);
	}



}

论文参考

在这里插入图片描述

目录
第一章 绪论 5
1.1 研究背景 5
1.2 系统研究现状 5
1.3 系统实现的功能 6
1.4 系统实现的特点 6
1.5 本文的组织结构 6
第二章开发技术与环境配置 7
2.1 Java语言简介 7
2.2 Vue技术 8
2.3 MySQL环境配置 8
2.4 IDEA环境配置 9
2.5 Mysql数据库介绍 9
2.6 B/S架构 9
第三章系统分析与设计 11
3.1 可行性分析 11
3.1.1 技术可行性 11
3.1.2 操作可行性 11
3.1.3经济可行性 11
3.2 需求分析 12
3.3 总体设计 12
3.4 数据库设计与实现 13
3.4.1 数据库概念结构设计 13
3.4.2 数据库具体设计 14
第四章 系统功能的具体实现 22
4.1 系统功能模块 22
4.2 管理员功能模块 25
第五章 系统测试 29
总结 30
参考文献 31
致谢 32

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qq_3306428634

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值