面向对象程序设计实验报告一
更新时间:2024-03-03 06:01:01 阅读量: 综合文库 文档下载
课 程 实 验 报 告
课程名称:面向对象程序设计 实验名称:面向过程的整型栈编程
院 系 :计算机科学与技术
专业班级 : CS1201 学 号 : U201214819 姓 名 : 魏茹珺 指导教师 : 马光志
2015 年 1 月 5 日
面向对象程序设计实验报告
一、需求分析
1. 题目要求
整型栈是一种先进后出的存储结构,对其进行的操作通常栈括判断栈是否为空、向栈顶添加一个整型元素、出栈等。整型栈类型及其操作函数采用非面向对象的纯C语言定义,请将完成上述操作的所有函数采用纯C语言编程, 然后写一个main函数对栈的所有操作函数进行测试。
struct STACK{
int *elems; //申请内存用于存放栈的元素 int max; int pos; };
void initSTACK(STACK *const p, int m); //初始化p指向的栈:最多m个元素 void initSTACK(STACK *const p, const STACK&s); //用栈s初始化p指向的栈 int howMany (const STACK *const p); //返回p指向的栈的实际元素个数pos 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); //赋s给p指的栈,并返回p void print(const STACK*const p);
//打印p指向的栈 //销毁p指向的栈
void destroySTACK(STACK*const p);
//栈能存放的最大元素个数
//栈实际已有元素个数,栈空时pos=0;
2. 需求分析
本实验需要实现栈的功能的操作,如元素的进栈,连续进栈,出栈和连续出栈,所以需要设计两个栈,在完成初始化后直接在程序里给定栈内元素。
二、系统设计
1. 概要设计
首先需要完成实现个功能的函数,然后在主函数里给定一个栈,通过调用各个功能函数来判断功能的实现与否。
2. 详细设计
初始化栈需要为栈内的元素动态分配一个空间,然后将结构体内的当前元素初始化为0; 实现入栈则需要将入栈元素e放入栈内,将当前元素pos加一;
实现出栈操作则需将栈顶的元素赋给一个变量然后将当前元素pos减一; 实现栈的赋给即需要将s1栈内的元素依次赋给s2栈的,当前元素也需一致;
- 1 -
面向对象程序设计实验报告
三、软件开发
在codeblocks下,用C++编译
四、软件测试
所得截图如下:
第一行:将1压入s1栈; 第二行:将2压入s1栈; 第三行:将3,4连续压入栈;
第四行:实现上述操作后s1栈内的元素个数; 第五行:将s1栈的一个元素出栈后s1栈的值; 第六行:将s1栈赋给s2栈后,s2栈的值; 第七行:将s2栈连续出栈两个元素后,s2栈的值;
五、特点与不足
1. 技术特点
成功完成实验要求,没有错误。
2. 不足和改进的建议
不足之处在于不能按需求输入,如果需要改变栈值则只能通过修改程序才能实现六、过程和体会
- 2 -
面向对象程序设计实验报告
1. 遇到的主要问题和解决方法
想的太多了,总是把程序想的很复杂,还想通过写界面实现对应模块功能,后来仔细看了报告书,将界面删除,只留下功能实现的部分。
2. 课程设计的体会
通过这次的实验,我体会到了,不能一味地光写程序而是要看清实验要求,不要将问题复杂化,自己给自己找麻烦。看清题意,完成就好。
七、源码和说明
1. 文件清单及其功能说明
执行文件: shiyan1.exe 源码: shiyan1.cpp
2. 用户使用说明书
程序要在支持C++编程的开发软件中运行
3. 源代码
#include
struct STACK{ int *elems;
//申请内存用于存放栈的元素
int max; //栈能存放的最大元素个数
int pos; //栈实际已有元素个数,栈空时pos=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; }
void initSTACK(STACK *const p, const STACK&s)//用栈s初始化p指向的栈{
p->elems=(int *)malloc((s.max)*sizeof(int)); int i;
- 3 -
面向对象程序设计实验报告
for(i=0;i p->elems[i]=s.elems[i]; p->pos=i; } } int howMany (const STACK *const p) //返回p指向的栈的实际元素个数pos { return p->pos; } STACK *const push(STACK *const p, int e) //将e入栈,并返回p { if(p->pos p->elems[p->pos]=e; p->pos=p->pos+1; } return p; } STACK *const pop(STACK *const p, int &e) //出栈到e,并返回p { e=p->elems[p->pos-1]; p->pos=p->pos-1; return p; } STACK *const assign(STACK *const p, const STACK&s) //赋s给p指的栈,并返回p { p->elems=(int *)malloc(s.max*sizeof(int)); int k; for(k=0;k p->elems[k]=s.elems[k]; } p->pos=s.pos; return p; - 4 -
正在阅读:
面向对象程序设计实验报告一03-03
2022年执业药师继续教育标准答案-常见病症的自我药疗-增补内容03-26
最新全国计算机一级考试选择题试题与详细答案(免费)资料03-11
部编版人教版秋季学期小学二年级语文上册第单元获奖教案下载古诗二首夜宿山寺公开课教学设计一等奖11-09
北化2001考研物化试题10-21
《城市轨道交通工程预算定额》第二册“轨道工程”定额说明09-20
《煎饼侠》豆瓣影评02-15
时分秒练习题08-19
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 程序设计
- 面向
- 对象
- 实验
- 报告
- 福建蓝海新材料科技有限公司年产10万吨过氧化二异丙苯、 - 图文
- 花岗岩的成因与构造环境
- 数值代数实验报告(1)绝对经典
- 河南省正阳县第二高级中学2019届高三数学下学期周练(二)理
- 淮北矿区采区主体巷道布置优缺点分析
- 二年级下册语文期末检测卷
- 最新整理数中考试题分类汇编函数与几何图形 doc
- 雅思考试,美国留学的法宝
- 1技术改造工程管理制度 - 图文
- 高数同济五版(7)
- 关于做好全省融资性担保机构规范整顿工作的通知
- 操作系统考试及答案
- 会计电算化技能比赛规程
- 各校333真题10年到16年
- 2018年7月入党个人自传范文2000字 - 0
- 地理信息系统及工程应用复习
- callcenter运营指南1
- 《浅谈创新能力的培养》
- 结婚嫁娶择日吉凶
- 《印刷工艺》试卷(C)