C++实现教职工管理系统课程设计

Ophelia ·
更新时间:2024-11-13
· 54 次阅读

本文实例为大家分享了C++实现教职工管理系统的具体代码,供大家参考,具体内容如下

要求:设计一个程序来管理职工较全面数据信息,具备数据的输入、查找、删除等功能。具体功能细节可以根据自己理解情况进行增加。

以下是我的设计:

#include <stdio.h> #include <windows.h> #include <string.h> struct worker { int num; char name[20]; char zhicheng[10];   int wages; int reward; long birth; int salary; }work[500],work1;        /*定义结构体*/ void menu();                     //声明菜单函数 void type_in();                  //声明录入函数 void baocun(int);                //声明保存函数 void scan();                     //声明浏览函数 void del();                      //声明删除函数 void search();                   //声明查询函数 void search_zhicheng();          //声明按职称查询函数 void search_name();              //声明按姓名查找函数 void change();                   //声明修改函数 void order();                    //声明排序函数 void add();                      //声明添加函数 void order_wages(); void order_name(); void menu()                      /*菜单函数*/ {     printf("\n");     printf("                                欢迎进入                             \n");     printf("                             职工信息管理系统                                   ");     printf("******************************************************************************\n");     printf("           1.录入职工信息\n");     printf("           2.浏览职工信息\n");     printf("           3.查询职工信息\n");     printf("           4.删除职工信息\n");     printf("           5.修改职工信息\n");     printf("           6.职工信息排序\n");     printf("           7.添加职工信息\n");     printf("           8.退出\n");     printf("*******************************************************************************\n");     printf("\n"); } /********************************************************************************************/ void main() {        int n,f;     while(1)     {          do         {             menu();                         printf("请输入你需要操作的序号(1-8):\n");             scanf("%d",&n);             if(n>=1&&n<=8)             {                 f=1;                 break;             }             else             {                 f=0;                 printf("您输入有误,请重新选择!");             }         }while(f==0);         switch(n)         {         case 1:printf("               录入职工信息\n");printf("\n");type_in();break;         case 2:printf("               浏览职工信息\n");printf("\n");system("cls");scan();break;         case 3:printf("               查询职工信息\n");printf("\n");system("cls");search();break;          case 4:printf("               删除职工信息\n");printf("\n");system("cls");del();break;         case 5:printf("               修改职工信息\n");printf("\n");system("cls");change();break;         case 6:printf("               职工信息排序\n");printf("\n");system("cls");order();break;         case 7:printf("               添加职工信息\n");printf("\n");system("cls");add();break;         case 8:system("cls");printf("\n\n\n\n\n\n                      ------谢谢使用!---------\n\n\n\n\n\n\n                                                          by --凤灼\n");return ;         default :break;         }     }     } /***********************************************************************************/ void type_in()   /*录入函数*/ {     int i,m;     printf("请输入需要创建信息的职工人数(1--500):\n");     scanf("%d",&m);     for (i=0;i<m;i++)     {         printf("请输入职工号: ");         scanf("%d",&work[i].num);           printf("\n");         printf("请输入姓名:  ");         scanf("%s",work[i].name);         getchar();         printf("请输入职称:  ");         scanf("%s",&work[i].zhicheng);         printf("请输入基本工资:  ");         scanf("%d",&work[i].wages);         printf("请输入奖金:  ");         scanf("%d",&work[i].reward);         printf("请输入生日(格式如19900101):  ");         scanf("%d",&work[i].birth);         getchar();system("cls");         printf("\n一个职工的信息档案创建完毕!请输入下一个职工的信息\n");              work[i].salary=work[i].wages + work[i].reward;         printf("\n");     }     baocun(m); } /***************************************************************************/ void baocun(int m)  /*保存文件函数*/ {     int i;     FILE *fp;     if ((fp=fopen("worker_list.txt","wb"))==NULL)  /*创建文件并判断是否能打开*/     {         printf ("此文件不能打开\n");         exit(0);     }     for (i=0;i<m;i++)          if (fwrite(&work[i],sizeof(struct worker),1,fp)!=1)             printf("file write error\n");         fclose(fp); } /***************************************************************************/ int load()  /*导入函数*/ {     FILE*fp;     int i=0;     if((fp=fopen("worker_list.txt","rb"))==NULL)     {         printf ("cannot open file\n");         exit(0);     }     else      {         do          {             fread(&work[i],sizeof(struct worker),1,fp);             i++;         }         while(feof(fp)==0);     }     fclose(fp);     return(i-1); } /*******************************************************************************/ void scan()  /*浏览函数*/ {     int i;     int m=load();     printf("\n职工号\t姓名\t职称\t基本工资\t奖金\t实际工资\t生日             \n");     for(i=0;i<m;i++)          printf("\n %d\t%s\t  %s\t  %d    \t%d\t %d\t      %ld\n",work[i].num,work[i].name,         work[i].zhicheng,work[i].wages,work[i].reward,work[i].salary,work[i].birth);     printf("按任意键继续\n");     getchar();     getchar();system("cls"); } /********************************************************************************/ void del()   /*删除函数*/ {     int m=load();     int i,j,n,t,f;     char name1[10];     printf("\n 原来的职工信息:\n");     scan();        printf("\n");     printf("请输入要删除的职工的姓名:\n");     scanf("%s",name1);     for(f=1,i=0;f&&i<m;i++)     {         if(strcmp(work[i].name,name1)==0)         {             printf("\n已找到此人,原始记录为:\n");             printf("\n职工号\t姓名\t职称\t基本工资\t奖金\t实际工资\t生日             \n");             printf("\n %d\t%s\t  %s\t  %d    \t%d\t %d\t      %ld\n",work[i].num,work[i].name,                 work[i].zhicheng,work[i].wages,work[i].reward,work[i].salary,work[i].birth);                                                                                                                         printf("\n确实要删除此人信息请按1,不删除请按0\n");             scanf("%d",&n);             if(n==1)                {                 for(j=i;j<m-1;j++)                 {                     work[j]=work[j+1];                 }                 f=0;             }         }     }     if(!f)         m=m-1;     else         printf("\n对不起,查无此人!\n");     printf("\n 浏览删除后的所有职工信息:\n");     baocun(m);          scan();       printf("\n继续删除请按1,不再删除请按0\n");     scanf("%d",&t);     switch(t)     {     case 1:del();break;     case 0:break;     default :break;     }system("cls"); } /**********************************************************************************/ void search()/*查询函数*/ {     int t,f;     do     {         printf("\n按姓名查询请按1 ; 按职称查询请按2 ; 返回主页按3\n");         scanf("%d",&t);         if(t>=1&&t<=3)         {             f=1;             break;         }         else         {             f=0;             printf("您输入有误,请重新选择!");         }     }while(f==0);system("cls");     while(f==1)     {         switch(t)         {          case 1:printf("按姓名查询\n");search_name();break;         case 2:printf("按职称查询\n");search_zhicheng();break;         case 3:main();break;         default:break;         }         system("cls");         } } /***********************************************************************************/ void search_name()/*按姓名查找函数*/ {     char name1[10];     int i,t;     int m=load();     printf("请输入要查找的姓名:\n");     scanf("%s",name1);     for(i=0;i<m;i++)         if(strcmp(name1,work[i].name)==0)         {               printf("\n已找到此人,其记录为:\n");             printf("\n职工号\t姓名\t职称\t基本工资\t奖金\t实际工资\t生日             \n");             printf("\n %d\t%s\t  %s\t  %d    \t%d\t %d\t      %ld\n",work[i].num,work[i].name,                 work[i].zhicheng,work[i].wages,work[i].reward,work[i].salary,work[i].birth);              break;         }         if(i==m)               printf("\n对不起,查无此人\n");         printf("\n");         printf("返回查询函数请按1,继续查询职工号请按2\n");         scanf("%d",&t);         switch(t)         {          case 1:search();break;         case 2: break;         default:break;         } } /*************************************************************************************/ void search_zhicheng()/*按职称查找函数*/ {     char zhicheng1[10];     int i,t;     int m=load();     printf("请输入要查找的职称:\n");     scanf("%s",zhicheng1);     for(i=0;i<m;i++)         if(strcmp(zhicheng1,work[i].zhicheng)==0)         {               printf("\n已找到此人,其记录为:\n");             printf("\n职工号\t姓名\t职称\t基本工资\t奖金\t实际工资\t生日             \n");             printf("\n %d\t%s\t  %s\t  %d    \t%d\t %d\t      %ld\n",work[i].num,work[i].name,                 work[i].zhicheng,work[i].wages,work[i].reward,work[i].salary,work[i].birth);              break;         }         if(i==m)               printf("\n对不起,信息有误\n");         printf("\n");         printf("返回查询函数请按1,继续查询职工号请按2\n");         scanf("%d",&t);         switch(t)         {          case 1:search();break;         case 2: break;         default:break;         } } /***************************************************************************************/ void change()  /*修改函数*/ {     int num;     char name[20];     char zhicheng[10];       int wages;     int reward;     int birth;     int salary;     int b,c,i,n,t,f;      int m=load();                                      /*导入文件内的信息*/     printf("\n 原来的职工信息:\n");     scan();                                           printf("\n");     printf("请输入要修改的职工的姓名:\n");     scanf("%s",name);     for(f=1,i=0;f&&i<m;i++)     {         if(strcmp(work[i].name,name)==0)         {             printf("\n已找到此人,原始记录为:\n");             printf("\n职工号\t姓名\t职称\t基本工资\t奖金\t实际工资\t生日             \n");             printf("\n %d\t%s\t  %s\t  %d    \t%d\t %d\t      %ld\n",work[i].num,work[i].name,                 work[i].zhicheng,work[i].wages,work[i].reward,work[i].salary,work[i].birth);              printf("\n确实要修改此人信息请按1 ; 不修改请按0\n");             scanf("%d",&n);             if(n==1)             {                 printf("\n需要进行修改的选项\n 1.职工号 2.姓名 3.职称 4.基本工资 5.奖金  6.生日 7.实际工资\n");                   printf("请输入你想修改的那一项序号:\n");                   scanf("%d",&c);                   if(c>7||c<1)                       printf("\n选择错误,请重新选择!\n");               }             f=0;         }     }     if(f==1)         printf("\n对不起,信息有误!\n");       do       {     switch(c)          {       case 1:printf("职工号改为: ");         scanf("%d",&num);         work[i-1].num=num;         break;       case 2:printf("姓名改为: ");         scanf("%s",name);         strcpy(work[i-1].name,name);          break;     case 3:printf("职称改为");         scanf("%s",zhicheng);         strcpy(work[i-1].zhicheng,zhicheng);          break;      case 4:printf("基本工资改为: ");         scanf("%d",&wages);         work[i-1].wages=wages;         break;       case 5:printf("奖金改为: ");         scanf("%d",&reward);          work[i-1].reward=reward;          break;        case 6:printf("生日改为: ");         scanf("%ld",&birth);         work[i-1].birth=birth;         break;       case 7:printf("实际工资改为: ");         scanf("%d",&salary);         work[i-1].salary=salary;          break;       }      printf("\n");     printf("\n是否确定所修改的信息?\n 是 请按1 ; \n不,重新修改 请按2:  \n");      scanf("%d",&b);     }       while(b==2);     printf("\n浏览修改后的所有职工信息:\n");     printf("\n");     baocun(m);     scan();     printf("\n继续修改请按1,不再修改请按0\n");     scanf("%d",&t);     switch(t)     {     case 1:change();break;     case 0:break;     default :break;     }system("cls"); } /*************************************************************************************/ void order()/*排序函数*/ {     int k,f;     do     {         printf("\n按姓名排序请按1 ; 按基本工资排序请按2 ; 返回主页按3\n");         scanf("%d",&k);         if(k>=1&&k<=3)         {             f=1;             break;         }         else         {             f=0;             printf("您输入有误,请重新选择!");         }     }while(f==0);system("cls");     while(f==1)     {         switch(k)         {          case 1:printf("\n按姓名排序为(字母由小到大排列):\n");order_name();break;         case 2:printf("\n按基本工资排序为(由高到低排列):\n");order_wages();break;         case 3:system("cls");main();break;         default:break;         }         system("cls");         } } /*************************************************************************************/ void order_name()/*按姓名排序函数*/ {     int i,j,k;     int m=load();     for(i=0;i<m-1;i++)         for(j=0;j<m-1-i;j++)/*冒泡法排序*/             if(strcmp(work[j].name,work[j+1].name)>0)             {  work1=work[j];work[j]=work[j+1];work[j+1]=work1;}             baocun(m);             printf("\n职工号\t姓名\t职称\t基本工资\t奖金\t实际工资\t生日             \n");             for(j=0;j<m;j++)                  printf("\n %d\t%s\t  %s\t  %d    \t%d\t %d\t      %ld\n",work[j].num,work[j].name,                 work[j].zhicheng,work[j].wages,work[j].reward,work[j].salary,work[j].birth);             printf("返回排序函数请按1,返回主页请按2\n");             scanf("%d",&k);             switch(k)             {              case 1:order();return;             case 2:system("cls");return;             default:break;    }system("cls"); } /************************************************************************************/ void order_wages()/*按基本工资排序函数*/ {     int i,k,j;     int m=load();     for(i=0;i<m-1;i++)         for(j=0;j<m-1-i;j++)             if(work[j].wages<work[j+1].wages)/*用冒泡法排序*/             {  work1=work[j];work[j]=work[j+1];work[j+1]=work1;}             baocun(m);             printf("\n职工号\t姓名\t职称\t基本工资\t奖金\t实际工资\t生日             \n");             for(j=0;j<m;j++)                  printf("\n %d\t%s\t  %s\t  %d    \t%d\t %d\t      %ld\n",work[j].num,work[j].name,                 work[j].zhicheng,work[j].wages,work[j].reward,work[j].salary,work[j].birth);             printf("返回排序函数请按1,返回主页请按2\n");             scanf("%d",&k);             switch(k)             {              case 1:order();return;             case 2:system("cls"); return;             default:break;             }             system("cls"); } /***********************************************************************************/ void add()   /*添加函数*/ {     int n=load();     int i,m;     printf("请输入需要添加信息的职工人数\n");     scanf("%d",&m);     for (i=n;i<m+n;i++)     {         printf("请输入职工号: ");         scanf("%d",&work[i].num);           printf("\n");         printf("请输入姓名:  ");         scanf("%s",work[i].name);         printf("请输入职称:  ");         scanf("%s",&work[i].zhicheng);         printf("请输入基本工资:  ");         scanf("%d",&work[i].wages);         printf("请输入奖金:  ");         scanf("%d",&work[i].reward);         printf("请输入生日(格式如19900101):  ");         scanf("%d",&work[i].birth);         getchar();system("cls");         printf("\n一个职工的信息档案添加完毕!请输入下一个职工的信息\n");              work[i].salary=work[i].wages + work[i].reward;         printf("\n");     }     baocun(m+n);system("cls");     printf("添加职工档案完成。\n这时库存信息为:\n");     scan(); }

下面是调试结果:

按序号顺序要试一下各个功能:

最后的退出是直接退了出去就没有放图,基本各个功能都没什么问题。



课程设计 c+ 系统 课程 C++

需要 登录 后方可回复, 如果你还没有账号请 注册新账号