基于uni-app的共享寄存柜系統設計與實現_第1頁
基于uni-app的共享寄存柜系統設計與實現_第2頁
基于uni-app的共享寄存柜系統設計與實現_第3頁
基于uni-app的共享寄存柜系統設計與實現_第4頁
基于uni-app的共享寄存柜系統設計與實現_第5頁
已閱讀5頁,還剩39頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第1章概述1.1課題背景互聯網經濟推動傳統行業變革。隨著互聯網的高速發展、新技術革命為傳統行業帶來新的增長動力,“互聯網+傳統行業”商業模式的應用,在國內產生了一大批共享經濟,共享經濟的核心理念是使閑置的資源通過社會的公共平臺與他人共同使用,從而獲取一定收入的經濟現象。共享經濟強調的是物品的使用權,并不是人們之前印象中的物品的擁有權。共享自行車、共享電動車、共享充電寶、共享汽車等,互聯網的發展在解決傳統經濟增長瓶頸問題的同時,以資源優化配置為手段提高了資源利用率,使社會資源在不同企業個體之間循環利用,為解決產能過剩、節約資源提供了新的思路,豐富了社會公共產品的供給,提升了居民的生活品質。目前市面上使用的寄存柜,大部分都停留在以人工為主的手動開關投幣式儲物柜和傳統的電子式儲物柜。有的傳統機械式的儲物柜系統通常使用傳統的鑰匙或者密碼掛鎖來實現物品的存放,這類傳統儲物柜在使用的時候具有操作比較繁瑣、不利于管理等缺點。采用密碼掛鎖的儲物柜,如果忘記密碼,將會給用戶和工作管理人員造成一定的麻煩;有的電子式儲物柜內部嵌入的傳統的單片機模塊,用戶一般是通過掃描紙質的憑條或者項圈手環等方式進行控制放在柜子內部的單片機模塊,再進而驅動控制電路實現柜子門的開關。與傳統機械式儲物柜相比,電子式寄存柜更方便用戶操作。但電子存儲系統也需要使用紙質條碼、手環等額外器件來控制儲物柜的開關,這些器件極易丟失,用戶需要承擔物品丟失的風險,這影響用戶的使用體驗。根據《基于公共場所下的寄存柜創新設計和使用——以泰安市為例》的社會調查的數據中顯示,有57.89%的參與者表示他們在使用寄存柜時出現過小票丟失的情況,并且大家都表示傳統寄存柜的開箱碼非常難以保存[1]。如果開箱的小票丟失,用戶必須聯系工作人員并提供自己的在柜中的物品信息以及存物箱號,才能在工作人員的幫助下取出物件,如果忘記自己的箱號則更加麻煩,需要工作人員打開柜子部分柜子甚至全部的柜子,查看柜子內的物品,這樣會造成一系列的時間和人力的浪費。基于Android、IOS等手機APP的智能寄存儲物系統,在一定程度上相較于傳統儲物柜系統提升了系統的便利性、穩定性,滿足了人們智能化儲物的需求。在徐愛昆、康怡琳等人設計的智慧校園儲物柜系統中,以手機APP為用戶端,以單片機為控制儲物柜的核心模塊,并結合各種功能模塊機型多種方式進行開鎖,實現了智能化儲物[2]。張世卓在《基于微信小程序的智能儲物柜控制系統設計》一文中使用微信小程序控制儲物柜的開關,通過連接云服務器下發指令給藍牙模塊,并通過藍牙模塊傳遞指令信息給單片機執行實現控制儲物柜的開關[3]。該設計不能實時查看該儲物柜的使用情況,需要用戶到寄存柜前,才能知道該寄存柜的使用情況,這對用戶來說并不方便。郁美霞在《基于校園卡的智能儲物柜人機交互系統的設計》中,使用了校園卡作為開柜的條件,通過基于校園卡的智能電子儲物柜系統,系統采用三級分層之間的數據交換模式,可以實現存取信息的動態存儲以及現場圖像的采集,方便歷史查詢,能夠真正意義上實現存儲柜的智能化、信息化管理[4]。用戶取物時,不僅需要刷卡,還需輸入校園卡密碼,這樣雖然確保了存儲物品的安全性但操作還是有些麻煩,總體對于用戶使用來說并不方便。綜上所述,本課題主要通過使用HbuiderX軟件中的uni-app框架為基礎,結合ZigBee組網控制技術應用到傳統儲物柜中,利用互聯網+寄存柜的形式,設計一個可供用戶能夠實時查看寄存柜的使用情況的小程序使用戶能夠預約存物、實時查看寄存柜可用余量、管理寄存柜等;管理人員能夠在后臺管理系統中統計寄存柜的使用情況以及數據,以便提升用戶使用體驗以及管理人員管理效率的共享寄存柜系統。1.2相關技術1.2.1ZigBee無線組網技術無線組網技術的特點有功耗低、低速率、低成本等,它的網絡協議是Z-stack協議,其技術標準是IEE802.15.4的通信標準,工作頻率一般為2.4GHz,共有16個頻道,頻道的中心距離為5MHz,傳輸速度為250kbps。組建一個完整的ZigBee網狀網絡包括兩個步驟:網絡初始化、節點加入網絡。其中節點加入網絡又包括兩個步驟:通過與協調器連接入網和通過已有父節點入網。[5]1.2.2Vue.js框架Vue是一套用于構建用戶界面的漸進式框架。Vue可以自底向上逐層應用。它的核心庫只關注視圖層,便于與第三方庫或既有項目整合[6]。本系統使用Vue框架搭建管理員后臺管理前端界面,VueE框架數據渲染時,模塊與模塊之間只以數據進行交互,耦合性低。能夠使后端與前端之間數據交互不受干擾。1.2.3uni-app框架uni-app是使Vue.js開發跨平臺應用的前端框架,開發者編寫一套代碼,可編譯到IOS、Android、H5、小程序等多個平臺[4]。使用uni-app框架開發可編寫一套代碼,多端運行,解決多端重復開發,減輕開發工作。1.2.4SpringBoot技術SpringBoot是Pivotal團隊在Spring的基礎上提供的一套全新的開源框架,其目的是為了簡化Spring應用的搭建和開發過程。它去除了大量的XML配置文件,簡化了復雜的依賴管理。SpringBoot具有Spring的優秀特性,SpringBoot可以做Spring能做的事,而且使用更加簡單,功能更加豐富,性能更加穩定、健壯。1.2.5Echarts框架Echarts是一個幫助數據可視化的庫。使用圖表可以直觀的把龐大的數據以一種合適的方式展現給用戶,用戶可以通過進行圖表分析得出有價值的信息。因此,本系統在管理員的后臺管理界面中使用Echarts框架,將寄存柜的數據、用戶數據進行圖表展示。

