面向对象程序设计课程实验报告_第1页
面向对象程序设计课程实验报告_第2页
面向对象程序设计课程实验报告_第3页
面向对象程序设计课程实验报告_第4页
已阅读5页,还剩66页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、课程实验报告课程名称: 面向对象程序设计院系 :专业班级:学号 :姓名 :指导教师:I目录实验一 . 面向过程的整型栈编程 .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需求

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

3、特点与不足 .215.1技术特点 .215.2不足和改进的建议 .216.过程和体会 .216.1遇到的主要问题和解决方法 .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遇到的主要问题和解决方法 .26I6.2课程设计的体会 .277.源码

4、和说明 .277.1文件清单及其功能说明 .277.2用户使用说明书 .277.3源代码 .27实验五 . 基于组合的整型队列编程 .311.需求分析 .311.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题目

5、要求 .371.2需求分析 .382.系统设计 .383.软件开发 .384.软件测试 .385.特点与不足 .385.1技术特点 .385.2不足和改进的建议 .386.过程和体会 .396.1遇到的主要问题和解决方法 .396.2课程设计的体会 .3947. 源码和说明397.1 文件清单及其功能说明397.2 用户使用说明书397.3 源代码39I实验一 . 面向过程的整型栈编程1. 需求分析1.1 题目要求整型栈是一种先进后出的存储结构,对其进行的操作通常包括判断栈是否为空、向栈顶添加一个整型元素、出栈等。整型栈类型及其操作函数采用非面向对象的纯 C 语言定义,请将完成上述操作的所有函

6、数采用面向过程的方法编程, 然后写一个 main 函数对栈的所有操作函数进行测试。struct STACKint*elems;/申请内存用于存放栈的元素intmax;/栈能存放的最大元素个数intpos;/栈实际已有元素个数,栈空时pos=0;void initSTACK(STACK *const p, int m);/ 初始化 p 指空栈:可存 m 个元素 void initSTACK(STACK *const p, const STACK&s); / 用 s 初始化 p 指空栈intsize (const STACK *const p); /返回 p 指的栈的最大元素个数 maxi

7、nthowMany (const STACK *const p); /返回 p 指的栈的实际元素个数 posintgetelem (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);/赋给 p 指栈 ,返回 pvoid print(co

8、nst STACK*const p);/打印 p 指向的栈元素void destroySTACK(STACK*const p);/销毁 p 指向的栈,释放1.2 需求分析本实验需要实现栈的功能的操作,如元素的进栈,连续进栈,出栈和连续出栈,所以需要设计两个栈,在完成初始化后直接在程序里给定栈内元素。12. 系统设计2.1 概要设计函数结构图见图 1.1初返回始max,化pos栈总体流程图见图 1.2栈取入栈栈打销内、印毁元出栈栈素栈图 1.1开始初始化Y入栈是否继续NY出栈是否继续N销毁栈结束图 1.222.2 详细设计void initSTACK(STACK *const p, int m)

9、入口参数: int m出口参数:无功能:初始化栈,可存m 个元素void initSTACK(STACK *const p, const STACK&s)入口参数: const STACK&s出口参数:无功能:用 s 初始化 p 指空栈intsize (const STACK *const p)入口参数:无出口参数: int max功能:返回 p 指的栈的最大元素个数maxinthowMany (const STACK *const p)入口参数:无出口参数: int pos功能:返回 p 指的栈的实际元素个数posintgetelem (const STACK *const

10、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 p, const STACK&s)入口参数: STACK&s出口参数: (*this)功能:赋 s

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

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

13、e<stdlib.h>struct STACKint *elems; /申请内存用于存放栈的元素intmax;/栈能存放的最大元素个数intpos;/栈实际已有元素个数,栈空时pos=0;5;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

14、STACK *const p);/ 返回 p 指向的栈的实际元素个数 posint 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 S

15、TACK*const p);/ 打印 p 指向的栈void destroySTACK(STACK*const p);/ 销毁 p 指向的栈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");prin

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

17、,y,z);destroySTACK(s2);destroySTACK(s1);getchar();return 0;void initSTACK(STACK *const p, int m) /初始化 p 指向的栈:最多m个元素p->elems = (int*)malloc(m*sizeof(int*);if(!p->elems)return;p->pos = 0;p->max = m;int i;for(i=0;i<(p->max);i+)p->elemsi = 0;void initSTACK(STACK *const p, const STAC

18、K&s) /用栈 s 初始化 p 指向的栈p->elems = (int*)malloc(s.max)*sizeof(int);p->pos = s.pos;7p->max = s.max;int i;for(i=0;i<(s.pos);i+)p->elemsi=s.elemsi;printf("%dn",p->elemsi);int size (const STACK *const p)/ 返回 p 指向的栈的最大元素个数 maxreturn p->max;int howMany (const STACK *const p)/ 返回 p 指向的栈的实际元素个数 posreturn p->pos;int getelem (const STACK *const p, int x)/ 取下标

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论