第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平台下载)
目录
相关文章
|
SQL Java 数据库
Spring Boot 的事务控制及示例代码
Spring Boot 提供了简单易用的事务控制功能,方便开发者进行数据库操作时保证数据的一致性和完整性。本文将介绍 Spring Boot 事务控制的用法和应用场景,并提供丰富的例子。
526 2
|
Java C#
标题:深入比较Else If与Switch语句:理解差异与高效使用Switch
标题:深入比较Else If与Switch语句:理解差异与高效使用Switch
544 0
|
安全 物联网 测试技术
物联网平台的优势与价值
物联网平台的优势与价值
1210 49
物联网平台的优势与价值
|
10月前
|
存储 机器学习/深度学习 SQL
大数据处理与分析技术
大数据处理与分析技术
532 2
|
Cloud Native Linux 虚拟化
【云原生】Docker容器资源限制(CPU/内存/磁盘)
【云原生】Docker容器资源限制(CPU/内存/磁盘)
2742 0
获取两个list中相互不包含的部分
获取两个list中相互不包含的部分
199 0
|
存储 弹性计算 固态存储
阿里云服务器实例规格是什么?实例规格应该怎么选?
在我们选购阿里云服务器的时候,同配置的云服务器,往往会有多个实例规格可供选择,而且不同实例规格的价格差别很大,例如一款2核4G配置的云服务器,在阿里云目前的活动中就有经济型e、通用算力型u1、计算型c7、计算型c8y等实例可选,价格方面,经济型e实例2核4G1M配置的活动价格目前只要599.93元/1年,而计算型c7实例要1860.00元/1年。可见不同实例规格之间的价格差别还是很大的,那么阿里云服务器实例规格是什么?作为初次购买阿里云服务器的用户在面对众多实例规格时应该怎么选呢?
阿里云服务器实例规格是什么?实例规格应该怎么选?
|
传感器 数据中心
|
存储 NoSQL 分布式数据库
数据库的演进之路:从传统到现代,技术的飞跃与应用
一、引言 数据库作为数据存储和管理的核心工具,随着信息技术的快速发展,经历了从简单到复杂、从单机到分布式的演进过程
|
JSON JavaScript 前端开发
如何在Java中使用JSON:解析与生成
如何在Java中使用JSON:解析与生成