第2章需求分析隨著當今社會的發展,外出游玩的人越來越多。出門在外游玩,免不了帶些行李包裹。若在外游玩的時間較長,那么沉重的包裹便成了甜蜜的“負擔”。有的景點會設置一些儲物柜,方便游客存儲行李物品。儲物柜數量有限,或在景區位置分散,若不熟悉景區環境,游客一時間便會找不到合適的空置儲物柜,拖著笨重的行李包裹就會使人玩得不盡興,帶來各種不必要的麻煩。有的老式儲物柜因為使用紙條、手環等憑證,顯然已經無法滿足現代人的對智能化存儲的需求[8]。老式的寄存柜需要專人管理和維護,因此時間和人工的成本較高,隨著社會的進步,結合共享經濟的發展,傳統寄存柜也慢慢發展成為共享類寄存柜,使用戶可以通過線上鎖定寄存柜位置,通過微信小程序控制寄存柜的開關進行存取物品。本課題計劃利用計算機技術設計共享寄存柜應用系統,用戶通過微信小程序即可了解儲物柜的使用情況,實現智能儲物,以滿足用戶的要求、提升用戶體驗;傳統的寄存柜的收費方式多是采用人工收費記賬或投幣式儲物,統計起來繁瑣復雜,對賬麻煩,本課題計劃設計設置不同規格的定制寄存柜,并且每個柜子在管理端都能夠顯示詳細支付使用記錄,使管理人員對賬方便,且能夠對儲物柜實現有效的管理。2.1系統功能概述本課題針對當今社會的‘共享生活’的應用需求,分析整個系統的架構,分析‘存物取物’的從分發空柜到結束的流程等,設計實現存物、取物、預約存物等功能。本系統主要是從用戶角度與現實需求兩方面考慮的以uni-app框架、Vue編寫前端系統,使用SpringBoot框架、Mybatis-Plus等編寫后端系統,具體功能界面采用小程序實現,數據庫選擇MySql。本系統主要需求功能為以下幾點:1)在線獲取寄存柜的使用情況2)預約存物和存物過程的互斥性,即同一個柜子,不能被重復預約3)用戶存物成功后,生成一組取件碼4)預約存物成功后,生成預約存物可存時間段、被預約的柜子在該時間段內不可使用5)以清單的方式展示出用戶存物的訂單記錄6)管理員可以查看用戶訂單信息和增加刪除寄存柜7)用戶可在手機上提前預約柜號,確認到達存放點后,點擊“存物”,進行存放8)用戶輸入取件碼,驗證成功后,用戶可取走物品9)使用ZigBee的無線組網技術結合ESP8266wifi模塊上傳數據到OneNet云端,達到小程序遠程控制寄存柜柜門的開關效果2.2系統業務流程分析本課題根據共享寄存柜的總體要求,對共享寄存柜的業務流程進行分析。(1)小程序端流程分析用戶在小程序端登錄后可點擊“預約”、“存物”、“取物”等功能按鈕,可以進行預約、存取、查詢歷史記錄、賬號充值等。用戶登錄成功后選擇點擊“存物”,用戶進行自主選擇需要寄存的柜子編號,確認選擇后,用戶將收到一組取件碼作為取貨憑證,用戶也可以點擊“預約”按鈕,提前預約寄存柜寄存物品,點擊“預約”后,選擇寄存柜子的大小并選擇需要預約存物的時間后,支付預約費用,后臺分配寄存柜編號,確認到達存放點后,點擊“存物”,進行存放。用戶點擊“取件”,支付取件費用并輸入取貨碼,驗證成功后,用戶可取走物品。特殊情況時,用戶可以點擊訂單下方的建議反饋或者聯系工作人員,驗證身份信息,告知自己的取貨碼,由工作人員進行取物,不影響用戶正常取出物品。(2)管理員端流程分析管理員在后臺管理中登錄后可進行:用戶訂單管理、用戶信息管理、寄存柜信息管理、建議反饋管理等操作管理員可以對用戶列表、用戶充值訂單信息列表、用戶余額列表、用戶預約訂單信息列表、用戶訂單列表、寄存柜信息列表、建議反饋列表進行導出工作,可以對寄存柜進行新增、修改、禁用等操作以及對建議反饋信息進行回復操作。2.3系統功能需求分析2.3.1小程序端功能模塊本系統的小程序端功能包括:預約存物、現場存物、取物、訂單中心查看訂單信息、個人中心查看修改個人信息、對訂單信息反饋建議、賬戶充值等功能。小程序預設計以下幾個功能模塊:1)個人信息管理:修改個人信息、修改密碼等。2)預約存物:可以對空閑的柜子進行預約3)預約訂單管理:查看預約存物的訂單,取消預約訂單4)普通訂單管理:查看訂單詳情、刪除訂單(邏輯刪除、數據庫不刪除)5)登錄注冊:用戶登錄注冊后才能進行預約、存物等操作6)賬戶充值:充值賬戶,用于支付存物時產生的費用用戶用例場景描述如下:用戶在小程序端登錄后可選擇寄存柜進行預約、存取、查詢歷史記錄、賬號充值等功能。具體功能情況如圖2-3所示。圖2-3用戶用例圖預約寄存柜功能的詳細描述如表2-1所示。表2-1預約功能用例描述名稱內容用例編號:UL0001用例名:預約寄存柜參與者:用戶觸發因素:用戶想要通過預約功能,預約寄存柜輸入信息:預約時間、預約寄存柜類型結果:預約成功過程:1)進入預約寄存柜界面2)選擇預約時間、需要預約的寄存柜類型3)輸入支付密碼4)點擊“預約”按鈕,確認預約取物功能的詳細描述如表2-2所示。表2-2取物功能用例描述名稱內容用例編號:UL0002用例名:取物參與者:用戶觸發因素:用戶想要想要取物輸入信息:支付密碼、取件碼結果:取件成功,柜門打開過程:1)點擊取件2)輸入取件碼3)輸入支付密碼4)點擊“取件”按鈕,確認取件,打開柜子2.3.2后臺管理端功能模塊本系統的管理員后臺管理端功能包括:個人信息管理、訂單信息管理、用戶信息管理、寄存柜信息管理等功能。管理員端預設計以下幾個功能模塊:1)預約訂單管理:管理用戶預約訂單。2)反饋建議管理:管理用戶反饋建議信息。3)個人信息管理:修改個人信息、修改密碼等。4)訂單管理:用戶訂單處理,導出用戶訂單等。5)儲物柜管理:對儲物柜的新增、修改、刪除。6)用戶信息管理:用戶信息查詢、用戶密碼修改。7)管理員用例場景描述如下:管理員在后臺登錄后管理員在后臺管理端登錄后能夠查看寄存的使用情況、用戶的訂單信息情況等功能。具體功能情況如圖2-4所示。圖2-4用戶用例圖建議反饋回復功能的詳細描述如表2-3所示。表2-3建議反饋回復功能用例描述名稱內容用例編號:UL0003用例名:建議反饋回復參與者:管理員觸發因素:管理員回復處理用戶的反饋建議輸入信息:回復信息內容結果:回復成功過程:1)選擇回復的反饋信息2)輸入回復內容3)點擊“回復”按鈕,回復成功4)建議反饋內容列表中的管理員回復狀態改變訂單信息列表導出功能的詳細描述如表2-4所示。表2-4訂單信息列表導出功能用例描述名稱內容用例編號:UL0004用例名:訂單信息列表導出參與者:管理員觸發因素:管理員導出用戶訂單信息列表結果:導出成功過程:1)選擇訂單列表2)點擊“導出”按鈕,導出成功2.3.3下位機控制模塊本系統的下位機使用cc2530芯片搭載ZigBee模塊通過無線組網技術配合ESP8266wifi模塊將傳感器的狀態上傳到OneNet云端,云端解析用戶輸入的指令并通過ESP8266模塊下發指令給ZigBee模塊以控制電磁傳感器的開關,從而實現遠程控制寄存柜開關。電磁傳感器接通電源后,傳感器通電,鐵芯插入線圈,產生磁力;斷開電源力量消失,鐵芯靠彈簧自動復位,磁力消失。以達到寄存柜開關門的效果,電磁開關狀態示意圖如圖2-5所示。圖2-5電磁開關狀態示意圖

