c銀行排隊叫號系統(tǒng)課程報告設(shè)計書_第1頁
c銀行排隊叫號系統(tǒng)課程報告設(shè)計書_第2頁
c銀行排隊叫號系統(tǒng)課程報告設(shè)計書_第3頁
c銀行排隊叫號系統(tǒng)課程報告設(shè)計書_第4頁
c銀行排隊叫號系統(tǒng)課程報告設(shè)計書_第5頁
已閱讀5頁,還剩17頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、河北聯(lián)合大學(xué)2011-2012第2學(xué)期 軟件設(shè)計基礎(chǔ)-c#課程設(shè)計報告設(shè)計名稱: 銀行排隊叫號系統(tǒng)姓 名: 趙杰 學(xué) 號 201114210114 專業(yè)班級: 11級工業(yè)工程一班 學(xué) 院: 機械工程學(xué)院 設(shè)計時間: 2012.5,26 設(shè)計地點: 河北聯(lián)合大學(xué)主校區(qū) 成績:指導(dǎo)教師評語: 指導(dǎo)教師簽字: 年 月 日目 錄1.課程設(shè)計目的32.課程設(shè)計任務(wù)與要求33.課程設(shè)計說明書44.課程設(shè)計成果95.程序調(diào)試過程116.設(shè)計問題的不足和改進方案117.課程設(shè)計心得128.附錄139.參考文獻221課程設(shè)計目的軟件設(shè)計基礎(chǔ)-c#課程設(shè)計是這門課程的實踐性教學(xué)環(huán)節(jié)之一,本次設(shè)計結(jié)合實際應(yīng)用的要求

2、,使課程設(shè)計既覆蓋c#的知識點,又接近工程實際需要。目的是通過課程設(shè)計的綜合訓(xùn)練,培養(yǎng)學(xué)生實際分析問題、解決問題的能力,以及編程和動手能力,最終目標是通過課程設(shè)計這種形式,幫助學(xué)生系統(tǒng)掌握c#這門課程的主要內(nèi)容,養(yǎng)成良好的編程習(xí)慣,更好的完成教學(xué)任務(wù)。2課程設(shè)計任務(wù)與要求:要求:本次課程設(shè)計利用軟件設(shè)計基礎(chǔ)-c#課程中所學(xué)到的編程知識和編程技巧,完成具有一定難度和工作量的程序設(shè)計題目,幫助學(xué)生掌握編程、調(diào)試的基本技能,獨立完成所布置的任務(wù)。要求:1、對系統(tǒng)進行功能需求分析2、設(shè)計合理的數(shù)據(jù)結(jié)構(gòu)和系統(tǒng)框架3、界面設(shè)計美觀、清楚、合理4、編程簡練,程序功能齊全,能正確運行5、具有一定的創(chuàng)新性6、說

3、明書、流程圖要清楚7、課題完成后必須按要求提交課程設(shè)計報告任務(wù):通過這次課程設(shè)計,要求在數(shù)據(jù)結(jié)構(gòu)的邏輯特性和物理表示、數(shù)據(jù)結(jié)構(gòu) 的選擇應(yīng)用算法的及其實現(xiàn)等方面加深課程基本內(nèi)容的理解。同時,在程 設(shè)計方法以及上機操作等基本技能和科學(xué)作風方面受到比較系統(tǒng)和嚴格的訓(xùn)練3課程設(shè)計說明書功能描述1,顧客取號,需要辦理業(yè)務(wù)的顧客到取票機前取號,并獲得打印出的排隊號。2、顧客休息等待,取到排隊號的顧客在休息區(qū)休息等待,注意大廳的提示信息。3、營業(yè)員按鈕呼叫,窗口操作員按“下一位”,當前窗口就顯示顧客排隊號并語音呼叫“請 xx 到 x 號窗口”4、顧客到窗口辦理,休息區(qū)的顧客到呼叫就到響應(yīng)窗口進行一 對一服務(wù)

