设计一个工资类(Salary),其中类的数据成员如下:

class Salary
{
private:double salarys[50]; //多人的工资int number;  //实际人数
};

要设计的成员函数有:

• void set_salarys( ):输入职工工资(输入-1标志着工资输入结束),工资保存到salary数组中,实际人数保存到number中;
• void add_salarys(int x):给每个人涨x元工资
• void sort_salarys():对工资排序
• void show_salarys( ):显示工资信息
(1)在main函数定义Salary类的对象,输入工资,再给每个人涨500元工资,排序后工资数据,然后输出结果。

/**Copyright (c) 2015,烟台大学计算机学院*All gight reserved.*文件名称:Demo.cpp*作者:邵帅*完成时间:2015年03月25日*版本号:v1.0
*/
#include <iostream>
using namespace std;
class Salary
{
private:double salarys[50];int number;
public:void set_salarys( );void add_salarys(int x);void sort_salarys();void show_salarys( );};
void Salary::set_salarys()
{int i=0,sal;while(cin>>sal && sal!=-1){salarys[i]=sal;i++;}number=i+1;
}
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()
{for (int i=0;i<number;i++)cout<<salarys[i]<<" ";
}
int main()
{Salary a;a.set_salarys();a.add_salarys(500);a.sort_salarys();a.show_salarys();return 0;
}

(2)用salary[50]有限制,实际人数少时,会浪费空间,人数多了,无法完成任务。在main()中先输入职工人数,作为参数传递给输入职工工资的成员函数,然后利用动态分配内存的机制,开辟一个大小正好的连续空间,完成上面的工作。

/**Copyright (c) 2015,烟台大学计算机学院*All gight reserved.*文件名称:Demo.cpp*作者:邵帅*完成时间:2015年03月25日*版本号:v1.0
*/
#include <iostream>
using namespace std;
class Salary
{
private:double *salarys;int number;
public:void set_salarys( );void add_salarys(int x);void sort_salarys();void show_salarys( );};
void Salary::set_salarys()
{int x,i;cout<<"请输入职工的人数: ";cin>>number;salarys=new double[number];cout<<"请输入职工的工资: ";for(i=0;i<number;++i){cin>>x;salarys[i]=x;}}
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()
{for (int i=0;i<number;i++)cout<<salarys[i]<<" ";
}
int main()
{Salary a;a.set_salarys();a.add_salarys(500);a.sort_salarys();a.show_salarys();return 0;
}

(3)手工输入工资?!太让人不能忍受了。现给出包含了不足500个职工工资的文件salary.txt(下载),从文件中读数据,完成上面的工作。

