ImageVerifierCode 换一换
格式:DOCX , 页数:27 ,大小:182.75KB ,
资源ID:27557484      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/27557484.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(《 面向对象程序设计》课程设计实验报告.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

《 面向对象程序设计》课程设计实验报告.docx

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、清单 22.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()

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

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

5、择函数分别调用1个,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 );

6、 void Display(); 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:Disp

7、lay() coutstrendl; 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

8、 we; Welcome 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:

9、doubleFindRoot 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这是一个求

10、解ax2+bx+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;/有两个相同的根的情况 el

11、se x1=(-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

12、;/定义类型 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(Poi

13、nt &point); Point(); 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;L

14、ine:Line(double x1, 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);

15、couts1.Display(s1)endl结果分析:主要利用函数来实现根的求解。先判断a是否为0,若a=0则输出“a不能为0!”不为0则继续输入bc,根据求根公式分别调用函数,实现不同的功能。#include using namespace std;class Point /Point类声明public:Point(int xx=0, int yy=0) X=xx;Y=yy;Point(Point &p);int GetX() return X;int GetY() return Y;private:int X,Y;Point:Point(Point &p) /拷贝构造函数的实现X=p.X;

16、Y=p.Y;class Line /Line类的声明public: /外部接口Line (Point xp1, Point xp2);Line (Line &);double GetLen()return len;Line()coutendendl;private: /私有数据成员Point p1,p2; /Point类的对象p1,p2double len; ;/组合类的构造函数Line: Line (Point xp1, Point xp2):p1(xp1),p2(xp2)double x=double(p1.GetX()-p2.GetX();double y=double(p1.GetY(

17、)-p2.GetY();len=sqrt(x*x+y*y);/组合类的拷贝构造函数Line: Line (Line &Seg): p1(Seg.p1), p2(Seg.p2)len=Seg.len;/主函数void main()Point myp1(0,3),myp2(4,0); /建立Point类的对象Line line(myp1,myp2); /建立Line类的对象Line line2(line);/利用拷贝构造函数建立一个新对象coutThe length of the line is:;coutline.GetLen()endl;coutThe length of the line2

18、is:;coutline2.GetLen()endl;#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(); double px, py;double Point:Distance(Point &point) double t1, t2; t1 = point.px - px; t2 = point.py - py; r

19、eturn 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, double y1, double x2, double y2) x = x2 - x1; y = y2 - y1;Line:Line(Line &line) x = line.x; y = line.y;doub

20、le 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)endl;任务2人力资源管理系统(局部)某小型公司,主要有四类人员:经理、兼职技术人员、销售经理和兼职推销员。现在,需要存储这些人员的姓名、编号、级别、当月薪水,计算月薪总额并显示全部信息。人员编号基数为100

21、0,每输入一个人员信息编号顺序加1。月薪计算方法:(1)经理拿固定月薪8000元;(2)兼职技术人员按每小时100元领取月薪;(3)兼职推销员的月薪按该推销员当月销售额的4%提成;(4)销售经理既拿固定月薪也领取销售提成,固定月薪为5000元,销售提成为所管辖部门当月销售总额的5%。程序要对所有人员有提升级别的功能。可将所有人员的初始级别均定为1级,然后进行升级,经理升为4级,兼职技术人员和销售经理升为3级,销售人员仍为1级。(本项提升级别的方法可以自行确定。)设计要求:在附件中给出的资料基础上进行完善。完成类的设计(1)按照给定资料,设计类(2)进行类成员函数的实现(3)给出代码的注释(4)

22、画出系统中出现的类的类图屏幕显示采用菜单形式整体功能(1) 可以随时通过雇员的名字查询他的工资情况。(2) 有查询结束标志。(3) 有查询提示。小组成员任务分配:小组成员都参与了这次的程序设计,一起讨论并且交换设计思想,一起设计流程图,一起将其改成与题目相符合的程序。最后一起分析完成这次的设计。/3.cpp#include #include date1.h#include string.husing std:string;int main() manager m1; technician t1; salesmanager sm1; salesman s1; m1.promote(3); m1.

23、pay();/ m1.displayStatus(); cout *endl; cout endl; t1.promote(2); t1.pay();/ t1.displayStatus(); cout endl; cout *endl; cout endl; sm1.promote(2); sm1.pay();/ sm1.displayStatus(); cout endl; cout *endl; cout endl; s1.pay();/ s1.displayStatus(); cout endl; cout *endl; cout endl; employee e4 =m1,t1,sm

24、1,s1;while(true) char chazhao50; coutchazhao; string emName = chazhao;for(int i =0 ; i 4 ; i+)employee em = ei;if(strcmp(em.name.c_str(),chazhao)=0) em.pay(); em.displayStatus();cout 是否退出?(Y退出,其它任意键继续) m;if(strcmp(m,Y)=0|strcmp(m,y)=0)break;elsecout 继续.endl;return 0;/3.h#include #include string.husi

25、ng std:string;class employeeprotected: int individualEmpNo; int grade; float accumPay; static int employeeNo; string zhiwu;public: employee(); employee(); void pay(); string name; void promote(int increment); void displayStatus() cout ; coutzhiwu.c_str(); coutname.c_str(); cout编号 individualEmpNo级别为grade级,已付本月工资accumPayendl;class technician:public employeeprivate: float hourlyRate; int workHours;public: technician();void pay();class s

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1