摘 要
近年来随着高校的扩招,大学生人数越来越多,食堂里面的菜肴也变得五花八门,但学生每天都面临着不知吃什么的问题,当前学校食堂提供的服务满足不了学生多样化的需求。
校园食堂是为学生提供用餐服务的重要场所,在现阶段中,大多数校园食堂的用餐人数较多,但食堂设施却较为落后,无法满足师生的点餐服务需求。在信息化时代中,互联网+校园食堂点餐系统的设计,能有效改善上述问题,让校园食堂服务得到优化,提高食堂管理的质量效率。
本文根据对校园食堂现状的调研,通过使用Spring Boot,VUE等技术设计校园食堂点餐系统,实现菜肴推荐,菜肴收藏等功能,为学生日常选餐提供参考;还实现食堂管理,用户管理等服务,加强学校对食堂的日常管理。
关键词:校园订餐;食堂订餐;订餐系统;Spring Boot;MySQL
Abstract
In recent years, with the expansion of colleges and universities, the number of college students is increasing, and the dishes in the canteen have become varied. However, students face the problem of not knowing what to eat every day. The current services provided by the current school canteen cannot meet the diverse needs of students.
Campus canteen is an important place to provide dining services for students. At the present stage, most campus canteens have large numbers of diners, but the canteen facilities are relatively backward, which cannot meet the ordering service needs of teachers and students.In the information age, the design of the Internet + campus canteen ordering system can effectively improve the above problems, make the campus canteen service be optimized, and improve the quality and efficiency of the canteen management.
According to the investigation of the current situation of the campus canteen, through the use of Spring Boot, VUE and other technologies to design the campus canteen ordering system, realize dish recommendation, dish collection and other functions, to provide reference for students’ daily meal selection; also realize canteen management, user management and other services, strengthen the daily management of the canteen.
Key words: campus meal ordering; canteen meal ordering; meal ordering system; Spring Boot; MySQL
目 录
摘 要 I
Abstract II
第1章 绪论 - 1 -
1.1 选题背景及意义 - 1 -
1.1.1选题背景 - 1 -
1.1.2选题意义 - 1 -
1.2 校园食堂订餐系统的现状和问题 - 2 -
1.3 主要研究内容 - 2 -
1.4 论文组织结构 - 3 -
第2章 系统分析 - 4 -
2.1 系统功能需求 - 4 -
2.1.1 校园食堂管理 - 4 -
2.1.2 菜品管理 - 5 -
2.1.3 订单管理 - 5 -
2.1.4 菜品统计 - 6 -
2.1.5 我的订单 - 6 -
2.1.6 用户(学生、教职工)订餐 - 7 -
2.1.7 数据流图 - 8 -
2.2 个性化推荐技术 - 9 -
2.3 系统性能分析 - 12 -
2.4 系统开发运行环境 - 12 -
2.5.1 硬件环境 - 12 -
2.5.2 软件环境 - 13 -
2.6 本章小结 - 13 -
第3章 系统总体设计 - 15 -
3.1 系统设计原则 - 15 -
3.2 系统描述及架构设计 - 15 -
3.3 数据库设计 - 17 -
3.3.1 数据库设计原则 - 17 -
3.3.2 系统模块属性及E-R图分析 - 17 -
3.3.3 数据表的创建 - 20 -
3.4 系统功能模块设计 - 24 -
3.4.1 食堂管理 - 25 -
3.4.2 菜品管理模块 - 25 -
3.4.3 食堂订餐管理模块 - 25 -
3.4.4 菜品统计管理 - 26 -
3.4.5 系统管理 - 26 -
3.5 本章小结 - 26 -
第4章 系统的详细设计与实现 - 27 -
4.1 公共模块类 - 27 -
4.1.1 连接数据库 - 27 -
4.1.2 分页显示 - 28 -
4.1.3 返回信息格式 - 28 -
4.1.4 表格工具类 - 28 -
4.2 登录模块 - 29 -
4.3 功能模块实现 - 32 -
4.3.1 食堂管理实现 - 32 -
4.3.2 菜品管理 - 34 -
4.3.3 订单管理实现 - 40 -
4.3.4 菜品统计实现 - 43 -
4.4 本章小结 - 45 -
第5章 系统测试 - 47 -
5.1 系统测试的原理 - 47 -
5.1.1 系统测试的目的 - 47 -
5.1.2 系统测试的方法 - 47 -
5.2 系统功能测试 - 48 -
5.2.1 功能模块测试用例 - 48 -
5.2.2 用户界面测试 - 50 -
5.3 测试结论 - 50 -
5.4 本章小结 - 51 -
第6章 结论与建议 - 52 -
参考文献 - 53 -
致 谢 - 54 -
系统功能模块设计
校园食堂订餐系统是针对校园后勤部的业务处理工作而开发的食堂管理软件,本系统从功能上主要分为五个模块,分别是菜品管理、订餐管理、食堂管理、预定菜品统计、系统管理。
食堂管理:用于食堂管理员对食堂后台的管理。
菜品管理:用于校园食堂服务后台批量发布菜单、修改菜品、删除菜品、查看菜品等。
订餐管理:用于后台查看订单,消费者订餐与支付、后台处理订单。
预定菜品统计:用于后台对食堂的营业销售情况的统计与对以后菜品原材料的预估购买。
系统管理:用于系统配置管理、日志管理、用户管理、密码管理等。
校园食堂订餐系统功能结构图如图3.17所示。
在这里插入图片描述

