C++如何实现教职工管理系统(C++,开发技术)

时间:2024-04-30 08:17:06 作者 : 石家庄SEO 分类 : 开发技术
  • TAG :

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

以下是我的设计:

#include<stdio.h>#include<windows.h>#include<string.h>structworker{intnum;charname[20];charzhicheng[10];intwages;intreward;longbirth;intsalary;}work[500],work1;/*定义结构体*/voidmenu();//声明菜单函数voidtype_in();//声明录入函数voidbaocun(int);//声明保存函数voidscan();//声明浏览函数voiddel();//声明删除函数voidsearch();//声明查询函数voidsearch_zhicheng();//声明按职称查询函数voidsearch_name();//声明按姓名查找函数voidchange();//声明修改函数voidorder();//声明排序函数voidadd();//声明添加函数voidorder_wages();voidorder_name();voidmenu()/*菜单函数*/{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");}/********************************************************************************************/voidmain(){intn,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){case1:printf("录入职工信息\n");printf("\n");type_in();break;case2:printf("浏览职工信息\n");printf("\n");system("cls");scan();break;case3:printf("查询职工信息\n");printf("\n");system("cls");search();break;case4:printf("删除职工信息\n");printf("\n");system("cls");del();break;case5:printf("修改职工信息\n");printf("\n");system("cls");change();break;case6:printf("职工信息排序\n");printf("\n");system("cls");order();break;case7:printf("添加职工信息\n");printf("\n");system("cls");add();break;case8:system("cls");printf("\n\n\n\n\n\n------谢谢使用!---------\n\n\n\n\n\n\nby--凤灼\n");return;default:break;}}}/***********************************************************************************/voidtype_in()/*录入函数*/{inti,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);}/***************************************************************************/voidbaocun(intm)/*保存文件函数*/{inti;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(structworker),1,fp)!=1)printf("filewriteerror\n");fclose(fp);}/***************************************************************************/intload()/*导入函数*/{FILE*fp;inti=0;if((fp=fopen("worker_list.txt","rb"))==NULL){printf("cannotopenfile\n");exit(0);}else{do{fread(&work[i],sizeof(structworker),1,fp);i++;}while(feof(fp)==0);}fclose(fp);return(i-1);}/*******************************************************************************/voidscan()/*浏览函数*/{inti;intm=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");}/********************************************************************************/voiddel()/*删除函数*/{intm=load();inti,j,n,t,f;charname1[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;elseprintf("\n对不起,查无此人!\n");printf("\n浏览删除后的所有职工信息:\n");baocun(m);scan();printf("\n继续删除请按1,不再删除请按0\n");scanf("%d",&t);switch(t){case1:del();break;case0:break;default:break;}system("cls");}/**********************************************************************************/voidsearch()/*查询函数*/{intt,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){case1:printf("按姓名查询\n");search_name();break;case2:printf("按职称查询\n");search_zhicheng();break;case3:main();break;default:break;}system("cls");}}/***********************************************************************************/voidsearch_name()/*按姓名查找函数*/{charname1[10];inti,t;intm=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){case1:search();break;case2:break;default:break;}}/*************************************************************************************/voidsearch_zhicheng()/*按职称查找函数*/{charzhicheng1[10];inti,t;intm=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){case1:search();break;case2:break;default:break;}}/***************************************************************************************/voidchange()/*修改函数*/{intnum;charname[20];charzhicheng[10];intwages;intreward;intbirth;intsalary;intb,c,i,n,t,f;intm=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需要进行修改的选项\n1.职工号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){case1:printf("职工号改为:");scanf("%d",&num);work[i-1].num=num;break;case2:printf("姓名改为:");scanf("%s",name);strcpy(work[i-1].name,name);break;case3:printf("职称改为");scanf("%s",zhicheng);strcpy(work[i-1].zhicheng,zhicheng);break;case4:printf("基本工资改为:");scanf("%d",&wages);work[i-1].wages=wages;break;case5:printf("奖金改为:");scanf("%d",&reward);work[i-1].reward=reward;break;case6:printf("生日改为:");scanf("%ld",&birth);work[i-1].birth=birth;break;case7: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){case1:change();break;case0:break;default:break;}system("cls");}/*************************************************************************************/voidorder()/*排序函数*/{intk,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){case1:printf("\n按姓名排序为(字母由小到大排列):\n");order_name();break;case2:printf("\n按基本工资排序为(由高到低排列):\n");order_wages();break;case3:system("cls");main();break;default:break;}system("cls");}}/*************************************************************************************/voidorder_name()/*按姓名排序函数*/{inti,j,k;intm=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){case1:order();return;case2:system("cls");return;default:break;}system("cls");}/************************************************************************************/voidorder_wages()/*按基本工资排序函数*/{inti,k,j;intm=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){case1:order();return;case2:system("cls");return;default:break;}system("cls");}/***********************************************************************************/voidadd()/*添加函数*/{intn=load();inti,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++如何实现教职工管理系统

C++如何实现教职工管理系统

C++如何实现教职工管理系统

C++如何实现教职工管理系统

C++如何实现教职工管理系统

C++如何实现教职工管理系统

C++如何实现教职工管理系统

C++如何实现教职工管理系统

C++如何实现教职工管理系统

C++如何实现教职工管理系统

C++如何实现教职工管理系统

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

 </div> <div class="zixun-tj-product adv-bottom"></div> </div> </div> <div class="prve-next-news">
本文:C++如何实现教职工管理系统的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:linux中awk基本使用方法有哪些下一篇:

14 人围观 / 0 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18