课程设计任务书
课程名称:课程设计1(数据结构)
设计题目:银行排队叫号系统
1. 问题描述writeline方法的作用
目前,在以银行营业大厅为代表的窗口行业,大量客户的拥挤排队已成为了这些企事业单位改善服务品质、提升营业形象的主要障碍。排队(叫号)系统的使用将成为改变这种状况的有力手段。排队系统完全模拟了人排队全过程,通过取票进队、排队等待、叫号服务等功能,代替了人们站队的辛苦,把顾客排队等待的烦恼变成一段难得的休闲时光,使客户拥有了一个自由的空间和一份美好的心情。
排队叫号软件的具体操作流程为:
顾客取服务序号。当顾客抵达服务大厅时,前往放置在入口处旁的取号机,并按一下其上的相应服务按钮,取号机会自动打印出一张服务单。单上显示服务号及该服务号前面正在等待服务的人数。
银行职员呼叫顾客 ,顾客的服务号就会按顺序的显示在显示屏上。当一位顾客办事完毕后,柜台银行职员只需按呼叫器相应键,即可自动呼叫下一位顾客。
2. 功能要求:
1)使用数组或链表以及C#接口和范型技术实现通用的队列功能;
2)编写算法,利用队列模拟银行排队系统;
3)利用多窗口分别模拟顾客取服务号、银行窗口服务顾客。
3.界面要求:
用户界面设计不做统一规定,但应做到界面友好,易于操作。
4. 技术要求:
要求利用面向对象的方法以及队列数据结构来完成系统的设计;在设计的过程中,建立清晰的类层次; 在系统设计中要分析和定义各个类,每个类中要有各自的属性和方法;要求运用面向对象的机制来实现系统功能。
5创新要求
在基本要求达到后,可以进行创新设计(包括界面、功能、数据结构)。
6.    课程设计时间:1周(18课时)
7.    课程设计的考核方式及评分方法
1) 考核方式
课程设计结束时,在机房当场验收。
教师提供测试数据,检查运行结果是否正确。
回答教师提出的问题。
学生提交课程设计文档(A4纸打印)
2) 评分方法
上机检查及答辩 : 书面报告 : 学习态度 = 6 : 3 : 1,没有通过上机检查的其成绩直接记录不及格。
目录
1 设计内容与要求 ……………………………………………………………………………
2.设计说明 ……………………………………………………………………………………
  2.1 问题描述与功能设计…………………………………………………………………
  2.2 算法与数据结构………………………………………………………………………
  2.3 类定义(函数定义)……………………………………………………………………
  2.4 界面设计………………………………………………………………………………
  2.5 编码……………………………………………………………………………………
  2.6 测试……………………………………………………………………………………
3 总结…………………………………………………………………………………………
参考文献 ……………………………………………………………………………………
附录A:源代码……………………………………………………………………………
一、设计内容与要求
1、设计内容
1)、设计窗口,服务窗口;
2)、编写代码,实现各种算法,完成排队叫号问题;
2、设计要求
1.通过这次课程设计,要求在数据结构的逻辑特性和物理表示、数据结构的选择应用、算法的设计及其实现等方面加深课程基本内容的理解。同时,在程序设计方法以及上机操作等基本技能和科学作风方面受到比较系统和严格的训练。
2.学生必须仔细研读《数据结构》课程设计任务书要求,以学生自学为主、指导教师指导为辅,独立完成课程设计的任务,有问题及时主动与指导教师沟通。
3.在课程设计中,学生要发挥自主学习的能力,充分利用时间,安排好课程设计的时间计划,并在课程设计过程中不断检测自己的计划完成情况,及时向指导教师汇报。
4.编程语言:C#语言。
二、设计说明
2.1问题描述与功能设计
1、问题描述
  目前,在以银行营业大厅为代表的窗口业务,大量客户的拥挤排队已成为了这些企事业单位改善服务品质、提升企业形象的主要障碍。排队叫号系统的使用将成为改变这种情况的有力手段。排队系统完全模拟了人排队的全过程,通过取票进队。排队等待、叫号服务等功能,很好的解决了客户在服务机构办理业务是所遇到的各种排队、拥挤和混乱现象,
代替了人们站队的辛苦,把顾客等待的烦恼变成了一段难得的休闲时光,使客户拥有了一个自由的空间和一份美好的心情。
  排队叫号软件的具体操作流程为:
2、功能设计
1)使用数组以及C#接口和范型技术实现通用的队列功能;
2)编写算法,利用队列模拟银行排队系统;
3)利用多窗口分别模拟顾客取服务号、银行窗口服务顾客。
2.2算法与数据结构
在银行排队叫号软件中,首先要到一种数据结构来存放顾客所得到的服务号,这些服务号表示客户的请求服务的先后顺序,也表示客户被服务的先后顺序。先来的客户被服务:
在这个程序中,主要运用了队列这种结构:
1、 队列是一种特殊的线性表,是一种只允许在表的一端插入操作而在另一端进行删除操作的线性表。进行插入操作的表尾称为队尾(Rear),进行删除操作的头部称为对头(Front)。当队列中没有数据元素时称为空队列(Empty Queue)。队列通常记为Q=a1,a2,,an,a1为对头元素,an为队尾元素。这n个元素是按照a1,a2,an的次序依次入队的,出队的顺序与入队顺序相同,a1第一个出队,an最后一个出队。队列的结构示意图如下:
           
    出队      a1  a2 an            入队
   
2、队列的特征:
  队列的操作是按照“先进先出”或“后进后出” 的原则进行的。
3、 队列的基本操作:
(1) 入队列操作:EnQueueT elem);
(2) 出队列操作:DeQueue();
(3) 取队头元素:GetFront();
(4) 求队列的长度;GetLength();
(5) 判断队列是否为空:IsEmpty();
(6) 清空操作:Clear();
(7) 判断是否为满:IsFull();
在这个程序中用循环顺序队列;
当队尾指示器rear到达数组上限时,如果还有数据元素入队并且数组的第0个空间空闲时,队尾指示器rear指向数组的0端。队尾指示器rear的值不一定大于队头Front的值,并且队满和队空的条件是相同的,为rear==front
2.3类定义(函数定义)
在这个程序中,定义了一下及几种类:
接口IQueue类: