【网站项目】校园订餐小程序

🙊作者简介:拥有多年开发工作经验,分享技术代码帮助学生学习,独立完成自己的项目或者毕业设计。

  1. 代码可以私聊博主获取。🌹
  2. 赠送计算机毕业设计600个选题excel文件,帮助大学选题。
  3. 赠送开题报告模板,帮助书写开题报告。

作者完整代码目录供你选择:

  1. 《Springboot网站项目》400套
  2. 《ssm网站项目》800套
  3. 《小程序项目》300套
  4. 《App项目》500套
  5. 《python网站项目》600套

⚡感兴趣大家可以点点关注收藏,后续更新更多项目资料。⚡

项目演示

摘要

网络技术的快速发展给各行各业带来了很大的突破,也给各行各业提供了一种新的管理模块和校园订餐模块,对于校园订餐小程序将是又一个传统管理到智能化信息管理的改革,对于传统的校园订餐管理,所包括的信息内容比较多,对于用户想要对这些数据进行管理维护需要花费很大的时间信息,而且对于数据的存储比较麻烦,想要查找某一相关的数据信息比较繁琐,随着互联网大潮的到来,决定开发一套智能化、信息化的校园订餐小程序,主要对首页、个人中心、用户管理、商家管理、餐厅信息管理、美食信息管理、美食类型管理、系统管理等功能的管理系统的研发。

本文研究的系统是以java为语言的校园订餐小程序的设计与实现,它在使用时数据库和程序不会被造成太大的影响,用起来也很得心应手。它也算是当时比较流行的安全性相对也很高的框架之一了,java开发语言。和mysql数据库,最终完成校园订餐小程序。

关键词:校园订餐小程序;mysql数据库;java

1绪论

1.1 课题研究的背景与意义

传统的校园订餐管理方式都在使用手工记录的方式进行数据的登记,这种方式耗时,而且对于数据量比较大的情况想要快速查找某一数据非常慢,对于数据的统计获取比较繁琐,随着网络技术的发展,采用电脑管理相关数据信息管理与数据查询等诸多环节已成为必然趋势;数据情况的透明化,提高了信息管理的透明度,提高管理效率。

传统的校园订餐管理需要对各类信息及时的进行记录、规整、更新、收藏,这是对数据信息统计管理的极大消耗,在其进行过程中,还会出现因信息的重复传递,出现本可以避免的出错问题,例如:前后数据不一致、种类纰漏以及备注不详细等等一系列问题。在信息告诉更替的时代,信息的准确性,经济可行性也无疑是众人关注的焦点。那么我们系统的目的性也就很明确。

1.2 国内外研究现状和发展趋势

截至2018年12月,我国网民规模为8.29亿,全年新增网民5653万,互联网普及率达59.6%,网络的普及给人们的工作和生活都带来了很大的改变。

随着近几年来智慧网络的快速发展,不管是哪个国家或者哪个地区,网络发展的速度都是飞快的,而且对于国外而言,起步是比较早的,但是对于我国当下的网络发展也是在逐步提升,并且根据系统的发展进行不同方向的满足用户的需求,而且当下我国的网民的普及率达到70.4%,相比2020年3月提升9.7个百分点,由此可以得出借助网络发展的重要性。

校园订餐小程序的出现由于校园订餐信息的使用频率及使用次数的增加,如果我们仍然通过传统的纸质记录选择方式来选择查看校园订餐信息,就会浪费大量的人力和物力,浪费时间。同时,在人工统计过程中容易出现错误,解决校园订餐信息的记录数据,让用户通过网上相应的管理系统进行改变传统的手工操作,也方便管理者可以对大量相应数据进行检验和统计,减轻管理者的工作强度,提高工作效率,提高管理效率,从而使得校园订餐信息管理现代化更上一个台阶。

校园订餐小程序主要是以打造理想校园订餐管理为核心理念,结合国内外相关管理经验,确立科学化、智能化、标准化的服务,对于校园订餐小程序前期,做好设计规划,在设计阶段,做好智能化建设,以智能化管理系统代替部分的人工工作,更方便快捷的达到校园订餐小程序需求。

1.3 课题研究的内容

对于校园订餐小程序,充分运用现代化的信息技术手段,对于校园订餐信息管理发展的趋势就是信息化,信息化时代下的信息管理,需要深化信息管理体制与手段的改革,充分运用信息化手段来全方位的进行校园订餐小程序工作,构建校园订餐小程序,实现校园订餐小程序信息化,充分运用先进的校园订餐小程序进行校园订餐的信息管理、个人信息等信息的管理,加强校园订餐小程序的完善性,通过网络资源和信息共享,运用计算机手段,逐步实现校园订餐小程序的系统化和网络化,对于校园订餐信息管理,只有使用这种网络趋势,才能在时代的车轮中走的更远,发展的更好。

2 关键技术介绍

