企業職工管理系統

 

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <conio.h>


#define N 100


struct employee//職工基本情況
{
 int num;//工號
 int position;//職位1爲董事長2爲總經理3爲副總經理等
 char name[8];//姓名
 char sex[2];//性別f爲女m爲男
 int age;//年齡
 int cult;//文化程度1爲專家2爲博士3爲碩士4爲學士5爲其他
 int salary;//工資
 int state;//健康情況分爲good,general,bad
}em[N];


struct communication//職工通訊錄
{
 char name[8];
 char officetel[13];
 char hometel[13];
 char handtel[13];
 char address[13];
}empc[N];


struct empsalary//職工工資與姓名的文件
{
 char name[8];
 int salary;
}emps[N];


void manage();
void query();
void communicate();
void input();
void display();
void change();
void del();
void add();
void count();
int changeposition();
int changecult();
int changesalary();
int changestate();
void querysalary();
void creat();
void inputcommunicate();
void querycommunicate();
void changecommunicate();
void changetel1();
void changetel2();
void changetel3();

 


   

 


char password[7]="123456";


void main()
{
 int choice;
 char s[7];
 int flag=0;
 int n=3;
 do
 {
  printf("請你輸入密碼:/n");
  scanf("%s",s);
  if(!strcmp(s,password))//若密碼正確
  {
   printf("恭喜你成功登陸了/n/n/n");
   flag=1;
  
   break;
  }
  else
  {
   printf("輸入有錯誤請重新輸入:/n");
   n--;
  }
 }while(n>0);

 if(!flag)
 {
  printf("你的輸入次數已到再見/n");
 }
 do
 {
  printf("~~~~~~~~~~/t/t/t~~~~~~~~~~~~/n");
  printf("/t/t歡迎進入職工管理系統中文版/n");
  printf("製作人:李華詩/t班級:計034班/t學號:2003041150/n");
  printf("聯繫地址:廣西工學院/n");
  printf("%%%%%%%%%%%%%%%%%%%%%%%%%%%/n");
  printf("/t/t請你選擇操作類型:/n");
  printf("==============/t/t==============/n");
  printf("/t/t1進入管理系統/n");
  printf("/t/t2進入查詢系統/n");
  printf("/t/t3進入通訊錄/n");
  printf("/t/t0退出系統/n");
  printf("==============/t/t==============/n");
  printf("說明:版權歸作者所有違者必究/n/n/n/n");
  scanf("%d",&choice);
  switch(choice)
  {
  case 1:
      manage();
   break;
  case 2:
      query();
   break;
  case 3:
   communicate();
   break;
  case 0:
   {
    printf("謝謝使用再見/n");
     exit(0);
   }
  default:
   {
       printf("輸入有錯誤請重新輸入:/n");
    return;
   }
  }
 }while(1);
}

 

 

void manage()
{
 int choicemanage;
 char choice='y';
 while(choice=='y'||choice=='Y')
 {
  printf("/t/t歡迎進入管理系統/n");
  printf("===================/n");
  printf("/t/t請你選擇操作類型:/n");
  printf("/t/t1輸入職工信息/n");
  printf("/t/t2顯示職工信息/n");
  printf("/t/t3修改職工信息/n");
  printf("/t/t4追加一個職工信息/n");
  printf("/t/t5刪除一個職工信息/n");
  printf("/t/t6統計職工信息/n");
  printf("/t/t0返回/n");
  printf("=====================/n");
  scanf("%d",&choicemanage);
  switch(choicemanage)
  {
  case 1:
   input();//輸入職工信息
   break;
  case 2:
   display();//顯示職工信息
   break;
  case 3:
   change();//修改職工信息
   break;
  case 4:
   add();//追加一個職工信息
   break;
  case 5:
   del();//刪除一個職工信息
   break;
  case 6:
   count();//統計職工信息
   break;
  case 0:
   printf("謝謝你的使用再見/n");
   return;
  default:
   printf("你的輸入有錯請重新輸入/n");
  }
  printf("是否繼續管理?(y/n)");
  scanf("%s",&choice);
 }
 if(toupper(choice)=='N'||(choice)=='n')
 {
     printf("輸入完畢,任意鍵返回/n");
     getch();
     return;
 }
      
 
}