第3章系統設計3.1總體設計架構本系統的開發主要包括前端小程序應用系統和后臺管理系統,主要功能是用戶在小程序端登錄后可選擇寄存柜就可以進行預約、存取、查詢歷史記錄、賬號充值等。管理員在后臺管理端登錄后能夠查看寄存的使用情況、用戶的訂單信息情況等。本課題設計是對共享寄存柜搭建的模型。共享寄存柜的設計部分分為上位機部分和下位機部分,上位機部分是由管理員的后臺管理部分和小程序部分組成,下位機部分由ZigBee功能板、cc2530芯片和傳感器組成。系統的總體架構如圖3-1所示。圖3-1系統總體功能結構圖3.2小程序端功能模塊設計(1)用戶登錄注冊1)注冊:用戶注冊時輸入郵箱(唯一鍵)、密碼、確認密碼信息等2)登錄:用戶登錄時輸入郵箱賬號、密碼;密碼錯誤或賬號不存在登錄失敗(2)預約用戶點擊預約后選擇預約的柜子,選擇存物的時間段,預約存物時間只能預約七天內。支付預約費用后生成預約碼。(3)存物1)用戶如果為預約用戶,點擊存物后,輸入預約碼,選擇存物類型,生成取件碼,用戶存物成功。2)用戶如果為普通用戶(沒有預約),點擊存物后,選擇存物類型,生成取件碼,用戶存物成功。3)用戶若已存物沒有取出,不可再次存物、預約4)用戶存物后計費開始,未滿一小時按一小時計算,需支付一小時的存物費用(4)取物用戶輸入取件碼,支付存物費用,支付完成后,取件成功;如果用戶賬戶余額不足,需要先進行充值后,才能取件;若是預約用戶,取件成功后退回預約費用(5)訂單中心1)訂單信息查看:用戶可以在訂單中心查看存物、預約的訂單。2)反饋建議:每個訂單下面可點擊反饋建議,對該訂單進行反饋或建議(6)我的1)個人信息修改2)聯系客服:用戶點擊聯系客服3)預約查看:可查看用戶預約信息、預存碼等4)賬戶金額:用戶可充值,若取物時賬戶沒有金額,無法取物成功。小程序端流程圖如圖3-2所示:圖3-2小程序端流程圖3.2.1預約模塊用戶通過小程序端的預約功能預約寄存柜,預約成功后該寄存柜不會再被預約。用戶通過選擇想要預約的存物時間以及存物柜的大小,支付預約費用后生成預約碼以及分配該類型的寄存柜編號。圖3-2預約模塊流程圖預約模塊功能流程說明如下:步驟1:用戶登錄后,選擇預約步驟2:預約寄存柜類型步驟3:選擇預約時間步驟4:支付該類型寄存柜預約金額步驟5:判斷支付是否成功,支付成功進入步驟6,支付失敗返回步驟2步驟6:支付成功,分配預約碼以及預約的寄存柜編號步驟7:結束3.2.2取物模塊用戶通過小程序端的取件功能對寄存柜進行取件,取件成功后該寄存柜可以再被預約、存物。用戶輸入取件碼,支付存物費用,支付完成后,取件成功;如果用戶賬戶余額不足,需要先進行充值后,才能取件。圖3-3取件模塊流程圖取件模塊功能流程說明如下:步驟1:用戶登錄后,點擊取件步驟2:輸入取件碼步驟3:判斷取件碼是否輸入正確,輸入正確進入步驟4,輸入錯誤返回步驟2步驟4:支付寄存柜的存物費用步驟5:判斷支付是否成功,支付成功進入步驟6,支付失敗返回步驟4步驟6:支付成功,寄存柜打開,用戶取出物品管好柜門步驟7:結束3.2.3訂單中心模塊用戶在訂單中心中可以查看所有已完成的柜子、存物中的柜子以及預約中的柜子。預約中的柜子訂單下方附加一個去存物按鈕,點擊該按鈕可以跳轉存物頁面,進行存物操作。存物中的柜子訂單下方附加一個去取物按鈕,點擊該按鈕可以跳轉首頁進行取物結算操作。訂單中心頁面設計如圖所示:圖3-4為訂單中心(全部)頁面設計圖,可以查看當前登錄用戶所有的歷史訂單記錄、正在預約中或使用的寄存柜訂單圖3-5為訂單中心(預約中)頁面設計圖,可以查看用戶預約中的訂單記錄圖3-4訂單中心(全部)頁面設計圖圖3-4訂單中心(預約中)頁面設計圖圖3-5為訂單中心(存物中)頁面設計圖,可以查看用戶正在存物中的訂單記錄圖3-6為訂單中心(已完成)頁面設計圖,可以查看用戶已完成的所有訂單記錄圖3-5訂單中心(存物中)頁面設計圖圖3-6訂單中心(已完成)頁面設計圖3.2.4反饋建議模塊用戶在訂單中心中可以查看所有已完成的柜子、存物中的柜子以及預約中的柜子。點擊訂單下方的反饋建議,可以就該訂單進行反饋建議。用戶可以在個人中心的“我的反饋”中,進入反饋建議列表中可以查看當前反饋管理員是否已回復,回復的內容是什么。3.3管理員端功能模塊設計(1)管理員登錄模塊管理員通過指定賬號密碼登錄后臺賬戶(2)管理員個人信息管理員可以修改自己個人信息:姓名、電話、郵箱、密碼等(3)用戶信息管理用戶信息列表:用戶列表查詢、導出、禁用;用戶列表包含:用戶id、用戶名、用戶賬戶余額、用戶狀態(4)用戶訂單管理1)用戶訂單信息列表訂單信息列表查詢、導出;訂單信息列表包含:訂單編號、用戶名、寄存柜id、柜格id、柜格類型、存物時間、取物時間、支付金額、支付時間2)用戶預約信息列表預約信息查詢、導出;預約信息列表包含:預約編號、用戶名、預約時間、預約存物時間3)用戶充值訂單信息列表充值訂單信息列表查詢、導出;用戶充值訂單信息列表包含:充值訂單編號、用戶名、用戶充值金額(5)用戶反饋建議管理用戶反饋建議處理:查看、回復、導出用戶建議信息;反饋建議列表包含:建議編號、用戶建議信息、用戶id(加密)、管理員回復狀態(6)儲物柜管理儲物柜列表:儲物柜新增、修改、禁用、導出;儲物柜列表包含:儲物柜id、儲物柜大格數量、小格數量、大格每小時存物單價、小格每小時存物單價、儲物柜地址、儲物柜狀態管理員端流程圖如圖3-3所示:圖3-3管理員端流程圖3.3.1寄存柜管理模塊管理員可以對寄存柜進行增改查以及對寄存柜的狀態進行管理,寄存柜管理模塊功能流程圖如圖3-5所示:圖3-5寄存柜管理模塊流程圖寄存柜管理模塊操作步驟如下:步驟1:管理員登錄。步驟2:判斷管理員是否登錄成功步驟3:登錄成功后進入管理員管理后臺主界面。步驟4:選擇寄存柜管理。步驟5:執行選擇操作,可以選擇新增一個寄存柜、修改選中寄存柜的信息、修改選中寄存柜的狀態,如果被選擇的寄存柜正在使用不可被禁用。步驟6:操作成功。步驟7:結束3.3.2用戶信息管理模塊管理員可以對用戶進行狀態修改、密碼修改、瀏覽選中用戶歷史存物記錄、導出用戶列表等操作。圖3-6管理員端(用戶列表)頁面設計圖圖3-6管理員端(用戶列表歷史訂單)頁面設計圖3.3.3用戶訂單管理模塊管理員可以瀏覽查看用戶存物訂單列表、用戶充值訂單列表、用戶預約訂單列表,也可以做導出列表等操作。圖3-7訂單管理(存物訂單)頁面設計圖3.3.4反饋建議處理模塊管理員可以瀏覽用戶反饋建議信息列表,選中未回復列表點擊“回復”按鈕可回復該條反饋記錄。反饋完成后該條反饋的狀態改變為“已回復”,用戶可在小程序端的反饋信息列表中點擊詳情查看管理員回復信息。3.4硬件功能模塊設計本課題的硬件部分主要以ZigBee(cc2530)芯片為控制中心。通過Wi-Fi(ESP8266)模塊與手機終端進行數據通信,用戶通過小程序下發指令傳輸給云端,云端對小程序發送的指令進行分析和處理,然后使用無線傳輸的方式把信息發送至協調器,電磁線圈的工作狀態通過云端下發的指令進行控制操作。本系統柜格設計如3-8所示。圖3-8下位機部分設計圖(正面)圖3-9下位機部分設計圖(背面)3.5數據庫概念設計3.5.1數據庫結構邏輯設計根據數據庫的表可以得出各個實體屬性圖,而根據各實體屬性圖可得出整體的E-R圖,E-R圖如圖所示:圖3-7系統E-R圖(1)管理員關系模式說明:管理員(管理員編號,管理員用戶名,管理員密碼)主鍵:管理員編號。外鍵:無。圖3-8管理員實體圖(2)用戶關系模式說明:用戶(用戶編號,用戶名,密碼,地址,郵箱,性別,狀態,創建時間,電話)主鍵:用戶編號。外鍵:無。圖3-9用戶實體圖(3)存物訂單關系模式說明:存物訂單(訂單編號,用戶編號,支付時間,寄存柜編號,支付金額,訂單創建時間,訂單狀態)主鍵:訂單編號。外鍵:無。圖3-10存物訂單實體圖(4)預約訂單關系模式說明:預約訂單(預約訂單編號,用戶編號,預約時間,寄存柜編號,支付金額,訂單創建時間,訂單狀態,預約碼)主鍵:預約訂單編號。外鍵:無。圖3-11預約訂單實體圖(5)充值訂單關系模式說明:充值訂單訂單(訂單編號,用戶編號,支付時間,支付金額,訂單狀態)主鍵:充值訂單編號。外鍵:用戶編號。圖3-12充值訂單實體圖(6)建議反饋關系模式說明:建議反饋(反饋編號,用戶編號,反饋時間,反饋內容,狀態,回復內容)主鍵:充值訂單編號。外鍵:用戶編號。圖3-13反饋建議實體圖(7)寄存柜關系模式說明:寄存柜(寄存柜編號,類型,價格,狀態,地址,創建時間)主鍵:寄存柜編號。外鍵:無。圖3-14寄存柜實體圖(8)賬戶余額關系模式說明:賬戶余額(用戶編號,余額,用戶名)主鍵:用戶編號。外鍵:無。圖3-15用戶賬戶余額實體圖(9)地址關系模式說明:寄存柜地址(寄存柜編號,地址,id)主鍵:id。外鍵:無。圖3-16寄存柜地址實體圖3.5.2數據庫物理結構設計根據分析和設計,本系統主要涉及到以下表,管理員表(3-1),用戶表(3-2),存物訂單表(3-3),預約訂單表(3-4),充值訂單表(3-5),建議反饋表(3-6),寄存柜表(3-7),用戶余額表(3-8)、地址表(3-9)。(1)管理員表管理員表存放的是管理員信息的列表。此表包含了管理員賬號、管理員密碼。管理員表的字段結構設計如表3-1所示。表3-1管理員表(admin)序號字段名數據類型大小說明空值描述1usernamevarchar255主鍵否管理員賬號2passwordvarchar255否管理員密碼3AdminIdint否編號(2)用戶表用戶表存放的是用戶信息的列表。此表包含了用戶名、密碼、郵箱、電話、地址、性別、賬戶狀態、創建時間。用戶表的字段結構設計如表3-2所示。表3-2用戶表(pm_user)序號字段名數據類型大小說明空值描述1User_nameVarchar30用戶名2User_passwordvarchar255否管理員密碼3User_Emailvarchar30主鍵否郵箱4User_telVarchar11電話5User_AddressVarchar255地址6User_sexChar2性別7User_statusint用戶賬戶狀態8Create_timedatetime創建時間(3)存物訂單表存物訂單表存放的是用戶的存物信息生成的訂單列表。此表包含了id編號、支付金額、支付時間、訂單狀態、用戶id、創建時間、寄存柜編號、訂單編號。存物訂單表的字段結構設計如表3-3所示。表3-3存物訂單表(bs_order)序號字段名數據類型大小說明空值描述1pay_moneyVarchar30支付金額2pay_timevarchar255否支付時間3Order_statusvarchar30訂單狀態4User_idVarchar11用戶id5Create_timedatetime創建時間6Box_idvarchar255否寄存柜編號7Order_numvarchar255主鍵否訂單編號(4)預約訂單表存物訂單表存放的是用戶的存物信息生成的訂單列表。此表包含了預約時間、寄存柜id、用戶id、預約編號、訂單創建時間、支付金額、預約單號。預約頂動感表的字段結構設計如表3-4所示。表3-4預約訂單表(bs_book_order)序號字段名數據類型大小說明空值描述1book_timevarchar255預約時間2box_idvarchar255否寄存柜id3user_idvarchar255否用戶id4book_codevarchar255主鍵否預約編號5create_timevarchar255創建時間6pay_moneyvarchar255支付金額7book_numvarchar255預約碼(5)充值訂單表充值訂單表存放的是用戶的充值信息生成的訂單列表。此表包含了充值訂單編號、用戶id、訂單創建時間、支付金額。充值訂單表的字段結構設計如表3-5所示。表3-5充值訂單表(bs_account_order)序號字段名數據類型大小說明空值描述1account_idvarchar32主鍵否訂單編號2user_idvarchar32用戶外鍵3deal_timedatetime0交易時間4moneyvarchar32交易金額(6)建議反饋表建議反饋表存放的是用戶建議反饋信息的列表。此表包含了反饋內容、訂單編號、訂單創建時間、用戶id、回復內容、回復狀態。建議反饋表的字段結構設計如表3-6所示。表3-6建議反饋表(bs_complaint_advice)序號字段名數據類型大小說明空值描述1contentvarchar1000用戶反饋內容2Advice_numvarchar32主鍵否訂單編號3advice_timedatetime0時間4user_idvarchar255用戶id5replyvarchar1000回復6statusvarchar20狀態(7)寄存柜表寄存柜表存放的是寄存柜信息的列表。此表包含了柜格類型、柜格狀態、柜格存物價格、寄存柜編號、地址。寄存柜表的字段結構設計如表3-7所示。表3-7寄存柜表(bs_box)序號字段名數據類型大小說明空值描述1box_typevarchar255柜格類型2box_statusvarchar255柜格狀態3box_moneyvarchar255柜格存物價格4box_numvarchar255主鍵否寄存柜編號5address_idvarchar32地址外鍵(8)用戶余額表用戶余額表存放的是用戶賬戶余額信息的列表。此表包含了賬戶名稱、賬戶id、賬戶余額。用戶余額表的字段結構設計如表3-8所示。表3-8用戶余額表(bs_account)序號字段名數據類型大小說明空值描述1namevarchar32主鍵否賬戶名稱2user_idvarchar32用戶外鍵3accountvarchar32賬戶金額(9)地址表地址表主要顯示的是用戶地址信息的列表。此表包含地址ID、寄存柜編號、寄存柜地址。地址表的字段結構設計如表3-9所示。表3-9地址表(bs_address)序號字段名數據類型大小說明空值描述1Addressidvarchar32主鍵否地址編號2box_numvarchar255否寄存柜編號3box_addressvarchar255寄存柜地址

