NodeJS校园点餐系统-计算机毕业设计源码56979

摘 要

近年来,随着移动互联网的迅猛发展,微信小程序作为一种轻量级应用形式逐渐受到人们的关注和喜爱。在此背景下,各行各业开始向微信小程序上线他们的服务,其中包括餐饮行业,在校园内,学生、教职工和访客都需要解决用餐问题。本研究旨在设计和开发一款基于微信小程序的校园点餐系统,以解决传统点餐方式存在的排队等待、人为错误等问题。

本系统基于Node.js平台进行开发,利用其高效的异步I/O处理能力和事件驱动特点,实现了校园点餐系统的功能。系统设计包括用户登录注册、商家门店浏览、餐品选择、下单支付等功能模块,旨在方便用户浏览菜单、进行点餐、并完成下单支付流程。此外,系统还具备订单管理、评反馈等功能,以提升用户体验和服务质量。通过微信小程序与Node.js的结合,实现了系统的高性能、实时响应的特点,使校园点餐更加便捷、快捷。

系统开发环境主要包括前端开发环境和后端开发环境。前端采用微信开发者工具进行开发,利用WXML、WXSS等技术实现用户界面的设计与展示;后端通过Node.js框架搭建服务器,使用Express框架实现后端接口功能,并结合MySQL数据库存储用户信息和订单数据。整个开发过程中,开发人员充分利用Node.js的模块化编程特点和微信小程序的轻量级特性,实现了校园点餐系统的高效开发与运行,为校园食堂的管理和服务提供了一种全新的解决方案

关键词校园点餐系统Node.js微信小程序Java语言

Abstract

In recent years, with the rapid development of mobile Internet, WeChat 小程序let, as a lightweight 小程序lication form, has gradually attracted people's attention and love. In this context, various industries have started to launch their services on WeChat mini programs, including the catering industry. On campus, students, faculty, and visitors all need to solve their dining problems. This study aims to design and develop a campus ordering system based on WeChat mini programs to solve the problems of queuing and human errors in traditional ordering methods.

This system is developed based on the Node.js platform, utilizing its efficient asynchronous I/O processing capability and event driven characteristics to achieve the functionality of the campus ordering system. The system design includes functional modules such as user login registration, merchant store browsing, food selection, and order payment, aiming to facilitate users to browse menus, order meals, and complete the order payment process. In addition, the system also has functions such as order management and feedback to improve user experience and service quality. By combining WeChat mini programs with Node.js, the system has achieved high performance and real-time response, making campus ordering more convenient and efficient.

The system development environment mainly includes front-end development environment and back-end development environment. The front-end is developed using WeChat developer tools, utilizing technologies such as WXML and WXSS to design and display user interfaces; The backend builds a server using the Node.js framework, implements backend interface functions using the Express framework, and stores user information and order data in conjunction with a MySQL database. Throughout the development process, developers fully utilized the modular programming features of Node.js and the lightweight nature of WeChat mini programs to achieve efficient development and operation of the campus ordering system, providing a new solution for the management and service of campus canteens.

Key words:Campus ordering system; Node.js; WeChat Mini Program; Java language

目录

1 绪论

1.1 研究背景与意义

1.2研究现状

1.3论文主要研究内容

1.4论文组织结构

2 相关开发工具介绍

2.1 微信开发者工具

2.2 小程序框架以及目录结构介绍

2.3 MySQL数据库介绍

2.4 Node.js主要功能

3 系统分析设计

3.1 可行性分析

3.1.1 技术可行性分析

3.1.2 经济可行性分析

3.1.3 操作可行性分析

3.2 系统流程分析

3.2.1 用户登录流程

3.2.2 信息添加流程

3.2.3 信息删除流程

3.3 功能需求分析

3.4 非功能性需求分析

3.5系统角色用例分析

3.5.1系统前台用户用例

3.5.2系统后端用例

4 系统概要设计

4.1系统架构设计

4.2系统功能结构设计

4.3数据库概念结构设计

4.4数据库逻辑结构设计

5 系统的实现

5.1前台用户功能模块

5.1.1 前台首页界面

5.1.2注册界面

5.1.3登录界面

5.1.4 美食资讯界面

5.1.5 商家门店详情界面

5.1.6 点餐中心详情界面

5.1.7购物车管理界面

5.2后台功能模块

5.2.1 商家用户模块界面

5.2.2 系统用户界面

5.2.3菜系信息管理界面

5.2.4 系统管理界面

5.2.5 资源管理界面

5.2.6 点餐中心管理界面

6系统的测试

6.1 测试的目的

6.2 系统部分测试

6.3 系统测试结果

结论

参考文献

致谢

1 绪论

1.1 研究背景与意义

随着移动互联网技术的发展和普及,人们对便捷、快捷的服务需求也在不断增长。在校园中,学生和教职工们每天都需要进行点餐,而传统的方式往往存在排队时间长、选择范围有限、支付不便等问题。因此,开发一种基于微信小程序的校园点餐系统可以帮助提高校园餐饮服务的效率和便利性。

微信小程序作为一种轻量级应用,具有无需下载、跨平台、便捷分享等特点,深受用户喜爱。通过开发基于微信小程序的校园点餐系统,可以让用户在手机上随时随地进行点餐、预定餐品、在线支付等操作,极大地节省了时间和精力。

此外,校园中的餐饮服务通常涉及到大量人员和订单,传统的点餐方式难以满足高峰时期的需求,容易出现混乱和错误。而基于微信小程序的点餐系统可以实现自动化点餐、订单管理和数据统计,提高了点餐效率、减少了人为错误,从而提升了整体服务质量。因此,研究基于微信小程序的校园点餐系统具有重要的现实意义。

首先,它能够提高餐厅的效率和服务质量,大大减少人力资源的浪费,节约经济成本。其次,校园扫码点餐小程序可以提供更加快捷、方便和个性化的用餐服务,提高用户体验。再次,它可以为学生提供更加健康和多样化的餐饮选择,满足不同口味的需求,并促进校园内餐厅的竞争力与发展。此外,校园扫码点餐小程序还可以提供数据分析和预测功能,对餐厅经营和用户需求进行深入的研究,为校园管理和餐饮服务提供科学决策支持。

1.2研究现状

随着移动互联网技术的发展,校园生活中的点餐行为也逐渐向线上迁移。校园点餐系统在校园中具有重要的应用价值,能够提高学生用餐的便利性和效率,减少排队等待时间,同时也为食堂管理提供了更加智能化的管理手段。在过去,校园点餐系统主要以网页版的形式存在,用户需要在电脑上访问网页进行点餐,操作相对较为繁琐。近年来,随着微信小程序的兴起,校园点餐系统也开始向微信小程序平台迁移,实现了更加便捷、快速、智能化的点餐体验。

目前,一些高校已经引入了基于微信小程序的校园点餐系统,为学生提供了更加便利的就餐服务。这些系统通过微信小程序的平台,实现了点餐、在线支付、外卖配送等功能,极大地简化了学生的用餐流程。与传统的点餐方式相比,基于微信小程序的校园点餐系统具有以下优势:

1便捷快速:学生可以通过微信小程序随时随地进行点餐,无需等待和排队,节省了用餐时间;

2智能化管理:食堂管理方可以通过系统实时监控销售情况,统计销售数据,优化菜品搭配和供应链管理;

3用户体验优化:系统可以根据用户的历史点餐记录和偏好推荐菜品,提升用户体验。

然而,目前基于微信小程序的校园点餐系统还存在一些问题和挑战,如用户需求分析不够精细、支付安全性问题、用户隐私保护等。因此,对于如何进一步完善和优化基于微信小程序的校园点餐系统,提升用户体验和系统性能,仍然具有一定的研究价值和挑战。

1.3论文主要研究内容

基于微信小程序的校园点餐系统的开发及实现,所研究的主要内容如下:

1首先是确定选题,确定好所要做的系统,并对系统的背景及现在面临的一些问题等进行系统的初步确认。

2系统确认完成后,结合系统开发的需求进行确认系统开发所使用的技术,校园点餐系统的开发使用Node.js框架MySQL数据库进行平台的搭建开发,确认好使用的技术进行技术分析,所使用的技术是否可以完成系统的实现。

