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

【题目】阅读教材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平台下载)

时间: 2024-10-04 10:20:18

第4周-任务4-设计工资类(Salary)的相关文章

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

原题目及解答见第4周-任务4-设计工资类(Salary): [拓展1]使用salary[50]有限制,实际人数少浪费空间,人数多时无法完成任务.程序执行中先输入职工人数,然后利用教材P217所讲的动态分配内存的运算符new,开辟一个大小正好的连续空间,完成上面的工作(排序需要采用指针完成). [参考解答] #include<iostream> using namespace std; class Salary { public: void input_salary(); void add_sa

C++第5周项目1 - 设计三角形类

课程首页地址:http://blog.csdn.net/sxhelijian/article/details/7910565,本周题目链接:http://blog.csdn.net/sxhelijian/article/details/8723847 [项目1]设计三角形类,通过增加构造函数,使对象在定义时能够进行初始化 #include<iostream> using namespace std; class Triangle {public: double perimeter(void);

C++第6周项目6 - 有指针成员的工资类

课程首页地址:http://blog.csdn.net/sxhelijian/article/details/7910565,本周题目链接:http://blog.csdn.net/sxhelijian/article/details/8748730 [项目6]设计一个工资类(Salary),其中的数据成员包括职工人数(number,人数不定)和这些职工的工资salary,要求输入职工工资并逐个输出.提示1:第4周项目5 数组作数据成员曾经处理过类似问题,但固定大小的数组,可能造成空间的浪费,也

C++第7周(春)项目6 人数不定的工资类

课程首页在:http://blog.csdn.net/sxhelijian/article/details/11890759,内有完整教学方案及资源链接 [项目6-人数不定的工资类] 设计一个工资类(Salary),其中的数据成员包括职工人数(number,人数不定)和number个职工的工资salary,要求输入职工工资并逐个输出. 提示:用固定大小的数组存储number个职工的工资,可能造成空间的浪费,也可能会由于空间不够而不能处理职工人数过多的应用.Salary声明为指针类型的成员,通过动

C++实践参考——人数不定的工资类

返回:贺老师课程教学链接 [项目-人数不定的工资类]设计一个工资类(Salary),其中的数据成员包括职工人数(number,人数不定)和number个职工的工资salary,要求输入职工工资并逐个输出.提示:用固定大小的数组存储number个职工的工资,可能造成空间的浪费,也可能会由于空间不够而不能处理职工人数过多的应用.将salary声明为指针类型的成员,通过动态分配空间,分配正好大小的空间存储数据. class Salary { public: Salary(int n); //n为职工人

编程-设计一个类用来表达两张牌的牌组,设计这个类的初始化方式

问题描述 设计一个类用来表达两张牌的牌组,设计这个类的初始化方式 设计一个类表达一组牌,设计牌组的初始化方式 //牌值 private string face; //花色 private string suit; public zupai(string suit, string face) { this.face = face; this.suit = suit; } //牌子 public string getFace() { return face; } //花色 public string

软件工程之系统建模篇:设计系统类模型

类模型是面向对象分析的核心,系统类模型用包图描述,前面的文章我们分析 了实体类.接口类.接口控制类和用例控制类,本章我们将介绍系统类模型的设 计,首先简要介绍类模型的设计方法,然后设计子系统的类模型,最后设计系统 类模型. 1.设计方法 设计系统类模型,要明确子系统或系统的组成,及各个组成部分之间的关系, 子系统的划分和前面介绍过的接口类包的划分相同,主要包括:发文办理.收文 办理.会议管理.档案管理.公告管理.个人助理.系统管理.用户登录8个子系 统,无论是子系统模型还是系统类模型,都包含接口

软件工程之系统建模篇:设计接口类模型

本文介绍接口类模型的设计过程.接口类模型描述系统活动者与系统交互的界 面,接口类位于系统结构的表示服务层,接口类模型用类图和包图描述.首先简 要介绍接口类模型的设计方法,然后设计子系统的类图,最后设计系统及子系统 的包图. 1.设计方法 设计接口类模型,首先要识别出接口类,再识别出接口类之间的关系.接口类 是应用程序的"可视区",也是系统与外界的隔离层.接口类可以用 用例去识别,用例驱动接口类设计.用户接口直接与用例相连,用户是通过用户 接口发起和终止用例的.由于用户接口直接面向用户,

java-JAVA如何设计实体类????

问题描述 JAVA如何设计实体类???? 场景: 1. 前台要显示一张表格,表格中的栏位对应于数据库中A,B表的数据A与B是一对多的关系. 问题: 1. 我从网上看到JAVA设计实体类一般都是一个实体类对应一张表,可是我要通过A,B表连接查询.这个实体类又该如何设计? 我是刚刚学习JAVA的菜鸟,求大神解惑! 解决方案 设计两个类A,B,一对多关系通过组合实现. 示例代码,B表关联多个A表记录: public class A{ } public class B{ List<A> list; }