webService期末大作業-晚餐預定系統(大作業報告源代碼)
署說明
NANCHANG UNIVERSITY
題 目: 晚餐預定系統
學 院: 軟 件 學 院
專 業: 軟 件 工 程
班 級:
完成人數: 1 人
成 員:
起訖日期:
任課教師: 職稱: 副教授
完成時間:
填表日期: 年 月 日
一、開發環境的搭建及遇到的主要問題
1.開發環境
根據個人技術背景,選擇開發環境如下:
- 將Demo部署為B/S架構的應用;
- 使用集成軟件包搭建開發環境:PHP+Apache+MySQL;
- 借助NuSOAP庫實現WSDL服務的部署;
2.主要問題
自己對于amp組合建站流程已經比較熟悉,借助集成軟件包xampp或者wamp即可輕松搭建出開發環境。
時間和精力主要耗費在NuSOAP庫上,大概花了半天時間用于上手。
二、數據庫與服務端設計 - 數據庫設計
- 數據庫共設計兩個表:
- 餐桌類集合表(tableset):tid, 餐桌容量,餐桌數目,餐桌可擴充人數,描述
- 預約表(reservation):rid,稱謂,手機號,餐桌類型,人數,就餐日期,訂餐時間
- 說明:
- tableset表是各種餐桌類別的集合,存放各類餐桌的屬性,非常方便餐桌的集中管理;
- reservation表是用戶預約的集合,所有的預約在該表中被動態地管理,對于預約的集中管理提供很大的便利;
- 用戶在訂餐時,首先根據就餐人數確定餐桌類型,結合就餐日期篩選“預約”表,得到空余的餐桌數目,從而安排新的預約。而“取消訂餐”,則可以直接在“預約”表中操作。
以上設計對于餐桌和預約的維護都具有很強的可擴展性。
- 初始數據
初始共往tableset表中插入3條數據記錄:
10張座位為4的餐桌;
8張座位為8的餐桌(可擴充2個座位);
2張座位為12的餐桌(可擴充3個座位)
2. 主要服務:
- availableDinnerDate——獲取有效訂餐日期
參數:(無)
返回值:有效訂餐日期與今天的距離天數(xsd:int) - checkContact——檢查聯系方式格式
參數:聯系方式(str:xsd:string)
返回值:格式是否正確,取1或0(xsd:int)
說明:只支持國內的手機號碼格式 - availableTable——根據用戶給出的信息查詢可用餐桌
參數:日期(date xsd:int),就餐人數(total xsd:int)
返回值:包含新預定id以及查詢狀態的組合字串(xsd:string) - addContact——補充聯系方式信息
參數:預定id(rid xsd:int),稱謂(title xsd:string),聯系方式(contact xsd:string)
返回值:狀態字串(xsd:string) - cancelReservation——取消一條預定
參數:預定id(rid xsd:int)
返回值:狀態字串(xsd:string) - inquiryReservation——查詢某用戶的預定
參數:聯系方式contact(xsd:string)
返回值:一組預訂記錄(tns:Reservation)
說明:返回值為自定義的復雜類型 - deleteReservation——刪除預定
參數:要刪除的預定id組合rids(xsd:string)
返回值:操作狀態(xsd:int)
說明:可一次刪除多條預定
三. 服務部署與客戶端調用
Demo的服務端最初由PHP腳本形式呈現,通過調用NuSOAP庫將其封裝并發布成WSDL。
Demo的客戶端采用網頁的方式呈現,借用html/css/js技術進行設計,提供“訂餐”和“取消訂餐”等功能的前臺操作界面。
用戶的請求通過ajax傳遞給后臺上的一個中轉服務腳本hub,該服務根據請求類型調用相應的web service,并將服務調用結果傳遞給前臺。
為了更加真實的模擬web service工作過程,本Demo將“DinnerB應用”和“Web Service服務中心”開發成兩個獨立的應用,并分別部署到不同的機器上,主要示意圖如下:
圖1 應用架構簡略示意圖
四、運行結果截圖和文字說明
- 客戶端登陸
在瀏覽器中輸入DinnerB應用的網址http://127.0.0.1/dinnerb,來到訂餐前臺,在主體區域的左側可以找到主要的功能菜單: - 訂餐
- 點擊“我要訂餐”開始訂餐的第一步(共兩步),根據提示輸入必要信息(帶*的項目):就餐日期、就餐人數以及驗證碼;
- 驗證無誤后提交,中轉服務會收集參數(就餐日期和人數),調用availableTable服務,如果有空余的餐桌,該服務會為用戶創建一條“臨時預約記錄”,并返回該記錄id。中轉服務首先注冊session,存放id,然后返回處理成功信息,并通知前臺跳轉至下一步頁面“填寫聯系方式”,如圖3。若因各種原因導致無法成功訂餐(參數不合法或者沒有空余餐桌),前臺都將提示相應的“訂餐失敗”信息,如圖4中因為就餐人數不符合系統要求導致訂餐失敗;
圖2 DinnerB首頁
- 需要說明的是,“就餐日期”中的日期選項是頁面加載期間調用availableDinnerDate計算出的正確可訂餐日期,這樣控制了用戶的可出錯范圍。
圖3 有空余座位 圖4 訂餐失敗
- 第二步,用戶要在規定時間內填寫其聯系信息(稱謂和聯系方式,其中稱謂選填),點提交,中轉服務調用addContact為之前建立的臨時記錄補充客戶聯系信息,成功后返回用戶編號(圖5),用戶在就餐時提供該編號,即可查詢到預定的餐桌號(這是設想,本Demo暫時沒添加就餐應用)。如因各種原因導致訂餐失敗(超時或者聯系方式不正確),整個訂餐過程都將停止,臨時記錄也會被刪除,如圖6和圖7。
圖5 訂餐成功
圖6 聯系信息不正確
圖7 填寫信息超時
- 說明:由于訂餐過程分兩步進行,為了防止用戶在兩步之間人為地耽誤過長時間,占用餐桌資源,因此設計出“臨時記錄”+“有效時間”機制,超時后,系統會自動終止訂餐過程,并刪除臨時記錄。
3. 取消訂餐
A.點擊“取消訂餐”,填寫訂餐時提供的聯系方式,提交(如圖8)。中轉服務調用inquiryReservation查詢該用戶所有的預約,成功的話,前臺會列出該用戶所有成功的預約,如圖9;
B. 用戶選擇要取消的訂餐選項(可多選),提交后,中轉服務會調用deleteReservation刪除對應的預約記錄,取消訂餐成功。為了安全考慮,該頁面具有一次性屬性,切換菜單或者刪除不成功都無法重新回到該頁面。
圖8 取消訂餐——填寫聯系方式
圖8 訂餐記錄 圖9 選擇要取消的訂餐記錄
五、總結
WSDL為web服務提供了詳細的接口說明,實現了服務的可閱讀性,方便了服務的傳播。在此之前,自己一直是一個web站點開發者,自己寫服務自己調用,無法體會服務傳播中的問題。
大作業給了一個加深WSDL理解的機會,由于自己在web方面的技術積累,做起來可謂是輕松加愉快。于是重點都放在了對WSDL具體實現的學習上。非常要感謝前人做的工作,NuSOAP庫使得自己不用再擔心去操作WSDL語言,而可以坐等自己的服務被翻譯成WSDL接口文件。
家好啊,歡迎來到web測評。本期給大家帶來一套php開發的Dinner訂餐系統php源碼,上次是誰要的系統項目啊,幫你找到了,還說不會搭建,讓我幫忙錄制一期教程,趁著今天有空,簡單的錄制測試了一下,部署方式還是很容易的。感興趣的朋友可以自行下載學習。
技術架構
- PHP7.0 + nginx + mysql + JS + CSS + HTML
- cnetos7以上 + 寶塔面板
文字搭建教程
- 將項目解壓之后放到本地web根目錄
- 打開瀏覽器,訪問:http://localhost/dinner/yii/requirements/ 這步目的主要是檢測本地環境達不到要求,由于該系統是用yii框架寫的,yii內置一個檢測環境的文件
- 導入sql文件,sql文件的位置在webroot/dinner/protected/data/dinner.sql
- 配置config;打開webroot/dinner/protected/config/main.php 配置自己數據庫名稱、用戶名、密碼
- 修改目錄權限,由于有些目錄會動態的寫文件,例如assets、runtime目錄,所以為了簡便,直接將dinner/目錄權限修改成777
- 完成以上的步驟,就可以訪問了
PS:不會安裝寶塔的同學可以翻一下我之前的教程。
系統介紹
Dinner 是一款挺適合公司內部使用的訂餐系統,之前開發這個訂餐系統。主要是商家,菜單,訂餐,會員等等的一些管理,方便前臺妹子的工作。
系統實測截圖
獲取方式查看視頻教程
php寶塔搭建實戰Dinner訂餐系統php源碼
關于資源下載
- 網站中的所有源碼資源,均不是該源碼資源的價格,本身開源源碼是不用付費的。這是贊助錄制搭建視頻教程、收集整理資源、服務器維護的基礎開銷費用!
- 不想付費的朋友可以自行去GitHub或者Gitee搜索相關開源項目,了解其開源協議。再根據視頻視頻教程來搭建即可。
免責聲明
- 本站上傳的源碼,均為平臺購買,作者提供,網友推薦,互聯網平臺整理而來。
- 上述源碼的知識產權及相關權利歸作者及制作公司所有。
- 上述源碼僅供學習參考及技術交流之用,未經源碼的知識產權權利人同意,用戶不得進行商業使用。
- 上述源碼如需商業使用,請自行聯系源碼知識產權權利人進行授權,否則,我們將積極配合作品知識產權權利人 一起維權。
- 上述源碼如有侵犯您的知識產權,請您立刻聯系我們,我們會在24小時內做刪除下架處理。
今天給大家演示一款由jsp+ssh+mysql實現的Java web訂餐系統,其中struts版本是struts2,此外還用到了redis緩存,國際化等struts框架特性技術,系統項目源代碼在【猿來入此】獲取!https://www.yuanlrc.com/product/details.html?pid=167&fuid=6666系統實現了管理員在后臺管理菜品類型、菜品信息、菜品圖片、用戶信息、訂單信息等功能。用戶注冊、登錄,添加菜品到購物車、提交訂單、查看訂單、修改個人信息等功能。項目附帶有完整源碼和詳細視頻指導運行教程,