c_銀行叫號系統(tǒng)課程設(shè)計_第1頁
已閱讀1頁,還剩22頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、<p><b>  課程設(shè)計任務(wù)書</b></p><p>  課程名稱:課程設(shè)計1(數(shù)據(jù)結(jié)構(gòu))</p><p>  設(shè)計題目:銀行排隊叫號系統(tǒng)</p><p><b>  問題描述: </b></p><p>  目前,在以銀行營業(yè)大廳為代表的窗口行業(yè),大量客戶的擁擠排隊已成為了這些企事

2、業(yè)單位改善服務(wù)品質(zhì)、提升營業(yè)形象的主要障礙。排隊(叫號)系統(tǒng)的使用將成為改變這種狀況的有力手段。排隊系統(tǒng)完全模擬了人群排隊全過程,通過取票進(jìn)隊、排隊等待、叫號服務(wù)等功能,代替了人們站隊的辛苦,把顧客排隊等待的煩惱變成一段難得的休閑時光,使客戶擁有了一個自由的空間和一份美好的心情。 </p><p>  排隊叫號軟件的具體操作流程為:</p><p>  顧客取服務(wù)序號。當(dāng)顧客抵達(dá)服務(wù)大廳時

3、,前往放置在入口處旁的取號機(jī),并按一下其上的相應(yīng)服務(wù)按鈕,取號機(jī)會自動打印出一張服務(wù)單。單上顯示服務(wù)號及該服務(wù)號前面正在等待服務(wù)的人數(shù)。</p><p>  銀行職員呼叫顧客 ,顧客的服務(wù)號就會按順序的顯示在顯示屏上。當(dāng)一位顧客辦事完畢后,柜臺銀行職員只需按呼叫器相應(yīng)鍵,即可自動呼叫下一位顧客。</p><p><b>  2. 功能要求:</b></p>

4、<p>  1)使用數(shù)組或鏈表以及C#接口和范型技術(shù)實現(xiàn)通用的隊列功能;</p><p>  2)編寫算法,利用隊列模擬銀行排隊系統(tǒng);</p><p>  3)利用多窗口分別模擬顧客取服務(wù)號、銀行窗口服務(wù)顧客。</p><p><b>  3.界面要求:</b></p><p>  用戶界面設(shè)計不做統(tǒng)一規(guī)定

5、,但應(yīng)做到界面友好,易于操作。 </p><p><b>  4. 技術(shù)要求:</b></p><p>  要求利用面向?qū)ο蟮姆椒ㄒ约瓣犃袛?shù)據(jù)結(jié)構(gòu)來完成系統(tǒng)的設(shè)計;在設(shè)計的過程中,建立清晰的類層次; 在系統(tǒng)設(shè)計中要分析和定義各個類,每個類中要有各自的屬性和方法;要求運(yùn)用面向?qū)ο蟮臋C(jī)制來實現(xiàn)系統(tǒng)功能。 </p><p><b>  5.

6、創(chuàng)新要求</b></p><p>  在基本要求達(dá)到后,可以進(jìn)行創(chuàng)新設(shè)計(包括界面、功能、數(shù)據(jù)結(jié)構(gòu))。</p><p>  6.課程設(shè)計時間:1周(18課時)</p><p>  7.課程設(shè)計的考核方式及評分方法</p><p><b>  考核方式</b></p><p>  課

7、程設(shè)計結(jié)束時,在機(jī)房當(dāng)場驗收。</p><p>  教師提供測試數(shù)據(jù),檢查運(yùn)行結(jié)果是否正確。</p><p>  回答教師提出的問題。</p><p>  學(xué)生提交課程設(shè)計文檔(A4紙打?。?lt;/p><p><b>  評分方法</b></p><p>  上機(jī)檢查及答辯 : 書面報告 : 學(xué)習(xí)態(tài)

8、度 = 6 : 3 : 1,沒有通過上機(jī)檢查的其成績直接記錄不及格。</p><p><b>  目錄</b></p><p>  1 設(shè)計內(nèi)容與要求 ……………………………………………………………………………</p><p>  2.設(shè)計說明 ……………………………………………………………………………………</p><p&

9、gt;  2.1 問題描述與功能設(shè)計…………………………………………………………………</p><p>  2.2 算法與數(shù)據(jù)結(jié)構(gòu)………………………………………………………………………</p><p>  2.3 類定義(函數(shù)定義)……………………………………………………………………</p><p>  2.4 界面設(shè)計……………………………………………………………

10、…………………</p><p>  2.5 編碼……………………………………………………………………………………</p><p>  2.6 測試……………………………………………………………………………………</p><p>  3 總結(jié)…………………………………………………………………………………………</p><p>  參考文獻(xiàn) ……

11、………………………………………………………………………………</p><p>  附錄A:源代碼……………………………………………………………………………</p><p><b>  一、設(shè)計內(nèi)容與要求</b></p><p><b>  1、設(shè)計內(nèi)容 </b></p><p>  1)、設(shè)計窗口,

