基于Android的高校食堂订餐系统“掌上校园帮”设计与开发*

2023-01-30 04:08张涛鹏王君怡
计算机时代 2023年1期
关键词:餐食订餐控件

孙 杰,张涛鹏,杨 洁,王君怡

(昌吉学院航空学院,新疆 昌吉 831100)

0 引言

随着我国高等教育的普及化,高校的在校生规模迅速扩大,对于高校后勤保障能力和服务质量都提出新的挑战,特别是在用餐高峰期存在排队长、选餐难、结账难、占座难和等餐时间久等突出问题[1],严重影响了师生的用餐体验和正常的学习工作。在5G 技术和信息技术迅速发展,以及消费升级的大背景下,一些餐饮配送平台迅速兴起,依靠便捷的订餐方式和快速的送餐服务,成功吸引了一批高校学生用户[2]。面对上述问题和挑战,传统的高校餐饮服务系统亟需利用新技术、新方法和新模式提升师生就餐便利性和保障师生餐食的安全性,充分发挥服务育人的功能[3]。

1 “掌上校园帮”订餐系统

“掌上校园帮”订餐系统主要利用Android 开发技术、移动通信技术和大数据技术构建一款连接师生和食堂的智慧预定餐食APP,既方便学生快速浏览食堂提供的菜品,轻松下单,又能够让餐饮管理者及时掌握用餐数量和时间,精准备餐并优化制作流程,不但能为师生节约用餐时间,而且可以提升高校餐饮服务质量和效率。

1.1 系统架构设计

“掌上校园帮”订餐系统采用了两端一服务架构设计(如图1所示),两端分别是前端与管理端,一服务主要是指服务器。

图1 掌上校园帮系统架构

前端一般为手机和平板等师生手持移动设备,通过APP 向服务器发送HTTP 请求,根据请求类型和参数,调用对应的业务逻辑,将的生成JSON 格式数据[4]发送给前端。管理端使用电脑和平板等设备,通过IE浏览器向服务器发送HTTP 请求,根据请求种类和参数,调用相应的业务逻辑,访问数据库并生成HTML、CSS或JS格式的数据反馈给管理端。

服务器主要是响应用户的各种请求,采用开源Django 应用框架开发[5]。在Django 框架中,从客户端提交的所有请求,先经url.py类进行URL映射,再根据正则运算的结果调用views.py类中的视图函数进行处理,然后根据业务需求与模型层进行交互,最后响应完成请求的。

1.2 系统功能设计

通过对项目所在高校师生的走访调研,并与后勤餐饮管理人员进行充分的沟通,最终确定“掌上校园帮”订餐系统的主要功能,其功能模块如下。

⑴浏览菜品:通过APP 查看食堂每日提供的主食、菜品、甜食和饮品[6]。

⑵美食推荐:根据后台数据库记录,将购买量和师生点赞量较高的餐食进行排序展示。推荐星级的计算公式是:

其中Rating 表示星级,Sale 表示该食物的每天售卖总量,Comment表示好评量。

⑶订购餐食:当师生找到自己喜爱的食物时,可以点击购买按钮轻松下单。

⑷发现特色菜肴:将地方特色菜品集中展示,让来自外地的学生不出校门就可以品尝当地特色美食。

⑸评价菜品:根据自己购买菜品的色泽、味道、份量给出中肯的评价,为其他购买者提供参考,也可帮助制作者改进菜品质量。

⑹发布帮带信息:充分利用校园内川流不息的人流量,发布顺道取餐、代买、取快递、捎物品等信息。

⑺个人中心:用户可以修改个人信息和密码,也可以浏览自己订单记录或接单帮送记录,同时还能显示当前订单等待的总人数和本笔订单的位次。

除以上APP功能外,管理端还提供添加菜品、删除菜品、修改菜品价格和查看菜品订单等功能,方便食堂管理人员发布和修改菜品,并获取餐食订购信息。

2 APP设计与实现

2.1 界面设计

根据“掌上校园帮”APP 的功能,设计相应的界面实现对应的操作。

