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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

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

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

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

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

5、空隊列(Empty Queue)。隊列通常記為Q=(a1,a2,an),a1為對頭元素,an為隊尾元素。這n個元素是按照a1,a2,an的次序依次入隊的,出隊的順序與入隊順序相同,a1第一個出隊,an最后一個出隊。隊列的結構示意圖如下: 出隊 a1 a2 an 入隊2、隊列的特征: 隊列的操作是按照“先進先出”或“后進后出” 的原則進行的。3、 隊列的基本操作:(1) 入隊列操作:EnQueue(T elem);(2) 出隊列操作:DeQueue();(3) 取隊頭元素:GetFront();(4) 求隊列的長度;GetLength();(5) 判斷隊列是否為空:IsEmpty();(6) 清

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的新數(shù)據(jù)元素添加到隊尾;

7、GetFront:取隊頭元素,返回隊頭元素的值;GetLength:求隊列的長度,返回隊列中數(shù)據(jù)元素的個數(shù);IsEmpty:判斷隊列是否為空,如果對列為控,返回true,否則返回false;IsFull:判斷是否為滿,如果對列為滿返回true,否則返回false;接口IBankQueue類:將銀行隊列的所有操作定義在里面:GetCallnumber:獲取服務號; 泛型類CSeqQueue<T>表示順序隊列:(1)、字段字段maxsize:表示循環(huán)隊列的最大容量;字段front:表示對頭,范圍是0maxsize-1;字段rear:表示隊尾,范圍也是0maxsize-1;字段data:

8、表示數(shù)組用于存儲循環(huán)順序隊列中的數(shù)據(jù) 元素;(2)、屬性在類中并設置了隊頭屬性(front)、隊尾屬性(rear)、容量屬性(maxsize)、索引器屬性(this);(3)、方法在這個類中有接口IQueue中的一切方法;銀行叫號順序隊列類CSeqBankQueue類:該類實現(xiàn)IBankQueue接口中定義的全部行為,通過繼承CSeqQueue<T>將已實現(xiàn)的全部行為繼承過來;此外,設置了一個新來顧客的服務號屬性Callnumber;通過方法GetCallnumber()獲得服務號;Form1類:Form1繼承了系統(tǒng)中的Form類;在Form1中使用了button、label、te

9、xtBox等控件;使用了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)叫號行為;服務窗口ServiceW

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

11、要面對社會的挑戰(zhàn),只有不斷的學習、實踐,再學習、再實踐。 在整個過程中,應該注意以下幾點:要求利用面向對象的方法以及隊列數(shù)據(jù)結構來完成系統(tǒng)的設計;. 在設計的過程中,建立清晰的類層次;在系統(tǒng)設計中要分析和定義各個類,每個類中要有各自的屬性和方法; 要運用面向對象的機制來實現(xiàn)系統(tǒng)功能。通過對完成這次課程設計,加深了對隊列這種數(shù)據(jù)結構的理解,掌握了隊列數(shù)據(jù)結構極其算法;此外也能夠更加熟練的使用button。Label。textBox等控件8.附錄源代碼IQueue接口代碼:using System;namespace QueueDs interface IQueue<T> void E

12、nQueue(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、碼: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; /指示最近一個己經離開隊列的元素所占的位置 private int rear; /指示最近一個進行入隊列的元素的位置 /索引器 public T thisint index get return dataindex; set dataindex = value;

14、 /容量屬性 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 = -1; /入隊操

15、作 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 datafront; /獲取

16、隊頭數(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 = maxsize - 1) | (

17、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:CSeqQueue&

18、lt;int>,IBankQueue private int callnumber;/記錄系統(tǒng)自動產生的新來顧客的服務號 /叫號屬性 public int Callnumber get return callnumber; set callnumber = value; public CSeqBankQueue () public CSeqBankQueue(int size):base(size) /獲得服務號碼 public int GetCallnumber() if (IsEmpty() && callnumber = 0) callnumber = 1; els

19、e callnumber+; return callnumber; /服務窗口類 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號窗口!", bankQ.De

20、Queue(), 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 IBankQueue ba

21、nkQueue=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_Click(obje

22、ct sender, EventArgs e) if (!bankQueue.IsFull() Callnumber = bankQueue.GetCallnumber(); textBox1.Text = "你的號碼是:" + Callnumber + "號," + "你前面還有" + bankQueue.GetLength() + "位,請耐心等待!" bankQueue .EnQueue(Callnumber ); q1.EnQueue(Callnumber); else Console .WriteLine

23、 ("現(xiàn)在業(yè)務繁忙,請稍后再來!"); 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;using Queu

24、eDs;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 = "請" +_q1.D

25、eQueue()+ "號到一號窗口" 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 System.Window

26、s.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() textBox1.Text = (

27、"請" + _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 System

溫馨提示

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

評論

0/150

提交評論