12、服務(wù)窗口;</p><p>  2)、編寫代碼,實現(xiàn)各種算法,完成排隊叫號問題;</p><p><b>  2、設(shè)計要求</b></p><p>  1.通過這次課程設(shè)計,要求在數(shù)據(jù)結(jié)構(gòu)的邏輯特性和物理表示、數(shù)據(jù)結(jié)構(gòu)的選擇應(yīng)用、算法的設(shè)計及其實現(xiàn)等方面加深課程基本內(nèi)容的理解。同時,在程序設(shè)計方法以及上機(jī)操作等基本技能和科學(xué)作風(fēng)方面受到比較系統(tǒng)

13、和嚴(yán)格的訓(xùn)練。</p><p>  2.學(xué)生必須仔細(xì)研讀《數(shù)據(jù)結(jié)構(gòu)》課程設(shè)計任務(wù)書要求,以學(xué)生自學(xué)為主、指導(dǎo)教師指導(dǎo)為輔,獨(dú)立完成課程設(shè)計的任務(wù),有問題及時主動與指導(dǎo)教師溝通。</p><p>  3.在課程設(shè)計中,學(xué)生要發(fā)揮自主學(xué)習(xí)的能力,充分利用時間,安排好課程設(shè)計的時間計劃,并在課程設(shè)計過程中不斷檢測自己的計劃完成情況,及時向指導(dǎo)教師匯報。</p><p> 

14、 4.編程語言:C#語言。</p><p><b>  二、設(shè)計說明</b></p><p>  2.1問題描述與功能設(shè)計</p><p><b>  1、問題描述</b></p><p>  目前,在以銀行營業(yè)大廳為代表的窗口業(yè)務(wù),大量客戶的擁擠排隊已成為了這些企事業(yè)單位改善服務(wù)品質(zhì)、提升企業(yè)形象

15、的主要障礙。排隊叫號系統(tǒng)的使用將成為改變這種情況的有力手段。排隊系統(tǒng)完全模擬了人群排隊的全過程,通過取票進(jìn)隊。排隊等待、叫號服務(wù)等功能,很好的解決了客戶在服務(wù)機(jī)構(gòu)辦理業(yè)務(wù)是所遇到的各種排隊、擁擠和混亂現(xiàn)象,代替了人們站隊的辛苦,把顧客等待的煩惱變成了一段難得的休閑時光,使客戶擁有了一個自由的空間和一份美好的心情。</p><p>  排隊叫號軟件的具體操作流程為:</p><p><

16、b>  2、功能設(shè)計</b></p><p>  1)使用數(shù)組以及C#接口和范型技術(shù)實現(xiàn)通用的隊列功能;</p><p>  2)編寫算法,利用隊列模擬銀行排隊系統(tǒng);</p><p>  3)利用多窗口分別模擬顧客取服務(wù)號、銀行窗口服務(wù)顧客。</p><p>  2.2算法與數(shù)據(jù)結(jié)構(gòu)</p><p>

17、  在銀行排隊叫號軟件中,首先要找到一種數(shù)據(jù)結(jié)構(gòu)來存放顧客所得到的服務(wù)號,這些服務(wù)號表示客戶的請求服務(wù)的先后順序,也表示客戶被服務(wù)的先后順序。先來的客戶被服務(wù):</p><p>  在這個程序中,主要運(yùn)用了隊列這種結(jié)構(gòu):</p><p>  隊列是一種特殊的線性表,是一種只允許在表的一端插入操作而在另一端進(jìn)行刪除操作的線性表。進(jìn)行插入操作的表尾稱為隊尾(Rear),進(jìn)行刪除操作的頭部稱為對

