C語言課程設計職工信息管理系統

#include<stdio.h>
#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();
}

發佈了30 篇原創文章 · 獲贊 104 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章