2.1 SSM框架

开发信息管理系统的主流框架是SSM(Spring + Spring MVC + MyBatis),SSM框架web层使用Spring MVC框架,使传输前后端数据变得简单;对于业务层使用Spring作为轻量级控制反转和面向切面的容器框架;对于相关SQL操作,采用Mybatis作为持久层框架,对JDBC进行封装,使得数据库的底层面向开发者操作处于一种透明状态。

2.2 Java技术及架构介绍

Java Linux 为基础并且使用 Java 语言进行开发的操作平台。 Java 的开放性让他允许所有人对系统进行修改和完善,这一点也让他在近些年成为便携设备上主要的操作系统。 Java 同时还内置了内置丰富的应用程序,比如电话、摄像头、播放器。这些都为在系统上开发程序提供了便利。该系统运用小程序完成前台的开发,包括登录注册、个性化特征的收集、基于个性化特征进行旅游信息的推荐和对推荐旅行方案的评价等。

用户使用我们这个校园订餐小程序只需一个Java手机就可以使用了,而且所有操作都是我们熟悉的操作手法。所有的操作通过手机就可以完成,用户不需培训,只要稍微提示一下即可。所以开发校园订餐小程序使用小程序技术不仅方便了开发者而且用户使用起来也非常方便,可以说是相对来说比较完美的开发平台了。

2.3 MYSQL数据库

MySQL数据库使用的语言是SQL语言。MySQL在保存数据时是根据数据的类型和特征分开保存在不同的表中,这样当用户在需要调用的数据时,就不再需要花费大量时间去寻找数据了,只要找到对应的表,就可以找到需要的数据了。MySQL可以完美的实现对于数据库的基本操作。因为 MySQL 数据库的占用的内存少,运行快,成本低,源代码开放,可移植性强,所以越来越多的数据来源简单的项目的开发都会选择 MySQL作为数据库,而MySQL也变得越来越流行。

MySQL 有很多特性,如可移植性,多线程,灵活性等,在很多操作系统中都可以运行。它可以实现在多个线程并发执行的技术;支持MyISAM、innoDB、MEMORY、ARCHIVE四种存储引擎,而且可以使用大型数据库,为用户提供许多使用数据库的工具,比如建模工具,管理工具等。在 WEB方面的应用MySQL是最好的。

2.4微信开发者工具

在传统web浏览器中,在加载htm15页面时先加载视图层的html和css,后加载逻辑层的java script,然后返回数据并在浏览器中展示页面。而微信开发者工具的系统层是基于Native System的,视图层和逻辑层会同时被加载。微信小程序的这种逻辑方式大大的优化了页面响应速度,减少了页面加载的等待时间,提高了用户体验。微信开发者工具可以实现同步本地文件,开发调试,编译预览,上传,发布等一整套流程。

2.5 B/S架构

随着软件系统的不断改进和升级,B/S结构产品更为方便的特征体现地十分明显。对于一个中等偏大的公司来说,如果系统管理员每天要在很多台电脑之间来回查看,不断奔走,那么效率和工作量就会变得很低,但是如果使用了B/S结构,那么管理员只要对服务器进行管理就够了。

B/S结构最大的优点它不需要安装任何的软件,它所有的客户端就只是浏览器,所以只要有一台电脑并且可以上网就可以解决所有问题,客户端可以完全地不用管理员维护。无论使用系统的使用者是什么样的规模,也不管分支有多么的庞大,都不会对维护和升级的工作量造成影响,所有的维护和升级只需要操作服务器。随着B/S结构的不断发展,使用的人也不断增加,从而带动了AJAX技术的发展,和B/S结构一样,它也能在客户端上处理程序,这便缓解了服务器的负担,提高了交互性,而且实现了局部实时刷新。

3 需求分析与可行性分析

主要介绍校园订餐小程序的需求分析,通常都是功能需求和非功能需求。及其本次校园订餐的可行性分析。

3.1功能需求分析

系统功能需求分析是通过软件开发者在参与市场调研,与校园订餐管理者及用户和商家交流后经过详细缜密的思考,再讨论研究后得出的初步系统开发所需实现功能。这是开发系统的开始,也是相当关键的一步,如果不在这个阶段制定系统所需模块,日后会带来不必要的麻烦。因此,必须严肃认真,全身心投入去做好这个步骤。

本系统采用从上往下的步骤开发,基本功能如下:

本课题要求实现一套校园订餐小程序,系统主要包括管理员,用户和商家三大模块

(a) 管理员;管理员进入小程序主要包括首页、个人中心、用户管理、商家管理、餐厅信息管理、美食信息管理、美食类型管理、系统管理等功能并进行详细操作。管理员用例图如图3-1所示。

图3-1 管理员用例图

(b) 用户;用户进入小程序可以实现首页、餐厅信息、美食信息、购物车、我的等内容,在我的页面可以对个人中心、我的收藏管理、用户充值、购物车、我的订单等功能进行详细操作。用户用例图如图3-2所示。