4、。排隊叫號軟件的具體操作流程為:1、顧客取號需要辦理業(yè)務(wù)的顧客到取票機前取號,并獲得打印出的2、顧客休息等待 取到排隊號的顧客在休息區(qū)休息等待,注意大廳的提示信息3、營業(yè)員按鈕呼叫 窗口操作員按“下一位”,當前窗口就顯示顧客排隊號并語音呼叫“請xx到x號窗口”4、顧客到窗口辦理 休息區(qū)的顧客聽到呼叫就到響應(yīng)窗口進行一對一服務(wù)代碼實現(xiàn)詳細說明各功能模塊的實現(xiàn)過程,所用到的算法、技巧等。1、 在這個程序中,主要運用了隊列這種結(jié)構(gòu):隊列是一種特殊的線性表,是一種只允許在表的一端插入操作而在另一端進行刪除操作的線性表。進行插入操作的表尾稱為隊尾(rear),進行刪除操作的頭部稱為對(front)。當隊

5、列中沒有數(shù)據(jù)元素時稱為空隊列(empty queue)。隊列通常記為q=(a1,a2,an),a1為對頭元素,an為隊尾元素。這n個元素是按照a1,a2,an的次序依次入隊的,出隊的順序與入隊順序相同,a1第一個出隊,an最后一個出隊。隊列的結(jié)構(gòu)示意圖如下: 出隊 a1 a2 an 入隊2、隊列的特征: 隊列的操作是按照“先進先出”或“后進后出” 的原則進行的。3、 隊列的基本操作:(1) 入隊列操作:enqueue(t elem);(2) 出隊列操作:dequeue();(3) 取隊頭元素:getfront();(4) 求隊列的長度;getlength();(5) 判斷隊列是否為空:isem

6、pty();(6) 清空操作:clear();(7) 判斷是否為滿:isfull();在這個程序中用循環(huán)順序隊列;當隊尾指示器rear到達數(shù)組上限時,如果還有數(shù)據(jù)元素入隊并且數(shù)組的第0個空間空閑時,隊尾指示器rear指向數(shù)組的0端。隊尾指示器rear的值不一定大于隊頭front的值,并且隊滿和隊空的條件是相同的,為rear=front;2.3類定義(函數(shù)定義)在這個程序中,定義了一下及幾種類:接口iqueue類:將隊列的基本操作定義在接口iqueue中,如左圖所示:clear:清空操作,是隊列為空;dequeue:出隊列操作,將隊頭元素從隊列中取出;enqueue:入隊列操作,將值為elem的

7、新數(shù)據(jù)元素添加到隊尾;getfront:取隊頭元素,返回隊頭元素的值;getlength:求隊列的長度,返回隊列中數(shù)據(jù)元素的個數(shù);isempty:判斷隊列是否為空,如果對列為控,返回true,否則返回false;isfull:判斷是否為滿,如果對列為滿返回true,否則返回false;接口ibankqueue類:將銀行隊列的所有操作定義在里面:getcallnumber:獲取服務(wù)號; 泛型類cseqqueue<t>表示順序隊列:(1)、字段字段maxsize:表示循環(huán)隊列的最大容量;字段front:表示對頭,范圍是0maxsize-1;字段rear:表示隊尾,范圍也是0maxsiz

8、e-1;字段data:表示數(shù)組用于存儲循環(huán)順序隊列中的數(shù)據(jù) 元素;(2)、屬性在類中并設(shè)置了隊頭屬性(front)、隊尾屬性(rear)、容量屬性(maxsize)、索引器屬性(this);(3)、方法在這個類中有接口iqueue中的一切方法;銀行叫號順序隊列類cseqbankqueue類:該類實現(xiàn)ibankqueue接口中定義的全部行為,通過繼承cseqqueue<t>將已實現(xiàn)的全部行為繼承過來;此外,設(shè)置了一個新來顧客的服務(wù)號屬性callnumber;通過方法getcallnumber()獲得服務(wù)號;form1類:form1繼承了系統(tǒng)中的form類;在form1中使用了butt

