APP下载

基于SSM的高校食堂就餐系统设计

2021-10-19傅俊松曾丽

现代信息科技 2021年6期

傅俊松 曾丽

摘  要:近年来随着高校的扩招,大学生人数越来越多,食堂里面的菜肴也变得五花八门,但学生每天都面临着不知吃什么的问题,当前学校食堂提供的服务满足不了学生多样化的需求。文章根据对四川大学锦城学院食堂现状的调研,通过使用SpringBoot、Vue等技术设计高校食堂就餐系统,实现菜肴推荐、菜肴收藏等功能,为学生日常选餐提供参考;还实现食堂管理、用户管理等服务,加强学校对食堂的日常管理。

关键词:SpringBoot;食堂管理;Vue

中图分类号:TP311     文献标识码:A 文章编号:2096-4706(2021)06-0005-04

Design of University Canteen Dining System Based on SSM

——Take Jincheng College of Sichuan University as an Example

FU Junsong,ZENG Li

(School of Computer and Software,Jincheng College of Sichuan University,Chengdu  611731,China)

Abstract:In recent years,with the enrollment expansion of universities,the number of university students is increasing,and the dishes in the university canteen have become multifarious,but students are faced with the problem of not knowing what to eat every day,and the service provided by the current university canteen can not meet the diversified needs of students. Based on the investigation of the canteen status of Jincheng College of Sichuan University,this paper designs the university canteen dining system by using SpringBoot,Vue and other technologies,and realizes the functions of dishes recommendation and dishes collection,so as to provide reference for students' daily meal selection;it also realizes the canteen management,user management and other services,and strengthens the daily management of the university canteen.

Keywords:SpringBoot;canteen management;Vue

0  引  言

高校食堂作为高校后勤的保障,始终为高校内的一切教学活动、科研活动和师生的基本生活提供强有力的保障[1]。高校食堂里菜肴种类繁多,各具特色,学生每天都面临着吃什么的问题,但是学生在大多数情况下只能通过周围身边同学的推荐选择就餐,无法对学校食堂全部的菜肴有着清晰的了解;且当前落后的食堂管理模式满足不了学生多样化的需求。因此,为了方便学生就餐,提高学校食堂的管理水平,本文设计了一套高校食堂就餐系统来解决上述问题。借助于本系统,在大数据分析下,食堂可以根据学生的口味做出调整和提高,同时改善餐饮的质量,进一步提高学生校园生活满意度[2]。

1  系统主要技术选择以及介绍

1.1  SpringBoot框架

SpringBoot通过对配置和启动依赖的约定,简化复杂的依赖关系,大大减少了XML配置文件,基本实现了自动化定位,可以快速创建独立运行的Spring项目,并集成了大量主流框架,如MyBatis、Redis等[3]。因此对SpringBoot应用程序而言只需要输入一部分的配置代码,便可以完成相应的功能。所以开发人员可以更专注于业务逻辑的开发。

1.2  MyBatis框架

MyBatis是目前世界上优秀的持久化层框架,可以实现双向映射。它可以将数据集映射到Java对象或将Java对象映射到数据库中的记录。映射方法可以通过注释或XML文件的形式来完成,在本系统中以XML文件的形式映射。

1.3  Vue

Vue是一个逐步建立JS用户界面的框架。Vue的整个生命周期包括初始化、加载、更新和銷毁。它具有八个挂钩功能,用于不同的生命周期阶段。该系统中使用最多的是挂接功能,该功能通常用于Vue生命周期的加载阶段。目前采用SpringBoot结合Vue的这种流行模式,其优势是相当大的,在能够使得用户界面更加美观的境况下用户体验也更好,同时还能够提高系统开发和扩展性[4]。

2  系统功能模块分析

以四川大学锦城学院为例,该校拥有八个食堂,每个食堂拥有25~35个窗口,每个窗口又提供5~10种不同的菜肴,并且不同的食堂之间可能又提供相同的菜肴,但其口味、价格、分量可能略微有差异。例如三食堂和五食堂都有啵啵鱼窗口,但是三食堂的偏辣,而五食堂的分量又多一点。而与此同时,食堂里的窗口又没有体现这些“细节”,所以这就有可能造成学生一到饭点面临选择吃饭困难的境地。本文根据该高校的实际情况需求,对用户群体主要分为三个模块:学生模块、商家模块和管理员模块(即校方模块,后统称管理员模块),如图1所示。

