C++实验报告

C++语言实验报告

班级:计科1501

学号:1508030130

姓名:刘琦

一、实验目的

1.掌握面向对象编程的基本思想

2.培养解决实际问题的能力

3.熟练掌握VC++6.0调试环境

二、实验题目

分别定义Teacher
(教师)类和Cadre
(干部)类,采用多重继承方式由这两个类派生出新类Teacher_Cadre
(教师兼干部)类。要求:

(1)在两个基类中都包含姓名、年龄、性别、地址、电话等数据成员。

(2)在Teacher
类中还包含数据成员title(职称),在Cadre
类中还包含数据成员post(职务)。在Teacher_Cadre
类中还包含数据成员wages(工资)。

(3)对两个基类中的姓名、年龄、性别、地址、电话等数据成员用相同的名字,在引用这些数据成员时,指定作用域。

(4)在类体中声明成员函数,在类外定义成员函数。

(5)在派生类Teacher_Cadre
的成员函数show
中调用Teacher
类中的display
函数,输出姓名、年龄、性别、职称、地址、电话,然后再用cout
语句输出职务与工资。

(6)利用前面所学的知识,扩充新功能。

三、实验步骤

1.题目分析

要求一、二、四很容易实现;

第三个要求是对两个基类中相同的数据成员使用相同的名字,引用时指定作用域。因为要引用数据成员,而继承得来的基类的私有成员只能通过基类的成员函数来引用,不能通过任何其他方式引用。所以要想在派生类中引用基类的成员变量,一个方法是直接引用基类成员函数,但是这样的话需要额外构造基类成员函数;另一种方法是将基类的成员变量声明为保护(protected)。显然,后一种方法更加优秀。

要求五:①在成员函数show()中调用Teacher类的display()函数。因为是public继承,所以Teacher类中的public成员函数display()在其派生类Teacher_Cadre中依然是public成员函数。故在成员函数show()中可直接调用。又因为Teacher_Cadre的父类Cadre中也有public成员函数display(),所以在调用Teacher类的成员函数display()时需要加上作用域限定符Teacher::。

②使用cout输出职务与工资。子类Teacher_Cadre通过public继承了父类Teacher和Cadre的成员函数和成员变量,又因为两个父类的成员变量均为protected,故在类Teacher_Cadre中他们依旧是protected,可被Teacher_Cadre类的成员函数直接引用。所以直接使用cout输出即可。

要求六:可以尝试以此为基础构造一个教职工信息管理系统,分别用以上三个类声明数组来存储信息,再通过fstream头文件的应用来进行文件的读取与输出。

2.程序源代码

//
9.cpp -- homework

#include
<iostream>

#include
<string>

using
namespace std;

class
Teacher

{

public:

Teacher(){}

Teacher(string
na, int a, string se, string adr, long pn, string titl) :

name(na),

age(a),

sex(se),

address(adr),

phone_number(pn),

title(titl){}

void
set();

void
display();

protected:

string
name;

int
age;

string
sex;

string
address;

long
phone_number;

string
title;

};

class
Cadre

{

public:

Cadre(){}

Cadre(string
na, int a, string se, string adr, long pn, string pst) :

name(na),

age(a),

sex(se),

address(adr),

phone_number(pn),

post(pst){}

void
set();

void
display();

protected:

string
name;

int
age;

string
sex;

string
address;

long
phone_number;

string
post;

};

class
Teacher_Cadre : public Teacher, public Cadre

{

public:

Teacher_Cadre(){}

Teacher_Cadre(string
na, int a, string se, string adr, long pn, string titl, string pst,
float w) :

Teacher(na,
a, se, adr, pn, titl),

Cadre(na,
a, se, adr, pn, pst),

wages(w){}

void
show();

protected:

float
wages;

};

//
main function

int
main()

{

Teacher_Cadre
t("ql", 18, "female", "xiankejidaxue",
18300000000, "Student", "monitor", 180000);

t.show();

return
0;

}

//
class Teacher‘s member function

void
Teacher::set()

{

cout
<< "please input the data of the teacher: \n";

cout
<< "please input the name: ";

cin
>> name;

cout
<< "please input the age: ";

cin
>> age;

cout
<< "please input the sex: ";

cin
>> sex;

cout
<< "please input the address: ";

cin
>> address;

cout
<< "please input the phone number: ";

cin
>> phone_number;

cout
<< "please input the title: ";

cin
>> title;

}