3确定好系统使用的技术,进行确认系统所划分的用户触,并且根据用户触划分确定所要设计的功能模块,对校园点餐系统的设计主要划分别为注册用户商家用户和管理员,并且所使用的功能模块也相应不同,但系统的数据库实现的内容是交互的,普通用户可以随时根据自己的需求进行餐品信息搜索及下单购买,对于商家和管理员可以根据自己的权限进行在线信息的处理及操作。

4系统的功能模块确认完成后进行程序及界面的设计,设计完成后,组通过测试来判断程序是否完善,对于系统测试,要不同的用户进行不同的内容编辑及提交,及使用不同的测试方式找出程序中存在的漏洞并对程序出现的漏洞问题进行在线解决处理,如果测试系统没有任何问题时,可以将系统上传进行正式操作使用。

1.4论文组织结构

本文共分为七章,章节内容安排如下:

第一章:引言。主要介绍了课题研究的背景,国内目前相关研究现状以及本文的研究内容与主要工作。

第二章:相关技术介绍。主要对本系统使用的相关技术和开发工具进行介绍。

第三章:系统需求分析。主要从系统的用户、功能等方面进行需求分析。

第四章:系统概要设计。主要对系统框架、系统功能模块、数据库进行功能设计。

第五章:系统实现。主要介绍了系统框架搭建、系统界面的实现。

第六章:系统测试。主要对系统的部分界面进行测试并对主要功能进行测试。

第七章:总结与展望。

2 相关开发工具介绍

2.1 微信开发者工具

微信开发者工具是一款专为小程序开发而设计的应用,它不断改进,提供了便捷的操作方式,并且在开发过程中可以通过微信扫描二维码来访问,从而实现快速、准确的小程序开发和调试。

根据用户的需求,我们将采用不同的屏幕大小来制作小程序。

在完成了视图布置之后,可以通过执行编辑功能,快速更改当前的视图界面。

控制台:方便调试打印输出信息。

将代码上传至腾讯服务器,并在审核过程中填写版本号和备注信息,以确保代码的安全性和准确性。

通过查看资源文件,我们可以快速地调整相关项目的文件目录,从而实现断点调试。

使用远程调试技术,无论是在手机端还是PC端,都能够轻松地进行开发工作。

本地数据存储:显示的是本地存储的数据。

通过使用子父层级结构,我们可以更容易地进行视图调试。

微信的代码体积应该保持在2M 以内,而且在开发过程中,应该严格检查合法域名信息,并且为小程序的后台配置服务器域名。

微信开发者工具已经成为了开发过程中不可或缺的一部分,并且正在不断地改进和完善。

2.2 小程序框架以及目录结构介绍

这款微信小程序的设计旨在帮助用户快速、便捷地创建出一款拥有完全独特特色的应用。它由一套完善的框架结构,将用户界面、操作界面、功能界面等多种功能完美结合,使用户只需要一点点的操作,就能轻松实现微信小程序的创建。框架的核心功能是一个快速的数据绑定机制,它能够轻松地将用户的信息和界面进行一致性的管理。它不仅支持对用户信息的实时监控,还能够根据用户的需求,实现对界面的快速调整和优化,从而使用户能够轻松地构建强大的微信小程序。

2.3 MySQL数据库介绍

MySQL是一种开源的关系型数据库管理系统,由瑞典MySQL AB公司开发,现在由Oracle公司维护。MySQL支持多个操作系统,包括Linux、Windows、macOS等。它是一种客户端/服务器模式的数据库,提供高效、可靠、稳定的数据存储和管理服务。MySQL是目前最流行的开源关系型数据库之一,被广泛应用于Web应用程序、企业应用程序和移动应用程序等领域。

2.4 Node.js主要功能

V8引擎本身使用了一些最新的编译技术。这使得用Javascript这类脚本语言编写出来的代码运行速度获得了极大提升,又节省了开发成本。对性能的苛求是Node的一个关键因素。 Javascript是一个事件驱动语言,Node利用了这个优点,编写出可扩展性高的服务器。Node采用了一个称为“事件循环(event loop)”的架构,使得编写可扩展性高的服务器变得既容易又安全。提高服务器性能的技巧有多种多样。Node选择了一种既能提高性能,又能减低开发复杂度的架构。这是一个非常重要的特性。并发编程通常很复杂且布满地雷。Node绕过了这些,但仍提供很好的性能。

Node采用一系列“非阻塞”库来支持事件循环的方式。本质上就是为文件系统、数据库之类的资源提供接口。向文件系统发送一个请求时,无需等待硬盘(寻址并检索文件),硬盘准备好的时候非阻塞接口会通知Node。该模型以可扩展的方式简化了对慢资源的访问, 直观,易懂。尤其是对于熟悉onmouseover、onclick等DOM事件的用户,更有一种似曾相识的感觉。

虽然让Javascript运行于服务器端不是Node的独特之处,但却是其一强大功能。不得不承认,浏览器环境限制了我们选择编程语言的自由。任何服务器与日益复杂的浏览器客户端应用程序间共享代码的愿望只能通过Javascript来实现。虽然还存在其他一些支持Javascript在服务器端 运行的平台,但因为上述特性,Node发展迅猛,成为事实上的平台。

在Node启动的很短时间内,社区就已经贡献了大量的扩展库(模块)。其中很多是连接数据库或是其他软件的驱动,但还有很多是凭他们的实力制作出来的非常有用的软件。

最后,不得不提到的是Node社区。虽然Node项目还非常年轻,但很少看到对一个项目如此狂热的社区。不管是新手,还是专家,大家都围绕着项目,使用并贡献自己的能力,致力于打造一个探索、支持、分享、听取建议的乐土。

3 系统分析设计

3.1 可行性分析

可行性分析是系统分析的第一步,通过可行性分析我们可以得出系统是不是值得开发,如果系统的开发是不可信的,那么就没有必要再进行下面的操作,对于本校园点餐系统在可行性方面进行了技术、经济以及操作的分析。

3.1.1 技术可行性分析

基于微信小程序的校园点餐系统具备良好的技术可行性。小程序作为一种跨平台、轻量级且用户友好的应用形式,结合Node.js的快速开发能力,可以构建出功能强大的校园点餐系统。同时,MySQL作为可靠且广泛使用的数据库管理系统,提供了数据存储和查询的支持。

3.1.2 经济可行性分析

基于微信小程序的校园点餐系统的开发具有显著的成本优势。相较于传统的人工管理方式,系统能够自动化处理大量的数据和信息,减少了人力与时间成本。系统的运行、维护的成本相对较低,只需要投入少量的资源即可保持系统的稳定运行。而且系统的可拓展性与可维护性也降低以后系统的升级和改造成本。因此,校园点餐系统的开发在经济上是可行的。

3.1.3 操作可行性分析

在操作可行性方面,基于微信小程序的校园点餐系统具备良好的操作可行性。小程序作为一种轻量级应用形式,用户无需进行额外的安装和更新,可以直接在微信平台上访问和使用。基于小程序的界面设计通常简洁明了,易于操作和导航,提供良好的用户体验

3.2 系统流程分析

3.2.1 用户登录流程

登录模块主要满足管理员以及用户的权限登录,用户登录流程图如图3-1所示。

图3-1登录操作流程图

3.2.2 信息添加流程

用户在添加信息时,信息编号自动生成,系统会对添加的信息进行验证,验证通过则添加至数据库,添加信息成功,反之添加失败。添加信息流程如图3-2所示。

图3-2 信息添加流程图

3.2.3 信息删除流程

用户可选择要删除的信息进行信息删除操作,在删除信息时系统提示是否确定删除信息,是则删除信息成功,系统数据库将信息进行删除。删除信息流程图如图3-3所示。

图3-3 信息删除流程图

3.3 功能需求分析

(1)商家门店模块:本校园点餐系统主要的功能之一就是浏览商家门店信息,所系统中需要管理员和商家添加商家门店供用户查询,浏览,管理员和商家在此模块主要是对商家门店信息增删改查,游客实现对商家门店的查询,普通用户则实现商家门店的点赞、评论、收藏等操作。如下图3-4所示。

3-4 商家门店模块用例图

2点餐中心模块:本校园点餐系统最主要的功能就是购买美食,所系统中需要管理员添加各种餐品信息供用户查询,购买,管理员和商家在此模块主要是对点餐中心的餐品信息增删改查,游客实现对点餐中心的查询,普通用户则实现点餐中心的收藏、评论、加购立即购买等操作。如下图3-5所示。

3-5 点餐中心模块用例图