图3.17 系统功能结构图
Fig. 3.17 System function structure diagram
3.4.1 食堂管理
食堂管理是方便后勤部或者校园食堂负责人对后台进行监管的模块。主要实现的是校园食堂管理员的对后台信息或者后台菜品的监管和对后台信息的增加,修改,删除和查询。
食堂管理:当食堂管理员成功认证登录后,选择食堂管理模块,查询所有该食堂的后台的信息,可以实现新增后台,逻辑删除后台,查询后台信息等功能。
3.4.2 菜品管理模块
菜品管理模块主要实现对食堂的菜品信息的批量录入、修改、删除和查询,能够让食堂后台及时的更新菜品,也让学生和教职工及时看到实时的菜品,便于选购。
菜品管理流程为由学生或教职工登录验证成功后选择校园食堂和后台后可查询实时菜品。当后台成功登陆后,可以对菜品进行增加,修改,删除和查询等操作。
3.4.3 食堂订餐管理模块
食堂订餐管理模块是校园食堂订餐系统的最为核心的一个模块。食堂订餐管理模块主要实现了学生和教职工的菜品选择后的预定,修改,清空购物车或者提交订单与订单支付的功能,可以实时推送到后台,后台对订单接收或者拒绝后的处理等等。
后台通过登录门户登陆系统,登陆后进入营业状态就可以处理订单,包括查询订单,处理订单,接收订单之后菜品准备完成之后修改订单的状态等等;学生或教职工登陆系统后,选择校园食堂和后台之后可以浏览菜品,然后添加菜品到购物车,然后清空购物车或者继续添加菜品,最后提交订单与支付或者取消订单等操作。
3.4.4 菜品统计管理
菜品统计是后台实现成本预估与营业情况的预估的一个重要功能,该模块主要实现了对用户选购情况的统计。
菜品统计主要是后台登录之后,选择预定菜品统计模块,可以查询菜品统计情况,也可以导出菜品统计为excel表格形式,便于线下分析。
3.4.5 系统管理
系统需要提供运行和维护的功能,包括系统配置管理、用户管理、密码管理和系统运行日志记录等功能。
校园食堂订餐系统用户主要分为系统管理员、食堂管理员用户、后台用户、消费者用户四类用户,系统管理员用户主要负责系统的用户管理、角色管理、密码管理和日常运行及维护工作;食堂管理员用户是整个食堂管理的最高管理者,主要职责是对后台的管理;后台主要职责是菜品管理与订单的处理;消费者(学生和教职工)主要功能是选择菜品与订单管理。
系统管理的主要使用对象是系统管理员,系统管理员具有用户管理功能、密码管理功能、配置管理功能和日志管理功能。用户管理提供角色分配的功能,包括录入、修改和删除校园食堂管理员用户信息的功能;配置管理包括配置系统运行参数和角色权限配置的功能;密码管理提供每个用户个人的密码修改的功能;日志管理主要是管理系统运行日志的功能。
本文来自:http://www.biyezuopin.vip/onews.asp?id=16449
部分代码如下:

