摘要
基于Python的校园外卖点餐系统的设计与实现,旨在通过先进的编程技术,为校园内的师生提供便捷、高效的在线点餐服务。该系统充分利用Python语言的简洁性、易读性和强大的库支持,结合Django框架的后端稳健性和Vue.js框架的前端灵活性,共同构建出一个功能完善、操作简便的在线点餐平台。同时,MySQL数据库的运用确保了系统数据的稳定存储和高效处理。通过B/S架构的采用,用户只需通过浏览器即可轻松访问系统,实现菜品浏览、下单支付、订单追踪等功能。此外,系统还具备高效的配送管理功能,通过智能化的订单处理和配送安排,确保外卖能够及时送达用户手中。综上所述,基于Python的校园外卖点餐系统通过整合先进技术,为校园师生提供了更加便捷、高效的点餐体验,推动了校园信息化建设的进程。
关键词 校园外卖点餐 ;MySQL数据库;Django框架;Python语言
Design and Implementation of Campus Takeout Ordering Based on Python
Abstract The design and implementation of a campus takeout ordering system based on Python aims to provide convenient and efficient online ordering services for teachers and students on campus through advanced programming technology. This system fully utilizes the simplicity, readability, and powerful library support of Python language, combined with the backend robustness of Django framework and the frontend flexibility of Vue.js framework, to jointly build a fully functional and easy-to-use online ordering platform. Meanwhile, the use of MySQL database ensures stable storage and efficient processing of system data. By adopting the B/S architecture, users can easily access the system through a browser, achieving functions such as dish browsing, order payment, and order tracking. In addition, the system also has efficient delivery management functions, ensuring timely delivery of takeout to users through intelligent order processing and delivery arrangements. In summary, the Python based campus takeout ordering system integrates advanced technology to provide more convenient and efficient ordering experiences for campus teachers and students, promoting the process of campus information construction.
Key words:Campus takeout ordering; MySQL database; Django framework; Python language
目录
1 绪论
1.1 研究背景
随着信息技术的迅猛发展和互联网的普及,校园师生对于外卖点餐的便利性和时效性要求越来越高。然而,传统的外卖点餐方式往往存在着操作繁琐、信息更新不及时、配送效率低下等问题,无法满足校园内快速变化的餐饮需求。
为了解决这些问题,提升校园餐饮服务的效率和质量,研究和开发一套基于Python的校园外卖点餐系统显得尤为重要。该系统能够充分利用Python语言的强大功能和丰富的库支持,结合现代化的前端技术,为校园师生提供一个功能完善、操作简便的在线点餐平台。通过该系统,用户可以轻松浏览菜品信息、实时查看库存情况、快速下单支付,并享受高效的配送服务。同时,系统还可以实现订单管理、销售统计等功能,为商家提供有力的数据支持。
基于Python的校园外卖点餐系统的研究不仅有助于解决校园内餐饮服务的痛点问题,提升师生们的用餐体验,还能够推动校园信息化建设的进程,促进校园内各类服务的智能化、便捷化。因此,对该系统的研究具有重要的现实意义和应用价值,有望为校园餐饮服务带来革命性的变革。
1.2研究意义
基于Python的校园外卖点餐系统的研究意义深远且广泛。这一系统通过集成在线浏览、选择、下单和支付功能,极大地提升了校园生活的便捷性,使师生们能够随时随地享受美食服务。同时,系统通过实时数据更新和智能化订单处理,确保了菜品信息的准确性和订单处理的高效性,从而提升了校园餐饮服务的整体质量。此外,该系统还具备技术创新的价值,不仅提升了开发人员的编程能力,也为未来的校园信息化建设提供了有力支持。综上所述,基于Python的校园外卖点餐系统的研究与应用将推动校园餐饮服务的升级,为师生们带来更加便捷、高效的美食体验,促进校园信息化建设的深入发展。
1.3国内外研究动态
在国内,随着校园信息化建设的不断推进,校园外卖点餐系统作为提升校园生活品质的重要组成部分,受到了广泛关注。众多研究机构和高校团队纷纷投入研发,致力于开发出更加便捷、高效的点餐系统。他们通过深入研究Python语言的应用和Web开发技术,不断优化系统功能和用户体验,以满足校园师生日益增长的点餐需求。同时,国内的外卖市场也呈现出爆发式增长,为校园外卖点餐系统提供了广阔的应用场景和市场需求。
而在国外,校园外卖点餐系统的研究也取得了显著进展。许多国家的高校和研究机构都投入了大量资源进行相关技术的研发和应用。他们充分利用Python语言的强大功能和丰富的库支持,结合先进的Web技术和大数据分析,构建出功能强大、智能化的点餐系统。这些系统不仅能够实现基本的点餐功能,还能够进行用户行为分析、菜品推荐等高级功能,为校园师生提供更加个性化、智能化的服务。
综上所述,基于Python的校园外卖点餐系统的国内外研究动态均呈现出积极的态势。无论是国内还是国外,都在不断探索和创新,推动校园外卖点餐系统的技术发展和应用普及。随着技术的不断进步和市场的不断扩大,相信未来校园外卖点餐系统将会更加完善、高效,为校园生活带来更多的便利和惊喜。
1.4论文结构与章节安排
本次写作的论文,在结构方面主要分为七大部分,每一部分都必不可少,共同组合形成一个完好的论文结构,具体的安排列出如下。
绪论部分,该部分讲述的是校园外卖点餐的开发背景,明确开发的意义以及系统的研究动态,并对系统的整个章节安排进行介绍。
系统分析部分,该部分首先从可行性入手进行分析,明确程序开发可行后,进而对程序的功能以及姓名需求进行分析。
系统概要设计,对系统前后台的功能分别进行设计,然后完成系统的总体功能以及各个子模块的设计。
系统数据库的设计,对系统的数据库实体以及数据库表进行设计
系统的实现部分,对系统每一角色主要实现的功能的页面来进行展示一下。
系统测试部分,介绍测试的测试目的,用例,完成对程序测试工作,让投入运行的程序减少出错的几率,力求最好。
第2章 相关技术
2.1 Python语言
早在上个世纪90年代,Python就由吉多·范罗苏姆进行创造,自诞生之日起,Python就一直深深的受到了程序开发者的广泛喜爱,它作为计算机主要的编程语言,一直到今。Python语言是真的是一种纯面向对象的计算机语言,在Python的世界中,所有的方法、数据类型、符号等都是以类的方式存在的,最顶层的就是Object,所有的类都是对object的继承。继承是Python中的核心思想,与C语言不同的是,子类只有一个父类,这样的好处就是操作更加的简便,让人更容易理解,在代码的书写上也会容易较多。Python另外一个特性就是多态性,调用父类接口的方法可以实现子类的实现,这样的好处就是很好的对实现方法进行了隐藏(封装),而且又能够把API进行公开,一举两得。接口思想很好的诠释了想象对象的思想,让面向对象编程渐渐转向面向接口编程。如今,随着编程思想的继续发展,Python也加入了一些函数式编程的思想,这样的好处就是让编程代码更加的简洁与方便。本管理系统采用Python编程语言进行后台的开发,一是鉴于标准化制定以后,Python语言常用于大型商业应用程序后台系统中,生态稳定;二是也希望通过本系统的开发提高自己编写Python代码的能力。
数据库作为数据的存储地方是项目必须的,MySQL是一款非常优秀的关系型数据库,早期的MySQL并不是甲骨文公司的,后来才被他收购的。MySQL非常的小巧,安装包才几兆,sql语言的书写也比较容易学习,最重要的是MySQL同时也是一款开源的软件,所以不需要额外进行付费,本系统本身也是以学习总结所学知识为主,在系统的开发上最好尽量使用免费的软件,所以选用MySQL进行数据库管理。MySQL的容量也是非常大的,同时支持分库分表的操作,支持分布式,所以越来越多的中小企业选择该款数据库管理工具。另外值得一提的是,开源也有一个不好的地方,就是容易遭到破解和黑客攻击,所以MySQL在使用上还是更多的使用在中小项目中。
MySQL不会对平台有需求,所以任何一个程序员都可以通过 MySQL数据库来完成自己的系统开发,并且还可以节约大量的资源。因为它具有强大功能,所以可以用来储存这个系统的数据。
MySQL适合于各种应用,我们在运行数据库的时候,也很容易上手,我们只要编写一段代码,就可以完成相应的功能,并且可以在任何的平台上使用,而不需要再进行第二次的编译。MySQL数据库还具备在本地存储数据和允许结构化查询以方便管理的优势;MySQL是一个完全网络化的系统,它的数据库可以在互联网的任何位置被访问,它可以在任何地点与任何人分享;此外,MySQL也提供了存取控制的能力,可以阻止数据被非法使用,MySQL服务稳定,开发成本低,所以在开发过程中,MySQL数据库是最受欢迎的。
Django是一个由Python编写的具有完整架站能力的开源Web框架。使用Django,只要很少的代码,Python的程序开发人员就可以轻松地完成一个正式网站所需要的大部分内容,并进一步开发出全功能的Web服务。
Django本身基于MVC模型,即Model(模型)+View(视图)+ Controller(控制器)设计模式,因此天然具有MVC的出色基因:开发快捷、部署方便、可重用性高、维护成本低等。Python加Django是快速开发、设计、部署网站的最佳组合。
3 校园外卖点餐需求分析
3.1 可行性分析
可行性分析是系统分析的第一步,通过可行性分析我们可以得出系统是不是值得开发,如果系统的开发是不可信的,那么就没有必要再进行下面的操作,对于本校园外卖点餐在可行性方面进行了技术、经济以及操作的分析。
3.1.1技术可行性:技术背景
本企业网站在Windows操作系统中进行开发,并且目前PC机的性能已经可以胜任普通网站的web服务器。系统开发所使用的技术也都是自身所具有的,也是当下广泛应用的技术之一。
系统的开发环境和配置都是可以自行安装的,系统使用 Python开发工具,使用比较成熟的Mysql数据库进行对系统前台及后台的数据交互,根据技术语言对数据库,结合需求进行修改维护,可以使得网站运行更具有稳定性和安全性,从而完成实现网站的开发。
(1)硬件可行性分析
基于Python的校园外卖点餐的设计和实现对于所使用的计算机没有什么硬性的要求,计算机只要可以正常的使用进行代码的编写及页面设计就可行,主要是对于服务器有些要求,对于平台搭建完成要上传的服务器是有一定的要求的,服务器必须选择安全性比较高的,然后就是在打开网站必须顺畅,不能停顿太长时间;性价比高;安全性高。
(2)软件可行性分析
开发整个系统使用的是云计算,流量的可扩展性和基于流量的智能调整云计算的优点就是流量的可扩展性和基于流量的智能调整,保障系统的安全及数据信息的及时备份。
因此,我们从两个方面进行了可行性研究,可以看出系统的开发没有问题。
3.1.2经济可行性
在基于Python的校园外卖点餐的设计和实现开发之前所做的市场调研及其他的物流公司相关的管理系统,都是没有任何费用的,都是通过开发者自己的努力,所有的工作的都是自己亲力亲为,在碰到自己比较难以解决的问题,大多是通过同学和指导老师的帮助进行相关信息的解决,所以对于基于Python的校园外卖点餐的设计和实现的开发在经济上是完全可行的,没有任何费用支出的。
使用比较成熟的技术,系统是基于 Python的开发,采用Mysql数据库。所以系统在开发人力、财力要求不高,具有经济可行性。
3.1.3操作可行性:
可操作性主要是对基于Python的校园外卖点餐的设计和实现设计完成后,用户的使用体验度,以及管理员可以通过系统随时管理相关的数据信息,并且对于管理员、用户两个用户角色,都可以简单明了的进入到自己的系统界面,通过界面导航菜单可以简单明了地操作功能模块,方便用户信息的操作需求和管理员管理数据信息,对于系统的操作,不需要专业人员都可以直接进行功能模块的操作管理,所以在系统的可操作性是完全可以的。本系统的操作使用的也是界面窗口进行登录,所以操作人员只要会简单的电脑操作就完全可以的。
3.2 功能需求分析
(1)外卖商品模块:本校园外卖点餐最主要的功能就是订餐,所有系统中需要餐厅管理员添加各种菜品供用户查询,购买,管理员在此模块主要是对菜品供的增删改查,游客实现对菜品供的查询,用户则实现菜品的收藏、评论、加购等操作。如下图3-1所示。