18、頭(Front)。當(dāng)隊列中沒有數(shù)據(jù)元素時稱為空隊列(Empty Queue)。隊列通常記為Q=(a1,a2,…,an),a1為對頭元素,an為隊尾元素。這n個元素是按照a1,a2,…an的次序依次入隊的,出隊的順序與入隊順序相同,a1第一個出隊,an最后一個出隊。隊列的結(jié)構(gòu)示意圖如下:</p><p>  出隊 a1 a2 … an 入隊</p><p><

19、;b>  2、隊列的特征:</b></p><p>  隊列的操作是按照“先進(jìn)先出”或“后進(jìn)后出” 的原則進(jìn)行的。</p><p><b>  隊列的基本操作:</b></p><p>  入隊列操作:EnQueue(T elem);</p><p>  出隊列操作:DeQueue();</p&g

20、t;<p>  取隊頭元素:GetFront();</p><p>  求隊列的長度;GetLength();</p><p>  判斷隊列是否為空:IsEmpty();</p><p>  清空操作:Clear();</p><p>  判斷是否為滿:IsFull();</p><p>  在這個程序中

21、用循環(huán)順序隊列;</p><p>  當(dāng)隊尾指示器rear到達(dá)數(shù)組上限時,如果還有數(shù)據(jù)元素入隊并且數(shù)組的第0個空間空閑時,隊尾指示器rear指向數(shù)組的0端。隊尾指示器rear的值不一定大于隊頭Front的值,并且隊滿和隊空的條件是相同的,為rear==front;</p><p>  2.3類定義(函數(shù)定義)</p><p>  在這個程序中,定義了一下及幾種類:&

22、lt;/p><p>  接口IQueue類:</p><p>  將隊列的基本操作定義在接口IQueue中,如左圖所示:</p><p>  Clear:清空操作,是隊列為空;</p><p>  DeQueue:出隊列操作,將隊頭元素從隊列中取出;</p><p>  EnQueue:入隊列操作,將值為elem的新數(shù)據(jù)元

23、素添加到隊尾;</p><p>  GetFront:取隊頭元素,返回隊頭元素的值;</p><p>  GetLength:求隊列的長度,返回隊列中數(shù)據(jù)元素的個數(shù);</p><p>  IsEmpty:判斷隊列是否為空,如果對列為控,返回true,否則返回false;</p><p>  IsFull:判斷是否為滿,如果對列為滿返回true

24、,否則返回false;</p><p>  接口IBankQueue類:</p><p>  將銀行隊列的所有操作定義在里面:</p><p>  GetCallnumber:獲取服務(wù)號;</p><p>  泛型類CSeqQueue<T>表示順序隊列:</p><p><b> ?。?)、字段&

25、lt;/b></p><p>  字段maxsize:表示循環(huán)隊列的最大容量;</p><p>  字段front:表示對頭,范圍是0~maxsize-1;</p><p>  字段rear:表示隊尾,范圍也是0~maxsize-1;</p><p>  字段data:表示數(shù)組用于存儲循環(huán)順序隊列中的數(shù)據(jù)

26、 元素;</p><p><b> ?。?)、屬性</b></p><p>  在類中并設(shè)置了隊頭屬性(front)、隊尾屬性(rear)、容量屬性(maxsize)、索引器屬性(this);</p><p><b> ?。?)、方法</b></p><p>  在這個類

27、中有接口IQueue中的一切方法;</p><p>  銀行叫號順序隊列類CSeqBankQueue類:</p><p>  該類實現(xiàn)IBankQueue接口中定義的全部行為,通過繼承CSeqQueue<T>將已實現(xiàn)的全部行為繼承過來;此外,設(shè)置了一個新來顧客的服務(wù)號屬性Callnumber;通過方法GetCallnumber()獲得服務(wù)號;</p><p&

28、gt;<b>  Form1類:</b></p><p>  Form1繼承了系統(tǒng)中的Form類;</p><p>  在Form1中使用了button、label、textBox等控件;</p><p>  使用了button_Click方法實現(xiàn)取號行為;</p><p><b>  Form2類:</

29、b></p><p>  Form2也繼承了系統(tǒng)中的Form類;</p><p>  在Form2中也使用了button、label、textBox等控件;</p><p>  使用了button_Click方法實現(xiàn)叫號行為;</p><p><b>  Form3類:</b></p><p&g

