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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

面向对象程序设计课程实验报告.docx

1、面向对象程序设计课程实验报告课程实验报告课程名称:面向对象程序设计院系:专业班级:学号:姓名:指导教师:实验一.面向过程的整型栈编程 11.需求分析 11.1题目要求 11.2需求分析 12.系统设计 22.1概要设计 22.2详细设计 34.软件测试 45.特点与不足 45.1技术特点 45.2不足和改进的建议 56.过程和体会 56.1遇到的主要问题和解决方法 56.2课程设计的体会 57.源码和说明 57.1文件清单及其功能说明 57.2用户使用说明书 57.3源代码 5实验二.面向对象的整型栈编程 121.需求分析 121.1题目要求 121.2需求分析 122.系统设计 132.1概

2、要设计 132.2详细设计 133.软件开发 144.软件测试 145.特点与不足 145.1技术特点 145.2不足和改进的建议 156.过程和体会 156.1遇到的主要问题和解决方法 156.2课程设计的体会 157.源码和说明 157.1文件清单及其功能说明 157.2用户使用说明书 157.3源代码 15实验三.基于算符重载的整型栈编程 191.需求分析 191.1题目要求 191.2需求分析 192.系统设计 202.1概要设计 202.2详细设计 203.软件开发 204.软件测试 205.特点与不足 215.1技术特点 215.2不足和改进的建议 216.过程和体会 216.1遇

3、到的主要问题和解决方法 216.2课程设计的体会 217.源码和说明 217.1文件清单及其功能说明 217.2用户使用说明书 217.3源代码 21实验四.面向对象的整型队列编程 251.需求分析 251.1题目要求 251.2需求分析 252.系统设计 263.软件开发 264.软件测试 265.特点与不足 265.1技术特点 265.2不足和改进的建议 266.过程和体会 266.1遇到的主要问题和解决方法 266.2课程设计的体会 277.源码和说明 277.1文件清单及其功能说明 277.2用户使用说明书 277.3源代码 27实验五.基于组合的整型队列编程 311.需求分析 311

4、.1题目要求 311.2需求分析 312.系统设计 313.软件开发 324.软件测试 325.特点与不足 325.1技术特点 325.2不足和改进的建议 326.过程和体会 326.1遇到的主要问题和解决方法 326.2课程设计的体会 327.源码和说明 337.1文件清单及其功能说明 337.2用户使用说明书 337.3源代码 33实验六.基于继承的整型队列编程 371.需求分析 371.1题目要求 371.2需求分析 382.系统设计 383.软件开发 384.软件测试 385.特点与不足 385.1技术特点 385.2不足和改进的建议 386.过程和体会 396.1遇到的主要问题和解决

5、方法 396.2课程设计的体会 397.源码和说明 397.1文件清单及其功能说明 397.2用户使用说明书 397.3源代码 39实验一.面向过程的整型栈编程1.需求分析1.1题目要求整型栈是一种先进后出的存储结构,对其进行的操作通常包括判断栈是否为空、向栈顶添加一个整型元素、出栈等。整型栈类型及其操作函数采用非面向对象的纯C语言定义,请将完成上述操作的所有函数采用面向过程的方法编程,然后写一个main函数对栈的所有操作函数进行测试。structSTACKint*elems; /申请内存用于存放栈的元素intmax; /栈能存放的最大元素个数intpos; /栈实际已有元素个数,栈空时pos

6、=0;voidinitSTACK(STACK*constp,intm);/初始化p指空栈:可存m个元素voidinitSTACK(STACK*constp,constSTACK&s);/用s初始化p指空栈intsize(constSTACK*constp); /返回p指的栈的最大元素个数maxinthowMany(constSTACK*constp); /返回p指的栈的实际元素个数posintgetelem(constSTACK*constp,intx); /取下标x处的栈元素STACK*constpush(STACK*constp,inte); /将e入栈,并返回pSTACK*constpo

