JAVA實驗報告2-模擬售票系統(tǒng)程序_第1頁
JAVA實驗報告2-模擬售票系統(tǒng)程序_第2頁
JAVA實驗報告2-模擬售票系統(tǒng)程序_第3頁
JAVA實驗報告2-模擬售票系統(tǒng)程序_第4頁
JAVA實驗報告2-模擬售票系統(tǒng)程序_第5頁
已閱讀5頁,還剩11頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、JAVA 實驗(2)課程名稱:Java面向?qū)ο蟪绦蛟O(shè)計 學(xué) 院:管 理 學(xué) 院 專業(yè)班級:信息管理與信息系統(tǒng))(班 學(xué) 號:3108006406名:任課教師:2010年05月26日管 理 學(xué)院 信息管理與信息系統(tǒng)專業(yè) 08信管6班 組學(xué)號3108006406姓名張鐘權(quán)協(xié)作者 教師評定實驗題目模擬售票系統(tǒng)程序一、實驗?zāi)康呐c要求(1)實驗?zāi)康模和ㄟ^線程和多線程的學(xué)習(xí),設(shè)計一個模擬火車站售票大廳 的工作情形,加深對線程和多線程的了解。(2)實驗要求:按照Java程序設(shè)計教程的要求完成第二章中模擬火車站售 票系統(tǒng)程序的編寫和調(diào)試。二、實驗方案I、SimulateRailwayStation 類:Mai

2、n()方法:程序入口;SimulateRailwayStation()方法:安排界面布局;actionPerformed()方法:按鈕動作事件,調(diào)用“火車站售票大廳類” RailwayStation 的 generateCustomer()方法,模擬售票工作情形。II、RailwayStation 類:RailwayStation()方法:構(gòu)造函數(shù);generateCustomer()方法:接待新增顧客排隊處理策略;addAgent()方法:添加售票窗口;run()方法:線程,調(diào)用updateDisplay()方法;updateDisplay()方法:實時處理售票業(yè)務(wù)或等待客戶;setup()

3、方法:售票窗口處于空閑或暫停服務(wù)。III、Agent 類:Agent()方法:售票窗口編號;joinNewCustomer ()方法:在本窗口的隊列中添加新顧客;releaseCustomer()方法:記錄顧客辦理完業(yè)務(wù)離去人數(shù);getCusOfQueue()方法:讀取本窗口的隊列的顧客列表;run()方法:線程,本窗口處理業(yè)務(wù)。IV、Customer 類:Customer()方法:顧客取得編號。V、List 類:List()方法:顧客按隊列結(jié)構(gòu)排隊。三、實驗結(jié)果和數(shù)據(jù)處理1、RailwayStation類:火車站售票大廳類/*火車站售票大廳類*/class RailwayStation ex

4、tends Panel implements Runnable/定義售票窗口數(shù)組Agent口protected Agent agent=new AgentSimulateRailwayStation.NUM_AGANTS;protected Label labelAgent=new LabelSimulateRailwayStation.NUM_AGANTS;protected Label labelQueue=new Label(正在等待的顧客數(shù):0);protected Label labelServed=new Label(已經(jīng)服務(wù)的顧客數(shù):0”);定義可以進行售票服務(wù)的窗口protec

