求C++一个岗位工资类的简单实现,欢迎接分

差布多先生 2014-11-14 08:52:08
需求:
1.岗位类:名称、级别、工资
2.构造函数
3.拷贝构造函数
4.赋值运算符重载
5.输出和输入运算符重载
6.比较运算符重载(==)
7.并实现main()函数对所设计的类进行充分测试。
---------------------------
快速结帖给分
...全文
167 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
忘世麒麟 2014-11-14
  • 打赏
  • 举报
回复
确实是手打的,真是汗颜呐,这是没有bug的

#include <iostream>
#include <string>
using namespace std;
class worker
{
private:
	string name;
	string classic;
	double wage;
public:
	worker()
	{
	}
	worker(string a_name,string a_classic,int a_wage):name(a_name),classic(a_classic),wage(a_wage)
	{
	}
	worker(const worker& obj)
	{
		name = obj.name;
		classic = obj.classic;
		wage = obj.wage;
	}
	worker& operator=(const worker& obj)
	{
		name = obj.name;
		classic = obj.classic;
		wage = obj.wage;
		return *this;	
	}

	bool operator== (const worker &obj2)
	{	
		if(name== obj2.name  && classic == obj2.classic && wage == obj2.wage)
			return true;
		return false;
	}	
	friend ostream& operator<<(ostream& os,const worker &obj)
	{
		os<< obj.name<<"\t"<<obj.classic<<"\t"<<obj.wage<<endl;
		return os;
	}
	friend  istream& operator>>(istream& os,worker &obj)
	{
		os>>obj.name>>obj.classic>>obj.wage;
		return os;
	}
};

int main()
{
	//测试构造函数和重载的<<
	worker example1("小明","top",5000);
	cout<<example1;
	//测试赋值运算符
	worker example2=example1;
	cout<<example2;
	//拷贝构造函数
	worker example3(example1);
	cout<<example3;
	//比较运算符重载(==)
	worker example4("小华","top",5000);
	worker example5("小明","mid",500);	
	worker example6("小明","top",5001);
	worker example7("小明","top",5000);
	if(example1==example4)
		cout<<"true"<<endl;
	else
		cout<<"false"<<endl;
	if(example1==example5)
		cout<<"true"<<endl;
	else
		cout<<"false"<<endl;
	if(example1==example6)
		cout<<"true"<<endl;
	else
		cout<<"false"<<endl;
	if(example1==example7)
		cout<<"true"<<endl;
	else
		cout<<"false"<<endl;
	//测试>>运算符
	worker temp;
		cin>>temp;
	cout<<temp;
	return 0;
}
差布多先生 2014-11-14
  • 打赏
  • 举报
回复
引用 4 楼 baijiaheizhiganmao 的回复:

	
楼主 发表于: 2014-11-14 08:52:08
需求:
1.岗位类:名称、级别、工资
2.构造函数
3.拷贝构造函数
4.赋值运算符重载
5.输出和输入运算符重载
6.比较运算符重载(==)
7.并实现main()函数对所设计的类进行充分测试。
#include <iostream>
using namespace std;
class worker
{
private:
	string name;
	int classic;
	double wage;
public:
	worker()
	{
	}
	worker(string a_name.int a_classic,int a_wage):name(a_name),classic(a_classic),wage(a_wage)
	{
	}
	worker(const worker& obj)
	{
		name = obj.name;
		classic = obj.classic;
		wage = obj.wage;
	}
	worker& operator=(const worker& obj)
	{
		name = obj.name;
		classic = obj.classic;
		wage = obj.wage;
		return *this;	
	}
	ostream& operator<<(ostream& os,const worker &obj)
	{
		os<< obj.name<<"\t"<<obj.classic<<"\t"<<obj.wage<<endl;
		return obj;
	}
	istream& <<(istream& os,const worker &obj)
	{
		os>>obj.name>>obj.classic>>obj.wage;
		return obj;
	}
	bool operator== (const worker &obj2)
	{	
		if(name == obj2.name  && classic == obj2.classic && wage == obj2.wage)
			return true;
		return false;
	}

	
}

int main()
{
	//测试构造函数和重载的<<
	worker example1("小明","top",5000);
	cout<<example1;
	//测试赋值运算符
	worker example2=example1;
	cout<<example2;
	//拷贝构造函数
	worker example3(example1);
	cout<<example3;
	//比较运算符重载(==)
	worker example4("小华","top","5000");
	worker example5("小明","mid","5000");	
	worker example6("小明","top","5001");
	worker example7("小明","top","5000");
	if(example1==example4)
		cout<<"true"<<endl;
	else
		cour<<"false"<<endl;
	if(example1==example5)
		cout<<"true"<<endl;
	else
		cour<<"false"<<endl;
	if(example1==example6)
		cout<<"true"<<endl;
	else
		cour<<"false"<<endl;
	if(example1==example7)
		cout<<"true"<<endl;
	else
		cour<<"false"<<endl;
	//测试>>运算符
	work temp;
	cin>>temp;
	cout>>temp;
	return 0;
}
有个bug,目测手滑cout打成了cour。 非常感谢大家的帮助哈,c++板块果然比Delphi版活跃多了: )
差布多先生 2014-11-14
  • 打赏
  • 举报