学生模块为学生提供服务,学生在未登录的情况下仅可查看推荐菜肴和推荐的窗口,若想查看更多的信息则需要注册登录。在登录以后,学生可以查看所有关于菜肴和窗口的具体信息。学生可以通过菜肴的相应字段筛选自己心仪的菜肴;也可以根据历史浏览量和学生对于菜肴的历史相关评论进行选择。而学生只有在购买菜肴后,才能对其购买的菜肴进行评论。如果学生觉得某种菜肴还不错,学生可以对其进行收藏,以便下次直接购买。而在个人中心,学生可以看到自己历史购买订单,知晓自己一个月内在用餐方面的花销,方便学生们进行合理的用餐规划。

商家模块供商家使用。如果一个人想成为商户,在注册登录后点击个人中心的商户申请,填写相关信息,待管理员批准后即可成为商户。商家拥有创建窗口、管理窗口等权限。此外,商家还可以每个月根据自己旗下窗口的订单,一键导出营业额,以此来查看自己每月的盈亏。

管理模块仅由管理员一人使用。管理员的功能有三大类,分别是用户管理类、营销管理类、窗口管理类。

第一,用户管理类。管理员审核用户成为商户的请求,待确认符合相关要求后,即可通过请求。若不符合要求便拒绝其请求。此外,管理员还可以对商家和学生的相关信息进行修改、审核认证信息、帮助同学和商家找回密码等。

第二,营销管理类。管理员可以对优质菜肴和新型菜肴进行首页推荐,以便学生们更好的选择菜肴。若发现当前菜肴不符合推荐标准,管理员便可下架其推荐位。管理员还可以在分类管理中,添加菜肴的分类来丰富菜肴的种类。

第三,窗口管理类。管理员在窗口管理中可以根据当前窗口的相关状态来决定是否关闭该窗口,也可以对那些未发布但符合标准的窗口进行发布。另外,管理员有权查看每个窗口各个月的营销情况,并以此作为优质窗口的推荐位标准之一。而在评论管理中,管理员可以根据评论时间、评论者等条件查询相关评论,也可以删除某些恶意评论和刷单评论。

3  系统主要设计

高校食堂就餐系统主要包括数据库设计、用户设计、登录设计、评论设计、推荐设计等。每种设计的过程和思路都很相似,因此本文选取了几种主要的设计过程进行介绍。

3.1  数据库设计

数据库负责完成数据收集、存储、处理及系统维护功能,是信息管理系统的核心。合理运用数据库原理知识,可以提高数据存储效率,降低数据库后期维护和升级的难度[5]。本系统数据库设计包含了窗口表、评论表、菜肴表、评分表、用户表等共九个表。表1、表2将详细展示本系统的部分表结构。

3.2  用户设计

本系统的用户分为:学生、商家、管理员。在登录时拦截器通过对用户的roles字段进行判断,然后跳转到不同的界面,进而实现相应的功能。例如管理员的roles字段为:USER|BUSINESS|ADMIN,那么在登录后,系统管理员便可以对商家或学生进行筛选、查看其详细的个人信息、修改他们的密码等操作,管理员界面如图2所示。学生和商家均可更改修改自己的密码,也可以向管理员求助找回密码。但在修改密码时需要注意下面几点:(1)输入的旧密码必须正确。(2)新密码与旧密码不能重合。(3)密码的长度为5~20位,并且区分大小写。

3.3  登录设计

用户在首次登录时需要填写相关信息进行注册。登录时会进行校对:将密码与输入的用户名或邮件地址进行验证。当用户登录时,系统获取存储在数据库中的盐值信息。获得用户的随机盐值后,使用MD5进行二次加密,并将加密后的密码与存储在数据库中的密码进行比较。验证通过后,URL跳转到系统首页。如果验证显示不通过,登录信息将根据提示信息进行修改。登录时使用前后端双重检查,使用正则表达式判断用户输入的密码是否符合规则。正则表达式为:当密码符合验证规则时,密码通过POST请求发送给服务器。服务器收到密码后,将其转换为随机数盐值,然后进行第二次MD5加密,确保用户密码的安全性,防止用户密码被人恶意破解。系统会在工具类中生成随机数盐值和二次MD5加密,方便系统获取,SaltUitl代码为:

public static String getSalt(int n){

char[]chars=("1234567890"+"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ").toCharArray();

StringBuilder someOne = new StringBuilder();

for(int i = 0;i < n;i++){

//获取随机值

char aChar = chars[new Random().nextInt(chars.length)];

someOne.append(aChar);

}

return someOne.toString();

}

3.4  評论设计

