WEB开发网
开发学院软件开发C++ 改编 的 C版 职工管理系统 阅读

改编 的 C版 职工管理系统

 2008-03-08 21:41:29 来源:WEB开发网   
核心提示:/*八、简单的职工治理系统1.问题描述对单位的职工进行治理,包括插入、删除、查找、排序等功能,改编 的 C版 职工管理系统,2.要求职工对象包括姓名、性别、出生年月、工作年月、学历、职务、住址、电话等信息,(1)新增一名职工:将新增职工对象按姓名以字典方式职工治理文件中,按任意键返回 "); getch()

/*八、简单的职工治理系统
1.问题描述
  对单位的职工进行治理,包括插入、删除、查找、排序等功能。
2.要求
  职工对象包括姓名、性别、出生年月、工作年月、学历、职务、住址、电话等信息。
(1)新增一名职工:将新增职工对象按姓名以字典方式职工治理文件中。
(2)删除一名职工:从职工治理文件中删除一名职工对象。
(3)查询:从职工治理文件中查询符合某些条件的职工。
(4)修改:检索某个职工对象,对其某些属性进行修改。
(5)排序:按某种需要对职工对象文件进行排序。
3.实现提示
  职工对象数不必很多,便于一次读入内存,所有操作不经过内外存交换。
(1)由键盘输入职工对象,以文件方式保存。程序执行时先将文件读入内存。
(2)对职工对象中的"姓名"按字典顺序进行排序。
(3)对排序后的职工对象进行增、删、查询、修改、排序等操作。
4.选做内容
  将职工对象按散列法存储,并设计解决冲突的方法。在此基础上实现增、删、查询、修改、排序等操作。
*/
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <conio.h>
#define N 100 typedef 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
 char day[10];//工作年月
}ro;
ro em[N];
typedef struct communication//职工通讯录
{
 char name[8];
 char Officetel[13];
 char hometel[13];
 char handtel[13];
 char address[13];
 char time[13];
}el;
el empc[N]; void manage();
void query();
void communicate();
void input();
void display();
void change();
void del();
void add();
int changeposition();
int changecult();
int changesalary();
int changestate();
void inputcommunicate();
void querycommunicate();
void changecommunicate();
char *changetel1();
char *changetel2();
char *changetel3(); int total;
int p; char passWord[10]="talentxch"; void main()
{
   int choice;
   char s[10];
   int flag=0;
   int n=3;
   do
  {
     PRintf("请你输入密码: ");
     scanf("%s",s);
     if(!strcmp(s,password))//若密码正确
 {
       printf("恭喜你成功登陆了 ");
       flag=1;
       break;

 }
     else
 {
       printf("输入有错误请重新输入: ");
       n--;
 }
  }while(n>0);
   if(!flag)
  {
     printf("你的输入次数已到再见 ");
  }
   do
  {
     printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ");
     printf(" 欢迎进入职工治理系统中文版 ");
     printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ");
     printf(" 请你选择操作类型: ");
     printf("====================================================== ");
     printf("  1进入治理系统 ");
     printf("  2进入查询系统 ");
     printf("  3进入通讯录 ");
     printf("  0退出系统 ");
     printf("====================================================== ");
     scanf("%d",&choice);
     switch(choice)
 {
      case 1:manage();
      break;
      case 2:query();
      break;
      case 3:communicate();
      break;
      case 0:
    {
           printf("谢谢使用再见 ");
           exit(0);
    }
      default:
    {
           printf("输入有错误请重新输入: ");
           return;
    }
 }
  }while(1);
} void manage()
{
   int choicemanage;
   char choice='y';
   while(choice=='y'choice=='Y')

  {
     printf(" 欢迎进入治理系统 ");
     printf("====================================================== ");
     printf(" 请你选择操作类型: ");
     printf(" 1输入职工信息 ");
     printf(" 2显示职工信息 ");
     printf(" 3修改职工信息 ");
     printf(" 4追加一个职工信息 ");
     printf(" 5删除一个职工信息 ");
     printf(" 0返回 ");
     printf("====================================================== ");
     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 0:
       printf("谢谢你的使用再见 ");
       return;
       default:printf("你的输入有错请重新输入 ");
  }
     printf("是否继续治理?(y/n)");
     scanf("%s",&choice);
  }
   if(toupper(choice)=='N'(choice)=='n')
  {
     printf("输入完毕,任意键返回 ");
     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++;
  total++;
    printf("第%d个职工 ",i);
    printf(" ");
    printf("请你输入工号: ");//输入工号
    scanf("%d",&em[i].num);
    printf(" ");
    printf("请你输入职位: ");//输入职位
    printf("1董事长   2总经理   3副总经理 ");
    printf("4部门经理  5工程师   6秘书 ");
    printf("7技术员   8领班    9员工 ");
    scanf("%d",&em[i].position);
    printf(" ");
    printf("请你输入姓名: ");//输入姓名
    scanf("%s",em[i].name);
    printf(" ");
    printf("请你输入性别以(m男f女): ");//输入性别
    scanf("%s",em[i].sex);
    printf(" ");
    printf("请你输入文化程度: ");//输入文化程度
    printf("1专家  2博士  3硕士  4学士  5其他 ");
    scanf("%d",&em[i].cult);
    printf(" ");
    printf("请你输入工资: ");//输入工资
    scanf("%d",&em[i].salary);
    printf(" ");
    printf("请你输入身体情况: ");//身体情况
    printf("1好  2一般  3差 ");
    scanf("%d",&em[i].state);
  printf("请你输入工作年月: ");
  scanf("%s",em[i].day);
    printf(" ");
    printf("是否继续输入?(y/n) ");
     scanf("%s",&choiceinput);
    fwrite(&em[i],sizeof(struct employee),1,fp);
 }
   if(toupper(choiceinput)=='N')  //字符大小写转换
    {
      fclose(fp);
      printf("输入完毕,任意键返回 ");
      getch();
      return;
    }
}
void display()//显示职工信息
{
  FILE *fp;
  int i;
  if((fp=fopen("employee.txt","r"))==NULL)
   return;
  printf("输出结果: ");
  printf("工号  职位  姓名  性别  文化程度  工资  身体情况 ");
  printf(" ");
  for(i=0;fread(&em[i],sizeof(struct employee),1,fp)!=0;i++)
  { 

    printf(" ");
    printf("工号: %d ",em[i].num);
    printf("职位: %d ",em[i].position);
    printf("1董事长   2总经理   3副总经理 ");
    printf("4部门经理  5工程师   6秘书 ");
    printf("7技术员   8领班    9员工 ");
    printf("姓名: %s ",em[i].name);
    printf("性别: %s ",em[i].sex);
    printf("其中(m男f女) ");
    printf("文化程度: %d ",em[i].cult);
    printf("1专家  2博士  3硕士  4学士  5其他 ");
    printf("工资: %d ",em[i].salary);
    printf("身体情况: %d ",em[i].state);
    printf("1好  2一般  3差 ");
  printf("工作年月: %s",em[i].day);
    printf(" ");
  }
  printf(" ");
  printf("完毕按任意键返回 ");
  getch();                     //文件里用
  fclose(fp);
   return;
}
void change()
{
 FILE *fp;
 int i;
 char chname[8];
 int choicechange;
 ro a[N];
 printf("请你输入要修改的人的姓名: ");
 scanf("%s",&chname);
 if((fp=fopen("employee.txt","w+"))==NULL)
 {
  printf("不能够打开这个文件 ");
  return;
 }
 for(i=0;i<N;i++)
 {
  if(strcmp(chname,em[i].name)==0)
  {
  printf("这是你要修改的人的信息 ");
  printf("工号:%d 职位:%d 姓名:%s 性别:%s 文化程度:%d 工资:%d 身体:%d ",em[i].num,em[i].position,em[i].name,em[i].sex,em[i].cult,em[i].salary,em[i].state);
  printf("-------------------------------------------------------- ");
  printf("请你输入要修改的部分: ");
  printf("======================================================== ");
  printf("1修改职位 ");
  printf("2修改文化程度 ");
  printf("3修改工资 ");
  printf("4修改身体情况 ");
  printf("0退出系统 ");
  printf("======================================================== ");
  printf("请选择 ");
  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("输入有错误");
  }
  a[i]=em[i];
  }
  else
  {
  a[i]=em[i];
  }
 }
 for(i=0;i<total;i++)
 {
  em[i]=a[i];
 }
 i=0;
 fwrite(&em[i],sizeof(struct employee),total,fp);
 fclose(fp);
 printf("操作完成按任意键返回 ");
 getch();
 return;
}
int changeposition()
{
 int newposition;
 printf("请你输入新职位: ");
 printf("1董事长   2总经理   3副总经理 ");
 printf("4部门经理  5工程师   6秘书 ");
 printf("7技术员   8领班    9员工 ");
 scanf("%d",&newposition);
 return(newposition);
}
int changecult()
{
 int newcult;
 printf("请你输入新的文凭: ");
 printf("1专家  2博士  3硕士  4学士  5其他 ");
 scanf("%d",&newcult);
 return(newcult);
}
int changesalary()
{
 int newsalary;
 printf("请你输入新的工资: ");
 scanf("%d",&newsalary);
 return(newsalary);
}
int changestate()
{
 int newstate;
 printf("请你输入现在的身体情况: ");
 printf("1好  2一般  3差 ");
 scanf("%d",&newstate);
 return(newstate);
}
void add()//追加一个职工信息
{
 struct employee emp;
 FILE *fp;
 int i=0;
 if((fp=fopen("employee.txt","ab+"))==NULL)
 {
  printf("不能够打开这个文件 ");
  getch();
  return;
 }
 printf("请你输入新人的内容: ");
 printf("请你输入工号: ");//输入工号
 scanf("%d",&emp.num);
 printf("请你输入职位: ");//输入职位
 printf("1董事长   2总经理   3副总经理 ");
 printf("4部门经理  5工程师   6秘书 ");
 printf("7技术员   8领班    9员工 ");
 scanf("%d",&emp.position);
 printf("请你输入姓名: ");//输入姓名
 scanf("%s",emp.name);
 printf("请你输入性别以(m男f女): ");//输入性别
 scanf("%s",emp.sex);
 printf("请你输入文化程度: ");//输入文化程度
 printf("1专家  2博士  3硕士  4学士  5其他 ");
 scanf("%d",&emp.cult);
 printf("请你输入工资: ");//输入工资
 scanf("%d",&emp.salary);
 printf("请你输入身体情况: ");//身体情况
 printf("1好  2一般  3差 ");
 scanf("%d",&emp.state);
 printf("请你输入工作年月: ");
 scanf("%s",emp.day);
 fwrite(&emp,sizeof(struct employee),1,fp);
 rewind(fp);
 printf("插入完毕,按任意键返回 ");
 getch();
 total=total+1;
 fclose(fp);
 return;
}

