您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 企业文档 > 华中科技大学计算机学院C++实验报告 实验六
课程实验报告课程名称:面向对象程序设计实验六院系:计算机科学与技术专业班级:CS1209班学号:姓名:指导教师:李春花2015年01月22日面向对象程序设计实验报告-1-一、需求分析1.题目要求整型队列是一种先进后出的存储结构,对其进行的操作通常包括判断队列是否为空、向队列顶添加一个整型元素、出队列等。整型队列类型及其操作函数采用面向对象的C++语言定义,请将完成上述操作的所有函数采用C++编程,然后写一个main函数对队列的所有操作函数进行测试。注意,请用实验三的SATCK继承形成新的类QUEQUE。分析说明除构造函数以外的函数,加virtual说明与不加virtual说明有无区别。并说明为什么不将s2也作为基类。classQUEUE:publicSTACK{STACKs2;public:QUEUE(intm);//初始化队列:每个栈最多m个元素QUEUE(constQUEUE&s);//用队列s拷贝初始化队列operatorint()const;//返回队列的实际元素个数QUEUE&operator(inte);//将e入队列,并返回队列QUEUE&operator(int&e);//出队列到e,并返回队列QUEUE&operator=(constQUEUE&s);//赋s给队列,并返回被赋值的队列voidprint()const;//打印队列~QUEUE();//销毁队列};2.需求分析有两个栈实现两个队列,其中一个栈用直接QUEUE类的成员,另一个栈用继承得到的。二、系统设计用两个栈实现队列,先判栈S2是否为空,如果为空,对S1进行入栈操作,如果不是空,栈S2数据元素倒入到S1,然后对S1进行入栈操作。出队列时。判断S2是否为空,如果非空S2中的元素出栈,若果为空,把S1的元素倒入到S2,对S2的元素进行出栈操作。三、软件开发使用CodeBlocks进行编写和调试。四、软件测试面向对象程序设计实验报告-2-1)总界面如图1所示:图12)进行入队列操作,如图2所示:图23)进行打印栈操作,如图3所示:图34)查看队列中的元素个数如图4所示:图4面向对象程序设计实验报告-3-5)进行出队列操作,如图5所示:图56)销毁队列,如图6所示:图6五、特点与不足1.技术特点学会使用派生类操作基类成员函数。2.不足和改进的建议无六、过程和体会课程设计的体会通过本次的实验让我对C++中派生类问题有了更进一步的了解。刚开始进行编写时,对一些知识有点模糊,但经过老师和同学们的帮助下还是顺利的完成了。七、源码和说明1.文件清单及其功能说明main.c是源程序文件2.用户使用说明书使用CodeBlocks进行编译和调试。3.源代码面向对象程序设计实验报告-4-main.c:#include2.hintmain(){intm;intop;intx,e,e3,e4;cout请输入栈的最大容量m:\n;cinm;QUEUEque1(m);QUEUEque2(que1);cout初始化栈:最多m个元素完成,用栈s拷贝初始化栈完成!\n;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();面向对象程序设计实验报告-5-break;case4:que2=que1;getchar();getchar();break;case5:cout请输入想打印的栈1or2:\n;cine4;if(e4==1){que1.print();}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面向对象程序设计实验报告-6-#includestdlib.h#includestdio.h#includewindows.husingnamespacestd;classSTACK{int*constelems;//申请内存用于存放栈的元素constintmax;//栈能存放的最大元素个数intpos;//栈实际已有元素个数,栈空时pos=0;public:STACK(intm);//初始化栈:最多m个元素STACK(constSTACK&s);//用栈s拷贝初始化栈virtualintsize()const//返回栈的最大元素个数max{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);}面向对象程序设计实验报告-7-virtualSTACK&operator(int&e)//出栈到e,并返回栈{if(pos==0){cout栈为空!!;}else{e=*(elems+pos-1);pos-=1;}return(*this);}virtualSTACK&operator=(constSTACK&s)//赋s给栈,并返回被赋值的栈{pos=s.pos;return(*this);}virtualvoidprint()const//打印栈{cout最大量:maxendl;cout当前的元素个数:posendl;cout里面的元素为:;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])面向对象程序设计实验报告-8-{pos=0;}STACK::STACK(constSTACK&s):max(s.max),elems(s.elems){pos=0;}2.h:#include1.hclassQUEUE:publicSTACK{STACKs2;public:QUEUE(intm);//初始化队列:每个栈最多m个元素QUEUE(constQUEUE&s);//用队列s拷贝初始化队列operatorint()const;//返回队列的实际元素个数QUEUE&operator(inte);//将e入队列,并返回队列QUEUE&operator(int&e);//出队列到e,并返回队列QUEUE&operator=(constQUEUE&s);//赋s给队列,并返回被赋值的队列voidprint()const;//打印队列~QUEUE();//销毁队列};QUEUE::QUEUE(intm):s2(m),STACK(m){}QUEUE::QUEUE(constQUEUE&s):s2(s.s2){}QUEUE::operatorint()const{intx=s2;return(STACK::operatorint()+x);}QUEUE&QUEUE::operator(inte){intx2=s2;if(x2==0)面向对象程序设计实验报告-9-{STACK::operator(e);return(*this);}else{intp;while(x2=1){s2p;STACK::operator(p);x2=s2;}STACK::operator(e);return(*this);}}QUEUE&QUEUE::operator(int&e){intx;x=STACK::operatorint();intx2=s2;if(x2==0){intp;while(x=1){STACK::operator(p);s2p;x=STACK::operatorint();面向对象程序设计实验报告-10-}s2e;return(*this);}else{s2e;return(*this);}}QUEUE&QUEUE::operator=(constQUEUE&s){this-s2=s.s2;return(*this);}voidQUEUE::print()const{STACK::print();s2.print();}QUEUE::~QUEUE(){//STACK::~STACK();s2.~STACK();}voidmenu(void){cout\t*********************************************************************\n;cout\t1.返回队列的实际元素个数;cout\t\t2.将e入队列,并返回队列\n;面向对象程序设计实验报告-11-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-4506565 .html