吳秀敏,王小蘭,陳世斌, 方巍
ATM 機的出現(xiàn)方便了人們的生活,但售票領(lǐng)域至今未出現(xiàn)相似的系統(tǒng)和設(shè)備。然而這種系統(tǒng)和設(shè)備在生活中卻有很大的需求?,F(xiàn)實生活中的售票系統(tǒng)的售票過程耗費了大量的人力,但是其效果并不能另人滿意,幾乎每次買票都需要排很長的隊,不管是在車站還是在各個售票點。如果現(xiàn)實生活中有類似ATM機的售票機器,那么購票過程也就不再那么困難了。
整個系統(tǒng)可以設(shè)計為一個星形網(wǎng)絡(luò),即一個主控機作為服務(wù)器連接著多個客戶機。客戶機運行相同的程序,硬件的配置也基本相同。
系統(tǒng)拓撲結(jié)構(gòu)如圖(1)所示
圖1 系統(tǒng)總體結(jié)構(gòu)框圖
主控機功能:與客戶端進行數(shù)據(jù)交換,建立數(shù)據(jù)庫,進行數(shù)據(jù)檢索,處理和更新等。
客戶端功能:與主控機通信,監(jiān)控客戶的操作需求。
主控機程序:串口通信程序,數(shù)據(jù)檢索和處理程序等。
客戶端程序:串口通信程序,客戶需求處理程序等。
本系統(tǒng)模擬自動購票的過程是:
(1)客戶端獲取輸入的學號和乘車方向信息發(fā)送給主控端;
(2)主控端獲取學號和乘車方向信息,并通過學生信息中心查詢學生的信息,將乘車區(qū)間(起點站—終點站)傳送給票務(wù)中心,票務(wù)中心查詢相關(guān)乘車信息將車次路線信息發(fā)送給客戶端;
(3)客戶端顯示車次路線信息;
(4)客戶端獲取選擇的記錄號,從車次列表中讀取相應車次信息并發(fā)送給主控機;
(5)主控機收到車次信息后向客戶端發(fā)送完整的車票信息(車次、起點站、終點站、發(fā)車時間、票價),并發(fā)出出票指令;
(6)客戶端接收到車票信息和出票指令后,打印車票。
考慮到實際情況的復雜性,本系統(tǒng)主控機和客戶端的通信比較復雜。為了方便程序的編寫,增加系統(tǒng)的容錯性和穩(wěn)定性,我們設(shè)計了主控機和客戶端的狀態(tài)機。
主要工作過程及狀態(tài)變化是:(1)啟動程序,開啟通信服務(wù),主控機狀態(tài)初始化為“等待接收學生學號和乘車方向”狀態(tài);(2)等待串口接收數(shù)據(jù);(3)串口接收到數(shù)據(jù)后根據(jù)串口協(xié)議的設(shè)置對接收到的數(shù)據(jù)進行處理;(4)如果收到學號和乘車方向信息,則查詢學生信息數(shù)據(jù)庫得到乘車路線,然后根據(jù)乘車路線查詢車票信息數(shù)據(jù)庫得到所有包含該乘車路線車次,并將車次信息發(fā)給客戶端;主控機的狀態(tài)轉(zhuǎn)到“等待接收車次選擇”狀態(tài);如果當前狀態(tài)為“等待接收車次選擇”,并且收到了客戶端的車次選擇信息,則查詢車票信息數(shù)據(jù)庫獲取對應車次更詳細的數(shù)據(jù),并將詳細信息封裝為出票命令發(fā)送給客戶端,主控機狀態(tài)轉(zhuǎn)到“等待交易完成”狀態(tài);如果當前狀態(tài)為“等待交易完成”,并且收到了客戶端的交易完成信息;則更新車票信息數(shù)據(jù)庫,主控機的狀態(tài)轉(zhuǎn)到“等待接收學生學號和乘車方向”狀態(tài)。
1.2.1 主控機的狀態(tài)機
圖(2)所示的狀態(tài)機形象直觀地描述了主控機的工作狀態(tài)處理過程。
圖2 主控機的狀態(tài)機描述
1.2.2 客戶端的狀態(tài)機
圖(3)示出的狀態(tài)機直觀地描述了客戶機監(jiān)控過程。
圖3 客戶端的狀態(tài)機描述
系統(tǒng)程序的設(shè)計主要體現(xiàn)在主控機和客戶機兩個方面,下面分別設(shè)計主控機和客戶機的工作流程。
1.3.1 主控機的程序設(shè)計
主控機作為服務(wù)器主要負責數(shù)據(jù)庫的管理,并提供查詢接口,將查詢結(jié)果通過串口發(fā)送給客戶端。程序流程圖如圖(4)所示。
主控機程序采用MFC單文檔形式,程序由MFC函數(shù)框架自動完成消息循環(huán),需要編寫實現(xiàn)相關(guān)功能的消息響應函數(shù)的代碼,程序中主要的工作是編寫菜單的響應函數(shù)和串口通信模塊的相關(guān)代碼。
圖4 主控機程序流程圖
1.3.2 客戶機的程序設(shè)計
客戶機主要負責從客戶界面獲取輸入信息,并將其轉(zhuǎn)換為相應消息格式通過串口發(fā)送給主控機,并將主控機的回復信息以一定的方式顯示在界面上,可以采用對話框形式。其程序流程圖如圖(5)所示。
圖 5 客戶端程序流程圖
現(xiàn)在網(wǎng)上銷售如此火爆,如果該系統(tǒng)擴展到支持 Web形式,那么可使用網(wǎng)上銀行進行網(wǎng)上交易,減少了硬設(shè)備的投入,使系統(tǒng)的投資進一步減少。若限制一個賬號(學號,工作證號,或身份證號)購票的數(shù)目,那么本系統(tǒng)還能夠在一定程度上能減少黃牛票,實現(xiàn)公平交易。
[1] 周功業(yè),黃文蘭,盧建華.現(xiàn)代微機系統(tǒng)與接口技術(shù),[M] 中山大學出版社,
[2] 王珊,薩斯煊.數(shù)據(jù)庫系統(tǒng)原理概論,[M] 高等教育出版社
[3] 王超龍,陳志華.VC++ 6.0入門與提高,[M] 人民郵電出版社.
[4] 深入淺出VC++串口編程,宋寶華.來自網(wǎng)絡(luò).