void del()//删除一个职工信息
{
 int i=0;
 char delname[8];
 FILE *fp;
 if((fp=fopen("employee.txt","w"))==NULL)
 {
  printf("文件为空,不能够打开 ");
  printf("按任意键返回 ");
  getch();
  return;
 }
 printf("请你输入要删除的人的姓名: ");//删除的职工的信息
 scanf("%s",delname);
 for(i=0;i<N;i++)
 {
  if(strcmp(em[i].name,delname)==0) 
  {
  total--;
  for(;i<N;i++)
  {
   em[i]=em[i+1];
  }
  }
 }
  i=0;
  fwrite(&em[i],sizeof(struct employee),total,fp);
  fclose(fp);
} void query()
{
 FILE *fp;
 int i=0;
 char quename[8];
 if((fp=fopen("employee.txt","r"))==NULL)
 {
  printf("不能够打开文件,按任意键返回 ");
  getch();
  return;
 }
 printf("请你输入要查询的人的姓名 ");
 scanf("%s",quename);
 for(i=0;fread(&em[i],sizeof(struct employee),1,fp)!=0;i++)
 {
    if(strcmp(em[i].name,quename)==0)  /*找到,并显示该职工记录*/
  {
      printf(" 查询到的职工号或姓名为的信息如下: ");
      printf("以下是你要查询的人的信息 ");
      printf("工号: %d ",em[i].num);
      printf("职位: %d ",em[i].position);
      printf("1董事长    2总经理   3副总经理 ");
      printf("4部门经理   5工程师   6秘书 ");
      printf("7技术员    8领班    9员工 ");
      printf("姓名: %s ",em[i].name);
      printf("性别: %s ",em[i].sex);
      printf("其中(m男f女) ");
      printf("文化程度: %d ",em[i].cult);
      printf("1专家  2博士  3硕士  4学士  5其他 ");
      printf("工资: %d ",em[i].salary);
      printf("身体情况: %d ",em[i].state);
      printf("1好  2一般  3差 ");
      printf("工作年月: %s ",em[i].day);
      printf(" ");
       printf("查询完毕,按任意键返回 ");
      getch();

      fclose(fp);
      return;
  }
 }
   printf("没有这样的人,按任意键返回 ");
   getch();
   fclose(fp);
   return;
} void communicate()
{
   int choicecommunicate;
   printf("欢迎进入通讯录系统 "); 
   printf("请你选择操作类型: ");
   printf("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ");
   printf("1为输入通讯录信息 ");
   printf("2为查询通讯录信息 ");
   printf("3为修改通讯录信息 ");
   printf("0为退出通讯录系统 ");
   printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ");
   scanf("%d",&choicecommunicate);
   switch(choicecommunicate)
   {
    case 1:inputcommunicate();
    break;
    case 2:querycommunicate();
    break;
    case 3:changecommunicate();
    break;
    case 0:
 {
       printf("谢谢使用再见 ");
       printf("按任意键返回 ");
       getch();
       return;
 }
    default:
    printf("输入有错 ");
 }   
}    
void inputcommunicate()
{
     FILE *fp;
     int choiceincom='y';
     int i=0;
     if((fp=fopen("empcom.txt","w"))==NULL)
 {
          printf("不能够打开文件 ");
          printf("任意键返回 ");
          getch();
          return;
 }
     printf("请你输入通讯录的信息: ");
     while(choiceincom=='y'choiceincom=='Y')
     {
        p++;
        i++;

        printf("第%d个职工 ",i);
        printf("请你输入姓名: ");
        scanf("%s",empc[i].name);
        printf("请你输入生日: ");
        scanf("%s",empc[i].time);
        printf("请你输入办公室电话号码: ");
        scanf("%s",empc[i].officetel);
        printf("请你输入家庭电话号码: ");
        scanf("%s",empc[i].hometel);
        printf("请你输入手机号码: ");
        scanf("%s",empc[i].handtel);
        printf("请你输入地址: ");
        scanf("%s",empc[i].address);
        printf("是否继续输入?(y/n) ");
        choiceincom=getch();
        fwrite(&empc[i],sizeof(struct communication),1,fp);
      }
     if(toupper(choiceincom)=='N')
     {
       fclose(fp);
       printf("输入完毕,任意键返回 ");
       return;
 }     
}
void querycommunicate()
{
    FILE *fp;
    int i=0;
    char qcname[8];
    if((fp=fopen("empcom.txt","r"))==NULL)
    {
      printf("不能够打开文件,按任意键返回 ");
      getch();

      return;
    }
    printf("请你输入要查询的人的姓名: ");
      scanf("%s",qcname);
    for(i=0;fread(&empc[i],sizeof(struct communication),1,fp)!=0;i++)
   {
      if(strcmp(empc[i].name,qcname)==0)
      {
        printf("以下为您所要求的信息: ");
        printf("姓名: %s ",empc[i].name);
        printf("生日: %s ",empc[i].time);
        printf("办公室电话号码: %s ",empc[i].officetel);
        printf("家庭电话号码: %s ",empc[i].hometel);
        printf("手机号码: %s ",empc[i].handtel);
        printf("家庭地址: %s ",empc[i].address);
        printf("查询完毕,按任意键返回 ");
        getch();
        fclose(fp);
        return;
   }
   }
    printf("没有这样的人,按任意键返回 ");
    getch();
    fclose(fp);
    return;
}
void changecommunicate()
{
    FILE *fp;
    int i=0;
    char chcname[8];
    int choicecom;
  el b[N];
    if((fp=fopen("empcom.txt","w+"))==NULL)
    {
      printf("打不开文件按任意键返回 ");
      getch();
      return;
  }
    printf("请你输入你要修改的人的姓名: ");
     scanf("%s",chcname);
     for(i=0;i<p;i++)
     {
       if(strcmp(empc[i].name,chcname)==0)

       {
         printf("以下为您所要修改的人的信息: ");
         printf("姓名:%s ",empc[i].name);
         printf("生日: %s ",empc[i].time);
         printf("办公室电话号码: %s ",empc[i].officetel);
         printf("家庭电话号码: %s ",empc[i].hometel);
         printf("手机号码: %s ",empc[i].handtel);
         printf("家庭地址: %s ",empc[i].address);
         printf("请你选择要修改的东西: ");
         printf("$$$$$$$$$$$$$$$$$$$$$$ ");
         printf("1修改办公室电话号码 ");
         printf("2修改家庭电话号码 ");
         printf("3修改手机电话号码 ");
         printf("0退出系统 ");
         printf("$$$$$$$$$$$$$$$$$$$$$$ ");
         scanf("%d",&choicecom);
         switch(choicecom)
  {
           case 1:strcpy(empc[i].officetel,changetel1());
           break;
           case 2:strcpy(empc[i].hometel,changetel2());  
           break;
           case 3:strcpy(empc[i].handtel,changetel3());  
           break;
           case 0:

           return;
           default:
           printf("输入有错 ");
  }
  b[i]=empc[i];
  }
  else
  
 }
 for(i=0;i<p;i++)
 
 i=0;
 fwrite(&empc[i],sizeof(struct communication),p,fp);
 fclose(fp);
     printf("操作完成按任意键返回 ");
     getch();
 return;
}
char *changetel1()
{
 char newofficetel[13];
 printf("请你输入新办公室电话号码: ");
 scanf("%s",newofficetel);
 return(newofficetel);
} char *changetel2()
{
 char newhometel[13];
 printf("请你输入新家庭电话号码: ");
 scanf("%s",newhometel);
 return(newhometel);
} char *changetel3()
{
 char newhandtel[13];
 printf("请你输入新手机电话号码: ");
 scanf("%s",newhandtel);
 return(newhandtel);
}

Tags:改编 职工 管理系统

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接