求一份C++的课程设计!要求至少包含2个类 程序需要有封装,继承,多态!(最好是有程序的完全解释和设计步骤)
求一份C++的课程设计!要求至少包含2个类程序需要有封装,继承,多态!(最好是有程序的完全解释和设计步骤)回答好的可以追加分~~~刚才上面的答案编译中有一个错误~~~...
求一份C++的课程设计!要求至少包含2个类 程序需要有封装,继承,多态!(最好是有程序的完全解释和设计步骤)
回答好的可以追加分~~~
刚才上面的答案编译中有一个错误~~~ 展开
回答好的可以追加分~~~
刚才上面的答案编译中有一个错误~~~ 展开
1个回答
展开全部
//
//说明:以下代码在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;
};
//说明:以下代码在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;
};
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询