求一份C++的课程设计!要求至少包含2个类 程序需要有封装,继承,多态!(最好是有程序的完全解释和设计步骤)

求一份C++的课程设计!要求至少包含2个类程序需要有封装,继承,多态!(最好是有程序的完全解释和设计步骤)回答好的可以追加分~~~刚才上面的答案编译中有一个错误~~~... 求一份C++的课程设计!要求至少包含2个类 程序需要有封装,继承,多态!(最好是有程序的完全解释和设计步骤)
回答好的可以追加分~~~
刚才上面的答案编译中有一个错误~~~
展开
 我来答
Leo239
推荐于2016-05-26 · TA获得超过305个赞
知道小有建树答主
回答量:589
采纳率:0%
帮助的人:230万
展开全部
//
//说明:以下代码在VC++ 6.0下编译通过
//

#include "stdafx.h"
#include <iostream>
#include <string>
using namespace std;

/********************************************
下面是person,student,teacher三个类的申明
********************************************/

//定义一个表示人的类Person
class person
{
public:
//person类的构造函数
person();

//下面的display为虚函数,用于多态
virtual void display(void);//此函数用于显示类中的成员

void setage(int);//用于设置人的年龄
void setname(char *);//用于设置人的姓名
void setsex(bool);//用于设置人的性别

protected:
int m_age;//此成员变量用于保存人的年龄
char m_name[32];//保存人的姓名
bool m_sex;//保存人的性别,true为男,false为女
};

//定义一个student类,该类是从person类继承过来的
class student:public person
{
public:
//student 的构造函数
student();

virtual void display(void);//用于显示类中的成员

void SetStdNO(char *);//设置学号

void SetMath(float);//设置数学成绩
void SetEnglish(float);//设置英语成绩
void SetPhysics(float);//设置物理成绩
void SetChem(float);//设置化学成绩

float GetAvg(void);//获取平均成绩
float GetSum(void);//获取总成绩

private:
char m_stdNO[32];//保存学号

float m_math;//数学成绩
float m_english;//英语成绩
float m_physics;//物理成绩
float m_chem;//化学成绩
};

//定义一个teacher类,该类也是从person类继承过来的
class teacher:public person
{
public:
//teacher 的构造函数
teacher();

virtual void display(void);//用于显示类中的成员

void SetTTP(char *);//设置职称

private:
char m_TTP[32];//保存职称
};

/********************************************
下面是person,student,teacher三个类的定义
********************************************/

/*************person类的定义开始***************/

//定义person类的构造函数,在这里对成员变量进行初始化
person::person()
{
*m_name = 0;
m_sex = true;
m_age = 0;
};

//定义person类的打印函数,用于打印person类的的成员信息
void person::display()
{
cout<<"从类person中打印出来的......"<<endl<<endl;

cout<<"姓名\t"<<"性别\t"<<"年龄"<<endl;
cout<<"------------------------"<<endl;
cout<<m_name<<"\t"<<(m_sex?"男\t":"女\t")<<m_age<<endl;
cout<<"************************************END*********************************"<<endl<<endl;
};

//定义person类的设置年龄的接口函数
void person::setage(int iAge)
{
m_age = iAge;
};

//定义person类的设置姓名的接口函数
void person::setname(char * pName)
{
strcpy(m_name,pName);
};

//定义person类的设置姓名的接口函数
void person::setsex(bool blSex)
{
m_sex = blSex;
};
/*************person类的定义结束***************/

/*************student类的定义开始***************/

//定义student类的构造函数,用于初始化student的成员变量
student::student()
:person()
{
m_stdNO[0]= 0;
m_math = m_english = m_physics = m_chem = 0;
};

//定义student类的设置学号接口函数
void student::SetStdNO(char * strStdNo)
{
strcpy(m_stdNO,strStdNo);
};

//定义student类的设置数学成绩的接口函数
void student::SetMath(float fMathValue)
{
m_math = fMathValue;
};

//定义student类的设置英语成绩的接口函数
void student::SetEnglish(float fEnglistValue)
{
m_english = fEnglistValue;
};

//定义student类的设置物理成绩的接口函数
void student::SetPhysics(float fPhysicsValue)
{
m_physics = fPhysicsValue;
};

//定义student类的设置化学成绩的接口函数
void student::SetChem(float fChemValue)
{
m_chem = fChemValue;
};

//定义student类得到平均成绩的接口函数
float student::GetAvg(void)
{
return ((m_chem + m_english + m_math + m_physics) /4);
};

//定义student类得到总成绩的接口函数
float student::GetSum(void)
{
return (m_chem + m_english + m_math + m_physics);
};

//定义student类的打印函数,用于打印student类的成员信息
void student::display()
{
cout<<"从类student中打印出来的......"<<endl<<endl;

cout<<"姓名\t"<<"数学\t"<<"英语\t"<<"物理\t"<<"化学\t"<<"平均成绩\t"<<"总成绩"<<endl;
cout<<"----------------------------------------------------------------------"<<endl;
cout<<m_name<<"\t"<<m_math<<"\t"<<m_english<<"\t"<<m_physics<<"\t"<<m_chem<<"\t"<<GetAvg()<<"\t\t"<<GetSum()<<endl;
cout<<"************************************END*********************************"<<endl<<endl;

};

/*************student类的定义结束***************/

/*************teacher类的定义开始***************/
//定义teacher类的构造函数,在这里对成员变量进行初始化
teacher::teacher()
:person()
{
*m_TTP = 0;
};

//定义teacher类的设置职称的接口函数
void teacher::SetTTP(char * ttp)
{
strcpy(m_TTP,ttp);
};

//定义teacher类的打印函数,用于打印teacher类的成员信息
void teacher::display()
{
cout<<"从类teacher中打印出来的......"<<endl<<endl;

cout<<"姓名\t"<<"性别\t"<<"年龄\t"<<"职称"<<endl;
cout<<"----------------------------------"<<endl;
cout<<m_name<<"\t"<<(m_sex?"男\t":"女\t")<<m_age<<"\t"<<m_TTP<<endl;
cout<<"************************************END*********************************"<<endl<<endl;
};
/*************teacher类的定义结束***************/

/***********************************
下面的代码是对上面定义的类的一个测试举例
***********************************/
int main(int argc, char* argv[])
{
person a;//申明一个person对象a
student b;//申明一个student对象b
teacher c;//申明一个teacher对象c

//申明一个person指针
person * p;

//设置person对象的相关信息
a.setname("张三");
a.setage(16);
a.setsex(true);

//设置student对象的相关信息
b.setname("李四");
b.setage(17);
b.setsex(false);
b.SetMath(85);
b.SetEnglish(95);
b.SetPhysics(80);
b.SetChem(90);
b.SetStdNO("S168");

//设置teacher对象的相关信息
c.setname("王五");
c.setage(35);
c.setsex(false);
c.SetTTP("讲师");

//下面演示函数的多态调用
//当指针p指向不同的对象,总能正确调用相应的对象中的display函数,打印出相应的对象信息.

//指针p指向对象a,因为对象a是person对象,person类中的成员函数display将被调用
p = &a;
p->display();

//指针p指向对象b,将打印出studen对象中的信息
p = &b;
p->display();

//指针p指向对象c,将打印出teacher对象中的信息
p = &c;
p->display();
return 0;
};
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式