1、
实验内容:
(1) 定义一个人员类Person,包括姓名、编号、性别等数据成员和用于输入、输出的成员函数,在此基础上派生出学生类Student类(增加成绩)和教师类Teacher(增加教龄),并实现对学生和教师信息的输入和输出。
实验源代码:
#include
2、 char name[18]; //姓名 int num; //编号 char sex[3]; //性别 public: char na[18],se[3]; int nu; Person(){} //构造函数 void Imput() //输入信息 { cout<<"请输入姓名:"; cin>>na; cout<<"请输入编号:"; cin>>nu; cout<<"请输入性别:"; cin>>se;
3、
}
void Set() //设置信息
{
strcpy(name,na);
num=nu;
strcpy(sex,se);
}
void Show() const; //显示信息函数定义声明
};
#endif
//Student.h:
#include
4、ic Person //声明类Student
{
protected:
double record; //成绩
public:
double re;
Student(){} //构造函数
void Imput()
{
cout<<"请输入学生的信息:"<
5、et()
record=re;
}
void Show() const;
};
#endif
//Teacher.h:
#include
6、 //构造函数
void Imput()
{
cout<
7、n::Show() const //显示信息函数定义
{
cout<<"姓名:"< 8、< 9、{
Student s; //定义对象s
s.Imput(); //输入学生信息
s.Set(); //设置学生信息
Teacher t; //定义对象t
t.Imput(); //输入教师信息
t.Set(); //设置教师信息
s.Show(); //显示学生信息
t.Show(); //显示教师信息
system("PAU 10、SE");
return 0;
}
实验结果:
(2) 定义一个抽象类Shape,包含纯虚函数Area()(用来计算面积)和SetShape()(用来重设形状大小)。然后派生出三角形类Triangle类、矩形Rect类、圆Circle类,分别求其面积。最后定义一个Total_Area类,计算这几个形状的面积之和,各形状的数据通过Total_Area类的构造函数或成员函数来设置。编写一个完整的程序。
实验源代码:
//Shape.h:
#ifndef SHAPE_H
#define SHAPE_H
class Shape 11、 //声明抽像类Shape
{
public:
virtual double Area()=0; //纯虚函数Area()
virtual void SetShape()=0; //纯虚函数SetShape()
};
#endif
//Triangle.h:
#ifndef TRIANGLE_H
#define TRIANGLE_H
#include"Shape.h"
class Triangle:pu 12、blic Shape //声明三角形类Triangle
{
private:
double E; //底
double H; //高
public:
Triangle(){} //参数为空的构造函数
Triangle(double e,double h):E(e),H(h){}
13、
double Area(){return 0.5*E*H;} //返回三角形面积
void SetShape(); //重设三角形的大小
};
#endif
//Rect.h:
#ifndef RECT_H
#define RECT_H
#include"Shape.h"
class Rect:public Shape //声明矩形类Rect
{
private:
double L; 14、 //长
double W; //宽
public:
Rect(){} //参数为空的构造函数
Rect(double l,double w):L(l),W(w){}
double Area(){return L*W;} //返回矩形面积
void SetShape(); 15、 //重设矩形的大小
};
#endif
//Circle.h:
#ifndef CIRCLE_H
#define CIRCLE_H
#include"Shape.h"
class Circle:public Shape //声明圆类Circle
{
private:
double R; //半径
public:
Circle(){} 16、 //参数为空的构造函数
Circle(double r):R(r){}
double Area(){return 3.1415926*R*R;} //返回圆的面积
void SetShape(); //重设圆的大小
};
#endif
//Total_Area.h:
#include 17、e"Rect.h"
#include"Circle.h"
using namespace std; //使用命名空间
#ifndef TOTAL_AREA_H
#define TOTAL_AREA_H
class Total_Area //声明类Total_Area
{
private:
Shape *a[3]; //定义抽象类Shape类型的数组指针
public:
Total 18、Area(double Te=0,double Th=0,double Rl=0,double Rw=0,double Cr=0)
//分配空间
{
a[0]=new Triangle(Te,Th);
a[1]=new Rect(Rl,Rw);
a[2]=new Circle(Cr);
}
~Total_Area() //析构函数
{
delete a[0];
delete a[1];
delete a[2];
}
void SetShape() 19、 //设置形状的大小
{
a[0]->SetShape();
a[1]->SetShape();
a[2]->SetShape();
}
double GetTriangle(){return a[0]->Area();}
double GetRect(){return a[1]->Area();}
double GetCircle(){return a[2]->Area();}
double GetArea(); //返回三个形状的 20、面积和
};
#endif
//Triangle.cpp:
#include"Triangle.h"
#include 21、nclude 22、命令
using namespace std; //使用命名空间
void Circle::SetShape()
{
cout<<"请输入重设的圆的半径:"< 23、am> //编译预处理命令
#include"Shape.h"
#include"Triangle.h"
#include"Rect.h"
#include"Circle.h"
#include"Total_Area.h"
using namespace std; //使用命名空间
int main() //主函数main()
{
co 24、ut<<"输入的三角形的底和高,矩形的长和宽,圆的半径为:2和4,3和5,6"<






