1.实训题目
对某一单位的职工进行工资调整。职工的信息有姓名( name )、年龄( age )、工龄( worktime )、性别( sex )和婚姻状况( marrige ),级别( grade (1-5级))、工资( wage )、是否退休( tired )。现在要进行工资的调整,规定凡是退休的一律增加工资50元,在职
1~5级的工资分别增加20、40、60、80、100。编程实现上述工资调整。
2.实训要求
(1)分析要存放的信息及要进行的操作,设计合适的数据结构。
(2)分析要对信息进行的操作,选择合适的语何。
(3)在程序中打印出执行前后的工资状况和级别,以便验证程序的正确性。
--------------------------------------------------------
源码如下:
#include <iostream>
#include <cstring>
using namespace std;
struct people{
char name[20];//姓名
int age;//年龄
int worktime;//工龄
char sex[20];//性别
int grade;//级别
char marrige[20];//婚姻状况
int wage;//工资
char tired[20];//是否退休
};
struct people worker[5]={
{"tom",18,2,"男",1,"未婚",2000,"否"},
{"jack",19,2,"男",2,"未婚",4000,"是"},
{"lee",28,3,"男",3,"未婚",3000,"是"},
{"bob",22,5,"男",4,"未婚",1600,"是"},
{"mark",35,8,"男",5,"已婚",8000,"是"},
};
void print(people worker[],int n)//输出职工信息
{
int i;
for(i=0;i<5;i++)
{
cout<<worker[i].name<<" "<<worker[i].age<<" "<<worker[i].worktime<<" "<<worker[i].sex
<<" "<<worker[i].grade<<" "<<worker[i].marrige<<" "<<worker[i].wage<<" "<<worker[i].tired<<endl;
}
}
void change_wage(people sorker[],int n)//工资调整
{
int i;
for(i=0;i<5;i++)
{
if(!strcmp(worker[i].tired,"是"))//判断两个字符串是否相等,若相等则是0,加!则变成1,进行下面的语句;否则进行else语句
{
if(worker[i].grade==1)
worker[i].wage+=20;
if(worker[i].grade==2)
worker[i].wage+=40;
if(worker[i].grade==3)
worker[i].wage+=60;
if(worker[i].grade==4)
worker[i].wage+=80;
if(worker[i].grade==5)
worker[i].wage+=100;
}
else
worker[i].wage+=50;
}
}
int main()
{
cout<<"职工原始信息"<<endl;
print(worker,5);
cout<<"职工信息修改后"<<endl;
change_wage(worker,5);
print(worker,5);
return 0;
}