void
Teacher::display()

{

//
cout << "The data of the teacher is: \n";

cout
<< "Name: " << name << endl;

cout
<< "Age: " << age << endl;

cout
<< "Sex: " << sex << endl;

cout
<< "Address: " << address << endl;

cout
<< "Phone Number: " << phone_number <<
endl;

cout
<< "Title: " << title << endl;

}

//
class Cadre‘s member function

void
Cadre::set()

{

cout
<< "please input the data of the cadre: \n";

cout
<< "please input the name: ";

cin
>> name;

cout
<< "please input the age: ";

cin
>> age;

cout
<< "please input the sex: ";

cin
>> sex;

cout
<< "please input the address: ";

cin
>> address;

cout
<< "please input the phone number: ";

cin
>> phone_number;

cout
<< "please input the post: ";

cin
>> post;

}

void
Cadre::display()

{

//
cout << "The data of the cadre is: \n";

cout
<< "Name: " << name << endl;

cout
<< "Age: " << age << endl;

cout
<< "Sex: " << sex << endl;

cout
<< "Address: " << address << endl;

cout
<< "Phone Number: " << phone_number <<
endl;

cout
<< "Post: " << post << endl;

}

//
// class Teacher_Cadre‘s member function

//
void Teacher_Cadre::set()

//
{

//
cout << "please input the data of the teacher_cadre: \n";

//
cout << "please input the name: ";

//
cin >> name;

//
cout << "please input the age: ";

//
cin >> age;

//
cout << "please input the sex: ";

//
cin >> sex;

//
cout << "please input the address: ";

//
cin >> address;

//
cout << "please input the phone number: ";

//
cin >> phone_number;

//
cout << "please input the title: ";

//
cin >> title;

//
cout << "please input the post: ";

//
cin >> post;

//
cout << "please input the wage: ";

//
cin >> wages;

//
}

void
Teacher_Cadre::show()

{

cout
<< "The data of the teacher_cadre is: \n";

Teacher::display();

cout
<< "Post: " << Cadre::post << endl;

cout
<< "Wages: " << wages << endl;

}

3.程序运行结果及分析

在gcc编译器下没有警告与错误,运行结果如下:

The
data of the teacher_cadre is:

Name:
ql

Age:
18

Sex:
female

Address:
xiankejidaxue

Phone
Number: 18300000000

Title:
Student

Post:
monitor

Wages:
180000

时间: 2024-10-09 17:10:04

C++实验报告的相关文章

广外第二周的实验报告来这里分享一下

虽然有很多还不知道怎么改,可能也有很多测试不到的地方,但是通过这个星期我好歹了解了好多东西啊 实验报告 通过本次学习,能了解到VC6.0.是用于将已生成的C++语言源程序代码转换为计算机能读懂的目标代码,计算机用的均是二进制代码.编辑完成后它首先生成扩展名为obj的文件(程序编译后的二进制文件),若想进行之后的链接.运行过程,必须不断修改源程序文件至完全正确. 在文件→新建→源代码这里可以新建源代码:新建→打开项目或文件中可以打开以前写过的源代码或者程序:运行→编译中即把所打源文件转换为二进制代

2062326 齐力锋 实验四《Java面向对象程序设计Android开发》实验报告

