求解一道C++编程题。。。
题目9:职工信息系统
功能包括:
1.建立职工信息数据(职工编号,姓名,性别,年龄,电话,职务,工资和家庭成员信息)和信息简表(编号,姓名,电话)
2.根据职工编号查询职工信息(查询时需要身份确认。单位领导和人事秘书可以看到职工所有信息;财务处人员可以看到职工编号,姓名,性别,年龄,电话,工资;一般职工仅能查到信息简表)
3.增加新职工信息(由人事秘书完成,需要身份确认)
4.删除职工信息(由人事秘书完成,需要身份确认)
5.修改职工工资(由财务处人员完成,需要身份确认)
6.要求所有信息能够存储在文件中,并具有良好的用户界面
答案:#include<iostream.h>struct worker
{
int num; //职工编号
char name[20]; //姓名
int age; //年龄
char xl[8]; //学历
double yfgz; //应发工资
double sj; //税金
double sfgz; //实发工资
};
void px(worker wor[],int n);
void input(worker wor[],int n);
void find(worker wor[],int n);
void main()
{ //主函数
worker wor[20];
int n;
int choice;
cout<<"请输入职工人数:";
cin>>n;
cout<<"请输入职工信息:\n";
input(wor,n);
for(int i=1;i<5;i++){
cout<<" 请选择查询方式:"<<endl;
cout<<"*进行职工信息的查找.................1"<<endl;
cout<<"*进行职工信息的排序.................2"<<endl;
cin>>choice;
if(choice==0)
break;
switch(choice) {
case 1:find(wor,n) ;break;
case 2:px(wor,n); break;
default: cout<<"出错啦! "<<endl;break;
}
}
}
void input(worker wor[],int n)
{ //输入与显示函数
int i=0;
cout<<"职工编号 姓名 年龄 学历应发工资 "<<endl;
while(i<n)
{
cin>>wor[i].num>>wor[i].name>>wor[i].age>>wor[i].xl>>wor[i].yfgz;
if(wor[i].yfgz<1000) //税金计算
wor[i].sj=0;
else if(wor[i].yfgz<2000)
wor[i].sj=(wor[i].yfgz-1000)*0.05;
else if(wor[i].yfgz<3000)
wor[i].sj=(wor[i].yfgz-1000)*0.1;
else if(wor[i].yfgz<4000)
wor[i].sj=(wor[i].yfgz-1000)*0.15;
else if(wor[i].yfgz<5000)
wor[i].sj=(wor[i].yfgz-1000)*0.2;
else
wor[i].sj=(wor[i].yfgz-1000)*0.3;
wor[i].sfgz=wor[i].yfgz-wor[i].sj; //实发工资
i++;
}
cout<<"职工编号 姓名 年龄 学历应发工资 税金 实发工资"<<endl;
for(i=0;i<n;i++)
{
cout<<wor[i].num<<"\t "<<wor[i].name<<" \t"<<wor[i].age<<"\t "<<wor[i].xl<<"\t "<<wor[i].yfgz<<"\t "<<wor[i].sj<<"\t "<<wor[i].sfgz<<endl;
}
}
void find(worker wor[],int n) //查找职工信息
{ //查找函数
worker p;
上一个:编写程序 ATM的模拟 C++
下一个:C++的WIN32怎么建文件夹?