版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、课程实验报告课程名称: 面向对象程序设计院系 :专业班级:学号 :姓名 :指导教师:目录实验一 . 面向过程的整型栈编程 .1. 需求分析 .1.1题目要求 .1.2需求分析 .2. 系统设计 .2.1概要设计 .2.2详细设计 .4. 软件测试 .5. 特点与不足 .5.1技术特点 .5.2不足和改进的建议 .6. 过程和体会 .6.1遇到的主要问题和解决方法 .6.2课程设计的体会 .7. 源码和说明 .7.1文件清单及其功能说明 .7.2用户使用说明书 .7.3源代码 .实验二 . 面向对象的整型栈编程.1. 需求分析 .1.1题目要求 .1.2需求分析 .2. 系统设计 .2.1概要设
2、计 .2.2详细设计 .3. 软件开发 .4. 软件测试 .5. 特点与不足 .5.1技术特点 .5.2不足和改进的建议 .6. 过程和体会 .6.1遇到的主要问题和解决方法 .6.2课程设计的体会 .7. 源码和说明 .7.1文件清单及其功能说明 .7.2用户使用说明书 .7.3源代码 .实验三 . 基于算符重载的整型栈编程.1. 需求分析 .1.1题目要求 .1.2需求分析 .2. 系统设计 .2.1概要设计 .2.2详细设计 .3. 软件开发 .4. 软件测试 .5. 特点与不足 .5.1技术特点 .5.2不足和改进的建议 .6. 过程和体会 .6.1遇到的主要问题和解决方法 .6.2课
3、程设计的体会 .7. 源码和说明 .7.1文件清单及其功能说明 .7.2用户使用说明书 .7.3源代码 .实验四 .面向对象的整型队列编程.1. 需求分析 .1.1 题目要求 .1.2 需求分析 .2. 系统设计 .3. 软件开发 .4. 软件测试 .5. 特点与不足 .5.1技术特点 .5.2不足和改进的建议 .6. 过程和体会 .6.1遇到的主要问题和解决方法 .6.2课程设计的体会 .7. 源码和说明 .7.1文件清单及其功能说明 .7.2用户使用说明书 .7.3源代码 .实验五 .基于组合的整型队列编程.1. 需求分析 .1.1 题目要求 .1.2 需求分析 .2. 系统设计 .3.
4、软件开发 .4. 软件测试 .5. 特点与不足 .5.1技术特点 .5.2不足和改进的建议 .6. 过程和体会 .6.1遇到的主要问题和解决方法 .6.2课程设计的体会 .7. 源码和说明 .7.1文件清单及其功能说明 .7.2用户使用说明书 .7.3源代码 .实验六 .基于继承的整型队列编程.1. 需求分析 .1.1 题目要求 .1.2 需求分析 .2. 系统设计 .3. 软件开发 .4. 软件测试 .5. 特点与不足 .5.1技术特点 .5.2不足和改进的建议 .6. 过程和体会 .6.1遇到的主要问题和解决方法 .6.2课程设计的体会 .7. 源码和说明 .7.1文件清单及其功能说明 .
5、7.2用户使用说明书 .7.3 源代码 .实验一 . 面向过程的整型栈编程1. 需求分析1.1 题目要求整型栈是一种先进后出的存储结构,对其进行的操作通常包括判断栈是否为空、向栈顶添加一个整型元素、出栈等。整型栈类型及其操作函数采用非面向对象的纯 C 语言定义,请将完成上述操作的所有函数采用面向过程的方法编程, 然后写一个 main 函数对栈的所有操作函数进行测试。struct STACKint*elems;intmax;intpos;/申请内存用于存放栈的元素/栈能存放的最大元素个数/栈实际已有元素个数,栈空时pos=0;void initSTACK(STACK *const p, int
6、m);/ 初始化 p 指空栈:可存 m 个元素 void initSTACK(STACK *const p, const STACK&s); / 用 s 初始化 p 指空栈intsize (const STACK *const p); /返回 p 指的栈的最大元素个数 maxinthowMany (const STACK *const p); /返回 p 指的栈的实际元素个数 posintgetelem (const STACK *const p, int x);/取下标 x 处的栈元素STACK *const push(STACK *const p, int e);/将 e 入栈,并
7、返回 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 需求分析本实验需要实现栈的功能的操作,如元素的进栈,连续进栈,出栈和连续出栈,所以需要设计两个栈,在完成初始化后直接在程序里给定栈内元素。2. 系统
8、设计2.1 概要设计函数结构图见图 1.1栈初返回取入栈栈打销始max,内、印毁化pos元出栈栈栈素栈图 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 指空栈intsize (const STACK *const p)入口参数:无出口参数: int max功能:返回 p
9、指的栈的最大元素个数maxinthowMany (const STACK *const p)入口参数:无出口参数: int pos功能:返回 p 指的栈的实际元素个数posintgetelem (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
10、出口参数: (*this)功能:出栈到 e,并返回 pSTACK *const assign(STACK*const 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.3
11、5. 特点与不足5.1 技术特点完成了实验的所有要求,没有错误的地方。5.2 不足和改进的建议没有做人机交互界面,无法自由选择入栈的数据;同时注释较少,对于程序不了解的人可能需要花费更多时间去了解。6. 过程和体会6.1 遇到的主要问题和解决方法输出结果数字与预计不同,检查后发现原因是变量初始值未设置。6.2 课程设计的体会本次实验主要还是通过回顾 C 语言中栈的知识完成在 C+上的编程,所以总体过程没有出现太大的问题;同时也对 const 变量有了进一步的认识。7. 源码和说明7.1 文件清单及其功能说明experiment1.cpp源码experiment1.exe可执行文件。7.2 用户
12、使用说明书experiment1.cpp是程序的源码,可通过修改其中 main 函数中的变量来测试各个函数。7.3 源代码#include<stdio.h>#include<malloc.h>#include<stdlib.h>struct STACKint *elems; /intmax;intpos;申请内存用于存放栈的元素/栈能存放的最大元素个数/栈实际已有元素个数,栈空时pos=0;void initSTACK(STACK *const p, int m);/ 初始化p 指向的栈:最多 m个元素void initSTACK(STACK *const
13、p, const STACK&s); /用栈s 初始化p 指向的栈个数个数int size (const STACK *const p);maxint howMany (const STACK *const p);posint getelem (const STACK *const p, int x);/ 返回 / 返回p 指向的栈的最大元素p 指向的栈的实际元素/ 取下标 x 处的栈元素STACK *const push(STACK *const p, int e);/ 将 e 入栈,并返回 pSTACK *const pop(STACK *const p, int &e);
14、/ 出栈到 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(int argc, char* argv)STACK *s1 = (STACK *)malloc(sizeof(STACK);STACK *s2 = (STACK *)malloc(sizeof(STACK);initSTACK(s
15、1,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);printf("栈的最大元素个数是%dn",a);b = howMany(s1);printf("栈的实际元素个数是%dn",b);c = getelem(s1,3);printf(&
16、quot;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 = (int*)malloc(m*sizeof(int*);if(!p->elems)return;p->pos = 0;p-
17、>max = m;int i;for(i=0;i<(p->max);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;i<(s.pos);i+)p->elemsi=s.elemsi;printf("%dn",p->elemsi);
18、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)/ 取下标x 处的栈元素if(p=NULL)return NULL;elseif(x>(p->pos)printf("不存在元素 n");elsereturn p->elemsx;STACK *const push(STACK *const p, int e)/ 将 e 入栈,并返回 pif(p=NULL)return NULL;elseif(p->pos)<=(p->max)p->elemsp->pos=e;p->pos+;return p;elsep
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 养老护理中级老年康复护理
- 机器学习在护理决策支持中的应用
- 2025年便携式超声系统租赁合同
- 2025年白酒区域独家合作协议
- 基因水平转移的系统发育分析
- 妇科常用中成药的合理使用
- 地球在宇宙中的位置2课件
- DB36∕T 1485-2025“赣出精 品”品牌建设通 用要求
- 在线教育的可扩展性和资源共享性研究
- 历届4级考试真题及答案
- 2025年大学康复治疗学(运动疗法学)试题及答案
- 胎膜早破的诊断与处理指南
- 进出口货物报关单的填制教案
- 被压迫者的教育学
- 2025年科研伦理与学术规范期末考试试题及参考答案
- 上市公司财务舞弊问题研究-以国美通讯为例
- 2025年国家开放电大行管本科《公共政策概论》期末考试试题及答案
- 2025年纪检监察知识试题库(含答案)
- CJT 288-2017 预制双层不锈钢烟道及烟囱
- 2024年西安市政道桥建设集团有限公司招聘笔试参考题库含答案解析
- 《弹性波动力学》课程教学大纲
评论
0/150
提交评论