图3-1 外卖商品模块用例图
(2)外卖资讯模块:管理员在后台可以对外卖资讯及其分类进行增删改查,游客实现查看外卖资讯,用户进行收藏、点赞、评论。如下图3-2所示。

图3-2外卖资讯模块用例图
(2)系统用户模块:在前台游客可以通过注册,然后参与到系统当中,管理员可以对注册的用户进行修改、删除、查询、也可以添加新的用户。如下图3-3所示。

图3-3系统用户模块用例图
(3)购物管理:用户对喜欢的在线点餐可以进行购买,可以选择立即购买或者加入到购物车中进行购买,如下图3-4所示。

图3-4购物车管理模块用例图
(4)订单列表:在校园外卖点餐中,用户和管理员都能够管理订单信息,可以对订单信息进行查看、删除。如下图3-5所示。

图3-4订单列表模块用例图。
3.3 非功能性需求分析
校园外卖点餐的性能性需求分析主要是分析本校园外卖点餐的安全性怎么样(是否会泄露用户个人信息),可靠性怎么样(用户操作的时候是不是能够根据实际操作显示信息),性能怎么样(运行是否操作流畅),可拓展性怎么样(功能能否继续拓展)等。具体可以表示在如下3-5表格中:
表3-5 校园外卖点餐非功能需求表
| 安全性 | 主要指校园外卖点餐数据库的安装,数据库的使用和密码的设定必须合乎规范。 |
| 可靠性 | 可靠性是指校园外卖点餐能够按照用户的指示进行操作,经过测试,可靠性90%以上。 |
| 性能 | 性能是影响校园外卖点餐占据市场的必要条件,所以性能最好要佳才好。 |
| 可扩展性 | 比如数据库预留多个属性,比如接口的使用等确保了系统的非功能性需求。 |
| 易用性 | 用户只要跟着校园外卖点餐的页面展示内容进行操作,就可以了。 |
| 可维护性 | 校园外卖点餐开发的可维护性是非常重要的,经过测试,可维护性没有问题 |
4 校园外卖点餐概要设计
4.1系统体系结构
本校园外卖点餐总体的体系结构图分为前端用户体系结构和后端管理员体系结构,其具体结构图如图4-1和图4-2所示
4.1.1前端用户能结构图设计

