高校食堂移动预约点餐系统的设计与实现
2018-01-04张黎娜童敏张文盛
张黎娜 童敏 张文盛
摘要:该文以安徽广播电视大学的食堂现状为基础,开发的高校食堂移动预约点餐系统可以满足高校用户通过移动设备实现就餐地点、就餐时间、菜品数量的选择,就餐人数、就餐食物数量的统计。对于节省人力、提高效率都有显著作用,并且有利于数据的流动管理。
关键词:微信;移动点餐;系统设计;系统实现
中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2018)30-0052-03
Abstract: The paper that development of the mobile reservation system for college canteens,based on the present situation of Anhui radio and Television University,can meet the choice of the place of dining, the time of eating,the number of the dishes ,and count the numbers of people and dishes. This system has a significant effect on saving manpower and improving efficiency, and is beneficial to the management of data.
Key words: WeChat; mobile order; system designing; system implementation
高校食堂一直以来存在的问题,就餐食堂的选择,就餐人数多,排队时间长,菜品种类单一,食物准备不足,食物严重浪费。本文以安徽广播电视大学的食堂现状为基础,开发的高校食堂移动预约点餐系统可以满足用户的预约点餐;食堂管理者对就餐人数,时间,食材数量的把控,有效地实现了随时随地点餐,食堂的动态管理,菜品多样化等,避免或减少上述问题的出现。
为了适应移动互联网时代发展趋势,本系统借助微信平台接口[1],与安徽广播电视大学微信公众号绑定,用户在微信端关注安徽电大微信公众号,选择微服务-微点餐即可进入。
1 预约点餐系统的设计与实现
1.1 设计目标
食堂预约点餐系统以简便、易用为设计目标,以所见即所得为设计指导,实现用户通过移动设备随时随地点餐,食堂管理人员对用餐人数、用餐量较准确的的统计,提高用户的体验感及食堂的管理水平。
1.2 设计思想
食堂点餐管理系统主要分为前台点餐页面、后台管理两部分,点餐页面有访问权限设置,管理员要事先导入学校教职工信息,并建立个人账户,账户内存储着用户的个人信息和订单记录信息。用户首次点餐时,需输入个人相关信息和微信号进行绑定,系统自动验证登录信息的有效性(可以保存登录信息,下次直接登录,提升用户体验),然后进行预约点餐,提交点餐请求,若被系统验证成功则存储点餐纪录;后台管理权限分为:超级管理员、食堂管理员两个角色,超级管理员拥有所有的权限,食堂管理员只能操作规定范围内的功能模块,如:在菜品库添加菜品,日常配餐,订单管理,就餐日期、人数、菜品数量的统计等。
食堂预约点餐系统前台以图片列表的形式,直观地显示就餐日期,不同时间段食堂提供的菜品。用户登录后可以点选自己需要的食物,输入菜品數量,提交自己的预约点餐信息即可,界面非常简单、便捷、易操作,在点餐期间可以取消或是修改自己的点餐信息(菜品数量)。管理后台以树形结构陈列管理功能,操作直观、简单、便捷。
1.3 软硬件配置
本系统需要一台普通的服务器,安装windows 2008操作系统,MySQL5.6和PHP7。系统基于B/S架构,采用Windows2008+PHP(fastCGI)[2]+MS SQL2005配置。IIS7内置fatcgi模块,可以在运行fastCGI模式的脚本引擎。PHP运行在fastCGI模式下,是一种最高效和最安全的运行模式,支持大并发量和高负载。PHP7内置Opcache模块能够缓存PHP的中间代码,节省编译时间,优化执行。MySQL5.6[2]属于小型数据库产品,支持绝大多数重要特性,性能完全满足需求。在PHP中使用PDO接口通过PDO_MYSQL驱动连接MYSQL数据库。软件关系如图1.
1.4 开发框架
本系统开发框架有前端和后端组成。前端开发框架主要面向用户,提供良好的人机界面,方便用户使用系统。后端开发框架主要面向程序员,提供良好的编程模型和框架,满足软件工程的模块化、可扩展、可重用、可配置和轻量级等要求,方便编程。本系统基于MVC模型开发,采用国人开发的禅道框架[3],前端框架采用YourPhp模板[4]。
1.5 系统流程图
系统流程图如图2所示。
1.6 系统组成及功能划分
预约点餐系统主要包括前台页面和后台页面两部分。前台页面实现用餐地点、用餐时间的选择、菜品浏览、菜品选择、用户登录、用户预约信息提交,个人信息维护和用户历史订单查询等功能。后台页面实现用户管理、菜品库管理、订单管理、配餐管理和日志管理等功能。系统主要功能模块如图3所示。
1.7 表结构设计[5]
系统总共有5张表,菜品库表用于存储食堂所有菜品信息,后台的配餐模块是基于菜品库中的菜品进行选择配餐的;配餐表用于保存每日每个就餐时间段食堂提供的菜品信息,前台的界面的浏览的菜品信息基于此表;预约表用于存储用户某日某个时间段内预约的菜品信息,食堂管理后台的就餐时间段人数统计、菜品统计,都是基于预约表的信息;用户信息表用于存储了用户个人信息;日志表主要用于存储用户的一些操作信息。各个表的字段设计如下:
菜品库表(菜品id,菜品名,所属类型,图片,价格,删除标志);
配餐表(菜品id,日期,就餐时间段,菜品名,删除标志);
预约表(预约id,用户id,下单时间,日期,就餐时间段,菜品名,配餐id,数量,删除标志);
用户信息表(用户类型,用户姓名,部门,微信id,访问次数,最后ip,最后登录时间,角色);
日志表(id,对象类型,对象id,操作者,动作,时间,IP,操作内容)
2 系统功能实现的部分截图
2.1前台
2.2 后台
2.4 部分关键代码
配餐管理部分代码
foreach ($menus as $menu) {
if (isset($map[$menu->food])) {
die('dup food');
}
$map[$menu->food] = $menu;
}
//当前选中菜品
$curfood = array();
foreach ($_POST as $id => $v) {
$a = explode('_', $id);
if ($a[0] <> 'food') continue;
$foodID = $a[1];
if (!isset($foods[$foodID])) {
throw new Exception($this->lang->error->idInvalid);
}
$curfood[$foodID] = 1;
}
//查找新分配的菜品
foreach ($curfood as $foodID => $v) {
//未找到,新分配
if (!isset($map[$foodID])) {
$data = new stdClass();
$data->date = $date;
$data->type = $type;
$data->food = $foodID;
$this->dao->insert(TABLE_MENU)->data($data)
->exec();
$menuID = $this->dao->lastInsertID();
$this->log->create('menu', $menuID, 'update', $data);
}
}
//查找删除的菜品
foreach ($map as $foodID => $menu) {
//已分配的菜品未选中,删除
if (!isset($curfood[$foodID])) {
$food = $foods[$foodID];
//关联
$row =
$this->dao->select('count(*) as num')->from(TABLE_ORDER)
->where('deleted')->eq(0)
->andWhere('menu')->eq($menu->id)
->fetch();
}
3 结束语
通过高校食堂移动预约点餐系统的开发,满足了高校用户通过移动设备实现就餐地点、就餐时间、菜品数量的选择,就餐人数、就餐食物数量的统计,对于节省人力、提高效率都有显著效果,并且有利于数据的流动和管理。
参考文献:
[1] 闫小坤,周涛.微信公众平台应用开发从入门到精通[M]. 北京:清华大学出版社,2015.
[2] Brett McLaughlln. PHP&MySQL;实战手册[M]. 2版. 北京:中国电力出版社,2014.
[3] 周洪艳,林超,丁颂.基于Android的点餐系统APP设计[J].长春师范大学学报,2016(12).
[4] 李淑娟,周伟,强宓詠.高校智慧点餐系統的探索与实践[J].华中师范大学学报:自然科学版,2017(S1).
[5] 王欣. 智能电子点菜系统的研究[D]. 北京:北京交通大学,2017.
【通联编辑:梁书】