孫 杰,張濤鵬,楊 潔,王君怡
(昌吉學(xué)院航空學(xué)院,新疆 昌吉 831100)
隨著我國高等教育的普及化,高校的在校生規(guī)模迅速擴大,對于高校后勤保障能力和服務(wù)質(zhì)量都提出新的挑戰(zhàn),特別是在用餐高峰期存在排隊長、選餐難、結(jié)賬難、占座難和等餐時間久等突出問題[1],嚴重影響了師生的用餐體驗和正常的學(xué)習工作。在5G 技術(shù)和信息技術(shù)迅速發(fā)展,以及消費升級的大背景下,一些餐飲配送平臺迅速興起,依靠便捷的訂餐方式和快速的送餐服務(wù),成功吸引了一批高校學(xué)生用戶[2]。面對上述問題和挑戰(zhàn),傳統(tǒng)的高校餐飲服務(wù)系統(tǒng)亟需利用新技術(shù)、新方法和新模式提升師生就餐便利性和保障師生餐食的安全性,充分發(fā)揮服務(wù)育人的功能[3]。
“掌上校園幫”訂餐系統(tǒng)主要利用Android 開發(fā)技術(shù)、移動通信技術(shù)和大數(shù)據(jù)技術(shù)構(gòu)建一款連接師生和食堂的智慧預(yù)定餐食APP,既方便學(xué)生快速瀏覽食堂提供的菜品,輕松下單,又能夠讓餐飲管理者及時掌握用餐數(shù)量和時間,精準備餐并優(yōu)化制作流程,不但能為師生節(jié)約用餐時間,而且可以提升高校餐飲服務(wù)質(zhì)量和效率。
“掌上校園幫”訂餐系統(tǒng)采用了兩端一服務(wù)架構(gòu)設(shè)計(如圖1所示),兩端分別是前端與管理端,一服務(wù)主要是指服務(wù)器。
圖1 掌上校園幫系統(tǒng)架構(gòu)
前端一般為手機和平板等師生手持移動設(shè)備,通過APP 向服務(wù)器發(fā)送HTTP 請求,根據(jù)請求類型和參數(shù),調(diào)用對應(yīng)的業(yè)務(wù)邏輯,將的生成JSON 格式數(shù)據(jù)[4]發(fā)送給前端。管理端使用電腦和平板等設(shè)備,通過IE瀏覽器向服務(wù)器發(fā)送HTTP 請求,根據(jù)請求種類和參數(shù),調(diào)用相應(yīng)的業(yè)務(wù)邏輯,訪問數(shù)據(jù)庫并生成HTML、CSS或JS格式的數(shù)據(jù)反饋給管理端。
服務(wù)器主要是響應(yīng)用戶的各種請求,采用開源Django 應(yīng)用框架開發(fā)[5]。在Django 框架中,從客戶端提交的所有請求,先經(jīng)url.py類進行URL映射,再根據(jù)正則運算的結(jié)果調(diào)用views.py類中的視圖函數(shù)進行處理,然后根據(jù)業(yè)務(wù)需求與模型層進行交互,最后響應(yīng)完成請求的。
通過對項目所在高校師生的走訪調(diào)研,并與后勤餐飲管理人員進行充分的溝通,最終確定“掌上校園幫”訂餐系統(tǒng)的主要功能,其功能模塊如下。
⑴瀏覽菜品:通過APP 查看食堂每日提供的主食、菜品、甜食和飲品[6]。
⑵美食推薦:根據(jù)后臺數(shù)據(jù)庫記錄,將購買量和師生點贊量較高的餐食進行排序展示。推薦星級的計算公式是:
其中Rating 表示星級,Sale 表示該食物的每天售賣總量,Comment表示好評量。
⑶訂購餐食:當師生找到自己喜愛的食物時,可以點擊購買按鈕輕松下單。
⑷發(fā)現(xiàn)特色菜肴:將地方特色菜品集中展示,讓來自外地的學(xué)生不出校門就可以品嘗當?shù)靥厣朗场?/p>
⑸評價菜品:根據(jù)自己購買菜品的色澤、味道、份量給出中肯的評價,為其他購買者提供參考,也可幫助制作者改進菜品質(zhì)量。
⑹發(fā)布幫帶信息:充分利用校園內(nèi)川流不息的人流量,發(fā)布順道取餐、代買、取快遞、捎物品等信息。
⑺個人中心:用戶可以修改個人信息和密碼,也可以瀏覽自己訂單記錄或接單幫送記錄,同時還能顯示當前訂單等待的總?cè)藬?shù)和本筆訂單的位次。
除以上APP功能外,管理端還提供添加菜品、刪除菜品、修改菜品價格和查看菜品訂單等功能,方便食堂管理人員發(fā)布和修改菜品,并獲取餐食訂購信息。
根據(jù)“掌上校園幫”APP 的功能,設(shè)計相應(yīng)的界面實現(xiàn)對應(yīng)的操作。
登錄界面(圖2左側(cè)所示)是為檢驗用戶的合法性及保障師生財產(chǎn)安全而設(shè)計。它是用戶接觸APP 的第一個頁面,要從視覺效應(yīng)上傳遞APP 的設(shè)計風格,激發(fā)用戶的興趣。登錄界面使用了約束布局(ConstraintLayout),采用漸變色做為背景,Logo 設(shè)計采用了一名踩著輪滑奔跑的大學(xué)生,充分體現(xiàn)大學(xué)生朝氣蓬勃的精神面貌,另外還利用Photoshop制作較有質(zhì)感的登錄按鈕。注冊界面(圖2右側(cè)所示)同樣使用約束布局并在色調(diào)上與登錄界面保持一致,錄入信息采用TextView、EditText和RadioButton控件實現(xiàn),其中密碼文本控件的inputType 屬性為textPassword,用于隱藏敏感信息。
圖2 登錄和注冊界面
瀏覽菜品和推薦美食界面(圖3 所示)、發(fā)現(xiàn)特色美食和幫帶信息界面需要展示大量的相同格式的信息(圖4 所示),主要采用ListView 和GridView 控件設(shè)計。由于二者都是容器控件,需為列表項設(shè)計布局模板,才能讓容器控件中的每一個item 項顯示格式一致,而其內(nèi)容則由數(shù)據(jù)庫中對應(yīng)字段值決定。
圖3 瀏覽菜品和推薦美食界面
圖4 發(fā)現(xiàn)特色美食和幫帶信息界面
⑴實體類的編寫
系統(tǒng)在使用過程中需要頻繁從數(shù)據(jù)庫中存取數(shù)據(jù),而數(shù)據(jù)庫中的表與Java 中的實體(Entity)類對應(yīng),因此根據(jù)項目需要存儲的數(shù)據(jù),編寫對應(yīng)的JavaBean,本系統(tǒng)涉及到的實體包括用戶實體、菜品實體、訂單實體和幫帶實體等。其中菜品實體類定義如下:
⑵基于okhttp的網(wǎng)絡(luò)請求
APP在運行過程中要通過網(wǎng)絡(luò)與服務(wù)器進行數(shù)據(jù)交換,網(wǎng)絡(luò)請求功能可以實現(xiàn)客戶端向服務(wù)器發(fā)送請求。Android 開發(fā)中常用okhttp 網(wǎng)絡(luò)框架處理客戶端的請求,該框架同時支持HTTP/1.0 和HTTP/2.0 協(xié)議封裝的網(wǎng)絡(luò)請求,并且使用緩存技術(shù)避免了重復(fù)請求。
使用okhttp 網(wǎng)絡(luò)請求時,首先要工廠模式構(gòu)建okHttpClient對象,其次是生成Request對象,然后創(chuàng)建call 對象執(zhí)行請求,最后調(diào)用call 對象的enqueue 方法監(jiān)聽響應(yīng)結(jié)果。
⑶編寫Adapter類
由于ListView 和GridView 屬于容器類控件,不能直接添加子項,因此在呈現(xiàn)數(shù)據(jù)的時候需要編寫Adapter 類將AdapterView 加入,它是將AdapterView和數(shù)據(jù)源連接的橋梁,可以將二者輕松綁定。其中菜品展示的適配器類如圖5所示。
Adapter 類要繼承BaseAdapter 父類,其中包含有泛型列表類型、上下文類型和布局服務(wù)類型的屬性,并在構(gòu)造函數(shù)中對上述三個屬性進行初始化。列表對象mFoods的值是從服務(wù)器獲取,它用于給對應(yīng)的控件賦值,MContext指定上下文環(huán)境,mInflater是Layout文件夾中指定xml 布局文件的實例化對象,作用類似于findViewById()方法。
另外,編寫的Adapter類要覆寫父類的getCount()、getItem()、getItemID()和getView()四個方法,其功能依次為返回列表對象長度、返回當前列表項、返回當前列表項ID 和更新視圖控件值。內(nèi)部類ViewHolder 是為了優(yōu)化性能而定義,它將所有的列表項控件進行封裝,使得這些控件只需初始化一次,后續(xù)便可反復(fù)更新數(shù)據(jù),提升了APP的運行性能。
管理端主要使用Django 和Xadmin 共同開發(fā),由于Xadmin 使用bootstrap 框架構(gòu)建,相較于Django 框架自帶的admin 后臺管理模塊界面更加美觀,而且可以支持多種尺寸屏幕。
安裝完Xadmin 模塊后,在管理端應(yīng)用下創(chuàng)建adminx.py 文件,用import命令導(dǎo)入Xadmin 模塊、菜品類、訂單類和其他需要后臺管理的類,再調(diào)用Xadmin.site.register()方法注冊這些模型類,然后設(shè)置模型字段的呈現(xiàn)方式、設(shè)置搜索字段、過濾字段、排序字段等,最后添加LoginAdmin類和SysSetting類分別用于設(shè)置登錄和修改瀏覽器顯示信息,這部分的實現(xiàn)代碼如下:
本文使用Android 移動開發(fā)技術(shù)和Django 應(yīng)用框架開了高校食堂訂餐系統(tǒng),既可以實現(xiàn)師生通過APP輕松購買食堂提供的餐食,又能讓后勤餐飲管理者精準掌握每日學(xué)生用餐數(shù)量和就餐時間,提升了服務(wù)質(zhì)量,進而提高了高校后勤信息化保障能力。后續(xù),將在此基礎(chǔ)上增加美食搜索功能,縮短師生查找食物所花費的時間,進一步優(yōu)化系統(tǒng)功能。