上海电力学院
实验报告
课程名称Visual C++ 实验项目类和对象、继承和派生
姓名储昊学号20132234 班级2013112 专业通信工程
同组人姓名指导教师姓名实验日期
实验内容
程序Ex_Class:定义一个人员类CPerson,包括的数据成员有姓名、编号、性别和用于输入/输出的成员函数。
在此基础上派生出学生类Cstudent(增加成绩)和教师类Cteacher(增加教龄),并实现对学生和教师信息的输入/输出。
编写一个完整的测试程序,并将Ex_Class 所有的类定义保存在Ex_Class.h中,将类的成员函数实现代码保存在Ex_Class.cpp中。
实验准备和说明
(1)在学习完第2章的“继承和派生”内容之后进行本次试验。
(2)编写本次上机所需要的程序。
实验步骤
1.创建工作文件夹
打开计算机,在“D:\Visual C++程序\LiMing\5”文件夹中创建一个新的子文件夹“5”。
2.输入程序Ex_Class.h
(1)启动Visual C++6.0。
(2)单击标准工具栏上的“New Test File”按钮,在新打开的文档窗口中输入下列程序代码:
#include<iostream.h>
#include<string.h>
class CPerson
{
public:
CPerson()
{
strcpy(pName,"");
strcpy(pID,"");
}
CPerson(char*name,char*id,bool isman=1)
{
Input(name,id,isman);
}
void Input(char*name,char*id,bool isman) {
setName(name);
setID(id);
setSex(isman);
}
void Output()
{
cout<<"姓名:"<<pName<<endl;
cout<<"编号:"<<pID<<endl;
char*str=bMan?"男":"女";
cout<<"性别:"<<str<<endl;
}
public:
//姓名属性操作
char*getName()const
{return(char*)pName;}
void setName(char*name)
{
int n=strlen(name);
strncpy(pName,name,n);
pName[n]='\0';
}
//编号属性操作
char*getID()const
{
return(char*)pID;
}
void setID(char*id)
{
int n=strlen(id);
strncpy(pID,id,n);
pID[n]='\0';
}
//性别属性操作
bool getSex(){return bMan;}
void setSex(bool isman)
{
bMan=isman;
}
private:
char pName[20];
char pID[20];
bool bMan;
};
class CStudent:public CPerson
{
public:
CStudent(char*name,char*id,bool isman=1);
~CStudent(){}
void InputScore(double score1,double score2,double score3);
void Print();
CPerson student;
private:
double dbScore[3];
};
class CTeacher:public CPerson
{
public:
CTeacher(char*name,char*id,bool isman=1,int years=10);
~CTeacher(){}
void Print();
private:
int nTeachYears;
};
(3)单击标准工具栏上的“Save”按钮,弹出“保存为”文件对话框。
将文件定位到“D:\Visual C++程序\LiMing\5”,文件名为Ex_Class.h,结果如图:
3.输入程序Ex_Class.cpp
(1)单击标准工具栏上的“New Test File”按钮,在新打开的文档窗口中输入下列程序代码:
#include<iostream.h>
#include"Ex_class.h"
//类CStudent实现代码
CStudent::CStudent(char*name,char*id,bool isman)
:student(name,id,isman)
{
dbScore[0]=0;
dbScore[1]=0;
dbScore[2]=0;
}
void CStudent::InputScore(double score1,double score2,double score3)
{
dbScore[0]=score1;
dbScore[1]=score2;
dbScore[2]=score3;
}
void CStudent::Print()
{
student.Output();
for(int i=0;i<3;i++)
cout<<"成绩"<<i+1<<":"<<dbScore[i]<<endl;
}
//类CTeacher实现代码
CTeacher::CTeacher(char*name,char*id,bool isman,int years)
{
nTeachYears=years;
Input(name,id,isman);
}
void CTeacher::Print()
{
Output();
cout<<"教龄:"<<nTeachYears<<endl;
}
//主函数
int main()
{
CStudent stu("LiMing","21010211");
cout<<stu.getName()<<endl;
cout<<stu.student.getName()<<endl;
stu.Print();
stu.student.setName("LingLing");
stu.student.setSex(0);
stu.InputScore(80,90,95);
stu.Print();
CTeacher tea("Ding","911085");
tea.Print();
tea.setID("9110234");
tea.Print();
return 0;
}
(2)单击标准工具栏的“Save”按钮,弹出“保存为”文件对话框。
将文件保存为Ex_Class.cpp。
(3)编译运行。
结果如图:
(4)选择“工程”→“添加工程”→“文件”菜单命令,在弹出的“插入文件到工程”对话框中,选定前面的文件Ex_Class.h,单击确定按钮,此时的开发环境结果如图:
4.退出Visual C++6.0。