3美食资讯模块:管理员在后台可以对美食资讯及其分类进行增删改查,游客实现查看美食资讯,用户进行收藏、点赞、评论。如下图3-6所示。

3-6美食资讯模块用例图

4)用户管理模块:在前台游客和商家可以通过注册,然后参与到系统当中,商家用户在前台注册后,由管理员审核通过后才可以在系统管理端进行发布餐品数据,管理订单等。管理员可以对注册的用户进行修改、删除、查询、也可以添加新的用户。如下图3-7所示。

3-7用户管理模块用例图

5)购物管理:用户对喜欢的餐品信息可以进行购买,可以选择立即购买或者加入到购物车中进行购买,如下图3-8所示。

3-8购物管理模块用例图

6我的订单管理:在校园点餐系统中,用户商家和管理员都能够管理订单,可以对订单进行查看、删除。如下图3-9所示。

3-9订单管理模块用例图

7我的模块:我的模块是用户独有的功能,可以在“我的”管理基本信息、收藏、订单、购物车,我的用例如下图3-10所示。

3-10我的管理模块用例图

3.4 非功能性需求分析

 非功能性分析旨在评估校园点餐系统的非功能需求和性能要求。通过对性能、可靠性、安全性、可用性和扩展性等方面进行评估,确保平台能够满足用户和系统运行的要求。具体如下3-1表格中:

表3-1校园点餐系统非功能需求表

非功能性要求

说明

性能

评估响应时间、并发用户数、吞吐量等指标,以确保平台稳定高效地运行。

可靠性

评估系统的稳定性、容错能力和数据完整性,保障系统在故障情况下正常运行。

安全性

评估用户身份认证、数据加密和访问控制等,保护用户信息和交易的安全。

可用性

评估系统的稳定性、故障处理能力和用户界面友好性,提供良好的用户体验。

扩展性

评估系统的可扩展性和灵活性,以便根据需求进行功能扩展和升级。

3.5系统角色用例分析

3.5.1系统前台用户用例

基于微信小程序的校园点餐系统前台用户的主要功能是对系统信息的查看、收藏、评论以及对餐品的购买,购买的过程中需要对购物车进行管理,查看自己的订单。前台普通用户用例图如图3-11所示

3-11 校园点餐系统前台普通用户用例图

在系统前台中主要实现的是对基于微信小程序的校园点餐系统中信息的浏览,用户对信息收藏、评论以及在点餐中心中对餐品购买几个功能。

1美食资讯功能,主要实现了是对美食资讯的查看,用户进行评论、收藏、点赞,用例说明如下表所示:

3-1 美食资讯用例说明

用例名称

美食资讯

角色

用户

用例说明

对美食资讯评论

前置条件

用户登录到系统当中

后置条件

用户发表评论

基本事件流

1.进入系统登录界面

2.点击美食资讯,选择某条美食资讯查看详情

3.输入评论内容

4.点击提交按钮,发表评论

扩展流程

3a.用户没有登录成功

异常事件流

3a.输入评论内容为空

其他

2点餐中心购买功能,本功能是系统的主要功能,主要是实现在线购买功能,用例说明如下标所示:

3-2 点餐中心购买用例说明

用例名称

点餐中心购买

角色

用户

用例说明

对餐品加入购物车购买或者立即购买

前置条件

用户登录到系统当中

后置条件

对餐品加入购物车购买或者立即购买

基本事件流

1.进入系统登录界面

2.点击点餐中心,选择某条餐品信息查看详情

3.加入购物车或者立即购买

4.输入订单信息提交订单

扩展流程

3a.现在支付方式

异常事件流

3a.用户没有登录

其他

3.5.2系统后端用例

用户不能进入后台,商家通过管理员审核通过的账号信息进入后台,可以对商家门店管理、商城管理(点餐中心、订单列表)进行管理;后台管理员进入以后可以对系统用户、菜系信息管理、商家门店管理、系统管理、网站公告管理、资源管理、商城管理(点餐中心、分类列表、订单列表)进行管理。

商家用例图如图3-12所示

3-12 校园点餐系统后台商家用户用例图

后台管理员用例图如图3-13所示

3-13 校园点餐系统后台管理员用户用例图

后台管理员主要实现了是对用户的信息管理,对菜系信息和展示在前台的商家门店信息的管控,同时对系统轮播图、网站公告和美食资讯信息的增删改查还可以对商城管理的点餐中心、分类列表、订单列表进行管理。后台管理员的用例说明如下表所示:

表3-3 后台管理用例说明

用例名称

后台管理

角色

管理员

用例说明

对前端显示的信息进行管理

前置条件

管理员登录进入后台管理页面

后置条件

基本事件流

1.管理员登录进入后台管理界面

2.点击左侧选择相应功能板块

3.选择所要操作的数据

4.点击选择的内容进行增加/删除/修改/查找

5.点击立即保存按钮

扩展流程

异常事件流

其他

4 系统概要设计

4.1系统架构设计

在系统架构设计中,我们将确定系统的整体结构和组件之间的关系。这包括选择适当的架构风格,划分系统的层次结构,并定义各个模块的职责和交互方式。架构图如下图4-1所示。

图4-1校园点餐系统架构设计图

表现层(Presentation Layer):负责与用户进行交互,将系统的功能和数据以易于理解和操作的方式展示给用户。通常包括用户界面、页面设计和用户输入验证等。

业务逻辑层(Business Logic Layer):处理系统的核心业务逻辑,包括对用户请求的处理、业务规则的执行以及数据的处理和转换。它独立于表现层和数据层,实现了业务逻辑的封装和复用。

数据层(Data Layer):负责数据的存储、访问和管理,包括数据库和持久化机制。数据层提供了对数据的增删改查操作,并与业务逻辑层进行交互,使系统能够有效地存储和检索数据。

这三个层次相互独立,通过明确的接口和协议进行通信,实现了系统的模块化和可扩展性。表现层负责将用户的请求传递给业务逻辑层,业务逻辑层处理请求并返回结果,最后数据层负责与数据库交互并提供数据支持。这种分层架构有助于实现系统的可维护性、灵活性和可测试性。

4.2系统功能结构设计

通过整体功能模块设计,我们将根据需求分析的结果,将系统的功能划分为不同的模块。每个模块负责实现特定的功能,并与其他模块进行协作。我们将详细定义每个模块的输入、输出、处理逻辑和相互依赖关系。具体的功能模块图如图4-2所示。

4-2 系统功能结构

4.3数据库概念结构设计

数据库概念结构设计主要涉及数据库的实体和实体之间的关系。通过实体-关系模型或者其他适当的模型,我们将定义系统中涉及的各个实体以及它们之间的联系。

下面是整个校园点餐系统中主要的数据库表总E-R实体关系图。

4-3 校园点餐系统总E-R关系图

4.4数据库逻辑结构设计

通过上一小节中校园点餐系统中总E-R关系图上得出一共需要创建很多个数据表。在此我主要罗列几个主要的数据库表结构设计。

表access_token (登陆访问时长)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

token_id

int

10

0

N

Y

临时访问牌ID

2

token

varchar

64

0

Y

N

临时访问牌

3

info

text

65535

0

Y

N

4

maxage

int

10

0

N

N

2

最大寿命:默认2小时

5

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

6

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

7

user_id

int

10

0

N

N

0

用户编号:

表address (商家门店:)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

address_id

int

10

0

N

Y

商家门店:

2

name

varchar

32

0

Y

N

姓名:

3

phone

varchar

13

0

Y

N

手机:

4

postcode

varchar

8

0

Y

N

邮编:

5

address

varchar

255

0

N

N

地址:

6

user_id

mediumint

8

0

N

N

用户ID:[0,8388607]用户获取其他与用户相关的数据

7

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

8

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

9

default

bit

1

0

N

N

0

默认判断

表article (文章:用于内容管理系统的文章)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

article_id

mediumint

8

0

N

Y

文章id:[0,8388607]

2

title

varchar

125

0

N

Y

标题:[0,125]用于文章和html的title标签中

3

type

varchar

64

0

N

N

0

文章分类:[0,1000]用来搜索指定类型的文章

4

hits

int

10

0

N

N

0

点击数:[0,1000000000]访问这篇文章的人次

5

praise_len

int

10

0

N

N

0

点赞数

6

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

7

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

8

source

varchar

255

0

Y

N

来源:[0,255]文章的出处

