張蕾
摘要:互聯(lián)網(wǎng)的飛速發(fā)展給人們的生活提供了極大的便利,滲透到衣食住行的各個方面,網(wǎng)上訂餐平臺的開發(fā)很好地順應(yīng)了這一潮流。該文以網(wǎng)上訂餐系統(tǒng)的設(shè)計與開發(fā)過程為例,介紹了網(wǎng)站開發(fā)的平臺選擇LAMP的依據(jù)、網(wǎng)站功能模塊的系統(tǒng)設(shè)計和主要功能模塊的詳細(xì)設(shè)計,給出了主要功能模塊的實現(xiàn)效果圖和功能代碼,為系統(tǒng)開發(fā)的研究提供參考。
關(guān)鍵詞:開發(fā)平臺;LAMP;系統(tǒng)設(shè)計;系統(tǒng)實現(xiàn)
中圖分類號:TP393 文獻(xiàn)標(biāo)識碼:A 文章編號:1009-3044(2017)31-0101-04
1 開發(fā)平臺
LAMP是完全開源免費的網(wǎng)頁開發(fā)平臺,包括Linux操作系統(tǒng)、Apache服務(wù)器、MySQL數(shù)據(jù)庫和PHP服務(wù)器腳本程序。與ASP.NET相比,LAMP平臺具有通用、跨平臺、高性能、低成本的優(yōu)勢,與JavaEE相比,LAMP平臺則具有資源豐富、輕量易用和發(fā)展速度快、執(zhí)行靈活的優(yōu)勢。也就是說,LAMP同時兼有低價格和高性能的特點,這使得LAMP在全球范圍內(nèi)應(yīng)用非常廣泛,下面分別從運行速度等9個方面對LAMP、JavaEE和ASP.NET三大開發(fā)平臺進(jìn)行對比,如表1所示。通過對比不難發(fā)現(xiàn),LAMP架構(gòu)相對本系統(tǒng)開發(fā)優(yōu)勢明顯,這也是選擇采用LAMP作為開發(fā)平臺的主要原因。
2 系統(tǒng)設(shè)計
2.1 系統(tǒng)總體架構(gòu)設(shè)計
系統(tǒng)開發(fā)基于LAMP開發(fā)平臺,總體結(jié)構(gòu)采用B/S三層體系架構(gòu),即表示層,邏輯層和數(shù)據(jù)層,分別對應(yīng)客戶端瀏覽器、Web服務(wù)器和數(shù)據(jù)庫服務(wù)器。
2.2 系統(tǒng)功能模塊劃分
網(wǎng)上訂餐系統(tǒng)從層次上劃分,分為前臺應(yīng)用和后臺應(yīng)用兩部分,前臺應(yīng)用主要包括用戶個人信息管理、網(wǎng)上訂餐和消費評價三個功能模塊,后臺應(yīng)用則主要包括用戶信息管理、訂單信息管理和系統(tǒng)內(nèi)容管理三個功能模塊。系統(tǒng)對不同的用戶進(jìn)行了權(quán)限設(shè)置,不同用戶僅能進(jìn)行權(quán)限內(nèi)的操作。系統(tǒng)總體功能結(jié)構(gòu)如圖1所示。
2.3 系統(tǒng)詳細(xì)設(shè)計
通過對系統(tǒng)功能進(jìn)行劃分,確定了系統(tǒng)的26個核心子模塊,下面僅以其中比較關(guān)鍵的幾個模塊為例進(jìn)行詳細(xì)闡述。
2.3.1 訂餐模塊設(shè)計
用戶在客戶端上搜索到合適的菜品信息選擇訂購后,訂購模塊首先判斷用戶是否登錄,若未登錄將自動跳轉(zhuǎn)到注冊登錄界面。確定用戶為注冊會員并且已經(jīng)登錄以后,系統(tǒng)將根據(jù)用戶信息和用戶選擇的菜品信息自動生成訂單記錄。用戶繼續(xù)訂購時,系統(tǒng)將在用戶已選擇菜品的基礎(chǔ)上為訂單添加新選擇的菜品信息。同時選擇多項菜品時,系統(tǒng)僅生成一個訂單編號,并在菜單信息表中存入所選的多項菜品記錄。接下來通過獲取用戶送餐時間、聯(lián)系方式和配送地址等信息,生成完整的訂單記錄。
2.3.2 菜品管理模塊設(shè)計
菜品管理主要用于添加、修改和刪除菜品信息,設(shè)置菜品推薦和菜品排行,及時為用戶提供最新、準(zhǔn)確、有效的菜品信息。下面以添加菜品信息為例對菜品管理的流程設(shè)計進(jìn)行說明。食堂管理員在點擊添加菜單后,系統(tǒng)將判斷其是否登錄,如果沒有登錄,頁面將跳轉(zhuǎn)至登錄頁面。登錄完成后,系統(tǒng)自動返回添加菜品添加界面。食堂管理員在輸入菜品名稱、菜品價格,選擇菜品種類,上傳菜品照片,添加菜品描述和所屬的食堂窗口后點擊添加按鈕,即可完成菜品信息的添加工作。
2.3.3 菜品推薦模塊設(shè)計
為了更好的提升用戶體驗,推廣食堂的各類菜品,進(jìn)一步提高用戶訂餐效率,本文基于個性化推薦算法對菜品推薦模塊進(jìn)行了設(shè)計。該算法充分考慮了用戶行為、菜品信息和用戶信息等數(shù)據(jù)信息,通過問卷調(diào)查合理進(jìn)行權(quán)重分配,計算出各類菜品的加權(quán)推薦值,針對不同用戶喜好進(jìn)行個性化推薦,以期實現(xiàn)較好的菜品推薦功能。本文設(shè)計的個性化推薦算法主要從用戶行為、菜品與用戶關(guān)聯(lián)度、菜品相似度和菜品排行榜等方面入手,對菜品推薦功能進(jìn)行設(shè)計,下面對算法的設(shè)計進(jìn)行詳細(xì)闡述。
1) 用戶行為權(quán)值
用戶的行為是反應(yīng)用戶喜好的重要的因素之一。通過記錄用戶的行為,對用戶的搜索、查看、收藏、訂購、評價等行為設(shè)置權(quán)重,用來表示用戶對菜品的喜好程度,如表2所示。權(quán)重值根據(jù)經(jīng)驗和問卷調(diào)查獲取。
2) 菜品與用戶關(guān)聯(lián)度
該模塊主要通過用戶信息與菜品信息,計算二者之間的關(guān)聯(lián)度,從而推測出用戶對菜品的喜好。涉及的菜品信息主要包括菜品名稱和菜品類別,用戶信息主要包括用戶籍貫、性別和年齡。設(shè)用戶籍貫為P,性別為S,年齡為A,則菜品Di和用戶Mj的關(guān)聯(lián)度可表示為:
[RDi,Mj=RTi,Pj+RTi,Sj+RTi,Aj] (1)
式中:[RTi,Pj]—表示菜品類型和用戶籍貫的關(guān)聯(lián)度;其值通過問卷調(diào)查獲得。其余2個子式表示的含義與此類似。
3) 菜品相似度
菜品相似度主要通過對菜品信息進(jìn)行加權(quán)計算來獲得。用于計算菜品相似度的菜品信息主要包括:菜品名稱、菜品關(guān)鍵詞、菜品類別、所屬食堂窗口。設(shè)菜品為D,菜品名稱為N,菜品關(guān)鍵詞為K,菜品類別為T,菜品所屬食堂窗口為C,其權(quán)重分別為[WN]、[WK]、[WT]、[WC],則菜品可表示為[D={N,K,T,C}],從而可以得到菜品Di和菜品Dj的相似度計算公式如式(2)所示:
[SDi,Dj=WNNi∩NjNi∪Nj+WKKi∩KjKi∪Kj+WTTi∩TjTi∪Tj+WCCi∩CjCi∪Cj] (2)
式中:
[Ni∩Nj]—表示菜品Di和菜品Dj名稱中包含相同字的數(shù)目;
[Ni∪Nj]—表示菜品Di和菜品Dj名稱中互不相同字的數(shù)目;
其余3個子式表示的含義與此類似。
3 系統(tǒng)實現(xiàn)
3.1 網(wǎng)上訂餐模塊
當(dāng)用戶通過左側(cè)導(dǎo)航欄或通過搜索功能選擇食堂窗口后,系統(tǒng)將請求服務(wù)器跳轉(zhuǎn)到相應(yīng)的窗口頁面,如圖2(a)所示。左側(cè)顯示所選窗口的基本信息,包括菜品的口味和服務(wù)質(zhì)量打分等。下方為所選窗口的展示的菜品信息,包括菜品名稱、價格以及評價信息等。需要訂購菜品時,點擊菜品后的“+”圖標(biāo),即將菜品加入購物車,同時菜品后將出現(xiàn)“-”號圖標(biāo),以實現(xiàn)對購物車中菜品的刪除功能。一種菜品選擇結(jié)束后,可以繼續(xù)瀏覽和添加其他菜品,如圖2(b)所示。全部菜品選擇完畢,點擊確定按鈕即可完成訂單的生成。
網(wǎng)上訂餐模塊關(guān)鍵代碼如下:
<?php
class Shopcar
{
public $dishesList=array();
public function checkDishes($dishes)
{ for($i=0;$i { if($this→dishesList[$i]['name']==$dishes['name']) return $i;}return -1; } public function add($dishes) { $i=$this→checkDishes($dishes); if($i==-1) array_push($this→dishesList,$dishes); else $this→dishesList[$i]['num']+=$dishes['num'];} public function delete($dishes) { $i=$this→checkDishes($dishes); if($i!=-1) array_splice($this→dishesList,$i,1);} public function show() { return $this→dishesList;} } ?> 3.2 評價打分模塊 用戶在完成訂餐后,系統(tǒng)將提示用戶對菜品的口味滿意度和服務(wù)滿意度進(jìn)行評價打分。評價分?jǐn)?shù)將作為菜品信息的一部分顯示給其他用戶,系統(tǒng)則可根據(jù)所有用戶的評價進(jìn)行加權(quán)計算獲得菜品的綜合評價分?jǐn)?shù),方便用戶按照評價打分情況對菜品列表進(jìn)行排序,優(yōu)先選擇評價較好的菜品。用戶評價界面如圖3所示。 評價打分模塊的實現(xiàn)關(guān)鍵代碼如下: var score = $(this).attr("rate"); $("#myRate").html("您的評價:"+score+""); $.ajax({ type: "post", url: "post.php", data:"score="+score, success: function(msg){ if(msg==1){ $("#myRate").html("您已評分!"); }else if(msg==2){ $("#myRate").html("您評過分了!"); }else { getRate(msg); } } }); 3.3 菜品管理模塊 菜品管理模塊主要用于食堂管理員對菜品信息進(jìn)行添加、刪除和修改操作。圖4為上傳菜品信息的界面,用戶通過下拉菜單可以選擇窗口的位置和菜品的種類,通過文本框可以輸入菜品名稱、菜品描述、菜品價格、搜索關(guān)鍵詞和菜品詳細(xì)描述等,通過上傳圖片模塊可以上傳菜品的照片。上傳完畢后,可以點擊查看菜品列表,以客戶的視角瀏覽、檢查菜品信息。 上傳菜品信息模塊關(guān)鍵代碼如下: <?php if ($_server['request_method'] == 'post') { if (is_uploaded_file($_FILES['upfile']['tmp_name'])) { $upfile = $_FILES['upfile'] ['dishesName'])) { print_r($_FILES['upfile']); $name = $upfilep['name']; $type = $upfile['type']; $size = $upfile['size']; $ dishesName = $upfile[' dishesName ']; $error = $upfile['error']; if ($max_file_size< $size) { echo '您上傳的圖片過大'; exit (); } if (!in_arrar($type, $uptypes)) { echo '上傳文件類型錯誤' . $type; exit (); } if (!file_exists($destination_folder)) { mkdir($destination_folder); } if (file_exists("upload/" . $_FILES["file"]["name"])) { echo$_FILES["file"]["name"] . " already exists. "; } else { move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $_FILES["file"]["name"]);
echo "Stored in: " . "upload/" . $_FILES["file"]["name"];
}
$pinfo = pathinfo($name);
$ftype = $pinfo['extension'];
$destination = $destination_folder.time() . "." . $ftype;
if (file_exists($destination) && $overwrite != true) {
echo "同名的文件已經(jīng)存在了";
exit ();
}
if (!move_uploaded_file($tmp_name, $destination)) {
echo "移動文件出錯";
exit ();
}}
?>
參考文獻(xiàn):
[1] 肖萍. 基于LAMP平臺的網(wǎng)站構(gòu)建與分析[J]. 信息網(wǎng)絡(luò)安全, 2012(4).
[2] 曾志明. 網(wǎng)站開發(fā)技術(shù)的比較研究[J]. 電腦知識與技術(shù), 2010, 6(5):1075-1078.
[3] 何杭鋒. 基于LAMP平臺的WEB服務(wù)器架構(gòu)[J]. 中國新技術(shù)新產(chǎn)品, 2011(22).
[4] 李鴻飛. 淺談網(wǎng)站開發(fā)技術(shù)的發(fā)展與前景[J]. 中國新通信, 2012(5).
[5] 李衛(wèi)軍, 陳旭. 基于LAMP的網(wǎng)上訂餐系統(tǒng)的設(shè)計研究[J]. 電腦知識與技術(shù), 2014(21).
[6] 易明. 基于Web挖掘的個性化信息推薦[M]. 北京: 科學(xué)出版社, 2010.
[7] C-J. Zhang, A. Zeng. Behavior patterns of online users and the effect on information filtering [J]. Physica A, 2012(391).
[8] Wang D, Ma J. Recommendation Based on Frequent N-adic Concepts[M]. Web Technologies and Application[M]. Springer International publishing, 2014.