华中科技大学计算机学院C++实验报告实验二

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

课程实验报告课程名称:面向对象程序设计实验名称:面向对象的整型栈编程院系:计算机科学与技术专业班级:CS1209班学号:姓名:指导教师:李春花2014年1月22日面向对象程序设计实验报告-1-一、需求分析1.题目要求整型栈是一种先进后出的存储结构,对其进行的操作通常包括判断栈是否为空、向栈顶添加一个整型元素、出栈等。整型栈类型及其操作函数采用面向对象的C++语言定义,请将完成上述操作的所有函数采用C++编程,然后写一个main函数对栈的所有操作函数进行测试。classSTACK{int*constelems;//申请内存用于存放栈的元素constintmax;//栈能存放的最大元素个数intpos;//栈实际已有元素个数,栈空时pos=0;public:STACK(intm);//初始化栈:最多m个元素STACK(constSTACK&s);//用栈s拷贝初始化栈intsize()const;//返回栈的最大元素个数maxinthowMany()const;//返回栈的实际元素个数posintgetelem(intx)const;//取下标x处的栈元素STACK&push(inte);//将e入栈,并返回栈STACK&pop(int&e);//出栈到e,并返回栈STACK&assign(constSTACK&s);//赋s给栈,并返回被赋值的栈voidprint()const;//打印栈~STACK();//销毁栈};2.需求分析采用面向对象的C++语言定义整型栈,对其进行的操作通常包括判断栈是否为空、向栈顶添加一个整型元素、出栈等。二、系统设计概要设计介绍设计思路、原理。将一个复杂系统按功能进行模块划分、建立模块的层次结构及调用关系、确定模块间的接口及人机界面等。三、软件开发该实验代码我用CodeBlocks进行编写并调试。四、软件测试面向对象程序设计实验报告-2-1)总体界面如图1所示:图12)进行入栈操作,如图2所示:图23)进行打印栈操作,如图3所示:图34)进行出栈操作,如图4所示:图4面向对象程序设计实验报告-3-5)用下标去元素,如图5所示:图56)栈中实际元素的个数如图6所示:图6五、源码和说明1.文件清单及其功能说明main.c是源程序2.exe是可执行文件2.用户使用说明书使用CodeBlocks进行编译,或者直接打开可执行文件。3.源代码#includeiostream#includestdlib.h#includestdio.h#includewindows.husingnamespacestd;classSTACK{int*elems;//申请内存用于存放栈的元素intmax;//栈能存放的最大元素个数intpos;//栈实际已有元素个数,栈空时pos=0;public:面向对象程序设计实验报告-4-STACK(intm);//初始化栈:最多m个元素STACK(constSTACK&s);//用栈s拷贝初始化栈intsize()const;//返回栈的最大元素个数maxinthowMany()const;//返回栈的实际元素个数posintgetelem(intx)const;//取下标x处的栈元素STACK&push(inte);//将e入栈,并返回栈STACK&pop(int&e);//出栈到e,并返回栈STACK&assign(constSTACK&s);//赋s给栈,并返回被赋值的栈voidprint()const;//打印栈~STACK();//销毁栈};STACK::STACK(intm):max(m),elems(newint[m]){pos=0;}STACK::STACK(constSTACK&s):max(s.max),elems(s.elems){pos=0;}intSTACK::size()const{returnmax;}intSTACK::getelem(intx)const{if(pos==0){cout栈为空!!\n;}else{if(xpos){cout当前的元素不存在:\n;}面向对象程序设计实验报告-5-elsereturnelems[x];}}intSTACK::howMany()const{returnpos;}STACK&STACK::push(inte){if(pos=max)cout空间不够!!\n;else{*(elems+pos)=e;pos++;cout*(elems+pos-1);}return(*this);}STACK&STACK::pop(int&e){if(pos==0){cout栈为空!!!;}elsee=*(elems+pos-1);pos-=1;return(*this);}STACK&STACK::assign(constSTACK&s){pos=s.pos;return(*this);面向对象程序设计实验报告-6-}voidSTACK::print()const{cout最大量:maxendl;cout当前的元素个数:posendl;cout里面的元素为:;for(inti=pos-1;i=0;i--){cout*(elems+i)\t;}}STACK::~STACK(){delete[]elems;pos=0;max=0;}voidmenu(void){cout\t********************************************************************\n;cout\t1.返回栈的最大元素个数max;cout\t\t2.返回栈的实际元素个数pos\n;cout\t3.取下标x处的栈元素;cout\t\t\t4.将e入栈,并返回栈\n;cout\t5.出栈到e,并返回栈;cout\t\t\t6.赋s给栈,并返回被赋值的栈\n;cout\t7.打印栈;cout\t\t\t\t8.销毁栈\n;cout\t\t\t0.退出程序\n;cout\t********************************************************************\n;}intmain(){intm;intx1;intop;面向对象程序设计实验报告-7-intt,x,x2,e,e3,e4;cout请输入栈的最大容量m:\n;cinm;STACKst1(m);STACKst2(st1);cout初始化栈:最多m个元素完成\n用栈s拷贝初始化栈完成\n;Sleep(3000);do{system(cls);menu();cout请输入序号:\n;cinop;switch(op){case1:t=st1.size();cout当前栈的大小为:t;getchar();getchar();break;case2:x=st1.howMany();cout实际元素为:x\n;getchar();getchar();break;case3:cout请输入想得到的元素的下标:\n;cinx1;x2=st1.getelem(x1);cout下表为x1的元素:x2;getchar();getchar();break;case4:cout请输入想压栈的元素:;cine;st1=st1.push(e);面向对象程序设计实验报告-8-getchar();getchar();break;case5:st1=st1.pop(e3);cout出栈元素为e3;getchar();getchar();break;case6:st2=st2.assign(st1);getchar();getchar();break;case7:cout请输入想打印的栈1or2\n;cine4;if(e4==1){st1.print();}elsest2.print();getchar();getchar();break;case8:cout请输入想销毁的栈1or2;inte5;cine5;if(e5==1)st1.~STACK();elsest2.~STACK();getchar();getchar();break;default:cout输入有误请重新输入:;break;}面向对象程序设计实验报告-9-}while(op);cout\t\t******谢谢使用!!!******\nendl;return0;}

1 / 10
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功