9

url

varchar

255

0

Y

N

来源地址:[0,255]用于跳转到发布该文章的网站

10

tag

varchar

255

0

Y

N

标签:[0,255]用于标注文章所属相关内容,多个标签用空格隔开

11

content

longtext

2147483647

0

Y

N

正文:文章的主体内容

12

img

varchar

255

0

Y

N

封面图

13

description

text

65535

0

Y

N

文章描述

表article_type (文章分类)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

type_id

smallint

5

0

N

Y

分类ID:[0,10000]

2

display

smallint

5

0

N

N

100

显示顺序:[0,1000]决定分类显示的先后顺序

3

name

varchar

16

0

N

N

分类名称:[2,16]

4

father_id

smallint

5

0

N

N

0

上级分类ID:[0,32767]

5

description

varchar

255

0

Y

N

描述:[0,255]描述该分类的作用

6

icon

text

65535

0

Y

N

分类图标:

7

url

varchar

255

0

Y

N

外链地址:[0,255]如果该分类是跳转到其他网站的情况下,就在该URL上设置

8

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

9

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

表auth (用户权限管理)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

auth_id

int

10

0

N

Y

授权ID:

2

user_group

varchar

64

0

Y

N

用户组:

3

mod_name

varchar

64

0

Y

N

模块名:

4

table_name

varchar

64

0

Y

N

表名:

5

page_title

varchar

255

0

Y

N

页面标题:

6

path

varchar

255

0

Y

N

路由路径:

7

position

varchar

32

0

Y

N

位置:

8

mode

varchar

32

0

N

N

_blank

跳转方式:

9

add

tinyint

3

0

N

N

1

是否可增加:

10

del

tinyint

3

0

N

N

1

是否可删除:

11

set

tinyint

3

0

N

N

1

是否可修改:

12

get

tinyint

3

0

N

N

1

是否可查看:

13

field_add

text

65535

0

Y

N

添加字段:

14

field_set

text

65535

0

Y

N

修改字段:

15

field_get

text

65535

0

Y

N

查询字段:

16

table_nav_name

varchar

500

0

Y

N

跨表导航名称:

17

table_nav

varchar

500

0

Y

N

跨表导航:

18

option

text

65535

0

Y

N

配置:

19

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

20

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

表cart (购物车)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

cart_id

int

10

0

N

Y

购物车ID:

2

title

varchar

64

0

Y

N

标题:

3

img

varchar

255

0

N

N

0

图片:

4

user_id

int

10

0

N

N

0

用户ID:

5

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

6

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

7

state

int

10

0

N

N

0

状态:使用中,已失效

8

price

double

9

2

N

N

0.00

单价:

9

price_ago

double

9

2

N

N

0.00

原价:

10

price_count

double

11

2

N

N

0.00

总价:

11

num

int

10

0

N

N

1

数量:

12

goods_id

mediumint

8

0

N

N

商品id:[0,8388607]

13

type

varchar

64

0

N

N

未分类

商品分类:

14

description

varchar

255

0

Y

N

描述:[0,255]用于产品规格描述

表collect (收藏)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

collect_id

int

10

0

N

Y

收藏ID:

2

user_id

int

10

0

N

N

0

收藏人ID:

3

source_table

varchar

255

0

Y

N

来源表:

4

source_field

varchar

255

0

Y

N

来源字段:

5

source_id

int

10

0

N

N

0

来源ID:

6

title

varchar

255

0

Y

N

标题:

7

img

varchar

255

0

Y

N

封面:

8

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

9

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

表comment (评论)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

comment_id

int

10

0

N

Y

评论ID:

2

user_id

int

10

0

N

N

0

评论人ID:

3

reply_to_id

int

10

0

N

N

0

回复评论ID:空为0

4

content

longtext

2147483647

0

Y

N

内容:

5

nickname

varchar

255

0

Y

N

昵称:

6

avatar

varchar

255

0

Y

N

头像地址:[0,255]

7

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

8

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

9

source_table

varchar

255

0

Y

N

来源表:

10

source_field

varchar

255

0

Y

N

来源字段:

11

source_id

int

10

0

N

N

0

来源ID:

表cuisine_information (菜系信息)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

cuisine_information_id

int

10

0

N

Y

菜系信息ID

2

cuisine_name

varchar

64

0

Y

N

菜系名称

3

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

4

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表goods (商品信息)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

goods_id

mediumint

8

0

N

Y

产品id:[0,8388607]

2

title

varchar

125

0

Y

N

标题:[0,125]用于产品和html的<title>标签中

3

img

text

65535

0

Y

N

封面图:用于显示于产品列表页

4

description

varchar

255

0

Y

N

描述:[0,255]用于产品规格描述

5

price_ago

double

8

2

N

N

0.00

原价:[1]

6

price

double

8

2

N

N

0.00

卖价:[1]

7

sales

int

10

0

N

N

0

销量:[0,1000000000]

8

inventory

int

10

0

N

N

0

商品库存

9

type

varchar

64

0

N

N

商品分类:

10

hits

int

10

0

N

N

0

点击量:[0,1000000000]访问这篇产品的人次

11

content

longtext

2147483647

0

Y

N

正文:产品的主体内容

12

img_1

text

65535

0

Y

N

主图1:

13

img_2

text

65535

0

Y

N

主图2:

14

img_3

text

65535

0

Y

N

主图3:

15

img_4

text

65535

0

Y

N

主图4:

16

img_5

text

65535

0

Y

N

主图5:

17

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

18

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

19

customize_field

text

65535

0

Y

N

自定义字段

20

source_table

varchar

255

0

Y

N

来源表:

21

source_field

varchar

255

0

Y

N

来源字段:

22

source_id

int

10

0

N

N

0

来源ID:

23

user_id

int

10

0

Y

N

0

添加人

表goods_type (商品类型)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

type_id

int

10

0

N

Y

商品分类ID:

2

father_id

smallint

5

0

N

N

0

上级分类ID:[0,32767]

3

name

varchar

255

0

Y

N

商品名称:

4

desc

varchar

255

0

Y

N

描述:

5

icon

varchar

255

0

Y

N

图标:

6

source_table

varchar

255

0

Y

N

来源表:

7

source_field

varchar

255

0

Y

N

来源字段:

8

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

9

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

表hits (用户点击)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

hits_id

int

10

0

N

Y

点赞ID:

2

user_id

int

10

0

N

N

0

点赞人:

3

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

4

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

5

source_table

varchar

255

0

Y

N

来源表:

6

source_field

varchar

255

0

Y

N

来源字段:

7

source_id

int

10

0

N

N

0

来源ID:

表logistics_delivery (物流配送)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

logistics_delivery_id

int

10

0

N

Y

物流配送ID

2

order_number

varchar

64

0

Y

N

订单号

3

product_name

varchar

64

0

Y

N

商品名称

4

purchase_quantity

varchar

64

0

Y

N

购买数量

5

total_transaction_amount

double

11

2

Y

N

0.00

交易总额

6

the_date_of_issuance

date

10

0

Y

N

发货日期

7

delivery_number

varchar

30

0

Y

N

配送订单

8

ordinary_users

int

10

0

Y

N

0

普通用户

9

shipping_address

varchar

64

0

Y

N

商家门店

10

delivery_status

varchar

64

0

Y

N

配送状态

11

signing_status

varchar

64

0

Y

N

签收状态

12

recommend

int

10

0

N

N

0

智能推荐

13

contact_name

varchar

255

0

Y

N

联系人名字

14

merchant_id

int

10

0

Y

N

商家id

15

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

16

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表merchant_stores (商家门店)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

merchant_stores_id

int

10

0

N

Y

商家门店ID

2

merchant_users

int

10

0

Y

N

0

商家用户

3

merchant_name

varchar

64

0

Y

N

商家名称

4

license_code

varchar

64

0

Y

N

执照编码

5

store_poster

varchar

255

0

Y

N

门店海报

6

dishes_and_cuisines

varchar

64

0

Y

N

菜品菜系

7

merchant_introduction

text

65535

0

Y

N

商家简介

8

praise_len

int

10

0

N

N

0

点赞数

9

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

10

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表merchant_users (商家用户)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

merchant_users_id

int

10

0

N

Y

商家用户ID

2

merchant_name

varchar

64

0

Y

N

商家名称

3

license_code

varchar

64

0

N

N

执照编码

4

examine_state

varchar

16

