版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、河北联合大学2011-2012第2学期 软件设计基础-c#课程设计报告设计名称: 银行排队叫号系统姓 名: 赵杰 学 号 201114210114 专业班级: 11级工业工程一班 学 院: 机械工程学院 设计时间: 2012.5,26 设计地点: 河北联合大学主校区 成绩:指导教师评语: 指导教师签字: 年 月 日目 录1.课程设计目的32.课程设计任务与要求33.课程设计说明书44.课程设计成果95.程序调试过程116.设计问题的不足和改进方案117.课程设计心得128.附录139.参考文献221课程设计目的软件设计基础-c#课程设计是这门课程的实践性教学环节之一,本次设计结合实际应用的要求
2、,使课程设计既覆盖c#的知识点,又接近工程实际需要。目的是通过课程设计的综合训练,培养学生实际分析问题、解决问题的能力,以及编程和动手能力,最终目标是通过课程设计这种形式,帮助学生系统掌握c#这门课程的主要内容,养成良好的编程习惯,更好的完成教学任务。2课程设计任务与要求:要求:本次课程设计利用软件设计基础-c#课程中所学到的编程知识和编程技巧,完成具有一定难度和工作量的程序设计题目,帮助学生掌握编程、调试的基本技能,独立完成所布置的任务。要求:1、对系统进行功能需求分析2、设计合理的数据结构和系统框架3、界面设计美观、清楚、合理4、编程简练,程序功能齐全,能正确运行5、具有一定的创新性6、说
3、明书、流程图要清楚7、课题完成后必须按要求提交课程设计报告任务:通过这次课程设计,要求在数据结构的逻辑特性和物理表示、数据结构 的选择应用算法的及其实现等方面加深课程基本内容的理解。同时,在程 设计方法以及上机操作等基本技能和科学作风方面受到比较系统和严格的训练3课程设计说明书功能描述1,顾客取号,需要办理业务的顾客到取票机前取号,并获得打印出的排队号。2、顾客休息等待,取到排队号的顾客在休息区休息等待,注意大厅的提示信息。3、营业员按钮呼叫,窗口操作员按“下一位”,当前窗口就显示顾客排队号并语音呼叫“请 xx 到 x 号窗口”4、顾客到窗口办理,休息区的顾客到呼叫就到响应窗口进行一 对一服务
4、。排队叫号软件的具体操作流程为:1、顾客取号需要办理业务的顾客到取票机前取号,并获得打印出的2、顾客休息等待 取到排队号的顾客在休息区休息等待,注意大厅的提示信息3、营业员按钮呼叫 窗口操作员按“下一位”,当前窗口就显示顾客排队号并语音呼叫“请xx到x号窗口”4、顾客到窗口办理 休息区的顾客听到呼叫就到响应窗口进行一对一服务代码实现详细说明各功能模块的实现过程,所用到的算法、技巧等。1、 在这个程序中,主要运用了队列这种结构:队列是一种特殊的线性表,是一种只允许在表的一端插入操作而在另一端进行删除操作的线性表。进行插入操作的表尾称为队尾(rear),进行删除操作的头部称为对(front)。当队
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) 判断队列是否为空:isem
6、pty();(6) 清空操作:clear();(7) 判断是否为满:isfull();在这个程序中用循环顺序队列;当队尾指示器rear到达数组上限时,如果还有数据元素入队并且数组的第0个空间空闲时,队尾指示器rear指向数组的0端。队尾指示器rear的值不一定大于队头front的值,并且队满和队空的条件是相同的,为rear=front;2.3类定义(函数定义)在这个程序中,定义了一下及几种类:接口iqueue类:将队列的基本操作定义在接口iqueue中,如左图所示:clear:清空操作,是队列为空;dequeue:出队列操作,将队头元素从队列中取出;enqueue:入队列操作,将值为elem的
7、新数据元素添加到队尾;getfront:取队头元素,返回队头元素的值;getlength:求队列的长度,返回队列中数据元素的个数;isempty:判断队列是否为空,如果对列为控,返回true,否则返回false;isfull:判断是否为满,如果对列为满返回true,否则返回false;接口ibankqueue类:将银行队列的所有操作定义在里面:getcallnumber:获取服务号; 泛型类cseqqueue<t>表示顺序队列:(1)、字段字段maxsize:表示循环队列的最大容量;字段front:表示对头,范围是0maxsize-1;字段rear:表示队尾,范围也是0maxsiz
8、e-1;字段data:表示数组用于存储循环顺序队列中的数据 元素;(2)、属性在类中并设置了队头属性(front)、队尾属性(rear)、容量属性(maxsize)、索引器属性(this);(3)、方法在这个类中有接口iqueue中的一切方法;银行叫号顺序队列类cseqbankqueue类:该类实现ibankqueue接口中定义的全部行为,通过继承cseqqueue<t>将已实现的全部行为继承过来;此外,设置了一个新来顾客的服务号属性callnumber;通过方法getcallnumber()获得服务号;form1类:form1继承了系统中的form类;在form1中使用了butt
9、on、label、textbox等控件;使用了button_click方法实现取号行为;form2类:form2也继承了系统中的form类;在form2中也使用了button、label、textbox等控件;使用了button_click方法实现叫号行为;form3类:form3也继承了系统中的form类;在form2中也使用了button、label、textbox等控件;使用了button_click方法实现叫号行为;form4类:form4也继承了系统中的form类;在form2中也使用了button、label、textbox等控件;使用了button_click方法实现叫号行为;服
10、务窗口servicewindow类:服务队列的属性bankq;作为线程的方法service();主程序main()方法;4课程设计成果:5.程序调试过程:按下f5进行调试,出现错误.有时把”.”写成“,”,忘记“;”,或少写“”,最后调试成功。6.设计问题的不足和改进方案由于时间紧,设计不是很合理,触屏取号应该更方便。7.课程设计心得:我们认为,在这学期的实验中,在收获知识的同时,还收获了阅历,收获了成熟,在此过程中,我们通过查找大量资料,请教老师,以及不懈的努力,不仅培养了独立思考、动手操作的能力,在各种其它能力上也都有了提高。更重要的是,在实验课上,我们学会了很多学习的方法。而这是日后最实
11、用的,真的是受益匪浅。要面对社会的挑战,只有不断的学习、实践,再学习、再实践。 在整个过程中,应该注意以下几点:要求利用面向对象的方法以及队列数据结构来完成系统的设计;. 在设计的过程中,建立清晰的类层次;在系统设计中要分析和定义各个类,每个类中要有各自的属性和方法; 要运用面向对象的机制来实现系统功能。通过对完成这次课程设计,加深了对队列这种数据结构的理解,掌握了队列数据结构极其算法;此外也能够更加熟练的使用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();/判断是否为满,在顺序队列中实现该算法,在链式队列中代码实现为空 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; /循环顺序队列的容量 private t data; /数组,用于存储循环顺序队列中的数据元素 private int front; /指示最近一个己经离开队列的元素所占的位置 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; /获取队头数据元素 public t getfront() if (isempty() console.writeline("queue is empty!"); return default(t); return data(front+1)%maxsize; /求循环顺序队列的长度 public int getlength() return (rear - front + maxsize) % maxsize; /判断循环顺序队列是否为满 public bool isfull() if (front = -1 && rear = maxsi
17、ze - 1) | (rear + 1) % maxsize = front) return true; else return false; /清空循环顺序队列 public void clear() front = rear = -1; /判断循环顺序队列是否为空 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;/记录系统自动产生的新来顾客的服务号 /叫号属性 public int callnumber get return callnumber; set callnumber = value; public cseqbankqueue () public cseqbankqueue(int size):base(size) /获得服务号码 public int getcallnumber() if (isempty() && callnumber = 0) callnumb
19、er = 1; else 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号窗口!"
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 银行排队叫号系统 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 ("现在业务繁忙,请稍后再来!"); 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 银行排队叫号系统 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("现在没有客人!"); 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 银行排队叫号系统 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("现在没有客人!"); 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. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 音响调试合同范本
- 订购住宅合同范本
- 2024年度教育培训合同标的:课程培训、咨询服务
- 2024年度版权保护合同的详细内容和义务
- 混凝土车载泵买卖合同范本
- 锅炉安全合同范本
- 2024年度特许经营合同(快餐连锁)
- 2024版房地产项目开发合同
- 二零二四年度土地使用权租赁合同详细内容及其标的描述
- 农村拆迁房子买卖合同范本
- 跨学科学习:一种基于学科的设计、实施与评价
- 医院典型案件评析制度
- MOOC 管理学原理-大连理工大学 中国大学慕课答案
- JJG 527-2015固定式机动车雷达测速仪
- 建设工程检测委托合同
- 完整解读2024年关于加强社区工作者队伍建设的意见内容课件
- 中班科学教案:好吃的栗子
- 检验后质量控制讲解
- 大学生城市轨道职业规划
- 高考作文复习:议论文的8种常见的论证方法写作指导+课件
- 企业员工试用期合同
评论
0/150
提交评论