30、t;  Form3也繼承了系統(tǒng)中的Form類;</p><p>  在Form2中也使用了button、label、textBox等控件;</p><p>  使用了button_Click方法實現(xiàn)叫號行為;</p><p><b>  Form4類:</b></p><p>  Form4也繼承了系統(tǒng)中的Form類;&

31、lt;/p><p>  在Form2中也使用了button、label、textBox等控件;</p><p>  使用了button_Click方法實現(xiàn)叫號行為;</p><p>  服務(wù)窗口ServiceWindow類:</p><p>  服務(wù)隊列的屬性BankQ;</p><p>  作為線程的方法Service(

32、);</p><p>  主程序Main()方法;</p><p><b>  2.4界面設(shè)計</b></p><p>  在這個程序中,總共設(shè)計了四個界面,一個取號界面,三個服務(wù)窗口界面:如圖所示:</p><p><b>  1、取號窗口:</b></p><p>  在

33、取號窗口中,有了三個label控件,設(shè)置了“中國銀行”、“歡迎你”、“請點(diǎn)擊取號”字樣,使用button控件設(shè)置了取號按鈕,用了textBox控件用于顯示所取到的排隊號碼。</p><p><b>  2、服務(wù)窗口</b></p><p><b>  一號服務(wù)窗口</b></p><p><b>  二號服務(wù)窗口

34、</b></p><p><b>  三號服務(wù)窗口</b></p><p>  在服務(wù)窗口中用了兩個label控件設(shè)置了“中國銀行”、“X號服務(wù)窗口”字樣,用了button控件設(shè)置了“下一個”按鈕,用textBox顯示“請X號到X號服務(wù)窗口”;</p><p><b>  2.5編碼</b></p>

