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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

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

1、面向对象程序设计课程实验报告材料课 程 实 验 报 告课程名称:面向对象程序设计院 系 : 专业班级 : 学 号 : 姓 名 : 指导教师 : 实验一.面向过程的整型栈编程1.需求分析1.1题目要求整型栈是一种先进后出的存储结构,对其进行的操作通常包括判断栈是否为空、向栈顶添加一个整型元素、出栈等。整型栈类型及其操作函数采用非面向对象的纯C语言定义,请将完成上述操作的所有函数采用面向过程的方法编程, 然后写一个main函数对栈的所有操作函数进行测试。struct STACK int *elems; /申请内存用于存放栈的元素 int max; /栈能存放的最大元素个数 int pos; /栈实

2、际已有元素个数,栈空时pos=0;void initSTACK(STACK *const p, int m);/初始化p指空栈:可存m个元素void initSTACK(STACK *const p, const STACK&s); /用s初始化p指空栈int size (const STACK *const p); /返回p指的栈的最大元素个数maxint howMany (const STACK *const p); /返回p指的栈的实际元素个数posint getelem (const STACK *const p, int x); /取下标x处的栈元素STACK *const push

3、(STACK *const p, int e); /将e入栈,并返回pSTACK *const pop(STACK *const p, int &e); /出栈到e,并返回pSTACK *const assign(STACK*const p, const STACK&s);/赋给p指栈,返回pvoid print(const STACK*const p); /打印p指向的栈元素void destroySTACK(STACK*const p); /销毁p指向的栈,释放1.2需求分析本实验需要实现栈的功能的操作,如元素的进栈,连续进栈,出栈和连续出栈,所以需要设计两个栈,在完成初始化后直接在程序里

4、给定栈内元素。2.系统设计2.1概要设计函数结构图见图1.1图1.1总体流程图见图1.2图1.22.2详细设计void initSTACK(STACK *const p, int m)入口参数:int m出口参数:无功能:初始化栈,可存m个元素void initSTACK(STACK *const p, const STACK&s)入口参数:const STACK&s出口参数:无功能:用s初始化p指空栈int size (const STACK *const p) 入口参数:无出口参数:int max功能:返回p指的栈的最大元素个数maxint howMany (const STACK *co

5、nst p) 入口参数:无出口参数:int pos功能:返回p指的栈的实际元素个数posint getelem (const STACK *const p, int x) 入口参数:int x出口参数:elemm功能:取下标x处的栈元素STACK *const push(STACK *const p, int e) 入口参数:int e出口参数:(*this)功能:将e入栈,并返回pSTACK *const pop(STACK *const p, int &e) 入口参数:int &e出口参数:(*this)功能:出栈到e,并返回pSTACK *const assign(STACK*const

6、 p, const STACK&s) 入口参数:STACK&s出口参数:(*this)功能:赋s给p指栈,返回pvoid print(const STACK*const p) 入口参数:无出口参数:无功能:打印p指向的栈元素void destroySTACK(STACK*const p) 入口参数:出口参数:功能:销毁p指向的栈,释放3.软件开发在Codeblocks编译环境下,使用C+语言编写。4.软件测试测试结果见图1.3图1.35.特点与不足5.1技术特点完成了实验的所有要求,没有错误的地方。5.2不足和改进的建议没有做人机交互界面,无法自由选择入栈的数据;同时注释较少,对于程序不了解的

7、人可能需要花费更多时间去了解。6.过程和体会6.1遇到的主要问题和解决方法输出结果数字与预计不同,检查后发现原因是变量初始值未设置。6.2课程设计的体会本次实验主要还是通过回顾C语言中栈的知识完成在C+上的编程,所以总体过程没有出现太大的问题;同时也对const变量有了进一步的认识。7.源码和说明7.1文件清单及其功能说明experiment1.cpp源码experiment1.exe可执行文件。7.2用户使用说明书experiment1.cpp是程序的源码,可通过修改其中main函数中的变量来测试各个函数。7.3源代码#include#include#includestruct STACK

8、int *elems; /申请内存用于存放栈的元素 int max; /栈能存放的最大元素个数 int pos; /栈实际已有元素个数,栈空时pos=0;void initSTACK(STACK *const p, int m); /初始化p指向的栈:最多m个元素void initSTACK(STACK *const p, const STACK&s); /用栈s初始化p指向的栈int size (const STACK *const p); /返回p指向的栈的最大元素个数maxint howMany (const STACK *const p); /返回p指向的栈的实际元素个数posint