0

N

N

未审核

审核状态

5

user_id

int

10

0

N

N

0

用户ID

6

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

7

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表notice (公告)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

notice_id

mediumint

8

0

N

Y

公告id:

2

title

varchar

125

0

N

N

标题:

3

content

longtext

2147483647

0

Y

N

正文:

4

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

5

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

表order (订单)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

order_id

int

10

0

N

Y

订单ID:

2

order_number

varchar

64

0

Y

N

订单号:

3

goods_id

mediumint

8

0

N

N

商品id:[0,8388607]

4

title

varchar

255

0

Y

N

商品标题:

5

img

varchar

255

0

Y

N

商品图片:

6

price

double

10

2

N

N

0.00

价格:

7

price_ago

double

10

2

N

N

0.00

原价:

8

num

int

10

0

N

N

1

数量:

9

price_count

double

8

2

N

N

0.00

总价:

10

norms

varchar

255

0

Y

N

规格:

11

type

varchar

64

0

N

N

未分类

商品分类:

12

contact_name

varchar

32

0

Y

N

联系人姓名:

13

contact_email

varchar

125

0

Y

N

联系人邮箱:

14

contact_phone

varchar

11

0

Y

N

联系人手机:

15

contact_address

varchar

255

0

Y

N

收件地址:

16

postal_code

varchar

9

0

Y

N

邮政编码:

17

user_id

int

10

0

N

N

0

买家ID:

18

merchant_id

mediumint

8

0

N

N

0

商家ID:

19

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

20

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

21

description

varchar

255

0

Y

N

描述:[0,255]用于产品规格描述

22

state

varchar

16

0

N

N

待付款

订单状态:待付款,待发货,待签收,已签收,待退款,已退款,已拒绝,已完成

23

remark

text

65535

0

Y

N

订单备注

24

delivery_state

varchar

16

0

Y

N

未配送

发货状态:未配送,已配送

25

vip_discount

double

11

2

Y

N

0.00

折扣

表praise (点赞)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

praise_id

int

10

0

N

Y

点赞ID:

2

user_id

int

10

0

N

N

0

点赞人:

3

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

4

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

5

source_table

varchar

255

0

Y

N

来源表:

6

source_field

varchar

255

0

Y

N

来源字段:

7

source_id

int

10

0

N

N

0

来源ID:

8

status

bit

1

0

N

N

1

点赞状态:1为点赞,0已取消

表recommended_dishes (菜品推荐)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

recommended_dishes_id

int

10

0

N

Y

菜品推荐ID

2

merchant_users

int

10

0

Y

N

0

商家用户

3

merchant_name

varchar

64

0

Y

N

商家名称

4

praise_len

int

10

0

N

N

0

点赞数

5

cart_title

varchar

125

0

Y

N

标题:[0,125]用于产品html的标签中

6

cart_img

text

65535

0

Y

N

封面图:用于显示于产品列表页

7

cart_description

varchar

255

0

Y

N

描述:[0,255]用于产品规格描述

8

cart_price_ago

double

8

2

N

N

0.00

原价:[1]

9

cart_price

double

8

2

N

N

0.00

卖价:[1]

10

cart_inventory

int

10

0

N

N

0

商品库存

11

cart_type

varchar

64

0

N

N

未分类

商品分类:

12

cart_content

longtext

2147483647

0

Y

N

正文:产品的主体内容

13

cart_img_1

text

65535

0

Y

N

主图1:

14

cart_img_2

text

65535

0

Y

N

主图2:

15

cart_img_3

text

65535

0

Y

N

主图3:

16

cart_img_4

text

65535

0

Y

N

主图4:

17

cart_img_5

text

65535

0

Y

N

主图5:

18

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

19

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表registered_users (注册用户)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

registered_users_id

int

10

0

N

Y

注册用户ID

2

user_name

varchar

64

0

Y

N

用户姓名

3

user_gender

varchar

64

0

Y

N

用户性别

4

examine_state

varchar

16

0

N

N

已通过

审核状态

5

user_id

int

10

0

N

N

0

用户ID

6

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

创建时间

7

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间

表slides (轮播图)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

slides_id

int

10

0

N

Y

轮播图ID:

2

title

varchar

64

0

Y

N

标题:

3

content

varchar

255

0

Y

N

内容:

4

url

varchar

255

0

Y

N

链接:

5

img

varchar

255

0

Y

N

轮播图:

6

hits

int

10

0

N

N

0

点击量:

7

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

8

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

表upload (文件上传)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

upload_id

int

10

0

N

Y

上传ID

2

name

varchar

64

0

Y

N

文件名

3

path

varchar

255

0

Y

N

访问路径

4

file

varchar

255

0

Y

N

文件路径

5

display

varchar

255

0

Y

N

显示顺序

6

father_id

int

10

0

Y

N

0

父级ID

7

dir

varchar

255

0

Y

N

文件夹

8

type

varchar

32

0

Y

N

文件类型

表user (用户账户:用于保存用户登录信息)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

user_id

mediumint

8

0

N

Y

用户ID:[0,8388607]用户获取其他与用户相关的数据

2

state

smallint

5

0

N

N

1

账户状态:[0,10](1可用|2异常|3已冻结|4已注销)

3

user_group

varchar

32

0

Y

N

所在用户组:[0,32767]决定用户身份和权限

4

login_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

上次登录时间:

5

phone

varchar

11

0

Y

N

手机号码:[0,11]用户的手机号码,用于找回密码时或登录时

6

phone_state

smallint

5

0

N

N

0

手机认证:[0,1](0未认证|1审核中|2已认证)

7

username

varchar

16

0

N

N

用户名:[0,16]用户登录时所用的账户名称

8

nickname

varchar

16

0

Y

N

昵称:[0,16]

9

password

varchar

64

0

N

N

密码:[0,32]用户登录所需的密码,由6-16位数字或英文组成

10

email

varchar

64

0

Y

N

邮箱:[0,64]用户的邮箱,用于找回密码时或登录时

11

email_state

smallint

5

0

N

N

0

邮箱认证:[0,1](0未认证|1审核中|2已认证)

12

avatar

varchar

255

0

Y

N

头像地址:[0,255]

13

open_id

varchar

255

0

Y

N

针对获取用户信息字段

14

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

15

vip_level

varchar

255

0

Y

N

会员等级

16

vip_discount

double

11

2

Y

N

0.00

会员折扣

表user_group (用户组:用于用户前端身份和鉴权)

编号

名称

数据类型

长度

小数位

允许空值

主键

默认值

说明

1

group_id

mediumint

8

0

N

Y

用户组ID:[0,8388607]

2

display

smallint

5

0

N

N

100

显示顺序:[0,1000]

3

name

varchar

16

0

N

N

名称:[0,16]

4

description

varchar

255

0

Y

N

描述:[0,255]描述该用户组的特点或权限范围

5

source_table

varchar

255

0

Y

N

来源表:

6

source_field

varchar

255

0

Y

N

来源字段:

7

source_id

int

10

0

N

N

0

来源ID:

8

register

smallint

5

0

Y

N

0

注册位置:

9

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

创建时间:

10

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新时间:

5 系统的实现

5.1前台用户功能模块

5.1.1 前台首页界面

前台首页界面是用户访问系统的入口页面,它应该展示平台的主要功能和特色,并提供导航链接以便用户浏览和搜索。首页界面的设计应注重页面的美观性和用户体验,同时也需要考虑页面的加载速度和响应性能。其主界面展示如下图5-1所示。

图5-1 前台首页界面图

5.1.2注册界面

用户注册界面用于新用户进行账号注册,用户需要填写必要的个人信息并选择合适的用户名和密码。注册界面应该进行输入验证和数据格式检查,确保用户提供有效的信息。界面如下图所示。注册流程图如图5-2所示,注册界面展示如下图5-3所示。

5-2注册流程图

图5-3 前台注册界面图

注册关键代码如下所示。

Register.prototype.index = async function(ctx) {

var group_list = await $.services["user_group"].get_list({}, Object.assign({}, this.config));

return await ctx.render(this.config.tpl + "index.html", {

group_list

});

};

