面向对象程序设计课程实验报告(共50页).doc
《面向对象程序设计课程实验报告(共50页).doc》由会员分享,可在线阅读,更多相关《面向对象程序设计课程实验报告(共50页).doc(50页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上课 程 实 验 报 告课程名称:面向对象程序设计院 系 : 专业班级 : 学 号 : 姓 名 : 指导教师 : 目 录专心-专注-专业实验一.面向过程的整型栈编程1.需求分析1.1题目要求整型栈是一种先进后出的存储结构,对其进行的操作通常包括判断栈是否为空、向栈顶添加一个整型元素、出栈等。整型栈类型及其操作函数采用非面向对象的纯C语言定义,请将完成上述操作的所有函数采用面向过程的方法编程, 然后写一个main函数对栈的所有操作函数进行测试。struct STACK int *elems;/申请内存用于存放栈的元素 int max;/栈能存放的最大元素个数 int po
2、s;/栈实际已有元素个数,栈空时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 pu
3、sh(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 *con
5、st 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 i
8、nt *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 getel
9、em (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指向的栈int main
10、(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); print
11、f(栈的最大元素个数是 %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-elems =
12、(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-elemsi); int
13、 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 p, int e) /将
14、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 p, const ST
15、ACK&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 ,p-elemsi);
16、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;/申请内存用于存放栈的元素 const int max;/栈能存
17、放的最大元素个数 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(const STACK&s); /赋s给
18、栈,并返回被赋值的栈void print( ) const;/打印栈STACK( );/销毁栈;1.2需求分析采用面向对象的C+语言定义整型栈,对其进行的操作通常包括判断栈是否为空、向栈顶添加一个整型元素、出栈等。2.系统设计2.1概要设计首先需要定义一个类来实现栈,然后依次实现栈的各个功能,在主函数中给定一个栈然后,然后通过函数调用实现栈的功能。2.2详细设计STACK(int m) 功能:初始化栈:最多m个元素返回值:无STACK(const STACK&s) 功能:用栈s拷贝初始化栈返回值:无int size ( ) const功能:返回栈的最大元素个数max返回值:最大元素个数maxi
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向 对象 程序设计 课程 实验 报告 50
限制150内