图3-2用户用例图

(c) 商家;商家进入小程序主要包括首页、个人中心、餐厅信息管理、美食信息管理、订单管理等功能并进行详细操作。商家用例图如图3-3所示。

图3-3商家用例图

3.2 性能需求分析

对系统的性能,从(功能、运行、界面、安全)等方面进行,下面我们逐一进行分析;

  1. 系统的功能是否完整进行分析:系统的功能,能对应设计出原始代码和算法,以表格同文字的形式进行详细介绍个人信息保证功能完整;

  2. 系统的运行是否通畅进行分析:系统的每个功能都有编写数据的关系和应对的代码,通过需求分析和可行性分析进行分析和显示系统的物理数据,保证其进行通畅;

  3. 系统的界面设计进行分析:对系统中的软件进行处理与分析的方式是由不同代码来进行的;从而使界面容易操作。

  4. 系统的安全性进行分析:每个角色的不同对应的信息各不相同,在登录系统务必使用自己的账号,密码登录;账号与密码错误自然就登录失败了。登录成功可以对自己的信息进行操作,不能对别人的账号信息进行查看等操作,这样自然保证系统的安全性。

3.3系统设计规则与运行环境

软件系统的优劣很大程度上是由系统设计的完善与否决定的。世间万物都必须遵循生老病死的法则,这是大自然的规则不能违反,软件设计也一样需要遵循系统设计规则。因此,在设计过程中必须遵循系统设计规则。

规则如下:

简单性:为了扩大系统使用者的受众面,系统设计应该本着操作越简单约好的原则,这样不仅能提高系统的使用率更能够扩大系统使用面。

针对性:一个系统针对性越强,所能提供的功能必然越完善,用户体验肯定更好,所以应该明确指定系统针对性。

实用性:实用永远是检验一个系统是否成功的唯一标准,使用的语言再高端,使用的结构再新颖但不能满足管理员,用户和商家的要求那就是失败。

运行环境:

本系统是利用B/S结构来开发的,数据库在服务器上进行部署 Mysql即可,其他包括My Eclipse等常规开发程序。

3.4系统流程分析

系统流程,用户需要登录进入系统,未注册过的用户需要在输入必填的信息之后注册成功然后登录系统,管理员在后台登录进入可以对用户进行修改管理。使用一些较为稳定的技术总结成一个系统的开发设计过程,是设计与实现各个功能模块的基本技术,这些是每个功能模块能够顺利进行的重要保证。

图3-4系统流程图

3.5 可行性分析

通常一个项目的启动或者投入市场运营都需要一个评估报告,要从需求上分析这个项目是否能在这种环境下实现整体目标,是否有这个市场回报率即我们通常所说的是否能够获得利润或者开发出来是否具有实用性,不能说系统开发出来后根本没有用。所以其目的就是以最小的付出来得到更大的效率。本次课题我们就从技术可行性,操作可行性上来分析。

(1)技术可行性

Java 由操作系统,中间件和应用软件三大部分组成。它是与谷歌公司和开放手机联盟共同开发的移动终端平台;该开发平台包括性能评价,除错工具,模拟器和存储器等功能;具有完善的开发环境。

(2)操作可行性

本系统用户只要有一台Java手机,就可以使用了,系统是使用的操作都是用户熟悉的选择框或者按钮等等。所有的操作通过手机就可以完成,用户不需培训,只要稍微提示一下即可。因此,在操作使用上,本系统简单、方便,易于使用户接受,因而是十分可行的。

4 系统设计

4.1软件功能模块设计

小程序总体功能如下图所示:

图 4-1 小程序总体功能模块图

4.2登录注册模块

用户要通过填写自己的账号和密码进入系统,如果用户没有登录的账号需要先进行注册用户在注册页面输入账号和密码,点击注册,按要求输入注册表所要的信息,登录密码和确认密码,点击注册后,系统先判断用户输入的"密码"和"确认密码"是否一致,如果不一致,用户需重新输入;如果一致则注册成功,然后输入刚才注册的个人账号和密码点击"登录"按钮,显示"登录中请稍后",如果登录信息正确则系统跳转进校园订餐列表界面;如果登录信息错误则显示 "登录失败"登录注册算法流程图如图4-2登录注册流程图所示。

图4-2登录注册流程图

Web后台端管理员登入正确可以查看用户修改用户信息,查看校园订餐信息等操作;如果输入错误,则无反馈重新登录。如图4-3后台管理流程图所示

图4-3后台管理流程图

4.3数据库设计

4.3.1 数据库E/R图

ER图是由实体及其关系构成的图,通过E/R图可以清楚地描述系统涉及到的实体之间的相互关系。在系统中对一些主要的几个关键实体如下图:

(1) 餐厅信息E/R图如下所示:

