#include<string.h>
#include<stdlib.h>
#define SIZE 2
struct worker_type
{int number;
char name[20];
char sex;
char xueli[20];
int wage;
char address[30];
char phone_num[20];
}worker[SIZE]; int i=0;
void input()
{FILE *fp;
int i;
printf("信息輸入\n");
for(i=0;i<SIZE;i++)
{
printf("\n請輸入職工的姓名:");
scanf("%s",worker[i].name);
printf("\n請輸入職工的編號:");
scanf("%d",&worker[i].number);
printf("\n請輸入職工的學歷:");
scanf("%s",worker[i].xueli);
printf("\n請輸入職工的工資:");
scanf("%d",&worker[i].wage);
printf("\n請輸入職工的性別:");
getchar();//注意消除多餘字符
scanf("%c",&worker[i].sex);
printf("\n請輸入職工的地址:");
scanf("%s",worker[i].address);
printf("\n請輸入職工的電話:");
scanf("%s",worker[i].phone_num);
}
if((fp=fopen("D:\\worker.dat", "w"))==NULL)
{printf("cannot open file\n");
return;}
for(i=0;i<SIZE;i++)
if(fwrite(&worker[i],sizeof(struct worker_type),1,fp)!=1)
printf("file write error\n");
fclose(fp);
}
void scan()
{
FILE *fp;
int i;
printf(" 信息瀏覽\n\n");
printf(" 編號 姓名 性別 學歷 工資 地址 電話 \n ");
printf("********************************************************************************\n");
if((fp=fopen("D:\\worker.dat", "r"))==NULL)
{printf("cannot open file\n");
return;}
for(i=0;i<SIZE;i++)
{
fread(&worker[i],sizeof(struct worker_type),1,fp);
printf(" %4d%15s%4c%15s%8d%15s%15s\n\n", worker[i].number, worker[i].name, worker[i].sex, worker[i].xueli, worker[i].wage, worker[i].address, worker[i].phone_num);}
fclose(fp);
}
void find()
{ FILE *fp;
int i,n,a;char name[20];
printf(" 請輸入您的查詢方式:\n\n 1.按編號查詢\n 2.按姓名查詢\n");
scanf("%d",&n);
switch(n)
{case 1:
printf(" 請輸入要查找職工的編號:\n");
scanf("%d",&a);
if((fp=fopen("D:\\worker.dat", "r"))==NULL)
{printf("cannot open file\n");
return;}
for(i=0;i<SIZE;i++)
{fread(&worker[i],sizeof(struct worker_type),1,fp);
if(a==worker[i].number)
{ printf(" 編號 姓名 性別 學歷 工資 地址 電話 \n ");
printf("********************************************************************************\n");
printf(" %4d%15s%4c%15s%8d%15s%15s\n\n", worker[i].number, worker[i].name, worker[i].sex, worker[i].xueli, worker[i].wage, worker[i].address, worker[i].phone_num);
fclose(fp);}}break;
case 2:
printf("請輸入要查找職工的姓名:\n");
scanf("%s",name);
if((fp=fopen("D:\\worker.dat", "r"))==NULL)
{printf("cannot open file\n");
return;}
for(i=0;i<SIZE;i++)
{fread(&worker[i],sizeof(struct worker_type),1,fp);
if(strcmp(worker[i].name,name)==0)
{
printf(" 編號 姓名 性別 學歷 工資 地址 電話 \n ");
printf("********************************************************************************\n");
printf(" %4d%15s%4c%15s%8d%15s%15s\n\n", worker[i].number, worker[i].name, worker[i].sex, worker[i].xueli, worker[i].wage, worker[i].address, worker[i].phone_num);
fclose(fp);}}break;
fclose(fp);break;
default:printf("您輸入的指令有誤!\n");
}
}
void change()
{FILE*fp;
int n,i;
printf(" 請瀏覽職工信息表,然後輸入需要修改信息職工的編號\n\n");
scan();
printf(" 請輸入需要修改信息職工的編號\n");
scanf("%d",&n);
if((fp=fopen("D:\\worker.dat", "r+"))==NULL)
{printf("cannot open file\n");
return;}
for(i=0;i<SIZE;i++)
{
fread(&worker[i],sizeof(struct worker_type),1,fp);
if(n==worker[i].number)
break;
}
fseek(fp,-sizeof(worker_type),SEEK_CUR);
printf("請輸入修改後的信息:\n");
printf("\n請輸入職工的姓名:");
scanf("%s",worker[i].name);
printf("\n請輸入職工的編號:");
scanf("%d",&worker[i].number);
printf("\n請輸入職工的學歷:");
scanf("%s",worker[i].xueli);
printf("\n請輸入職工的工資:");
scanf("%d",&worker[i].wage);
printf("\n請輸入職工的性別:");
getchar();
scanf("%c",&worker[i].sex);
printf("\n請輸入職工的地址:");
scanf("%s",worker[i].address);
printf("\n請輸入職工的電話:");
scanf("%s",worker[i].phone_num);
fwrite(&worker[i],sizeof(struct worker_type),1,fp);
fclose(fp);
}
void delate()
{FILE *fp;
int i,a,j;
printf(" 請輸入要刪除信息職工的編號\n");
scanf("%d",&a);
if((fp=fopen("D:\\worker.dat", "r"))==NULL)
{printf("cannot open file\n");
return;}
for(i=0;i<SIZE;i++)
{fread(&worker[i],sizeof(struct worker_type),1,fp);}
fclose(fp);
for(i=0;i<SIZE;i++)
if(a==worker[i].number)break;
{
for(j=i;j<SIZE;j++)
{strcpy(worker[j].name,worker[j+1].name);
worker[j].number=worker[j+1].number;
strcpy(worker[j].xueli,worker[j+1].xueli);
worker[j].wage=worker[j+1].wage;
worker[j].sex=worker[j+1].sex;
strcpy(worker[j].address,worker[j+1].address);
strcpy(worker[j].phone_num,worker[j+1].phone_num);}
}
if((fp=fopen("D:\\worker.dat", "w"))==NULL)
{printf("cannot open file\n");
return;}
fclose(fp);
if((fp=fopen("D:\\worker.dat", "w"))==NULL)
{printf("cannot open file\n");
return;}
for(i=0;i<SIZE-1;i++)
if(fwrite(&worker[i],sizeof(struct worker_type),1,fp)!=1)
printf("file write error\n");
fclose(fp);
}
void menu()
{ int n;
printf(" *************主菜單**************\n");
printf(" * 1、信息輸入 *\n");
printf(" * 2、信息瀏覽 *\n");
printf(" * 3、信息查詢 *\n");
printf(" * 4、信息修改 *\n");
printf(" * 5、信息刪除 *\n");
printf(" * 6、退出系統 *\n");
printf(" *********************************\n");
scanf("%d",&n);
switch (n)
{case 1: input(); break;
case 2: scan(); break;
case 3: find(); break;
case 4: change();break;
case 5: delate();break;
case 6: exit(0); break;
default: printf("操作錯誤!");}
printf(" 返回主菜單請按1,結束操作請按0\n");
scanf("%d",&n);
switch(n)
{case 1: menu();break;
case 0: ; break;
default:printf("您輸入的指令有誤!\n");}
}
void main()
{printf(" *********************************\n");
printf(" ******職工信息管理系統******\n");
printf(" *********************************\n\n");
menu();
}