类与对象报告.docx
《类与对象报告.docx》由会员分享,可在线阅读,更多相关《类与对象报告.docx(17页珍藏版)》请在冰豆网上搜索。
![类与对象报告.docx](https://file1.bdocx.com/fileroot1/2022-11/28/84cd3bb0-133d-4825-aad3-749a95bbdfb6/84cd3bb0-133d-4825-aad3-749a95bbdfb61.gif)
类与对象报告
北京建筑大学
理学院《面向对象程序设计》课程实验报告
课程名称《面向对象程序设计》实验名称类与对象实验地点日期____________
姓名班级学号指导教师成绩
【实验目的和要求】
实验目的:
1、熟悉类的定义及使用;
2、熟悉构造函数、析构函数及执行过程;
3、熟悉类的各种调用方法(类作为对象成员、动态调用、对象数组、const对象)。
实验要求:
(1)类的定义中必须包含构造函数和析构函数;
(2)录入数据每类人员不少于5人;
(3)主函数中包含对象的动态调用;
【实验内容】
某公司有四类员工,现在需要存储这些员工的姓名、编号、工龄,计算总工资并显示姓名、编号和总工资信息。
对每类员工工资的计算方法不同。
下表是这些员工的工资计算办法,工龄作为已知量从键盘输入。
如经理的总工资=固定工资+工龄工资,而工龄工资=工龄*年增加量。
员工工资计算方法
人员类别
固定工资
计时(元/小时)
工龄年增加(元)
销售提成
经理
有
无
50
无
工人
有
100
50
无
销售经理
有
无
50
5%
销售员
无
无
50
5%
四类员工的信息存在四个对象数组中。
要求通过本系统实现以下功能:
1)完成添加员工的基本信息;
2)根据员工编号计算、查询其工资情况;
3)员工信息的显示;
4)能够显示员工总人数。
【实验步骤】
1.定义类basic,属性包括员工姓名,工号,工龄。
2.分别定义Manager,Worker,SalesManager,Sales四个类,将basic作为这四个类的基类,按照题目要求为其定义属性。
Get_函数和display_函数,分别用来输入员工属性和显示员工信息。
3.在类外定义shurugongren,shurujingli,shuruxiaoshou,shuruxiaoshouyuan这四个子函数,用来输入并显示员工信息。
4.在主函数中建立菜单,通过选择的方法调用子函数。
【实验结果】
1.进入主菜单,选择1
进入“输入与查询基本信息”菜单,选择1
进入“输入并查询经理基本信息”菜单,根据提示信息输入员工信息,并通过输入员工号来查询员工工资等信息
2.“工人信息录入并查询”,“销售经理信息录入并查询”,“销售员信息录入并查询”与“经理信息录入并查询”原理类似,不一一演示,现在输入5,查询员工总数。
3.选择2,退出公司管理系统。
【总结】
1.关于类与基类,主函数与子函数的调用有了更深刻的认识。
2.设置静态变量,统计员工总数,对静态这一概念更加清晰。
3.用到了指针的方法对对象进行动态调用,复习了指针的知识。
4.继承的方法,在不利用友元函数破坏其封装性的情况下,引用基类中的属性。
5.体会到了c++与c语言的不同之处,语言的精简之处。
【附录】
#include
#include
#include
usingnamespacestd;
classbasic
{
protected:
charname[20];
intnumber;
intold;
public:
staticintCount;
Get_b()
{
cout<<"姓名:
";
cin>>name;
cout<<"工号:
";
cin>>number;
cout<<"工龄:
";
cin>>old;
Count++;
}
intNum(){returnnumber;}
};
intbasic:
:
Count=0;
classManager:
publicbasic
{
protected:
intzSalary,guSalary,tSalary;
public:
staticintCount1;
voidGet_M()
{
cout<<"固定工资:
";
cin>>guSalary;
Count1++;
}
voiddisplay_M()
{
tSalary=50*old;
zSalary=guSalary+tSalary;
cout<<"员工姓名:
"<"<"<"<"<}
};
intManager:
:
Count1=0;
classWorker:
publicbasic
{
protected:
intzSalary,guSalary,hour,jSalary,tSalary;
public:
staticintCount2;
voidGet_W()
{
cout<<"工作时间:
";
cin>>hour;
cout<<"固定工资:
";
cin>>guSalary;
Count2++;
}
voiddisplay_W()
{
jSalary=100*hour;
tSalary=50*old;
zSalary=guSalary+jSalary+tSalary;
cout<<"员工姓名:
"<"<"<"<"<"<"<}
};
intWorker:
:
Count2=0;
classSalesManager:
publicbasic
{
protected:
doublezSalary,guSalary,tSalary,xSalary,x;
public:
staticintCount3;
voidGet_SM()
{
cout<<"固定工资:
";
cin>>guSalary;
cout<<"销售额:
";
cin>>x;
Count3++;
}
voiddisplay_SM()
{
xSalary=0.05*x;
tSalary=50*old;
zSalary=guSalary+tSalary+xSalary;
cout<<"员工姓名:
"<"<"<"<"<"<"<}
};
intSalesManager:
:
Count3=0;
classSales:
publicbasic
{
protected:
doublezSalary,tSalary,xSalary,x;
public:
staticintCount4;
voidGet_S()
{
cout<<"销售额:
";
cin>>x;
Count4++;
}
voiddisplay_S()
{
xSalary=0.05*x;
tSalary=50*old;
zSalary=tSalary+xSalary;
cout<<"员工姓名:
"<"<"<"<"<}
};
intSales:
:
Count4=0;
voidshurujingli()
{
ManagermyManager[10];
Manager*myManage=myManager;
cout<<"请录入经理基本信息:
"<for(;myManage<(myManager+10);myManage++)
{
myManage->Get_b();
myManager->Get_M();
cout<<"是否继续?
:
"<<"0:
继续1:
停止"<inta1;
cout<<"请输入";
cin>>a1;
if(a1==1)break;
}
cout<<"经理有"<:
Count1<<"名"<cout<"<intnumber1;
cout<<"请录入员工工号:
";
cin>>number1;
for(;myManage<(myManager+Manager:
:
Count1);myManage++)
{
if(number1==myManage->Num())
myManage->display_M();
}
}
voidshuruxiaoshou()
{
SalesManagermySalesManager[10];
SalesManager*mySalesManage=mySalesManager;
cout<<"请录入销售经理基本信息:
"<for(;mySalesManage<(mySalesManage+10);mySalesManage++)
{
mySalesManage->Get_b();
mySalesManage->Get_SM();
cout<<"是否继续?
:
"<<"0:
继续1:
停止"<inta3;
cout<<"请输入";
cin>>a3;
if(a3==1)break;
}
cout<<"销售经理有"<:
Count3<<"名"<cout<"<intnumber3;
cout<<"请录入员工工号:
";
cin>>number3;
for(;mySalesManage<(mySalesManager+SalesManager:
:
Count3);mySalesManage++)
{
if(number3==mySalesManage->Num())
mySalesManage->display_SM();
}
}
voidshurugongren()
{
WorkermyWorker[10];
Worker*myWorke=myWorker;
cout<<"请录入工人基本信息:
"<for(;myWorke<(myWorker+10);myWorke++)
{
myWorke->Get_b();
myWorke->Get_W();
cout<<"是否继续?
:
"<<"0:
继续1:
停止"<inta2;
cout<<"请输入";
cin>>a2;
if(a2==1)break;
}
cout<<"工人有"<:
Count2<<"名"<cout<"<intnumber2;
cout<<"请录入员工工号:
";
cin>>number2;
for(;myWorke<(myWorker+Worker:
:
Count2);myWorke++)
{
if(number2==myWorke->Num())
myWorke->display_W();
}
}
voidshuruxiaoshouyuan()
{
SalesmySales[10];
Sales*mySale=mySales;
cout<<"请录入销售员基本信息:
"<for(;mySale<(mySales+10);mySale++)
{
mySale->Get_b();
mySale->Get_S();
cout<<"是否继续?
:
"<<"0:
继续1:
停止"<inta4;
cout<<"请输入";
cin>>a4;
if(a4==1)break;
}
cout<<"销售员有"<:
Count4<<"名"<cout<"<intnumber4;
cout<<"请录入员工工号:
";
cin>>number4;
for(;mySale<(mySales+Sales:
:
Count4);mySale++)
{
if(number4==mySale->Num())
mySale->display_S();
}
}
voidzongshu()
{
cout<<"员工总数为:
"<:
Count<<"人"<}
intmain()
{
while
(1)
{
system("cls");
cout<<"**************************公司管理系统**************************\n";
cout<<"1.录入并查询员工基本信息"<cout<<"请选择:
";
inta;
cin>>a;
if(a==1)
{
system("cls");
cout<<"**************************输入与查询基本信息**************************\n";
cout<<"1.经理信息录入并查询"<intb;
cout<<"请选择:
";
cin>>b;
if(b==1)
{
system("cls");
cout<<"**************************经理基本信息输入并查询**************************\n";
shurujingli();
cout<0.是1.否"<intf1;
cin>>f1;
if(f1==0)
system("cls");
if(f1==1)
exit(0);
}
if(b==2)
{
system("cls");
cout<<"**************************销售经理基本信息输入并查询**************************\n";
shuruxiaoshou();
cout<0.是1.否"<intf2;
cin>>f2;
if(f2==0)
system("cls");
if(f2==1)
exit(0);
}
if(b==3)
{
system("cls");
cout<<"**************************工人基本信息输入并查询**************************\n";
shurugongren();
cout<0.是1.否"<intf3;
cin>>f3;
if(f3==0)
system("cls");
if(f3==1)
exit(0);
}
if(b==4)
{
system("cls");
cout<<"**************************销售员基本信息输入并查询**************************\n";
shuruxiaoshouyuan();
cout<0.是1.否"<intf4;
cin>>f4;
if(f4==0)
system("cls");
if(f4==1)
exit(0);
}
if(b==5)
{
system("cls");
zongshu();
cout<0.是1.否"<intf5;
cin>>f5;
if(f5==0)
system("cls");
if(f5==1)
exit(0);
}
elseif(b!
=1&&b!
=2&&b!
=3&&b!
=4&&b!
=5)
{
cout<<"错误"<cout<0.是1.否"<intf6;
cin>>f6;
if(f6==0)
system("cls");
if(f6==1)
exit(0);
}
}
if(a==2)
exit(0);
}
system("cls");
return0;
}