/**Copyright (c) 2015,烟台大学计算机学院*All gight reserved.*文件名称:Demo.cpp*作者:邵帅*完成时间:2015年03月25日*版本号:v1.0
*/
#include <iostream>
#include <fstream>
#include <cstdlib>
using namespace std;
class Salary
{
private:double salarys[500];int number;
public:void set_salarys( );void add_salarys(int x);void sort_salarys();void show_salarys( );};
void Salary::set_salarys()
{int i;ifstream infile("salarys.txt",ios::in);if(!infile){cerr<<"打开文件失败!"<<endl;exit(1);}i=0;while(infile>>salarys[i])i++;infile.close();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()
{for (int i=0; i<number; i++)cout<<salarys[i]<<endl;
}
int main()
{Salary a;a.set_salarys();a.add_salarys(500);a.sort_salarys();a.show_salarys();return 0;
}

(4)增加一个成员函数,将排序后结果保存到一个文件中。

/**Copyright (c) 2015,烟台大学计算机学院*All gight reserved.*文件名称:Demo.cpp*作者:邵帅*完成时间:2015年03月25日*版本号:v1.0
*/
#include <iostream>
#include <fstream>
#include <cstdlib>
using namespace std;
class Salary
{
private:double salarys[500];int number;
public:void set_salarys( );void add_salarys(int x);void sort_salarys();void show_salarys( );void save_date();};
void Salary::set_salarys()
{int i;ifstream infile("salarys.txt",ios::in);if(!infile){cerr<<"打开文件失败!"<<endl;exit(1);}i=0;while(infile>>salarys[i])i++;infile.close();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::save_date()
{int i;ofstream outfile("salarys_sort.txt",ios::out);if(!outfile){cerr<<"打开文件失败!"<<endl;exit(1);}for(i=0; i<number; ++i){outfile<<salarys[i]<<endl;}outfile.close();}
void Salary::show_salarys()
{for (int i=0; i<number; i++)cout<<salarys[i]<<endl;
}
int main()
{Salary a;a.set_salarys();a.add_salarys(500);a.sort_salarys();a.show_salarys();a.save_date();return 0;
}

@ Mayuko

转载于:https://www.cnblogs.com/mayuko/p/4567529.html

第三周项目5-数组作数据成员相关推荐

  1. 第八周项目一-数组作数据成员(2)

     /**Copyright(c)2016,烟台大学计算机与控制工程学院*All rights reserved*文件名称:123.cpp*作 者:王蕊*完成日期:2016年4月19日*版 本 号: ...

  2. 第八周项目一-数组作数据成员(1)

     /**Copyright(c)2016,烟台大学计算机与控制工程学院*All rights reserved*文件名称:123.cpp*作 者:王蕊*完成日期:2016年4月17日*版 本 号: ...

  3. 第八周项目一-数组做数据成员(3)

    /**Copyright(c)2016,烟台大学计算机与控制工程学院*All rights reserved*文件名称:123.cpp*作 者:王蕊*完成日期:2016年4月19日*版 本 号:v1. ...

  4. 第五周项目2-对象作为数据成员

    回想Engineer类的数据成员,有眼镜.背包等.某Engineer的眼镜.背包,是Glass.Bag类的对象.类中的数据成员,其类型可以是简单类型,也可以是类.通过这种方式,将某些类组合到另外的类中 ...

  5. 第六周上机项目2-对象作为数据成员.

    /* *程序的版权和版本声明部分: *Copyright(c)2013,烟台大学计算机学院学生 . *All rights reserved. *作者:李家豪 *完成日期:2014年4月8日. *版本 ...

  6. 数据结构上机实践第三周项目2 - 建设“顺序表”算法库

    [项目2 - 建设"顺序表"算法库]  领会"0207将算法变程序"部分建议的方法,建设自己的专业基础设施算法库.这一周,建的是顺序表的算法库.  算法库包括两 ...

  7. 第三周项目3-程序的多文件组织

    利用多文件组织,重新实现项目2.其中,整个项目包括3个文件: 主文件: main.cpp,用于定义main()函数 头文件: triangle.h,头文件,声明类,定义内置成员函数 类定义文件: tr ...

  8. 数据结构上机实践第三周项目3- 求集合并集

    [项目 - 求集合并集] 假设有两个集合 A 和 B 分别用两个线性表 LA 和 LB 表示,即线性表中的数据元素即为集合中的成员.设计算法,用函数unionList(List LA, List LB ...

  9. 第三周项目四-穷举法解决组合问题(1)

    /* *Copyright(c)2016,烟台大学计算机与控制工程学院 *All rights reserved *文件名称:123.cpp *作 者:王蕊 *完成日期:2016年3月15日 *版 本 ...

最新文章

  1. PHP实时生成并下载超大数据量的EXCEL文件
  2. 人工智能中“图神经网络GNN”如何理解?(附斯坦福综述)
  3. js 查找树节点 数组去重
  4. redis info memory
  5. 算法基础数学知识篇(1)之----- 排列数组
  6. 成都将于1月27日开启数字人民币红包活动
  7. 51nod-1562:玻璃切割(O(n)模拟)
  8. 三倍快乐!推荐跨Win/Mac/Linux平台免费优质软件
  9. Mand Mobile - 基于金融场景的Vuejs组件库
  10. 4-2. 打印九九口诀表
  11. 微信网页授权问题记录
  12. kernel核函数是什么、用来干什么 及其详细推导
  13. OpenStack搭建私有云一:认证服务
  14. tplink 虚拟服务器没有https,tplink虚拟服务器设置
  15. 甲减、甲状腺相关疾病最新研究、治疗进展(2021年下半年)
  16. 自定义loading组件
  17. 【AI案例】(二)搭建大数据Python生态知识体系
  18. Vue学习笔记: Vue + Element-ui搭建后台管理系统模板
  19. TKO 6-1 DP入门之1058(寻找第n个因数只有2、3、5、7的数字)
  20. 怎么用计算机算lnx,如何用普通计算器计算复利

热门文章

  1. 工厂方法模式与抽象工厂模式
  2. 实现一个通用的中英文排序工具
  3. configParser模块详谈
  4. Cnblogs美化总结
  5. python用random产生验证码,以及random的一些其他用法
  6. EOS生产区块:解析插件producer_plugin
  7. mybatis动态调用表名和字段名
  8. DS18B20读数错误排除
  9. java学习入门怎么做最为高效
  10. 【BZOJ2118】墨墨的等式【循环节做法】