第4周-任务4-设计工资类(Salary)

简介: 【题目】阅读教材P255例8.4,注意到类中的数据成员可以是数组。设计一个工资类(Salary),其中的数据成员有:double型数组salary[50](实际人数可以少于50,固定取50可能造成空间浪费),整型值number表示的职工人数。在main函数中调用你自己设计好的成员函数完成下面的功能:(1)输入职工工资,工资保存到salary数组中,实际人数保存到number中(输入-1标志

【题目】阅读教材P255例8.4,注意到类中的数据成员可以是数组。设计一个工资类(Salary),其中的数据成员有:double型数组salary[50](实际人数可以少于50,固定取50可能造成空间浪费),整型值number表示的职工人数。在main函数中调用你自己设计好的成员函数完成下面的功能:(1)输入职工工资,工资保存到salary数组中,实际人数保存到number中(输入-1标志着工资输入结束);(2)给每个人涨100元工资;(3)对涨后的工资进行排序;(4)输出排序后的工资。

【题目说明】本题体会类的数据成员可以是数组,实际上,我们很快要实践到,用类类型作类的数据成员。本题没有给出现成的程序段,包括类的设计等工作均需要独立完成。记住,沉下心来,领会你所看过的程序,通过模仿,这个工作还是容易完成的。完成一个项目,尤其是有一定规模的项目时,设计类结构是一个非常关键的环节,今后几年的专业学习中,将逐步涉及到。

【参考解答】

#include <iostream>
using namespace std;
class Salary   
{
public:         
	void set_salarys( );    
	void add_salarys(int x);    
	void sort_salarys();
	void show_salarys( );      
private:
	double salarys[50]; //工资  
	int number;			//实际人数   
};

void Salary::set_salarys( )    
{
	int x,i=0;
	cin>>x;   //注意这儿输入工资使用的技巧
	while(x>0)
	{
		salarys[i]=x;
		++i;
		cin>>x;
	}
	number=i;
}

void Salary::add_salarys(int x)  
{
	int i;
	for (i=0;i<number;i++)
		salarys[i]+=x;
}

void Salary::sort_salarys()  
{
	int i,j;
	double t;
	for (i=0;i<number-1;i++)
		for(j=0;j<number-i-1;j++)
			if (salarys[j]<salarys[j+1])
			{
				t=salarys[j];
				salarys[j]=salarys[j+1];
				salarys[j+1]=t;
			}
}

void Salary::show_salarys( )   
{
	int i;
	for (i=0;i<number;i++)
		cout<<salarys[i]<<" ";
}

int main( )
{
	Salary s;  
	s.set_salarys( );    //输入值
	s.add_salarys(100);  //涨工资
	s.sort_salarys();	 //排序
	s.show_salarys( );   //输出结果
	system("PAUSE");
	return 0;
}

试一下解决下面的拓展吧:

【拓展1】使用salary[50]有限制,实际人数少浪费空间,人数多时无法完成任务。程序执行中先输入职工人数,然后利用教材P217所讲的动态分配内存的运算符new,开辟一个大小正好的连续空间,完成上面的工作(排序需要采用指针完成)。



【拓展2】手工输入工资?!太让人不能忍受了。现给出包含了500个职工工资的文件salary.txt,从文件中读数据,完成上面的工作。此任务可参照上一学期第15周任务3完成。还可以将排序后结果保存到一个文件中。(salary.txt可以从BB平台下载)
目录
相关文章
|
7月前
7-66 计算工资 (15 分)
7-66 计算工资 (15 分)
66 0
|
6月前
|
SQL 算法 大数据
深入解析力扣184题:部门工资最高的员工(子查询与窗口函数详解)
深入解析力扣184题:部门工资最高的员工(子查询与窗口函数详解)
|
7月前
|
SQL
leetcode-SQL-184. 部门工资最高的员工
leetcode-SQL-184. 部门工资最高的员工
32 0
|
算法 C++
201612-2 工资计算
201612-2 工资计算
127 0
201612-2 工资计算
|
存储 C++ 机器学习/深度学习
C++实践参考——人数不定的工资类
返回:贺老师课程教学链接 【项目-人数不定的工资类】设计一个工资类(Salary),其中的数据成员包括职工人数(number,人数不定)和number个职工的工资salary,要求输入职工工资并逐个输出。提示:用固定大小的数组存储number个职工的工资,可能造成空间的浪费,也可能会由于空间不够而不能处理职工人数过多的应用。将salary声明为指针类型的成员,通过动态分配空间,分配正好大小
817 0
|
C++ C语言
C++第11周(春)项目2 - 职员有薪水了
课程首页在:http://blog.csdn.net/sxhelijian/article/details/11890759,内有完整教学方案及资源链接 【项目2 - 职员有薪水了】定义一个名为CPerson的类,有以下私有成员:姓名、身份证号、性别和年龄,成员函数:构造函数、析构函数、输出信息的函数。并在此基础上派生出CEmployee类,派生类CEmployee增加了两个新的数据成员,分
969 0
|
存储 C++ 机器学习/深度学习
C++第7周(春)项目6 人数不定的工资类
课程首页在:http://blog.csdn.net/sxhelijian/article/details/11890759,内有完整教学方案及资源链接 【项目6-人数不定的工资类】  设计一个工资类(Salary),其中的数据成员包括职工人数(number,人数不定)和number个职工的工资salary,要求输入职工工资并逐个输出。  提示:用固定大小的数组存储number个职工的工资
872 0
|
C++
C++第14周项目2——成绩处理
课程首页在:http://blog.csdn.net/sxhelijian/article/details/11890759 【项目2- 成绩处理】  在数组score中将要存储某小组C++程序设计的成绩,请设计实现下面的各功能函数,并在main函数中调用,组合成一个完整的应用:  (1)输入小组人数及成绩,要保证成绩在0-100之间;  (2)输出该小组的最高成绩、最低成绩、平均成绩;  (
836 0
|
C++
C++第8周项目3小贺的工资
课程首页在:http://blog.csdn.net/sxhelijian/article/details/11890759 【项目3:加班费,要不要?】小贺刚上班,按计时制领工资,每小时rate元RMB。每周工作时间40小时,如果要加班,超出部分按正常工资的1.5倍计(老板还算不错喔!)。这周小贺上班的时间为hour小时,请编程序,输入rate和hour,输出小贺本周的薪水。 参考解答:
898 0