9、getelem (const STACK *const p, int x); /取下标x处的栈元素STACK *const push(STACK *const p, int e); /将e入栈,并返回pSTACK *const pop(STACK *const p, int &e); /出栈到e,并返回pSTACK *const assign(STACK*const p, const STACK&s); /赋s给p指的栈,并返回pvoid print(const STACK*const p); /打印p指向的栈void destroySTACK(STACK*const p); /销毁p指向的栈

10、int main(int argc, 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); printf(栈s1:n); print(s1); /assign(s2,*s1); printf(栈s2:n); print(s2); int a,b,c; a = size(s1

11、); printf(栈的最大元素个数是 %dn,a); b = howMany(s1); printf(栈的实际元素个数是 %dn,b); c = getelem(s1,3); printf(3处栈元素是是%dn,c); int x,y,z; pop(s2,x); pop(pop(s2,y),z); printf(x= %d, y= %d, z= %d n,x,y,z); destroySTACK(s2); destroySTACK(s1); getchar(); return 0;void initSTACK(STACK *const p, int m) /初始化p指向的栈:最多m个元素 p

12、-elems = (int*)malloc(m*sizeof(int*); if(!p-elems) return; p-pos = 0; p-max = m; int i; for(i=0;imax);i+) p-elemsi = 0;void initSTACK(STACK *const p, const STACK&s) /用栈s初始化p指向的栈 p-elems = (int*)malloc(s.max)*sizeof(int); p-pos = s.pos; p-max = s.max; int i; for(i=0;ielemsi=s.elemsi; printf(%dn,p-ele

13、msi); int size (const STACK *const p) /返回p指向的栈的最大元素个数max return p-max;int howMany (const STACK *const p) /返回p指向的栈的实际元素个数pos return p-pos;int getelem (const STACK *const p, int x) /取下标x处的栈元素 if(p=NULL) return NULL; else if(x(p-pos) printf(不存在元素n); else return p-elemsx; STACK *const push(STACK *const

14、p, int e) /将e入栈,并返回p if(p=NULL) return NULL; else if(p-pos)max) p-elemsp-pos=e; p-pos+; return p; else printf(栈满n); STACK *const pop(STACK *const p, int &e) /出栈到e,并返回p if(p=NULL) return NULL; else if(p-pos)=0) printf(栈为空n); else e=p-elems(p-pos)-1; (p-pos)-; return p; STACK *const assign(STACK*const

15、 p, const STACK&s) /赋s给p指的栈,并返回p if(p=NULL | &s=NULL) return NULL; else free(p-elems); /free(p); /STACK *p = (STACK *)malloc(sizeof(STACK); initSTACK(p,s); return p; void print(const STACK*const p) /打印p指向的栈 int i; if(p = NULL) return; else if(p-pos = 0) printf(栈为空n); else for(i=0;ipos);i+) printf(%d

16、 ,p-elemsi); printf(n); void destroySTACK(STACK*const p) /销毁p指向的栈 free(p-elems); free(p); printf(栈已销毁n);实验二.面向对象的整型栈编程1.需求分析1.1题目要求整型栈是一种先进后出的存储结构,对其进行的操作通常包括判断栈是否为空、向栈顶添加一个整型元素、出栈等。整型栈类型及其操作函数采用面向对象的C+语言定义,请将完成上述操作的所有函数采用C+编程, 然后写一个main函数对栈的所有操作函数进行测试。class STACK int *const elems; /申请内存用于存放栈的元素 con

17、st int max; /栈能存放的最大元素个数 int pos; /栈实际已有元素个数,栈空时pos=0;public:STACK(int m); /初始化栈:最多m个元素STACK(const STACK&s); /用栈s拷贝初始化栈int size ( ) const; /返回栈的最大元素个数maxint howMany ( ) const; /返回栈的实际元素个数posint getelem (int x) const; /取下标x处的栈元素STACK& push(int e); /将e入栈,并返回栈STACK& pop(int &e); /出栈到e,并返回栈STACK& assign

18、(const STACK&s); /赋s给栈,并返回被赋值的栈void print( ) const; /打印栈STACK( ); /销毁栈;1.2需求分析采用面向对象的C+语言定义整型栈,对其进行的操作通常包括判断栈是否为空、向栈顶添加一个整型元素、出栈等。2.系统设计2.1概要设计首先需要定义一个类来实现栈,然后依次实现栈的各个功能,在主函数中给定一个栈然后,然后通过函数调用实现栈的功能。2.2详细设计STACK(int m) 功能:初始化栈:最多m个元素返回值:无STACK(const STACK&s) 功能:用栈s拷贝初始化栈返回值:无int size ( ) const功能:返回栈的

