《-面向对象程序设计》课程设计实验报告(共21页).doc
《《-面向对象程序设计》课程设计实验报告(共21页).doc》由会员分享,可在线阅读,更多相关《《-面向对象程序设计》课程设计实验报告(共21页).doc(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主要程序清单 2
2、2.3 运行结果及分析 43收获、体会和建议 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
5、个,0个,2个根的函数并将其输出。每输出一个方程的跟后再选择是否要继续。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 Di
6、splay(); char *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() co
7、utstrendl; char* 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; Wel
8、come you(we); 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:doubleFi
9、ndRoot Find:voidGTzero: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+
10、c=0的根的程序:endl;/总述程序 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=(-
11、b+sqrt(delta)/(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();
12、 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 &point); Point(
13、); double px, py;double Point:Distance(Point &point) double t1, t2; t1 = point.px - px; t2 = point.py - py; return sqrt(t1*t1+t2*t2);class Line:public Pointpublic: Line(double x1, double y1, double x2, double y2); Line (Line &line); double Display(Line &line); Line(); double x, y;Line:Line(double x1
14、, double y1, double x2, double y2)x = x2 - x1; y = y2 - y1;Line:Line(Line &line) x = line.x; y = line.y;double Line:Display(Line &line)return sqrt(x*x+y*y);Line:Line();void main() Point a; Point b(1,1), c(2, 2); a = c; cout两点之间的距离为: a.Distance(b)endl; Line s(1,1, 2,2); Line s1(s); couts1.Display(s1)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- -面向对象程序设计 面向 对象 程序设计 课程设计 实验 报告 21
限制150内