Register.prototype.api = async function(ctx) {

var user = $.services.user;

var body = ctx.request.body;

var username = body.username;

var obj = await user.get_obj({

username

});

if (obj) {

return {

error: {

code: 70000,

message: "账户名已存在",

},

};

} else {

var password = md5(body.password);

var nickname = body.nickname;

var user_group = body.user_group;

var email = body.email;

var email_state= body.hasOwnProperty('email_state') ? body.email_state : 0;

var phone = body.phone;

var phone_state= body.hasOwnProperty('phone_state') ? body.phone_state : 0;

var avatar = body.avatar;

var bl_reg = await user.add({

username,

password,

nickname,

user_group,

email,

email_state,

phone,

phone_state,

avatar

});

if (bl_reg) {

return {

result: "注册成功"

};

} else {

return {

error: {

code: 70000,

message: "注册失败",

},

};

}

}

};

5.1.3登录界面

用户登录界面用于已注册用户进行账号登录,用户需要输入正确的用户名和密码才能成功登录系统。登录界面应对用户的输入进行验证,并提供密码找回或重新注册的选项。界面如下图所示。用户登录流程如图5-4所示,登录界面如下图5-5所示。

5-4 登录流程图

图5-5普通用户登录界面图

登录的逻辑代码如下所示。

const md5 = require("md5");

var Controller = require("../core/controller.js");

class Login extends Controller {

constructor(config) {

super(

Object.assign({

tpl: "./login/",

service: "user",

},

config

)

);

}

}

Login.prototype.api = async function(ctx) {

var body = ctx.request.body;

var obj = await $.services["user"].get_obj({

username: body.username

},{like:false});

if (obj) {

var group = await $.services["user_group"].get_obj({

name:obj.user_group

})

if (group){

if (group.name!=="管理员"){

var sql = "select examine_state from "+ group.source_table +" WHERE user_id = " + obj.user_id;

var userExamine = await $.mysql.run(sql);

if (userExamine && userExamine.length > 0 && userExamine[0].examine_state!=="已通过"){

return {

error: {

code: 70000,

message: "该用户审核未通过"

},

};

}

}

if (obj.state!==1){

return {

error: {

code: 70000,

message: "用户非可用状态,不能登录"

},

};

}

var password = md5(body.password);

if (password === obj.password) {

ctx.session.user = obj;

var date = Date.parse(new Date());

var token = md5(obj.user_id + "_" + date);

await $.services["access_token"].add({

token,

info: JSON.stringify(obj),

user_id:obj.user_id

});

obj.token = token;

return {

result: {obj}

};

} else {

return {

error: {

code: 70000,

message: "密码错误"

},

};

}

}else {

return {

error: {

code: 70000,

message: "用户组不存在"

},

};

}

} else {

return {

error: {

code: 70000,

message: "账户不存在"

}

};

}

};

5.1.4 美食资讯界面

美食资讯:提供餐饮行业相关的知识、建议和文章,涵盖美食做法、菜系介绍、商家门店推荐等方面,帮助用户便捷查看最新餐饮相关资讯美食资讯列表界面如下图5-6所示。

图5-6美食资讯列表界面图

查询美食资讯列表的逻辑代码如下所示。

Service.prototype.get_list = async function(query, config) {

var sql = $.mysql.toGetSql(query, Object.assign({}, this.config, config || {}));

return await this.run(sql);

};

Service.prototype.get_list = async function(query, config) {

var sql = $.mysql.toGetSql(query, Object.assign({}, this.config, config || {}));

return await this.run(sql);

};

5.1.5 商家门店详情界面

当用户点击“商家门店”菜单按钮时,可以选择感兴趣的商家门店信息,并点击以进入详细介绍界面查看包括商家用户、商家名称、执照编码、门店海报、菜品菜系、商家简介等信息,并进行点赞、收藏和评论操作商家门店详情展示页面如图5-7所示。

图5-7 商家门店详情界面图

5.1.6 点餐中心详情界面

当用户点击“点餐中心”菜单按钮时,他们将能够在界面上浏览管理员在后台发布的所有点餐中心信息。该界面支持通过关键词搜索来筛选和查找适合自己的餐品信息。用户可以选择感兴趣的餐品信息,并点击以进入详细介绍界面。此外,用户还可以进行加购、立即购买、点赞、收藏和评论等操作。这样的点餐中心详情界面为用户提供了便捷的方式来浏览、筛选和选择合适的餐品信息,并与之进行交易点餐中心详情展示页面如图5-8所示。

图5-8 点餐中心详情界面图

查询单个餐品数据关键代码如下所示。

Service.prototype.get_obj = async function(query, config) {

var sql = $.mysql.toGetSql(query, Object.assign({}, this.config, config || {}));

var arr = await this.run(sql);

if (arr.length > 0) {

return arr[0];

}

return null;

};

Controller.prototype.get_obj = async function(ctx) {

var query = ctx.request.query;

var {

field,

sqlwhere

} = query;

delete query.field;

delete query.sqlwhere;

var result = await this.service.get_obj(

query,

Object.assign({}, this.config, {

field,

sqlwhere

})

);

if (this.service.error) {

return {

error: this.service.error

};

}

if (this.config.interact) {

m = await this.interact_list(ctx, result);

}

return {

result: {obj: result},

};

};

5.1.7购物车管理界面

当用户点击“购物”按钮则会显示自己加入购物车的餐品信息,然后对其进行购买管理,购买流程图如图5-9所示购物界面如下图5-10所示。

图5-9购买流程图

图5-10 购物管理界面图

购物车数量管理关键代码如下所示。

Controller.prototype.count = async function(ctx) {

var result = await this.service.count(ctx.request.query, this.config);

if (this.service.error) {

return {

error: this.service.error,

};

}

return {

result,

};

};

5.2后台功能模块

5.2.1 商家用户模块界面

商家用户登录后台可以对自己的商家门店信息进行管理,可以添加新的商家门店信息商家门店信息添加界面如下图5-11所示。

图5-11商家门店信息添加界面图

添加商店门店信息关键代码如下所示。

Controller.prototype.add = async function(ctx) {

var result = await this.service.add(ctx.request.body, this.config);

if (this.service.error) {

return {

error: this.service.error,

};

}

return {

result,

};

};

商家用户在商城管理模块可以对与自己门店相关的展示在前台点餐中心的信息,以及用户提交的订单信息进行管理,也可以管控用户的评论信息。商城管理界面如下图5-12所示。

图5-12商城管理界面图

5.2.2 系统用户界面

后台管理人员是可以对前台注册的普通用户和后台商家用户、管理员进行管理。系统用户管理界面如下图5-13所示。

图5-13系统用户管理界面图

修改用户信息关键代码如下所示。

Service.prototype.set = async function(query, body, config) {

var sql = $.mysql.toSetSql(query, body, Object.assign({}, this.config, config || {}));

var ret = await this.run(sql);

return ret;

};

5.2.3菜系信息管理界面

管理员点击“菜系信息管理”会显示出所有的菜系信息,支持输入菜系名称查询菜系信息,也可以添加新的菜系信息。菜系信息管理界面如下图5-14所示。

图5-14菜系信息管理界面图

5.2.4 系统管理界面

管理人员在“系统管理”这一菜单下是可以对校园点餐系统内展示的轮播图进行添加修改的。系统管理界面如下图5-15所示。

图5-15系统管理界面图

上传轮播图关键代码如下所示。

Controller.prototype.upload = async function(ctx) {

var req = ctx.request;

var query = req.query;

var url = "";

if (req.files && req.files.file) {

var f = req.files.file;

const render = fs.createReadStream(f.path);

var name = f.name;

var dir = f.dir || "";

var file = _dir + dir + name;

try {

if (fs.existsSync(file)) {

var arr = name.split(".");

name = arr[0];

var extension = arr[arr.length - 1];

var num = 10000;

for (var i = 0; i < num; i++) {

var na = name + "_" + (i + 1) + "." + extension;

file = path.join(_dir, na);

if (!fs.existsSync(file)) {

name = na;

break;

}

}

}

const upStream = fs.createWriteStream(file);

render.pipe(upStream);

url = _path + name;

} catch (e) {

console.log("上传失败:", e);

}

return {

result: {

url

}

};

} else {

return {

code: 10000,

message: "上传的文件(file)不能为空!",

};

}

};

5.2.5 资源管理界面

后台管理人员是可以对美食资讯以及资讯分类的分类进行增删改查操作。美食资讯界面如下图5-16所示。

图5-16美食资讯理界面图

5.2.6 点餐中心管理界面

