您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 企业文档 > 华中科技大学计算机学院C++实验报告实验五
课程实验报告课程名称:面向对象程序设计实验名称:面向对象的整型队列编程院系:计算机科学与技术专业班级:CS1209班学号:姓名:指导教师:李春花2015年01月22日面向对象程序设计实验报告-1-一、需求分析1.题目要求整型队列是一种先进后出的存储结构,对其进行的操作通常包括判断队列是否为空、向队列顶添加一个整型元素、出队列等。整型队列类型及其操作函数采用面向对象的C++语言定义,请将完成上述操作的所有函数采用C++编程,然后写一个main函数对队列的所有操作函数进行测试。注意,请用实验三的SATCK组合形成新的类QUEQUE。请说明如果删掉virtual有什么不同。classQUEUE{STACKs1,s2;public:QUEUE(intm);//初始化队列:每个栈最多m个元素QUEUE(constQUEUE&s);//用队列s拷贝初始化队列virtualoperatorint()const;//返回队列的实际元素个数virtualQUEUE&operator(inte);//将e入队列,并返回队列virtualQUEUE&operator(int&e);//出队列到e,并返回队列virtualQUEUE&operator=(constQUEUE&s);//赋s给队列,并返回被赋值的队列virtualvoidprint()const;//打印队列virtual~QUEUE();//销毁队列};2.需求分析采用面向对象的C++语言定义,构建整型队列并对其进行的操作通常包括判断队列是否为空、向队列顶添加一个整型元素、出队列等,再写一个main函数对队列的所有操作函数进行测试。二、系统设计用两个栈实现队列,先判栈S2是否为空,如果为空,对S1进行入栈操作,如果不是空,栈S2数据元素倒入到S1,然后对S1进行入栈操作。出队列时。判断S2是否为空,如果非空S2中的元素出栈,若果为空,把S1的元素倒入到S2,对S2的元素进行出栈操作。三、软件开发使用CodeBlocks进行编写并调试。面向对象程序设计实验报告-2-四、软件测试1)总界面如图1所示:图12)进行入队列操作,如图2所示:图23)打印队列如图3所示:图34)进行出队列操作,如图4所示:图4面向对象程序设计实验报告-3-5)打印完后队列中实际元素个数如图5所示:图5五、源码和说明1.文件清单及其功能说明main.c是源程序文件1.h是头文件2.h是头文件55.exe是可执行文件2.用户使用说明书使用CodeBlocks进行编写和调试。3.源代码main.c:#include2.hintmain(){intm;intop;intx,e,e3,e4;cout请输入队列的最大容量m:\n;cinm;QUEUEque1(m);QUEUEque2(que1);cout初始化队列:最多m个元素完成\n用队列s拷贝初始化队列完成\n;面向对象程序设计实验报告-4-Sleep(3000);do{system(cls);menu();cout请输入序号:\n;cinop;switch(op){case1:x=que1;cout实际元素为:x\n;getchar();getchar();break;case2:cout将e入队列,并返回队列:;cine;que1e;getchar();getchar();break;case3:que1e3;cout出队列到e,并返回队列e3;getchar();getchar();break;case4:que2=que1;getchar();getchar();break;case5:cout请输入想打印的队列1or2\n;cine4;if(e4==1){que1.print();}面向对象程序设计实验报告-5-elseque2.print();getchar();getchar();break;case6:cout请输入想销毁的队列1or2;inte5;cine5;if(e5==1)que1.~QUEUE();elseque2.~QUEUE();getchar();getchar();break;default:cout输入有误请重新输入:;break;}}while(op);cout\t\t******谢谢使用!!!******\nendl;return0;}1.h:#includeiostream#includestdlib.h#includestdio.h#includewindows.husingnamespacestd;classSTACK{int*constelems;//申请内存用于存放栈的元素constintmax;//栈能存放的最大元素个数intpos;//栈实际已有元素个数,栈空时pos=0;public:STACK(intm);//初始化栈:最多m个元素STACK(constSTACK&s);//用栈s拷贝初始化栈virtualintsize()const//返回栈的最大元素个数max面向对象程序设计实验报告-6-{returnmax;//返回栈的最大元素个数max}virtualoperatorint()const//返回栈的实际元素个数pos{returnpos;//返回栈的实际元素个数pos}virtualintoperator[](intx)const//取下标x处的栈元素{returnelems[x];}virtualSTACK&operator(inte)//将e入栈,并返回栈{if(pos=max){cout队列已满!!;}else{*(elems+pos)=e;pos++;}return(*this);}virtualSTACK&operator(int&e)//出栈到e,并返回栈{if(pos==0){cout队列为空!!;}else{e=*(elems+pos-1);pos-=1;}return(*this);面向对象程序设计实验报告-7-}virtualSTACK&operator=(constSTACK&s)//赋s给栈,并返回被赋值的栈{pos=s.pos;return(*this);}virtualvoidprint()const//打印栈{cout最大量:\tmaxendl;cout当前的元素个数:\tposendl;cout里面的元素为:\t;for(inti=pos-1;i=0;i--){cout*(elems+i)\t;}}virtual~STACK()//销毁栈{delete[]elems;if(elems==0){cout销毁没成功!!endl;}elsecout销毁成功!!endl;}};STACK::STACK(intm=20):max(m),elems(newint[m]){pos=0;}STACK::STACK(constSTACK&s):max(s.max),elems(s.elems){pos=0;}2.h#include1.hclassQUEUE{STACKs1,s2;面向对象程序设计实验报告-8-public:QUEUE(intm);//初始化队列:每个栈最多m个元素QUEUE(constQUEUE&s);//用队列s拷贝初始化队列virtualoperatorint()const;//返回队列的实际元素个数virtualQUEUE&operator(inte);//将e入队列,并返回队列virtualQUEUE&operator(int&e);//出队列到e,并返回队列virtualQUEUE&operator=(constQUEUE&s);//赋s给队列,并返回被赋值的队列virtualvoidprint()const;//打印队列virtual~QUEUE();//销毁队列};QUEUE::QUEUE(intm):s1(m),s2(m){}QUEUE::operatorint()const{intx=s1;intx2=s2;return(x+x2);}QUEUE::QUEUE(constQUEUE&s):s1(s.s1),s2(s.s2){}QUEUE&QUEUE::operator(inte){intx2=s2;if(x2==0){s1e;return(*this);}else{intp;while(x2=1){s2p;s1p;x2=s2;}面向对象程序设计实验报告-9-s1e;return(*this);}}QUEUE&QUEUE::operator(int&e){intx=s1;intx2=s2;if(x2==0){intp;while(x=1){s1p;s2p;x=s1;}s2e;return(*this);}else{s2e;return(*this);}}QUEUE&QUEUE::operator=(constQUEUE&s){this-s1=s.s1;this-s2=s.s2;return(*this);}voidQUEUE::print()const{s1.print();s2.print();面向对象程序设计实验报告-10-}QUEUE::~QUEUE(){s1.~STACK();s2.~STACK();}voidmenu(void){cout\t***********************************************************************\n;cout\t1.返回队列的实际元素个数;cout\t\t2.将e入队列,并返回队列\n;cout\t3.出队列到e,并返回队列;cout\t\t\t4.赋s给队列,并返回被赋值的队列\n;cout\t5.打印队列;cout\t\t\t\t6.销毁队列\n;cout\t\t\t\t0.退出程序\n;cout\t************************************************************************\n;}
本文标题:华中科技大学计算机学院C++实验报告实验五
链接地址:https://www.777doc.com/doc-2590449 .html