Chinaunix首页 | 论坛 | 博客
  • 博客访问: 103631849
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类: C/C++

2008-04-16 23:12:39

作者:oopul   

#include
#include
#include
#include


#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 {
  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  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");
}

阅读(305) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~