5、ted int numAgents=SimulateRailwayStation.NUM_INITIAL_AGANTS;/定義存放已服務(wù)過的顧客數(shù)public static int numCustomerServered=0;private Thread thread=null;public RailwayStation()setup(各窗口實時狀態(tài)顯示:);顯示各售票窗口的實時工作狀態(tài)private void setup(String title)/定義售票窗口的工作狀態(tài)面板Panel agentPanel=new Panel();agentPanel.setLayout(newGridLa

6、yout(SimulateRailwayStation.NUM_AGANTS,1);/各售票窗口的工作狀態(tài)for(int i=0;iSimulateRailwayStation.NUM_AGANTS;i+)if(inumAgents)labelAgenti=new Label(窗口”+(i+1)+:空閑中.);agentPanel.add(labelAgenti);實例化售票窗口agenti=new Agent(i);售票窗口開始售票服務(wù)agenti.start();elselabelAgenti=new Label(窗口 ”+(i+1)+:暫停服務(wù)!);agentPanel.add(labe

7、lAgenti);定義顧客候票情況面板Panel otherPanel=new Panel();otherPanel.setLayout(new GridLayout(2,1);otherPanel.add(labelQueue);otherPanel.add(labelServed);setLayout(new BorderLayout();顯示各售票窗口的工作狀態(tài)安排在下部add(South”,agentPanel);顯示顧客候票狀況安排在中部add(Center”,otherPanel);顯示調(diào)用本方法setup()的參數(shù)安排在上部 add(North”,new Label(title)

8、;/開始工作public void start()if(thread=null)thread =new Thread(this);啟動線程thread.start();線程,調(diào)用顯示實時售票狀況的updateDisplay()方法public void run()while (true)this.updateDisplay();實時處理售票的狀況public void updateDisplay()定義在本窗口等候的顧客數(shù)int totalSize=0;對可以服務(wù)的窗口進行循環(huán)for(int i=0;i0)labelAgenti.setText(s+agenti.getCusOfQueue()

9、+正在等待”);elselabelAgenti.setText(s);elselabelAgenti.setText(窗口”+(i+1)+”:空閑中.);for(int i=numAgents;iSimulateRailwayStation.NUM_AGANTS;i+)labelAgenti.setText(窗口 ”+(i+1)+:暫停服務(wù)!);labelQueue.setText(正在等待的顧客數(shù):+totalSize);labelServed.setText(已經(jīng)服務(wù)的顧客數(shù):+numCustomerServered);/火車站售票窗口關(guān)閉public void stop()thread=

10、null;for(int i=0;inumAgents;i+)/停止售票服務(wù)agenti.halt();添加窗口public void addAgent()if(numAgents1)agentnumAgents-1.halt();numAgents-;接待顧客的方法public void generateCustomer()/所有工作窗口的隊列中,至少有一個顧客在排隊時為真.boolean allAgentQueueHasOne=true;/*如果所有正在工作窗口的隊列中至少有一個顧客在排隊,就把新顧客添加到隊列最少的那個隊.否則,就把顧客添加到?jīng)]有業(yè)務(wù)處理的窗口中.*/對可以服務(wù)的窗口進行

11、循環(huán)for(int i=0;inumAgents;i+)/如果本窗口隊列中沒有顧客if(agenti.getCusCountOfQueue()=0 & agenti.getCIdOfHandling()=0)/添加新顧客agenti.joinNewCustomer(new Customer();allAgentQueueHasOne=false;break;/如果所有工作窗口都有顧客在等候if(allAgentQueueHasOne)定義變量index存放最少等候顧客數(shù)的窗口編號int index=0;/對可以服務(wù)的窗口進行循環(huán)for(int i=0;inumAgents;i+) if(age

12、nti.getCusCountOfQueue()0)Customer c=(Customer)customersofqueue.get(0);customersofqueue.delete(0);return c;elsereturn null;本窗口已辦理業(yè)務(wù)的顧客數(shù)public int getCusCountOfHandled()return numCustomers;本窗口已辦理業(yè)務(wù)的顧客列表public String getCusOfHandled()if(customersofhandled.getSize()0)StringBuffer sbuf=new StringBuffer(

13、);sbuf.append(顧客);for(int i=0;i0)StringBuffer sbuf=new StringBuffer();sbuf.append(Customer);for(int i=0;i0)customersofqueue.delete(customersofqueue.getSize()-1);顧客辦理完業(yè)務(wù)離去public void releaseCustomer(Customer c)numCustomers+;customersofhandled.add(c);本窗口在不斷的處理業(yè)務(wù)public void run()while (running)trythrea

14、d.sleep(int)(Math.random()*SimulateRailwayStation.MAX_NO_CUSTOMERS) + 1000);Customer customer=requestCustomerFor();/ 獲得服務(wù)的顧客if(customer!=null)handlingCId=customer.getCustomerId();/ 獲得顧客 ID辦理業(yè)務(wù)時間:主要是詢問等thread.sleep(int)(Math.random()*SimulateRailwayStation.BUSINESS_DELAY)/2) ;synchronized(this)/檢索對應(yīng)的

15、票務(wù)信息for(int i=0;iSimulateRailwayStation.train_num.length;i+)if(customer.getCustomerWilling()=i+1)SimulateRailwayStation.ticketsi-;/ 對應(yīng)票數(shù)減一辦理業(yè)務(wù)時間:打印票、交錢等thread.sleep(int)(Math.random()*SimulateRailwayStation.BUSINESS_DELAY)/2) ;releaseCustomer(customer);/ 顧客辦理后離開。RailwayStation.numCustomerServered+=1

16、;/ 服務(wù)顧客數(shù)+1elsehandlingCId=0;catch(InterruptedException ie)System.out.println(Teller Exception: +ie);各置口實時狀態(tài)顯示:正在等待的顧客數(shù):口已經(jīng)服務(wù)的顧客數(shù)舊商口 空閑中.菌口 n空閑中.宣口女空閑中.宣口 4空閑中.窗口 5:空閑中.窗口 6:空闈中.窗口r暫停服薈!窗口 8:暫停服務(wù)!窗口 9:暫停服會! 窗口 1D:暫停服弦!匱現(xiàn)麾j|顧客離去|增加售票裂l=T| |關(guān)閉售票窗口 |各畫口實時狀態(tài)顯示:正在等待的顧客數(shù):口巳線服罟的顧客數(shù):1 9窗口 1:空閑中.窗口衛(wèi):空閑中.窗口 3:

17、空閑中.窗口 4;空閑中窗口&空閑中.商口 E:空氐I中.窗口 7:哲停服外!置口 9皆停服務(wù)!商口W暫停服務(wù)!窗口 1 有停服余!圈鰻I顧客離去|增加售票盲口 |關(guān)閉售票窗云|各置口實時狀態(tài)顯示:正在等待的顧客數(shù):口已經(jīng)服蓉的顧客數(shù):1 g有口任閑中.菌口 W:空閑中.宣口女空閑中.菌口 4空閑中.窗口 5:空抵I中.窗口 6:空閑中.窗口 了:空閑中.窗口 8:空閑中.窗口 9:空閑中.窗口 1。:暫停服務(wù)!海加顧客|顧客離去| !卸嚕霎宣口|關(guān)閉售票窗云|各畫口實時狀態(tài)顯示: 正在等待的顧客數(shù):口 巳線服罟的顧客數(shù):1 9 窗口 1:空閑中.窗口衛(wèi):空閑中.窗口 3:空閑中.窗口 4;暫

18、停服翦! 窗口&哲停服務(wù)! 商口 E:暫停服務(wù)! 窗口 7:哲停服外! 置口 9皆停服務(wù)! 商口W暫停服務(wù)! 窗口 1 有停服余! 加顧客|顧客離去|增加售票留口 |各有口實時狀態(tài)顯示:正在等待的顧客數(shù) 已經(jīng)服蓉的顧客數(shù)宣口 1 正在辦理顧容 41 Customer51,51,51,51.51,51,51 宣口W正在辦理頓客51 CustomerSI ,51,51,51.51,51,51 宣口 M正 M50Customer51,51,51,51.51,51,51 菌口4皆停服務(wù)!窗口 9:暫停服駕! 窗口哈:暫停服薈! 窗口了:暫停服碧! 窗口 8:暫停服務(wù)! 窗口 9暫停服會! 窗口 1。:暫停服務(wù)陲垣夔|顧客離去I增加售票窗口 |關(guān)閉售理窗日四、結(jié)論本次實驗,是模擬售票系統(tǒng)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論