7、p(STACK*constp,int&e); /出栈到e,并返回pSTACK*constassign(STACK*constp,constSTACK&s);/赋给p指栈,返回pvoidprint(constSTACK*constp); /打印p指向的栈元素voiddestroySTACK(STACK*constp); /销毁p指向的栈,释放1.2需求分析本实验需要实现栈的功能的操作,如元素的进栈,连续进栈,出栈和连续出栈,所以需要设计两个栈,在完成初始化后直接在程序里给定栈内元素。2.系统设计2.1概要设计函数结构图见图1.1图1.1总体流程图见图1.2图1.22.2详细设计voidinitS

8、TACK(STACK*constp,intm)入口参数:intm出口参数:无功能:初始化栈,可存m个元素voidinitSTACK(STACK*constp,constSTACK&s)入口参数:constSTACK&s出口参数:无功能:用s初始化p指空栈intsize(constSTACK*constp)入口参数:无出口参数:intmax功能:返回p指的栈的最大元素个数maxinthowMany(constSTACK*constp)入口参数:无出口参数:intpos功能:返回p指的栈的实际元素个数posintgetelem(constSTACK*constp,intx)入口参数:intx出口参

9、数:elemm功能:取下标x处的栈元素STACK*constpush(STACK*constp,inte)入口参数:inte出口参数:(*this)功能:将e入栈,并返回pSTACK*constpop(STACK*constp,int&e)入口参数:int&e出口参数:(*this)功能:出栈到e,并返回pSTACK*constassign(STACK*constp,constSTACK&s)入口参数:STACK&s出口参数:(*this)功能:赋s给p指栈,返回pvoidprint(constSTACK*constp)入口参数:无出口参数:无功能:打印p指向的栈元素voiddestroyST

10、ACK(STACK*constp)入口参数:出口参数:功能:销毁p指向的栈,释放3.软件开发在Codeblocks编译环境下,使用C+语言编写。4.软件测试测试结果见图1.3图1.35.特点与不足5.1技术特点完成了实验的所有要求,没有错误的地方。5.2不足和改进的建议没有做人机交互界面,无法自由选择入栈的数据;同时注释较少,对于程序不了解的人可能需要花费更多时间去了解。6.过程和体会6.1遇到的主要问题和解决方法输出结果数字与预计不同,检查后发现原因是变量初始值未设置。6.2课程设计的体会本次实验主要还是通过回顾C语言中栈的知识完成在C+上的编程,所以总体过程没有出现太大的问题;同时也对co

11、nst变量有了进一步的认识。7.源码和说明7.1文件清单及其功能说明experiment1.cpp源码experiment1.exe可执行文件。7.2用户使用说明书experiment1.cpp是程序的源码,可通过修改其中main函数中的变量来测试各个函数。7.3源代码#include#include#includestructSTACKint*elems; /申请内存用于存放栈的元素intmax; /栈能存放的最大元素个数intpos; /栈实际已有元素个数,栈空时pos=0;voidinitSTACK(STACK*constp,intm); /初始化p指向的栈:最多m个元素voidinit