为了加强学生的使用感以及能快速了解菜肴的相关信息,在本系统中设有评论功能。未加入系统的用户(包括未登录的用户)无法在系统首页查看相关评论。只有登录后才可查看,但未购买菜肴则不能对其发表评论。评论的等级分为1~5星,星星的数量越高代表对菜肴的满意度越高。学生可以通过查看星级和评论来筛选自己心仪的菜肴。系统管理员可以在后台对学生的评论进行查询和删除,以随时调整产品的数量和维护系统环境。管理员可以对评论内容和评论时间间隔进行筛选,实现筛选评论的逻辑为:根据输入的用户名或菜肴名,模糊查询其所在的表,返回list形式的实体类,再取其id组合形成list列表,然后根据这些条件去数据库中查询获取时间。如果管理员没有选择评论开始日期,那么开始时间戳将是1970年1月1日。而如果没有选择评论结束日期,结束时间戳将是当前系统日期到时间戳。大致的实现思路为:

//根据用户名模糊查询返回相关用户

List userList=userService.queryUserByNickName (userName);

//将查询到的相关用户的Id整合成userIdList

ListuserIdList=userList.stream().map(User::getId)

.collect(Collectors.toList());

//查询所有菜肴,将菜肴的所有状态整合成statusList

List allDishList=courseService.queryAllDish();

ListdishStatusList=allDishList.stream().map(Dish::getStatus)

.collect(Collectors.toList());

//最后根據这些条件去数据库中查询

List> dishList=dishService.queryAllDishList(userIdList,status,dishName,dishStatusList);

3.5  推荐设计

为了让学生有更好的用餐体验,本系统对优质的菜肴和窗口进行推荐。同时出于对新型菜肴的扶持,本系统也一并设有推荐位。在实际情况中,用户的不同操作会影响数据的分布,例如:每个人在点完餐之后不一定会对菜肴进行评分或每个人每次都点推荐位的菜肴等情况。所以,这种类似的操作会造成部分数据的缺失。因此,系统在推荐设计时参考了ALS算法。ALS是以基于用户的协同过滤算法和基于物品的协同过滤算法的优点发展而来的算法[6],它可以很好的兼顾User和Item,较好的反映二者之间的相关性。推荐设计的主要指标基于菜肴和窗口的各项数据,如菜肴的总历史浏览量(10%)、订单量(25%)、评论分数(25%)、收藏人数(30%)、其他(10%)等。再结合考核成绩:每周五定时考核(40%)以及平日不定时考核的成绩(60%)进行综合测评。系统将这些数据收集起来,进行不同权重的加权,计算出各个菜肴和窗口的得分,然后将这些分数从高到低排名,取前五上推荐位。而对新类型菜肴推荐的主要考察指标为前期网上问卷调查的结果(20%)和试吃效果(30%)以及管理员实地对菜肴的考察(50%)。当新型菜肴的分数位于同期新型菜肴的分数榜前三即可上推荐位。

4  结  论

高校食堂就餐系统应用了SpringBoot、MyBatis、Vue等框架技术进行开发,在一定程度上提高了本系统的开发速度,在保障用户体验的同时也加强了系统安全。本系统实现了学生点餐管理、收藏管理、商家订单管理和管理员后台对于本系统的统筹管理。满足了学生日常对于选餐、点餐的基本要求,实现了商家实时对学生需求的掌控,以便及时做出相应服务的调整。最后本系统还提升了学校对食堂管理的效率,巩固其日常对食堂的管理。

但是,由于本系统开发时间有限,后期还需要做进一步的优化,比如在进行查询菜肴的时候,增加对菜肴的价格、口味等条件查询,进一步方便学生使用;在推荐设计的时候将菜肴的成分考虑进来,以便将合适的菜肴推荐给适宜的人群;还有系统主页面的设计不够细致,交互方式较为单一等等,这些都是后面优化改进的方向。

参考文献:

[1] 吴彤群.高校食堂管理现状及改革研究 [D].徐州:江苏师范大学,2017.

[2] 陈江辉,於立杰,李强.智慧校园食堂订餐系统信息化平台的设计 [J].网络安全技术与应用,2021(3):43-44.

[3] 张旭刚,张昕,高若寒.基于Spring Boot与MyBatis框架构建动态读写分离模型 [J].微型电脑应用,2021,37(2):84-86+98.

[4] 杨妍.基于Spring Boot与Vue的系统管理模块开发探究 [J].电声技术,2019,43(2):32-34.

[5] 李珊.基于JSP的高校学生公寓管理系统的设计与实现 [J].中国管理信息化,2019,22(12):123-124.

[6] 刘婷婷.基于ALS算法的个性化推荐系统的应用研究 [D].大连:大连交通大学,2018.

作者简介:傅俊松(1996—),男,汉族,重庆垫江人,本科在读,研究方向:Java软件开发;曾丽(1981—),女,汉族,四川宜宾人,副教授,硕士,研究方向:软件工程,数据分析。