VC++上机实验59 CPerson类.docx
- 文档编号:13882304
- 上传时间:2023-06-18
- 格式:DOCX
- 页数:22
- 大小:17.96KB
VC++上机实验59 CPerson类.docx
《VC++上机实验59 CPerson类.docx》由会员分享,可在线阅读,更多相关《VC++上机实验59 CPerson类.docx(22页珍藏版)》请在冰点文库上搜索。
VC++上机实验59CPerson类
实验5
建立一个名为CPerson的类,有以下私有成员:
姓名、身份证号、性别和年龄。
编写主函数,声明一个CPerson对象,由键盘输入给该对象的成员值初始化。
#include
#include
classCPerson
{
private:
charName[10];
charId[20];
charSex[10];
intAge;
public:
CPerson();
~CPerson();
voidshuru(char*,char*,char*,int);
voidshuchu();
};
CPerson:
:
CPerson()
{
cout<<"声明一个CPerson的对象。
"< } CPerson: : ~CPerson() { cout<<"一个CPerson类正在析构。 "< } voidCPerson: : shuru(char*a,char*b,char*c,intd) { strcpy(Name,a); strcpy(Id,b); strcpy(Sex,c); Age=d; } voidCPerson: : shuchu() { cout<<"名字: "< "< "< "< } voidmain() { CPersonPer; chara[10],b[20],c[10]; intd; cout<<"名字";cin>>a; cout<<"身份证号";cin>>b; cout<<"性别";cin>>c; cout<<"年龄";cin>>d; Per.shuru(a,b,c,d); Per.shuchu(); } 实验6 (1)从键盘上输入对象个数num,动态生成num个CPerson对象; (2)增加一个私有类型的静态成员和一个静态成员函数,静态成员记录CPerson的对象个数,静态成员函数显示当前访问CPerson对象的姓名; (3)完善其构造和析构函数,分别输出当前CPerson总的对象个数。 (4)添加CPerson类的友元函数,用该函数显示当前访问CPerson对象的姓名、身份证号、性别和年龄。 #include #include classCPerson { private: charName[10]; charId[20]; charSex[10]; intAge; staticintcount; staticintcoun; public: CPerson(); ~CPerson(); voidshuru(char*,char*,char*,int); voidshuchu(); staticvoidShowName(CPerson&p); friendvoidShowCPerson(CPerson&p); }; intCPerson: : count=0; intCPerson: : coun=0; voidCPerson: : ShowName(CPerson&p) { count++; cout<<"对象个数: "< cout<<"对象姓名: "< } CPerson: : CPerson() { cout<<"声明第"<<++coun<<"个CPerson的对象。 "< } CPerson: : ~CPerson() { cout<<"第"< "< } voidCPerson: : shuru(char*a,char*b,char*c,intd) { strcpy(Name,a); strcpy(Id,b); strcpy(Sex,c); Age=d; } voidCPerson: : shuchu() { cout<<"名字: "< "< "< "< } voidShowCPerson(CPerson&p) { cout<<"名字: "< "< "< "< } voidmain() { CPerson*pC; chara[20],b[20],c[30]; intd,num,i; cout<<"输入对象个数: "; cin>>num; pC=newCPerson[num]; cout< for(i=0;i { cout<<"名字";cin>>a; cout<<"身份证号";cin>>b; cout<<"性别";cin>>c; cout<<"年龄";cin>>d; pC[i].shuru(a,b,c,d); CPerson: : ShowName(pC[i]); cout<<"友元函数显示当前对象信息----\n"; ShowCPerson(pC[i]); } delete[]pC; } 实验7 (5)从CPerson类中派生出类CEmployee(雇员),增加两个新的数据成员,分别用于表示部门和薪水。 (6)由键盘输入给该对象的成员值初始化,要求显式调用基类CPerson的构造函数。 (参见p91) (7)增加成员函数,可以修改所属部门; (8)增加成员函数,可以修改薪水; (9)增加成员函数,显示雇员对象的所有数据成员值: 姓名、身份证号、性别和年龄,部门和薪水; #include #include classCPerson { public: charName[10]; charID[20]; charSex[4]; intAge; public: CPerson(char*na,char*id,char*se,intag) { strcpy(Name,na); strcpy(ID,id); strcpy(Sex,se); Age=ag; cout<<"人类的构造函数"< cout<<"姓名: "< cout<<"身份证: "< cout<<"性别: "< cout<<"年龄: "< } ~CPerson() { cout<<"人类的析构函数"< } }; classCEmployee: publicCPerson { private: charbumen[20]; intxinshui; public: CEmployee(char*na,char*id,char*se,intag,char*bu,intxi): CPerson(na,id,se,ag) { strcpy(bumen,bu); xinshui=xi; cout<<"雇员类的构造函数"< cout<<"姓名: "< cout<<"身份证: "< cout<<"性别: "< cout<<"年龄: "< cout<<"部门: "< "< } ~CEmployee(){cout<<"雇员类的析构函数"< voidChangeBumen(char*m){strcpy(bumen,m);} voidChangeXinshui(intn){xinshui=n;} voidShowInfo() { cout<<"姓名: "< cout<<"身份证: "< cout<<"性别: "< cout<<"年龄: "< cout<<"部门: "< cout<<"薪水: "< } }; voidmain() { chara[10]; charb[10]; charc[4]; intd; charm[10]; intn; cout<<"姓名: "; cin>>a; cout<<"身份证: "; cin>>b; cout<<"性别: "; cin>>c; cout<<"年龄: "; cin>>d; cout<<"部门: "; cin>>m; cout<<"薪水: "; cin>>n; CEmployeept(a,b,c,d,m,n); charx[10]; inty; cout<<"修改雇员部门为: ";cin>>x;pt.ChangeBumen(x); cout<<"修改雇员薪水为: ";cin>>y;pt.ChangeXinshui(y); cout<<"现在雇员信息为: "< pt.ShowInfo(); } 实验8 (10)生成CPerson类指针,指向一个动态生成的派生类CEmployee对象,要求删除该对象时能够正确析构该派生类对象。 (11)完成CPerson类的ShowInfo成员函数,显示姓名、身份证号、性别和年龄。 (12)完成CEmployee类的ShowInfo成员函数,显示姓名、身份证号、性别和年龄,部门和薪水。 (13)用CPerson类指针指向一个CPerson类对象,正确调用基类的ShowInfo函数成员函数; (14)再用CPerson类指针指向一个CEmployee类对象,正确调用派生类的的ShowInfo函数成员函数. #include #include classCPerson { public: charName[10]; charId[20]; charSex[4]; intAge; public: CPerson() { cout<<"人类的构造函数"< } virtual~CPerson() { cout<<"人类的析构函数"< } voidSetCPerson(char*na,char*id,char*se,intag) { strcpy(Name,na); strcpy(Id,id); strcpy(Sex,se); Age=ag; } virtualvoidShowInfo() { cout<<"姓名: "< "< "< "< } }; classCEmployee: publicCPerson { private: charBumen[50]; doubleXinshui; public: CEmployee() { cout<<"雇员类的构造函数"< } ~CEmployee() { cout<<"雇员类的析构函数"< } voidSetCEmployee(char*na,char*id,char*se,intag,char*bu,doublexi) { strcpy(Name,na); strcpy(Id,id); strcpy(Sex,se); Age=ag; strcpy(Bumen,bu); Xinshui=xi; } voidShowInfo() { cout<<"姓名: "< "< "< "< "< "< } }; voidmain() { chara[10]; charb[20]; charc[4]; intd; charm[50]; doublen; CPerson*p=newCEmployee; cout<<"姓名: ";cin>>a; cout<<"身份证: ";cin>>b; cout<<"性别: ";cin>>c; cout<<"年龄: ";cin>>d; cout<<"部门: ";cin>>m; cout<<"薪水: ";cin>>n; CPersonper,*person; per.SetCPerson(a,b,c,d); CEmployeeEmp; Emp.SetCEmployee(a,b,c,d,m,n); person=&per; person->ShowInfo(); person=&Emp; person->ShowInfo(); deletep; } 实验9 (15)完成CPerson类拷贝构造函数,参见课堂提供源代码 (16)完成CPerson类的运算符++和--函数重载,对年龄进行加减一操作,注意要有前++,后++,前--,后--区别。 (17)完成CPerson类的运算符=重载,实现用等号讲一个CPerson对象对另外一个CPerson对象赋值; (18)完成CEmployee类的运算符+=和-=重载,对对象的薪水进行加减操作。 如CEmployeee1; e1+=1000;则代表e1的薪水增加1000; #include #include usingnamespacestd;(不可代替) classCPerson { private: staticintcount1; charname[20]; charID[20]; charsex[20]; intage; public: CPerson(); CPerson(chara[],charb[],charc[],intd); CPerson(constCPerson&h);//拷贝构造函数 ~CPerson(); staticvoidxs(CPerson&x); voidShowInfo();//输出全部信息 voidShowage(){cout<<"此人的年龄为"< //对年龄进行加减操作 CPersonoperator++();//前++ CPersonoperator++(int); CPersonoperator--();//前-- CPersonoperator--(int); //CPerson对象赋值 CPersonoperator=(CPerson&p); }; intCPerson: : count1=0; CPersonCPerson: : operator++()//前++ { age++; return*this; } CPersonCPerson: : operator++(inti) { CPersontmp; tmp.age=age++; strcpy(tmp.name,name); strcpy(tmp.ID,ID); strcpy(tmp.sex,sex); returntmp; } CPersonCPerson: : operator--()//前-- { age--; return*this; } CPersonCPerson: : operator--(inti) { CPersontmp; tmp.age=age--; strcpy(tmp.name,name); strcpy(tmp.ID,ID); strcpy(tmp.sex,sex); returntmp; } CPersonCPerson: : operator=(CPerson&p) { strcpy(name,p.name); strcpy(ID,p.ID); strcpy(sex,p.sex); age=p.age; return*this; } CPerson: : CPerson(chara[],charb[],charc[],intd) { strcpy(name,a); strcpy(ID,b); strcpy(sex,c); age=d; count1++; cout<<"这是第: "< } CPerson: : CPerson(constCPerson&h) { strcpy(name,h.name); strcpy(ID,h.ID); strcpy(sex,h.sex); age=h.age; count1++; cout<<"这是第: "< } CPerson: : CPerson() { count1++; cout<<"这是第: "< } CPerson: : ~CPerson() { cout<<"这是第: "< count1--; } voidCPerson: : ShowInfo() { cout<<"姓名: "< cout<<"身份证: "< cout<<"性别: "< cout<<"年龄: "< } classCEmployee: publicCPerson { private: staticintcount2; charbm[20];//部门 floatxs;//薪水 public: ~CEmployee(); CEmployee(chara[],charb[],charc[],intd,charit[],floats); CEmployee(constCEmployee&f); CEmployee(); voidgbm(char*);//修改所属部门 voidgxs(float);//修改薪水 voidShow();//输出全部信息 voidShowgxs(){cout<<"此人的薪水为"< //对对象的薪水进行加减操作 CEmployeeoperator+=(floati); CEmployeeoperator-=(floati); }; intCEmployee: : count2=0; CEmployeeCEmployee: : operator+=(floati) { xs+=i; return*this; } CEmployeeCEmployee: : operator-=(floati) { xs-=i; return*this; } CEmployee: : ~CEmployee() { cout<<"这是第: "< count2--; } CEmployee: : CEmployee(chara[],charb[],charc[],intd,charit[],floats): CPerson(a,b,c,d) { strcpy(bm,it); xs=s; count2++; cout<<"这是第: "< } CEmployee: : CEmployee(constCEmployee&f) { strcpy(bm,f.bm); xs=f.xs; count2++; cout<<"这是第: "< } CEmployee: : CEmployee() { count2++; cout<<"这是第: "< } voidCEmployee: : Show() { CPerson: : ShowInfo(); cout<<"部门: "< cout<<"薪水: "< } intmain() {CPersonm1("小新","64038","女",20),m2("木子","1992","女",21); m1=m2; cout<<"*******赋值操作m1=m2********"< cout<<"--------m2------\n"; m2.ShowInfo(); cout< cout<<"--------m1------\n"; m1.ShowInfo(); cout< m1=m2++; cout<<"***************m1=m2++************"< cout<<"--------m1------\n"; m1.ShowInfo(); cout< cout<<"--------m2------\n"; m2.ShowInfo(); cout< m1=++m2; cout<<"**************m1=++m2*************"< cout<<"--------m1------\n"; m1.ShowInfo(); cout< cout<<"--------m2------\n"; m2.ShowInfo(); cout< m1=m2--; cout<<"***
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VC+上机实验59 CPerson类 VC 上机 实验 59 CPerson