void input()
{
 FILE *fp;
 int i=0;
 char choiceinput='y';
 if((fp=fopen("employee.txt","w"))==NULL)
  return;
 while(choiceinput=='y'||choiceinput=='Y')
 {
  i++;
  printf("第%d個職工/n",i);
  printf("/n");
  printf("請你輸入工號:/n");//輸入工號
  scanf("%d",&em[i].num);
  printf("/n");
  printf("請你輸入職位:/n");//輸入職位
  printf("1爲董事長2爲總經理3爲副總經理/n");
  printf("4爲經理5爲副經理6爲祕書/n");
  printf("7爲技術員8爲領班9爲員工/n");

  scanf("%d",&em[i].position);
  printf("/n");
  printf("請你輸入姓名:/n");//輸入姓名
  scanf("%s",em[i].name);
  printf("/n");
  printf("請你輸入性別以m爲男f爲女:/n");//輸入性別
  scanf("%s",em[i].sex);
  printf("/n");
  printf("請你輸入文化程度:/n");//輸入文化程度
  printf("1爲專家2爲博士3爲碩士4爲學士5爲其他/n");
  scanf("%d",&em[i].cult);
  printf("/n");
  printf("請你輸入工資:/n");//輸入工資
  scanf("%d",&em[i].salary);
  printf("/n");
  printf("請你輸入身體情況:/n");//身體情況
  printf("1好2爲一般3爲差/n");
        scanf("%d",&em[i].state);
  printf("/n");
  printf("是否繼續輸入?(y/n)/n");
  scanf("%s",&choiceinput);
  fwrite(&em[i],sizeof(struct employee),1,fp);
 }
 if(toupper(choiceinput)=='N')
       {
  fclose(fp);
  printf("輸入完畢,任意鍵返回/n");
  getch();
  return;
       }
}


void display()//顯示職工信息
{
 FILE *fp;
 int i;
 if((fp=fopen("employee.txt","r"))==NULL)
  return;
 printf("輸出結果:/n");
 printf("工號  職位  姓名  性別  文化程度  工資  身體情況/n");
 for(i=0;fread(&em[i],sizeof(struct employee),1,fp)!=0;i++)
 {
  printf("工號%d/n",em[i].num);
  printf("職位爲%d/n",em[i].position);
  printf("1爲董事長2爲總經理3爲副總經理/n");
  printf("4爲經理5爲副經理6爲祕書/n");
  printf("7爲技術員8爲領班9爲員工/n");
  printf("姓名爲%s/n",em[i].name);
  printf("性別爲%s/n",em[i].sex);
  printf("其中m爲男f爲女/n");
  printf("文化程度爲%d/n",em[i].cult);
  printf("1爲專家2爲博士3爲碩士4爲學士5爲其他/n");
  printf("工資爲%d/n",em[i].salary);
  printf("身體情況爲%d/n",em[i].state);
  printf("1好2爲一般3爲差/n");
 }
 printf("完畢按任意鍵返回/n");
 getch();
    fclose(fp);
    return;
}


