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

上传人:suns****4568 文档编号:91584696 上传时间:2019-06-30 格式:DOC 页数:21 大小:260KB
返回 下载 相关 举报
面向对象程序设计课程设计实验报告_第1页
第1页 / 共21页
面向对象程序设计课程设计实验报告_第2页
第2页 / 共21页
面向对象程序设计课程设计实验报告_第3页
第3页 / 共21页
面向对象程序设计课程设计实验报告_第4页
第4页 / 共21页
面向对象程序设计课程设计实验报告_第5页
第5页 / 共21页
点击查看更多>>
资源描述

《面向对象程序设计课程设计实验报告》由会员分享,可在线阅读,更多相关《面向对象程序设计课程设计实验报告(21页珍藏版)》请在金锄头文库上搜索。

1、 面向对象程序设计课程设计实验报告指导教师小组成员:专业班级: 2010级计算机科学与技术专业开设时间: 2011-2012(一)目录1. 任务121.1 任务介绍21.2 小组成员任务分配2 1.3.1设计思想及主要流程图 21.3.1主要程序清单 21.3.1 运行结果及分析41.3.2设计思想及主要流程图 21.3.2主要程序清单 21.3.2 运行结果及分析 41.3.3设计思想及主要流程图 21.3.3主要程序清单 21.3.3 运行结果及分析42. 任务2 22.1 任务介绍22.2 小组成员任务分配2 2.3设计思想及主要流程图 22.3主要程序清单 22.3 运行结果及分析 4

2、3收获、体会和建议 4任务1.按照要求设计类1.根据输出设计类设计类就是根据数据封装的要求,抽象出适合的类。有如下测试程序和测试程序的输出结果,要求设计类Welcome。void main()Welcome we;Welcome you(we);you.Display();you.Set(“Thank you.”);coutyou.Get()endl;you.talk();you.Display();测试程序的输出结果如右:设计类Welcome 的原则1)在头文件Cpp1.h 中声明类2)在Cpp1.cpp中实现类3)使用内联函数定义Display()函数2.使用类改写程序编写一个求方程的根的

3、程序,用三个函数分别求当大于零、等于零和小于零时方程的根。要求从主函数输入a、b、c的值并输出结果。使用面向过程的解法一般是把变量设为double型,适用库函数cmath进行计算。请注意:使用面向对象的方法解决这个问题,首先要从解一元二次方程出发,抽象一个代表一元二次方程的类。为了使用这个类,必须根据要结局的问题,为这个类设计合适的数据成员和成员函数。3.使用包含(聚合)和派生设计新类(1)使用包含的方法,编写一个点类Point和线段类Line,演示构造函数、复制构造函数、析构函数作用及其调用顺序;(2)使用派生的方法,编写一个点类Point,然后由它派生线段类,并演示构造函数、复制构造函数、

4、析构函数作用及其调用顺序。任务1:小组成员任务分配:李小拉:任务一中的第一个 任务(包括设计思想,流程图,程序编写)胡海薇:任务一中的第二个 任务(包括设计思想,流程图,程序编写)周子研:任务一中的第三个 任务(包括设计思想,流程图,程序编写)最后的结果分析大家一起分析与总结设计思想:1 根据所给的主函数及运行结果来分析,类welcome包含成员函数和数据成员,输入数据和输出数据都将会显示出来,当输入OK时结束输出数据,最后调用析构函数。2 根据题意求二元一次方程的跟,并且要用成员函数和数据成员,应该首先判断是否是二元一次方程,然后再判断有无根,利用选择函数分别调用1个,0个,2个根的函数并将

5、其输出。每输出一个方程的跟后再选择是否要继续。3 1)2)先定义一个point类,再由point类派生出line类,利用构造函数,复制构造函数和析构函数来计算出点点之间的距离也就是线的长度。任务1:1/Cpp1.h #include#include/函数strcpy(),stcmy()包含在此头文件中using namespace std; class Welcome private: char str100; public: Welcome(char s=Welcome!); Welcome (Welcome &); void Set(char ); void Display(); char

6、 *Get(); void talk(); Welcome(); ;/Cpp1.cpp#include #include#includeCpp1.husing namespace std; Welcome:Welcome(char s)strcpy(str,s); /把字符串数组s中的所有字符,拷贝到字符串数组str中 Welcome:Welcome(Welcome &c) /拷贝构造函数strcpy(str,c.str); void Welcome:Set(char s) strcpy(str,s); inline void Welcome:Display() coutstrendl; ch

7、ar* Welcome:Get() return str;Welcome:Welcome() coutGoodbye!endl;void Welcome:talk() char s100; cout输入:; cin.getline(s,100); while(strcmp(s,OK)!=0) /s不等于OK时,循环输出及输出 cout输出:sendl; cout输入:; cin.getline(s,128); strcpy(str,OK); coutAll right!endl; coutGoodbye!endl;void main() Welcome we; Welcome you(we);

8、 you.Display(); you.Set(Thank you.); coutyou.Get()endl; you.talk(); you.Display();结果分析:该程序采用了多文件结构,利用构造函数、析构函数和复制构造函数将结果输出。前面先自动输出Welcome!和Thank you.然后调用函数自己输入什么就输出什么。左后当遇到OK时输出“All right!”和“Goodbye!”最后调用析构函数输出“Goodbye!”任务2#include /包含iostream的头文件 FindRoota,b,c,d,p,q:floatx1,x2:doubleFindRoot Find:v

9、oidGTzero:voidEQzero:voidLTzero:void#include #include/字符串处理函数using namespace std;class FindRoot/定义类FindRootprivate: float a,b,c;double r,q,x1,x2;/定义数据成员类型 int jud;public: void Input();/输入函数 void Display();/显示函数 void Find();/求根函数;/以上是类的声明部分,以下是类的实现部分void FindRoot:Input()cout这是一个求解ax2+bx+c=0的根的程序:endl

10、;/总述程序 for(; ;) couta; if(a=0) cout错误:a不能为0!endl; else break; /输入a,并对a的可能情况进行判断 coutb;/输入b coutc;/输入cvoid FindRoot:Find()/定义求根的函数 float delta=b*b-4*a*c;/定义求根公式的数据类型 if(delta0) jud=0; r=-b/(2*a); q=sqrt(-delta)/(2*a);/有两个共轭复数根的情况 else if(delta=0) x1=-b/(2*a); jud=1;/有两个相同的根的情况 else x1=(-b+sqrt(delta)

11、/(2*a); x2=(-b-sqrt(delta)/(2*a); jud=2; /有两个不同的根的情况void FindRoot:Display()/定义显示函数switch(jud)case 0: coutx1=r+qiendl;coutx2=r-qiendl;break;/显示有共轭复数根时的解case 1:coutx1=x2=x1endl;break;/显示有一实根时的解case 2:coutx1=x1nx2=x2endl;break;/显示有两不同根情况的解void main()/主函数while(1) FindRoot f;/定义类型 f.Input(); f.Find(); f.Display();/以上各函数按顺序执行 cout是否退出?(Y退出,其它任意键继续)m;if(strcmp(m,Y)=0|strcmp(m,y)=0)break;/如果退出则终止运行elsecout请继续endl;/如果不退出则继续执行任务3#include #include using namespace std;class Point public: Point(double x1=0, double y1=0)px = x1; py = y1; void Display(void); double Distance(Point

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号