邪恶八进制信息安全团队技术讨论组's Archiver

EvilOctal 2005-9-16 16:17

[转载]企业职工管理系统C源代码

信息来源:C语言基地

[code]#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");
}[/code]

页: [1]
© 1999-2008 EvilOctal Security Team