资源描述
#include<stdio.h>
#include<string.h>
typedef struct
{
int basic;//基本工资
int position;//岗位工资
int subsidy;//津贴
int wages;//奖金
int sum;//总工资
}money;
typedef struct
{
char num[20];//职工号
char name[20];//姓名
int age;//年龄
char sex[20];//性别
money salary;//工资
}employee;
int Print_jinru();//账号密码输入
void Fscan_information();//“职工信息.txt”文献写入
void Print_staff();//全体员工
void Print_empl1(char x[51]);//按职工号查询
void Print_empl2(char s[51]);//按姓名查询
void Print_MainInterface();//主界面
void Print_Interface_1();//职工信息录入界面
void Print_Interface_2();//职工信息查询界面
void Print_Interface_3();//职工工资排序界面
void Print_Interface_4();//职工总工资
void Print_Interface_5();//文献读出
void qsort(int l,int r);//迅速排序
void Print_delete(int t);//删除职工信息
void Print_Interface_2_1(int t);//职工信息修改界面
int fyanzheng(char s1[],char s2[]);//密码验证函数
employee st[500];//记录职工信息旳函数
int n;//职工总数
void main()
{
int x;
employee em;
printf("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n");
printf("@@@@ 欢迎使用员工工资管理系统 @@@@\n");
printf("@@@@ 制作人:刘爽 @@@@\n");
printf("@@@@在使用中产生旳任何问题,欢迎进行批评指正@@@@\n");
printf("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n");
printf("\n");
printf("\n");
printf("\n");
if (Print_jinru())
{
Fscan_information();
Print_MainInterface();
}
else return;
}
void Fscan_information()
{
FILE *fp;
int i;
if ((fp=fopen("职工信息.txt","r"))==NULL)
{
printf("cannot open this file\n");
return ;
}
fscanf(fp,"%d",&n);
for (i=1;i<=n;i++)
{
fscanf(fp,"%s%s%d%s%d%d%d",st[i].num,st[i].name,&st[i].age,st[i].sex,&st[i].salary.basic,&st[i].salary.subsidy,&st[i].salary.wages);
st[i].salary.sum=st[i].salary.basic+st[i].salary.subsidy+st[i].salary.wages;
}
fclose(fp);
}
int fyanzheng(char s1[],char s2[])
{
FILE *fp1,*fp2;
char str1[40]="",str2[40]="",st;
int t;
if ((fp1=fopen("账号验证.in","r"))==NULL)
{
printf("cannot open this file\n");
return 0;
}
t=0;
st=fgetc(fp1);
while (st!='#')
{
str1[t]=st;
t++;
st=fgetc(fp1);
}
if ((fp2=fopen("密码验证.in","r"))==NULL)
{
printf("cannot open this file\n");
return 0;
}
t=0;
st=fgetc(fp2);
while (st!='#')
{
str2[t]=st;
t++;
st=fgetc(fp2);
}
fclose(fp1);
fclose(fp2);
if ((strcmp(str1,s1)==0)&&(strcmp(str2,s2)==0))
return 1;
else
return 0;
}
int Print_jinru()
{
int f,d;
char x[20],y[20];
f=0;
d=0;
while(1)
{
printf("请输入账号:");
scanf("%s",x);
getchar();
printf("请输入密码:");
scanf("%s",y);
getchar();
f=fyanzheng(x,y);
if (d>3)
{
printf("错误次数太多,退出系统\n");
return 0;
}
if (f>0) break;
else{
printf("账号或密码输入错误,请重新输入\n");
d++;
}
}
printf("\n");
printf("欢迎进入员工工资管理系统!!!\n");
return 1;
}
void Print_MainInterface()
{
int x;
printf("\n");
printf("*************************华丽旳分割线*************************\n");
printf("\n");
printf("1.职工信息录入\n");
printf("2.职工信息查询\n");
printf("3.职工工资排序\n");
printf("4.记录职工总工资\n");
printf("5.保留到文献\n");
printf("6.退出职工工资系统\n");
printf("请选择所需操作:");
scanf("%d",&x);
if (x==1)
Print_Interface_1();
else
if (x==2)
Print_Interface_2();
else
if (x==3)
Print_Interface_3();
else
if (x==4)
Print_Interface_4();
else
if (x==5)
Print_Interface_5();
else
if (x==6)
{
printf(" ****** **** **** * * ***** * *\n");
printf("* * * * * * * * * * *\n");
printf("* * * * * * * * * * *\n");
printf(" ****** ******** ******** ** * * * *\n");
printf(" * * * ** * * * *\n");
printf(" * * * ** * * * *\n");
printf(" ****** **** **** ** ***** ***** \n");
// printf("333333\n");
return;
}
else
{
printf("输入命令错误,返回主菜单(再乱输入我找人打你啊)\n");
Print_MainInterface();
}
}
void Print_Interface_1()
{
n++;
if (n>500)
{
printf("超过职工最大数\n");
Print_MainInterface();
}
printf("\n");
printf("*************************妖精旳分割线*************************\n");
printf("\n");
printf("新建职工号:");
scanf("%s",st[n].num);
printf("姓名:");
scanf("%s",st[n].name);
printf("年龄:");
scanf("%d",&st[n].age);
printf("性别:");
scanf("%s",st[n].sex);
printf("基本工资:");
scanf("%d",&st[n].salary.basic);
printf("津贴:");
scanf("%d",&st[n].salary.subsidy);
printf("奖金:");
scanf("%d",&st[n].salary.wages);
st[n].salary.sum=st[n].salary.basic+st[n].salary.subsidy+st[n].salary.wages;
printf("职工信息已成功录入\n");
Print_MainInterface();
}
void Print_Interface_2()
{
int x;
char s[50],y[50];
printf("\n");
printf("*************************逗比旳分割线*************************\n");
printf("\n");
printf("1.查询所有职工\n");
printf("2.按职工号查询\n");
printf("3.按职工姓名查询\n");
printf("4.返回主菜单\n");
printf("请选择查找方式:\n");
scanf("%d",&x);
if (x==1)
Print_staff();
else
if (x==2)
{
printf("请输入职工工号:");
scanf("%s",y);
Print_empl1(y);
}
else
if (x==3)
{
printf("请输入职工姓名:");
scanf("%s",s);
Print_empl2(s);
}
else
if (x==4)
Print_MainInterface();
else
{
printf("输入命令错误,返回上一层\n");
Print_Interface_2();
}
}
void Print_Interface_3()
{
char ch[10];
printf("\n");
qsort(1,n);
printf("排序完毕!排序后成果请从查询全体职工处查看\n");
Print_MainInterface();
}
void Print_Interface_4()
{
int i,All=0;
char ch[10];
printf("\n");
for (i=1;i<=n;i++)
All=All+st[i].salary.sum;
printf("所有职工旳总工资为:%d\n",All);
printf("请输入任意字符并敲回车键返回主菜单\n");
scanf("%s",&ch);
Print_MainInterface();
}
void Print_Interface_5()
{
FILE *fp;
char ch[10];
int i;
if ((fp=fopen("职工信息.txt","w"))==NULL)
{
printf("cannot open this file\n");
return ;
}
fprintf(fp,"%d\n",n);
for (i=1;i<=n;i++)
fprintf(fp,"%s %s %d %s %d %d %d\n",st[i].num,st[i].name,st[i].age,st[i].sex,st[i].salary.basic,st[i].salary.subsidy,st[i].salary.wages);
fclose(fp);
printf("\n");
printf("已保留到文献\n");
printf("\n");
printf("请输入任意字符返回主菜单\n");
scanf("%s",&ch);
Print_MainInterface();
}
void Print_staff()
{
int i;
printf("\n");
printf("*************************帅比旳分割线*************************");
printf("\n");
for (i=1;i<=n;i++)
{
printf("职工工号:%s\n",st[i].num);
printf("姓名:%s\n",st[i].name);
printf("年龄:%d\n",st[i].age);
printf("性别:%s\n",st[i].sex);
printf("基本工资:%d\n",st[i].salary.basic);
printf("津贴:%d\n",st[i].salary.subsidy);
printf("奖金:%d\n",st[i].salary.wages);
printf("总工资:%d\n",st[i].salary.sum);
printf("\n");
}
printf("返回上一层\n");
Print_Interface_2();
}
void Print_empl1(char x[])
{
int i,t,y,d=0;
printf("\n");
for (i=1;i<=n;i++)
if (strcmp(x,st[i].num)==0)
{
t=i;
d=1;
printf("职工工号:%s\n",st[i].num);
printf("姓名:%s\n",st[i].name);
printf("年龄:%d\n",st[i].age);
printf("性别:%s\n",st[i].sex);
printf("基本工资:%d\n",st[i].salary.basic);
printf("津贴:%d\n",st[i].salary.subsidy);
printf("奖金:%d\n",st[i].salary.wages);
printf("总工资:%d\n",st[i].salary.sum);
printf("\n");
break;
}
if (d>0)
{
printf("如需删除请按2,修改请按1,返回请按0\n");
scanf("%d",&y);
if (y==2)
Print_delete(t);
else
if (y==1)
Print_Interface_2_1(t);
else
if (y==0)
Print_Interface_2();
else
{
printf("输入命令错误,返回上一层(再乱输入我找人打你啊)\n");
Print_Interface_2();
}
}
else
{
printf("对不起,查无此人(本系统不包括路人甲乙丙,不要乱输-_-!)\n");
printf("请重新选择查询方式\n");
Print_Interface_2();
}
}
void Print_empl2(char s[])
{
int i,t,x,y=0;
printf("\n");
for (i=1;i<=n;i++)
if (strcmp(s,st[i].name)==0)
{
t=i;
y=1;
printf("职工工号:%s\n",st[i].num);
printf("姓名:%s\n",st[i].name);
printf("年龄:%d\n",st[i].age);
printf("性别:%s\n",st[i].sex);
printf("基本工资:%d\n",st[i].salary.basic);
printf("津贴:%d\n",st[i].salary.subsidy);
printf("奖金:%d\n",st[i].salary.wages);
printf("总工资:%d\n",st[i].salary.sum);
printf("\n");
break;
}
if (y>0)
{
printf("如需删除请按2,修改请按1,返回请按0(再乱输入我找人打你啊)\n");
scanf("%d",&x);
if (x==2)
Print_delete(t);
else
if (x==1)
Print_Interface_2_1(t);
else
if (x==0)
Print_Interface_2();
else
{
printf("输入命令错误,返回上一层\n");
Print_Interface_2();
}
}
else
{
printf("对不起,查无此人(本系统不包括路人甲乙丙,不要乱输-_-!)\n");
printf("请重新选择查询方式\n");
Print_Interface_2();
}
}
void Print_delete(int t)
{
st[t].salary.sum=0;
qsort(1,n);
n--;
printf("已删除该职工并排序,自动返回主菜单\n");
Print_MainInterface();
}
void Print_Interface_2_1(int t)
{
int x;
printf("\n");
printf("请选择如下选项:\n");
printf("1.职工号\n");
printf("2.姓名\n");
printf("3.年龄\n");
printf("4.性别\n");
printf("5.基本工资\n");
printf("6.津贴\n");
printf("7.奖金\n");
printf("8.返回上一层\n");
printf("9.返回主菜单\n");
scanf("%d",&x);
switch(x)
{
case 1:
scanf("%s",st[t].num);break;
case 2:
scanf("%s",st[t].name);break;
case 3:
scanf("%d",st[t].age);break;
case 4:
scanf("%s",st[t].sex);break;
case 5:
scanf("%s",st[t].salary.basic);break;
case 6:
scanf("%d",st[t].salary.subsidy);break;
case 7:
scanf("%d",st[t].salary.wages);break;
}
st[t].salary.sum=st[t].salary.basic+st[t].salary.subsidy+st[t].salary.wages;
if (x<=8)
Print_Interface_2();
else
if (x==9)
Print_MainInterface();
}
void qsort(int l,int r)
{
int i,j,mid;
employee tt;
i=l;
j=r;
mid=st[(l+r)/2].salary.sum;
do
{
while (st[i].salary.sum>mid) i++;
while (st[j].salary.sum<mid) j--;
if (i<=j)
{
tt=st[i];
st[i]=st[j];
st[j]=tt;
i++;
j--;
}
}while(i<=j);
if (i<r) qsort(i,r);
if (l<j) qsort(l,j);
展开阅读全文