35、<p>  namespace 銀行排隊叫號系統(tǒng)</p><p><b>  {</b></p><p>  public partial class Form1 : Form</p><p><b>  {</b></p><p>  IBankQueue bankQueue=new

36、 CSeqBankQueue(100);//新建一個隊列;</p><p>  CSeqQueue<int> q1 = new CSeqQueue<int>(100);</p><p>  int Callnumber;//號碼;</p><p>  public Form1()</p><p><b>  

37、{</b></p><p>  InitializeComponent();</p><p>  Form2 f1 = new Form2(this.q1);//實例話Form;</p><p>  Form3 f2 = new Form3(this.q1);</p><p>  Form4 f3 = new Form4(this

38、.q1);</p><p>  f1.Show();//使幾個窗口同時顯示;</p><p>  f2.Show();</p><p>  f3.Show();</p><p><b>  }</b></p><p>  private void button1_Click(object send

39、er, EventArgs e)</p><p><b>  {</b></p><p>  if (!bankQueue.IsFull())</p><p><b>  {</b></p><p>  Callnumber = bankQueue.GetCallnumber();</p>

40、;<p>  textBox1.Text = "你的號碼是:" + Callnumber + "號," + "你前面還有" + bankQueue.GetLength() + "位,請耐心等待!";</p><p>  bankQueue .EnQueue(Callnumber );//所取得的號碼進(jìn)隊;</p&g

41、t;<p>  q1.EnQueue(Callnumber);</p><p><b>  }</b></p><p><b>  else</b></p><p>  Console .WriteLine ("現(xiàn)在業(yè)務(wù)繁忙,請稍后再來!");</p><p>  

42、Console .WriteLine ();</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  namespace 銀行排隊叫號系統(tǒng)</p><p><b&g

43、t;  {</b></p><p>  public partial class Form3 : Form</p><p><b>  {</b></p><p>  CSeqQueue<int> _q1 = new CSeqQueue<int>(100);</p><p>  pub

44、lic Form3(CSeqQueue<int> q1)//構(gòu)造函數(shù),應(yīng)用Form1所建立的隊列;</p><p><b>  {</b></p><p>  InitializeComponent();</p><p>  this._q1 = q1;</p><p><b>  }</b&

45、gt;</p><p>  private void button1_Click(object sender, EventArgs e)</p><p><b>  {</b></p><p>  if (!_q1.IsEmpty())</p><p><b>  {</b></p>

46、<p>  textBox1.Text = ("請" + _q1.DeQueue() + "號到二號窗口!");</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p&

47、gt;<p>  MessageBox.Show("現(xiàn)在沒有客人!");</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  2.6測試</b></p><p>  代碼編寫完成后,執(zhí)行調(diào)

48、試-開始執(zhí)行,看是否能成功生成,若能的話,點(diǎn)擊取號看服務(wù)窗口是否按要求運(yùn)作;若不能的話,根據(jù)所提供的錯誤提示,一步步的調(diào)試,直到成功生成為止。下圖為取到八號,且六號正在被服務(wù)時各顯示器上的顯示:</p><p><b>  三、總結(jié)</b></p><p>  在整個過程中,應(yīng)該注意以下幾點(diǎn):</p><p>  1.要求利用面向?qū)ο蟮姆椒ㄒ约?/p>

49、隊列數(shù)據(jù)結(jié)構(gòu)來完成系統(tǒng)的設(shè)計;</p><p>  2. 在設(shè)計的過程中,建立清晰的類層次;</p><p>  3. 在系統(tǒng)設(shè)計中要分析和定義各個類,每個類中要有各自的屬性和方法;</p><p>  4. 要運(yùn)用面向?qū)ο蟮臋C(jī)制來實現(xiàn)系統(tǒng)功能。</p><p>  通過對完成這次課程設(shè)計,加深了對隊列這種數(shù)據(jù)結(jié)構(gòu)的理解,掌握了隊列數(shù)據(jù)結(jié)構(gòu)極

50、其算法;此外也能夠更加熟練的使用button。Label。textBox等控件。</p><p><b>  參考文獻(xiàn)</b></p><p>  雷軍環(huán)、鄧文達(dá)、劉震編著 《數(shù)據(jù)結(jié)構(gòu)(C#語言版)》</p><p>  錢哨、李揮劍、李繼哲編著 《C#WinForm實踐開發(fā)教程》</p><p>  鄭宇軍編著

51、 《C#面向?qū)ο蟪绦蛟O(shè)計》</p><p><b>  附錄:源代碼</b></p><p>  IQueue接口代碼:</p><p>  using System;</p><p>  namespace QueueDs</p><p><b>  {</b></p

52、><p>  interface IQueue<T></p><p><b>  {</b></p><p>  void EnQueue(T elem); //入隊列操作</p><p>  T DeQueue(); //出隊列操作</p><p>  T GetFront(); //取

53、對頭元素</p><p>  int GetLength(); //求隊列的長度</p><p>  bool IsEmpty(); //判斷隊列是否為空</p><p>  void Clear(); //清空隊列</p><p>  bool IsFull();//判斷是否為滿,在順序隊列中實現(xiàn)該算法,在鏈?zhǔn)疥犃兄写a實現(xiàn)為空</p

54、><p><b>  }</b></p><p><b>  }</b></p><p>  IBankQueue接口代碼:</p><p>  using System;</p><p>  namespace QueueDs</p><p><b

55、>  {</b></p><p>  interface IBankQueue:IQueue<int></p><p><b>  {</b></p><p>  int GetCallnumber();//獲得服務(wù)號碼</p><p><b>  }</b></

56、p><p><b>  }</b></p><p><b>  順序隊列代碼:</b></p><p>  using System;</p><p>  namespace QueueDs</p><p><b>  {</b></p>&l

57、t;p>  public class CSeqQueue<T>:IQueue<T></p><p><b>  {</b></p><p>  private int maxsize; //循環(huán)順序隊列的容量</p><p>  private T[] data; //數(shù)組,用于存儲循環(huán)順序隊列中的數(shù)據(jù)元素<

58、/p><p>  private int front; //指示最近一個己經(jīng)離開隊列的元素所占的位置</p><p>  private int rear; //指示最近一個進(jìn)行入隊列的元素的位置</p><p><b>  //索引器</b></p><p>  public T this[int index]</p

59、><p><b>  {</b></p><p><b>  get</b></p><p><b>  {</b></p><p>  return data[index];</p><p><b>  }</b></p>

60、<p><b>  set</b></p><p><b>  {</b></p><p>  data[index] = value;</p><p><b>  }</b></p><p><b>  }</b></p>&

61、lt;p><b>  //容量屬性</b></p><p>  public int Maxsize</p><p><b>  {</b></p><p><b>  get</b></p><p><b>  {</b></p>&

62、lt;p>  return maxsize;</p><p><b>  }</b></p><p><b>  set</b></p><p><b>  {</b></p><p>  maxsize = value;</p><p><

63、b>  }</b></p><p><b>  }</b></p><p><b>  //隊頭指示器屬性</b></p><p>  public int Front</p><p><b>  {</b></p><p><b

64、>  get</b></p><p><b>  {</b></p><p>  return front;</p><p><b>  }</b></p><p><b>  set</b></p><p><b>  {&

65、lt;/b></p><p>  front = value;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  //隊尾指示器屬性</b></p><p>  public int Rea

66、r</p><p><b>  {</b></p><p><b>  get</b></p><p><b>  {</b></p><p>  return rear;</p><p><b>  }</b></p>

67、<p><b>  set</b></p><p><b>  {</b></p><p>  rear = value;</p><p><b>  }</b></p><p><b>  }</b></p><p>

68、;<b>  //初始化隊列</b></p><p>  public CSeqQueue() { }</p><p>  public CSeqQueue(int size)</p><p><b>  {</b></p><p>  data = new T[size];</p>

69、<p>  maxsize = size;</p><p>  front = rear = -1;</p><p><b>  }</b></p><p><b>  //入隊操作</b></p><p>  public void EnQueue(T elem)</p>

70、<p><b>  {</b></p><p>  if (IsFull())</p><p><b>  {</b></p><p>  Console.WriteLine("Queue is full");</p><p><b>  return;<

71、;/b></p><p><b>  }</b></p><p>  rear=(rear + 1) % maxsize; ;</p><p>  data[rear] = elem;</p><p><b>  }</b></p><p><b>  //出

72、隊操作</b></p><p>  public T DeQueue()</p><p><b>  {</b></p><p>  if (IsEmpty())</p><p><b>  {</b></p><p>  Console.WriteLine(&q

73、uot;Queue is empty");</p><p>  return default(T);</p><p><b>  }</b></p><p>  front = (front + 1) % maxsize;</p><p>  return data[front];</p><

74、;p><b>  }</b></p><p>  //獲取隊頭數(shù)據(jù)元素</p><p>  public T GetFront()</p><p><b>  {</b></p><p>  if (IsEmpty())</p><p><b>  {<

75、/b></p><p>  Console.WriteLine("Queue is empty!");</p><p>  return default(T);</p><p><b>  }</b></p><p>  return data[(front+1)%maxsize];</p

76、><p><b>  }</b></p><p>  //求循環(huán)順序隊列的長度</p><p>  public int GetLength()</p><p><b>  {</b></p><p>  return (rear - front + maxsize) % max

77、size;</p><p><b>  }</b></p><p>  //判斷循環(huán)順序隊列是否為滿</p><p>  public bool IsFull()</p><p><b>  {</b></p><p>  if ((front == -1 &&

78、; rear == maxsize - 1) || (rear + 1) % maxsize == front)</p><p><b>  {</b></p><p>  return true;</p><p><b>  }</b></p><p><b>  else</b&

79、gt;</p><p><b>  {</b></p><p>  return false;</p><p><b>  }</b></p><p><b>  }</b></p><p>  //清空循環(huán)順序隊列</p><p&g

80、t;  public void Clear()</p><p><b>  {</b></p><p>  front = rear = -1;</p><p><b>  }</b></p><p>  //判斷循環(huán)順序隊列是否為空</p><p>  public boo

81、l IsEmpty()</p><p><b>  {</b></p><p>  if (front == rear)</p><p><b>  {</b></p><p>  return true;</p><p><b>  }</b><

82、/p><p><b>  else</b></p><p><b>  {</b></p><p>  return false;</p><p><b>  }</b></p><p><b>  }</b></p>&

83、lt;p><b>  }</b></p><p><b>  }</b></p><p><b>  銀行順序隊列代碼:</b></p><p>  using System;</p><p>  using System.Threading;</p>&l