void change()
{
 FILE *fp;
 int i;
 char chname[8];
 int choicechange;
 printf("請你輸入要修改的人的姓名:/n");
 scanf("%s",&chname);
 if((fp=fopen("employee.txt","w+"))==NULL)
 {
  printf("不能夠打開這個文件/n");
  return;
 }
 for(i=0;i<N;i++)
 {
  if(strcmp(chname,em[i].name)==0)
  {
   printf("這是你要修改的人的信息/n");
   printf("工號爲%d職位爲%d姓名爲%s性別爲%s文化程度爲%d工資爲%d身體爲%d/n",em[i].num,em[i].position,em[i].name,em[i].sex,em[i].cult,em[i].salary,em[i].state);
   printf("------------------------------------------------------------/n");
   printf("請你輸入要修改的部分:/n");
   printf("======================/n");
   printf("1修改職位/n");
   printf("2修改文化程度/n");
   printf("3修改工資/n");
   printf("4修改身體情況/n");
   printf("0退出系統/n");
   printf("======================/n");
   printf("請選擇/n");
   scanf("%d",&choicechange);
   switch(choicechange)
   {
   case 1:
    em[i].position=changeposition();
    break;
   case 2:
    em[i].cult=changecult();
    break;
   case 3:
    em[i].salary=changesalary();
    break;
   case 4:
    em[i].state=changestate();
    break;
   case 0:
    return;
   default :
    printf("輸入有錯誤");
   }
   fwrite(&em[i],sizeof(struct employee),1,fp);
  }
 } 
 fclose(fp);
 printf("操作完成按任意鍵返回/n");
 getch();
 return;
}


int changeposition()
{
 int newposition;
 printf("請你輸入新職位:/n");
 printf("1爲董事長2爲總經理3爲副總經理/n");
 printf("4爲經理5爲副經理6爲祕書/n");
 printf("7爲技術員8爲領班9爲員工/n");
 scanf("%d",&newposition);
 return(newposition);
}


int changecult()
{
 int newcult;
 printf("請你輸入新的文憑:/n");
 printf("1爲專家2爲博士3爲碩士4爲學士5爲其他/n");
 scanf("%d",&newcult);
 return(newcult);
}


int changesalary()
{
 int newsalary;
 printf("請你輸入新的工資:/n");
 scanf("%d",&newsalary);
 return(newsalary);
}


int changestate()
{
 int newstate;
 printf("請你輸入現在的身體情況:/n");
 printf("1好2爲一般3爲差/n");
 scanf("%d",&newstate);
 return(newstate);
}


void add()//追加一個職工信息
{
 struct employee emp;
 FILE *fp;
 int i=0;
 if((fp=fopen("employee.txt","ab+"))==NULL)
 {
  printf("不能夠打開這個文件/n");
  getch();
  return;
 }
 printf("請你輸入新人的內容:/n");
 printf("請你輸入工號:/n");//輸入工號
 scanf("%d",&emp.num);
 printf("請你輸入職位:/n");//輸入職位
 printf("1爲董事長2爲總經理3爲副總經理/n");
 printf("4爲經理5爲副經理6爲祕書/n");
 printf("7爲技術員8爲領班9爲員工/n");
 scanf("%d",&emp.position);
 printf("請你輸入姓名:/n");//輸入姓名
 scanf("%s",emp.name);
 printf("請你輸入性別以m爲男f爲女:/n");//輸入性別
 scanf("%s",emp.sex);
 printf("請你輸入文化程度:/n");//輸入文化程度
 printf("1爲專家2爲博士3爲碩士4爲學士5爲其他/n");
 scanf("%d",&emp.cult);
 printf("請你輸入工資:/n");//輸入工資
 scanf("%d",&emp.salary);
 printf("請你輸入身體情況:/n");//身體情況
 printf("1好2爲一般3爲差/n");
    scanf("%d",&emp.state);
 fwrite(&emp,sizeof(struct employee),1,fp);
 rewind(fp);
 printf("插入完畢,按任意鍵返回/n");
 getch();
 fclose(fp);
 return;
}