后台管理人员对校园点餐系统内的不同分类下的点餐中心信息进行维护和管理的,也可以对用户提交的关于点餐中心的评论信息进行管控。点餐中心管理界面如下图5-17所示。

图5-17点餐中心管理界面图

6系统的测试

6.1 测试的目的

测试目的是为了验证系统的功能、性能和稳定性,以确保系统在实际应用中能够达到预期的要求。通过测试,可以发现潜在的问题和缺陷,并及时进行修复和改进。测试还可以评估系统的可靠性、安全性和用户体验,以提供一个高质量和可信赖的产品。此外,测试也有助于验证系统是否满足用户需求和预期,是否符合相应的标准和规范。总之,测试的目的是为了确保系统的质量和可靠性,从而为用户提供良好的使用体验和价值。

6.2 系统部分测试

表6-1用户注册测试用例

测试编号

测试内容

预期结果

TC-001

输入有效信息

注册成功,跳转到登录页面

TC-002

输入已存在账号

显示账号已存在的提示信息

TC-003

输入无效信息

显示注册失败的提示信息,要求重新输入有效信息

表6-2用户登录测试用例

测试编号

测试内容

预期结果

TC-004

输入正确的账号密码

登录成功,跳转到个人主页

TC-005

输入错误的账号密码

显示登录失败的提示信息,要求重新输入正确的账号密码

表6-3 修改密码测试用例

测试编号

测试内容

预期结果

TC-006

输入有效密码

密码修改成功,显示修改成功的提示信息

TC-007

输入无效密码

显示密码无效的提示信息,要求重新输入有效密码

TC-008

输入错误原密码

显示原密码错误的提示信息,要求重新输入正确原密码

表6-4 商家门店添加测试用例

测试编号

测试内容

预期结果

TC-009

输入有效的商家门店信息

商家门店添加成功,显示添加成功的提示信息

TC-010

输入无效的商家门店信息

显示添加失败的提示信息,要求重新输入有效信息

表6-5 查看点餐中心测试用例

测试编号

测试内容

预期结果

TC-014

点击查看点餐中心

显示点餐中心页面,展示相关的餐品名称、价格、图片等内容

TC-015

选择其他分类

显示所选分类下的相关点餐中心信息等内容

TC-016

无可用点餐中心

显示暂无点餐中心的提示信息,提醒用户重新选择分类

6.3 系统测试结果

综上所述,校园点餐系统在功能测试中表现良好,通过了所有测试用例。系统提供的用户注册、登录、修改密码、商家门店添加、查看点餐中心等主要功能都能正常运行,并能够给出预期的提示信息和结果。然而,为了确保系统的全面稳定性和质量,仍建议进行更多的综合性测试,包括性能测试、安全性测试和用户体验测试等,以进一步验证和改进系统的功能和性能。

结论

本研究设计并实现了基于微信小程序的校园点餐系统。通过对系统进行功能测试和评估,得出以下结论:该系统在功能上经过验证,用户注册、登录、购物车、点餐中心购买商家门店浏览美食资讯管理等功能都能正常运行;技术上具备稳定性和可扩展性,小程序提供跨平台应用,Node.js框架简化开发,MySQL数据库支持数据存储与查询;从经济角度看,Node.js和MySQL均为免费且开源;操作上易用性好,校园点餐系统界面简洁明了,Node.js的自动化部署与MySQL的管理工具提供便捷操作。

综上所述,校园点餐系统在功能、技术、经济和操作上均具有优势。该系统在提高用户点餐便捷性的同时,也为商家提供了一种在线销售的渠道,促进了餐饮行业的发展。未来可以进一步扩展功能和优化性能,以满足用户需求并提供更好的用户体验。

参考文献

[1]张乐.高校食堂自助点餐系统设计与实现[J].电脑与信息技术,2024,32(02):51-53.DOI:10.19414/j.cnki.1005-1228.2024.02.009.

[2]QianJun L ,JingJing Z ,RuiChao Y , et al.WeChat mini program in laboratory biosafety education among medical students at Guangzhou Medical University: a mixed method study of feasibility and usability[J].BMC Medical Education,2024,24(1):305-305.

[3]Xiao J ,Zhou H ,Lei Q , et al.Attention-Mechanism-Based Face Feature Extraction Model for WeChat Applet on Mobile Devices[J].Electronics,2024,13(1):

[4]Kabamba M H ,Khouzam M ,Dagenais R M .Vnode: Low-Overhead Transparent Tracing of Node.js-Based Microservice Architectures[J].Future Internet,2023,16(1):

[5]王馗,吴勇灵.基于微信小程序的点餐系统设计与实现[J].现代信息科技,2023,7(22):30-35+39.DOI:10.19850/j.cnki.2096-4706.2023.22.007.

[6]苏兵.基于微服务的校园点餐系统后台的设计与实现[J].电脑与电信,2023,(11):23-28.DOI:10.15966/j.cnki.dnydx.2023.11.008.

[7]陈海燕,常莹,张燕宁.基于Android系统的校园点餐系统中不同数据存储方式的教学研究[J].电脑编程技巧与维护,2023,(09):57-60.DOI:10.16184/j.cnki.comprg.2023.09.012.

[8]张祎萌,顾丹彤,刘少杰,等.基于校园“智慧点餐”系统的膳食大数据准确性评价[C]//亚洲营养学会联合会,中国营养学会.Abstract Book of the 14th Asian Congress of Nutrition--Food  Nutrition.复旦大学公共卫生学院;复旦大学健康传播研究所;复旦大学附属眼耳鼻喉科医院;,2023:1.DOI:10.26914/c.cnkihy.2023.076164.

[9]王侠,汪进敏,师瑜,等.“快吃”微信点餐小程序的设计与运营构想[J].中国质量万里行,2023,(02):62-65.

[10]种倩倩,孙丽英,陈滨,等.基于微信小程序的点餐系统的设计与开发[J].电脑知识与技术,2022,18(19):66-69+73.DOI:10.14004/j.cnki.ckt.2022.1307.

[11]谷研硕,时振涛,孙申英,等.基于内容推荐算法的点餐系统的设计与实现[J].电脑知识与技术,2022,18(10):48-49.DOI:10.14004/j.cnki.ckt.2022.0815.

[12]宁功林.基于微信小程序的大学校园点餐管理系统设计与实现[J].华东科技,2022,(02):77-79.

[13]陈帅.微信点餐系统小程序的设计与实现[J].电子技术与软件工程,2021,(24):30-31.

[14]Christoforos N ,Panagiotis B ,Dimitris A , et al.NodeXP: NOde.js server-side JavaScript injection vulnerability DEtection and eXPloitation[J].Journal of Information Security and Applications,2021,58

[15]李昊.基于微信小程序的智能推荐点餐系统的设计与实现[D].南京邮电大学,2020.DOI:10.27251/d.cnki.gnjdc.2020.000283.

[16]雷少玲.基于Node.js为后端的微信小程序授权登录的探究与实现[J].电子制作,2020,(22):42-44.DOI:10.16589/j.cnki.cn11-3571/tn.2020.22.015.

[17]孙瑜霞,王泽元,刘硕洲,等.关于高职“校园一点通”微信点餐系统的构建研究[J].数码世界,2020,(09):33-34.

[18]张钊源,刘晓瑜,鞠玉霞.Node.js后端技术初探[J].中小企业管理与科技(上旬刊),2020,(08):193-194.

[19]李新锦,鲁志萍,刘苑如.基于微信小程序的校园点餐系统的设计[J].电脑知识与技术,2020,16(07):50-51+56.DOI:10.14004/j.cnki.ckt.2020.0756.

[20]黄朝富,姬小波,吕明,等.基于微信平台的校园点餐系统的设计与实现[J].工业控制计算机,2020,33(01):112-113+127.

致谢

在完成本研究工作过程中,我们要向指导老师表示衷心的感谢。感谢老师在选题、需求分析、系统设计和实现等方面给予的细致指导和支持。老师的专业知识和经验对我们的研究工作起到了重要的指导作用。此外,还要感谢师兄师姐和同学们,他们在技术问题上给予了很多帮助和建议。感谢他们的悉心指导和无私分享,使我们能够更好地完成研究工作。最后,要感谢家人和朋友们对我们学业上的理解和支持。感谢他们的鼓励和陪伴,给予了我们坚持下去的动力。

感谢所有为本研究工作做出贡献的人们!你们的支持和帮助使本研究取得了成功。再次向所有相关人员表示衷心的感谢。