84、t;p>  namespace QueueDs</p><p><b>  {</b></p><p>  //銀行叫號順序隊列類</p><p>  class CSeqBankQueue:CSeqQueue<int>,IBankQueue </p><p><b>  {</b>

85、;</p><p>  private int callnumber;//記錄系統(tǒng)自動產(chǎn)生的新來顧客的服務(wù)號</p><p><b>  //叫號屬性</b></p><p>  public int Callnumber</p><p><b>  {</b></p><p&g

86、t;<b>  get</b></p><p><b>  {</b></p><p>  return callnumber;</p><p><b>  }</b></p><p><b>  set</b></p><p>&

87、lt;b>  {</b></p><p>  callnumber = value;</p><p><b>  }</b></p><p><b>  }</b></p><p>  public CSeqBankQueue (){}</p><p>  

88、public CSeqBankQueue(int size):base(size){}</p><p><b>  //獲得服務(wù)號碼</b></p><p>  public int GetCallnumber()</p><p><b>  {</b></p><p>  if ((IsEmpty

89、()) && callnumber == 0)</p><p>  callnumber = 1;</p><p><b>  else</b></p><p>  callnumber++; </p><p>  return callnumber;</p><p><b&

90、gt;  }</b></p><p><b>  }</b></p><p><b>  //服務(wù)窗口類</b></p><p>  class ServiceWindow</p><p><b>  {</b></p><p>  IBan