void del()//刪除一個職工信息
{
 int i=0;
 char delname[8];
 FILE *fp;
 if((fp=fopen("employee.txt","w"))==NULL)
 {
  printf("文件爲空,不能夠打開/n");
  printf("按任意鍵返回/n");
  getch();
  return;
 }
 printf("請你輸入要刪除的人的姓名:/n");//刪除的職工的信息
 scanf("%s",delname);
 for(i=0;fread(&em[i],sizeof(struct employee),1,fp)!=0;i++)
 {
  if(strcmp(em[i].name,delname)!=0)
   fwrite(&em[i],sizeof(struct employee),1,fp);
 }
  fclose(fp);
  if((fp=fopen("employee.txt","r"))==NULL)//顯示新的職工的信息
   return;
  printf("新的職工的信息爲:/n");
  for(i=0;fread(&em[i],sizeof(struct employee),1,fp)!=0;i++)
  {
   printf("工號%d",em[i].num);
      printf("職位爲%d",em[i].position);
      printf("1爲董事長2爲總經理3爲副總經理/n");
      printf("4爲經理5爲副經理6爲祕書/n");
      printf("7爲技術員8爲領班9爲員工/n");
      printf("姓名爲%s",em[i].name[8]);
      printf("性別爲%s",em[i].sex[2]);
      printf("其中m爲男f爲女");
      printf("文化程度爲%d",em[i].cult);
      printf("1爲專家2爲博士3爲碩士4爲學士5爲其他/n");
      printf("工資爲%d",em[i].salary);
      printf("身體情況爲%d",em[i].state);
      printf("1好2爲一般3爲差/n");
      fclose(fp);
  }
}

 

void count()
{
 FILE *fp;
 int i=0;
 int num=0;//總人數統計
 int mnum=0,fnum=0;//性別人數統計
 int expernum=0,doctornum=0,masternum=0,bechelornum=0,othernum=0;//學位人數統計
 int dsznum=0,zglnum=0,fzglnum=0,glnum=0,fglnum=0;//職位人數統計
 int mishunum=0,jsynum=0,lbnum=0,ygnum=0;
 if((fp=fopen("employee.txt","r"))==NULL)
 {
  printf("不能夠打開這個文件/n");
  printf("按任意鍵繼續/n");
  getch();
  return;
 }
 do
 {
  fread(&em[i],sizeof(struct employee),1,fp);
  if(feof(fp))
   break;
  num++;
  if(strcmp(em[i].sex,"m")==0)
   mnum++;
  if(strcmp(em[i].sex,"f")==0)
   fnum++;
  if(em[i].cult==1)
   expernum++;
  if(em[i].cult==2)
   doctornum++;
  if(em[i].cult==3)
   masternum++;
  if(em[i].cult=4)
   bechelornum++;
  if(em[i].cult=5)
   othernum++;
  if(em[i].position==1)//職位統計
   dsznum++;
  if(em[i].position==2)
   zglnum++;
  if(em[i].position==3)
   fzglnum++;
  if(em[i].position==4)
   glnum++;
  if(em[i].position==5)
   fglnum++;
  if(em[i].position==6)
   mishunum++;
  if(em[i].position==7)
   jsynum++;
  if(em[i].position==8)
   lbnum++;
  if(em[i].position==9)
   ygnum++;
  i++;
 }while(1);
 printf("總人數爲%d/n",num);
 printf("====性別分類=====/n");
 printf("男人數爲%d/n",mnum);
 printf("女人數爲%d/n",fnum);
 printf("=====文憑分類=====/n");
 printf("專家數爲%d/n",expernum);
 printf("博士數爲%d/n",doctornum);
 printf("碩士數爲%d/n",masternum);
 printf("學士數爲%d/n",bechelornum);
 printf("其他的數爲%d/n",othernum);
 printf("=====職位分類========/n");
 printf("董事長數爲%d/n",dsznum);
 printf("總經理數爲%d/n",zglnum);
 printf("副總經理數爲%d",fzglnum);
 printf("經理數爲%d",glnum);
 printf("副經理數爲%d",fglnum);
 printf("祕書數爲%d",mishunum);
 printf("技術員數爲%d",jsynum);
 printf("領班人數爲%d",lbnum);
 printf("員工數爲%d",ygnum);
 fclose(fp);
 return;
}

 

 