19、最大元素个数max返回值:最大元素个数maxint howMany ( ) const功能:返回栈的实际元素个数pos返回值:元素数目posint getelem (int x) const 功能:取下标x处的栈元素返回值:下标为x的元素STACK& push(int e)功能:将e入栈返回值:栈的引用STACK& pop(int &e)功能:出栈到e,并返回栈返回值:栈的引用STACK& assign(const STACK&s) 功能:使用栈s给栈p赋值返回值:栈的引用void print( ) const功能:打印栈返回值:无STACK( ) 功能:销毁栈返回值:无3.软件开发在Code

20、blocks编译环境下,使用C+语言编写。4.软件测试测试结果见图2.1图2.15.特点与不足5.1技术特点完成了初定目标,无其他特点。5.2不足和改进的建议人机交互需要进一步完善。6.过程和体会6.1遇到的主要问题和解决方法由于第一次使用c+面向对象编写程序,开始不明白对象的生成及使用。在和同学老师的沟通和交流中,慢慢学会了编程的方法。6.2课程设计的体会C+语言与C语言有很多相通的地方,所以其中的某些原理和方法可以互相借鉴,这样就减少了在理解上的难度。7.源码和说明7.1文件清单及其功能说明experiment2.cpp源码experiment2.exe可执行文件。7.2用户使用说明书ex

21、periment2.cpp是程序的源码,可通过修改其中main函数中的变量来测试各个函数。7.3源代码#include #include using namespace std;class STACK int *const elems; /申请内存用于存放栈的元素 const int max; /栈能存放的最大元素个数 int pos; /栈实际已有元素个数,栈空时pos=0;public:STACK(int m); /初始化栈:最多m个元素STACK(const STACK&s); /用栈s拷贝初始化栈int size ( ) const; /返回栈的最大元素个数maxint howMany

22、 ( ) const; /返回栈的实际元素个数posint getelem (int x) const; /取下标x处的栈元素STACK& push(int e); /将e入栈,并返回栈STACK& pop(int &e); /出栈到e,并返回栈STACK& assign(const STACK&s); /赋s给栈,并返回被赋值的栈void print( ) const; /打印栈STACK( ); /销毁栈;STACK:STACK(int m):elems(new intm),max(m),pos(0)STACK:STACK(const STACK&s):elems(new ints.siz

23、e(),max(s.size(),pos(s.howMany() for(int i=0;ipos;i+) elemsi=s.getelem(i); cout复制构造成功endl;int STACK:size() const return max;int STACK:howMany() const return pos;int STACK:getelem (int x) const return elemsx;STACK& STACK:push(int e) if(posmax) elemspos=e; pos+; else coutfulln; return *this;STACK& STA

24、CK:pop(int &e) if(pos=0) coutempty stack;return *this; pos-; e = elemspos; cout出栈成功; return *this;STACK& STACK:assign(const STACK&s) int i; delete elems;/ elems = new int s.size();/ max = s.size(); pos = s.howMany(); for(i=0;is.howMany();i+) elemsi = s.getelem(i); return *this;void STACK:print( ) co

25、nst int i; cout栈的元素为:; for(i=0;ipos;i+) coutelemsi ; coutendl;STACK:STACK() delete elems;/ elems= 0; / max = 0; pos = 0; cout析构完成;int main() STACK s(7); s.push(5); s.push(7); s.push(9); s.push(11); s.print(); int i; s.pop(i); cout出栈元素iendl; STACK p(s); cout容量p.size()endl; cout当前元素数目p.howMany();实验三.基

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

27、; /用栈s拷贝初始化栈virtual int size ( ) const; /返回栈的最大元素个数maxvirtual operator int ( ) const; /返回栈的实际元素个数posvirtual int operator (int x) const;/取下标x处的栈元素virtual STACK& operator(int &e); /出栈到e,并返回栈virtual STACK& operator=(const STACK&s);/赋s给栈,并返回被赋值的栈virtual void print( ) const; /打印栈virtual STACK( ); /销毁栈;1.

28、2需求分析采用面向对象的C+语言定义,构建整型栈并对其进行判断栈是否为空、向栈顶添加一个整型元素、出栈等操作。2.系统设计2.1概要设计首先需要定义一个类来实现栈,然后依次实现栈的各个功能,在主函数中给定一个栈然后,然后通过函数调用实现栈的功能。2.2详细设计初始化定义一个类,分配一个数组空间来存储栈内元素信息,然后初始化为0; 实现入栈则需要将入栈元素e放入栈内,采用了先判断栈的最大容量够不够的问题,如果不够重新分配空间,并且让e入栈,将当前元素pos加一;然后返回栈结构。 实现出栈操作,首先判断是不是空,若空直接返回,不空则需将栈顶的元素赋给一个变量然后将当前元素pos减一;返回栈结构。实现栈的赋给即需要将s1栈内的元素依次赋给s2栈的,当前元素也需

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

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