图4-1 校园外卖点餐前端用户功能结构图
4.1.2后端管理员功能结构图设计

图4-2校园外卖点餐后端功能结构图
4.2总体功设计
本校园外卖点餐分为前台用户以及后台管理员两个页面,前端由游客/用户进入,用户登录后实现外卖商品的购买,订单配送的管理等,后端是管理员进行登录,登录以后对校园外卖点餐所有数据进行管理。校园外卖点餐的总体用例图如图4-4所示

图4-2 校园外卖点餐功能总体用例图
4.3子模块设计设计
4.3.1系统前端界面
系统前端普通用户的功能包含了通首页、公告、外卖资讯、外卖商品、商城管理、我的账户、个人中心(个人首页、订单评价、订单配送、收藏)等。
(1)用户在前台可以查看公告,让用户了解餐厅的各种公告信息,可以对自己喜欢的公告进行收藏、点赞,也可以实现对公告的评论,与共同爱好者产生交流,用例说明如下表所示:
表4-1公告用例图
| 用例名称 | 公告收藏/点赞/评论 |
| 角色 | 普通用户 |
| 用例说明 | 用户在前台查看公告,对喜欢的公告进行收藏、点赞、评论 |
| 前置条件 | 用户登录 |
| 后置条件 | 对用户的收藏、点赞、评论在系统中展示出来 |
| 基本事件流 | 1、用户通过浏览器进入本校园外卖点餐 2、用户登录到系统当中 3、用户进入公告,选择公告进入详情 4、用户点击收藏或者点赞 5、在评论框输入评论内容,点击提交 |
| 推展流程 | 无 |
| 异常事件流 | 1、用户没有登录 2、输入的评论内容为空 |
| 其他 | 无 |
(2)校园外卖点餐主要的功能就是点餐,所有在系统中用户可以选择自己喜欢的外卖商品进行加入购物车进行购买,用例说明如下表所示:
表4-2 外卖商品用例图
| 用例名称 | 外卖商品购买 |
| 角色 | 普通用户 |
| 用例说明 | 用户在前台查看外卖商品,对喜欢的外卖商品进行收藏、评论、立即购买、加入购物车 |
| 前置条件 | 用户登录 |
| 后置条件 | 对外卖商品加入购物车或者;乐极购买 |
| 基本事件流 | 1、用户通过浏览器进入本校园外卖点餐 2、用户登录到系统当中 3、用户进入外卖商品,选择外卖商品进入详情 4、加入购物车或者立即购买 5、在评论框输入评论内容,点击提交 |
| 拓展流程 | 选择支付方式 |
| 异常事件流 | 1、用户没有登录,需要注册登录后才能操作 2、购买失败需要取消付款 |
| 其他 | 无 |
4.3.2系统后端界面
系统前端普通用户的功能包含了首页、系统用户(管理员、普通用户)、订单评价管理、系统管理、公告管理、资源管理(外卖资讯、资讯分类)、商城管理(外卖商品、分类列表、订单列表、订单配送)、个人信息、修改密码等。
(1)用户在前台可以查看外卖商品信息,让用户了解餐厅的各种菜品,可以对自己喜欢的菜品进行收藏、点赞,也可以实现对菜品的评论,与共同爱好者产生交流,用例说明如下表所示:
表4-3 外卖商品管理用例图
| 用例名称 | 外卖商品管理 |
| 角色 | 管理员用户 |
| 用例说明 | 对系统当中的外卖商品进行增删改查 |
| 前置条件 | 管理员登录 |
| 后置条件 | |
| 基本事件流 | 1、管理员通过后台登录到系统当中 2、选择我的订单下的外卖商品按钮 3、显示系统当中的所有的外卖商品,可以输入关键词查询 4、选择内容进行增删改查 5、点击提交 |
| 拓展流程 | 无 |
| 异常事件流 | 输入的外卖商品内容不正确,提示错误信息 |
| 其他 | 无 |
5 校园外卖点餐数据库设计
数据库设计一般包括需求分析、概念模型设计、数据库表建立三大过程,其中需求分析前面章节已经阐述,概念模型设计有概念模型和逻辑结构设计两部分。
5.1 数据库概念结构设计
下面是整个校园外卖点餐中主要的数据库表总E-R实体关系图。