12、STACK(STACK*constp,constSTACK&s);/用栈s初始化p指向的栈intsize(constSTACK*constp); /返回p指向的栈的最大元素个数maxinthowMany(constSTACK*constp); /返回p指向的栈的实际元素个数posintgetelem(constSTACK*constp,intx); /取下标x处的栈元素STACK*constpush(STACK*constp,inte); /将e入栈,并返回pSTACK*constpop(STACK*constp,int&e); /出栈到e,并返回pSTACK*constassign(STAC

13、K*constp,constSTACK&s);/赋s给p指的栈,并返回pvoidprint(constSTACK*constp); /打印p指向的栈voiddestroySTACK(STACK*constp); /销毁p指向的栈intmain(intargc,char*argv)STACK*s1=(STACK*)malloc(sizeof(STACK);STACK*s2=(STACK*)malloc(sizeof(STACK);initSTACK(s1,10);push(s1,1);push(s1,2);push(push(s1,3),4);initSTACK(s2,*s1);print(s2

14、);printf(栈s1:n);print(s1);/assign(s2,*s1);printf(栈s2:n);print(s2);inta,b,c;a=size(s1);printf(栈的最大元素个数是%dn,a);b=howMany(s1);printf(栈的实际元素个数是%dn,b);c=getelem(s1,3);printf(3处栈元素是是%dn,c);intx,y,z;pop(s2,x);pop(pop(s2,y),z);printf(x=%d,y=%d,z=%dn,x,y,z);destroySTACK(s2);destroySTACK(s1);getchar();return0

15、;voidinitSTACK(STACK*constp,intm) /初始化p指向的栈:最多m个元素p-elems=(int*)malloc(m*sizeof(int*);if(!p-elems)return;p-pos=0;p-max=m;inti;for(i=0;imax);i+)p-elemsi=0;voidinitSTACK(STACK*constp,constSTACK&s)/用栈s初始化p指向的栈p-elems=(int*)malloc(s.max)*sizeof(int);p-pos=s.pos;p-max=s.max;inti;for(i=0;ielemsi=s.elemsi;

16、printf(%dn,p-elemsi);intsize(constSTACK*constp) /返回p指向的栈的最大元素个数maxreturnp-max;inthowMany(constSTACK*constp) /返回p指向的栈的实际元素个数posreturnp-pos;intgetelem(constSTACK*constp,intx) /取下标x处的栈元素if(p=NULL)returnNULL;elseif(x(p-pos)printf(不存在元素n);elsereturnp-elemsx;STACK*constpush(STACK*constp,inte) /将e入栈,并返回pif

17、(p=NULL)returnNULL;elseif(p-pos)max)p-elemsp-pos=e;p-pos+;returnp;elseprintf(栈满n);STACK*constpop(STACK*constp,int&e) /出栈到e,并返回pif(p=NULL)returnNULL;elseif(p-pos)=0)printf(栈为空n);elsee=p-elems(p-pos)-1;(p-pos)-;returnp;STACK*constassign(STACK*constp,constSTACK&s)/赋s给p指的栈,并返回pif(p=NULL|&s=NULL)returnNU

18、LL;elsefree(p-elems);/free(p);/STACK*p=(STACK*)malloc(sizeof(STACK);initSTACK(p,s);returnp;voidprint(constSTACK*constp) /打印p指向的栈inti;if(p=NULL)return;elseif(p-pos=0)printf(栈为空n);elsefor(i=0;ipos);i+)printf(%d,p-elemsi);printf(n);voiddestroySTACK(STACK*constp) /销毁p指向的栈free(p-elems);free(p);printf(栈已销

19、毁n);实验二.面向对象的整型栈编程1.需求分析1.1题目要求整型栈是一种先进后出的存储结构,对其进行的操作通常包括判断栈是否为空、向栈顶添加一个整型元素、出栈等。整型栈类型及其操作函数采用面向对象的C+语言定义,请将完成上述操作的所有函数采用C+编程,然后写一个main函数对栈的所有操作函数进行测试。classSTACKint*constelems; /申请内存用于存放栈的元素constintmax; /栈能存放的最大元素个数intpos; /栈实际已有元素个数,栈空时pos=0;public:STACK(intm); /初始化栈:最多m个元素STACK(constSTACK&s);/用栈s

20、拷贝初始化栈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(); /销毁栈;1.2需求分析采用面向对象的C+语言定义整型栈,对其进行的操作通常包括判断栈是否为空、向栈顶添加一个整型元素、出栈等。2.系统设计

21、2.1概要设计首先需要定义一个类来实现栈,然后依次实现栈的各个功能,在主函数中给定一个栈然后,然后通过函数调用实现栈的功能。2.2详细设计STACK(intm)功能:初始化栈:最多m个元素返回值:无STACK(constSTACK&s)功能:用栈s拷贝初始化栈返回值:无intsize()const功能:返回栈的最大元素个数max返回值:最大元素个数maxinthowMany()const功能:返回栈的实际元素个数pos返回值:元素数目posintgetelem(intx)const功能:取下标x处的栈元素返回值:下标为x的元素STACK&push(inte)功能:将e入栈返回值:栈的引用STA

22、CK&pop(int&e)功能:出栈到e,并返回栈返回值:栈的引用STACK&assign(constSTACK&s)功能:使用栈s给栈p赋值返回值:栈的引用voidprint()const功能:打印栈返回值:无STACK()功能:销毁栈返回值:无3.软件开发在Codeblocks编译环境下,使用C+语言编写。4.软件测试测试结果见图2.1图2.15.特点与不足5.1技术特点完成了初定目标,无其他特点。5.2不足和改进的建议人机交互需要进一步完善。6.过程和体会6.1遇到的主要问题和解决方法由于第一次使用c+面向对象编写程序,开始不明白对象的生成及使用。在和同学老师的沟通和交流中,慢慢学会了编

23、程的方法。6.2课程设计的体会C+语言与C语言有很多相通的地方,所以其中的某些原理和方法可以互相借鉴,这样就减少了在理解上的难度。7.源码和说明7.1文件清单及其功能说明experiment2.cpp源码experiment2.exe可执行文件。7.2用户使用说明书experiment2.cpp是程序的源码,可通过修改其中main函数中的变量来测试各个函数。7.3源代码#include#includeusingnamespacestd;classSTACKint*constelems; /申请内存用于存放栈的元素constintmax; /栈能存放的最大元素个数intpos; /栈实际已有元素

24、个数,栈空时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(); /销

25、毁栈;STACK:STACK(intm):elems(newintm),max(m),pos(0)STACK:STACK(constSTACK&s):elems(newints.size(),max(s.size(),pos(s.howMany()for(inti=0;ipos;i+)elemsi=s.getelem(i);cout复制构造成功endl;intSTACK:size()constreturnmax;intSTACK:howMany()constreturnpos;intSTACK:getelem(intx)constreturnelemsx;STACK&STACK:push(in

26、te)if(posmax)elemspos=e;pos+;elsecoutfulln;return*this;STACK&STACK:pop(int&e)if(pos=0)coutemptystack;return*this;pos-;e=elemspos;cout出栈成功;return*this;STACK&STACK:assign(constSTACK&s)inti;deleteelems;/elems=newints.size();/max=s.size();pos=s.howMany();for(i=0;is.howMany();i+)elemsi=s.getelem(i);retur

27、n*this;voidSTACK:print()constinti;cout栈的元素为:;for(i=0;ipos;i+)coutelemsi;coutendl;STACK:STACK()deleteelems;/elems=0;/max=0;pos=0;cout析构完成;intmain()STACKs(7);s.push(5);s.push(7);s.push(9);s.push(11);s.print();inti;s.pop(i);cout出栈元素iendl;STACKp(s);cout容量p.size()endl;cout当前元素数目p.howMany();实验三.基于算符重载的整型栈编程1.需求分析1.1题目要求整型栈是一种先进后出的存储结构,对其进行的操作通常包括判断栈是否为空、向栈顶添加一个整型元素、出栈等。整型栈类型及其操作函数采用面向对象的C+语言定义,请将完成上述操作的所有函数采用C+编程,然后写一个main函数对栈的所有操作函数进行测试。classSTACKint*constelems; /申请内存用于存放栈的元素constintmax; /栈能存放的最大元素个数intpos; /栈实际已有元素个数,栈空时pos=0;public:STACK(intm); /初始化栈:最多m个元素STACK(constSTACK&s); /用栈

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

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