图4-4餐厅信息E/R图

(2) 美食信息E/R图如下所示:

图4-4美食信息E/R图

4.3.2 数据库表

数据库表的设计,如下表:

表4-1:美食资讯

|--------------|-----------|------------|------|----|-------------------|
| 字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
| id | bigint | | 主键 | 主键 | |
| addtime | timestamp | | 创建时间 | | CURRENT_TIMESTAMP |
| title | varchar | 200 | 标题 | | |
| introduction | longtext | 4294967295 | 简介 | | |
| picture | varchar | 200 | 图片 | | |
| content | longtext | 4294967295 | 内容 | | |

表4-2:美食信息

|------------------|-----------|------------|--------|----|-------------------|
| 字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
| id | bigint | | 主键 | 主键 | |
| addtime | timestamp | | 创建时间 | | CURRENT_TIMESTAMP |
| meishimingcheng | varchar | 200 | 美食名称 | | |
| meishileixing | varchar | 200 | 美食类型 | | |
| zhuliao | varchar | 200 | 主料 | | |
| kouwei | varchar | 200 | 口味 | | |
| meishijieshao | longtext | 4294967295 | 美食介绍 | | |
| meishitupian | varchar | 200 | 美食图片 | | |
| cantingmingcheng | varchar | 200 | 餐厅名称 | | |
| shangjiazhanghao | varchar | 200 | 商家账号 | | |
| sfsh | varchar | 200 | 是否审核 | | 否 |
| shhf | longtext | 4294967295 | 审核回复 | | |
| thumbsupnum | int | | 赞 | | 0 |
| crazilynum | int | | 踩 | | 0 |
| clicktime | datetime | | 最近点击时间 | | |
| clicknum | int | | 点击次数 | | 0 |
| price | float | | 价格 | | |
| onelimittimes | int | | 单限 | | -1 |
| alllimittimes | int | | 库存 | | -1 |

表4-3:美食类型

|---------|-----------|-----|------|----|-------------------|
| 字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
| id | bigint | | 主键 | 主键 | |
| addtime | timestamp | | 创建时间 | | CURRENT_TIMESTAMP |
| leixing | varchar | 200 | 类型 | | |

表4-4:美食信息评论表

|----------|-----------|------------|-------|----|-------------------|
| 字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
| id | bigint | | 主键 | 主键 | |
| addtime | timestamp | | 创建时间 | | CURRENT_TIMESTAMP |
| refid | bigint | | 关联表id | | |
| userid | bigint | | 用户id | | |
| nickname | varchar | 200 | 用户名 | | |
| content | longtext | 4294967295 | 评论内容 | | |
| reply | longtext | 4294967295 | 回复内容 | | |

表4-5:餐厅信息评论表

|----------|-----------|------------|-------|----|-------------------|
| 字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
| id | bigint | | 主键 | 主键 | |
| addtime | timestamp | | 创建时间 | | CURRENT_TIMESTAMP |
| refid | bigint | | 关联表id | | |
| userid | bigint | | 用户id | | |
| nickname | varchar | 200 | 用户名 | | |
| content | longtext | 4294967295 | 评论内容 | | |
| reply | longtext | 4294967295 | 回复内容 | | |

表4-6:配置文件

|-------|---------|-----|--------|----|-----|
| 字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
| id | bigint | | 主键 | 主键 | |
| name | varchar | 100 | 配置参数名称 | | |
| value | varchar | 100 | 配置参数值 | | |

表4-7:用户表

|----------|-----------|-----|------|----|-------------------|
| 字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
| id | bigint | | 主键 | 主键 | |
| username | varchar | 100 | 用户名 | | |
| password | varchar | 100 | 密码 | | |
| role | varchar | 100 | 角色 | | 管理员 |
| addtime | timestamp | | 新增时间 | | CURRENT_TIMESTAMP |

表4-8:购物车表

|------------------|-----------|-----|------|----|-------------------|
| 字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
| id | bigint | | 主键 | 主键 | |
| addtime | timestamp | | 创建时间 | | CURRENT_TIMESTAMP |
| tablename | varchar | 200 | 商品表名 | | meishixinxi |
| userid | bigint | | 用户id | | |
| goodid | bigint | | 商品id | | |
| goodname | varchar | 200 | 商品名称 | | |
| picture | varchar | 200 | 图片 | | |
| buynumber | int | | 购买数量 | | |
| price | float | | 单价 | | |
| discountprice | float | | 会员价 | | |
| shangjiazhanghao | varchar | 200 | 商户名称 | | |

表4-9:用户

|----------|-----------|-----|------|----|-------------------|
| 字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
| id | bigint | | 主键 | 主键 | |
| addtime | timestamp | | 创建时间 | | CURRENT_TIMESTAMP |
| zhanghao | varchar | 200 | 账号 | | |
| mima | varchar | 200 | 密码 | | |
| xingming | varchar | 200 | 姓名 | | |
| xingbie | varchar | 200 | 性别 | | |
| nianling | int | | 年龄 | | |
| shouji | varchar | 200 | 手机 | | |
| touxiang | varchar | 200 | 头像 | | |
| money | float | | 余额 | | 0 |