图5-1 校园外卖点餐总E-R关系图
5.2 数据库逻辑结构设计
通过上一小节中校园外卖点餐中总E-R关系图上得出一共需要创建很多个数据表。在此我主要罗列几个主要的数据库表结构设计。
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 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 | 用户编号: |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 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 | 默认判断 |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 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 | 文章描述 |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 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 | 更新时间: |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 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 | 更新时间: |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 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]用于产品规格描述 |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 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 | 更新时间: |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 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: |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 1 | delivery_products_id | int | 10 | 0 | N | Y | 外卖商品ID | |
| 2 | store_name | varchar | 64 | 0 | Y | N | 店铺名称 | |
| 3 | trade_name | varchar | 64 | 0 | Y | N | 商品名称 | |
| 4 | product_specifications | varchar | 64 | 0 | Y | N | 商品规格 | |
| 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 | 更新时间 |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 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 | 添加人 |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 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 | 更新时间: |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 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: |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 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 | 更新时间 |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 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 | 更新时间: |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 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 | 32 | 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 | 折扣 |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 1 | order_evaluation_id | int | 10 | 0 | N | Y | 订单评价ID | |
| 2 | order_number | varchar | 64 | 0 | Y | N | 订单编号 | |
| 3 | product_name | varchar | 64 | 0 | Y | N | 商品名称 | |
| 4 | product_specifications | varchar | 64 | 0 | Y | N | 商品规格 | |
| 5 | ordering_users | int | 10 | 0 | Y | N | 0 | 下单用户 |
| 6 | user_name | varchar | 64 | 0 | Y | N | 用户姓名 | |
| 7 | purchase_quantity | varchar | 64 | 0 | Y | N | 购买数量 | |
| 8 | evaluation_score | varchar | 64 | 0 | Y | N | 评价分数 | |
| 9 | evaluation_content | text | 65535 | 0 | Y | N | 评价内容 | |
| 10 | create_time | datetime | 19 | 0 | N | N | CURRENT_TIMESTAMP | 创建时间 |
| 11 | update_time | timestamp | 19 | 0 | N | N | CURRENT_TIMESTAMP | 更新时间 |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 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已取消 |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 1 | regular_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 | 更新时间 |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 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 | 更新时间: |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 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 | 文件类型 |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 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 | | 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 | 会员折扣 |
| 编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 默认值 | 说明 |
| 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 | 更新时间: |
6 校园外卖点餐详细设计与实现
6.1前台用户功能模块
6.1.1注册界面
不是校园外卖点餐中正式会员的是可以在线进行注册的,当用户点击“注册”按钮,填写上自己的账号+密码+确认密码+昵称等,再点击“注册”按钮后将会先验证输入的有没有空数据,再次验证密码和确认密码是否是一样的,最后验证输入的账户名和数据库表中已经注册的账户名是否重复,只有都验证没问题后即可会员注册成功。其用注册流程图如图6-1所示,注册界面展示如下图6-2所示。

