傅俊松 曾麗
摘 ?要:近年來隨著高校的擴招,大學(xué)生人數(shù)越來越多,食堂里面的菜肴也變得五花八門,但學(xué)生每天都面臨著不知吃什么的問題,當(dāng)前學(xué)校食堂提供的服務(wù)滿足不了學(xué)生多樣化的需求。文章根據(jù)對四川大學(xué)錦城學(xué)院食堂現(xiàn)狀的調(diào)研,通過使用SpringBoot、Vue等技術(shù)設(shè)計高校食堂就餐系統(tǒng),實現(xiàn)菜肴推薦、菜肴收藏等功能,為學(xué)生日常選餐提供參考;還實現(xiàn)食堂管理、用戶管理等服務(wù),加強學(xué)校對食堂的日常管理。
關(guān)鍵詞:SpringBoot;食堂管理;Vue
中圖分類號:TP311 ? ? 文獻標(biāo)識碼:A 文章編號:2096-4706(2021)06-0005-04
Design of University Canteen Dining System Based on SSM
——Take Jincheng College of Sichuan University as an Example
FU Junsong,ZENG Li
(School of Computer and Software,Jincheng College of Sichuan University,Chengdu ?611731,China)
Abstract:In recent years,with the enrollment expansion of universities,the number of university students is increasing,and the dishes in the university canteen have become multifarious,but students are faced with the problem of not knowing what to eat every day,and the service provided by the current university canteen can not meet the diversified needs of students. Based on the investigation of the canteen status of Jincheng College of Sichuan University,this paper designs the university canteen dining system by using SpringBoot,Vue and other technologies,and realizes the functions of dishes recommendation and dishes collection,so as to provide reference for students' daily meal selection;it also realizes the canteen management,user management and other services,and strengthens the daily management of the university canteen.
Keywords:SpringBoot;canteen management;Vue
0 ?引 ?言
高校食堂作為高校后勤的保障,始終為高校內(nèi)的一切教學(xué)活動、科研活動和師生的基本生活提供強有力的保障[1]。高校食堂里菜肴種類繁多,各具特色,學(xué)生每天都面臨著吃什么的問題,但是學(xué)生在大多數(shù)情況下只能通過周圍身邊同學(xué)的推薦選擇就餐,無法對學(xué)校食堂全部的菜肴有著清晰的了解;且當(dāng)前落后的食堂管理模式滿足不了學(xué)生多樣化的需求。因此,為了方便學(xué)生就餐,提高學(xué)校食堂的管理水平,本文設(shè)計了一套高校食堂就餐系統(tǒng)來解決上述問題。借助于本系統(tǒng),在大數(shù)據(jù)分析下,食堂可以根據(jù)學(xué)生的口味做出調(diào)整和提高,同時改善餐飲的質(zhì)量,進一步提高學(xué)生校園生活滿意度[2]。
1 ?系統(tǒng)主要技術(shù)選擇以及介紹
1.1 ?SpringBoot框架
SpringBoot通過對配置和啟動依賴的約定,簡化復(fù)雜的依賴關(guān)系,大大減少了XML配置文件,基本實現(xiàn)了自動化定位,可以快速創(chuàng)建獨立運行的Spring項目,并集成了大量主流框架,如MyBatis、Redis等[3]。因此對SpringBoot應(yīng)用程序而言只需要輸入一部分的配置代碼,便可以完成相應(yīng)的功能。所以開發(fā)人員可以更專注于業(yè)務(wù)邏輯的開發(fā)。
1.2 ?MyBatis框架
MyBatis是目前世界上優(yōu)秀的持久化層框架,可以實現(xiàn)雙向映射。它可以將數(shù)據(jù)集映射到Java對象或?qū)ava對象映射到數(shù)據(jù)庫中的記錄。映射方法可以通過注釋或XML文件的形式來完成,在本系統(tǒng)中以XML文件的形式映射。
1.3 ?Vue
Vue是一個逐步建立JS用戶界面的框架。Vue的整個生命周期包括初始化、加載、更新和銷毀。它具有八個掛鉤功能,用于不同的生命周期階段。該系統(tǒng)中使用最多的是掛接功能,該功能通常用于Vue生命周期的加載階段。目前采用SpringBoot結(jié)合Vue的這種流行模式,其優(yōu)勢是相當(dāng)大的,在能夠使得用戶界面更加美觀的境況下用戶體驗也更好,同時還能夠提高系統(tǒng)開發(fā)和擴展性[4]。
2 ?系統(tǒng)功能模塊分析
以四川大學(xué)錦城學(xué)院為例,該校擁有八個食堂,每個食堂擁有25~35個窗口,每個窗口又提供5~10種不同的菜肴,并且不同的食堂之間可能又提供相同的菜肴,但其口味、價格、分量可能略微有差異。例如三食堂和五食堂都有啵啵魚窗口,但是三食堂的偏辣,而五食堂的分量又多一點。而與此同時,食堂里的窗口又沒有體現(xiàn)這些“細(xì)節(jié)”,所以這就有可能造成學(xué)生一到飯點面臨選擇吃飯困難的境地。本文根據(jù)該高校的實際情況需求,對用戶群體主要分為三個模塊:學(xué)生模塊、商家模塊和管理員模塊(即校方模塊,后統(tǒng)稱管理員模塊),如圖1所示。
學(xué)生模塊為學(xué)生提供服務(wù),學(xué)生在未登錄的情況下僅可查看推薦菜肴和推薦的窗口,若想查看更多的信息則需要注冊登錄。在登錄以后,學(xué)生可以查看所有關(guān)于菜肴和窗口的具體信息。學(xué)生可以通過菜肴的相應(yīng)字段篩選自己心儀的菜肴;也可以根據(jù)歷史瀏覽量和學(xué)生對于菜肴的歷史相關(guān)評論進行選擇。而學(xué)生只有在購買菜肴后,才能對其購買的菜肴進行評論。如果學(xué)生覺得某種菜肴還不錯,學(xué)生可以對其進行收藏,以便下次直接購買。而在個人中心,學(xué)生可以看到自己歷史購買訂單,知曉自己一個月內(nèi)在用餐方面的花銷,方便學(xué)生們進行合理的用餐規(guī)劃。
商家模塊供商家使用。如果一個人想成為商戶,在注冊登錄后點擊個人中心的商戶申請,填寫相關(guān)信息,待管理員批準(zhǔn)后即可成為商戶。商家擁有創(chuàng)建窗口、管理窗口等權(quán)限。此外,商家還可以每個月根據(jù)自己旗下窗口的訂單,一鍵導(dǎo)出營業(yè)額,以此來查看自己每月的盈虧。
管理模塊僅由管理員一人使用。管理員的功能有三大類,分別是用戶管理類、營銷管理類、窗口管理類。
第一,用戶管理類。管理員審核用戶成為商戶的請求,待確認(rèn)符合相關(guān)要求后,即可通過請求。若不符合要求便拒絕其請求。此外,管理員還可以對商家和學(xué)生的相關(guān)信息進行修改、審核認(rèn)證信息、幫助同學(xué)和商家找回密碼等。
第二,營銷管理類。管理員可以對優(yōu)質(zhì)菜肴和新型菜肴進行首頁推薦,以便學(xué)生們更好的選擇菜肴。若發(fā)現(xiàn)當(dāng)前菜肴不符合推薦標(biāo)準(zhǔn),管理員便可下架其推薦位。管理員還可以在分類管理中,添加菜肴的分類來豐富菜肴的種類。
第三,窗口管理類。管理員在窗口管理中可以根據(jù)當(dāng)前窗口的相關(guān)狀態(tài)來決定是否關(guān)閉該窗口,也可以對那些未發(fā)布但符合標(biāo)準(zhǔn)的窗口進行發(fā)布。另外,管理員有權(quán)查看每個窗口各個月的營銷情況,并以此作為優(yōu)質(zhì)窗口的推薦位標(biāo)準(zhǔn)之一。而在評論管理中,管理員可以根據(jù)評論時間、評論者等條件查詢相關(guān)評論,也可以刪除某些惡意評論和刷單評論。
3 ?系統(tǒng)主要設(shè)計
高校食堂就餐系統(tǒng)主要包括數(shù)據(jù)庫設(shè)計、用戶設(shè)計、登錄設(shè)計、評論設(shè)計、推薦設(shè)計等。每種設(shè)計的過程和思路都很相似,因此本文選取了幾種主要的設(shè)計過程進行介紹。
3.1 ?數(shù)據(jù)庫設(shè)計
數(shù)據(jù)庫負(fù)責(zé)完成數(shù)據(jù)收集、存儲、處理及系統(tǒng)維護功能,是信息管理系統(tǒng)的核心。合理運用數(shù)據(jù)庫原理知識,可以提高數(shù)據(jù)存儲效率,降低數(shù)據(jù)庫后期維護和升級的難度[5]。本系統(tǒng)數(shù)據(jù)庫設(shè)計包含了窗口表、評論表、菜肴表、評分表、用戶表等共九個表。表1、表2將詳細(xì)展示本系統(tǒng)的部分表結(jié)構(gòu)。
3.2 ?用戶設(shè)計
本系統(tǒng)的用戶分為:學(xué)生、商家、管理員。在登錄時攔截器通過對用戶的roles字段進行判斷,然后跳轉(zhuǎn)到不同的界面,進而實現(xiàn)相應(yīng)的功能。例如管理員的roles字段為:USER|BUSINESS|ADMIN,那么在登錄后,系統(tǒng)管理員便可以對商家或?qū)W生進行篩選、查看其詳細(xì)的個人信息、修改他們的密碼等操作,管理員界面如圖2所示。學(xué)生和商家均可更改修改自己的密碼,也可以向管理員求助找回密碼。但在修改密碼時需要注意下面幾點:(1)輸入的舊密碼必須正確。(2)新密碼與舊密碼不能重合。(3)密碼的長度為5~20位,并且區(qū)分大小寫。
3.3 ?登錄設(shè)計
用戶在首次登錄時需要填寫相關(guān)信息進行注冊。登錄時會進行校對:將密碼與輸入的用戶名或郵件地址進行驗證。當(dāng)用戶登錄時,系統(tǒng)獲取存儲在數(shù)據(jù)庫中的鹽值信息。獲得用戶的隨機鹽值后,使用MD5進行二次加密,并將加密后的密碼與存儲在數(shù)據(jù)庫中的密碼進行比較。驗證通過后,URL跳轉(zhuǎn)到系統(tǒng)首頁。如果驗證顯示不通過,登錄信息將根據(jù)提示信息進行修改。登錄時使用前后端雙重檢查,使用正則表達式判斷用戶輸入的密碼是否符合規(guī)則。正則表達式為:當(dāng)密碼符合驗證規(guī)則時,密碼通過POST請求發(fā)送給服務(wù)器。服務(wù)器收到密碼后,將其轉(zhuǎn)換為隨機數(shù)鹽值,然后進行第二次MD5加密,確保用戶密碼的安全性,防止用戶密碼被人惡意破解。系統(tǒng)會在工具類中生成隨機數(shù)鹽值和二次MD5加密,方便系統(tǒng)獲取,SaltUitl代碼為:
public static String getSalt(int n){
char[]chars=("1234567890"+"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ").toCharArray();
StringBuilder someOne = new StringBuilder();
for(int i = 0;i < n;i++){
//獲取隨機值
char aChar = chars[new Random().nextInt(chars.length)];
someOne.append(aChar);
}
return someOne.toString();
}
3.4 ?評論設(shè)計
為了加強學(xué)生的使用感以及能快速了解菜肴的相關(guān)信息,在本系統(tǒng)中設(shè)有評論功能。未加入系統(tǒng)的用戶(包括未登錄的用戶)無法在系統(tǒng)首頁查看相關(guān)評論。只有登錄后才可查看,但未購買菜肴則不能對其發(fā)表評論。評論的等級分為1~5星,星星的數(shù)量越高代表對菜肴的滿意度越高。學(xué)生可以通過查看星級和評論來篩選自己心儀的菜肴。系統(tǒng)管理員可以在后臺對學(xué)生的評論進行查詢和刪除,以隨時調(diào)整產(chǎn)品的數(shù)量和維護系統(tǒng)環(huán)境。管理員可以對評論內(nèi)容和評論時間間隔進行篩選,實現(xiàn)篩選評論的邏輯為:根據(jù)輸入的用戶名或菜肴名,模糊查詢其所在的表,返回list形式的實體類,再取其id組合形成list列表,然后根據(jù)這些條件去數(shù)據(jù)庫中查詢獲取時間。如果管理員沒有選擇評論開始日期,那么開始時間戳將是1970年1月1日。而如果沒有選擇評論結(jié)束日期,結(jié)束時間戳將是當(dāng)前系統(tǒng)日期到時間戳。大致的實現(xiàn)思路為:
//根據(jù)用戶名模糊查詢返回相關(guān)用戶
List
//將查詢到的相關(guān)用戶的Id整合成userIdList
List
.collect(Collectors.toList());
//查詢所有菜肴,將菜肴的所有狀態(tài)整合成statusList
List
List
.collect(Collectors.toList());
//最后根據(jù)這些條件去數(shù)據(jù)庫中查詢
List
3.5 ?推薦設(shè)計
為了讓學(xué)生有更好的用餐體驗,本系統(tǒng)對優(yōu)質(zhì)的菜肴和窗口進行推薦。同時出于對新型菜肴的扶持,本系統(tǒng)也一并設(shè)有推薦位。在實際情況中,用戶的不同操作會影響數(shù)據(jù)的分布,例如:每個人在點完餐之后不一定會對菜肴進行評分或每個人每次都點推薦位的菜肴等情況。所以,這種類似的操作會造成部分?jǐn)?shù)據(jù)的缺失。因此,系統(tǒng)在推薦設(shè)計時參考了ALS算法。ALS是以基于用戶的協(xié)同過濾算法和基于物品的協(xié)同過濾算法的優(yōu)點發(fā)展而來的算法[6],它可以很好的兼顧User和Item,較好的反映二者之間的相關(guān)性。推薦設(shè)計的主要指標(biāo)基于菜肴和窗口的各項數(shù)據(jù),如菜肴的總歷史瀏覽量(10%)、訂單量(25%)、評論分?jǐn)?shù)(25%)、收藏人數(shù)(30%)、其他(10%)等。再結(jié)合考核成績:每周五定時考核(40%)以及平日不定時考核的成績(60%)進行綜合測評。系統(tǒng)將這些數(shù)據(jù)收集起來,進行不同權(quán)重的加權(quán),計算出各個菜肴和窗口的得分,然后將這些分?jǐn)?shù)從高到低排名,取前五上推薦位。而對新類型菜肴推薦的主要考察指標(biāo)為前期網(wǎng)上問卷調(diào)查的結(jié)果(20%)和試吃效果(30%)以及管理員實地對菜肴的考察(50%)。當(dāng)新型菜肴的分?jǐn)?shù)位于同期新型菜肴的分?jǐn)?shù)榜前三即可上推薦位。
4 ?結(jié) ?論
高校食堂就餐系統(tǒng)應(yīng)用了SpringBoot、MyBatis、Vue等框架技術(shù)進行開發(fā),在一定程度上提高了本系統(tǒng)的開發(fā)速度,在保障用戶體驗的同時也加強了系統(tǒng)安全。本系統(tǒng)實現(xiàn)了學(xué)生點餐管理、收藏管理、商家訂單管理和管理員后臺對于本系統(tǒng)的統(tǒng)籌管理。滿足了學(xué)生日常對于選餐、點餐的基本要求,實現(xiàn)了商家實時對學(xué)生需求的掌控,以便及時做出相應(yīng)服務(wù)的調(diào)整。最后本系統(tǒng)還提升了學(xué)校對食堂管理的效率,鞏固其日常對食堂的管理。
但是,由于本系統(tǒng)開發(fā)時間有限,后期還需要做進一步的優(yōu)化,比如在進行查詢菜肴的時候,增加對菜肴的價格、口味等條件查詢,進一步方便學(xué)生使用;在推薦設(shè)計的時候?qū)⒉穗鹊某煞挚紤]進來,以便將合適的菜肴推薦給適宜的人群;還有系統(tǒng)主頁面的設(shè)計不夠細(xì)致,交互方式較為單一等等,這些都是后面優(yōu)化改進的方向。
參考文獻:
[1] 吳彤群.高校食堂管理現(xiàn)狀及改革研究 [D].徐州:江蘇師范大學(xué),2017.
[2] 陳江輝,於立杰,李強.智慧校園食堂訂餐系統(tǒng)信息化平臺的設(shè)計 [J].網(wǎng)絡(luò)安全技術(shù)與應(yīng)用,2021(3):43-44.
[3] 張旭剛,張昕,高若寒.基于Spring Boot與MyBatis框架構(gòu)建動態(tài)讀寫分離模型 [J].微型電腦應(yīng)用,2021,37(2):84-86+98.
[4] 楊妍.基于Spring Boot與Vue的系統(tǒng)管理模塊開發(fā)探究 [J].電聲技術(shù),2019,43(2):32-34.
[5] 李珊.基于JSP的高校學(xué)生公寓管理系統(tǒng)的設(shè)計與實現(xiàn) [J].中國管理信息化,2019,22(12):123-124.
[6] 劉婷婷.基于ALS算法的個性化推薦系統(tǒng)的應(yīng)用研究 [D].大連:大連交通大學(xué),2018.
作者簡介:傅俊松(1996—),男,漢族,重慶墊江人,本科在讀,研究方向:Java軟件開發(fā);曾麗(1981—),女,漢族,四川宜賓人,副教授,碩士,研究方向:軟件工程,數(shù)據(jù)分析。