陳騰輝 褚小停 陳啟帆 袁鴻燕
摘要:校車是校區(qū)間通勤的主要交通工具,對其科學合理地調度很重要。該文對校車訂座微信小程序的開發(fā)進行了設計,實現(xiàn)了校車管理的信息化,分為日常線與假日線,高效實現(xiàn)了提高校車的利用率、降低運營成本、倡導低碳生活的目標。
關鍵詞:微信小程序;校車;訂座
中圖分類號:G434? ? ? ? 文獻標識碼:A
文章編號:1009-3044(2019)19-0073-03
Abstract:School bus is the main means of transportation for commuting between schools, and it is very important for its scientific and reasonable dispatch. This paper designs the development of the school bus booking micro-message program, realizes the informationization of school bus management, divides it into daily line and holiday line, effectively realizes the goal of improving the utilization rate of school bus, reducing operating costs and advocating low-carbon life.
Key words:Wechat;School Bus; Seat Reservation
1 引言
近百年來,人類科技文明的進步使人類生活發(fā)生了巨大變革,在享受現(xiàn)代科技生活的同時,全球變暖成為懸在人類文明上方的達摩克利斯之劍。中國政府經(jīng)過多年的努力,使得環(huán)保觀念深入人心,但霧霾的大面積爆發(fā),機動車保有量的連年攀升為綠色生活再次蒙上面紗。為了解決此類問題,綠色出行成為近年來人們眼中的焦點。以OFO為代表的共享單車和以滴滴為代表的快速出行為汽車減排發(fā)展提供了巨大助力。經(jīng)過我們團隊一段時間對校區(qū)之間運營校車的觀察,入座率呈現(xiàn)嚴重的兩極分化,造成極大的資源浪費,故而我們萌生制作一套管理系統(tǒng)以期實現(xiàn)提高校車的利用率、降低運營成本、倡導低碳生活的目標。
隨著i0S、安卓等智能化手機系統(tǒng)的迅速發(fā)展而發(fā)展起來的APP,不斷改善著智能終端的移動化應用功能。如今的市場已進入到“互聯(lián)網(wǎng)+”,用戶紅利逐漸退去,從現(xiàn)有的用戶身上挖掘價值、進行業(yè)界的深度融合成了“互聯(lián)網(wǎng)+”的全新發(fā)展思路,擁有8.46多億用戶口的微信無疑是眾多社交APP的領跑者,它的每一次功能升級和服務創(chuàng)新,都直接牽動著億萬用戶的使用體驗乃至生活方式,同時改變著內容生產(chǎn)、創(chuàng)意營銷、消費支付等幾乎所有的互聯(lián)網(wǎng)業(yè)態(tài)。
小程序看起來像程序,但實際上它們是一種新的應用程序組織形式,比我們現(xiàn)有的任何應用程序都更靈活和更易訪問。它不僅能實現(xiàn)應用觸手可及的夢想,還能很好地體現(xiàn)用完即走的理念,用戶只要掃一掃或者搜一下就能直接打開應用,獲取服務。
2 微信小程序頁面開發(fā)
2.1功能設計
我們把小程序的功能分為兩大塊,第一模塊為車票的查詢與出售,考慮到學校既有校區(qū)與校區(qū)之間的日常線路,也有在周末或節(jié)假日開往火車站或汽車站的線路,針對這兩種情況,我們專門把校車分為兩種線路:日常線與假日線,方便了師生的查詢,以免混淆。
對于日常線(校區(qū)之間)的特殊運營,我們團隊特別設計一項電子乘車卡,學生在程序上預約申請后,系統(tǒng)將生成一張電子票。經(jīng)后臺審核后,系統(tǒng)自動將該電子票轉換為電子乘車卡,并將該卡的狀態(tài)轉化為可使用。為了提高用戶對程序使用的簡易度及程序頁面的簡潔度,把未使用的電子乘車卡與已使用的電子乘車卡合而為一,在乘車卡包里,把所有的乘車卡(包括已失效以及將要使用)進行虛化處理。在距離校車發(fā)車前1小時,系統(tǒng)會將該時段預約成功的電子乘車卡實化,用于展示。當距離發(fā)車時間僅剩10分鐘時,系統(tǒng)會再次將該卡片虛化,并顯示該卡的狀態(tài)為已失效。無論是否登上校車,該電子乘車卡都將永遠虛化(即永遠無法使用)。我們將歷史記錄與乘車卡合并,既方便用戶瀏覽查詢,也減少了用戶對頁面的切換率,大大提高了用戶的便捷度。
對于假日線,我們將與校方自管會合作,由自管會方面發(fā)布假日開往火車站和汽車站的線路及乘車時間,學生可在應用上查詢相應的線路,并在應用上實現(xiàn)預支付??紤]到原計劃開通的線路會因為上座率問題而無法開通,在程序設計上,允許自管會提前24小時取消該線路并實現(xiàn)退款。對于車票發(fā)放問題我們采取日常線的管理機制。對于已取消的線路,如果用戶預支付成功,系統(tǒng)將會保留該記錄,并將該卡的狀態(tài)顯示為已取消。
第二模塊為用戶信息模塊。在此頁面中,用戶可以查詢自己的乘車卡包亟待審卡。針對用戶信息,我們將采取微信號、學號和手機號相關聯(lián)的模式,以學號為基本信息進行乘車卡的申請及假日校車線路的預定購買。
對于管理端,我們開發(fā)了兩個管理端,一個是校車管理端,對日常線的審核及電子乘車卡的發(fā)放;第二個管理端是對特定的自管會管理人員開放,用于對假日線的發(fā)布、取消、退款及各線路的預定人數(shù)統(tǒng)計。下一步,我們計劃將學生的注冊信息與校方相結合,對日常線的審核,將采取層次篩選,對于學生提出的校車申請,先由班長審核,再由輔導員審核,通過后,才提交給管理員進行座位的安排與電子乘車卡的發(fā)放。這樣將大大減少學生惡作劇的出現(xiàn),也減少審核老師的工作負擔。
2.2程序設計
JavaScript是開發(fā)小程序頁面的主要語言,小程序的開發(fā)與普通網(wǎng)頁的開發(fā)非常相似,但兩者之間仍存在一些差異。網(wǎng)頁開發(fā)渲染線程和腳本是互斥的,這也是為什么長時間的腳本運行可能會導致頁面失去響應,而在小程序中,兩者是分開的,分別運行在不同的線程中。正因如此,邏輯層運行在JSCore中,并沒有一個完整的瀏覽器對象,所以導致了普通網(wǎng)頁開發(fā)中的BOM API和DOM API缺失,從而一些非常熟悉的庫例如jQuery、Zepto等,在小程序中是無法運行的。小程序是由網(wǎng)頁開發(fā)衍生而來的,網(wǎng)頁編程采用的是HTML&CSS&JavaScript這樣的組合,在小程序中有同樣的角色:WXML&WXSS&JavaScript。本程序的頁面設計也是圍繞這三者進行編程。WXML是用來描述當前頁面的結構,WXSS用來描述頁面樣子,JS通常用來處理頁面和用戶之間的交互。
本程序有4個基礎頁面,用戶登錄后進入的是第一個頁面是“搜索頁面”,用swiper組件分化日常線和假日線的查詢,方便了用戶使用也減少了頁面替換。在日常線的swiper-item子組件中,通過在WXSS設計的transform屬性和在JS 中設計中間圖標的點擊事件來切換校區(qū)之間的往來。在日期選擇設計上使用picker-view(嵌入頁面的滾動選擇器),讓用戶有一個不一樣的體驗。當?shù)攸c與日期選擇設計完畢后,用botton組件設計查詢按鈕,在JS中添加botton的點擊事件,調用微信提供的頁面跳轉API:wx.navigaTo進行頁面跳轉進入第二個頁面——“查詢頁面”。考慮到日常線需要申請且不需要支付,假日線需要預支付,在botton的點擊事件中我們調用數(shù)據(jù)緩存API:wx.setStorageSync,在第二頁的onLoad中調用讀取緩存API:wx.getStorageSync判別緩存中數(shù)據(jù)的值,從而對兩種線路進行區(qū)分。不僅如此,我們還需要用該判別的值在第二頁的WXML中進行條件渲染,通過條件渲染wx:if來渲染出對應的查詢結果子項,假日線的子項數(shù)目及內容均由管理端進行發(fā)布,上傳到服務器,在JS文件中進行數(shù)據(jù)下載而來。在每一子項中設置申請(支付)按鈕,用于跳轉至車票詳情頁面(第三頁),申請內容將通過上傳API上傳至服務器,支付頁面則調用微信的支付API。在app.json文件中設置tabBar屬性來添加底部導航欄,在導航項為兩項:首頁和第四頁——“用戶信息”。在用戶信息頁面中,可以查看所有的電子乘車卡及申請記錄。電子乘車卡無論是否用過都進行虛化處理,在JS文件中通過調用Date()對象獲取當前系統(tǒng)時間,通過系統(tǒng)時間與乘車卡上的時間比較,如果在-30min~20min的范圍內,則將電子乘車卡去掉虛化背景且日常線的頂邊為紅色,假日線的頂邊為藍色。在申請記錄里記錄著申請審核中、申請失敗、假日線被取消等記錄。
3 服務后端開發(fā)
3.1服務器的選取
Apache tomcat作為著名的Servlet容器實現(xiàn)以及輕量級JAVA應用服務器,是Apache軟件基金會的頂級項目。它開源、輕量,與JBoss、Weblogic等企業(yè)級應用服務器相比,占用資源小,擴展性好,尤其是在當前主流的基于POPO(WithoutEJB)的輕量級編程方式下構建服務器系統(tǒng)。
3.2數(shù)據(jù)庫管理系統(tǒng)的選取
數(shù)據(jù)庫管理系統(tǒng)(DBMS)選擇關系型數(shù)據(jù)庫MySQL以及它的可視化工具navicat for mysql。MySQL支持5000萬條記錄的數(shù)據(jù)倉庫,在中小型數(shù)據(jù)庫中,這樣的容量存儲校車的班車信息和學生信息絕對夠用了。MySQL有著優(yōu)秀的跨平臺性和可移植性,它適應所有的平臺。MySQL因為是開源的,所以支持任意修改,也就是說可以去除我們不需要的功能,從而簡化MySQL,提高速度。
3.3服務器設計
Servlet程序是由服務器調用和執(zhí)行的Java類,運行在服務器中的Servlet是服務器進程的一部分,服務器負責Servlet的生命周期。當tomcat啟動時,Servlet查找對應的配置文件web.xml,并根據(jù)配置文件創(chuàng)建實例;Servlet被實例化后,tomcat將調用init()方法為實例初始化;初始化后,當小程序的請求到來時,服務器創(chuàng)建一個請求對象和一個響應對象。每一個Servlet的請求都會產(chǎn)生一個Request對象,Servlet給小程序的響應由一個Response對象完成,這兩個對象以參數(shù)的形式傳遞給service()方法。在service()方法內,對小程序的請求方式進行判斷,如果是以GET方法提交,則調用doGET()方法處理請求,如果是以POST方法提交的,則調用doPOST()方法處理請求。對于訂座系統(tǒng),服務器的主要功能是對數(shù)據(jù)庫的操作及對臨界資源的管理。對POST請求,doPOST()方法是對數(shù)據(jù)庫進行插入或刪除操作,通過調用JDBC API對數(shù)據(jù)庫連接并修改數(shù)據(jù)庫的數(shù)據(jù)。同時,也是通過調用JDBC API 在doGET()方法中對數(shù)據(jù)庫進行查詢并獲取查詢的數(shù)據(jù),返回到客戶端。
4 結束語
正式發(fā)布的微信小程序已在改變著“互聯(lián)網(wǎng)+”生態(tài),借助這一眾創(chuàng)平臺來重新定義服務路徑、獲取流量紅利。校車訂座方式的信息化也是校車發(fā)展歷程中的必經(jīng)之路。在實施期間遇到的困擾仍需與學校相關部門進一步交流合作,規(guī)避校車訂座所帶來的不利因素,充分發(fā)揮其有利的各個方面。
參考文獻:
[1] 劉光瑞. Tomcat架構解析[M].北京:人民郵電出版社,2017.
[2] 王珊,薩師煊.數(shù)據(jù)庫系統(tǒng)概論[M].北京:高等教育出版社,2014.
[3] 史勝輝,王春明,沈學華. Java EE基礎教程[M].北京:清華大學出版社,2010.
[4] 李剛. 輕量級Java EE企業(yè)應用實戰(zhàn)[M].北京:電子工業(yè)出版社,2014.
[5] 微信小程序開發(fā)者文檔[EB/OL]. https://developers.weixin.qq.com/miniprogram/dev/index.html.
【通聯(lián)編輯:王力】