图6-1注册流程图

图6-2 前台注册界面图
注册关键代码如下:
print("===================注册=====================")
userService = service_select("user")
body = ctx.body
if "username" not in body and body["username"] == '':
return ctx.response(json.dumps({
"error": {
"code": 70000,
"message": "用户名不能为空",
}
}, ensure_ascii=False))
if "user_group" not in body and body["user_group"] == '':
return ctx.response(json.dumps({
"error": {
"code": 70000,
"message": "用户组不能为空",
}
}, ensure_ascii=False))
if "password" not in body and body["password"] == '':
return ctx.response(json.dumps({
"error": {
"code": 70000,
"message": "密码不能为空",
}
}, ensure_ascii=False))
post_param = body
post_param['nickname'] = body["nickname"] or ""
post_param['password'] = md5hash(body["password"])
obj = userService.Get_obj({"username": post_param['username']}, {"like": False})
if obj:
return ctx.response(json.dumps({
"error": {
"code": 70000,
"message": "用户名已存在",
}
}, ensure_ascii=False))
ret = {
"error": {
"code": 70000,
"message": "注册失败",
}
}
bl = userService.Add(post_param)
if bl:
ret = {
"result": {
"bl": True,
"message": "注册成功"
}
}
return ctx.response(json.dumps(ret, ensure_ascii=False))
6.1.2登录界面
校园外卖点餐中的前台上注册后的会员是可以通过自己的账户名和密码进行登录的,当会员输入完整的自己的账户名和密码信息并通过滑动验证通过后,点击“登录”按钮后,将会首先验证输入的有没有空数据,再次验证输入的账户名+密码和数据库中当前保存的用户信息是否一致,只有在一致后将会登录成功并自动跳转到校园外卖点餐的首页中;否则将会提示相应错误信息,用户登录流程如图6-3所示,登录界面如下图6-4所示。

