版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 課程設(shè)計(jì)任務(wù)書</b></p><p> 課程名稱:課程設(shè)計(jì)1(數(shù)據(jù)結(jié)構(gòu))</p><p> 設(shè)計(jì)題目:銀行排隊(duì)叫號(hào)系統(tǒng)</p><p><b> 問(wèn)題描述: </b></p><p> 目前,在以銀行營(yíng)業(yè)大廳為代表的窗口行業(yè),大量客戶的擁擠排隊(duì)已成為了這些企事
2、業(yè)單位改善服務(wù)品質(zhì)、提升營(yíng)業(yè)形象的主要障礙。排隊(duì)(叫號(hào))系統(tǒng)的使用將成為改變這種狀況的有力手段。排隊(duì)系統(tǒng)完全模擬了人群排隊(duì)全過(guò)程,通過(guò)取票進(jìn)隊(duì)、排隊(duì)等待、叫號(hào)服務(wù)等功能,代替了人們站隊(duì)的辛苦,把顧客排隊(duì)等待的煩惱變成一段難得的休閑時(shí)光,使客戶擁有了一個(gè)自由的空間和一份美好的心情。 </p><p> 排隊(duì)叫號(hào)軟件的具體操作流程為:</p><p> 顧客取服務(wù)序號(hào)。當(dāng)顧客抵達(dá)服務(wù)大廳時(shí)
3、,前往放置在入口處旁的取號(hào)機(jī),并按一下其上的相應(yīng)服務(wù)按鈕,取號(hào)機(jī)會(huì)自動(dòng)打印出一張服務(wù)單。單上顯示服務(wù)號(hào)及該服務(wù)號(hào)前面正在等待服務(wù)的人數(shù)。</p><p> 銀行職員呼叫顧客 ,顧客的服務(wù)號(hào)就會(huì)按順序的顯示在顯示屏上。當(dāng)一位顧客辦事完畢后,柜臺(tái)銀行職員只需按呼叫器相應(yīng)鍵,即可自動(dòng)呼叫下一位顧客。</p><p><b> 2. 功能要求:</b></p>
4、<p> 1)使用數(shù)組或鏈表以及C#接口和范型技術(shù)實(shí)現(xiàn)通用的隊(duì)列功能;</p><p> 2)編寫算法,利用隊(duì)列模擬銀行排隊(duì)系統(tǒng);</p><p> 3)利用多窗口分別模擬顧客取服務(wù)號(hào)、銀行窗口服務(wù)顧客。</p><p><b> 3.界面要求:</b></p><p> 用戶界面設(shè)計(jì)不做統(tǒng)一規(guī)定
5、,但應(yīng)做到界面友好,易于操作。 </p><p><b> 4. 技術(shù)要求:</b></p><p> 要求利用面向?qū)ο蟮姆椒ㄒ约瓣?duì)列數(shù)據(jù)結(jié)構(gòu)來(lái)完成系統(tǒng)的設(shè)計(jì);在設(shè)計(jì)的過(guò)程中,建立清晰的類層次; 在系統(tǒng)設(shè)計(jì)中要分析和定義各個(gè)類,每個(gè)類中要有各自的屬性和方法;要求運(yùn)用面向?qū)ο蟮臋C(jī)制來(lái)實(shí)現(xiàn)系統(tǒng)功能。 </p><p><b> 5.
6、創(chuàng)新要求</b></p><p> 在基本要求達(dá)到后,可以進(jìn)行創(chuàng)新設(shè)計(jì)(包括界面、功能、數(shù)據(jù)結(jié)構(gòu))。</p><p> 6.課程設(shè)計(jì)時(shí)間:1周(18課時(shí))</p><p> 7.課程設(shè)計(jì)的考核方式及評(píng)分方法</p><p><b> 考核方式</b></p><p> 課
7、程設(shè)計(jì)結(jié)束時(shí),在機(jī)房當(dāng)場(chǎng)驗(yàn)收。</p><p> 教師提供測(cè)試數(shù)據(jù),檢查運(yùn)行結(jié)果是否正確。</p><p> 回答教師提出的問(wèn)題。</p><p> 學(xué)生提交課程設(shè)計(jì)文檔(A4紙打?。?lt;/p><p><b> 評(píng)分方法</b></p><p> 上機(jī)檢查及答辯 : 書面報(bào)告 : 學(xué)習(xí)態(tài)
8、度 = 6 : 3 : 1,沒(méi)有通過(guò)上機(jī)檢查的其成績(jī)直接記錄不及格。</p><p><b> 目錄</b></p><p> 1 設(shè)計(jì)內(nèi)容與要求 ……………………………………………………………………………</p><p> 2.設(shè)計(jì)說(shuō)明 ……………………………………………………………………………………</p><p&
9、gt; 2.1 問(wèn)題描述與功能設(shè)計(jì)…………………………………………………………………</p><p> 2.2 算法與數(shù)據(jù)結(jié)構(gòu)………………………………………………………………………</p><p> 2.3 類定義(函數(shù)定義)……………………………………………………………………</p><p> 2.4 界面設(shè)計(jì)……………………………………………………………
10、…………………</p><p> 2.5 編碼……………………………………………………………………………………</p><p> 2.6 測(cè)試……………………………………………………………………………………</p><p> 3 總結(jié)…………………………………………………………………………………………</p><p> 參考文獻(xiàn) ……
11、………………………………………………………………………………</p><p> 附錄A:源代碼……………………………………………………………………………</p><p><b> 一、設(shè)計(jì)內(nèi)容與要求</b></p><p><b> 1、設(shè)計(jì)內(nèi)容 </b></p><p> 1)、設(shè)計(jì)窗口,
12、服務(wù)窗口;</p><p> 2)、編寫代碼,實(shí)現(xiàn)各種算法,完成排隊(duì)叫號(hào)問(wèn)題;</p><p><b> 2、設(shè)計(jì)要求</b></p><p> 1.通過(guò)這次課程設(shè)計(jì),要求在數(shù)據(jù)結(jié)構(gòu)的邏輯特性和物理表示、數(shù)據(jù)結(jié)構(gòu)的選擇應(yīng)用、算法的設(shè)計(jì)及其實(shí)現(xiàn)等方面加深課程基本內(nèi)容的理解。同時(shí),在程序設(shè)計(jì)方法以及上機(jī)操作等基本技能和科學(xué)作風(fēng)方面受到比較系統(tǒng)
13、和嚴(yán)格的訓(xùn)練。</p><p> 2.學(xué)生必須仔細(xì)研讀《數(shù)據(jù)結(jié)構(gòu)》課程設(shè)計(jì)任務(wù)書要求,以學(xué)生自學(xué)為主、指導(dǎo)教師指導(dǎo)為輔,獨(dú)立完成課程設(shè)計(jì)的任務(wù),有問(wèn)題及時(shí)主動(dòng)與指導(dǎo)教師溝通。</p><p> 3.在課程設(shè)計(jì)中,學(xué)生要發(fā)揮自主學(xué)習(xí)的能力,充分利用時(shí)間,安排好課程設(shè)計(jì)的時(shí)間計(jì)劃,并在課程設(shè)計(jì)過(guò)程中不斷檢測(cè)自己的計(jì)劃完成情況,及時(shí)向指導(dǎo)教師匯報(bào)。</p><p>
14、 4.編程語(yǔ)言:C#語(yǔ)言。</p><p><b> 二、設(shè)計(jì)說(shuō)明</b></p><p> 2.1問(wèn)題描述與功能設(shè)計(jì)</p><p><b> 1、問(wèn)題描述</b></p><p> 目前,在以銀行營(yíng)業(yè)大廳為代表的窗口業(yè)務(wù),大量客戶的擁擠排隊(duì)已成為了這些企事業(yè)單位改善服務(wù)品質(zhì)、提升企業(yè)形象
15、的主要障礙。排隊(duì)叫號(hào)系統(tǒng)的使用將成為改變這種情況的有力手段。排隊(duì)系統(tǒng)完全模擬了人群排隊(duì)的全過(guò)程,通過(guò)取票進(jìn)隊(duì)。排隊(duì)等待、叫號(hào)服務(wù)等功能,很好的解決了客戶在服務(wù)機(jī)構(gòu)辦理業(yè)務(wù)是所遇到的各種排隊(duì)、擁擠和混亂現(xiàn)象,代替了人們站隊(duì)的辛苦,把顧客等待的煩惱變成了一段難得的休閑時(shí)光,使客戶擁有了一個(gè)自由的空間和一份美好的心情。</p><p> 排隊(duì)叫號(hào)軟件的具體操作流程為:</p><p><
16、b> 2、功能設(shè)計(jì)</b></p><p> 1)使用數(shù)組以及C#接口和范型技術(shù)實(shí)現(xiàn)通用的隊(duì)列功能;</p><p> 2)編寫算法,利用隊(duì)列模擬銀行排隊(duì)系統(tǒng);</p><p> 3)利用多窗口分別模擬顧客取服務(wù)號(hào)、銀行窗口服務(wù)顧客。</p><p> 2.2算法與數(shù)據(jù)結(jié)構(gòu)</p><p>
17、 在銀行排隊(duì)叫號(hào)軟件中,首先要找到一種數(shù)據(jù)結(jié)構(gòu)來(lái)存放顧客所得到的服務(wù)號(hào),這些服務(wù)號(hào)表示客戶的請(qǐng)求服務(wù)的先后順序,也表示客戶被服務(wù)的先后順序。先來(lái)的客戶被服務(wù):</p><p> 在這個(gè)程序中,主要運(yùn)用了隊(duì)列這種結(jié)構(gòu):</p><p> 隊(duì)列是一種特殊的線性表,是一種只允許在表的一端插入操作而在另一端進(jìn)行刪除操作的線性表。進(jìn)行插入操作的表尾稱為隊(duì)尾(Rear),進(jìn)行刪除操作的頭部稱為對(duì)
18、頭(Front)。當(dāng)隊(duì)列中沒(méi)有數(shù)據(jù)元素時(shí)稱為空隊(duì)列(Empty Queue)。隊(duì)列通常記為Q=(a1,a2,…,an),a1為對(duì)頭元素,an為隊(duì)尾元素。這n個(gè)元素是按照a1,a2,…an的次序依次入隊(duì)的,出隊(duì)的順序與入隊(duì)順序相同,a1第一個(gè)出隊(duì),an最后一個(gè)出隊(duì)。隊(duì)列的結(jié)構(gòu)示意圖如下:</p><p> 出隊(duì) a1 a2 … an 入隊(duì)</p><p><
19、;b> 2、隊(duì)列的特征:</b></p><p> 隊(duì)列的操作是按照“先進(jìn)先出”或“后進(jìn)后出” 的原則進(jìn)行的。</p><p><b> 隊(duì)列的基本操作:</b></p><p> 入隊(duì)列操作:EnQueue(T elem);</p><p> 出隊(duì)列操作:DeQueue();</p&g
20、t;<p> 取隊(duì)頭元素:GetFront();</p><p> 求隊(duì)列的長(zhǎng)度;GetLength();</p><p> 判斷隊(duì)列是否為空:IsEmpty();</p><p> 清空操作:Clear();</p><p> 判斷是否為滿:IsFull();</p><p> 在這個(gè)程序中
21、用循環(huán)順序隊(duì)列;</p><p> 當(dāng)隊(duì)尾指示器rear到達(dá)數(shù)組上限時(shí),如果還有數(shù)據(jù)元素入隊(duì)并且數(shù)組的第0個(gè)空間空閑時(shí),隊(duì)尾指示器rear指向數(shù)組的0端。隊(duì)尾指示器rear的值不一定大于隊(duì)頭Front的值,并且隊(duì)滿和隊(duì)空的條件是相同的,為rear==front;</p><p> 2.3類定義(函數(shù)定義)</p><p> 在這個(gè)程序中,定義了一下及幾種類:&
22、lt;/p><p> 接口IQueue類:</p><p> 將隊(duì)列的基本操作定義在接口IQueue中,如左圖所示:</p><p> Clear:清空操作,是隊(duì)列為空;</p><p> DeQueue:出隊(duì)列操作,將隊(duì)頭元素從隊(duì)列中取出;</p><p> EnQueue:入隊(duì)列操作,將值為elem的新數(shù)據(jù)元
23、素添加到隊(duì)尾;</p><p> GetFront:取隊(duì)頭元素,返回隊(duì)頭元素的值;</p><p> GetLength:求隊(duì)列的長(zhǎng)度,返回隊(duì)列中數(shù)據(jù)元素的個(gè)數(shù);</p><p> IsEmpty:判斷隊(duì)列是否為空,如果對(duì)列為控,返回true,否則返回false;</p><p> IsFull:判斷是否為滿,如果對(duì)列為滿返回true
24、,否則返回false;</p><p> 接口IBankQueue類:</p><p> 將銀行隊(duì)列的所有操作定義在里面:</p><p> GetCallnumber:獲取服務(wù)號(hào);</p><p> 泛型類CSeqQueue<T>表示順序隊(duì)列:</p><p><b> ?。?)、字段&
25、lt;/b></p><p> 字段maxsize:表示循環(huán)隊(duì)列的最大容量;</p><p> 字段front:表示對(duì)頭,范圍是0~maxsize-1;</p><p> 字段rear:表示隊(duì)尾,范圍也是0~maxsize-1;</p><p> 字段data:表示數(shù)組用于存儲(chǔ)循環(huán)順序隊(duì)列中的數(shù)據(jù)
26、 元素;</p><p><b> (2)、屬性</b></p><p> 在類中并設(shè)置了隊(duì)頭屬性(front)、隊(duì)尾屬性(rear)、容量屬性(maxsize)、索引器屬性(this);</p><p><b> ?。?)、方法</b></p><p> 在這個(gè)類
27、中有接口IQueue中的一切方法;</p><p> 銀行叫號(hào)順序隊(duì)列類CSeqBankQueue類:</p><p> 該類實(shí)現(xiàn)IBankQueue接口中定義的全部行為,通過(guò)繼承CSeqQueue<T>將已實(shí)現(xiàn)的全部行為繼承過(guò)來(lái);此外,設(shè)置了一個(gè)新來(lái)顧客的服務(wù)號(hào)屬性Callnumber;通過(guò)方法GetCallnumber()獲得服務(wù)號(hào);</p><p&
28、gt;<b> Form1類:</b></p><p> Form1繼承了系統(tǒng)中的Form類;</p><p> 在Form1中使用了button、label、textBox等控件;</p><p> 使用了button_Click方法實(shí)現(xiàn)取號(hào)行為;</p><p><b> Form2類:</
29、b></p><p> Form2也繼承了系統(tǒng)中的Form類;</p><p> 在Form2中也使用了button、label、textBox等控件;</p><p> 使用了button_Click方法實(shí)現(xiàn)叫號(hào)行為;</p><p><b> Form3類:</b></p><p&g
30、t; Form3也繼承了系統(tǒng)中的Form類;</p><p> 在Form2中也使用了button、label、textBox等控件;</p><p> 使用了button_Click方法實(shí)現(xiàn)叫號(hào)行為;</p><p><b> Form4類:</b></p><p> Form4也繼承了系統(tǒng)中的Form類;&
31、lt;/p><p> 在Form2中也使用了button、label、textBox等控件;</p><p> 使用了button_Click方法實(shí)現(xiàn)叫號(hào)行為;</p><p> 服務(wù)窗口ServiceWindow類:</p><p> 服務(wù)隊(duì)列的屬性BankQ;</p><p> 作為線程的方法Service(
32、);</p><p> 主程序Main()方法;</p><p><b> 2.4界面設(shè)計(jì)</b></p><p> 在這個(gè)程序中,總共設(shè)計(jì)了四個(gè)界面,一個(gè)取號(hào)界面,三個(gè)服務(wù)窗口界面:如圖所示:</p><p><b> 1、取號(hào)窗口:</b></p><p> 在
33、取號(hào)窗口中,有了三個(gè)label控件,設(shè)置了“中國(guó)銀行”、“歡迎你”、“請(qǐng)點(diǎn)擊取號(hào)”字樣,使用button控件設(shè)置了取號(hào)按鈕,用了textBox控件用于顯示所取到的排隊(duì)號(hào)碼。</p><p><b> 2、服務(wù)窗口</b></p><p><b> 一號(hào)服務(wù)窗口</b></p><p><b> 二號(hào)服務(wù)窗口
34、</b></p><p><b> 三號(hào)服務(wù)窗口</b></p><p> 在服務(wù)窗口中用了兩個(gè)label控件設(shè)置了“中國(guó)銀行”、“X號(hào)服務(wù)窗口”字樣,用了button控件設(shè)置了“下一個(gè)”按鈕,用textBox顯示“請(qǐng)X號(hào)到X號(hào)服務(wù)窗口”;</p><p><b> 2.5編碼</b></p>
35、<p> namespace 銀行排隊(duì)叫號(hào)系統(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);//新建一個(gè)隊(duì)列;</p><p> CSeqQueue<int> q1 = new CSeqQueue<int>(100);</p><p> int Callnumber;//號(hào)碼;</p><p> public Form1()</p><p><b>
37、{</b></p><p> InitializeComponent();</p><p> Form2 f1 = new Form2(this.q1);//實(shí)例話Form;</p><p> Form3 f2 = new Form3(this.q1);</p><p> Form4 f3 = new Form4(this
38、.q1);</p><p> f1.Show();//使幾個(gè)窗口同時(shí)顯示;</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 = "你的號(hào)碼是:" + Callnumber + "號(hào)," + "你前面還有" + bankQueue.GetLength() + "位,請(qǐng)耐心等待!";</p><p> bankQueue .EnQueue(Callnumber );//所取得的號(hào)碼進(jìn)隊(duì);</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ù)繁忙,請(qǐng)稍后再來(lái)!");</p><p>
42、Console .WriteLine ();</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> namespace 銀行排隊(duì)叫號(hào)系統(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所建立的隊(duì)列;</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 = ("請(qǐng)" + _q1.DeQueue() + "號(hào)到二號(hào)窗口!");</p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p&
47、gt;<p> MessageBox.Show("現(xiàn)在沒(méi)有客人!");</p><p><b> }</b></p><p><b> }</b></p><p><b> 2.6測(cè)試</b></p><p> 代碼編寫完成后,執(zhí)行調(diào)
48、試-開(kāi)始執(zhí)行,看是否能成功生成,若能的話,點(diǎn)擊取號(hào)看服務(wù)窗口是否按要求運(yùn)作;若不能的話,根據(jù)所提供的錯(cuò)誤提示,一步步的調(diào)試,直到成功生成為止。下圖為取到八號(hào),且六號(hào)正在被服務(wù)時(shí)各顯示器上的顯示:</p><p><b> 三、總結(jié)</b></p><p> 在整個(gè)過(guò)程中,應(yīng)該注意以下幾點(diǎn):</p><p> 1.要求利用面向?qū)ο蟮姆椒ㄒ约?/p>
49、隊(duì)列數(shù)據(jù)結(jié)構(gòu)來(lái)完成系統(tǒng)的設(shè)計(jì);</p><p> 2. 在設(shè)計(jì)的過(guò)程中,建立清晰的類層次;</p><p> 3. 在系統(tǒng)設(shè)計(jì)中要分析和定義各個(gè)類,每個(gè)類中要有各自的屬性和方法;</p><p> 4. 要運(yùn)用面向?qū)ο蟮臋C(jī)制來(lái)實(shí)現(xiàn)系統(tǒng)功能。</p><p> 通過(guò)對(duì)完成這次課程設(shè)計(jì),加深了對(duì)隊(duì)列這種數(shù)據(jù)結(jié)構(gòu)的理解,掌握了隊(duì)列數(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#語(yǔ)言版)》</p><p> 錢哨、李揮劍、李繼哲編著 《C#WinForm實(shí)踐開(kāi)發(fā)教程》</p><p> 鄭宇軍編著
51、 《C#面向?qū)ο蟪绦蛟O(shè)計(jì)》</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); //入隊(duì)列操作</p><p> T DeQueue(); //出隊(duì)列操作</p><p> T GetFront(); //取
53、對(duì)頭元素</p><p> int GetLength(); //求隊(duì)列的長(zhǎng)度</p><p> bool IsEmpty(); //判斷隊(duì)列是否為空</p><p> void Clear(); //清空隊(duì)列</p><p> bool IsFull();//判斷是否為滿,在順序隊(duì)列中實(shí)現(xiàn)該算法,在鏈?zhǔn)疥?duì)列中代碼實(shí)現(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ù)號(hào)碼</p><p><b> }</b></
56、p><p><b> }</b></p><p><b> 順序隊(duì)列代碼:</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)順序隊(duì)列的容量</p><p> private T[] data; //數(shù)組,用于存儲(chǔ)循環(huán)順序隊(duì)列中的數(shù)據(jù)元素<
58、/p><p> private int front; //指示最近一個(gè)己經(jīng)離開(kāi)隊(duì)列的元素所占的位置</p><p> private int rear; //指示最近一個(gè)進(jìn)行入隊(duì)列的元素的位置</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> //隊(duì)頭指示器屬性</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> //隊(duì)尾指示器屬性</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> //初始化隊(duì)列</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> //入隊(duì)操作</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、隊(duì)操作</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> //獲取隊(duì)頭數(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)順序隊(duì)列的長(zhǎng)度</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)順序隊(duì)列是否為滿</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)順序隊(duì)列</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)順序隊(duì)列是否為空</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> 銀行順序隊(duì)列代碼:</b></p><p> using System;</p><p> using System.Threading;</p>&l
84、t;p> namespace QueueDs</p><p><b> {</b></p><p> //銀行叫號(hào)順序隊(duì)列類</p><p> class CSeqBankQueue:CSeqQueue<int>,IBankQueue </p><p><b> {</b>
85、;</p><p> private int callnumber;//記錄系統(tǒng)自動(dòng)產(chǎn)生的新來(lái)顧客的服務(wù)號(hào)</p><p><b> //叫號(hào)屬性</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ù)號(hào)碼</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("請(qǐng){0}號(hào)到{1}號(hào)窗口!", 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 銀行排隊(duì)叫號(hào)系統(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 = "你的號(hào)碼是:" + Callnumber + "號(hào),&
104、quot; + "你前面還有" + bankQueue.GetLength() + "位,請(qǐng)耐心等待!";</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ù)繁忙,請(qǐng)稍后再來(lái)!");</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 銀行排隊(duì)叫號(hào)系統(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 = "請(qǐng)" +_q1.DeQueue()+ "號(hào)到一號(hào)窗口";</p><p><b> }</b></p><p><b> else<
113、;/b></p><p> MessageBox.Show("現(xiàn)在沒(méi)有客人!");</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 銀行排隊(duì)叫號(hào)系統(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;請(qǐng)" + _q1.DeQueue() + "號(hào)到二號(hào)窗口!");</p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> MessageBox.Sh
121、ow("現(xiàn)在沒(méi)有客人!");</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 銀行排隊(duì)叫號(hào)系統(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;請(qǐng)"+_q1 .DeQueue ()+"號(hào)到三號(hào)窗口!");</p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> MessageBox .Show
129、 ("現(xiàn)在沒(méi)有客人!");</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 銀行排隊(duì)叫號(hào)系統(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. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 銀行叫號(hào)系統(tǒng)課程設(shè)計(jì)
- 銀行叫號(hào)系統(tǒng)課程設(shè)計(jì)
- c_課程設(shè)計(jì)——報(bào)刊訂閱管理系統(tǒng)
- c_語(yǔ)言課程設(shè)計(jì)---學(xué)生選課系統(tǒng)
- c_課程設(shè)計(jì)-- 圖書館管理系統(tǒng)
- c_課程設(shè)計(jì)游戲21點(diǎn)
- c_課程設(shè)計(jì)-俄羅斯方塊
- c_學(xué)生成績(jī)管理系統(tǒng)課程設(shè)計(jì)報(bào)告
- c_學(xué)生成績(jī)管理系統(tǒng)課程設(shè)計(jì)報(bào)告
- 課程設(shè)計(jì)報(bào)告--排隊(duì)叫號(hào)系統(tǒng)設(shè)計(jì)
- c_課程設(shè)計(jì)---模擬抽獎(jiǎng)軟件設(shè)計(jì)
- c_程序設(shè)計(jì)課程設(shè)計(jì)-- 在線留言
- c_課程設(shè)計(jì)—備忘錄軟件設(shè)計(jì)
- c_課程設(shè)計(jì)--—個(gè)人單詞薄軟件設(shè)計(jì)
- c_文本編輯器課程設(shè)計(jì)
- c_課程設(shè)計(jì)報(bào)告-- c#音樂(lè)播放器
- 排隊(duì)叫號(hào)機(jī)課程設(shè)計(jì)
- 撥叉c_課程設(shè)計(jì)說(shuō)明書
- c_課程設(shè)計(jì)--智能聊天機(jī)器人
- c_語(yǔ)言的課程設(shè)計(jì)學(xué)生信息管理
評(píng)論
0/150
提交評(píng)論