ImageVerifierCode 换一换
格式:DOCX , 页数:17 ,大小:138.82KB ,
资源ID:6768814      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/6768814.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(队列类模板.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

队列类模板.docx

1、队列类模板封 皮(按学校要求手工填写)成 绩 评 定 表学生姓名崔丁昴班级学号1203060115专 业通信工程课程设计题目队列类模板的设计与实现评语组长签字:成绩日期 20 年 月 日课程设计任务书学 院信息科学与工程专 业通信工程学生姓名崔丁昴班级学号1203060115课程设计题目队列类模板的设计与实现实践教学要求与任务进行队列类模板的设计并实现,队列采用循环队列实现,数据元素可以是char, int, float等多种数据类型,包括以下功能:(1) 实现初始化队列操作,建立一个空队列;(2) 实现清空队列操作; (3) 实现判断队列是否为空的操作;(4) 实现求队列长度的操作; (5)

2、 实现返回队首元素的操作;(6) 实现入队操作; (7) 实现出队操作;(8) 实现队列的遍历操作,输出队列的每个元素。(9) 将上述功能作为类的成员函数实现,编写主函数测试上述功能。工作计划与进度安排第17周:分析题目,查阅课题相关资料,进行类设计、算法设计;第18周:程序的设计、调试与实现;第19周:程序测试与分析,撰写课程设计报告,进行答辩验收。指导教师: 201 年 月 日专业负责人:201 年 月 日学院教学副院长:201 年 月 日摘 要很多自然科学和工程技术中的问题的解决最终都归结到队列问题的处理,模板是处理问题很经典的方法,由它改进、变形得到的类模板,是一种效率很高、较为常用的

3、方法。本文采用C+语言实现了对队列的各个操作,设计了队列类,采用Visual C+ 6.0的控制台工程和MFC工程分别实现了对队列的处理。关键词:队列;类模板;控制台工程;MFC工程1. 需求分析1.应用类模板可以使类中的数据成员、成员函数的参数及成员函数的返回值能根据模板参数匹配情况取任意数据类型。这种类型既可以是C+预定义的数据类型,也可以是用户自定义的数据类型。2.队列在程序设计中也经常出现。一个最典型的例子就是操作系统中的作业排队。在允许多道程序运行的计算机系统中,同时有几个作业运行。如果运行的结果都需要通过通道输出,那就要按请求输出的先后次序排队。每当通道传输完毕可以接受新的输出任务

4、时,队头的作业先从队列中退出作输出操作。凡是申请输出的作业都从队尾进入队列。2. 算法基本原理1.初始化一个循环队列。和顺序栈相类似,在队列的顺序存储结构中,除了用一组地址连续的存储单元依次存放从队列头到队列尾的元素之外,尚需附设两个指针front和rear分别指示队列头元素及队列尾元素的位置。2.实现清空队列操作。直接让类Queue中的private成员全部清零。从而实现队列的清空。 3.实现判断队列是否为空的操作。如果该队列中成员count为零的话。便直接输出该队列为空。4.实现求队列长度的操作。直接输出当前情况下的成员count的值。 5. 实现返回队首元素的操作。由于存在front直接

5、指向着对首。所以直接输出该队首元素即qfront。6.实现入队操作。在count+的情况下。让输入的值赋于qrear+。即实现了在队尾插入的功能。 7.实现出队操作。在count-的情况下。让qfront=qfront+1。即实现了在队首删除的功能。8.实现队列的遍历操作。输出队列的每个元素。利用for循环直接输出q数组中所有的元素。3. 类设计 1.对于基类Queue来讲。内部有私有成员和公有成员。私有成员包括了描述一个队列必须的对首(front)、队尾(rear)、即队总数(count)。另外还有用于存放队列数据的一个数组qlistMaxQSize。公有成员则包括了各个函数。Queue(v

6、oid)为构造函数。QDelete()为实现队列的删除的函数。QInsert()为实现队列的插入的函数。ClearQueue()为实现队列的清空的函数。QLength()为计算求出队列的长度的函数。QFront()为找到队列的队首元素的函数。QEmpty()为判断队列是否为空的函数。PrintQueue()输出队列的函数。2.对于模板类来讲。即template。由于要求的是可以执行int、char、float三种类型的数据。所以我们在主函数中定义了三个成员Queue s、Queue z、 Queue y。用于分别调用这三种类型进行操作处理。4.基于控制台的应用程序整个程序分为三个大部分。第一个

7、部分即为对类Queue的定义。第二个部分则是对类Queue中的各个成员函数进行定义。第三个部分即为主函数,主函数中分别定义了int型、float型、char型的队列类型用于程序的选择及处理。4.1 类的初始定义#include#include using namespace std;const int MaxQSize = 20;template /模板声明class Queue /类Queue的声明private: int count; int front; int rear; /类Queue私有成员声明 T qlistMaxQSize;public: Queue(void); /构造函数

8、void QDelete(); /实现队列的删除 void QInsert(); /实现队列的插入 void ClearQueue(); /实现队列的清空 void QLength(); /计算求出队列的长度 void QFront(); /找到队列的队首元素 void QEmpty(); /判断队列是否为空 void PrintQueue(); /输出这个队列;4.2 类的实现template Queue :Queue(void):front(0), rear(0), count(0) /初始化template void Queue :QDelete() /删除 T temp; if (co

9、unt = 0) cout 这是个空的队列! endl; exit(1); temp = qlistfront; count-; front = (front+1) % MaxQSize; template void Queue :QInsert() /插入 char a; T item; if (count = MaxQSize) cout 这是个满的队列! endl; exit(1); while(1) couta; if(a=Y|a=y) cout输入队列的数据:item; count+; qlistrear = item; rear = (rear+1) % MaxQSize; els

10、e break; template void Queue :QLength() /长度 cout该队列长度为:countendl;template void Queue :QFront() /队首 cout该队列队首元素为:qlistfrontendl;template void Queue :ClearQueue() /清空 count=0; front=0; rear=0; template void Queue :QEmpty() /判断 if(count=0) cout该队列为空!endl; else cout该队列不为空!endl;template void Queue :Print

11、Queue() /输出 int i; for(i=0;icount;i+) coutqlisti ; coutendl;int IfContinue() /判断是否继续执行函数的函数 char i; cout继续执行函数请输入Y/y:i; if(i=Y|i=y) return 0; else exit(1);4.3 主函数的设计#include#include using namespace std;const int MaxQSize = 20;void main() int c,d; Queue s; Queue z; Queue y; cout这是个队列类模板的设计与实现的程序endl;

12、 cout请选择要处理的队列的数据类型:endl1.int型 2.char型 3.float型c; switch(c) case 1: while(1) cout1.初始化 2.删除 3.长度 4.队首元素 5.清空 6.判断 7.输出d; switch(d) case 1:s.QInsert();IfContinue();break; case 2:s.QDelete();IfContinue();break; case 3:s.QLength();IfContinue();break; case 4:s.QFront();IfContinue();break; case 5:s.Clear

13、Queue();IfContinue();break; case 6:s.QEmpty();IfContinue();break; case 7:s.PrintQueue();IfContinue();break; default: break; break; case 2: while(1) cout1.初始化 2.删除 3.长度 4.队首元素 5.清空 6.判断 7.输出d; switch(d) case 1:z.QInsert();IfContinue();break; case 2:z.QDelete();IfContinue();break; case 3:z.QLength();I

14、fContinue();break; case 4:z.QFront();IfContinue();break; case 5:z.ClearQueue();IfContinue();break; case 6:z.QEmpty();IfContinue();break; case 7:z.PrintQueue();IfContinue();break; default: break; break; case 3: while(1) cout1.初始化 2.删除 3.长度 4.队首元素 5.清空 6.判断 7.输出d; switch(d) case 1:y.QInsert();IfContin

15、ue();break; case 2:y.QDelete();IfContinue();break; case 3:y.QLength();IfContinue();break; case 4:y.QFront();IfContinue();break; case 5:y.ClearQueue();IfContinue();break; case 6:y.QEmpty();IfContinue();break; case 7:y.PrintQueue();IfContinue();break; default: break; break; default: break; 4.4 基于控制台的应

16、用程序测试对int型数据进行程序运行结果如图1所示。图1 int型数据运行结果对char型数据进行程序运行结果如图2所示。图2 char型数据运行结果对float型数据进行程序运行结果如图3所示。图3 float型数据运行结果5.1基于MFC的应用程序设计5.1.1 MFC程序界面设计首先在VC中建立MFC AppWizard(exe)工程,名称为队列,并在向导的Step1中选择Dialog based,即建立基于对话框的应用程序,如下图45所示。图4 建立MFC AppWizard(exe)工程图5 建立基于对话框的应用程序将对话框资源中的默认对话框利用工具箱改造成如下界面,如图6所示。图6

17、 方程组求解程序界面设计图6所示的界面中包含了个Static Text控件,个Button控件,和个Edit Box控件,控件的基本信息列表如下表1所示。表1 控件基本信息控件类别控件ID控件Caption说明Static TextIDC_STATIC该队列为:输入插入的数据:ButtonIDC_BUTTON_Read读入数据IDC_BUTTON_Del删除数据IDC_BUTTON_Empty清空数据IDC_BUTTON_Insert进行插入Edit BoxIDC_EDIT_A00 IDC_EDIT_A10队列的10个元素IDC_EDIT_b0用于插入的元素5.1.2 MFC程序代码设计为了能

18、够将对话框界面上的控件能够与代码联系起来,需要为11个Edit Box控件建立Member Variables,按Ctrl+w键进入MFC ClassWizard界面,选择Member Variables选项卡,可显示成员变量设置界面。通过该界面设置与11个Edit Box控件对应的成员变量,具体如表2所示。表2 控件基本信息控件ID成员变量类型成员变量名称IDC_EDIT_A00IDC_EDIT_A10intdl_1 dl_10IDC_EDIT_b0intcr_1下面是编写代码的重要阶段,可以借鉴在设计基于DOS界面的控制台应用程序的代码,并将其作必要的改写,具体改写的步骤与内容如下。1.

19、编写读入数据按钮的消息处理函数,实现将队列的数据刷新到界面上,具体代码如下:void CMyDlg:OnInputNum() / TODO: Add your control notification handler code here UpdateData(true); dl_1 = 7; dl_2 = 11; dl_3 = 12; dl_4 = 15; dl_5 = 22; dl_6 = 29; dl_7 = 35; dl_8 = 42; UpdateData(false);2. 编写删除数据的消息处理函数,实现数据删除,具体代码如下:void CMyDlg:OnDeleteNum() /

20、 TODO: Add your control notification handler code here UpdateData(true); if (dl_1!=0) dl_1=0; else if (dl_2!=0) dl_2=0; else if (dl_3!=0) dl_3=0; else if (dl_4!=0) dl_4=0; else if (dl_5!=0) dl_5=0; else if (dl_6!=0) dl_6=0; UpdateData(false); 3. 编写插入数据的消息处理函数,实现数据插入,具体代码如下:void CMyDlg:OnInsertNum()

21、/ TODO: Add your control notification handler code hereUpdateData(true);if (dl_5=0) dl_5=cr_1; else if (dl_6=0) dl_6=cr_1; else if (dl_7=0) dl_7=cr_1; else if (dl_8=0) dl_8=cr_1; else if (dl_9=0) dl_9=cr_1; else if (dl_10=0) dl_10=cr_1; UpdateData(false);4. 编写清空数据的消息处理函数,实现数据清空,具体代码如下:void CMyDlg:On

22、EmptyNum() / TODO: Add your control notification handler code hereUpdateData(true); dl_1 = 0; dl_10 = 0; cr_1 = 0; dl_2 = 0; dl_3 = 0; dl_4 = 0; dl_5 = 0; dl_6 = 0; dl_7 = 0; dl_8 = 0; dl_9 = 0; UpdateData(false);5.1.3 基于MFC的应用程序测试运行程序后,首先出现的界面如图8所示。图8 程序初始运行界面单击读入数据按钮后,可将队列的数据在界面上显示出来,如图9所示。图9 读入数据

23、后的界面单击删除数据按钮,实现删除并将结果显示出来,如图10所示。图10 删除数据后的界面单击插入数据按钮,实现插入并将结果显示出来,如图11所示。图11 插入数据后的界面单击清空数据按钮,实现清空并将结果显示出来,如图12所示。图12 清空数据后的界面结 论本次程序围绕基类Queue展开。利用其成员函数进行了对队列的基本操作。基本满足了题目所给的要求。实现了对这个队列类的操作与处理。本次课程设计作为编写Windows程序的初步尝试,能够实现程序的主要功能,可以说是取得了成功,然而好的程序绝不仅仅是只有功能性这一个指标,本此编写的MFC程序虽然能实现所需功能,但从面向对象程序设计理念和图形界面

24、设计要求来说,尚存在不足,主要包括以下几个方面。1.在控制台的程序上。我们可以满足类模板的要求。即可以对int、char、float三种类型的数据进行处理。而在MFC中。我们只定义了int类型进行处理。而且程序的可变性不够强。2.在MFC的程序设计中。我们并未严格的使数据成为一个队列。只是象征性的表示了队首与队尾。所以程序的满足要求性也不够。3.对于MFC的应用程序。由于MFC是依赖图形而存在的。而我们所做的MFC的图形界面过于简单单一化了。而且处理的灵活性不够。对于这一点。希望在以后学习中得到适当的加强。 参考文献1 谭浩强. C+面向对象程序设计. 北京:清华大学出版社,2006.12 马秀丽,刘志妩,李筠. C语言程序设计. 北京:清华大学出版社,2008.33 严蔚敏,吴伟民. 数据结构(C语言版). 北京:清华大学出版社,2007

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1