表4-10:token表

|---------------|-----------|-----|------|----|-------------------|
| 字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
| id | bigint | | 主键 | 主键 | |
| userid | bigint | | 用户id | | |
| username | varchar | 100 | 用户名 | | |
| tablename | varchar | 100 | 表名 | | |
| role | varchar | 100 | 角色 | | |
| token | varchar | 200 | 密码 | | |
| addtime | timestamp | | 新增时间 | | CURRENT_TIMESTAMP |
| expiratedtime | timestamp | | 过期时间 | | CURRENT_TIMESTAMP |

表4-11:餐厅信息

|------------------|-----------|------------|--------|----|-------------------|
| 字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
| id | bigint | | 主键 | 主键 | |
| addtime | timestamp | | 创建时间 | | CURRENT_TIMESTAMP |
| cantingmingcheng | varchar | 200 | 餐厅名称 | | |
| cantingdizhi | varchar | 200 | 餐厅地址 | | |
| renjunxiaofei | float | | 人均消费 | | |
| yingyeshijian | varchar | 200 | 营业时间 | | |
| cantingjieshao | longtext | 4294967295 | 餐厅介绍 | | |
| cantingtupian | varchar | 200 | 餐厅图片 | | |
| shangjiazhanghao | varchar | 200 | 商家账号 | | |
| lianxidianhua | varchar | 200 | 联系电话 | | |
| sfsh | varchar | 200 | 是否审核 | | 否 |
| shhf | longtext | 4294967295 | 审核回复 | | |
| thumbsupnum | int | | 赞 | | 0 |
| crazilynum | int | | 踩 | | 0 |
| clicktime | datetime | | 最近点击时间 | | |
| clicknum | int | | 点击次数 | | 0 |

表4-12:收藏表

|-----------|-----------|-----|--------------------|----|-------------------|
| 字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
| id | bigint | | 主键 | 主键 | |
| addtime | timestamp | | 创建时间 | | CURRENT_TIMESTAMP |
| userid | bigint | | 用户id | | |
| refid | bigint | | 收藏id | | |
| tablename | varchar | 200 | 表名 | | |
| name | varchar | 200 | 收藏名称 | | |
| picture | varchar | 200 | 收藏图片 | | |
| type | varchar | 200 | 类型(1:收藏,21:赞,22:踩) | | 1 |
| inteltype | varchar | 200 | 推荐类型 | | |

表4-13:地址

|-----------|-----------|-----|---------------|----|-------------------|
| 字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
| id | bigint | | 主键 | 主键 | |
| addtime | timestamp | | 创建时间 | | CURRENT_TIMESTAMP |
| userid | bigint | | 用户id | | |
| address | varchar | 200 | 地址 | | |
| name | varchar | 200 | 收货人 | | |
| phone | varchar | 200 | 电话 | | |
| isdefault | varchar | 200 | 是否默认地址[是/否] | | |

表4-14:商家

|------------------|-----------|-----|------|----|-------------------|
| 字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
| id | bigint | | 主键 | 主键 | |
| addtime | timestamp | | 创建时间 | | CURRENT_TIMESTAMP |
| shangjiazhanghao | varchar | 200 | 商家账号 | | |
| mima | varchar | 200 | 密码 | | |
| shangjiaxingming | varchar | 200 | 商家姓名 | | |
| xingbie | varchar | 200 | 性别 | | |
| nianling | int | | 年龄 | | |
| lianxidianhua | varchar | 200 | 联系电话 | | |
| touxiang | varchar | 200 | 头像 | | |
| money | float | | 余额 | | 0 |

表4-15:订单

|------------------|-----------|------------|-------|----|-------------------|
| 字段名称 | 类型 | 长度 | 字段说明 | 主键 | 默认值 |
| id | bigint | | 主键 | 主键 | |
| addtime | timestamp | | 创建时间 | | CURRENT_TIMESTAMP |
| orderid | varchar | 200 | 订单编号 | | |
| tablename | varchar | 200 | 商品表名 | | meishixinxi |
| userid | bigint | | 用户id | | |
| goodid | bigint | | 商品id | | |
| goodname | varchar | 200 | 商品名称 | | |
| picture | varchar | 200 | 商品图片 | | |
| buynumber | int | | 购买数量 | | |
| price | float | | 价格 | | 0 |
| discountprice | float | | 折扣价格 | | 0 |
| total | float | | 总价格 | | 0 |
| discounttotal | float | | 折扣总价格 | | 0 |
| type | int | | 支付类型 | | 1 |
| status | varchar | 200 | 状态 | | |
| address | varchar | 200 | 地址 | | |
| tel | varchar | 200 | 电话 | | |
| consignee | varchar | 200 | 收货人 | | |
| logistics | longtext | 4294967295 | 物流 | | |
| shangjiazhanghao | varchar | 200 | 商户名称 | | |