91、kQueue bankQ;</p><p>  public IBankQueue BankQ</p><p><b>  {</b></p><p><b>  get</b></p><p><b>  {</b></p><p>  return

92、 bankQ;</p><p><b>  }</b></p><p><b>  set</b></p><p><b>  {</b></p><p>  bankQ = value;</p><p><b>  }</b>&l

93、t;/p><p><b>  }</b></p><p>  public void Service()</p><p><b>  {</b></p><p>  while (true)</p><p><b>  {</b></p>&l

94、t;p>  Thread.Sleep(10000);</p><p>  if (!bankQ.IsEmpty())</p><p><b>  {</b></p><p>  Console.WriteLine();</p><p>  lock (bankQ)</p><p><b

95、>  {</b></p><p>  Console.WriteLine("請{0}號到{1}號窗口!", bankQ.DeQueue(), Thread.CurrentThread.Name);</p><p><b>  }</b></p><p><b>  }</b></

96、p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  Form1代碼</b><

97、/p><p>  using System;</p><p>  using System.Collections.Generic;</p><p>  using System.ComponentModel;</p><p>  using System.Data;</p><p>  using System.Draw

98、ing;</p><p>  using System.Linq;</p><p>  using System.Text;</p><p>  using System.Windows.Forms;</p><p>  using QueueDs;</p><p>  namespace 銀行排隊叫號系統(tǒng)</p

99、><p><b>  {</b></p><p>  public partial class Form1 : Form</p><p><b>  {</b></p><p>  IBankQueue bankQueue=new CSeqBankQueue(100);</p><p

100、>  CSeqQueue<int> q1 = new CSeqQueue<int>(100);</p><p>  int Callnumber;</p><p>  public Form1()</p><p><b>  {</b></p><p>  InitializeCompone

101、nt();</p><p>  Form2 f1 = new Form2(this.q1);</p><p>  Form3 f2 = new Form3(this.q1);</p><p>  Form4 f3 = new Form4(this.q1);</p><p>  f1.Show();</p><p>  

102、f2.Show();</p><p>  f3.Show();</p><p><b>  }</b></p><p>  private void button1_Click(object sender, EventArgs e)</p><p><b>  {</b></p>&l

103、t;p>  if (!bankQueue.IsFull())</p><p><b>  {</b></p><p>  Callnumber = bankQueue.GetCallnumber();</p><p>  textBox1.Text = "你的號碼是:" + Callnumber + "號,&

104、quot; + "你前面還有" + bankQueue.GetLength() + "位,請耐心等待!";</p><p>  bankQueue .EnQueue(Callnumber );</p><p>  q1.EnQueue(Callnumber);</p><p><b>  }</b><

105、;/p><p><b>  else</b></p><p>  Console .WriteLine ("現(xiàn)在業(yè)務(wù)繁忙,請稍后再來!");</p><p>  Console .WriteLine ();</p><p><b>  }</b></p><p&g

106、t;  private void Form1_Load(object sender, EventArgs e)</p><p><b>  {</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }<

107、;/b></p><p><b>  Form2的代碼:</b></p><p>  using System;</p><p>  using System.Collections.Generic;</p><p>  using System.ComponentModel;</p><p&g

108、t;  using System.Data;</p><p>  using System.Drawing;</p><p>  using System.Linq;</p><p>  using System.Text;</p><p>  using System.Windows.Forms;</p><p> 

109、 using QueueDs;</p><p>  namespace 銀行排隊叫號系統(tǒng)</p><p><b>  {</b></p><p>  public partial class Form2 : Form</p><p><b>  {</b></p><p> 

110、 CSeqQueue<int> _q1 = new CSeqQueue<int>(100);</p><p>  public Form2(CSeqQueue<int> q1)</p><p><b>  {</b></p><p>  InitializeComponent();</p>&l

111、t;p>  this._q1=q1;</p><p><b>  }</b></p><p>  private void button1_Click(object sender, EventArgs e)</p><p><b>  {</b></p><p>  if (!_q1.IsEm

112、pty ())</p><p><b>  {</b></p><p>  textBox1.Text = "請" +_q1.DeQueue()+ "號到一號窗口";</p><p><b>  }</b></p><p><b>  else<

113、;/b></p><p>  MessageBox.Show("現(xiàn)在沒有客人!");</p><p><b>  }</b></p><p>  private void Form2_Load(object sender, EventArgs e)</p><p><b>  {<

114、;/b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  Form3代碼:</b></p><p>  using Syste

115、m;</p><p>  using System.Collections.Generic;</p><p>  using System.ComponentModel;</p><p>  using System.Data;</p><p>  using System.Drawing;</p><p>  usi

116、ng System.Linq;</p><p>  using System.Text;</p><p>  using System.Windows.Forms;</p><p>  using QueueDs;</p><p>  namespace 銀行排隊叫號系統(tǒng)</p><p><b>  {<

117、;/b></p><p>  public partial class Form3 : Form</p><p><b>  {</b></p><p>  CSeqQueue<int> _q1 = new CSeqQueue<int>(100);</p><p>  public Form

118、3(CSeqQueue<int> q1)</p><p><b>  {</b></p><p>  InitializeComponent();</p><p>  this._q1 = q1;</p><p><b>  }</b></p><p>  pri

119、vate void button1_Click(object sender, EventArgs e)</p><p><b>  {</b></p><p>  if (!_q1.IsEmpty())</p><p><b>  {</b></p><p>  textBox1.Text = (&

120、quot;請" + _q1.DeQueue() + "號到二號窗口!");</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  MessageBox.Sh

121、ow("現(xiàn)在沒有客人!");</p><p><b>  }</b></p><p><b>  }</b></p><p>  private void Form3_Load(object sender, EventArgs e)</p><p><b>  {<

122、;/b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  Form4代碼:</b></p><p>  using Syste

123、m;</p><p>  using System.Collections.Generic;</p><p>  using System.ComponentModel;</p><p>  using System.Data;</p><p>  using System.Drawing;</p><p>  usi

124、ng System.Linq;</p><p>  using System.Text;</p><p>  using System.Windows.Forms;</p><p>  using QueueDs;</p><p>  namespace 銀行排隊叫號系統(tǒng)</p><p><b>  {<

125、;/b></p><p>  public partial class Form4 : Form</p><p><b>  {</b></p><p>  CSeqQueue<int> _q1=new CSeqQueue<int>(100);</p><p>  public Form4(

126、CSeqQueue<int> q1 )</p><p><b>  {</b></p><p>  InitializeComponent();</p><p>  this._q1 =q1;</p><p><b>  }</b></p><p>  priva

127、te void button1_Click(object sender, EventArgs e)</p><p><b>  {</b></p><p>  if(!_q1 .IsEmpty ())</p><p><b>  {</b></p><p>  textBox1 .Text =(&q

128、uot;請"+_q1 .DeQueue ()+"號到三號窗口!");</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  MessageBox .Show

129、 ("現(xiàn)在沒有客人!");</p><p><b>  }</b></p><p><b>  }</b></p><p>  private void Form4_Load(object sender, EventArgs e)</p><p><b>  {<

130、/b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  主程序代碼:</b></p><p>  using System;&

131、lt;/p><p>  using System.Collections.Generic;</p><p>  using System.Linq;</p><p>  using System.Windows.Forms;</p><p>  namespace 銀行排隊叫號系統(tǒng)</p><p><b>  {

132、</b></p><p>  static class Program</p><p><b>  {</b></p><p>  /// <summary></p><p>  /// 應(yīng)用程序的主入口點(diǎn)。</p><p>  /// </summary>&l

133、t;/p><p>  [STAThread]</p><p>  static void Main()</p><p><b>  {</b></p><p>  Application.EnableVisualStyles();</p><p>  Application.SetCompatible

134、TextRenderingDefault(false);</p><p>  Application.Run(new Form1());</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p>

溫馨提示

  • 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論