回复
结贴,4楼那哥们写得很好,下面我也贴一下我写的吧,以供以后搜作业搜到该贴的朋友参考。。。Ubuntu+qt4下编译测试通过。。。手机版还真不好贴代码。。。 ------------------ /* exam5 11.14 9:03 */ #include <iostream> #include <string> using namespace std; class quarter { public: quarter() //构造函数1 { name="Null"; level="Null"; salary=0.00; } quarter(string input_name,string input_level,double input_salary) //构造函数2 { name=input_name; level=input_level; salary=input_salary; } ~quarter() { } quarter(const quarter& copytarget) //拷贝构造函数 { name=copytarget.name; level=copytarget.level; salary=copytarget.salary; } quarter operator = (const quarter& RightData) //赋值运算符重载 { name=RightData.name; level=RightData.level; salary=RightData.salary; return *this; } friend ostream& operator <<(ostream& outputdata,const quarter& out); //输出和输入运算符重载 friend istream& operator >>(istream& inputdata,quarter& input); //输出和输入运算符重载 bool operator == (const quarter& right_data) //比较运算符重载(==) { return(name==right_data.name&&level==right_data.level&&salary==right_data.salary); } private: string name; string level; double salary; }; /* Friend function */ ostream& operator << (ostream& outputdata,const quarter& out) //输出和输入运算符重载 { outputdata<<"Name: "<<out.name<<endl<<"Level: "<<out.level<<endl<<"Salary: "<<out.salary; return outputdata; } istream& operator >>(istream& inputdata,quarter& input) //输出和输入运算符重载 { inputdata>>input.name>>input.level>>input.salary; return inputdata; }; /* Function Test */ int main() { quarter test_no_data; //测试无参数默认构造函数 quarter test_have_data("testname","testlevel",1000.00); //测试构造函数 quarter test_copy_data=test_have_data; //测试拷贝构造函数 quarter test_assignment_data; //测试赋值运算符重载函数 quarter test_input_data; //测试输入重载 test_assignment_data=test_have_data; //测试赋值运算符重载函数 /*输出测试结果信息 */ cout<<test_no_data<<endl; //测试输出重载 cout<<test_have_data<<endl; cout<<test_copy_data<<endl; cout<<test_assignment_data<<endl; cout<<"Plaese enter 3 data: (enter one and press Enter then Next)"<<endl; cin>>test_input_data; //测试输入重载 cout<<test_input_data<<endl; if (test_copy_data==test_have_data) //测试比较运算符重载 { cout<<"operator == overloading successful !"<<endl; } else { cout<<"operator == overloading faild !"<<endl; } return 0; }
差布多先生 2014-11-14
  • 打赏
  • 举报
回复
额,是个上机小测试,45分钟,之前担心写不出,后来自个儿写了一下发现挺简单的,十来分钟搞定
忘世麒麟 2014-11-14
  • 打赏
  • 举报
回复
int classic;改为string classic;
忘世麒麟 2014-11-14
  • 打赏
  • 举报
回复

	
楼主 发表于: 2014-11-14 08:52:08
需求:
1.岗位类:名称、级别、工资
2.构造函数
3.拷贝构造函数
4.赋值运算符重载
5.输出和输入运算符重载
6.比较运算符重载(==)
7.并实现main()函数对所设计的类进行充分测试。
#include <iostream>
using namespace std;
class worker
{
private:
	string name;
	int classic;
	double wage;
public:
	worker()
	{
	}
	worker(string a_name.int a_classic,int a_wage):name(a_name),classic(a_classic),wage(a_wage)
	{
	}
	worker(const worker& obj)
	{
		name = obj.name;
		classic = obj.classic;
		wage = obj.wage;
	}
	worker& operator=(const worker& obj)
	{
		name = obj.name;
		classic = obj.classic;
		wage = obj.wage;
		return *this;	
	}
	ostream& operator<<(ostream& os,const worker &obj)
	{
		os<< obj.name<<"\t"<<obj.classic<<"\t"<<obj.wage<<endl;
		return obj;
	}
	istream& <<(istream& os,const worker &obj)
	{
		os>>obj.name>>obj.classic>>obj.wage;
		return obj;
	}
	bool operator== (const worker &obj2)
	{	
		if(name == obj2.name  && classic == obj2.classic && wage == obj2.wage)
			return true;
		return false;
	}

	
}

int main()
{
	//测试构造函数和重载的<<
	worker example1("小明","top",5000);
	cout<<example1;
	//测试赋值运算符
	worker example2=example1;
	cout<<example2;
	//拷贝构造函数
	worker example3(example1);
	cout<<example3;
	//比较运算符重载(==)
	worker example4("小华","top","5000");
	worker example5("小明","mid","5000");	
	worker example6("小明","top","5001");
	worker example7("小明","top","5000");
	if(example1==example4)
		cout<<"true"<<endl;
	else
		cour<<"false"<<endl;
	if(example1==example5)
		cout<<"true"<<endl;
	else
		cour<<"false"<<endl;
	if(example1==example6)
		cout<<"true"<<endl;
	else
		cour<<"false"<<endl;
	if(example1==example7)
		cout<<"true"<<endl;
	else
		cour<<"false"<<endl;
	//测试>>运算符
	work temp;
	cin>>temp;
	cout>>temp;
	return 0;
}
忘世麒麟 2014-11-14
  • 打赏
  • 举报
回复
引用 1 楼 modyaj 的回复:
别给我说 你现在正在笔试中。。。。
我猜是在考试,然后。。。。。。
healer_kx 2014-11-14
  • 打赏
  • 举报
回复
接分。。。 这个设计不难。。。
modyaj 2014-11-14
  • 打赏
  • 举报
回复
别给我说 你现在正在笔试中。。。。

64,632

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