5系统实现

校园订餐小程序由前台和后台交互构成。前台是用户对于本系统的使用,用户可以通过手机端登录注册,管理个人信息,选择理想的美食,查看餐厅信息、美食信息等详细信息。

后台主要是管理员模块和商家模块的 ,可对该小程序的用户进行系统管理,登录进后可对用户信息进行管理等操作。

5.1微信小程序端模块实现

本章主要介绍校园订餐小程序的系统实现,根据系统的需求分析,系统设计,系统前台功能区和系统后台功能区的实现。通过以下系统运行界面和核心代码展示。

用户登录,本系统和大部分系统一样都需要登录才能进入系统进行后续操作,用户输入登录名和密码,具体的实现效果如图5-1所示:

图5-1 用户登录界面图

用户注册,在使用本软件前需要新进行登录操作,如果用户还没有账号可先注册然后再登录。具体的实现效果如图5-2所示:

用户登陆小程序端,可以对首页、餐厅信息、美食信息、购物车、我的等功能进行详细操作,如图5-3所示。

图5-3小程序端首页界面图

餐厅信息,在餐厅信息页面可以查看餐厅名称、餐厅地址、图片、人均消费、营业时间、商家账号、联系电话、点击次数、餐厅介绍等信息,并进行评论或收藏操作;如图5-4所示。

图5-4餐厅信息界面图

美食信息,在美食信息页面可以查看美食名称、美食类型、主料、图片、价格、口味、餐厅名称、商家账号、点击次数、库存、美食介绍等信息,并进行加入购物车,立即订购,评论或收藏操作;如图5-5所示。

图5-5美食信息界面图

购物车,在购物车页面可以查看美食名称、图片、单价、数量、总价等信息,并进行立即下单操作;如图5-6所示。

图5-6购物车界面图

用户,在我的页面可以对个人中心、我的收藏管理、用户充值、购物车、我的订单等详细信息进行操作,如图5-7所示。

图5-7用户功能界面图

用户信息,在用户信息页面通过填写账号、密码、姓名、性别、年龄、手机、头像等信息进行保存或退出登录操作;如图5-8所示。

图5-8用户信息界面图

5.2后台模块

系统后台登录,管理员和商家通过输入用户名、密码,选择角色并点击登录进行系统登录操作,如图5-9所示。

图5-9系统后台登录界面图

5.2.1管理员功能模块

管理员登陆系统后,可以对首页、个人中心、用户管理、商家管理、餐厅信息管理、美食信息管理、美食类型管理、系统管理等功能进行详细操作,如图5-10所示。

图5-10管理员功能界面图

用户管理,在用户管理页面可以对索引、账号、姓名、性别、年龄、手机、头像等内容进行详情,修改或删除等操作,如图5-11所示。

图5-11用户管理界面图

商家管理,在商家管理页面可以对索引、商家账号、商家姓名、性别、年龄、联系电话、头像等内容进行详情、修改或删除等操作,如图5-12所示。

图5-12商家管理界面图

餐厅信息管理,在餐厅信息管理页面可以对索引、餐厅名称、餐厅地址、人均消费、营业时间、餐厅图片、商家账号、联系电话、审核回复、审核状态、审核等内容进行详情,查看评论或删除操作,如图5-13所示。

图5-13餐厅信息管理界面图

美食信息管理,在美食信息管理页面可以对索引、美食名称、美食类型、主料、口味、美食图片、餐厅名称、商家账号、价格、单限、库存、审核回复、审核状态、审核等内容进行详情,查看评论或删除操作,如图5-14所示。

图5-14美食信息管理界面图

系统管理,在美食资讯页面可以对索引、标题、图片等内容进行详情,修改或删除等操作,还可以对轮播图管理进行详细操作;如图5-15所示。

图5-15系统管理界面图

5.2.2商家功能模块

商家登陆系统后,可以对首页、个人中心、餐厅信息管理、美食信息管理、订单管理等功能进行详细操作,如图5-16所示。

图5-16商家功能界面图

餐厅信息管理,在餐厅信息管理页面可以对索引、餐厅名称、餐厅地址、人均消费、营业时间、餐厅图片、商家账号、联系电话、审核回复、审核状态等内容进行详情,修改,查看评论或删除操作,如图5-17所示。

图5-17餐厅信息管理界面图

美食信息管理,在美食信息管理页面可以对索引、美食名称、美食类型、主料、口味、美食图片、餐厅名称、商家账号、价格、单限、库存、审核回复、审核状态等内容进行详情,修改,查看评论或删除操作,如图5-18所示。

图5-18美食信息管理界面图

