潘俊芳, 侯振興
(蘭州財(cái)經(jīng)大學(xué) 信息工程學(xué)院,甘肅 蘭州 730020)
當(dāng)今社會(huì)網(wǎng)絡(luò)科技發(fā)達(dá),人們的日常生活大都與網(wǎng)頁、微信小程序和手機(jī)App相關(guān)。對(duì)于開發(fā)來說,網(wǎng)頁的優(yōu)點(diǎn)就是不需要下載,運(yùn)行速度快,但設(shè)計(jì)網(wǎng)頁時(shí)需要考慮兼容性及網(wǎng)頁優(yōu)化標(biāo)準(zhǔn);手機(jī)App需要下載并且需要考慮手機(jī)系統(tǒng),研發(fā)多版本;而小程序是一種不需要下載就可以使用的應(yīng)用程序,相較于網(wǎng)頁不需要考慮兼容性及相關(guān)標(biāo)準(zhǔn),相較于App減少了內(nèi)存的占用,而且不管是什么系統(tǒng), 只需開發(fā)一個(gè)版本即可[1]。通過搜索小程序或者掃描小程序碼,就可立即使用。已有的研究設(shè)計(jì)大都需要購買設(shè)備或服務(wù)器,成本較高,消耗大量的資金,給高校造成一定經(jīng)濟(jì)壓力。系統(tǒng)開發(fā)時(shí),開發(fā)人員不僅要開發(fā)功能模塊,還需要關(guān)注數(shù)據(jù)庫和文件儲(chǔ)存,后期管理員也會(huì)被頻繁的服務(wù)器故障花費(fèi)大量時(shí)間精力[2]。由此,設(shè)計(jì)一款基于小程序云開發(fā),方便學(xué)生預(yù)約座位、監(jiān)督及管理員進(jìn)行信息化管理的小程序,可以減少搶占座亂象和因搶占座造成的沖突,提高座位的利用率,減輕學(xué)校經(jīng)濟(jì)壓力。
小程序的編寫主要在微信開發(fā)者工具上進(jìn)行,它可以實(shí)時(shí)預(yù)覽界面,便于迅速調(diào)試、修改,還可以通過手機(jī)查看預(yù)覽效果。小程序的前端界面主要是運(yùn)用WXML、WXSS和JS等語言編寫的。WXML是框架設(shè)計(jì)的一套標(biāo)簽語言,用來構(gòu)建頁面結(jié)構(gòu);WXSS是樣式語言,決定頁面中組件的展示樣式,它具有CSS大部分特性,為了適應(yīng)開發(fā)小程序,對(duì)CSS進(jìn)行擴(kuò)充及修改;JS用來處理與用戶交互的邏輯事件[3]。小程序利用云開發(fā)功能,可提供完整的云端支持,不需要搭建、配置或管理服務(wù)器,代碼運(yùn)行所需要的服務(wù)器服務(wù)皆由云端平臺(tái)來提供,只需要考慮復(fù)雜的業(yè)務(wù)邏輯問題即可。系統(tǒng)使用的數(shù)據(jù)庫是小程序云數(shù)據(jù)庫,后臺(tái)則是使用基于云開發(fā)搭建的可視化的內(nèi)容管理服務(wù),開通簡單,無須編寫代碼即可使用豐富的管理功能[4]。云數(shù)據(jù)庫屬于文檔型數(shù)據(jù)庫,除了支持基礎(chǔ)讀寫、搜索及數(shù)據(jù)庫事務(wù),還管理索引和數(shù)據(jù)庫訪問權(quán)限,保證了信息的獨(dú)立性,具有很強(qiáng)的安全性,能夠滿足系統(tǒng)后臺(tái)數(shù)據(jù)的處理要求。
根據(jù)圖書館座位管理需求,系統(tǒng)主要功能有權(quán)限、信息查詢、積分需求等幾個(gè)方面。在權(quán)限方面,小程序的使用對(duì)象主要是在讀學(xué)生。因此,需要在登錄時(shí)識(shí)別用戶身份跳轉(zhuǎn)到對(duì)應(yīng)頁面。在信息查詢方面,需要能讓學(xué)生隨時(shí)隨地地查看圖書館座位使用及預(yù)約情況,所以系統(tǒng)需要實(shí)時(shí)更新座位情況,確保用戶能夠及時(shí)了解情況。對(duì)于座位簽到和釋放需求,用戶需要在入座時(shí)使用手機(jī)進(jìn)行簽到,表明自己已入座[5],同樣也需要在離座時(shí)使用手機(jī)進(jìn)行退座處理,讓其他同學(xué)可繼續(xù)預(yù)約該座位。在調(diào)整座位狀態(tài)方面,為避免座位無人被舉報(bào),用戶可根據(jù)自身情況進(jìn)行暫離或歸座處理。然后,取消預(yù)約需求,一旦臨近預(yù)約的時(shí)間段,用戶如果無法直接到達(dá)預(yù)約座位,可以刪除預(yù)約座位信息。在反饋監(jiān)督方面,學(xué)生需要對(duì)程序開發(fā)設(shè)計(jì)方面提出建議,也需對(duì)使用過程中出現(xiàn)的浪費(fèi)座位資源情況提出反饋。在積分需求方面,為了規(guī)范學(xué)生行為,系統(tǒng)需要對(duì)未簽到、及時(shí)簽到、未退座及其他違規(guī)行為做出相應(yīng)地處罰,對(duì)積極舉報(bào)反饋的相關(guān)學(xué)生給予鼓勵(lì),因此,需要用積分的形式作為依據(jù),當(dāng)積分低于一定值時(shí)沒有預(yù)約功能的使用權(quán)[6]。
通過前期對(duì)系統(tǒng)的需求分析,得出圖書館座位預(yù)約小程序功能結(jié)構(gòu),如圖1所示。
圖1 系統(tǒng)功能結(jié)構(gòu)圖
3.1.1 用戶模塊
小程序端的用戶模塊對(duì)系統(tǒng)設(shè)計(jì)主要有登錄、預(yù)約、簽到、退座功能等幾個(gè)方面。在登錄功能方面,因?yàn)橛脩魞H為在校學(xué)生,所以不采取獲取微信用戶信息的方式登錄,而使用傳統(tǒng)的賬號(hào)密碼登錄,根據(jù)賬號(hào)的身份登錄到不同用戶界面。界面如圖2所示。
圖2 登錄界面
在預(yù)約功能方面,在可預(yù)約時(shí)間內(nèi),系統(tǒng)將每個(gè)時(shí)段設(shè)定為1小時(shí),時(shí)段設(shè)定后可根據(jù)云后臺(tái)用戶使用數(shù)據(jù)進(jìn)行調(diào)整;用戶根據(jù)自身的使用需求,利用小程序隨時(shí)隨地地預(yù)約特定時(shí)間段內(nèi)的座位[7]。在預(yù)約成功后,用戶可接收訂閱消息,系統(tǒng)將會(huì)在預(yù)約開始前的半個(gè)小時(shí)在微信上通過OpenID為用戶發(fā)送預(yù)約信息,提醒用戶。如果在某中間時(shí)間段,座位仍有空余,用戶也可直接掃描座位碼入座。
在簽到功能方面,圖書館開館期間,用戶在預(yù)約時(shí)間前10分鐘可進(jìn)行掃描桌子上的座位碼入座,系統(tǒng)會(huì)判斷該座位是否已有人入座及入座是否及時(shí)。退座功能方面,分為主動(dòng)退座和被動(dòng)退座,主動(dòng)退座為在預(yù)約時(shí)間結(jié)束前使用小程序自行確認(rèn)離座,需要重新掃描座位碼以判斷是否為同一座位;被動(dòng)離座是離開時(shí)未在小程序上退座,需要通過小程序定時(shí)程序退座。只有在簽到完成后才能進(jìn)行退座和暫離。預(yù)約結(jié)果詳情界面如圖3所示。
圖3 預(yù)約詳情界面
在小程序“我的界面”可以查看預(yù)約和反饋的歷史記錄及詳細(xì)信息,并進(jìn)行一定修改,還可以查看自己的積分情況[8]。反饋界面如圖4所示。
圖4 反饋界面
3.1.2 管理員模塊
由于小程序采用云開發(fā)提供的后臺(tái)管理網(wǎng)站,可以對(duì)用戶、自習(xí)室、預(yù)約等信息進(jìn)行簡單的增刪改查,所以小程序端的管理員模塊對(duì)系統(tǒng)設(shè)計(jì)主要有公告管理、反饋管理、用戶管理等幾個(gè)方面,方便管理者在手機(jī)上進(jìn)行簡要處理。在公告管理方面,管理員可在小程序上直接發(fā)布公告信息,例如,桌椅損壞,行為違規(guī)等信息。在用戶信息管理方面,主要是為忘記密碼的學(xué)生進(jìn)行重置密碼操作。在反饋信息管理方面,管理員可登錄小程序?qū)Ψ答佭M(jìn)行處理,并向反饋者發(fā)送審核反饋。反饋管理界面如圖5所示。
圖5 反饋回復(fù)界面
除此之外,小程序使用云函數(shù)設(shè)置定時(shí)功能,會(huì)在開館時(shí)間內(nèi)每小時(shí)對(duì)當(dāng)天的預(yù)約進(jìn)行遍歷,對(duì)未簽到的用戶,視為違約,并修改座位狀態(tài);對(duì)未主動(dòng)釋放座位的用戶,扣除積分,并將其座位狀態(tài)改為已使用。定時(shí)功能config.json部分的代碼如下:
"triggers": [
{
"name": "myTrigger",
"type": "timer",
"config": "0 0 9-22 * * * *"
}
]
系統(tǒng)采用云開發(fā)自帶的數(shù)據(jù)庫,根據(jù)系統(tǒng)需求以及功能設(shè)計(jì),為了確保數(shù)據(jù)傳輸和各個(gè)表之間連接順利,設(shè)計(jì)了用戶表、預(yù)約表、自習(xí)室表、反饋表和公告表,主要詳細(xì)介紹下面四張表的字段。用戶信息包括編號(hào)、用戶姓名、賬號(hào)、密碼、學(xué)院、專業(yè)、班級(jí)、身份(教師或?qū)W生)和積分等字段。預(yù)約信息包括編號(hào)、學(xué)號(hào)、學(xué)生姓名、自習(xí)室名稱、座位號(hào)、日期、開始時(shí)間、結(jié)束時(shí)間、簽到時(shí)間、退座時(shí)間、最近一次操作時(shí)間和座位狀態(tài)(已入座、未入座、已使用和暫時(shí)離開)等字段。自習(xí)室信息包括:編號(hào)、自習(xí)室名稱、座位數(shù)和備注(可用或不可用)等字段。反饋信息包括:編號(hào)、反饋者姓名、自習(xí)室名稱、座位號(hào)、反饋類型、反饋內(nèi)容、詳情圖片、反饋時(shí)間、反饋狀態(tài)(已處理或未處理)和管理員回復(fù)等字段。其中所有表中主鍵均為編號(hào)字段,它是由系統(tǒng)自動(dòng)生成的,所有編號(hào)都不相同且沒有規(guī)律。
為了讓系統(tǒng)內(nèi)各部分的關(guān)系簡單明了的表現(xiàn)出來,用E-R模型圖來表示,如圖6所示。除了學(xué)生和自習(xí)室座位之間關(guān)系為一對(duì)一,其他用戶和實(shí)體之間明確是一對(duì)多的關(guān)系。一個(gè)管理員可發(fā)布多條公告、管理多個(gè)自習(xí)室和回復(fù)多個(gè)反饋;一個(gè)學(xué)生一個(gè)時(shí)段僅可預(yù)約一個(gè)座位、提交多條反饋和查看多條公告;一個(gè)自習(xí)室包含多個(gè)座位。
圖6 系統(tǒng)的E-R圖
根據(jù)上述功能設(shè)計(jì),圖書館座位預(yù)約步驟如下:首先,用戶使用學(xué)號(hào)/工號(hào)登錄系統(tǒng),系統(tǒng)會(huì)自動(dòng)識(shí)別用戶身份,根據(jù)用戶身份,系統(tǒng)將展示相應(yīng)的系統(tǒng)界面。學(xué)生通過界面選擇使用的功能:預(yù)約、查詢和反饋。管理員通過界面選擇功能:查詢、反饋回復(fù)、用戶管理和發(fā)布公告。其次,學(xué)生在預(yù)約座位時(shí),需要先選擇自習(xí)室,再選擇預(yù)約時(shí)間段,如果預(yù)約的時(shí)間段,沒有空余座位,則會(huì)提示重新選擇;否則,預(yù)約成功。需要注意學(xué)生僅能預(yù)約當(dāng)天的自習(xí)室座位,且每個(gè)時(shí)段每個(gè)學(xué)生僅能有一個(gè)預(yù)約的座位,不能重復(fù)預(yù)約。在預(yù)約時(shí)間前10分鐘內(nèi),學(xué)生可簽到,同時(shí)系統(tǒng)會(huì)判斷簽到時(shí)間,確定學(xué)生是否按時(shí)就坐。當(dāng)用戶發(fā)現(xiàn)自習(xí)室有很多空位置,如果通過查詢座位狀態(tài)發(fā)現(xiàn)為已入座,可填寫相關(guān)信息或圖片,可向管理員舉報(bào)該用戶;或者說發(fā)現(xiàn)座位上有私物堆放,如果座位為未入座,也可投訴。管理員可重置學(xué)生賬戶密碼,將學(xué)生的反饋經(jīng)過商討驗(yàn)證后給予回復(fù)。
由上述使用步驟得出圖書館座位預(yù)約小程序的系統(tǒng)流程如圖7所示。
圖7 系統(tǒng)的流程圖
系統(tǒng)完成設(shè)計(jì)后,需要對(duì)圖書館座位預(yù)約小程序進(jìn)行系統(tǒng)測(cè)試,由于小程序仍在開發(fā)階段,微信服務(wù)平臺(tái)提供的壓測(cè)工具對(duì)MAU有一定的要求,所以暫時(shí)不能進(jìn)行壓力測(cè)試。因此,主要對(duì)小程序進(jìn)行功能測(cè)試,即分別測(cè)試系統(tǒng)的功能用例,檢查相關(guān)功能是否達(dá)到預(yù)期的使用要求,以便及時(shí)解決測(cè)試過程中發(fā)現(xiàn)的程序問題,保證系統(tǒng)運(yùn)行的準(zhǔn)確性。測(cè)試主要采取黑盒測(cè)試,對(duì)系統(tǒng)功能用例進(jìn)行測(cè)試。通過分別登錄學(xué)生端和教師端進(jìn)行預(yù)約、入座、退座、反饋、查詢和處理反饋等幾個(gè)方面的功能操作。其中,預(yù)約和入座用例主要測(cè)試代碼邏輯是否準(zhǔn)確嚴(yán)謹(jǐn);用例測(cè)試座位狀態(tài)更改是否順暢;查詢用例主要測(cè)試查詢語句是否準(zhǔn)確;反饋提交及回復(fù)用例主要測(cè)試學(xué)生端和教師端交互是否正常;暫離、退座和修改、重置密碼用例主要測(cè)試前端與數(shù)據(jù)庫之間交互是否正常。經(jīng)過對(duì)系統(tǒng)所有功能的全面測(cè)試,測(cè)試結(jié)果表明,每個(gè)功能模塊相互之間的聯(lián)系都非常順暢,頁面之間跳轉(zhuǎn)參數(shù)傳遞也都正常,數(shù)據(jù)庫的添加、刪除、更新、查找等語句也很準(zhǔn)確,經(jīng)過對(duì)微信小程序所有功能性測(cè)試,系統(tǒng)功能已經(jīng)達(dá)到了預(yù)期的目標(biāo)[9]。
本文詳細(xì)論述了對(duì)圖書館座位預(yù)約小程序的設(shè)計(jì),且系統(tǒng)已較完整地實(shí)現(xiàn)了文中所論述的功能。其中,用戶可以通過小程序預(yù)約座位,對(duì)座位使用狀態(tài)與預(yù)約情況進(jìn)行查詢,對(duì)使用過程中出現(xiàn)的問題進(jìn)行反饋,在入座時(shí)進(jìn)行座位簽到,以及調(diào)整座位狀態(tài)。管理員可以登錄小程序進(jìn)行審核反饋、重置用戶密碼和發(fā)布公告等簡單操作,在內(nèi)容管理界面上對(duì)用戶、預(yù)約、公告、自習(xí)室以及反饋等信息進(jìn)行管理。我們可以通過云開發(fā)控制臺(tái)了解數(shù)據(jù)庫的使用情況,以及小程序的訪問量,還可以通過可視化圖表了解小程序使用的高頻時(shí)段。根據(jù)后續(xù)使用情況及建議對(duì)小程序做相應(yīng)的修改。