C++课程设计 教职工管理系统
来源:互联网 发布:单片机好学吗 编辑:程序博客网 时间:2024/06/05 13:32
学号15,除以12余3,所以做了第三题:职工综合信息管理系统
要求:设计一个程序来管理职工较全面数据信息,具备数据的输入、查找、删除等功能。具体功能细节可以根据自己理解情况进行增加。
以下是我的设计:
#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;elseprintf("\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();}
下面是调试结果:
按序号顺序要试一下各个功能:
最后的退出是直接退了出去就没有放图,基本各个功能都没什么问题。
0 0
- C++课程设计 教职工管理系统
- C语言课程设计 管理系统
- 课程设计:学生管理系统(c++)
- C语言课程设计—图书管理系统
- (C语言课程设计)图书管理系统
- C语言课程设计—图书管理系统
- C语言课程设计---歌厅歌曲管理系统
- C语言课程设计--学生学籍管理系统
- C 语言----宿舍管理系统 课程设计
- 图书管理系统C语言课程设计2
- C语言课程设计之招生管理系统
- 图书管理系统(c语言课程设计)
- C语言学生管理系统课程设计
- c语言课程设计:银行帐户管理系统
- 通讯录管理系统C语言课程设计
- c语言课程设计- 图书馆管理系统
- C语言课程设计-教师工作管理系统
- 课程设计~民航管理系统
- form表单转换为json对象
- 关于注释
- sqlite使用参考网址
- 嗯,让我们彻底搞懂C/C++函数指针吧(一)
- JRTPLIB使用实例
- C++课程设计 教职工管理系统
- Android 自动编译、打包生成apk文件 3 - 使用SDK Ant方式
- js零碎知识点集锦
- 如何修改远程桌面连接端口
- android文件夹的管理
- Mac OS X下配置LAMP环境
- 转发
- HDU 1108 最小公倍数
- 非官方郭德纲