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

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
void initSTACK(STACK *const p, const STACK&s); //用栈s初始化p指向的栈
int size (const STACK *const p);//返回p指向的栈的最大元素个数max
int howMany (const STACK *const p);//返回p指向的栈的实际元素个数pos
2.系统设计
2.1概要设计
函数结构图见图1.1
图1.1
总体流程图见图1.2
图1.2
2.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指的栈的最大元素个数max
int howMany (const STACK *const p)
入口参数:无
出口参数:int pos
功能:将e入栈,并返回p
STACK *const pop(STACK *const p, int &e)
入口参数:int &e
出口参数:(*this)
功能:出栈到e,并返回p
STACK *const assign(STACK*const p, const STACK&s)
入口参数:STACK&s
出口参数:(*this)
4.软件测试
测试结果见图1.3
图1.3
5.特点与不足
5.1技术特点
完成了实验的所有要求,没有错误的地方。
5.2不足和改进的建议
没有做人机交互界面,无法自由选择入栈的数据;同时注释较少,对于程序不了解的人可能需要花费更多时间去了解。
6.过程和体会
6.1遇到的主要问题和解决方法
输出结果数字与预计不同,检查后发现原因是变量初始值未设置。
功能:返回p指的栈的实际元素个数pos
int getelem (const STACK *const p, int x)
入口参数:int x
出口参数:elem[m]
功能:取下标x处的栈元素
STACK *const push(STACK *const p, int e)
入口参数:int e
出口参数:(*this)
struct STACK{
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 getelem (const STACK *const p, int x);//取下标x处的栈元素
STACK *const push(STACK *const p, int e);//将e入栈,并返回p
STACK *const pop(STACK *const p, int &e);//出栈到e,并返回p
void print(const STACK*const p);//打印p指向的栈元素
void destroySTACK(STACK*const p);//销毁p指向的栈,释放
1.2需求分析
本实验需要实现栈的功能的操作,如元素的进栈,连续进栈,出栈和连续出栈,所以需要设计两个栈,在完成初始化后直接在程序里给定栈内元素。
功能:赋s给p指栈,返回p
void print(const STACK*const p)
入口参数:无
出口参数:无
功能:打印p指向的栈元素
void destroySTACK(STACK*const p)
入口参数:
出口参数:
功能:销毁p指向的栈,释放
3.软件开发
在Codeblocks编译环境下,使用C++语言编写。
6.2课程设计的体会
本次实验主要还是通过回顾C语言中栈的知识完成在C++上的编程,所以总体过程没有出现太大的问题;同时也对const变量有了进一步的认识。
7.源码和说明
7.1文件清单及其功能说明
experiment1.cpp源码
experiment1.exe可执行文件。
7.2用户使用说明书
experiment1.cpp是程序的源码,可通过修改其中main函数中的变量来测试各个函数。
课程实验报告
课程名称:面向对象程序设计
院系:
专业班级:
学号:
姓名:
指导教师:
实验一.面向过程的整型栈编程
1.需求分析
1.1题目要求
整型栈是一种先进后出的存储结构,对其进行的操作通常包括判断栈是否为空、向栈顶添加一个整型元素、出栈等。整型栈类型及其操作函数采用非面向对象的纯C语言定义,请将完成上述操作的所有函数采用面向过程的方法编程,然后写一个main函数对栈的所有操作函数进行测试。
int size (const STACK *const p);//返回p指的栈的最大元素个数max
int howMany (const STACK *const p);//返回p指的栈的实际元素个数pos
int getelem (const STACK *const p, int x);//取下标x处的栈元素
STACK *const push(STACK *const p, int e);//将e入栈,并返回p
STACK *const pop(STACK *const p, int &e);//出栈到e,并返回p
STACK *const assign(STACK*const p, const STACK&s);//赋给p指栈,返回p
7.3源代码
#include<stdio.h>
#includ百度文库<malloc.h>
#include<stdlib.h>
struct STACK
{
int *elems;//申请内存用于存放栈的元素
int max;//栈能存放的最大元素个数
int pos;//栈实际已有元素个数,栈空时pos=0;
};
void initSTACK(STACK *const p, int m);//初始化p指向的栈:最多m个元素
相关文档
最新文档