您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 面向对象程序设计实验报告一
课程实验报告课程名称:面向对象程序设计实验名称:面向过程的整型栈编程院系:计算机科学与技术专业班级:CS1201学号:U201214819姓名:魏茹珺指导教师:马光志2015年1月5日面向对象程序设计实验报告-1-一、需求分析1.题目要求整型栈是一种先进后出的存储结构,对其进行的操作通常栈括判断栈是否为空、向栈顶添加一个整型元素、出栈等。整型栈类型及其操作函数采用非面向对象的纯C语言定义,请将完成上述操作的所有函数采用纯C语言编程,然后写一个main函数对栈的所有操作函数进行测试。structSTACK{int*elems;//申请内存用于存放栈的元素intmax;//栈能存放的最大元素个数intpos;//栈实际已有元素个数,栈空时pos=0;};voidinitSTACK(STACK*constp,intm);//初始化p指向的栈:最多m个元素voidinitSTACK(STACK*constp,constSTACK&s);//用栈s初始化p指向的栈inthowMany(constSTACK*constp);//返回p指向的栈的实际元素个数posSTACK*constpush(STACK*constp,inte);//将e入栈,并返回pSTACK*constpop(STACK*constp,int&e);//出栈到e,并返回pSTACK*constassign(STACK*constp,constSTACK&s);//赋s给p指的栈,并返回pvoidprint(constSTACK*constp);//打印p指向的栈voiddestroySTACK(STACK*constp);//销毁p指向的栈2.需求分析本实验需要实现栈的功能的操作,如元素的进栈,连续进栈,出栈和连续出栈,所以需要设计两个栈,在完成初始化后直接在程序里给定栈内元素。二、系统设计1.概要设计首先需要完成实现个功能的函数,然后在主函数里给定一个栈,通过调用各个功能函数来判断功能的实现与否。2.详细设计初始化栈需要为栈内的元素动态分配一个空间,然后将结构体内的当前元素初始化为0;实现入栈则需要将入栈元素e放入栈内,将当前元素pos加一;实现出栈操作则需将栈顶的元素赋给一个变量然后将当前元素pos减一;实现栈的赋给即需要将s1栈内的元素依次赋给s2栈的,当前元素也需一致;面向对象程序设计实验报告-2-三、软件开发在codeblocks下,用C++编译四、软件测试所得截图如下:第一行:将1压入s1栈;第二行:将2压入s1栈;第三行:将3,4连续压入栈;第四行:实现上述操作后s1栈内的元素个数;第五行:将s1栈的一个元素出栈后s1栈的值;第六行:将s1栈赋给s2栈后,s2栈的值;第七行:将s2栈连续出栈两个元素后,s2栈的值;五、特点与不足1.技术特点成功完成实验要求,没有错误。2.不足和改进的建议不足之处在于不能按需求输入,如果需要改变栈值则只能通过修改程序才能实现六、过程和体会面向对象程序设计实验报告-3-1.遇到的主要问题和解决方法想的太多了,总是把程序想的很复杂,还想通过写界面实现对应模块功能,后来仔细看了报告书,将界面删除,只留下功能实现的部分。2.课程设计的体会通过这次的实验,我体会到了,不能一味地光写程序而是要看清实验要求,不要将问题复杂化,自己给自己找麻烦。看清题意,完成就好。七、源码和说明1.文件清单及其功能说明执行文件:shiyan1.exe源码:shiyan1.cpp2.用户使用说明书程序要在支持C++编程的开发软件中运行3.源代码#includestdio.h#includemalloc.h#includestdlib.hstructSTACK{int*elems;//申请内存用于存放栈的元素intmax;//栈能存放的最大元素个数intpos;//栈实际已有元素个数,栈空时pos=0;};voidinitSTACK(STACK*constp,intm)//初始化p指向的栈:最多m个元素{p-elems=(int*)malloc(m*sizeof(int));if(!p-elems)return;p-pos=0;p-max=m;}voidinitSTACK(STACK*constp,constSTACK&s)//用栈s初始化p指向的栈{p-elems=(int*)malloc((s.max)*sizeof(int));inti;面向对象程序设计实验报告-4-for(i=0;is.max;i++){p-elems[i]=s.elems[i];p-pos=i;}}inthowMany(constSTACK*constp)//返回p指向的栈的实际元素个数pos{returnp-pos;}STACK*constpush(STACK*constp,inte)//将e入栈,并返回p{if(p-posp-max){p-elems[p-pos]=e;p-pos=p-pos+1;}returnp;}STACK*constpop(STACK*constp,int&e)//出栈到e,并返回p{e=p-elems[p-pos-1];p-pos=p-pos-1;returnp;}STACK*constassign(STACK*constp,constSTACK&s)//赋s给p指的栈,并返回p{p-elems=(int*)malloc(s.max*sizeof(int));intk;for(k=0;ks.max;k++){p-elems[k]=s.elems[k];}p-pos=s.pos;returnp;面向对象程序设计实验报告-5-}voidprint(constSTACK*constp)//打印p指向的栈{intk;for(k=0;kp-pos;k++){printf(%d,p-elems[k]);}printf(\n);}voiddestroySTACK(STACK*constp)//销毁p指向的栈{p-pos=0;}intmain(){STACKs1,s2;intm=10;intx,y,z,e;initSTACK(&s1,m);e=1;push(&s1,e);printf(入栈到那个元素:%d\n,e);e=2;push(&s1,e);printf(入栈到那个元素:%d\n,e);push(push(&s1,3),4);printf(s1:);print(&s1);printf(栈现在的容量:%d\n,howMany(&s1));pop(&s1,x);printf(s1:);print(&s1);assign(&s2,s1);面向对象程序设计实验报告-6-printf(s2:);print(&s2);pop(pop(&s2,y),z);printf(s2:);print(&s2);destroySTACK(&s2);destroySTACK(&s1);}
本文标题:面向对象程序设计实验报告一
链接地址:https://www.777doc.com/doc-1960777 .html