第4章系統實現4.1下位機實現下位機的實現是由ZigBee開發與傳感器模塊組成的,本系統下位機通過ESP8266模塊連接云端,云端獲取到小程序所發送的指令轉換后發送給ESP8266所在的ZigBee協調器,協調器通過廣播的方式下發給終端,終端接收后對電磁開關傳感器進行控制,實現柜門的開關。下位機設計實物如圖4-1、4-2所示圖4-1下位機設計實物圖(1)圖4-2下位機設計實物圖(2)(1)廣播下發繼電器控制命令核心代碼:voidSampleApp_SendPeriodicMessage(uint8on){uint8state[3]={0};state[0]=on;//發送0或者1,用來控制終端的繼電器開關type=EDP_UnPacketRecv(cmd);switch(type)//判斷是pushdata還是命令下發{caseCMDREQ://解命令包result=EDP_UnPacketCmd(cmd,(int8**)&cmdid_devid,&cmdid_len,(int8**)&req,&req_len);if(result==0)//如果解包成功,進行命令回復{EDP_PacketCmdResp(cmdid_devid,cmdid_len,req,req_len,&edpPacket);HalLcdWriteString(req,HAL_LCD_LINE_2);//LCD顯示//收到控制命令,控制開發板Ctrl(req);}break;default:break;}if(type==CMDREQ&&result==0)//如果是命令包且解包成功{EDP_FreeBuffer(cmdid_devid);//釋放內存EDP_FreeBuffer(req);//回復命令ESP8266_SendData(edpPacket._data,edpPacket._len);//上傳平臺EDP_DeleteBuffer(&edpPacket);//刪包}returnresult;}(2)ZigBee板終端的ESP8266模塊連接OneNet云端的核心代碼:_BoolOneNet_DevLink(void){EDP_PACKET_STRUCTUREedpPacket={NULL,0,0,0};//OneNet協議包unsignedcharstatus=1;if(EDP_PacketConnect1(DEVID,APIKEY,256,&edpPacket)==0)//根據devid和apikey封裝協議包{ESP8266_SendData(edpPacket._data,edpPacket._len);//上傳到平臺//delay_ms(500);//延遲等待時間500msEDP_DeleteBuffer(&edpPacket);//刪包}returnstatus;}4.2上位機實現4.2.1管理員端寄存柜禁用功能管理員能過夠對寄存柜進行禁用啟用改變其狀態,當寄存柜被存放時,管理員則不可對其狀態進行更改。當寄存柜狀態被管理員改為禁用中時,用戶則不能對該寄存柜進行存物。以下圖4-1為用戶正在使用的寄存柜管理員不可對其更改狀態截圖。圖4-1管理員更改用戶狀態核心代碼:前端部分代碼:if(row.boxStatus=="空閑中"||row.boxStatus=="禁用中"){

this.$http.post('/box/box/changeState',row)

if(row.addressId===true){

letindex=this.boxList.findIndex(v=>v.id==row.id)

this.boxList[index].boxStatus="空閑中"

this.$message.success("啟用成功")

}else{

//this.getboxList()

letindex=this.boxList.findIndex(v=>v.id==row.id)

this.boxList[index].boxStatus="禁用中"

this.$message.success("禁用成功")

}

}else{

this.$('當前柜子正在使用中')

this.getboxList()

}后端部分代碼:@PostMapping("/changeState")

