面向对象的程序设计实验报告Word下载.docx
《面向对象的程序设计实验报告Word下载.docx》由会员分享,可在线阅读,更多相关《面向对象的程序设计实验报告Word下载.docx(19页珍藏版)》请在冰点文库上搜索。
![面向对象的程序设计实验报告Word下载.docx](https://file1.bingdoc.com/fileroot1/2023-5/5/0c9728e8-2177-4d6c-b107-1369939a97dd/0c9728e8-2177-4d6c-b107-1369939a97dd1.gif)
Point();
Point(int);
~Point(){cout<
<
"
Point类的析构函数被调用\n"
;
}
Point(Point&
p)
{cout<
Point的拷贝构造函数\n"
private:
intj;
};
classCircle{
Circle();
Circle(int,int,int);
~Circle(){cout<
Circle类的析构函数被调用\n"
Circle(Circle&
c)
Circle的拷贝构造函数\n"
inti;
Pointp;
Circle:
:
Circle()
i=0;
cout<
Circle类的默认构造函数被调用\n"
Circle(inti1,intj1,intk1):
p(k1)
i=i1;
Circle类的带参数的构造函数被调用\n"
Point:
Point()
{intk;
k=0;
Point类的默认构造函数被调用\n"
Point(intk1)
k=k1;
Point类的带参数的构造函数被调用\n"
voidmain()
使用组合类调用\n"
CircleC1;
CircleC2(1,2,3);
CircleC3=C2;
派生类实现
Point(){cout<
Point类的默认的构造函数\n"
i1=0;
Point(inti)
Point类的带参数构造函数\n"
i1=i;
Point类的拷贝构造函数\n"
i1=p.i1;
Point类的析构函数\n"
inti1;
classCircle:
publicPoint
Circle(){cout<
Circle类的默认的构造函数\n"
i2=0;
Circle(int,int);
c);
Circle类的析构函数\n"
inti2;
Circle(intp1,intp2):
Point(p1)
Circle类的带参数构造函数\n"
i2=p2;
Circle(Circle&
c):
Point(c)
Circle类的拷贝构造函数\n"
i2=c.i2;
{cout<
使用派生类调用\n"
Circlec1;
Circlec2(1,2);
Circlec3=c2;
组合类模板
Circle的拷贝构造函数被调用\n"
template<
classT>
classStack
Stack();
Stack(Stack&
);
~Stack();
Tn;
Stack<
T>
Stack(){cout<
类模板的默认构造函数\n"
Stack(Stack&
s){n=s.n;
~Stack(){cout<
类模板的析构函数\n"
使用组合类模板调用\n"
派生类模板
~类模板的析构函数\n"
使用派生类模板\n"
总结
上机操作中,熟悉书中知识,复习巩固组合类、派生类以及类模板的使用和实现;
掌握在不同的实现方法中,如何设计相应的构造函数和拷贝构造函数,进一步理解程序调用它们及析构函数的执行顺序,掌握组合类和派生类。
另外进一步掌握和理解类模板的技术及其实现方法。
在上机操作中需要不断进行思考和调试,耐心改正代码错误,进一步完善代码。
题目2:
人员信息管理系统
本设计题目的任务是设计一个人员信息管理系统,并使用虚函数实现多态性,完成显示不同人员信息的任务。
设计employee类,用来存储雇员的编号,级别,月薪等信息,能够对其进行操作和显示。
以employee为基类派生出technician类,表示兼职技术人员,以及manager类,表示经理,以及salesman类,表示兼职推销员。
利用manage类和salesman类派生出salesmanager类,表示销售经理。
注意使用虚基类。
进一步使用虚函数和抽象类改进上面的程序。
本设计题目的目的是让学生进一步理解和掌握C++中类的继承,虚基类,多态性,虚函数以及抽象类技术及实现方法。
代码
classemployee
protected:
charname[20];
intempNo;
floatsalary;
employee(char*cp="
intno=1001);
employee(employee&
voidsetname(char*cp);
voidsetempNo(intno);
voidsetsalary(floatsa);
char*getname();
intgetempNo();
floatgetsalary();
virtualfloatpay(){return0;
employee:
employee(char*cp,intno)
inti=0;
while(*cp)
{
name[i]=*cp;
i++;
cp++;
}
name[i]='
\0'
empNo=no;
employee(employee&
em)
while(em.name[i])
name[i]=em.name[i];
empNo=em.empNo;
salary=em.salary;
voidemployee:
setname(char*cp)
setempNo(intno)
setsalary(floatsa)
salary=sa;
char*employee:
getname()
returnname;
intemployee:
getempNo()
returnempNo;
floatemployee:
getsalary()
returnsalary;
classmanager:
publicemployee
manager(char*,int,int);
voidsetproductNum(intn)
{productNum=n;
intgetproductNum()
{returnproductNum;
floatpay();
private:
intproductNum;
staticfloatproper;
floatmanager:
proper=20;
manager:
manager(char*name,intno,intpronum)
:
employee(name,no)
productNum=pronum;
pay()
salary=productNum*proper*0.2;
classtechnician:
publicvirtualemployee
technician(char*,int,float);
voidsethours(floath)
{workHours=h;
floatgethours()
{returnworkHours;
floatworkHours;
staticfloatpayperhour;
floattechnician:
payperhour=40;
technician:
technician(char*name,intno,floathours)
workHours=hours;
salary=workHours*payperhour;
classsalesman:
salesman(char*,int,float);
voidsetmonthlysales(intnum)
{monthlysales=num;
intgetmonthlysales()
{returnmonthlysales;
floatmonthlysales;
staticfloatpercent;
floatsalesman:
percent=0.5;
salesman:
salesman(char*name,intn,floatsn)
employee(name,n)
monthlysales=sn;
salary=monthlysales*percent;
classsalesmanager:
publicvirtualemployee
salesmanager(char*,int,float);
voidsetsales(intm)
{sales=m;
intgetsales()
{returnsales;
floatsales;
floatsalesmanager:
salesmanager:
salesmanager(char*name,intno,floatsm)
sales=sm;
salary=sales*percent+5000;
floatCalculateSalary(employee*emptr)
floatsalary=emptr->
pay();
managerw1("
张三"
1001,1000);
techniciant1("
李四"
1002,200);
salesmans1("
王五"
1003,10000);
salesmanagerz1("
桂六"
1004,2000);
工人"
w1.getname()<
的月薪为"
CalculateSalary(&
w1)<
元\n"
科研人员"
t1.getname()<
t1)<
销售人员"
s1.getname()<
s1)<
销售经理"
z1.getname()<
z1)<
写代码出现很多错误,同学之间互相合作请教可以顺利解决难题,并且将知识融会贯通,写的代码很粗糙,可以改进,比如可以单一的选择看一个人的业绩也可以全部显示,总之学习C编程方面还需要很多的努力