2022年面向对象程序方案课程方案报告,通过组合和派生构成新类人员信息管理系统成绩管理系统 .pdf
《2022年面向对象程序方案课程方案报告,通过组合和派生构成新类人员信息管理系统成绩管理系统 .pdf》由会员分享,可在线阅读,更多相关《2022年面向对象程序方案课程方案报告,通过组合和派生构成新类人员信息管理系统成绩管理系统 .pdf(19页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、个人资料整理仅限学习使用面向对象的程序设计课程设计报告姓名:张聪学号: 100511217 班级:大类 1002 班院系:数学与计算机学院日期: 2018.12.30精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 1 页,共 19 页个人资料整理仅限学习使用题目 1:通过组合和派生构成新的类本设计题目的任务是使用Point 类产生Line 类。分别通过组合类及派生类两种方法实现,并要求分别给出使用类模板实现的程序。本设计题的目的是使学生掌握在不同的实现方法中,如何设计相应的构造函数和拷贝构造函数,进一步理解程序调用它们及析构函数的执行顺序,掌握组合
2、类和派生类。另外本设计题目要让学生进一步掌握和理解类模板的技术及其实现方法。1. 设计框图:2、源程序1)组合类实现#include #include using namespace std。class Point public: Point(int xx=0,int yy=0X=xx。Y=yy 。 Point(Point &p 。intGetX(return X 。 intGetY(return Y 。 private: int X,Y 。Point:Point(Point &p X=p.X 。X Y Line Point(X,Y line Line2 输出 line 输出 line2 精选
3、学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 2 页,共 19 页个人资料整理仅限学习使用Y=p.Y 。coutPoint 拷贝构造函数被调用 。Line(Line & 。doubleGetLen(return len 。 private: Point p1,p2。doublelen。/组合类的构造函数Line:Line(Point xp1,Point xp2 :p1(xp1,p2(xp2 coutLine 构造函数被调用-p2.GetX(。double y=double(p1.GetY(-p2.GetY(。len=sqrt(x*x+y*y。 /组合
4、类的拷贝构造函数Line:Line(Line &L:p1(L.p1,p2(L.p2 coutLine 拷贝构造函数被调用 Point myp1(1,1,myp2(3,7 。Line line(myp1,myp2 。Line line2(line 。coutThe length of the line is:。coutendl 。coutThe length of the line2 is: 。coutendl 。 编译结果。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 3 页,共 19 页个人资料整理仅限学习使用2)派生类实现#include #
5、include using namespace std。class Point /Point 类 public: Point(int xx=0, intyy=0 coutPoint 类的构造函数被调用 。Point( coutPoint 类的析构函数被调用 return X。 intGetY( return Y。 private: int X,Y 。Point:Point(Point &p /拷贝构造函数的实现 X=p.X 。Y=p.Y 。coutPoint 类的拷贝构造函数被调用 :p1(x1,y1,p2(x2,y2 / 初始化列表 coutLine 类的构造函数被调用-p2.GetX(。d
6、ouble y=double(p1.GetY(-p2.GetY(。len=sqrt(x*x+y*y。 Line (Line &L 。Line( coutLine 类的析构函数被调用 return len。 /返回得到的长度 private: Point p1,p2。/Point 类的对象p1,p2 doublelen。Line:Line(Line &L:p1(L.p1,p2(L.p2 coutLine 类的拷贝构造函数被调用 / 主函数 Point myp1(1,1,myp2(4,6 。 /建立 Point 类的对象Line line1(1,1,4,6 。Line line2(line1 。
7、/利用拷贝构造函数建立一个新对象coutThe length of the line1 is: 。coutendl 。coutThe length of the line2 is: 。cout函数,根本没有真正显示出模板类的优点,后来通过和其他同学的讨论研究才发现自己在理解上有些偏差,于是我毫不犹豫地把原来学的程序放弃了,直接重新开始我的新任务,最后终于搞出来时,心情异常激动。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 6 页,共 19 页个人资料整理仅限学习使用题目 2:人员信息管理系统本设计题目的任务是设计一个人员信息管理系统,并使用虚函数
8、实现多态性,完成显示不同人员信息的任务。设计employee 类,用来存储雇员的编号,级别,月薪等信息,能够对其进行操作和显示。以 employee 为基类派生出technician 类,表示兼职技术人员,以及manager类,表示经 理 , 以 及salesman 类 , 表 示 兼 职 推 销 员 。 利 用 manage 类 和salesman 类 派 生 出salesmanager类,表示销售经理。注意使用虚基类。进一步使用虚函数和抽象类改进上面的程序。本设计题目的目的是让学生进一步理解和掌握C+中类的继承,虚基类,多态性,虚函数以及抽象类技术及实现方法。1. 设计框图:employe
9、e # name:char20 # individualEmpNo:int #grade:int #accumPay:float #employeeNo:int=1000 + employee( + employee( + pay(:void + promote(:int: void + SetName(: char*: void + GetName(:char* + GetindividualEmpNo(。salesman # CommRate:float # sales:float + salesman( + pay(:void manager # monthliyPay:float +
10、manager( +pay(:void salesmanager + salesmanager( + pay(: void technician - hourlyRate:float - workHours:int + technician( +SetworkHours(wh:int:void 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 7 页,共 19 页个人资料整理仅限学习使用2、源程序:#include #include using namespace std。class employee protected: char name20。
11、/姓名intindividualEmpNo 。 /个人编号int grade。 /级别float accumPay。 /月薪总额static intemployeeNo 。 /本公司职员编号目前最大值public: employee(。 /够造函数employee(。 / void pay( 。void promote(int 。voidSetName(char * 。char * GetName( 。intGetindividualEmpNo( 。intGetgrade(。floatGetaccumPay( 。classtechnician:public employee private:
12、floathourlyRate 。intworkHours 。public: technician( 。voidSetworkHours(intwh 。void pay( 。classsalesman:virtual public employee protected: floatCommRate 。float sales。public: salesman(。voidSetsales(float sl 。精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 8 页,共 19 页个人资料整理仅限学习使用void pay( 。classmanager:vir
13、tual public employee protected: floatmonthlyPay 。public: manager(。void pay( 。classsalesmanager:publicmanager,public salesman public: salesmanager(。void pay( 。int employee:employeeNo=1000 。employee:employee( individualEmpNo=employeeNo+。grade=1。accumPay=0.0。 employee:employee( void employee:pay( void
14、employee:promote(int increment grade+=increment 。 void employee:SetName(char * names strcpy(name,names。 char * employee:GetName( return name 。 int employee:GetindividualEmpNo( returnindividualEmpNo。 int employee:Getgrade( return grade 。 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 9 页,共 19 页个人资料整理
15、仅限学习使用float employee:GetaccumPay( returnaccumPay。 technician:technician( hourlyRate=100 。 void technician:SetworkHours(intwh workHours=wh 。 void technician:pay( accumPay=hourlyRate*workHours。 salesman:salesman( CommRate=0.04 。 void salesman:Setsales(float sl sales=sl。 void salesman:pay( accumPay=sal
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年面向对象程序方案课程方案报告 通过组合和派生构成新类人员信息管理系统成绩管理系统 2022 面向 对象 程序 方案 课程 报告 通过 组合 派生 构成 人员 信息管理 系统 成绩管理系统
链接地址:https://www.taowenge.com/p-38628564.html
限制150内