package com.byh.biyesheji.Interceptor;

import com.byh.biyesheji.pojo.Customer;
import org.apache.commons.lang.StringUtils;
import com.byh.biyesheji.service.OrderItemService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.util.Arrays;

/**
 * 前台登陆状态拦截器  如果访问的请求没有在noNeedAuthPage数组就跳转登陆
 */
public class LoginInterceptor extends HandlerInterceptorAdapter {
    @Autowired
    OrderItemService orderItemService;
    /**
     * 在业务处理器处理请求之前被调用
     * 如果返回false
     *     从当前的拦截器往回执行所有拦截器的afterCompletion(),再退出拦截器链
     * 如果返回true
     *    执行下一个拦截器,直到所有的拦截器都执行完毕
     *    再执行被拦截的Controller
     *    然后进入拦截器链,
     *    从最后一个拦截器往回执行所有的postHandle()
     *    接着再从最后一个拦截器往回执行所有的afterCompletion()
     */
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        /**
         *   不需要登录也可以访问的
         *       注册,登录,产品,首页,分类,查询等等
         *   需要登录才能够访问的
         *       购买行为,加入购物车行为,查看购物车,查看我的订单等等
         *   不需要登录也可以访问的已经确定了,但是需要登录才能够访问,截止目前为止还不能确定,所以这个过滤器就判断如果不是注册,登录,产品这些,就进行登录校验
         * 1. 准备字符串数组 noNeedAuthPage,存放哪些不需要登录也能访问的路径
         * 2. 获取uri
         * 3. 去掉前缀/fore
         * 4. 如果访问的地址是/fore开头
         * 4.1 取出fore后面的字符串,比如是forecart,那么就取出cart
         * 4.2 判断cart是否是在noNeedAuthPage
         * 4.2 如果不在,那么就需要进行是否登录验证
         * 4.3 从session中取出"cst"对象
         * 4.4 如果对象不存在,就客户端跳转到login.jsp
         * 4.5 否则就正常执行
         */
        HttpSession session = request.getSession();
        String contextPath=session.getServletContext().getContextPath()+"/fore";
        //准备字符串数组 noNeedAuthPage,存放哪些不需要登录也能访问的路径
        String[] noNeedAuthPage = new String[]{
                "Index", //首页
                "DetailUI", //商品详情页
                "RegisterUI",  //注册页
                "Register",  //注册
                "LoginUI",  //登陆页
                "Login",     //登陆
                "IsLogin",  //判断是否登陆
                "MtLogin", //模态登陆验证
                "CstLoginOut", //退出
                "DelOrderItem",//删除购物车项
                "CreateOrder", //提交订单
                "Payed", //支付成功
                "NameLike", //模糊搜索商品
                "FindCategory", //查看分类下的商品
                "Zixunadd", //添加资讯
                "LoginMsg", //登陆返回信息
        };
        //获取uri
        String uri = request.getRequestURI(); //访问首页 /fore/foreIndex
        //去掉前缀/fore
        uri = uri.substring(5,uri.length());  //去掉前缀后 /foreIndex
        //如果访问的地址是/fore开头
        if(uri.startsWith("/fore")){
            //判断是否是在noNeedAuthPage
            String method = StringUtils.substringAfterLast(uri,"/fore" ); // 取出/fore后的字符串:Index
            //如果不在,那么就需要进行是否登录验证
            if(!Arrays.asList(noNeedAuthPage).contains(method)){
                Customer customer =(Customer) session.getAttribute("cst");
                if(null==customer){
                    response.sendRedirect("foreLoginUI");
                    return false;
                }
            }
        }

        return true;

    }

    /**
     * 在业务处理器处理请求执行完成后,生成视图之前执行的动作
     * 可在modelAndView中加入数据,比如当前时间
     */
    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
       // super.postHandle(request, response, handler, modelAndView);
    }

    /**
     * 在DispatcherServlet完全处理完请求后被调用,可用于清理资源等
     *
     * 当有拦截器抛出异常时,会从当前拦截器往回执行所有的拦截器的afterCompletion()
     */
    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
       // super.afterCompletion(request, response, handler, ex);
    }
}

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

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