登录界面(图2左侧所示)是为检验用户的合法性及保障师生财产安全而设计。它是用户接触APP 的第一个页面,要从视觉效应上传递APP 的设计风格,激发用户的兴趣。登录界面使用了约束布局(ConstraintLayout),采用渐变色做为背景,Logo 设计采用了一名踩着轮滑奔跑的大学生,充分体现大学生朝气蓬勃的精神面貌,另外还利用Photoshop制作较有质感的登录按钮。注册界面(图2右侧所示)同样使用约束布局并在色调上与登录界面保持一致,录入信息采用TextView、EditText和RadioButton控件实现,其中密码文本控件的inputType 属性为textPassword,用于隐藏敏感信息。

图2 登录和注册界面

浏览菜品和推荐美食界面(图3 所示)、发现特色美食和帮带信息界面需要展示大量的相同格式的信息(图4 所示),主要采用ListView 和GridView 控件设计。由于二者都是容器控件,需为列表项设计布局模板,才能让容器控件中的每一个item 项显示格式一致,而其内容则由数据库中对应字段值决定。

图3 浏览菜品和推荐美食界面

图4 发现特色美食和帮带信息界面

2.2 APP核心代码实现

⑴实体类的编写

系统在使用过程中需要频繁从数据库中存取数据,而数据库中的表与Java 中的实体(Entity)类对应,因此根据项目需要存储的数据,编写对应的JavaBean,本系统涉及到的实体包括用户实体、菜品实体、订单实体和帮带实体等。其中菜品实体类定义如下:

⑵基于okhttp的网络请求

APP在运行过程中要通过网络与服务器进行数据交换,网络请求功能可以实现客户端向服务器发送请求。Android 开发中常用okhttp 网络框架处理客户端的请求,该框架同时支持HTTP/1.0 和HTTP/2.0 协议封装的网络请求,并且使用缓存技术避免了重复请求。

使用okhttp 网络请求时,首先要工厂模式构建okHttpClient对象,其次是生成Request对象,然后创建call 对象执行请求,最后调用call 对象的enqueue 方法监听响应结果。

⑶编写Adapter类

由于ListView 和GridView 属于容器类控件,不能直接添加子项,因此在呈现数据的时候需要编写Adapter 类将AdapterView 加入,它是将AdapterView和数据源连接的桥梁,可以将二者轻松绑定。其中菜品展示的适配器类如图5所示。

Adapter 类要继承BaseAdapter 父类,其中包含有泛型列表类型、上下文类型和布局服务类型的属性,并在构造函数中对上述三个属性进行初始化。列表对象mFoods的值是从服务器获取,它用于给对应的控件赋值,MContext指定上下文环境,mInflater是Layout文件夹中指定xml 布局文件的实例化对象,作用类似于findViewById()方法。

另外,编写的Adapter类要覆写父类的getCount()、getItem()、getItemID()和getView()四个方法,其功能依次为返回列表对象长度、返回当前列表项、返回当前列表项ID 和更新视图控件值。内部类ViewHolder 是为了优化性能而定义,它将所有的列表项控件进行封装,使得这些控件只需初始化一次,后续便可反复更新数据,提升了APP的运行性能。

3 管理端设计与实现

管理端主要使用Django 和Xadmin 共同开发,由于Xadmin 使用bootstrap 框架构建,相较于Django 框架自带的admin 后台管理模块界面更加美观,而且可以支持多种尺寸屏幕。

安装完Xadmin 模块后,在管理端应用下创建adminx.py 文件,用import命令导入Xadmin 模块、菜品类、订单类和其他需要后台管理的类,再调用Xadmin.site.register()方法注册这些模型类,然后设置模型字段的呈现方式、设置搜索字段、过滤字段、排序字段等,最后添加LoginAdmin类和SysSetting类分别用于设置登录和修改浏览器显示信息,这部分的实现代码如下:

4 结束语

本文使用Android 移动开发技术和Django 应用框架开了高校食堂订餐系统,既可以实现师生通过APP轻松购买食堂提供的餐食,又能让后勤餐饮管理者精准掌握每日学生用餐数量和就餐时间,提升了服务质量,进而提高了高校后勤信息化保障能力。后续,将在此基础上增加美食搜索功能,缩短师生查找食物所花费的时间,进一步优化系统功能。

猜你喜欢
餐食订餐控件
一种基于移动端的航空餐食销售系统的研究与实现
关于.net控件数组的探讨
动车订餐
世界银行:可持续的学校餐食计划要避免“一刀切”
ASP.NET服务器端验证控件的使用
精确化的航班餐食管理
基于嵌入式MINIGUI控件子类化技术的深入研究与应用
Spreadsheet控件在Delphi数据库系统中的编程与应用