Code Bye

小型教师与干部信息管理系统 C++

题目要求:分别定义Teacher(教师)类和Cadre(干部)类,采用多重继承方式由这两个类派生出新类Teacher_Cadre(教师兼干部)。要求:
(1) 在两个基类中都包含姓名、年龄、性别、地址、电话等数据成员。
(2) 在Teacher类中还包含数据成员title(职称),在Cadre类中还包含数据成员post(职务),在Techear_Cadre类中还包含数据成员wages(工资)。
(3) 对两个基类中的姓名、年龄、性别、地址、电话等数据成员用相同的名字,在引用这些数据成员时,指定作用域。
(4) 在类体中声明成员函数,在类外定义成员函数。
(5) 在派生类Teacher_Cadre的成员函数show中调用Teacher类中的display函数,输出姓名、年龄、性别、职称、地址、电话,然后再用cout语句输出职务与工资。
(6) 人员的基本信息分别存储在磁盘文件Teacher.txt,Cadre.txt和Teacher_Cadre.txt文件中,Teacher.txt的格式是:(姓名、年龄、性别、地址、电话、职称),Cadre.txt的格式是:(姓名、年龄、性别、地址、电话、职务),Teacher_Cadre.txt的格式是:(姓名、年龄、性别、地址、电话、职称、职务、工资),要求在操作系统中建立上述文件,并按照上述格式手工录入几条记录,程序首先从文件中读取相应数据,然后完成上述功能。
这是本人的程序,但有一个错误,希望懂的人能帮本人改一下,或是本人的程序中有麻烦,不好的地方也能帮本人指出来,并提出好的建议(后面是本人的.txt的三个文件)
#include<iostream>
#include<string>
#include<fstream>
#include “stdafx.h”
using namespace std;
class Teacher//建立一个Teacher类,含有一些数据成员,一个display函数,在类外定义函数
{
public:
void display(string y);
private:
string name;
int age;
string sex;
string Address;
long Tele;
string title;
};
void Teacher::display(string y)
{
cout<<y<<endl<<endl;     //有入口参数y,y为一个从磁盘中输入到程序中的文字符号
};
class Cadre//另一个有部分和Teacher相同的类
{
private:
string name;
int age;
string sex;
string Address;
long Tele;
protected:
string post;
};
class Teacher_Cadre:public Teacher,public Cadre
{
public:
void show(string y,string s,string q);
private:
float wages;
};
void Teacher_Cadre::show(string y,string s,string q)//类调用外定义函数show,在show中调用基类中的函数display
{
Teacher_Cadre t1;
t1.Teacher::display( y);
cout<<s<<endl; //输出另一个父类中的部分数据成员
cout<<q<<endl;
}
int main()
{
string x,s,q;  //定义了能在磁盘中分别读取全部和部分文件字符的字符串x,s
int nCount=0;//计数
int n=0;
Teacher_Cadre t;
ifstream i, inf1,inf2;
ofstream outf;
outf.open(“out.txt”);
inf2.open(“Teacher_Cadre.txt”);
while(getline(inf2,s)){
nCount++;
if(nCount==6||nCount==12||nCount==18)//输出Teacher_Cadre第六行,第十二行,第十八行的文字数据
{outf<<s<<“\n\n”;}
}
inf1.open(“Cadre.txt”);
while(getline(inf1,q)){
n++;
if(n==6||n==12||n==18)//输出Cadre第六行,第十二行,第十八行的文字数据
{outf<<q<<“\n\n”;}
}
i.open(“Teacher.txt”);
if(!i){cout<<“error!”<<endl;
return -1;}
while(getline(i,x)){  //得到Teacher中的全部数据
outf<<x<<“\n\n”;
}
t.show(x,s,q);//按题目要求调用show函数
inf1.close();
inf2.close();
outf.close();
return 0;
}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~Cadre.txt文件~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~·
name:Linda
age:22
sex:female
Address:南坪中路6号
Tele:15867760099
post:无
name:Bill
age:45
sex:male
Address:静和小区
Tele:15840717229
post:党委书记
name:Rose
age:33
sex:female
Address:武汉路22号
Tele:13840566672
post:党支部书记
name:Mary
age:36
sex:female
Address:振兴街16号
Tele:13555055257
post:团委书记
name:Blank
age:23
sex:female
Address:兴华园
Tele:15500733836
post:党员
~~~~~~~~~~~~~~~~~~~~`Teacher.txt~~~~~~~~~~~~~~~~“
name:Linda
age:22
sex:female
Address:南坪中路6号
Tele:15867760099
title:teacher
name:Bill
age:45
sex:male
Address:静和小区
Tele:15840717229
title:headmaster
name:Rose
age:33
sex:female
Address:武汉路22号
Tele:13840566672
title:advisor
name:Mary
age:36
sex:female
Address:振兴街16号
Tele:13555055257
title:director
name:Blank
age:23
sex:female
Address:兴华园
Tele:15500733836
title:teacher
~~~~~~~~~~~~~~~~~~~~~~~~~~Teacher_Cadre.txt~~~~~~~~~~~~~~~~~~~~~~~
name:Linda
age:22
sex:female
Address:南坪中路6号
Tele:15867760099
wages:4000
name:Bill
age:45
sex:male
Address:静和小区
Tele:15840717229
wages:12000
name:Rose
age:33
sex:female
Address:武汉路22号
Tele:13840566672
wages:6000
name:Mary
age:36
sex:female
Address:振兴街16号
Tele:13555055257
wages:6500
name:Blank
age:23
sex:female
Address:兴华园
Tele:15500733836
wages:4800
解决方案

20

程序错误,暂时没有时间调试跟踪。
不过有个建议。
建立一个类,拥有教师,干部,的共同数据。成员变量全部为私有,增加每个成员变量的set,get函数。
然后从这个类,派生教师,干部类。在增加新的set get函数。
然后再有一个类,从教师,干部多继承。增加相关的函数。

75

什么错误?你要达到这种效果?
看代码呗
#include "stdafx.h"
#include<iostream>
#include<string>
#include<fstream>
using namespace std;
class Teacher//建立一个Teacher类,含有一些数据成员,一个display函数,在类外定义函数
{
public:
    void display(string y);
private:
	string name;
	int age;
	string sex;
    string Address;
	long Tele;
	string title;
};
void Teacher::display(string y)
{
	cout<<y<<endl<<endl;     //有入口参数y,y为一个从磁盘中输入到程序中的文字符号
};
class Cadre//另一个有部分和Teacher相同的类
{
private:
	string name;
	int age;
	string sex;
	string Address;
	long Tele;
protected:
	string post;
};
class Teacher_Cadre:public Teacher,public Cadre
{
public:
	void show(string y,string s,string q);

private:
    float wages;
};
void Teacher_Cadre::show(string y,string s,string q)//类调用外定义函数show,在show中调用基类中的函数display
{
	Teacher_Cadre t1;
	t1.Teacher::display( y);
    cout<<s<<endl; //输出另一个父类中的部分数据成员
    cout<<q<<endl;
}
int main()
{
	string x,s,q;  //定义了能在磁盘中分别读取全部和部分文件字符的字符串x,s
	int nCount=0;//计数
	int n=0;
	Teacher_Cadre t;
	ifstream i, inf1,inf2;
	ofstream outf;
	outf.open("C:\out.txt");
	inf2.open("C:\Teacher_Cadre.txt");
	while(getline(inf2,s))
	{
		nCount++;
		if(s.find("wages:")!=-1)
		{
			cout<<s<<endl;
			outf<<s<<"\r\n";
		}
		/*if(nCount==6||nCount==12||nCount==18)//输出Teacher_Cadre第六行,第十二行,第十八行的文字数据
		{
			outf<<s<<"\r\n";
		}*/
	}
	inf1.open("C:\Cadre.txt");
	while(getline(inf1,q))
	{
		n++;
		/*if(n==6||n==12||n==18)//输出Cadre第六行,第十二行,第十八行的文字数据
		{
			outf<<q<<"\r\n";
		}*/
		if(q.find("wages:")!=-1)
		{
        outf<<q<<"\r\n";
		}
	}

	i.open("C:\Teacher.txt");
	if(!i){
		cout<<"error!"<<endl;
		return -1;
	}

	while(getline(i,x)){  //得到Teacher中的全部数据
		cout<<x<<endl;
		outf<<x<<"\r\n";
	}
	t.show(x,s,q);//按题目要求调用show函数
	inf1.close();
	inf2.close();
	outf.close();
	return 0;
}

5

能本人找到错误最好了…………

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明小型教师与干部信息管理系统 C++