publicvoidchangeState(@RequestBodyBoxbox){

System.out.println(box);

Boxbox1=newBox();

if(box.getAddressId().equals("true")){

box1.setAddressId("true");

box1.setBoxStatus("空閑中");

System.out.println(1);

}else{

box1.setAddressId("false");

box1.setBoxStatus("禁用中");

System.out.println(2);

}

EntityWrapper<Box>wrapper=newEntityWrapper<>();

wrapper.eq("id",box.getId());

booleanupdate=boxService.update(box1,wrapper);

System.out.println(update);

}4.2.2批量導出功能選中需要導出的內容,點擊導出后導出excel表格如圖4-2、4-3所示圖4-2搜索禁用中的柜子圖4-3導出的excel表格內容核心代碼:require.ensure([],()=>{//獲取數據并下載導出

const{export_json_to_excel}=require('../../vendor/Export2Excel')

consttHeader=['柜子編號','柜子類型','柜子狀態''柜子單價','柜子狀態'];//表頭

constfilterVal=['boxNum','boxType','boxStatus','boxMoney','addressId'];//對應字段

constlist=this.boxList;

constdata=this.formatJson(filterVal,list);

export_json_to_excel(tHeader,data,"寄存柜列表");

});

},

formatJson(filterVal,jsonData){

returnjsonData.map(v=>filterVal.map(j=>v[j]));

},