9、on、label、textbox等控件;使用了button_click方法實現(xiàn)取號行為;form2類:form2也繼承了系統(tǒng)中的form類;在form2中也使用了button、label、textbox等控件;使用了button_click方法實現(xiàn)叫號行為;form3類:form3也繼承了系統(tǒng)中的form類;在form2中也使用了button、label、textbox等控件;使用了button_click方法實現(xiàn)叫號行為;form4類:form4也繼承了系統(tǒng)中的form類;在form2中也使用了button、label、textbox等控件;使用了button_click方法實現(xiàn)叫號行為;服

10、務(wù)窗口servicewindow類:服務(wù)隊列的屬性bankq;作為線程的方法service();主程序main()方法;4課程設(shè)計成果:5.程序調(diào)試過程:按下f5進行調(diào)試,出現(xiàn)錯誤.有時把”.”寫成“,”,忘記“;”,或少寫“”,最后調(diào)試成功。6.設(shè)計問題的不足和改進方案由于時間緊,設(shè)計不是很合理,觸屏取號應(yīng)該更方便。7.課程設(shè)計心得:我們認為,在這學(xué)期的實驗中,在收獲知識的同時,還收獲了閱歷,收獲了成熟,在此過程中,我們通過查找大量資料,請教老師,以及不懈的努力,不僅培養(yǎng)了獨立思考、動手操作的能力,在各種其它能力上也都有了提高。更重要的是,在實驗課上,我們學(xué)會了很多學(xué)習(xí)的方法。而這是日后最實

11、用的,真的是受益匪淺。要面對社會的挑戰(zhàn),只有不斷的學(xué)習(xí)、實踐,再學(xué)習(xí)、再實踐。 在整個過程中,應(yīng)該注意以下幾點:要求利用面向?qū)ο蟮姆椒ㄒ约瓣犃袛?shù)據(jù)結(jié)構(gòu)來完成系統(tǒng)的設(shè)計;. 在設(shè)計的過程中,建立清晰的類層次;在系統(tǒng)設(shè)計中要分析和定義各個類,每個類中要有各自的屬性和方法; 要運用面向?qū)ο蟮臋C制來實現(xiàn)系統(tǒng)功能。通過對完成這次課程設(shè)計,加深了對隊列這種數(shù)據(jù)結(jié)構(gòu)的理解,掌握了隊列數(shù)據(jù)結(jié)構(gòu)極其算法;此外也能夠更加熟練的使用button。label。textbox等控件8.附錄源代碼iqueue接口代碼:using system;namespace queueds interface iqueue<t

12、> void enqueue(t elem); /入隊列操作 t dequeue(); /出隊列操作 t getfront(); /取對頭元素 int getlength(); /求隊列的長度 bool isempty(); /判斷隊列是否為空 void clear(); /清空隊列 bool isfull();/判斷是否為滿,在順序隊列中實現(xiàn)該算法,在鏈式隊列中代碼實現(xiàn)為空 ibankqueue接口代碼:using system;namespace queueds interface ibankqueue:iqueue<int> int getcallnumber();/獲

13、得服務(wù)號碼 順序隊列代碼:using system;namespace queueds public class cseqqueue<t>:iqueue<t> private int maxsize; /循環(huán)順序隊列的容量 private t data; /數(shù)組,用于存儲循環(huán)順序隊列中的數(shù)據(jù)元素 private int front; /指示最近一個己經(jīng)離開隊列的元素所占的位置 private int rear; /指示最近一個進行入隊列的元素的位置 /索引器 public t thisint index get return dataindex; set dataind

14、ex = value; /容量屬性 public int maxsize get return maxsize; set maxsize = value; /隊頭指示器屬性 public int front get return front; set front = value; /隊尾指示器屬性 public int rear get return rear; set rear = value; /初始化隊列 public cseqqueue() public cseqqueue(int size) data = new tsize; maxsize = size; front = rear