void query()
{
 FILE *fp;
 int i=0;
 char quename[8];
 if((fp=fopen("employee.txt","r"))==NULL)
 {
  printf("不能夠打開文件,按任意鍵返回/n");
  getch();
  return;
 }
 printf("請你輸入要查詢的人的姓名/n");
 scanf("%s",quename);
 for(i=0;fread(&em[i],sizeof(struct employee),1,fp)!=0;i++)
    {
      if(strcmp(em[i].name,quename)==0)  /*找到,並顯示該職工記錄*/
   {
       printf("/t/t/n查詢到的職工號或姓名爲的信息如下:/n");
          printf("以下是你要查詢的人的信息/n");
    printf("工號%d",em[i].num);
    printf("職位爲%d",em[i].position);
    printf("/t1爲董事長2爲總經理3爲副總經理/n");
    printf("/t4爲經理5爲副經理6爲祕書/n");
    printf("/t7爲技術員8爲領班9爲員工/n");
    printf("姓名爲%s",em[i].name);
    printf("性別爲%s",em[i].sex);
    printf("/t其中m爲男f爲女");
    printf("文化程度爲%d",em[i].cult);
    printf("/t1爲專家2爲博士3爲碩士4爲學士5爲其他/n");
    printf("工資爲%d",em[i].salary);
      printf("身體情況爲%d",em[i].state);
    printf("/n");
    printf("查詢完畢,按任意鍵返回/n");
    getch();
          fclose(fp);
    return;
   }
 }
 printf("沒有這樣的人,按任意鍵返回/n");
 getch();
    fclose(fp);
    return;

}


void querysalary()
{
 int i;
 FILE *fp1,*fp2;
 creat();
 if((fp1=fopen("employee.txt","w+"))==NULL)
  return;
 for(i=0;fread(&em[i],sizeof(struct employee),1,fp1)!=0;i++)
 {
     printf("輸出結果爲:/n");
     printf("工號%d",em[i].num);
        printf("職位爲%d",em[i].position);
     printf("1爲董事長2爲總經理3爲副總經理/n");
     printf("4爲經理5爲副經理6爲祕書/n");
     printf("7爲技術員8爲領班9爲員工/n");
     printf("姓名爲%s",em[i].name[8]);
     printf("性別爲%s",em[i].sex[2]);
            printf("其中m爲男f爲女");
     printf("文化程度爲%d",em[i].cult);
     printf("1爲專家2爲博士3爲碩士4爲學士5爲其他/n");
     printf("工資爲%d",em[i].salary);
     printf("身體情況爲%d",em[i].state);
     printf("1好2爲一般3爲差/n");
  strcpy(emps[i].name,em[i].name);
  emps[i].salary=em[i].salary;
 }
 if((fp2=fopen("empsalary.txt","w"))==NULL)
  return;
 for(i=0;i<N;i++)
  fwrite(&emps[i],sizeof(struct empsalary),1,fp2);
 fclose(fp1);
 fclose(fp2);
}

 

void creat()
{
 FILE *fp;
 if((fp=fopen("employee.txt","w+"))==NULL)
  return;
 input();
 fclose(fp);
}

 

void communicate()
{
    int choicecommunicate;
    printf("歡迎進入通訊錄系統/n"); 
    printf("請你選擇操作類型:/n");
    printf("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^/n");
    printf("1爲輸入通訊錄信息/n");
    printf("2爲查詢通訊錄信息/n");
    printf("3爲修改通訊錄信息/n");
    printf("0爲退出通訊錄系統/n");
    printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~/n");
    scanf("%d",&choicecommunicate);
    switch(choicecommunicate)
    {
 case 1:
  inputcommunicate();
  break;
 case 2:
     querycommunicate();
  break;
 case 3:
  changecommunicate();
  break;
    case 0:
  {
        printf("謝謝使用再見/n");
  printf("按任意鍵返回/n");
  getch();
  return;
  }
    default:
        printf("輸入有錯/n");
 }
       
}  
   

 