北京电子科技学院(BESTI) 实 验 报 告 课程: 程序设计与数据结构  班级: 1623  姓名: 齐力锋 学号: 20162326 成绩: 指导教师: 娄嘉鹏/王志强 实验日期: 2017年5月26日 实验密级:非密级 预习程度: 优良 实验时间: 2 Hours 仪器组次: 必修/选修: 必修 实验序号: 04 实验名称:Java面向对象程序设计Android开发 实验内容 1.Android Stuidio的安装测试: 参考<Java和Android开发学习指南(第二版)(EPUBI

词法分析实验报告

词法分析实验报告 一.        实验目的 编制一个词法分析器,通过该词法分析程序的设计实例,进一步了解词法分析程序构造的一些细节. 二.        实验内容和要求 实验内容: 对字符串表示的源程序,从左到右进行扫描和分解.根据词法规则,识别出一个一个具有独立意义的单词符号,以供语法分析之用,若发现词法错误,则返回出错信息. 实验要求: 输入:源程序字符串 输出:二元组(种别,单词本身) 待分析语言的词法规则 三. 实验方法.步骤及结果测试 源程序名:压缩包文件(rar或zip)中源程序

DAY01 WINDOWS 实验报告

DAY 01   Windows 实验一 实验名称:虚拟机的安装以及win7系统的安装 实验描述:学习安装虚拟机,以及安装不同的系统,可以满足用户不同时期的不同的需求 实验步骤: 步骤1:点击开始-选择vmware文件夹-点击Vmware Workstation                             步骤2:点击文件-新建虚拟机-下一步-选择客户机操作系统和版本-选择虚拟机安装位置-设置虚拟机的处理器.内存等信息-完成虚拟机裸机的安装 步骤3:点击编辑虚拟器-双击CD/DVD(

DAY02 WINDOWS 实验报告

实验一 实验名称: ghost做系统的备份与还原 实验描述:对系统进行备份,可以使用户在电脑中病毒或出故障后,可以还原到一个比较纯净的系统环境 实验步骤: 步骤1:点击编辑虚拟机设置-CD/DVD-选择镜像文件-选择超级急救箱 步骤2:启动虚拟机-进入资源管理器-运行超级急救箱安装文件 步骤3:重启系统-选择超级急救箱-选择ghost32 for winpe 步骤4:进入PE系统以后,点击ghost32程序-选择local->partition->To image-下一步-选择要备份的分区-选

数据结构与算法 第四次实验报告 图

数据结构与算法 第四次实验报告 姓名:许恺 学号:2014011329 班级:计算机14-1     中国石油大学(北京)计算机科学与技术系 1.图的定义,文件为"Graph.h" #ifndef GRAPH_H//定义头文件 #define GRAPH_H #include<string>//引入标准库中的头文件 using namespace std; const int MaxSize=12; struct ArcNode//定义边表结点 { int adjvex;/

《信息安全系统设计基础》第二次实验实验报告

<信息安全系统设计基础>实验二实验报告 实验报告封面 实验目的与要求 解多线程程序设计的基本原理,学习 pthread 库函数的使用. 了解在 linux 环境下串行程序设计的基本方法. 掌握终端的主要属性及设置方法,熟悉终端I /O 函数的使用.学习使用多线程来完成串口的收发处理. 熟悉linux开发环境,学会基于S3C2410的linux开发环境的配置和使用.使用linux的armv4l-unknown-linux-gcc编译,使用基于NFS方式的下载调试,了解嵌入式开发的基本过程 实验步

《信息安全系统设计》第四次实验报告

实验报告:外设驱动设计 小组成员 :20145306张文锦,20145334赵文豪,20145331魏澍琛. 实验仪器:windows xp,arm开发板. 实验内容.步骤与体会 1. 进入/arm2410cl/exp/drivers/01_demo,使用vi 编辑器阅读理解源代码. 2. Makefile 中有两种编译方法,可以在本机上使用gcc:也可以使用交叉编译器进行编译. 如果编译的时候出现问题,需要是在/usr/src 下没有建立一个linux 连接,可以使用下面的命令:[[email

20145301《Java程序设计》实验报告一:Java开发环境的熟悉

20145301<Java程序设计>实验报告一:Java开发环境的熟悉 课程:Java程序设计 实验名称:Java开发环境的熟悉 实验目的与要求: 1.没有Linux基础的同学建议先学习<Linux基础入门(新版)><Vim编辑器> 课程: 2.完成实验.撰写实验报告,实验报告模板见QQ群,注意实验报告重点是运行结果,遇到的问题(工具查找,安装,使用,程序的编辑,调试,运行等).解决办法(空洞的方法如“查网络”.“问同学”.“看书”等一律得0分)以及分析(从中可以得到什

20145216史婧瑶《Java程序设计》第一次实验报告

实验一 Java开发环境的熟悉(Linux + Eclipse) 实验内容 1.使用JDK编译.运行简单的Java程序: 2.使用Eclipse 编辑.编译.运行.调试Java程序. 实验要求 1.没有Linux基础的同学建议先学习<Linux基础入门(新版)><Vim编辑器> 课程: 2.完成实验.撰写实验报告,实验报告模板见QQ群,注意实验报告重点是运行结果,遇到的问题(工具查找,安装,使用,程序的编辑,调试,运行等).解决办法(空洞的方法如“查网络”.“问同学”.“看书”等一