15、 = -1; /入隊操作 public void enqueue(t elem) if (isfull() console.writeline("queue is full"); return; rear=(rear + 1) % maxsize; ; datarear = elem; /出隊操作 public t dequeue() if (isempty() console.writeline("queue is empty"); return default(t); front = (front + 1) % maxsize; return dat

16、afront; /獲取隊頭數(shù)據(jù)元素 public t getfront() if (isempty() console.writeline("queue is empty!"); return default(t); return data(front+1)%maxsize; /求循環(huán)順序隊列的長度 public int getlength() return (rear - front + maxsize) % maxsize; /判斷循環(huán)順序隊列是否為滿 public bool isfull() if (front = -1 && rear = maxsi

17、ze - 1) | (rear + 1) % maxsize = front) return true; else return false; /清空循環(huán)順序隊列 public void clear() front = rear = -1; /判斷循環(huán)順序隊列是否為空 public bool isempty() if (front = rear) return true; else return false; 銀行順序隊列代碼:using system;using system.threading;namespace queueds /銀行叫號順序隊列類 class cseqbankqueue

18、:cseqqueue<int>,ibankqueue private int callnumber;/記錄系統(tǒng)自動產(chǎn)生的新來顧客的服務(wù)號 /叫號屬性 public int callnumber get return callnumber; set callnumber = value; public cseqbankqueue () public cseqbankqueue(int size):base(size) /獲得服務(wù)號碼 public int getcallnumber() if (isempty() && callnumber = 0) callnumb

19、er = 1; else callnumber+; return callnumber; /服務(wù)窗口類 class servicewindow ibankqueue bankq; public ibankqueue bankq get return bankq; set bankq = value; public void service() while (true) thread.sleep(10000); if (!bankq.isempty() console.writeline(); lock (bankq) console.writeline("請0號到1號窗口!"

20、;, bankq.dequeue(), thread.currentthread.name); form1代碼using system;using system.collections.generic;using system.componentmodel;using system.data;using system.drawing;using system.linq;using system.text;using system.windows.forms;using queueds;namespace 銀行排隊叫號系統(tǒng) public partial class form1 : form ib

21、ankqueue bankqueue=new cseqbankqueue(100); cseqqueue<int> q1 = new cseqqueue<int>(100); int callnumber; public form1() initializecomponent(); form2 f1 = new form2(this.q1); form3 f2 = new form3(this.q1); form4 f3 = new form4(this.q1); f1.show(); f2.show(); f3.show(); private void button1

22、_click(object sender, eventargs e) if (!bankqueue.isfull() callnumber = bankqueue.getcallnumber(); textbox1.text = "你的號碼是:" + callnumber + "號," + "你前面還有" + bankqueue.getlength() + "位,請耐心等待!" bankqueue .enqueue(callnumber ); q1.enqueue(callnumber); else console

23、 .writeline ("現(xiàn)在業(yè)務(wù)繁忙,請稍后再來!"); console .writeline (); private void form1_load(object sender, eventargs e) form2的代碼:using system;using system.collections.generic;using system.componentmodel;using system.data;using system.drawing;using system.linq;using system.text;using system.windows.forms

24、;using queueds;namespace 銀行排隊叫號系統(tǒng) public partial class form2 : form cseqqueue<int> _q1 = new cseqqueue<int>(100); public form2(cseqqueue<int> q1) initializecomponent(); this._q1=q1; private void button1_click(object sender, eventargs e) if (!_q1.isempty () textbox1.text = "請&q

25、uot; +_q1.dequeue()+ "號到一號窗口" else messagebox.show("現(xiàn)在沒有客人!"); private void form2_load(object sender, eventargs e) form3代碼:using system;using system.collections.generic;using system.componentmodel;using system.data;using system.drawing;using system.linq;using system.text;using sy

26、stem.windows.forms;using queueds;namespace 銀行排隊叫號系統(tǒng) public partial class form3 : form cseqqueue<int> _q1 = new cseqqueue<int>(100); public form3(cseqqueue<int> q1) initializecomponent(); this._q1 = q1; private void button1_click(object sender, eventargs e) if (!_q1.isempty() textbo

27、x1.text = ("請" + _q1.dequeue() + "號到二號窗口!"); else messagebox.show("現(xiàn)在沒有客人!"); private void form3_load(object sender, eventargs e) form4代碼:using system;using system.collections.generic;using system.componentmodel;using system.data;using system.drawing;using system.linq;using syst

溫馨提示

  • 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

提交評論