图6-3登录流程图

图6-4用户登录界面图
登录关键代码如下:
print("===================登录=====================")
ret = {
"error": {
"code": 70000,
"message": "账户不存在",
}
}
body = ctx.body
password = md5hash(body["password"]) or ""
obj = service_select("user").Get_obj(
{"username": body["username"]}, {"like": False}
)
if obj:
user_group = service_select("user_group").Get_obj({'name': obj['user_group']}, {"like": False})
if user_group and user_group['source_table'] != '':
user_obj = service_select(user_group['source_table']).Get_obj({"user_id": obj['user_id']}, {"like": False})
if user_obj['examine_state'] == '未通过':
ret = {
"error": {
"code": 70000,
"message": "账户未通过审核",
}
}
return ret
if user_obj['examine_state'] == '未审核':
ret = {
"error": {
"code": 70000,
"message": "账户未审核",
}
}
return ret
if obj["state"] == 1:
if obj["password"] == password:
timeout = timezone.now()
timestamp = int(time.mktime(timeout.timetuple())) * 1000
token = md5hash(str(obj["user_id"]) + "_" + str(timestamp))
ctx.request.session[token] = obj["user_id"]
service_select("access_token").Add(
{"token": token, "user_id": obj["user_id"]}
)
obj["token"] = token
ret = {
"result": {"obj": obj}
}
else:
ret = {
"error": {
"code": 70000,
"message": "密码错误",
}
}
else:
ret = {
"error": {
"code": 70000,
"message": "用户账户不可用,请联系管理员",
}
}
return ctx.response(json.dumps(ret, ensure_ascii=False))
6.1.3外卖商品详情界面
当访客点击了任意外卖商品后将会进入该款外卖商品的详情界面,可以了解到该外卖商品的图片信息、分类信息、价格信息等,同时可以对该外卖商品进行收藏、点赞、购买、评论,外卖商品详情展示页面如图6-5所示,购买流程图如图6-6所示。

图6-5 外卖商品详情界面图

图6-6购买流程图
6.1.4我的订单界面
当用户点击“我的订单”按钮则会显示自己提交的所有的订单信息,可以按照订单信息状态等进行查看,我的订单界面如下图6-7所示。

图6-7我的订单界面图
6.1.5订单配送界面
在点击导航栏上的“订单配送”后,会显示自己提交的所有的订单配送,可以按照订单配送状态等进行查看,订单配送管理界面如下图6-8所示。

图6-8订单配送界面图
6.2管理员功能模块
6.2.1 系统用户界面
校园外卖点餐中的管理人员是可以对前台注册的用户进行管理。普通用户界面如下图6-9所示。

图6-9系统用户界面图
6.2.2公告界面
校园外卖点餐中的管理人员是可以对公告进行增删改查操作。公告界面如下图6-10所示。
图5-10公告管理界面图
6.2.3资源管理界面
校园外卖点餐中的管理人员是可以对外卖资讯以及资讯分类的进行增删改查操作,资讯管理界面如下图6-11所示。

图5-11外卖资讯管理界面图
6.2.4订单评价管理界面
校园外卖点餐中的管理人员是可以对校园外卖点餐内的订单评价进行管控。订单评价管理界面如下图5-12所示。

图6-12订单评价管理界面图
6.2.5订单列表界面
校园外卖点餐中的管理人员是可以对校园外卖点餐内的外卖商品订单信息进行管控的,订单列表界面如下图6-13所示。

