陳湘瑾 祖子帥 于孔亮 修 昂
(山東科技大學,山東 濟南250000)
隨著網絡技術的持續(xù)性發(fā)展,同時為了適應現(xiàn)今社會的變革需要,設計一個線上火車售票系統(tǒng)來方便人們購買火車票,節(jié)約時間及其他成本顯得極其重要。該基于數(shù)據結構和Java 的火車售票系統(tǒng)操作方便,用戶登錄該系統(tǒng)后可實現(xiàn)線上查票、購票、退票等目的。
本系統(tǒng)主要針對具有線上購票需求的用戶而設定,購票人員基本信息包括:姓名、性別、身份證號碼、職業(yè);車票信息包括:車次、車廂、出發(fā)地點、到達地點、發(fā)車時間、票價等。系統(tǒng)采用順序循環(huán)優(yōu)先級隊列實現(xiàn)如下功能:(1)車票基本信息錄入。(2)售票。(3)退票。(4)查詢輸出。(5)當某班次車票售空,允許乘客排隊等待退票,排隊乘客帶有優(yōu)先級(如:現(xiàn)役軍人>大學生>普通乘客)。
此部分設計可以彈出用戶名與密碼對話框,若用戶輸入的信息匹配都正確即可進入主界面,對界面標簽、文本框等組件進行屬性(位置,大?。┰O計。為登錄按鈕添加事件監(jiān)聽器,主要是通過比較方法equals()將用戶輸入的賬戶及密碼與原有固定的正確文本信息進行比對實現(xiàn)登錄功能。
此界面通過Swing 開發(fā),添加各種組件,通過二維數(shù)組的創(chuàng)建實現(xiàn)提取車票信息、全局數(shù)據的提取和存儲,對主界面按鈕添加監(jiān)聽,實現(xiàn)分別傳入一個車次參數(shù)并跳轉到其他各界面,通過比較實際改變的車票列表(文件流里文件的信息)和彈出界面顯示還未改變的車位,聲明改變了某個位置的值后再次賦值并顯示改變后的數(shù)據信息,以此實現(xiàn)刷新功能并最終顯示修改后車位。
購票用戶鎖定車次進行購票而進行個人信息輸入后,比較判斷用戶輸入信息判斷是否為空,只有都不為空時才彈出“進入買票隊列!”窗口,否則彈出“請輸入完整信息!”窗口。然后購買成功的用戶的數(shù)據被獲取并被添加到Main 中全局數(shù)據里,用戶列表List 中添加數(shù)據。最后實現(xiàn)頁面交互:將買票成功的用戶的信息加入到查看列表里,購買狀態(tài)默認為0。
此界面實現(xiàn)查看進入買票隊列中的用戶的等待狀態(tài)等信息。通過循環(huán)、判斷語句實現(xiàn)比對和人數(shù)累加的算法,將選中車次和選中此車次的查看列表比對,查看有多少人選中該車次(得h),創(chuàng)建h 行3 列的數(shù)組顯示查看列表中的數(shù)據信息,再通過二維數(shù)組、讀取文件流比對存儲在文件中的車次和選中車次是否相等,若相等輸出文件中信息到查看列表框。通過row 獲取選中一行數(shù)據信息,若沒選中則row=-1 顯示“沒有選擇人!”。點擊退票按鈕時,通過比較判斷,若數(shù)組w【row】【1】.equals(“1”)則判斷該退票用戶曾購票成功并可退票;找到車次后把對應車位位置數(shù)加1,表示有空余位可搶票。將原存儲文件中的用戶姓名和選中列表中的用戶姓名比對,找到退票人名字后進行刪除操作。即Main 中buylist 里移除那一行數(shù)據,后刪除選中的那一行數(shù)據。
此界面顯示當前車次還未搶到票的h 個用戶的信息,通過h 行4 列的二維數(shù)組將上述用戶信息放入優(yōu)先級隊列中存儲起來,并將他們入隊列,現(xiàn)役軍人優(yōu)先級設為1,學生優(yōu)先級設為2,普通乘客優(yōu)先級設為3,以此為后面比較優(yōu)先級并先出隊最高優(yōu)先級做準備。若點擊“搶車票”按鈕則實行以下操作:若搶票成功則將ticketlist 中的車位數(shù)減一,后SeqPQueue 優(yōu)先級隊列實現(xiàn)獲取優(yōu)先級最高的人,找到購票成功的人并將其數(shù)據從buylist 中刪除,然后新建一行車次,姓名和等待狀態(tài)為1 的數(shù)據。若getSeat()<0 則彈出“沒有車位!”提示框。
將等待搶票隊列列表中(即未搶票且無車位)的用戶通過append()方法入隊,由于是順序優(yōu)先級隊列,隊列入隊都是從隊尾插入(入隊)此處無需考慮假溢出問題。隊尾rear=rear+1 即可。對于出隊要考慮優(yōu)先級問題現(xiàn)役軍人(優(yōu)先級為1)先出隊,其次是學生(優(yōu)先級為2),最后是普通人。利用getPriority()方法得到的1、2、3 數(shù)字進行比較,數(shù)越小,優(yōu)先級就越大。找到優(yōu)先級最高元素的位置并出隊后,這個元素后面的元素下標都要減1,補齊空缺。最后返回輸出優(yōu)先級最大的用戶的信息(即該用戶搶票成功)。
輸入用戶:“admin”及密碼:“123”即可登入該火車售票系統(tǒng)。登錄后跳轉到車票信息顯示界面,如圖1。
圖1 車票信息顯示界面
用戶選中圖1 中顯示的任意一行車次數(shù)據并點擊“購買”按鈕,即可出現(xiàn)購票用戶信息為鎖定該車次進行購票而進行的個人信息輸入錄入界面,如圖2 輸入的名為“小芳”的用戶相關信息。
圖2 購票用戶信息錄入界面
購票之后點擊主界面并點擊“查看”按鈕則出現(xiàn)該車次用戶購票狀態(tài):“1”表示搶票成功、“0”表示還未搶票(在隊列中等待搶票的用戶)。如圖3。
圖3 查看及退票
用戶點擊主界面“隊列”按鈕查看在等待購票隊列中的個人信息如圖4,點擊“搶車票后”若該車次還有空位則顯示“購票成功”,反之則“沒有車位”。
圖4 等待搶票隊列
該火車售票系統(tǒng)基于Java 編程語言,依據圖形用戶界面設計及面向對象程序設計的基本概念,該系統(tǒng)可滿足用戶實現(xiàn)一體化線上查票、購票、退票等,使購票管理體系更加智能化、高效化,為購票者帶來更大的便利,極大提高了用戶的體驗感。