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