📄 renyuanguanli.txt
字号:
#include"stdio.h"
#include"stdlib.h"
#include"string.h"
#include"conio.h"
#define N 100
/*定义结构体变量*/
struct guyuan
{char no[6];/*编号*/
char name[10];/*姓名*/
char part[10];/*部门*/
int age;/*年龄*/
char sex[4];/*性别*/
float gz;/*工资*/
float jj;/*奖金*/
float kk;/*扣款*/
float income;/*实发工资*/
}gy[N];
FILE *fp;/*数据文件指针*/
int load();/*统计文件总人数*/
void guyuanguanli();/*雇员管理菜单*/
void search();/*查询菜单*/
void input();/*输入雇员及信息*/
void add();/*追加雇员及信息*/
void del();/*删除雇员*/
void sort();/*按实发工资排序*/
void list();/*综合查询*/
void name();/*按姓名查询雇员*/
/*主函数*/
main()
{
int i;
do
{ clrscr();/*清屏*/
printf("\n*********主菜单************\n");
printf("\n\n1.雇员管理\n\n2.查询\n\n3.退出系统\n");
printf("\nplease choose the number:");
scanf("%d",&i);/*选择选项*/
switch(i)
{case 1:guyuanguanli(); break;/*雇员管理菜单*/
case 2:search(); break; /*查询菜单*/
case 3:printf("\nexit!\n"); break;/*退出*/
default:printf("\nnumber error!\n");/*提示选项错误*/
}
}
while(i!=3); /*当i=3时,退出循环*/
}
void guyuanguanli()
{
int j;
do
{ printf("\n***********子菜单***********\n");
printf("\n1.输入雇员信息\n\n2.追加雇员\n\n3.删除雇员\n\n4.排序信息 \n\n5.退出菜单\n\n");
printf("\nplease choose the number:");
scanf("%d",&j);
switch(j)
{
case 1:input(); break; /*输入雇员及信息*/
case 2:add(); break; /*追加雇员及信息*/
case 3:del(); break; /*删除雇员*/
case 4:sort(); break; /*按实发工资排序*/
case 5:printf("\nexit!\n"); break;/*退出*/
default:printf("number error!\n");/*提示选项错误*/
}
}
while(j!=5); /*当i=5时,退出循环*/
}
/*统计文件总人数*/
int load()
{ int n=0;
fp=fopen("D:infile.txt","rb");/*打开文件*/
while(!feof(fp))
{ fseek(fp,n*sizeof(struct guyuan),0);
fread(&gy[n],sizeof(struct guyuan),1,fp);/*读取数据*/
n=n+1;
}
fclose(fp); /*关闭文件*/
return(n-1);/*返回一个整数值*/
}
/*输入雇员及信息*/
void input()
{ int i,n;
if((fp=fopen("D:infile.txt","wb+"))==NULL)
{ printf("Can not open the file\n");return;}
printf("\nhow many people you input(请输入数字):");/*提示输入雇员人数*/
scanf("%d",&n);
printf("\n编号 姓名 部门 年龄 性别 工资 奖金 扣款\n");
for(i=0;i<n;i++)
{scanf("%s%s%s%d%s%f%f%f",gy[i].no,gy[i].name,gy[i].part,&gy[i].age,gy[i].sex,&gy[i].gz,&gy[i].jj,&gy[i].kk);
gy[i].income=(gy[i].gz+gy[i].jj)-gy[i].kk;}
for(i=0;i<n;i++)
{fwrite(&gy[i],sizeof(struct guyuan),1,fp); }/*将数据一个个写入文件中*/
fclose(fp);/*关闭文件*/
printf("\n*****finish*****\n");
}
/*追加雇员及信息*/
void add()
{ int i,j,n;
clrscr();
if((fp=fopen("D:infile.txt","ab"))==NULL) n=0;
else n=load();/*统计文件总人数*/
fp=fopen("D:infile.txt","ab+");
printf("\n输入要追加的人数(请输入数字):");/*提示信息*/
scanf("%d",&j);
printf("\n编号 姓名 部门 年龄 性别 工资 奖金 扣款\n");
for(i=1;i<=j;i++)
{scanf("%s%s%s%d%s%f%f%f",gy[n+i].no,gy[n+i].name,gy[n+i].part,&gy[n+i].age,gy[n+i].sex,&gy[n+i].gz,&gy[n+i].jj,&gy[n+i].kk);
gy[n+i].income=(gy[n+i].gz+gy[n+i].jj)-gy[n+i].kk;}
for(i=1;i<=j;i++)
{ fseek(fp,(n+i)*sizeof(struct guyuan),0);
fwrite(&gy[n+i],sizeof(struct guyuan),1,fp); /*将数据一个个写入文件中*/
}
fclose(fp);
printf("\n***********add success***********\n");
}
/*删除雇员*/
void del()
{int i,n,j,k;char s[10];int m;
clrscr();
n=load();/*统计文件总人数*/
fp=fopen("D:infile.txt","wb+");/*打开文件*/
printf("\n输入一个姓名:");
scanf("%s",s);
for(i=0;i<n;i++)/*找到第i个人后,就跳出循环,找不到就将数据写入文件中*/
{ if(strcmp(gy[i].name,s)==0) break; fwrite(&gy[i],sizeof(struct guyuan),1,fp);}
if(i<n-1)
{ for(m=i+1;m<n-1;m++)
fwrite(&gy[m],sizeof(struct guyuan),1,fp);
}
fclose(fp); printf("\n************delete success***********\n");
}
/*按实发工资排序*/
void sort()
{int i,j,k,n;struct guyuan temp;
n=load();/*统计文件总人数*/
for(i=0;i<n;i++)
{ k=i;
for(j=i+1;j<n;j++) /*按实发工资排序*/
{ if(gy[i].income<gy[j].income) k=j;
if(k!=i) temp=gy[i];gy[i]=gy[k];gy[k]=temp;
}
}
if((fp=fopen("D:infile.txt","wb+"))==NULL)/*打开文件*/
{ printf("\nCan not open the file\n");return;}
for(i=0;i<n;i++)
fwrite(&gy[i],sizeof(struct guyuan),1,fp); /*将数据写入文件中*/
fclose(fp);/*关闭文件*/
printf("\n***********sort success***********\n");
}
/*查询菜单*/
void search()
{int i;
do
{printf("\n*************查询菜单**********\n");
printf("\n1.综合查询\n\n2.按姓名查询\n\n3.退出菜单\n");
printf("\nplease choose the number:");/*提示信息*/
scanf("%d",&i);
switch(i)
{case 1:list(); break;
case 2:name(); break;
case 3:printf("\nexit!\n"); break;
default:printf("\nnumber error!\n");
}
}
while(i!=3);
}
/*综合查询*/
void list()
{ int i,n;n=load();/*统计文件总人数*/
clrscr();/*清屏*/
if((fp=fopen("D:infile.txt","rb"))==NULL)
{ printf("\ncan not open fine press any key exit\n");
getch();exit(1);}
printf("\n编号 姓名 部门 年龄 性别 工资 奖金 扣款 总收入\n");
for(i=0;i<n;i++)
{ fread(&gy[i],sizeof(struct guyuan),1,fp);
printf("\n%s%6s%6s%6d%6s%8.1f%8.1f%8.1f%8.1f\n",gy[i].no,gy[i].name,gy[i].part,gy[i].age,gy[i].sex,gy[i].gz,gy[i].jj,gy[i].kk,gy[i].income);
}
fclose(fp);
printf("\n***********all message!************\n");
}
/*按姓名查询雇员*/
void name()
{ int i;int n;char s[10];
clrscr();
n=load();/*统计文件总人数*/
fp=fopen("D:infile.txt","rb");
printf("\n输入一个姓名:");/*提示信息*/
scanf("%s",s);
printf("\n编号 姓名 部门 年龄 性别 工资 奖金 扣款 总收入\n");
for(i=0;i<n;i++)
{ fread(&gy[i],sizeof(struct guyuan),1,fp);
if(strcmp(gy[i].name,s)==0) break; /*找到第i个人后,就跳出循环*/
}
printf("\n%s%6s%6s%6d%6s%8.1f%8.1f%8.1f%8.1f\n",gy[i].no,gy[i].name,gy[i].part,gy[i].age,gy[i].sex,gy[i].gz,gy[i].jj,gy[i].kk,gy[i].income);
fclose(fp);
printf("\n*******over**********\n");
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -