李佳昌,張晨星,宋丕偉,顧 鼎,李佳美,陳雨浩,王 紅
(大連科技學(xué)院,遼寧 大連 116000)
隨著我國經(jīng)濟的快速發(fā)展,人們的消費水平逐漸提高,很多超市、商場、圖書館的人流量越來越大,因此,自助儲物柜成為不可或缺的設(shè)施。以超市儲物柜為例,目前,超市最常用的是打印帶有條形碼的小紙片并通過掃描對應(yīng)條形碼打開儲物柜。在使用傳統(tǒng)儲物柜時,經(jīng)常會出現(xiàn)顧客不小心丟失小紙片無法打開自助儲物柜的情況,只能向超市或商場的工作人員尋求幫助,耗費了人力物力。此類儲物柜打印的開柜憑證小票小而薄,易損易破易丟失,同時,由于紙張回收困難,造成了一定程度的紙張資源浪費。因此,我們設(shè)計了一款無需紙張、不耗費人力、自助存儲、由手機微信小程序控制的智能儲物柜,在減少儲物柜空間浪費的同時也減少了人力物力的浪費。
該系統(tǒng)采用MVC(Model-View-Controller)架構(gòu)模式,該模式把系統(tǒng)分成了儲物柜系統(tǒng)模型(Model)、用戶界面(View)和控制器(Controller)三部分。
Model:主要負責(zé)處理應(yīng)用程序數(shù)據(jù)邏輯。通過創(chuàng)建一個或多個監(jiān)聽事件來控制模型封裝與處理應(yīng)用程序的業(yè)務(wù)邏輯相關(guān)數(shù)據(jù)。當模型數(shù)據(jù)發(fā)生變化時,模型會將信息發(fā)給關(guān)聯(lián)的視圖。
View:視圖的主要功能是向用戶可視化數(shù)據(jù)模型和接收用戶輸入,視圖既是模型的外表,也是用戶與應(yīng)用程序交互的平臺。當模型數(shù)據(jù)發(fā)生變化,相應(yīng)信息將顯示在用戶界面。
Controller:這是處理人機交互應(yīng)用程序的一部分,即處理用戶輸入信息??刂破饔糜诙x用戶界面對用戶輸入的響應(yīng)能力,在不同層次上扮演組織角色,并控制應(yīng)用程序的流程??商幚碛脩粜袨楹蛿?shù)據(jù)模型更改事件。
儲物柜系統(tǒng)流程如圖1所示。
圖1 儲物柜系統(tǒng)流程
通常,程序中的模塊可以執(zhí)行對應(yīng)功能。因此,需要將模塊鏈接在一起形成良好的層次結(jié)構(gòu)。頂層模塊通過調(diào)用底層模塊實現(xiàn)程序的各種功能。在這個過程中,每個子模塊都向更下層的子模塊發(fā)出指令。最低級別的模塊執(zhí)行最具體的功能。本軟件采用以Java語言為基礎(chǔ)的JSP技術(shù)完成,如圖2所示。
圖2 儲物柜架構(gòu)
了解系統(tǒng)功能需求之后,通過分析系統(tǒng)功能定義系統(tǒng)包含的實體。以學(xué)校圖書館作為使用場景,對智能儲物柜進行介紹。在系統(tǒng)中實體為學(xué)生與學(xué)校,定義實體后,還要定義實體的屬性。E-R圖如圖3所示。
圖3 E-R圖
智能儲物柜控制過程:當用戶掃描微信小程序中的二維碼并輸入學(xué)號時,系統(tǒng)將學(xué)號與數(shù)據(jù)庫進行匹配。當用戶在用戶視圖上輸入學(xué)號、姓名試圖打開儲物柜時,系統(tǒng)會在解析命令后,查詢本地數(shù)據(jù)庫,匹配成功后發(fā)送命令,控制電控鎖將柜門彈開。同時,將數(shù)據(jù)傳輸給服務(wù)器,服務(wù)器在解析數(shù)據(jù)后,儲物柜的使用記錄同步更新到云端服務(wù)器。用戶掃描儲物柜屏幕上的二維碼即可打開微信小程序,輸入學(xué)號、姓名,微信小程序把登錄開柜操作信息通過微信服務(wù)器發(fā)送給服務(wù)器,服務(wù)器查詢用戶及儲物柜狀態(tài)是否符合條件,從而發(fā)出對應(yīng)的執(zhí)行指令,并記錄更新信息,并且每天生成更新日志。當條件符合時,向下級儲物柜終端發(fā)送開箱命令,使智能儲物柜進行相應(yīng)開箱操作,具體過程如圖4所示。
圖4 儲物柜操作流程
通過MVC架構(gòu)的智能儲物柜具有低耦合性、高重用性以及可適用性等特點。系統(tǒng)用戶端和開發(fā)端可分離編寫,因此在進行用戶界面的升級和修改時無需重新編譯控制器和業(yè)務(wù)層模型,若想改變判定規(guī)則也無需改動用戶界面和控制器,僅僅需要對模型重新進行修改和添加即可,升級更新功能更加便利。下一步,我們將研究如何將智能儲物柜向智能家居方向推廣,給人們提供更多便利。