asyncsetSearch(){

this.$refs.searchFormRef.resetFields()

this.boxList=[]

constres=awaitthis.$http.post('/box/box/page',this.queryInfo)

this.boxList=res.data.records

this.total=res.data.total

},4.2.3回復反饋建議功能用戶可以點擊在訂單下方的‘反饋建議’對該訂單進行反饋。管理員在反饋建議列表中可以查看用戶反饋建議的回復狀態,點擊右側的按鈕可查看詳細反饋信息。未回復的可在下方回復。用戶可在‘我的反饋建議’中查看當前反饋的建議是否被回復。如圖4-5、4-6、4-7所示用戶在圖4-5中輸入對該訂單的反饋建議,反饋成功后管理員可在后臺管理端查看用戶反饋信息如圖4-6所示,并可以選擇未回復的反饋訂單進行回復如圖4-7所示。圖4-5用戶輸入反饋信息界面圖4-6反饋建議列表圖4-7反饋信息詳情圖4.2.4儲物柜歷史使用查看功能管理員可以查看指定柜子的歷史使用情況,如圖4-8所示圖4-8指定寄存柜歷史使用記錄4.2.5寄存柜預約功能用戶可以提前預約寄存柜,但需要支付一定的預約費用。用戶有在使用中的柜子時不能再次進行預約,需要將使用中的訂單完成后才能使用預約功能。因為需要支付預約費用,因此新用戶需要先充值才能使用預約功能。如圖4-9、4-10、4-11、4-12、4-13、4-14所示。用戶若有正在使用中的柜子,即存物后未取物則不能再次進行預約操作如圖4-9所示。圖4-9用戶有正在使用中的柜子用戶若已經預約了寄存柜,還未存物。則不能進行二次預約。如圖4-10所示圖4-10用戶有正在預約中并未存物的訂單未預約的用戶可以選擇未來7天的時間段進行預約如圖4-11所示,預約成功后顯示預約碼如圖4-12所示圖4-11用戶選擇預約時間圖4-12用戶預約成功后顯示預存碼用戶預約成功后,管理員端顯示用戶預約數據如圖4-13所示圖4-13管理員端查看用戶預約訂單數據核心代碼:awaitthis.$http({//把錢傳到后臺扣

url:'/count/access/changeMoney',

method:'GET',

data:{

userID:userID,

boxMoney:this.boxMoney*2//把獲取到的柜子編號傳給后臺pickerData

}

})

//把獲取到的柜子編號傳給后臺pickerData

constres=awaitthis.$http({

url:'/count/access/getOrderCode',

method:'POST',

data:{

boxNum:this.boxNum

}

})4.2.6存物取物功能用戶若有預約則點擊存物直接進行存物,若沒有預約,需要選擇柜子類型、柜子編號進行存物。用戶取物的時候需要提供取件碼以及支付存物費用才能打開寄存柜進行取物。如圖4-14、4-15、4-16、4-17、4-18所示用戶若有預約的柜子,點擊存物時,直接存物柜門打開,顯示存物成功字樣。如圖4-14所示,用戶若沒有預約的柜子則需要選擇柜子編號進行存物如圖4-15所示圖4-15有預約的柜子直接存物成功圖4-15沒有預約的柜子需要選擇柜子編號用戶取件時,需要輸入支付密碼如圖4-16以及輸入取件碼如圖4-17,才能夠開啟柜門,取出物品如圖4-18所示圖4-17取件時輸入支付密碼圖4-18輸入取件碼圖4-19取件成功核心代碼:小程序上傳命令到云端代碼:GET_data:function(datastream){

console.log("發送命令:"+datastream)

wx.request({

url:"/devices/862080751/datastreams"+"/"+datastream,

method:

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論