void inputcommunicate()
{
        FILE *fp;
        int choiceincom='y';
        int i=0;
        if((fp=fopen("empcom.txt","w"))==NULL)
  {
                  printf("不能夠打開文件/n");
                  printf("任意鍵返回/n");
                  getch();
                  return;
  }
        printf("請你輸入通訊錄的信息:/n");
        while(choiceincom=='y'||choiceincom=='Y')
        {
               i++;
               printf("第%d個職工/n",i);
               printf("請你輸入姓名:/n");
               scanf("%s",empc[i].name);
               printf("請你輸入辦公室電話號碼:/n");
               scanf("%s",empc[i].officetel);
               printf("請你輸入家庭電話號碼:/n");
               scanf("%s",empc[i].hometel);
               printf("請你輸入手機號碼:/n");
               scanf("%s",empc[i].handtel);
               printf("請你輸入地址:/n");
               scanf("%s",empc[i].address);
               printf("是否繼續輸入?(y/n)/n");
               choiceincom=getch();
      fwrite(&empc[i],sizeof(struct communication),1,fp);
          }
  if(toupper(choiceincom)=='N')
       {
         fclose(fp);
         printf("輸入完畢,任意鍵返回/n");
         return;
  }
      
         
         
}

 

void querycommunicate()
{
       FILE *fp;
       int i=0;
       char qcname[8];
       if((fp=fopen("empcom.txt","r"))==NULL)
       {
     printf("不能夠打開文件,按任意鍵返回/n");
     getch();
     return;
        }
    printf("請你輸入要查詢的人的姓名:/n");
       scanf("%s",qcname);
    for(i=0;fread(&empc[i],sizeof(struct communication),1,fp)!=0;i++)
    {
           if(strcmp(empc[i].name,qcname)==0)
           {
               printf("以下爲您所要求的信息:/n");
               printf("姓名爲%s/n",empc[i].name);
               printf("辦公室電話號碼爲%s/n",empc[i].officetel);
               printf("家庭電話號碼爲%s/n",empc[i].hometel);
               printf("手機號碼爲%s/n",empc[i].handtel);
               printf("家庭地址爲%s/n",empc[i].address);
      printf("查詢完畢,按任意鍵返回/n");
         getch();
               fclose(fp);
         return;
     }
    }
  printf("沒有這樣的人,按任意鍵返回/n");
     getch();
        fclose(fp);
        return;
}

 

 

void changecommunicate()
{
      FILE *fp;
   int i=0;
      char chcname[8];
   int choicecom;
      if((fp=fopen("empcom.txt","w+"))==NULL)
      {
          printf("打不開文件按任意鍵返回/n");
    getch();
    return;
   }
   printf("請你輸入你要修改的人的姓名:/n");
      scanf("%s",chcname);
       for(i=0;fread(&empc[i],sizeof(struct communication),1,fp)!=0;i++)
       {
            if(strcmp(empc[i].name,chcname)==0)
            {
                printf("以下爲您所要修改的人的信息:/n");
                printf("姓名爲%s/n",empc[i].name);
                printf("辦公室電話號碼爲%s/n",empc[i].officetel);
                printf("家庭電話號碼爲%s/n",empc[i].hometel);
                printf("手機號碼爲%s/n",empc[i].handtel);
                printf("家庭地址爲%s/n",empc[i].address);
                printf("請你選擇要修改的東西:/n");
                printf("$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$/n");
                printf("1修改辦公室電話號碼/n");
                printf("2修改家庭電話號碼/n");
                printf("3修改手機電話號碼/n");
       printf("0退出系統/n");
                printf("$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$/n");
    scanf("%d",&choicecom);
    switch(choicecom)
    {
    case 1:
      changetel1();
      break;
    case 2:
      changetel2();
      break;
    case 3:
      changetel3();
      break;
    case 0:
      return;
    default:
      printf("輸入有錯/n");
    }
      
   }
    }
}


void changetel1()
{
 printf("參照上面有時間再編/n");
}

void changetel2()
{
 printf("參照上面有時間再編/n");
}

void changetel3()
{
 printf("參照上面有時間再編/n");
}

 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章