图6-13订单列表界面图
7系统的测试
7.1测试的目的
系统的前台、后台、数据库完成以后,这个系统才算是完成了一半,我们在这之后要对系统进行最后的一个阶段,那就是测试了,测试对一个系统来说是非常重要的,有的时候开发完一个系统,如果测试不合格的话,这个系统是没有办法进行投入使用的,所有我们要用测试对系统的功能进行检验,把不完善的功能尽量完善,把出现的bug解决掉,然后给用户呈现出一个完美的系统。通过对系统最后一步的测试,使得开发人员对自己的系统更加有信心,更加积极的为后期的系统版本的更新提供支持。
7.2 系统测试用例
系统测试包括:用户登录功能测试、外卖商品展示功能测试、外卖商品添加、外卖商品搜索、密码修改功能测试,如表7-1、7-2、7-3、7-4、7-5所示:
表7-1 用户登录功能测试表
| 用例名称 | 用户登录系统 |
| 目的 | 测试用户通过正确的用户名和密码可否登录功能 |
| 前提 | 未登录的情况下 |
| 测试流程 | 1) 进入登录页面 2) 输入正确的用户名和密码 |
| 预期结果 | 用户名和密码正确的时候,跳转到登录成功界面,反之则显示错误信息,提示重新输入 |
| 实际结果 | 实际结果与预期结果一致 |
外卖商品查看功能测试:
表7-2 外卖商品查看功能测试表
| 用例名称 | 外卖商品查看 |
| 目的 | 测试外卖商品查看功能 |
| 前提 | 用户登录 |
| 测试流程 | 点击外卖商品列表 |
| 预期结果 | 可以查看到所有外卖商品信息 |
| 实际结果 | 实际结果与预期结果一致 |
管理员添加外卖商品界面测试:
表7-3 管理员添加外卖商品界面测试表
| 用例名称 | 外卖商品发布测试用例 |
| 目的 | 测试外卖商品发布功能 |
| 前提 | 管理员用户正常登录情况下 |
| 测试流程 | 1)管理员点击外卖商品,然后点击添加后并填写信息。 2)点击进行提交。 |
| 预期结果 | 提交以后,页面首页会显示新的外卖商品信息 |
| 实际结果 | 实际结果与预期结果一致 |
外卖商品搜索功能测试:
表7-4 外卖商品搜索功能测试表
| 用例名称 | 外卖商品品搜索测试 |
| 目的 | 测试外卖商品搜索功能 |
| 前提 | 无 |
| 测试流程 | 1)在搜索框填入搜索关键字。 2)点击搜索按钮。 |
| 预期结果 | 页面显示包含有搜索关键字外卖商品 |
| 实际结果 | 实际结果与预期结果一致 |
密码修改搜索功能测试:
表7-5 密码修改功能测试表
| 用例名称 | 密码修改测试用例 |
| 目的 | 测试管理员密码修改功能 |
| 前提 | 管理员用户正常登录情况下 |
| 测试流程 | 1)管理员密码修改并完成填写。 2)点击进行提交。 |
| 预期结果 | 使用新的密码可以登录 |
| 实际结果 | 实际结果与预期结果一致 |
6.3 系统测试结果
通过编写校园外卖点餐的测试用例,已经检测完毕一上功能模块的测试,通过这5大模块为校园外卖点餐的后期推广运营提供了强力的技术支撑。
结论
首先,该系统充分利用了Python语言的强大功能和丰富的库支持,结合现代化的Web开发技术,构建了一个功能完善、操作简便的在线点餐平台。这一平台不仅提供了菜品浏览、下单支付等基本功能,还实现了订单管理、销售统计等高级功能,满足了校园师生多样化的点餐需求。
其次,该系统在实际应用中展现出了良好的性能和稳定性。通过优化数据库设计和算法实现,系统能够高效处理大量并发请求,保证了用户操作的流畅性和响应速度。同时,系统还具备强大的数据安全性保障,有效防止了信息泄露和非法访问等安全风险。
此外,该系统还为用户带来了极大的便利和满意度。师生们可以通过手机或电脑随时随地访问系统,轻松完成点餐操作,避免了传统点餐方式的繁琐和不便。同时,系统还提供了个性化的推荐服务,根据用户的口味和偏好推荐合适的菜品,提升了用户的点餐体验。
综上所述,基于Python的校园外卖点餐系统的研究与实现取得了显著成果。该系统不仅满足了校园师生的点餐需求,还提升了校园餐饮服务的效率和质量。未来,随着技术的不断进步和市场的不断扩大,相信该系统将会进一步完善和优化,为校园生活带来更多的便利和惊喜。
参考文献
[1]Ataei M ,Salehipour H . XLB: A differentiable massively parallel lattice Boltzmann library in Python [J]. Computer Physics Communications, 2024, 300 109187-.
[2]Castaño A ,Alonso J ,González P , et al. QuantificationLib: A Python library for quantification and prevalence estimation [J]. SoftwareX, 2024, 26 101728-.
[3]Nayak R ,Gupta N . Data Structures for Engineers and Scientists Using Python[M]. CRC Press: 2024-04-18.
[4]石利平. Python程序设计基础课程思政设计与实践——以数据可视化为例 [J]. 现代商贸工业, 2024, 45 (09): 263-265. DOI:10.19311/j.cnki.1672-3198.2024.09.089.
[5]Candel F J C ,Muñoz P ,Troya J , et al. Corrigendum to “UTypes: A library for uncertain datatypes in Python” [SoftwareX, VOLUME 26, 101676, MAY 2024] [J]. SoftwareX, 2024, 26 101692-.
[6]徐圣方,王金阳. Python爬虫获取豆瓣观众影评数据及可视化分析 [J]. 网络安全技术与应用, 2024, (04): 59-62.
[7]刘春雷,王永生,许志伟,等. 多平台支持的Python语言与数据分析课程混合式教学模式探索 [J]. 计算机教育, 2024, (04): 114-119. DOI:10.16512/j.cnki.jsjjy.2024.04.042.
[8]雷泽,刘海军,崔春杰,等. 面向数据分析的Python语言课程设计 [J]. 科技风, 2024, (09): 7-9. DOI:10.19392/j.cnki.1671-7341.202409003.
[9]郭星涛,彭莲香. 基于Python的电子像控点点之记程序设计与实现 [J]. 工业控制计算机, 2024, 37 (03): 75-77.
[10]郭瑾. 基于Python的招聘数据爬取与数据可视化分析研究 [J]. 轻工科技, 2024, 40 (02): 94-96+99.
[11]阮小方. Python程序设计课程的一体化教学分析 [J]. 集成电路应用, 2024, 41 (03): 224-225. DOI:10.19339/j.issn.1674-2583.2024.03.101.
[12]张俊英,金浩然,杨凯. 基于Python语言的桥梁结构人工地震波模拟 [J]. 内蒙古公路与运输, 2024, (01): 43-47. DOI:10.19332/j.cnki.1005-0574.2024.01.010.
[13]张婷燕,王剑宇,田家远. Python程序设计教学模式改革实践探索 [J]. 电脑知识与技术, 2024, 20 (06): 27-29+36. DOI:10.14004/j.cnki.ckt.2024.0296.
[14]尹光景,李晨玉,曾子彬,等. 基于Vue.js+Django的大坝安全监测信息管理系统开发 [J]. 软件, 2024, 45 (01): 47-49+82.
[15]魏晓玲,刘红英. 基于Python和Django框架的琴房管理系统设计与实现 [J]. 无线互联科技, 2023, 20 (22): 51-53.
[16]Hagelin S . Shake my hand: Racial fantasies, white saviors, and Django Unchained's haunted screen [J]. The Journal of Popular Culture, 2023, 56 (5-6): 781-796.
[17]刘爱玲. 外卖点餐联合提示来了 [J]. 大众健康, 2022, (08): 82-83.
[18]王苏,王晓成,程景民. 山西省大学生外卖点餐相关因素及与超重肥胖的关系 [J]. 中国学校卫生, 2021, 42 (12): 1829-1832. DOI:10.16835/j.cnki.1000-9817.2021.12.017.
[19]蒋兆峰. 校园外卖对高校学生管理的影响研究——评《食品安全与卫生》 [J]. 中国油脂, 2021, 46 (10): 155.
[20]章春霞,郑佳慧,何晓杰,等. O2O模式下校园外卖对高校食堂的影响及对策研究——以杭州某高校为例 [J]. 全国流通经济, 2021, (18): 31-33. DOI:10.16834/j.cnki.issn1009-5292.2021.18.010.
[21]李琳,张凌峰. 青岛农业大学校园外卖丢失问题研究 [J]. 中国市场, 2020, (20): 78-79. DOI:10.13939/j.cnki.zgsc.2020.20.078.
致谢
通过这样设计与开发这样一个系统,首先向我们老师、同学和朋友表达真诚的感谢。没有指导老师的指导和平日子的教导,我也不能够学到如此多的专业知识。另外,也佩服老师兢兢业业的工作态度,给我们做好了表率。系统开发技术要学习的东西很多,前台框架、后台框架、业务流程、数据结构、操作系统等各种知识非常的丰富,都需要慢慢的专研。在这里,首先感谢老师细心的教导,我只想说一句:“老师,谢谢您,您辛苦了!有您在,大学生活才更加的充实。”另外,我要感谢我的室友,由于知识掌握得不够产生各种问题,正因为有了你们的帮忙,给我提出很多很好的建议,才能更好的解决系统开发问题。同时,我也应该感谢那些计算机专业的先哲们,正是由于有这么一群人,才能把这样的专业研究得如此透彻,才能助力新世界的诞生。你们的理论,是我们一生学习的内容,你们的成就,是我们一生追求的目标。
最后,也希望自己在未来的道路上能够走得更远,不辜负在大学的学习,以及老师们的细致的教导。
免费领取项目源码,请关注❥点赞收藏并私信博主,谢谢~
187

被折叠的 条评论
为什么被折叠?