订单管理,在已支付订单页面可以对索引、订单编号、商品名称、商品图片、购买数量、价格、折扣价格、总价格、折扣总价格、支付类型、状态、地址、电话、收货人、商户名称、下单时间等内容进行详情、物流、发货和删除操作,还可对未支付订单、已取消订单、已退款订单、已完成订单、已发货订单进行相对应操作,如图5-19所示。

图5-19订单管理界面图

6 系统测试

6.1 测试目标

进行软件的测试是为了知道在开发过程中的错误,并不是去看程序中有什么问题。进行软件测试的重要意义是提醒人们发现错误,并且对其中的错误进行修改,并不是为了显示程序有多正确。在测试过程中发现了错误,可以对其软件的问题进行分析研究,找到解决问题的办法。此文主要是为了增强管理员的针对性工作,增强其检测效率,找到减少错误的方法,这才是完成产品检测的真实目的。

6.2 测试步骤

在进行程序的测试时,需要我,我们分段进行,一步一步实施。从程序来看,程序是不断发展完善的。通常在一个较大的程序中,我们会将其分为几个小部分,由几个模块组成。所以在进行相对较大的程序测试过程中,基本上包含以下几个步骤:

找到程序中详细的错误部位。

发现程序运行中出现的设计错误。

对错误发现方案进行规范化。

经过上述测试,这个校园订餐小程序在各项操作中可按照预期的设计运行,能够实现校园订餐小程序的开发目标与要求。重要的是,这个系统就是根据用户的需求切身开发,根据对用户需求分析,用最合适的结构保证系统的稳定确保用户在使用该系统的不会崩溃能够稳定的加载出界面,而且为了能让更多年龄层的人都能够使用这个系统让用户很轻易的找到他们所需要的操作。还能够真正的做到以用户为中心进行设计。对于我们这个小程序来说,对系统的质量管控还是比较严格的,如果一个界面出现问题,紧接着页面就会根据错误给出提示追踪到每一行甚至那个单词,从而保证运行的质量。我们这个系统的测试主要就是保证他在运行时的稳定质量。所以经过上述测试结果可以看出,本系统操作流畅。

7总结及展望

7.1 总结

这次的设计是我们毕业的最后一个关卡,通过指导老师的帮助然后上网还有书籍查阅相关资料终于将这个系统完成。当然也缺不了同学的帮助。刚和老师商量课题的时候还非常高兴是一个之前自己接触过的题材,要求的内容也比较显而易见。但是在和指导老师确定任务书时还是比较吃惊因为要用到微信小程序端比较麻烦,需要将一些前台的功能在手机端实现对我来说还是比较吃力的。但通过慢慢的知道开始写任务书,对我要做的项目功能有了更加深刻的理解。前台是用户对于本系统的使用,可以通过手机端登录注册,管理个人信息,个人中心、我的收藏管理、用户充值、购物车、我的订单等。

后台主要是管理员模块和商家,可对该小程序的用户进行系统管理,管理员登录进后可对所有用户进行管理,主要包括首页、个人中心、用户管理、商家管理、餐厅信息管理、美食信息管理、美食类型管理、系统管理等操作。

这次的课题设计真的算是一个大融合,它基本上运用到了我们所学习的关键技术,我们可能之前学过的知识早已忘记但是这次的毕设课题是一次非常好的机会让我们重温之前的专业知识,相当于自己又重新学习了一遍,感觉自己的自我学习能力得到了很大的提升。同时又锻炼了自己的实际动手能力。通过对本系统的开发和探索,我对软件的开发过程有了更加深刻的了解,特别是通过对Java平台的校园订餐小程序的开发,使我对面向对象技术有了较为深入了解和认知。

这次的课题设计让我对独自做一个系统开发有了一个非常深刻的认知,真的是很难,从我自己的角度来讲,首先系统搭建平台的构造就花费了很长时间,在安装这些运行软件的过程中,总会有各种各样的插件问题出现,这个很考验人的耐心,因为在之后的运用过程中我就受此困扰很久。然后之后的开题报告,中期检查中也是有各种描述不明确出现。核心代码部分经常会出现jar包的错误跳转的失败,都需要花很多时间去调试。在这个过程中,出来只是的升高最多的还有自己耐心越来越好了。所以此刻认识还不算太晚,今后一定要努力提高自己的知识水平,同时还是要不断学习,尽可能多的阅览一些专业书籍,从而丰富自己的知识层面。答辩时间迫在眉睫,时间真的有限,这个报告所解决问题的方法还没有很好,希望接下来还有机会将这个报告加工完善。

7.2 展望

