王淼,王法勝
(大連民族大學(xué)信息與通信工程學(xué)院,遼寧 大連 116600)
隨著人工智能研究的飛速發(fā)展,智能手機(jī)的功能變得越來(lái)越豐富,其用戶也飛速增長(zhǎng),APP軟件開發(fā)的市場(chǎng)需求逐步增長(zhǎng)。近幾年發(fā)展更為快速,全球搜索、手機(jī)購(gòu)物、旅行導(dǎo)航、在線支付、網(wǎng)上訂購(gòu)酒店機(jī)票等,全都可以通過(guò)一部手機(jī)完成,所有的操作幾乎都是瞬間的[1]。手機(jī)APP的發(fā)展,帶動(dòng)了大量行業(yè)的發(fā)展,同時(shí)也衍生出許多新的職業(yè)。
本文針對(duì)這一問(wèn)題設(shè)計(jì)開發(fā)一個(gè)基于 Android 的機(jī)票銷售系統(tǒng)。該系統(tǒng)利用Android studio做為開發(fā)平臺(tái)[2],MySQL做為數(shù)據(jù)庫(kù)管理系統(tǒng),采用Java語(yǔ)言實(shí)現(xiàn)。通過(guò)本系統(tǒng)的開發(fā),能夠?qū)崿F(xiàn)所有航班信息、機(jī)票信息的上傳,以實(shí)現(xiàn)機(jī)票的銷售以及對(duì)用戶信息的管理[3-4]。機(jī)票銷售APP主要為用戶和管理員兩部分。每部分又包括三個(gè)模塊,其中用戶端包括信息查詢模塊,機(jī)票預(yù)訂模塊以及訂單管理模塊;管理員端包括航班信息管理模塊,訂單管理模塊和用戶信息管理模塊。
系統(tǒng)根據(jù)需求共分為兩部分,一部分用戶端,一部分為管理端,系統(tǒng)具有數(shù)據(jù)庫(kù),包括數(shù)據(jù)庫(kù)的增刪改查功能。系統(tǒng)使用Android studio進(jìn)行手機(jī)端程序的編寫[5],服務(wù)器端采用IntelliJ IDEA進(jìn)行編寫。采用Java語(yǔ)言實(shí)現(xiàn)。數(shù)據(jù)庫(kù)部分使用MySQL。如圖1所示為系統(tǒng)功能結(jié)構(gòu)圖。
本系統(tǒng)主要包括航班查詢模塊、機(jī)票預(yù)訂模塊、訂單管理模塊、航班信息管理模塊、訂單管理模塊(管理端)和用戶信息管理模塊。通過(guò)以上模塊可以實(shí)現(xiàn)用戶登錄購(gòu)買機(jī)票和管理員登錄添加航班管理信息的功能。
圖1 系統(tǒng)功能結(jié)構(gòu)圖Fig.1 Architecture of the system functions
根據(jù)以上分析,本系統(tǒng)的實(shí)體-關(guān)系圖如圖2所示。
圖2 實(shí)體關(guān)系圖Fig.2 Entity-relationship diagram
本系統(tǒng)是針對(duì)于機(jī)票購(gòu)買所開發(fā)的程序,許多功能需要對(duì)用戶的不同選擇做出反應(yīng),因此程序中使用了大量的if語(yǔ)句進(jìn)行編寫。Android端通過(guò)與后臺(tái)相連[6],繼承自BaseActivity文件,即可將數(shù)據(jù)進(jìn)行存儲(chǔ)和提取。字符類數(shù)據(jù)存儲(chǔ)在StringUtil文件中,日期類數(shù)據(jù)存儲(chǔ)在DateUtil文件中,所有的類似數(shù)據(jù)都從以上文件中進(jìn)行提取。
2.2.1 用戶端航班查詢模塊
由Android端編寫頁(yè)面框架,具體實(shí)現(xiàn)頁(yè)面中的城市、時(shí)間日期等顯示功能,在java文件中編輯城市和時(shí)間的顯示方式,對(duì)用戶的按鈕操作做出相應(yīng)的反應(yīng)。本部分仍然使用if語(yǔ)句,使用Intent方法進(jìn)行頁(yè)面跳轉(zhuǎn),例如intent.putExtra(“startLocation”, startCity);語(yǔ)句則是跳轉(zhuǎn)到航班起飛城市的選擇。以此類推,endCity則為終點(diǎn)城市的選擇,提示部分使用AlertDialog方法進(jìn)行對(duì)話框彈出。
IDEA端設(shè)置城市接口,將城市列表數(shù)據(jù)庫(kù)連入安卓端,直接獲取并顯示在手機(jī)APP上。DateUtil.java文件為時(shí)間接口,將實(shí)時(shí)時(shí)間傳入Android端。數(shù)據(jù)部分需要將數(shù)據(jù)進(jìn)行轉(zhuǎn)換才能顯示,android.text.format.DateFormat類進(jìn)行數(shù)據(jù)轉(zhuǎn)換,將Date轉(zhuǎn)化為String類型,進(jìn)而提取到APP中并進(jìn)行顯示。如圖3所示為航班查詢效果圖,最右側(cè)的圖為查詢結(jié)果。
圖3 航班查詢功能Fig.3 Fight query function
2.2.2 用戶端航班預(yù)訂模塊
航班預(yù)訂模塊沒(méi)有單獨(dú)的頁(yè)面,上一航班查詢模塊查詢到的航班,點(diǎn)擊即可彈出系統(tǒng)提示信息提示是否進(jìn)行購(gòu)買,點(diǎn)擊確定才會(huì)進(jìn)入另一購(gòu)買頁(yè)面,在此頁(yè)面需要填寫相關(guān)信息,點(diǎn)擊“去支付”則進(jìn)行購(gòu)買。
訂購(gòu)功能手機(jī)APP端提示輸入手機(jī)號(hào)等信息,將輸入的信息轉(zhuǎn)換為字符串傳入后臺(tái)數(shù)據(jù)庫(kù)StringUtil.java文件中,點(diǎn)擊支付實(shí)現(xiàn)支付功能,使用add語(yǔ)句將支付的機(jī)票添加進(jìn)數(shù)據(jù)庫(kù),語(yǔ)句如下:mCancelable = orderPresenter.add(mHb.getId(), phone, truename, idcard, new HttpCallBack。如圖4所示為航班預(yù)訂模塊。
圖4 航班預(yù)訂模塊Fig.4 Booking flight module
2.2.3 用戶端訂單管理模塊
訂單管理頁(yè)面只需將支付成功后生成的訂單從數(shù)據(jù)庫(kù)列表中即DateUtil.java文件,DateList列表中提取出來(lái)顯示到安卓端即可。訂單管理有刪除功能,使用delete方法進(jìn)行刪除。使用onItemClick方法進(jìn)行事件中組件內(nèi)容的獲取,例如訂單詳情中的訂購(gòu)人、訂單編號(hào)、下單時(shí)間、訂單金額等信息。如圖5所示為訂單詳情。如圖6所示為刪除訂單功能效果圖。
圖5 訂單詳情Fig.5 Order details
圖6 刪除訂單Fig.6 Delete order
2.2.4 管理端用戶管理模塊
管理員具有用戶賬號(hào)管理權(quán)限,對(duì)于違規(guī)操作的用戶可進(jìn)行賬號(hào)凍結(jié),直接操作與數(shù)據(jù)庫(kù)端,使用if語(yǔ)句進(jìn)行操作,若輸入賬號(hào)與數(shù)據(jù)庫(kù)所存儲(chǔ)的數(shù)據(jù)不相符,user == null,則提示賬號(hào)不存在,若輸入數(shù)據(jù)被識(shí)別為凍結(jié)賬號(hào),user.getState( ) != 0,則提示賬號(hào)被凍結(jié),無(wú)法進(jìn)入。只有管理端管理員解除凍結(jié)后用戶方能重新使用賬號(hào)。如圖7所示為管理端用戶管理效果圖。
圖7 用戶管理Fig.7 User management
2.2.5 管理端航班添加模塊
航班的添加后臺(tái)功能的實(shí)現(xiàn)在IDEA中的HbController.java文件中,數(shù)據(jù)存儲(chǔ)在DateUtil.java和StringUtil.java中,通過(guò)Android端連接,文件繼承自BaseActivity文件與后臺(tái)相連。使用doAdd方法,將航班信息添加進(jìn)數(shù)據(jù)庫(kù),使用if語(yǔ)句進(jìn)行程序判斷,若數(shù)據(jù)庫(kù)該部分收到指令為isBlank,則startCity或endCity文件部分為空,則體統(tǒng)提示“請(qǐng)選擇出發(fā)城市”或“請(qǐng)選擇終點(diǎn)城市”。其他部分信息的添加也使用同樣的方法。如圖8所示為管理端航班添加效果圖。
圖8 航班添加Fig.8 Adding flights
2.2.6 管理端訂單管理模塊
管理端也具有訂單管理的功能,但僅限于訂單以及其詳情的查詢,考慮到用戶訂單的安全性,此部分并不能進(jìn)行增、刪、改、查等。實(shí)現(xiàn)方法與用戶端訂單查詢功能類似,此部分的數(shù)據(jù)已經(jīng)在用戶訂單生成時(shí)存儲(chǔ)到StringUtil.java文件中,查詢時(shí)從數(shù)據(jù)庫(kù)列表中即DateUtil.java文件,DateList列表中提取出來(lái)顯示到安卓端即可。如圖9所示為用戶信息管理。
軟件編寫完成后并不代表工作的結(jié)束,系統(tǒng)測(cè)試是制作一個(gè)軟件必不可少的環(huán)節(jié)[7-8],我們需要對(duì)所編寫的程序進(jìn)行多次測(cè)試,驗(yàn)證系統(tǒng)是否滿足需求規(guī)格,檢驗(yàn)其安全性、可靠性[9]。我們主要為了查找APP內(nèi)的軟件缺陷,及時(shí)進(jìn)行修復(fù)缺陷并使其能夠正確運(yùn)行。在特定情況下,系統(tǒng)允許發(fā)生一些錯(cuò)誤,但一定要在時(shí)間允許范圍內(nèi)快速修改更正,從而使程序完成任務(wù)的所有要求并正確運(yùn)行[10]。
用戶端查詢功能包括航班始末城市、始末日期和時(shí)間、機(jī)票剩余數(shù)量以及價(jià)格。測(cè)試用例如表1所示,測(cè)試結(jié)果表明該功能沒(méi)有缺陷。
表1 航班查詢功能測(cè)試用例Tab.1 Test cases for flight quering
訂購(gòu)功能的測(cè)試用例如表2所示。程序測(cè)試中出現(xiàn)可以重復(fù)訂購(gòu)?fù)粰C(jī)票多次的現(xiàn)象,經(jīng)查詢,在編寫程序時(shí)未添加權(quán)限限制,當(dāng)用戶已經(jīng)購(gòu)買過(guò)某航班機(jī)票后,數(shù)據(jù)庫(kù)會(huì)自動(dòng)記錄,當(dāng)用戶再次購(gòu)買該機(jī)票時(shí),系統(tǒng)會(huì)禁止該用戶再次購(gòu)買。
表2 用戶購(gòu)買機(jī)票功能測(cè)試用例Tab.2 Test cases for tickets buying
用戶端訂單管理功能測(cè)試如表3所示。
表3 用戶訂單管理功能測(cè)試用例Tab.3 Test cases for order management
本系統(tǒng)在通過(guò)對(duì)用戶、系統(tǒng)、功能、技術(shù)可行性、經(jīng)濟(jì)可行性和非功能性的需求分析后,設(shè)計(jì)實(shí)現(xiàn)的一個(gè)界面美觀,使用簡(jiǎn)單的機(jī)票銷售系統(tǒng)。實(shí)現(xiàn)了用戶和管理員都可以進(jìn)行登錄的移動(dòng)端軟件,用戶可以查詢航班、預(yù)訂機(jī)票、信息管理。管理員可以實(shí)現(xiàn)對(duì)用戶的管理、添加航班和訂單信息的查詢。本系統(tǒng)是為了使機(jī)票購(gòu)買變得更容易、更快速所實(shí)現(xiàn)的移動(dòng)端軟件。