这里有一个c程序,但是运行不成功,希望大虾可以帮助~
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
#include<io.h>
#include <windows.h>
#include <mmsystem.h>
#pragma comment(lib, "Winmm.lib")
#define N 20
/*============================所有的函数声明分隔线====================================*/
typedef struct employee
{
char num[10]; //保存员工编号
char name[15]; //保存员工姓名
float jbgz; //保存员工基本工资
float jj; //保存员工奖金
float kk; //保存员工扣款
float yfgz; //保存员工应发工资
float sk; //保存员工税款
float sfgz; //保存员工实发工资
}ZGGZ;
/*================================函数分隔线====================================*/
int Add(ZGGZ tp[],int i);
void BoFang(int s);
int Del(ZGGZ tp[],int n);
void Disp(ZGGZ tp[],int n);
void FunTitle(int m);
void Huang(char str[],int max,int ciShu);
int Insert(ZGGZ tp[],int n);
void JiSuan(ZGGZ *p);
int Locate(ZGGZ tp[],int n,char findmess[],int nameornum);
void Menu();
void Message(int n);
void Modify(ZGGZ tp[],int n);
void NoFound(int n);
float NumberInput(int notice);
void PrintData(ZGGZ pp);
void PrintHeader();
void Qur(ZGGZ tp[],int no);
void Save(ZGGZ TP[],int n);
void Sort(ZGGZ tp[],int n);
void StringInput(char *t,int cho);
void TongJi(ZGGZ tp[],int n);
void Wrong(int n);
int YesOrNo();
int Saveflag=0;
void main()
{
printf("\t\t\t欢迎您进入员工工资管理系统\n");
printf("\t 员工工资管理系统正在启动中,请稍候……\n\n");
BoFang(27);
ZGGZ worker[N];
int len=0;
FILE *fp;
int n=0;
Message(1);
if((fp=fopen("C:\\record.dat","rb"))==NULL) //当record文件不存在则提示
{
NoFound(1);
Message(2);
if(YesOrNo()==0) goto End; //选择不新建则退出程序
else if(YesOrNo()==1) goto Meum; //选择新建
}
else
{
for(int i=0;!feof(fp);i++)
{
if(fread(&worker[i],sizeof(struct employee),1,fp)==1)
len++;
}
fclose(fp);
printf("\n\t 目前所有的公司员工工资记录数为%d个!\n",len);
}
Meum:Message(0);
while(1)
{
system("cls"); //Dos命令—刷屏
Menu();
n=(int)NumberInput(1);
FunTitle(n);
switch (n)
{
case 1:len=Add(worker,len); break;
case 2:Qur(worker,len); break;
case 3:Modify(worker,len); break;
case 4:len=Insert(worker,len); break;
case 5:len=Del(worker,len); break;
case 6:Sort(worker,len); break;
case 7:TongJi(worker,len); break;
case 8:Disp(worker,len); break;
case 9:Save(worker,len); break;
case 0:{
if(Saveflag==1)
{
Message(3); //是否要保存修改
if(YesOrNo()==1) Save(worker,len);
}
Message(4); //是否要退出
if(YesOrNo()!=0) goto End;
} break;
default:Wrong(1); break;
}
Message(0);
}
End:printf("\t正在退出员工工资管理系统……\n");
BoFang(20);
printf("\t感谢您使用本员工工资管理软件!\n");
char *p="版权米有,盗版不究!#^_^";
Huang(p,58,3);
}
/*================================函数分隔线====================================*/
void JiSuan(ZGGZ *p) //计算实际工资
{
(*p).yfgz=(*p).jbgz+(*p).jj-(*p).kk; //通过指针直接修改数组的值
double sk=0,yfgz=(*p).yfgz;
if(yfgz>100000) {sk+=45.0/100*(yfgz-100000); yfgz=yfgz-100000; }
if(yfgz>80000) {sk+=40.0/100*(yfgz-80000); yfgz=yfgz-80000; }
if(yfgz>60000) {sk+=35.0/100*(yfgz-60000); yfgz=yfgz-60000; }
if(yfgz>40000) {sk+=30.0/100*(yfgz-40000); yfgz=yfgz-40000; }
if(yfgz>20000) {sk+=25.0/100*(yfgz-20000); yfgz=yfgz-20000; }
if(yfgz>5000) {sk+=20.0/100*(yfgz-5000); yfgz=yfgz-5000; }
if(yfgz>2000) {sk+=15.0/100*(yfgz-2000); yfgz=yfgz-2000; }
if(yfgz>500) {sk+=10.0/100*(yfgz-500); yfgz=yfgz-500; }
if(yfgz>0) {sk+=5.0/100*(yfgz); }
(*p).sk=(float)sk;
(*p).sfgz=(*p).yfgz-(*p).sk;
}
/*================================函数分隔线====================================*/
void Disp(ZGGZ tp[],int n)
{ //函数用于显示数组中存储的n条记录,内容为employee中的内容
if(n==0) NoFound(2);
else
{
PrintHeader();
for(int i=0;i<n;i++)
PrintData(tp[i]);
}
}
/*================================函数分隔线====================================*/
float NumberInput(int notice) //函数用于输入数值型数据
{
float shuZhi=0;
printf("\n");
switch(notice)
{
case 1:printf("\t 请输入数字键0—9作个选择:"); break;
case 2:printf("\t 请输入数字键1或2作个选择:"); break;
case 3:printf("\t 请输入员工基本工资的金额:"); break;
case 4:printf("\t 请输入员工奖金的金额:\t"); break;
case 5:printf("\t 请输入员工扣款的金额:\t"); break;
}
printf("\t");
fflush(stdin);
scanf("%f",&shuZhi);
return shuZhi;
}
/*================================函数分隔线====================================*/
void StringInput(char *t,int cho) //cho为5工号或6姓名
{ //函数用于输入字符串,并进行字符串长度验证(长度小于lens)
int l=0;
int n=0;
do
{
if(n>0) Wrong(2);
n++;
Message(cho);
printf("\t");
fflush(stdin); //清除输入缓冲区
gets(t);
l=strlen(t);
}
while(l>=(cho==5?8:12)); //cho==5工号为8个字节,cho==6姓名为12个字节
}
/*================================函数分隔线====================================*/
int Locate(ZGGZ tp[],int n,char findmess[],int nameornum) //函数用于定位数组中符合要求的元素,并返回该数组元素的下标值
{
int i,m=0;
int count[N]={0};
char num[10];
switch(nameornum) //参数findmess[]保存要查找的内容,nameornum为1name,2num
{
case 1:
{
for(i=0;i<n;i++)
if(strcmp(tp[i].name,findmess)==0)
{
count[m]=i;
m++;
}
if(m>1)
{
printf("\t计算机已经找到%d项符合条件的职工记录!\n",m);
PrintHeader();
for(int a=0;a<m;a++)
PrintData(tp[count[a]]);
Message(23);
StringInput(num,5);
i=Locate(tp,n,num,2);
}
if(i==n) i=-1;
}
break;
case 2:
{
for(i=0;i<n;i++)
if(strcmp(tp[i].num,findmess)==0) goto Quit;
if(i==n) i=-1;
}break;
}
Quit:return i;
}
/*================================函数分隔线====================================*/
int Add(ZGGZ tp[],int i) //函数用于在数组tp中增加工资记录元素并返回数组中的当前记录数,n为记录数
{
ZGGZ tmp;
if(i>0) Disp(tp,i);
Message(17);
int flag=0;
while(1)
{
while(1)
{
Message(12);
StringInput(tmp.num,5);
flag=0;
if(strcmp(tmp.num,"0")==0) goto Quit;
for(int t=0;t<i;t++)
{
if(strcmp(tp[t].num,tmp.num)==0)
{
flag=1;
break;
}
}
if(flag==1)
{
Wrong(3);
if(YesOrNo()!=1) goto Quit;
}
else break;
}
strcpy(tp[i].num,tmp.num);
StringInput(tp[i].name,6);
tp[i].jbgz=NumberInput(3);
tp[i].jj=NumberInput(4);
tp[i].kk=NumberInput(5);
JiSuan(&tp[i]);
Message(7);
Saveflag=1;
i++;
}
Quit:return i;
}
/*================================函数分隔线====================================*/
void Save(ZGGZ TP[],int n)
{
FILE *fp;
fp=fopen("C:\\record.dat","wb");
for(int i=0;i<n;i++)
fwrite(&TP[i],sizeof(struct employee),1,fp);
fclose(fp);
Message(21);
BoFang(8);
}
/*================================函数分隔线====================================*/
int YesOrNo()
{
int n=2;
printf("\t");
char cho;
fflush(stdin);
cho=getchar();
if(cho=='y'||cho=='Y') n=1;
else if(cho=='n'||cho=='N') n=0;
printf("\n");
return n;
}
/*================================函数分隔线====================================*/
int Del(ZGGZ tp[],int n) //函数用于先在数组tp中找到满足条件的记录,然后删除该记录
{
Message(12); //输入0可返回主菜单
char str[20];
int cho;
if(n==0)
{ NoFound(3); goto End; }
Message(8);
int i; //用于返回下标
cho=(int)NumberInput(2); //做个选择
switch(cho)
{
case 1:StringInput(str,5);
i=Locate(tp,n,str,2);
if(i==-1) { NoFound(2); goto End; }
else
{
Message(11); //提示已经找到查找的员工的信息
PrintHeader();
PrintData(tp[i]);
Message(13); //提示是否确定要删除员工的工资信息
if(YesOrNo()==1)
{
BoFang(23);
strcpy(tp[i].num,tp[n-1].num); //用最后一个记录覆盖要删除的记录
tp[n-1].num[0]='\0';
strcpy(tp[i].name,tp[n-1].name);
tp[n-1].name[0]='\0';
tp[i].jbgz=tp[n-1].jbgz;
tp[n-1].jbgz=0.0;
tp[i].jj=tp[n-1].jj;
tp[n-1].jj=0.0;
tp[i].kk=tp[n-1].kk;
tp[n-1].kk=0.0;
tp[i].yfgz=tp[n-1].yfgz;
tp[n-1].yfgz=0.0;
tp[i].sk=tp[n-1].sk;
tp[n-1].sk=0.0;
tp[i].sfgz=tp[n-1].sfgz;
tp[n-1].sfgz=0.0;
Message(14);
Saveflag=1;
n--;
Disp(tp,n);
}
}break;
case 2:StringInput(str,6);
i=Locate(tp,n,str,1);
if(i==-1) { NoFound(2); goto End; }
else
{
Message(11); //提示已经找到查找的员工的信息
PrintHeader();
PrintData(tp[i]);
Message(13); //提示是否确定要删除员工的工资信息
if(YesOrNo()==1)
{
BoFang(23);
strcpy(tp[i].num,tp[n-1].num); //用最后一个记录覆盖要删除的记录
tp[n-1].num[0]='\0';
strcpy(tp[i].name,tp[n-1].name);
tp[n-1].name[0]='\0';
tp[i].jbgz=tp[n-1].jbgz;
tp[n-1].jbgz=0.0;
tp[i].jj=tp[n-1].jj;
tp[n-1].jj=0.0;
tp[i].kk=tp[n-1].kk;
tp[n-1].kk=0.0;
tp[i].yfgz=tp[n-1].yfgz;
tp[n-1].yfgz=0.0;
tp[i].sk=tp[n-1].sk;
tp[n-1].sk=0.0;
tp[i].sfgz=tp[n-1].sfgz;
tp[n-1].sfgz=0.0;
Message(14);
Saveflag=1;
n--;
Disp(tp,n);
}
}break;
}
End:return(n);
}
/*================================函数分隔线====================================*/
void Qur(ZGGZ tp[],int no) //函数用于在数组tp中按职工编号或者姓名查找满足条件的记录,并显示记录
{
char str[20];
int cho;
if(no==0)
{ NoFound(3); goto End; }
Message(8);
int i;
cho=(int)NumberInput(2);
switch(cho)
{
case 1:Message(10); //按员工的工号查询
StringInput(str,5);
i=Locate(tp,no,str,2);
if(i==-1) { NoFound(4); goto End; }
else
{
Message(11); //提示已经找到查找的员工的信息
PrintHeader();
PrintData(tp[i]);
}break;
case 2:Message(9); //按员工的名字查询
StringInput(str,6);
i=Locate(tp,no,str,1);
if(i==-1) { NoFound(4); goto End; }
else
{
Message(11);
PrintHeader();
PrintData(tp[i]);
}break;
}
End:;
}
/*================================函数分隔线====================================*/
void Modify(ZGGZ tp[],int n) //函数用于在数组tp中修改记录元素
{
ZGGZ tmp;
char str[20];
int i=0,cho; //用于返回下标
if(n==0)
{ NoFound(3); goto End; }
Disp(tp,n); //调用Disp函数显示所有的记录
Message(8);
cho=(int)NumberInput(2); //做个选择
switch(cho)
{
case 1:
{
Message(10);
StringInput(str,5);
i=Locate(tp,n,str,2);
if(i==-1)
{
NoFound(3);
goto End;
}
else
{
Message(11);
PrintHeader();
PrintData(tp[i]);
tmp.jbgz=NumberInput(3);
tmp.jj=NumberInput(4);
tmp.kk=NumberInput(5);
Message(3);
if(YesOrNo()==1)
{
tp[i].jbgz=tmp.jbgz;
tp[i].jj=tmp.jj;
tp[i].kk=tmp.kk;
JiSuan(&tp[i]);
Saveflag=1;
}
else goto End;
PrintHeader();
PrintData(tp[i]);
}
}break;
case 2:
{
Message(9);
StringInput(str,6);
i=Locate(tp,n,str,1);
if(i==-1)
{
NoFound(3);
goto End;
}
else
{
Message(11);
PrintHeader();
PrintData(tp[i]);
tmp.jbgz=NumberInput(3);
tmp.jj=NumberInput(4);
tmp.kk=NumberInput(5);
Message(3);
if(YesOrNo()==1)
{
tp[i].jbgz=tmp.jbgz;
tp[i].jj=tmp.jj;
tp[i].kk=tmp.kk;
JiSuan(&tp[i]);
Saveflag=1;
}
else goto End;
PrintHeader();
PrintData(tp[i]);
}
}break;
}
End:;
}
/*================================函数分隔线====================================*/
int Insert(ZGGZ tp[],int n) //函数用于在数组tp中插入记录,并返回数组中的当前记录数
{
char str[10];
int l=0,m=0,i=0;
Disp(tp,n);
ZGGZ tmp;
if(n==0)
{ NoFound(3); goto End; }
while(1)
{
do
{
do
{
if(m>0) Wrong(2);
Message(22);
fflush(stdin);
gets(str);
l=strlen(str);
m++;
}
while(l>=8);
i=Locate(tp,n,str,2);
if(i==-1)
{
NoFound(3);
Message(18);
if(YesOrNo()==0) goto End;
else continue;
}
}
while(i==-1);
if((i>=0)&&(i<n)) Message(11);
Message(17);
StringInput(tmp.num,5);
for(int mi=0;mi<n;mi++)
if(strcmp(tmp.num,tp[mi].num)==0)
{
Wrong(4);
goto End;
}
StringInput(tmp.name,6);
tmp.jbgz=NumberInput(3);
tmp.jj=NumberInput(4);
tmp.kk=NumberInput(5);
Message(3);
if(YesOrNo()==1)
{
for(int t=n;t>i;t--)
{
strcpy(tp[t].num,tp[t-1].num);
strcpy(tp[t].name,tp[t-1].name);
tp[t].jbgz=tp[t-1].jbgz;
tp[t].jj=tp[t-1].jj;
tp[t].kk=tp[t-1].kk;
tp[t].yfgz=tp[t-1].yfgz;
tp[t].sk=tp[t-1].sk;
tp[t].sfgz=tp[t-1].sfgz;
}
strcpy(tp[t].num,tmp.num);
strcpy(tp[t].name,tmp.name);
tp[i].jbgz=tmp.jbgz;
tp[i].jj=tmp.jj;
tp[i].kk=tmp.kk;
JiSuan(&tp[i]);
Saveflag=1;
Message(21);
n++;
}
else goto End;
Disp(tp,n);
Message(19);
if(YesOrNo()==0) goto End;
}
End:return n;
}
/*================================函数分隔线====================================*/
void Sort(ZGGZ tp[],int n) //函数用于在数组tp中完成利用冒泡排序法实现数组的按实发工资字段的降序排序
{
int j,i;
ZGGZ tmp;
if(n==0)
{ NoFound(3); goto End; }
if(n==1)
{ Message(20);goto End; }
Message(16);
for(j=0;j<n-1;j++)
{
for(i=0;i<n-1-j;i++)
if(tp[i].sfgz<tp[i+1].sfgz)
{
strcpy(tmp.num,tp[i].num); //交换工号
strcpy(tp[i].num,tp[i+1].num);
strcpy(tp[i+1].num,tmp.num);
strcpy(tmp.name,tp[i].name); //交换姓名
strcpy(tp[i].name,tp[i+1].name);
strcpy(tp[i+1].name,tmp.name);
tmp.jbgz=tp[i].jbgz; //交换基本工资
tp[i].jbgz=tp[i+1].jbgz;
tp[i+1].jbgz=tmp.jbgz;
tmp.jj=tp[i].jj; //交换奖金
tp[i].jj=tp[i+1].jj;
tp[i+1].jj=tmp.jj;
tmp.kk=tp[i].kk; //交换扣款
tp[i].kk=tp[i+1].kk;
tp[i+1].kk=tmp.kk;
tmp.yfgz=tp[i].yfgz; //交换应发工资
tp[i].yfgz=tp[i+1].yfgz;
tp[i+1].yfgz=tmp.yfgz;
tmp.sk=tp[i].sk; //交换税款
tp[i].sk=tp[i+1].sk;
tp[i+1].sk=tmp.sk;
tmp.sfgz=tp[i].sfgz; //实发工资
tp[i].sfgz=tp[i+1].sfgz;
tp[i+1].sfgz=tmp.sfgz;
}
}
End:Disp(tp,n);
}
/*================================函数分隔线====================================*/
void Message(int n) ///函数用于显示提示语句
{
BoFang(19);
switch(n)
{
case 0:printf("\t 请按下回车键以继续:\t"); fflush(stdin); getchar(); break;
case 1:printf("\t 程序正在努力打开员工工资记录文件!\n"); break;
case 2:printf("\t 提示:请问您是否要创建新的工资记录?\n\t 请输入Y或N:"); break;
case 3:printf("\n\t 提示:请问您是否要保存您刚才所做的更改?\n\t 请输入Y或N:"); break;
case 4:printf("\n\t 提示:您确定要退出本员工工资管理系统吗?\n\t 请输入Y或N:"); break;
case 5:printf("\n\t 提示:请您输入员工的工号:"); break;
case 6:printf("\n\t 提示:请您输入员工的姓名:"); break;
case 7:printf("\n\t 提示:新的员工工资信息已成功录入!\n"); break;
case 8:printf("\n\t 提示:请问您是要:\n\t\t1,按工号查询:\n\t\t2,按名字查询\n"); break;
case 9:printf("\n\t 提示:您已经选择了按员工的名字查询!\n"); break;
case 10:printf("\n\t 提示:您已经选择了按员工的工号查询!\n"); break;
case 11:printf("\n\t 提示:已经找到您要查找的员工的信息!\n"); break;
case 12:printf("\n\t 提示:输入0可返回主菜单。\n"); break;
case 13:printf("\n\t 提示:您确定要删除这名员工的所有信息吗?\n\t 请输入Y或N:"); break;
case 14:printf("\n\t 提示:该员工的所有信息已成功删除!\n"); break;
case 15:printf("\n\t 提示:系统正在对所有员工信息进行统计中!请稍候……\n"); break;
case 16:printf("\n\t 提示:系统正在对所有员工信息进行排序中!请稍候……\n"); break;
case 17:printf("\n\t 提示:请您输入新员工的信息:\n"); break;
case 18:printf("\n\t 提示:请问您是否要重新输入正确的信息?\n\t 请输入Y或N:"); break;
case 19:printf("\n\t 提示:操作已成功完成!是否继续?\n\t 请输入Y或N:"); break;
case 20:printf("\n\t 提示:总共只有一个记录,无需排序!\n"); break;
case 21:printf("\n\t 提示:系统已经成功保存所有的员工记录!\n"); break;
case 22:printf("\n\t 提示:请您输入将要在其前面插入的员工的工号:"); break;
case 23:printf("\n\t 提示:请您输入将要修改的员工的信息:"); break;
}
}
/*================================函数分隔线====================================*/
void Wrong(int n) //函数用于显示错误语句
{
BoFang(21);
switch(n)
{
case 1:printf("\t您的输入有误,请重新输入:\n"); break;
case 2:printf("\t您输入的字符数太多!请重新输入:\n"); break;
case 3:printf("\t您输入的员工工号已经存在!是否重新输入?\n\t 请输入Y或N:"); break;
case 4:printf("\t您输入的员工工号已经存在!正在返回主菜单!\n"); break;
}
}
/*================================函数分隔线====================================*/
void NoFound(int n) //函数用于显示未找到提示语句
{
BoFang(11);
switch(n)
{
case 1:printf("\t没有找到员工工资管理系统的历史记录文件!\n\n"); break;
case 2:printf("\t没有找到公司员工的信息,无项目可显示!\n"); break;
case 3:printf("\t没有找到公司员工的信息,无法进行操作!\n"); break;
case 4:printf("\t没有找到公司员工的信息,正在返回主菜单!\n"); break;
}
}
/*================================函数分隔线====================================*/
void FunTitle(int m)
{
switch(m)
{
case 1:printf("\t您选择的功能是==>输入员工工资记录\n"); break;
case 2:printf("\t您选择的功能是==>查询员工工资记录\n"); break;
case 3:printf("\t您选择的功能是==>修改员工工资记录\n"); break;
case 4:printf("\t您选择的功能是==>插入员工工资记录\n"); break;
case 5:printf("\t您选择的功能是==>删除员工工资记录\n"); break;
case 6:printf("\t您选择的功能是==>员工工资从大到小排序\n"); break;
case 7:printf("\t您选择的功能是==>统计工资各等级人数\n"); break;
case 8:printf("\t您选择的功能是==>显示员工工资记录表\n"); break;
case 9:printf("\t您选择的功能是==>保存工资记录至文件\n"); break;
case 0:printf("\t您选择的功能是==>退出本工资管理系统\n"); break;
}
}
/*================================函数分隔线====================================*/
void Huang(char str[],int max,int ciShu) //通过输出空格的数量控制位置,通过cls刷屏命令来清除上次的显示,达到移动效果
{
for(int n=0;n<ciShu;n++) //ciShu为在屏幕上来回的次数,
{
for(int i=0;i<max;i++)
{
system("cls"); //Dos命令—刷屏,后移
for(int n=0;n<i;n++) printf(" ");
printf("%s",str);
}
for(i=max-1;i>0;i--)
{
system("cls"); //Dos命令—刷屏,前移
for(int n=0;n<i;n++) printf(" ");
printf("%s",str);
}
}
}
/*================================函数分隔线====================================*/
void Menu()
{ //显示主菜单
printf("\t\t\t 员 工 工 资 管 理 系 统\n");
printf("\t ***************************主菜单***************************\n");
printf("\t * 1,输入员工工资记录 6,对员工工资记录排序 *\n");
printf("\t * 2,查询员工工资记录 7,统计工资各等级人数 *\n");
printf("\t * 3,修改员工工资记录 8,显示员工工资记录表 *\n");
printf("\t * 4,插入员工工资记录 9,保存工资记录至文件 *\n");
printf("\t * 5,删除员工工资记录 0,退出本工资管理系统 *\n");
printf("\t ************************************************************\n");
printf("\n");
}
/*================================函数分隔线====================================*/
void PrintHeader() //函数用于在以表格形式显示,打印输出表头信息
{
printf("\t\t\t 员 工 工 资 记 录 表\n");
printf("_____________________________________________________________________________\n");
printf("|员工编号|员 工 姓 名 |基本工资|员工奖金|员工扣款|应发工资|员工税款|实发工资|\n");
printf("|________|____________|________|________|________|________|________|________|\n");
}
/*================================函数分隔线====================================*/
void PrintData(ZGGZ pp) //函数用于以表格显示的方式,打印输出单个数组元素中的记录信息
{
JiSuan(&pp);
printf("|%8s|%12s|%8.1f|%8.1f|%8.1f|%8.1f|%8.1f|%8.1f|\n",pp.num,pp.name,pp.jbgz,pp.jj,pp.kk,pp.yfgz,pp.sk,pp.sfgz);
printf("|________|____________|________|________|________|________|________|________|\n");
}
/*================================函数分隔线====================================*/
void TongJi(ZGGZ tp[],int n) //函数用于在数组tp中完成记录的统计工作,统计该公司职工工资的整体分布情况
{
int c[11]={0};
char *p[11]={"1 万 以 上","9 千 至 1 万","8 千 至 9 千","7 千 至 8 千","6 千 至 7 千","5 千 至 6 千","4 千 至 5 千","3 千 至 4 千","2 千 至 3 千","1 千 至 2 千","1 千 以 下"};
int m,i;
if(n==0)
{ NoFound(3); goto End; }
Disp(tp,n);
Message(15);
float sfgz;
for(i=0;i<n;i++)
{
sfgz=tp[i].sfgz;
if(sfgz>10000) {c[0]++; }
if((sfgz>9000)&&(sfgz<=10000)) {c[1]++; }
if((sfgz>8000)&&(sfgz<=9000)) {c[2]++; }
if((sfgz>7000)&&(sfgz<=8000)) {c[3]++; }
if((sfgz>6000)&&(sfgz<=7000)) {c[4]++; }
if((sfgz>5000)&&(sfgz<=6000)) {c[5]++; }
if((sfgz>4000)&&(sfgz<=5000)) {c[6]++; }
if((sfgz>3000)&&(sfgz<=4000)) {c[7]++; }
if((sfgz>2000)&&(sfgz<=3000)) {c[8]++; }
if((sfgz>1000)&&(sfgz<=2000)) {c[9]++; }
if(sfgz<=1000) {c[10]++; }
}
printf("\t\t员工工资分布情况统计表\n");
printf("_____________________________________________________________________________\n");
printf("| 员 工 工 资 金 额 分 布 区 间|符 合 的 员 工 数| 员 工 总 数 | 百 分 比 |\n");
printf("|______________________________|_________________|_____________|____________|\n");
for(m=0;m<11;m++)
{
printf("|%21s |%10d |%8d |%7.1f%% |\n",p[m],c[m],n,(float)100.0*c[m]/n);
printf("|______________________________|_________________|_____________|____________|\n");
}
End:;
}
/*================================函数分隔线====================================*/
BoFang(int s)
{
switch(s)
{
case 1:PlaySound(TEXT("C:\\WINDOWS\\Media\\chimes.wav"),NULL,SND_FILENAME|SND_SYNC);break;
case 2:PlaySound(TEXT("C:\\WINDOWS\\Media\\chord.wav"),NULL,SND_FILENAME|SND_SYNC);break;
case 3:PlaySound(TEXT("C:\\WINDOWS\\Media\\ding.wav"),NULL,SND_FILENAME|SND_SYNC);break;
case 4:PlaySound(TEXT("C:\\WINDOWS\\Media\\notify.wav"),NULL,SND_FILENAME|SND_SYNC);break;
case 5:PlaySound(TEXT("C:\\WINDOWS\\Media\\recycle.wav"),NULL,SND_FILENAME|SND_SYNC);break;
case 6:PlaySound(TEXT("C:\\WINDOWS\\Media\\ringin.wav"),NULL,SND_FILENAME|SND_SYNC);break;
case 7:PlaySound(TEXT("C:\\WINDOWS\\Media\\ringout.wav"),NULL,SND_FILENAME|SND_SYNC);break;
case 8:PlaySound(TEXT("C:\\WINDOWS\\Media\\start.wav"),NULL,SND_FILENAME|SND_SYNC);break;
case 9:PlaySound(TEXT("C:\\WINDOWS\\Media\\tada.wav"),NULL,SND_FILENAME|SND_SYNC);break;
case 10:PlaySound(TEXT("C:\\WINDOWS\\Media\\Windows XP 菜单命令.wav"),NULL,SND_FILENAME|SND_SYNC);break;
case 11:PlaySound(TEXT("C:\\WINDOWS\\Media\\Windows XP 错误.wav"),NULL,SND_FILENAME|SND_SYNC);break;
case 12:PlaySound(TEXT("C:\\WINDOWS\\Media\\Windows XP 打印结束.wav"),NULL,SND_FILENAME|SND_SYNC);break;
case 13:PlaySound(TEXT("C:\\WINDOWS\\Media\\Windows XP 弹出窗口已阻止.wav"),NULL,SND_FILENAME|SND_SYNC);break;
case 14:PlaySound(TEXT("C:\\WINDOWS\\Media\\Windows XP 登录音.wav"),NULL,SND_FILENAME|SND_SYNC);break;
case 15:PlaySound(TEXT("C:\\WINDOWS\\Media\\Windows XP 电池不足.wav"),NULL,SND_FILENAME|SND_SYNC);break;
case 16:PlaySound(TEXT("C:\\WINDOWS\\Media\\Windows XP 电池电力严重短缺.wav"),NULL,SND_FILENAME|SND_SYNC);break;
case 17:PlaySound(TEXT("C:\\WINDOWS\\Media\\Windows XP 电话拨出声.wav"),NULL,SND_FILENAME|SND_SYNC);break;
case 18:PlaySound(TEXT("C:\\WINDOWS\\Media\\Windows XP 电话拨入声.wav"),NULL,SND_FILENAME|SND_SYNC);break;
case 19:PlaySound(TEXT("C:\\WINDOWS\\Media\\Windows XP 叮当声.wav"),NULL,SND_FILENAME|SND_SYNC);break;
case 20:PlaySound(TEXT("C:\\WINDOWS\\Media\\Windows XP 关机.wav"),NULL,SND_FILENAME|SND_SYNC);break;
case 21:PlaySound(TEXT("C:\\WINDOWS\\Media\\Windows XP 关键性终止.wav"),NULL,SND_FILENAME|SND_SYNC);break;
case 22:PlaySound(TEXT("C:\\WINDOWS\\Media\\Windows XP 还原.wav"),NULL,SND_FILENAME|SND_SYNC);break;
case 23:PlaySound(TEXT("C:\\WINDOWS\\Media\\Windows XP 回收.wav"),NULL,SND_FILENAME|SND_SYNC);break;
case 24:PlaySound(TEXT("C:\\WINDOWS\\Media\\Windows XP 惊叹号.wav"),NULL,SND_FILENAME|SND_SYNC);break;
case 25:PlaySound(TEXT("C:\\WINDOWS\\Media\\Windows XP 开始.wav"),NULL,SND_FILENAME|SND_SYNC);break;
case 26:PlaySound(TEXT("C:\\WINDOWS\\Media\\Windows XP 默认值.wav"),NULL,SND_FILENAME|SND_SYNC);break;
case 27:PlaySound(TEXT("C:\\WINDOWS\\Media\\Windows XP 启动.wav"),NULL,SND_FILENAME|SND_SYNC);break;
case 28:PlaySound(TEXT("C:\\WINDOWS\\Media\\Windows XP 气球.wav"),NULL,SND_FILENAME|SND_SYNC);break;
case 29:PlaySound(TEXT("C:\\WINDOWS\\Media\\Windows XP 通知.wav"),NULL,SND_FILENAME|SND_SYNC);break;
case 30:PlaySound(TEXT("C:\\WINDOWS\\Media\\Windows XP 信息栏.wav"),NULL,SND_FILENAME|SND_SYNC);break;
case 31:PlaySound(TEXT("C:\\WINDOWS\\Media\\Windows XP 硬件插入.wav"),NULL,SND_FILENAME|SND_SYNC);break;
case 32:PlaySound(TEXT("C:\\WINDOWS\\Media\\Windows XP 硬件故障.wav"),NULL,SND_FILENAME|SND_SYNC);break;
case 33:PlaySound(TEXT("C:\\WINDOWS\\Media\\Windows XP 硬件删除.wav"),NULL,SND_FILENAME|SND_SYNC);break;
case 34:PlaySound(TEXT("C:\\WINDOWS\\Media\\Windows XP 注销音.wav"),NULL,SND_FILENAME|SND_SYNC);break;
case 35:PlaySound(TEXT("C:\\WINDOWS\\Media\\Windows XP 最小化.wav"),NULL,SND_FILENAME|SND_SYNC);break;
}
}
/*================================函数分隔线====================================*/