🙊作者简介:拥有多年开发工作经验,分享技术代码帮助学生学习,独立完成自己的项目或者毕业设计。
- 代码可以私聊博主获取。🌹
- 赠送计算机毕业设计600个选题excel文件,帮助大学选题。
- 赠送开题报告模板,帮助书写开题报告。
作者完整代码目录供你选择:
- 《Springboot网站项目》400套
- 《ssm网站项目》800套
- 《小程序项目》300套
- 《App项目》500套
- 《python网站项目》600套
⚡感兴趣大家可以点点关注收藏,后续更新更多项目资料。⚡
项目演示
摘 要
人民生活水平的提高就会造成生活节奏越来越快,很多人吃饭都采用点外卖的方式。现在点外卖的平台已有很多,大多都需要安装它们的APP才可以使用,并且没有针对校园。如果一味的使用外卖平台不仅会造成商家成本的增加,还不利于商家校园订单的配送。开发基于微信小程序的校园订餐系统可以解决这些问题,实现借助微信就可以点餐。
本基于微信小程序校园订餐系统采用Java语言和Mysql数据库进行设计,技术采用微信小程序,可以不安装App软件就实现订餐。本系统实现管理员和用户、商家三个角色的功能。用户主要在微信端操作,内容有美食信息、网站公告信息、用户可以在线充值进行美食的订餐以及管理购物车和咨询客服。商家可以发布美食和管理订单。管理员可以发布公告和审核美食以及管理订单等。本系统可以实现校园的订餐,帮助商家更好的销售餐品。
关键词:在线订餐;美食信息管理;订单管理;Java语言
第1章 绪论
1.1课题研究背景
互联网的发展对传统行业带来了一个颠覆性的改变,各行各业都在借助于互联网的思想进行创新,只有更加科学有效的管理办法,加上不断的创新才能提高企业的核心竞争力,才能跟上时代的潮流,要不然面临的就是行业的淘汰。所以要摒弃传统的经营管理模式,插上互联网的翅膀才是未来行业发展的趋势。
随着生活水平的提高和科技的进步,人们的生活水平得到了很大的改善,而近几年受到各种电商宣传的营销刺激,比如最近今年非常火的直播带货,很多商家想到加入电商平台里。而这几年受疫情影响,很多人的生活压力变大,但物价越来越贵,很多人的生活习惯和消费习惯也在慢慢改变,在每天的吃饭选择上更多的用户选择在网上订餐。所以说在这种背景下,很多订餐系统就诞生了,通过互联网建立的订餐平台,作为一种新的思想、新文化的生活方式,可以扩大商家美食的销售圈子,用户可以随时订餐,并且价格便宜。但由于食物的特殊性,在网上点餐看不到实际餐品的生产过程,造成食品更多的安全问题,各种黑作坊、过期食物、生产环境脏乱差都得不到有效的监控。
1.2课题研究内容
本基于微信小程序校园订餐系统采用商家发布美食、管理员审核美食的方式进行食物的监管,由第三方来保证食物的安全。用户可以浏览公告信息、美食信息进行美食的咨询、购买、收藏、评价以及订单管理等,商家可以安排配送等。本系统可以保证食品的安全,使用户吃到放心、可靠的美食。
1.3课题实现目的和意义
目前我国网络差不多已经普及,已经全面进入了5G时代,已经完全满足了用户的各种网络需求,由之前的PC端已经转向了移动互联网时代,通过移动互联网的模式可以不局限与任何时间和地点,对用户来说更加的方便。
对于需要订餐的用户来说,可以有质量保证的订餐平台非常重要,这样就解决了食物的质量。有问题也可以随时和管理员进行反馈,一同监视商家的食品问题。对于商家来说,可以有新的销售平台可以提高自己的业绩,并且通过本平台也可以提高自己的知名度。而对于管理员来说,保证用户吃到放心的食物,给商家提供销售平台,也算是为人民做出了自己的贡献,所以说开发这样的系统是一个一举多得的事情,是非常具有开发价值的。
1.4论文结构安排
本篇论文按照系统调查、系统开发使用的关键技术与环境、系统分析、系统设计、系统实现、系统测试的步骤进行安排。第一章为绪论,相当于系统的调查,包含了系统的开发背景、意义方面信息;第二章介绍本系统在开发中所使用的关键技术。第三章进行系统需求性、可行性等方面的分析。第四章进行数据库建立和系统功能结构的设计。第四章进行系统的编码、界面实现。第五章进行系统功能的测试。第六章为本系统的总结。最后为致谢和参考文献。
第2章 开发系统所使用的关键技术和环境
2.1微信开发者工具软件介绍
微信开发者工具是用来调试小程序的一个环境包,它最大的的特点就是集成了调试所需要的所有软件,比如像服务器Tomcat还有数据库 MySQl以及系统管理,只需要通过一个微信开发者工具软件就可以完成微信小程序的环境调试,非常的简单,也不需要单独的进行环境配置,而且还额外添加了开发工具的使用和开发所需要的手册等。对于新手来说是非常友好的,只需要安装这一个包就可以了,因为对于新手来说,往往编程不是最难,最难的是环境的配置,这跟电脑系统,电脑硬件配置,软件配置都有一定的关系,随便一个地方出错,都可能导致系统运行不了,所以通过一个微信开发者工具软件就可以解决这些所有的问题。
2.2Java语言介绍
Java主要是用来开发动态的一种编程语言,非常的简单易学,所以受到很多人的青睐,非常适合新手的使用,可以通过很短的时间就能学会。而且是开源的环境,有非常丰富的资源环境,非常适合一些中小型项目的开发使用。Java是一种面向对象的OOP,通过OOP可以使编写的代码结构更加的合理,而且还有很好的可维护性,可以直接看到Java的面向过程的写法,最大的特征就是代码可以重复利用,这样开发一个系统同样的一个问题,就可以直接用同一段代码就执行了,这个就很好的减少了代码的存储压力,而且处理速度更好,更好的解决代码封装问题,使建立的系统模型更加的完善。
2.3Web技术介绍
Web程序一般可以分为静态网站和动态两种形式,前几年的时候一般用的都是静态的,就是网站直接通过Html进行编写出来的,直接放到服务器上,然后通过Http协议用户就可以直接访问网站,相对来说形式比较单一。但是随着技术的发展,很多业务都拓展到了线上进行,单纯的静态网站所保存的数据远远不能满足用户的需求,大多都需要根据用户的需求进行单独生成动态的页面进行反馈,然后根据需要的需求在进行脚本代码的加工处理,然后通过浏览器进行解析,最后反馈给客户,这种形式就是动态的网站。Web客户端的主要功能就是对信息进行展示,可以结合各种编程语言使用,比如像Jtml ,Css 脚本语言等各种技术,而其中最重要的就是Html语言,他是组成Web程序必不可少的一部分,而脚本程序可以嵌入到Html文本里,通过这个流程可以使Html静态网页转换成动态页面,可以很好的提高系统的可交互性。而编写脚本程序常用的就是JavaScript技术,他的突出特点就是变量非常的灵活,而且兼容性好,不需要在单独进行编译,非常方便使用,可以直接用来设计动态交互的网页,不光是可以用来对客户端部分的编写,而且也可以直接通过脚本程序进行服务端的编写,可以很好的解决Web服务端的执行问题。所以说Web服务器主要包含的技术有Java ,Asp,Jsp等,都可以直接通过Web服务端进行页面展现。
2.4UML技术介绍
UML的开发过程中首先是先对对象进行分析研究,然后进行文档化分析,然后在对面向对象的思想进行细化,然后设计建立设计模型,最后觉得就是通过之前建立的各种模型进行编程,UML已经是形成了一个行业内的工业标准,所以在面对UML的时候不要有任何负担,而且一种辅助工具,对于系统开发阶段是有很大益处的。而通过UML我们接触最多的就是用例图了,用例图主要就是描述出来你打算做什么系统,从而实现什么功能,然后通过用例加权限角色的形式用图形展现出来,而用例部分一般都是用一个椭圆的形状来表示,角色部分用一个人的符号表示,通过箭头的形式把他们进行联系起来。而类图主要就是用一个三层表格图来进行展示,里面内容包含类的名字,类的属性,还有类实现所需要的方法,而把这些类之间存在三种关系,就是关联,泛华和依赖。关联是通过一条实线表示,某个类里的属性引用到另个实体类里,这样就形成一种关联关系,而关联关系也分为两种不同的关系,就是聚合和组合,聚合是通过一个空心菱形框来表示,他的最大特性就是当A的实体部分,也可以当B的实体部分,而组合关系恰恰相反,当作为A的实体后就不能在作为B的实体部分了,组合关系一般是采用实心的菱形框表示,以此来进行他们之间的区别。泛华关系是用空心的三角形来标注,可以看成一种对接口的关联关系。依赖关系是如果建立的一个类进行了改动,那么跟他有关联的其他类都会进行相应的改动,会通过类信息进行发送给其他的类,作为另一个类的数据存储部分,然后进行参数变动。
2.5 SSM框架介绍
SSM最核心的特色功能就是可以生成独立的微服务单元,就是把所有的代码模块都写在一个单独的应用里,这样功能代码直接的粘合度就非常的高,兼容性更好,而且还可以进行每个功能模块单独部署,不同的模块都能生成不同的小型服务,从而可以进行单独升级,然后实现应用之间的通信。用SSM建立项目的首要步骤就是先配置SSM依赖,建立的时候不需要单独设置版本,直接通过系统自带的场景启动器,就可以直接导入项目所需要的各种Web模块,然后在把所需要的功能场景调取出来,生成一个启动器,直接在项目里引入各种依赖的组件就行,然后需要什么功能就导入什么场景就可以了。
3.1系统需求分析
随着计算机信息化技术的蓬勃发展,各行业都开始转向自动化办公模式,传统的工作模式已经不能满足当下的需求,所以为了适应现代化潮流,采用更加科学规范的管理方式,都开始采用计算机信息化管理系统,从而更好的提高工作效率。本系统采用微信小程序的开发模式,结合了数据库一起设计的,所以作为一个独立的系统运行的,解决了繁琐的工作模式。直接通过网络就可以完成工作,不管对于管理员还是对于用户,都能起到一个更好的效果。进一步的实现了节省人力资源,提高了工作效率,业务处理流程更加的简单,更加满足需求。
3.2系统可行性分析
开发本系统需要实现什么功能,是否有开发的必要性,是否能满足用户需求等,需要先进行一系列的研究,然后设计出完整的方案,确定系统是否可行,然后才能继续开发,所以开发本系统主要是技术上,经济上,操作上等进行分析。
3.2.1经济可行性分析
本系统属于一个开放型的计算机信息化系统,开发成功后可以帮助管理员提高工作效率,完成数据的存储,收集,查询等各种操作,相比传统的手工模式,更加的省时省力,而且查找非常的方便,管理起来更加的简单,使管理更加的科学规范。采用的编程软件和技术全部都是开源的,直接网上就能免费下载,所以开发的费用是非常的低,开发系统所用到的知识,全部都是老师上课所教的,不懂的地方也是在老师和同学的帮助下一起完成的,所以并没有太多的费用。并且本系统的运行条件也不高,只需要基本配置的电脑就可以实现。本系统所使用的技术、环境都为免费的,所需要的资料和控件、图片、素材等都是网上免费下载或者本人自己制做的。所以从这里分析得出,投入不多但是确能带来更大的经济效益。
3.2.2操作可行性分析
本系统实现全部采用的是可视化的操作界面,非常直观简单,而且是在网页里进行效果展示,非常容易打开,而且后台数据进行修改后,前台页面可以实时更新。操作的用户只需要会基本的电脑操作就可以使用本系统,而且布局简单,符合现代审美,很容易就可以进行每个功能的操作。在设计中为了方便用户操作也设计了大量的提示词和提示框。所以本系统在系统的操作可行性分析上是可以通过的。
3.2.3技术可行性分析
主要是从硬件和软件两方面进行分析,首先开发本系统所需要的硬件设备为PC电脑、手机,目前的硬件设备性能都非常的好,完全可以支撑开发本系统。电脑软件上采用windows操作系统,兼容非常的好,可以支持各种环境的开发运行,手机上采用Android操作系统,可以支持多种环境。数据库采用的MySQL数据库,服务器Tomcat。采用Web形式进行开发,开发技术非常的成熟,已经应用到很多的场景种,通过这些技术完全可以实现功能要求,可以完成动态交互,在经济上是可行的。
3.3系统性能分析
性能需求一般是指需要的运行环境是否能得到支撑,不管是硬件还是软件上,数据存储容量和缓冲文件能否得到要求。硬件设备上一般的电脑、手机处理器都可以满足开发要求,处理内存2G以上,硬盘容量120G以上。系统运行过程中可以直接独立运行,不需要依赖其他的环境软件,有很好的兼容性。
3.4其他需求分析
主要还要考虑系统的可维护性,就是后期的维护成本高不高,可理解性,就是用户能不能轻松掌握使用的方法,然后进行系统的各种操作。在各种要求都得到满足的情况下,来开发完成本次系统。
3.5系统功能分析
本系统的使用角色为管理员、商家和用户,管理员可以管理美食信息、订单信息、商家信息、用户信息等。管理员用例图如下图3.1所示:
图3.1管理员用例图
用户可以浏览美食、公告,在线订餐和加入购物车,在线咨询以及在线充值等,用户用例图如下图3.2所示:
图3.2用户用例图
商家可以管理美食信息和订单信息,商家用例图如下图3.3所示:
3.6系统业务流程分析
本系统的流程为商家添加美食信息、管理员审核美食、用户购买美食、商家管理用户订单安排配送,用户管理订单以及管理员审核订单等。本系统的业务流程图如下图3.4所示:
第4章 系统设计
4.1系统设计原则
系统详细设计也是很重要的一步,设计的质量高低也决定了程序最终的质量,所以首先要进行系统的合理化详细设计,然后还有读懂理解透彻这个程序的设计规划,这样编写代码的时候才不会出现错误,还要检验逻辑是否正确,性能是否满足用户需求,还要看是否容易理解,是否方便操作,要把所有需要考虑的问题都设计好,这样编写代码的时候才能更省事。
开发一个成功的系统首先要有一个明确的定位,就是开发这个系统的目的,然后确定系统的具体实施功能,具体需要投入的费用,然后进行市场可行性分析,最终确定系统是否可行,然后才能开展下一步的工作。只有经过了详细的前期调研,才能避免在系统开发中出现的很多其他问题,保障系统顺利开发进行。所以说一个成功的系统,首先必须方案思路正确,然后在根据需求设计对应的数据结构,开发环境,网络架构,然后构成一个完整的系统,只有这样才能使系统发挥更大的用处。
4.2系统功能结构设计
本系统的功能结构为用户界面、管理员界面和商家界面,不同角色负责的功能不同,对系统的功能设计采用系统功能结构图进行展示。本系统的功能结构图如下图4.1所示:
图4.1系统功能结构图
4.3系统数据库设计
4.3.1数据库逻辑结构设计
逻辑结构设计就是数据库的一个概念模型,然后转换成数据库管理系统的一个模型,主要先建立单独的数据库ER模型,然后在把这些单独的模型整合起来,成为一个整体的数据库关系模型,然后还有整合各个数据之间的关系熟悉,关键字,还有数据结构和文件结构,通过建立的这些相互关系,从而形成一个完整的数据库关系视图。而逻辑结构设计阶段一般要分为以下几个方面执行,首先是关系模型的转换方面,要将各个数据之间的实体关系,实体熟悉之间的联系进行关联起来,然后还有解决命名问题,每个数据都有自己的专属名称,可以采用原先的名称,也可以重新命名,前提是不能重复就行,其次就是还有把数据的非原子属性进行横向和纵向进行展开。其次我们还要进行数据结构的优化,这样才能保证数据的查询速度,保证系统的流畅运行。最后就是用户权限之间的关系视图设计,因为每个系统有不同的权限用户,所以要建立不同的关系视图,这样才能保证不同用户访问的时候,访问的数据不同,根据用户不同的需求进行单独访问,这样从而保障了数据的安全性,所以不同的数据结构之间要保持一定的数据逻辑独立性。
本系统的实体主要为美食信息、订单信息、用户信息、管理员信息、公告信息等。
- 管理员信息的ER图如下图4.2所示:
图4.2管理员信息ER图
- 美食信息ER图如下图4.3所示:
图4.3美食信息ER图
(3)订单信息ER图如下图4.4所示:
图4.4订单信息ER图
(4)公告信息ER图如下图4.5所示:
图4.5公告信息ER图
(5)用户信息ER图如下图4.6所示:
图4.5用户信息ER图
(6)系统关系ER图如下图4.6所示:
图4.6系统关系ER图
4.3.2数据库表设计
数据库表是数据库的核心部分,把相同属性的实体设计到一个表,表与表之间进行联系就可以实现数据的正确调用。本系统的数据库表有管理员信息表、美食信息表、订单信息表、商家信息表等。本系统的数据库表具体如下表4.1-4.14所示:
表4.1 address
表4.2 cart
表4.3 chat
表4.4 config
表4.5 discusstesemeishi
表4.6 meishileixing
表4.7 news
表4.8 orders
表4.9 shangjia
表4.10 storeup
表4.11 tesemeishi
表4.12 token
表4.13 users
表4.14 yonghu
第5章 系统实现
5.1用户登录功能的界面实现
本系统中可以保证安全的功能就是用户登录功能,登录可以验证用户的身份,用户可以注册,当密码忘记后也可以通过忘记密码功能进行找回。在用户登录界面里采用上中下的方式进行设计。在上设计的是功能的名称,在中设计的是账号和密码的输入框,在下设计的是用户注册和忘记密码功能。用户登录功能的实现界面如下图5.1所示:
图5.1用户登录功能的实现界面
5.2用户注册功能的实现界面
本功能设计的目的是帮助游客在线订餐。在注册时需要设置账号和密码。用户注册功能的实现界面如下图5.2所示:
图5.2用户注册功能的实现界面
5.3首页功能的设计实现
用户登录后可进入首页,在首页里可以看到公告信息和美食信息,可以进行美食搜索和进入购物车、我的界面。首页功能的实现界面如下图5.3所示:
图5.3首页界面的实现
5.3.1用户信息管理功能的实现界面
用户可以修改自己注册时填写的资料,可以设置头像以及是否为会员。用户信息管理功能的实现界面如下图5.4所示:
图5.4用户信息管理功能的实现界面
5.3.2特色美食功能的实现界面
用户可以浏览美食信息,也可以根据美食的名称进行搜索,美食信息可以看到图片和价格,特色美食信息的实现界面如下图5.5所示:
图5.5特色美食功能的实现界面
5.3.3网站公告功能的实现界面
用户可以在前台浏览网站公告内容,也可以搜索网站公告内容。网站公告功能的实现界面如下图5.6所示:
图5.6网站公告功能的实现界面
5.3.4立即订购功能的实现界面
用户在前台选择喜欢的美食后可以立即订购,在订购时需要选择地址,立即订购功能的实现界面如下图5.7所示:
图5.7立即订购功能的实现界面
5.3.5我的功能的实现界面
在我的功能里,用户可以管理订单信息,进行在线充值以及咨询客服和管理购物车信息。我的功能实现界面如下图5.8所示:
图5.8我的功能实现界面
5.4商家权限的功能实现
商家可以管理美食信息和订单信息,可以为用户配送。商家权限的功能实现界面如下图5.9所示:
图5.9商家权限功能的实现界面
5.5管理员权限的功能实现
管理员可以管理美食类型、美食信息、订单信息、用户信息、商家信息、公告信息等。管理员权限的功能实现界面如下图5.10所示:
图5.10管理员权限的功能实现界面
第6章 系统测试
6.1系统测试的目的
系统测试的目的是及时的发现问题解决问题,绝对不是证明自己的系统没有问题,要是有这个思想的话,那测试就变的毫无意义了。因为设计一个完整的系统过程是非常的繁琐的,比如逻辑结构,数据库,安全验证等,不可能一点问题都没有的,所以要从各方面进行测试验证,首先要转换立场,站在用户的立场进行测试,查找各种有问题,这样才能及时的查缺补漏,所以系统测试是开发一个系统最重要的一步,也是必不可少的一部分。
在开发者的角度,测试的目的主要查看系统是否存在错误的内容,验证下是否满足了用户的功能需求,保证用户对软件质量的放心。而在用户的角度看的话,主要是查看系统是否有各种错误,是否符合自己的使用要求,是否会使用该系统。系统测试最重要的一步就是及时发现系统的漏洞,以免投入使用后造成重大损失。软件测试分为各种各样的测试,而我们采用的就是大多数系统采用的测试方法。一般就是黑盒测试和白盒测试,就是先进行功能测试,看看功能之间是否能正常使用,各个小功能结构之间是否连贯,其次在进行代码的结构逻辑测试,查看是否符合逻辑。
6.2测试步骤
测试过程跟开发过程非常的类似,也要分步骤的进行,不能盲目的进行测试,既然测试就要有合理的步骤,这才能起到测试的效果,绝对不能应付形式,那测试就变的毫无意义了。因此测试过程中首先是进行单个的模块测试,对模块的增删改查功能进行测试,查看是否有编码方面的错误和逻辑错误,其次进行系统整体测试,每个功能都进行连起来进行操作演示 ,查看是否符合开发需求。最后进行验收测试,对照系统开发说明书,验证是否满足,然后才算完成。
6.3测试用例
6.3.1美食信息管理功能的测试
对于美食信息管理功能的测试采用商家发布美食信息、管理员通过审核和不通过审核后查看前台展示的美食信息是否进行了展示。商家添加美食信息的测试界面如下图6.1所示:
图6.1商家发布美食信息的测试界面
管理员审核美食信息的测试界面如下图6.2所示:
图6.2管理员审核美食信息的测试界面
6.3.2订单管理功能的测试
对订单管理功能的测试采用用户提交订单,然后商家安排配送后,用户查看订单状态,用户修改订单后,商家查看订单信息的方式进行测试。用户提交订单的测试界面如下图6.3所示:
图6.3用户提交订单的测试界面
商家查询订单信息的测试界面如下图6.4所示:
图6.4商家查询订单信息的测试界面
6.4测试总结
通过对美食信息管理、订单信息管理功能的测试发现该功能为正确的,可以帮助用户在线进行点餐和管理订单信息。此外,本系统中还有公告信息管理、美食分类信息管理、用户信息管理等功能都一一进行了测试,因为篇幅问题在论文里没有描述。本系统可以完成校园订餐的任务,实现商家管理美食、订单,管理员管理用户、审核美食等的功能。
总 结
本系统采用微信小程序的技术进行设计,可以使点餐的用户不需要安装应用软件就使用本系统,本系统完成了用户在线点餐,管理员管理订单信息、美食信息以及商家发布美食、安排配送的功能。
从开题选题阶段到现在系统完成经过了好几个月的时间,刚开始确定了题目的时候,一时的束手无策,不知道从何下手,自己之前完全没有开发经验,然后开始查阅了相关的资料,设计了系统的功能结构,进行了一系列的可行性分析,需求分析,详细设计等过程。通过本次设计把之前所学的知识全部融会贯通了一遍,使自己的开发水平得到了显著的提升,对所学的知识进一步的巩固。当然这中间遇到了很多的困难,但是经过不断的学习努力,请假老师同学,这些问题都得到了解决,最终成功的完成了我的设计。这次毕业设计很大的提高了我们的动手能力。通过本次设计让我充分认识到了开发软件是多么的不容易,自己还有很多的不足,需要不断的学习进步,为以后的开发打下了很好的基础。
致 谢
紧张的大学时光马上就要结束了,在学校里学习了各种各样的知识,真的非常佩服每个老师的学识,不光在课堂上教我们知识,而且还教我们很多做人处事的方法,使我们的学识和思想都得到了很大的提升。所以在这里要感谢各科老师,是你教会了我们不同的知识,也要感谢我的导师,在开发设计的过程中给了我很多的宝贵意见,从开题报告阶段,到系统实施,到最后论文的撰写都给我提供了很多的指导,不单帮我解决了目前遇到的问题,更重要的是教我们以后遇到事情解决的办法,俗话说的好,授人以鱼不如授人以渔,老师无私奉献的精神和严谨的教学态度让我一直铭记于心。还要感谢我的同学,是你们的陪伴才让我感受到了大学生活的温暖,才让大学时光过的多姿多彩。
[1]宁功林.基于微信小程序的大学校园点餐管理系统设计与实现[J].华东科技,2022(02):77-79.
[2]朱广跃.移动Web点餐系统的设计[J].集成电路应用,2022,39(01):124-125.DOI:10.19339/j.issn.1674-2583.2022.01.045.
[3]陈帅.微信点餐系统小程序的设计与实现[J].电子技术与软件工程,2021(24):30-31.
[4]张巧岭.校园订餐系统设计[J].电子世界,2021(20):162-163.DOI:10.19353/j.cnki.dzsj.2021.20.065.
[5]高天搏,刘伟.基于微信小程序的食堂订餐系统[J].科学技术创新,2021(29):74-76.
[6]韩立峰,亓雪冬.基于微服务的高校网上订餐系统设计[J].微型电脑应用,2021,37(09):155-157+165.
[7]Scoulas Jung Mi,Carrillo Elena,Naru Linda. Assessing User Experience: Incorporating Student Voice in Libraries’ Pandemic Response[J]. Journal of Library Administration,2021,61(6).
[8]范勇华.基于Web订餐系统的设计与实现[J].信息与电脑(理论版),2021,33(13):71-73.
[9]冯秀玲.智能点餐系统设计与应用[J].电子技术,2021,50(06):30-32.
[10]. Computer Reservation Systems Market 2021 Latest Advancements and Business Outlook[J]. M2 Presswire,2021.
[11]陈江辉,於立杰,李强.智慧校园食堂订餐系统信息化平台的设计[J].网络安全技术与应用,2021(03):43-44.
[12]张苗苗,罗雅过,吕嘉琦.微信小程序订餐系统设计[J].无线互联科技,2020,17(24):26-27.
[13]李昊. 基于微信小程序的智能推荐点餐系统的设计与实现[D].南京邮电大学,2020.DOI:10.27251/d.cnki.gnjdc.2020.000283.
[14]宋思华.微信公众号订餐系统服务层的设计与实现[J].数字通信世界,2020(11):147-148+239.
[15]余丽娜.微信小程序订餐系统设计与实现[J].信息通信,2020(02):131-132.
[16]王艳辉.基于微信小程序订餐系统的设计与研究[J].信息与电脑(理论版),2019,31(21):97-98.
核心代码展示
/*** 公告通知* 后端接口* @author * @email * @date 2021-03-09 11:33:59*/
@RestController
@RequestMapping("/news")
public class NewsController {@Autowiredprivate NewsService newsService;/*** 后端列表*/@RequestMapping("/page")public R page(@RequestParam Map<String, Object> params,NewsEntity news, HttpServletRequest request){EntityWrapper<NewsEntity> ew = new EntityWrapper<NewsEntity>();PageUtils page = newsService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, news), params), params));return R.ok().put("data", page);}/*** 前端列表*/@IgnoreAuth@RequestMapping("/list")public R list(@RequestParam Map<String, Object> params,NewsEntity news, HttpServletRequest request){EntityWrapper<NewsEntity> ew = new EntityWrapper<NewsEntity>();PageUtils page = newsService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, news), params), params));return R.ok().put("data", page);}/*** 列表*/@RequestMapping("/lists")public R list( NewsEntity news){EntityWrapper<NewsEntity> ew = new EntityWrapper<NewsEntity>();ew.allEq(MPUtil.allEQMapPre( news, "news")); return R.ok().put("data", newsService.selectListView(ew));}/*** 查询*/@RequestMapping("/query")public R query(NewsEntity news){EntityWrapper< NewsEntity> ew = new EntityWrapper< NewsEntity>();ew.allEq(MPUtil.allEQMapPre( news, "news")); NewsView newsView = newsService.selectView(ew);return R.ok("查询公告通知成功").put("data", newsView);}/*** 后端详情*/@RequestMapping("/info/{id}")public R info(@PathVariable("id") Long id){NewsEntity news = newsService.selectById(id);return R.ok().put("data", news);}/*** 前端详情*/@IgnoreAuth@RequestMapping("/detail/{id}")public R detail(@PathVariable("id") Long id){NewsEntity news = newsService.selectById(id);return R.ok().put("data", news);}/*** 后端保存*/@RequestMapping("/save")public R save(@RequestBody NewsEntity news, HttpServletRequest request){news.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());//ValidatorUtils.validateEntity(news);newsService.insert(news);return R.ok();}/*** 前端保存*/@RequestMapping("/add")public R add(@RequestBody NewsEntity news, HttpServletRequest request){news.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());//ValidatorUtils.validateEntity(news);newsService.insert(news);return R.ok();}/*** 修改*/@RequestMapping("/update")public R update(@RequestBody NewsEntity news, HttpServletRequest request){//ValidatorUtils.validateEntity(news);newsService.updateById(news);//全部更新return R.ok();}/*** 删除*/@RequestMapping("/delete")public R delete(@RequestBody Long[] ids){newsService.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<NewsEntity> wrapper = new EntityWrapper<NewsEntity>();if(map.get("remindstart")!=null) {wrapper.ge(columnName, map.get("remindstart"));}if(map.get("remindend")!=null) {wrapper.le(columnName, map.get("remindend"));}int count = newsService.selectCount(wrapper);return R.ok().put("count", count);}}