免费领取项目源码,请关注❥点赞收藏并私信博主,谢谢~

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

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

相关文章

通用代码生成器模板体系,域对象,枚举和动词算子

通用代码生成器模板体系&#xff0c;域对象&#xff0c;枚举和动词算子 通用代码生成器或者叫动词算子式通用目的代码生成器是一组使用Java编写的通用代码生成器。它们的原理基于动词算子和域对象的笛卡尔积。它们没有使用FreeMarker和或者Velocity等现成的文件式模板引擎。而…

传统的springboot项目中,如何进行添加自定义静态资源访问路径实现对静态资源的访问?

如何配置可以实现在浏览器中配置路径实现对resource资源路径下的index.html个性化定制访问路径 要在Spring Boot项目中配置使特定前缀访问静态资源&#xff0c;可以在application.yml文件中配置路径映射。以下是一个示例配置&#xff1a; 打开你的application.yml文件&#xf…

死灰复燃的 LockBit, “现身说法”计算机安全的重要性

LockBit 死灰复燃 2024年2月&#xff0c;一场全球性的名为 “Cronos 行动” 的执法行动夺取了对 LockBit 勒索组织基础设施的控制权并扰乱了其运营。 但是&#xff0c;就像希腊神话中的九头蛇一样&#xff0c;砍掉一个 LockBit 的头并不重要——它可以迅速再生成多个新的头。…

南京邮电大学运筹学课程实验报告3 整数规划问题求解 指导

一、题目描述 实验三 整数规划问题求解    实验属性&#xff1a; 设计型    实验目的 1&#xff0e;理解图的整数规划问题概念&#xff1b; 2&#xff0e;掌握运筹学软件的使用方法&#xff1b; 3. 掌握整数规划问题求解原理和方法。 实…

MES系统助力塑料制品行业数字化转型

注塑MES系统助力工厂生产力提升具体体现在&#xff1a;覆盖生产全流程&#xff1b;数据自动收集、科学规划排产&#xff1b;优化配送模型、平衡物流运转&#xff1b;严格把控品质、异常自动分析&#xff1b;实时监控设备&#xff0c;保证正常运转&#xff1b;产品快速追溯&…

Linux下vim工具应用

1.简介 Vim&#xff08;Vi IMproved&#xff09;是一种高度可配置的文本编辑器&#xff0c;用于有效地创建和更改任何类型的文本。它是从vi发展而来&#xff0c;vi是Unix和类Unix系统上最初的文本编辑器之一。Vim被设计为程序员和文本编辑的爱好者使用&#xff0c;它以其强大的…

广度优先(BFS)

先看一道简单的题&#xff0c;迷宫问题&#xff1a; 洛谷P1746 离开中山路&#xff1a;P1746 离开中山路 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) #include<iostream> #include<cstring> #include<queue> #include <utility> #define N 1002 …

综合监管云平台 DownFile 任意文件读取漏洞复现

0x01 产品简介 综合监管云平台是一种集成了多种先进技术的信息化平台&#xff0c;旨在通过数据采集、分析、预警和应急处理等功能&#xff0c;实现对各类监管对象的全面、高效、精准管理&#xff0c;综合监管云平台利用“互联网物联网”模式&#xff0c;结合云计算、大数据、边…

春招冲刺百题计划|队列

Java基础复习 Java数组的声明与初始化Java ArrayListJava HashMapJava String 类Java LinkedListJava Deque继承LinkedListJava SetJava 队列 第一题&#xff1a;387. 字符串中的第一个唯一字符 class Solution {public int firstUniqChar(String s) {//最简单的方法就是暴力…

p14数组(2)

数组作为函数的参数 冒泡排序 两两比较 void bubble_sort(int arr[],int sz) {int i0;for(i0;i<sz-1;i){//每一趟冒泡排序int j0;for(j0;j<sz-1-i;j){if(arr[j]>arr[j1]){int tmparr[j];arr[j]arr[j1];arr[j1]tmp;}}} } int main(){int arr[]{9,8,7,6,5,4,3,2,1,0}…

关于woocommerce product data tabs, 特别是additional information

woocommerce product data tabs&#xff0c; 也就是默认的这三个&#xff1a; description additional information reviews 包括如何删除&#xff0c;重命名&#xff0c;改显示顺序等等&#xff0c;参考官方文档&#xff1a; https://woocommerce.com/document/editing-p…

C# CvDnn部署CoupledTPS实现旋转图像矫正

C# CvDnn部署CoupledTPS实现旋转图像矫正 目录 说明 效果 模型信息 项目 代码 下载 说明 TPAMI2024 - Semi-Supervised Coupled Thin-Plate Spline Model for Rotation Correction and Beyond github地址&#xff1a;https://github.com/nie-lang/CoupledTPS 代码实现…

240710_昇思学习打卡-Day22-LSTM+CRF序列标注

240710_昇思学习打卡-Day22-LSTMCRF序列标注 在正式开始LSTMCRF序列标注之前&#xff0c;我们先来了解一下条件随机场&#xff0c;以下仅做简单介绍。 CRF全称Conditional Random Field&#xff0c;按照名字来理解&#xff0c;条件随机&#xff0c;随机输入&#xff0c;条件输…

ReoGrid代替EXCEL显示数据,可视化修改ReoGrid.Mvvm:ReoGrid绑定模型

ReoGrid 是 C&#xff03; 编写的.NET 电子表格控件&#xff08;类似 Excel&#xff09;。支持单元格合并&#xff0c;边框样式&#xff0c;图案背景颜色&#xff0c;数据格式&#xff0c;冻结&#xff0c;公式&#xff0c;宏和脚本执行&#xff0c;表格事件等。支持 Winform\W…

游戏视频是后期配音好还是边录边配 游戏视频怎么剪辑制作才能火 视频剪辑免费软件

游戏视频后期配音是先配还是先剪&#xff1f;游戏视频后期配音没有统一的准则&#xff0c;可以先配&#xff0c;也可以后配&#xff0c;主要是根据内容而定。游戏视频剪辑在游戏玩家中十分流行&#xff0c;那么&#xff0c;游戏视频怎么剪辑制作&#xff1f;下面让我们以具体的…

ai写作软件哪个好用?这些写作工具值得收藏

在创意写作的世界里&#xff0c;每个字词都是作者情感与灵魂的载体。 但灵感的闪现与文字的成型之间&#xff0c;往往存在着一段漫长且充满挑战的旅程。幸运的是&#xff0c;人工智能技术的崛起带来了AI写作软件&#xff0c;它们不仅能够点燃创作的火花&#xff0c;还能辅助我…

探索 ASTRA.AI:打造低代码多模态 AI 应用的开源平台

声网&#xff08;Agora&#xff09;研发的 ASTRA 平台&#xff0c;作为一款面向大语言模型应用开发的开源解决方案&#xff0c;无疑为 AI 领域注入了新的活力。它巧妙地结合了 BaaS&#xff08;后端即服务&#xff09;概念与大型语言模型的运营&#xff0c;使得创建高性能的生成…

如何给CAD文件加密丨五种超级简单的CAD图纸加密方法

CAD图纸作为企业核心竞争力的体现&#xff0c;其安全性直接关系到企业的生产效率和市场竞争力。一旦图纸被泄露&#xff0c;竞争对手可能会迅速模仿或改进产品&#xff0c;从而抢占市场份额。此外&#xff0c;图纸的非法获取还可能涉及知识产权纠纷&#xff0c;给企业带来法律风…

镜像加速方法

参考&#xff1a; https://github.com/DaoCloud/public-image-mirror 使用DaoCloud加速&#xff1a; 比如我想在dockerhub下载这个镜像&#xff1a; 本来的命令是&#xff1a; docker pull openjdk:11.0-jdk-slim-buster在要拉取的镜像前&#xff0c;添加前缀&#xff1a;m.…

迅为RK3588S开发板广泛用于边缘技术,人工智能,智能家居,智慧零售,智能网关等

性能强 iTOP-3588S开发板采用瑞芯微RK3588S处理器&#xff0c;是全新一代AloT高端应用芯片&#xff0c;搭载八核64位CPU&#xff0c;四核Cortex-A76和四核Cortex-A55架构主频高达2.4GHZ&#xff0c;8GB内存&#xff0c;32GBEMMC。 四核心架构GPU内置GPU可以完全兼容0penGLES1.1…