目前为止系统只能在我们自己电脑手机上运行,只能像单击操作环境一样自己写的自己可看,如果想让其他人也能使用就需要加入局域网等更加高级的操作。但也有可能本系统还达不到商业的水平,因为我们这个课题设计时间有限,而且我自身的专业知识也不够多,也只能勉勉强强将合格系统搭建出来,不过我还是在这个过程中一直在努力获取心得知识与自己的课题匹配。我相信只要给我时间我还可以把这次的项目完善的更好,效率可以更高的。这次毕业设计的时间虽然不算太长,但使我对很多东西有了更深刻的认识。自己总结了几点让大家共同勉励:认真查阅资料和阅读相关文献非常重要;虚心向老师和同学请教;自己实际操作非常重要,以前我总是觉得只要理论上理解了应该问题不大,然后有很多基本命令代码没有自己去亲自感受一下,所以在这次的调试环节经常出问题,所以大家要记住"代码是调出来的"的道理。对于以后要成为程序员的朋友,真的要比平常人有更多的耐心和毅力,这是一个反复调试反复查看的过程。而且现在网络很发达,随便上网查查就能够得到许多解决方法。

真的大学几年转瞬即逝,本科生涯就要划上句号了。这次毕业设计过程中,我更深刻的认识到了实践动手能力在大学课程中的重要性。虽然校园的学习生涯即将结束,但是我们人生道路的学习才刚刚开始,我们还有接下来这么多年的时间来弥补之前没有好好学习的遗憾。对于我来说之后的工作岗位离学习这些知识还没有特别远,以后还能够多多学习。毕竟越优秀越好。

参考文献

[1]杨选辉.信息系统分析与设计[J].北京:清华大学出版社.2017

[2]钱雪忠.数据库原理及应用[M].北京:北京邮电大学出版社.2017.08

[3]吴建.张旭东.java网络开发入门与实践[J].人民邮电出版社.2016

[4]贺松平.基于MVC的B/S的架构的研究及应用[D].武汉:华中科技大学.2016

[5]毕国锋.java技术的Web应用程序三层设计模型研究[J].黑龙江科技信息.2017.03

[6]青龙老贼,赵黎,方雨,刘琪.微信终极秘籍:精通小程序商业运营[M].北京:电子工业出版社,2019.

[7]戴晟晖.微信公众平台搭建、开发与实践指南[M].北京:中国铁道出版社,2016.

[8]微网.微商城细节知多少?微信小程序在未来几年的发展方向[EB/OL].2019.

[9]李刚.疯狂Ajax讲义:jQuery/ExtJS/Proto.义:jQuery/ExtJS/Prototype/DWR企业应用前端开发实战[M].3版.北京:电子工业出版社,2018.

[10]PaulDeck,林仪明,崔毅.SpringMVC学习指南[M].北京:民邮电出版社,2017

[11]王珊.数据库系统原理教程[M].北京:清华大学出版社,2018,56.

[12]求是科技.java数据库开发技术与工程实践[M].北京:人民邮电出版社,2016,131.

[13]王群,李馥娟.java数据库系统开发完全手册[M].北京:人民邮电出版社,2016.3.39-44

[14]李严,于亚芳,王国辉.java数据库开发实例解析[M].北京:电子工业出版社,2019.12.78-93

[15]王国辉、牛强、李南南java工程应用与项目实践[M].北京:电子工业出版社,2015.4.162-171.

核心代码展示

java 复制代码
/**
 * 公告通知
 * 后端接口
 * @author 
 * @email 
 * @date 2021-03-09 11:33:59
 */
@RestController
@RequestMapping("/news")
public class NewsController {
    @Autowired
    private 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);
	}
	


}
相关推荐
技术无疆16 分钟前
快速开发与维护:探索 AndroidAnnotations
android·java·android studio·android-studio·androidx·代码注入
北岛寒沫17 分钟前
JavaScript(JS)学习笔记 1(简单介绍 注释和输入输出语句 变量 数据类型 运算符 流程控制 数组)
javascript·笔记·学习
2401_8582861118 分钟前
52.【C语言】 字符函数和字符串函数(strcat函数)
c语言·开发语言
铁松溜达py20 分钟前
编译器/工具链环境:GCC vs LLVM/Clang,MSVCRT vs UCRT
开发语言·网络
everyStudy20 分钟前
JavaScript如何判断输入的是空格
开发语言·javascript·ecmascript
无心使然云中漫步2 小时前
GIS OGC之WMTS地图服务,通过Capabilities XML描述文档,获取matrixIds,origin,计算resolutions
前端·javascript
Bug缔造者2 小时前
Element-ui el-table 全局表格排序
前端·javascript·vue.js
C-SDN花园GGbond2 小时前
【探索数据结构与算法】插入排序:原理、实现与分析(图文详解)
c语言·开发语言·数据结构·排序算法
xnian_2 小时前
解决ruoyi-vue-pro-master框架引入报错,启动报错问题
前端·javascript·vue.js
罗政3 小时前
[附源码]超简洁个人博客网站搭建+SpringBoot+Vue前后端分离
vue.js·spring boot·后端