职工信息管理系统C语言源代码
c语言课设职工管理系统
c语言课设职工管理系统《C语言课设职工管理系统》在当前社会中,职工管理对于一个企事业单位来说至关重要。
如何高效地管理职工,是每个企事业单位都要面临的问题。
为了解决这一问题,我们本次课程设计选择了使用C语言来开发一个职工管理系统。
下面将一步一步回答与该系统相关的问题。
1.系统需求分析人力资源管理系统对于企事业单位来说十分重要,所以我们的职工管理系统必须具备以下基本功能:-能够录入、修改和删除职工信息;-能够查询和打印职工信息表;-能够计算和输出职工薪资;-具备良好的用户操作界面。
2.系统设计与实现在设计与实现过程中,我们可以使用结构体来表示职工的信息,如下所示:cs t r u c t E m p l o y e e{c h a r n a m e[20];职工姓名i n t a g e;职工年龄c h a r g e nde r[5];职工性别f l o a t s a l a r y;职工薪资};同时,我们还可以设计一个数组来存储多个职工的信息:cs t r u c t E m p l o y e ee m p l o y e e s[M A X_E M P L O Y E E S];职工信息数组在实现过程中,我们可以使用菜单功能来提供用户操作选项,并根据用户选择进行相应的操作。
下面是一个示例菜单代码:cw h i l e(1){p r i n t f("职工管理系统\n");p r i n t f("1.录入职工信息\n");p r i n t f("2.修改职工信息\n");p r i n t f("3.删除职工信息\n");p r i n t f("4.查询职工信息\n");p r i n t f("5.计算薪资\n");p r i n t f("6.打印职工信息表\n");p r i n t f("0.退出系统\n");p r i n t f("请输入你的选择:");s c a n f("d",&c h o i c e);s w i t c h(c h o i c e){c a s e1:录入职工信息的代码逻辑b r e a k;c a s e2:修改职工信息的代码逻辑b r e a k;c a s e3:删除职工信息的代码逻辑b r e a k;c a s e4:查询职工信息的代码逻辑b r e a k;c a s e5:计算薪资的代码逻辑b r e a k;c a s e6:打印职工信息表的代码逻辑b r e a k;c a s e0:退出系统的代码逻辑b r e a k;d e f a u l t:p r i n t f("无效的选择,请重新输入!\n");b r e a k;}}3.系统测试与调试在系统功能完成后,我们要进行测试与调试,以确保系统的稳定性和正确性。
员工管理系统c语言源代码
#include〈string.h>#include〈stdio.h〉#define N 10000 /*员工的最大数*/typedef struct wage{float wage1; /*员工的基本工资*/float Bonus;/*员工的奖金*/float tax;/*员工的税金*/float S_fee;/*员工的水费*/float D_fee; /*员工的电费*/float T_fee;/*员工的有线电视费*/float Q_fee; /*员工的清洁费*/float S_wage;/*员工的实发工资*/}WAGE;typedef struct worker{char name[10]; /*员工的姓名*/char ID[10];/*员工的工号*/int ID_P;/*员工的职务代号1-—-—高级工程师2————中级工程师3—--—初级工程师*/char ID_Wage[10]; /*员工的工资卡号*/char depart[10]; /*员工的部门*/int age;/*员工的年龄*/char sex;/*员工的性别*/char m_phone[10];/*员工的手机*/char H_phone[10]; /*员工的住宅电话*/WAGE salary;}WORK;WORK wo[N];int n;/*员工的总数*/void menu();/*员工管理操作主菜单函数声明*/void menu1();/*员工管理操作子菜单函数声明*//********************************************************Author : GTCopyRight :tgao@sohu。
comfunction name :saveComments :保存文件函数input : 无output : 无CreatedDate :2007/06/01*********************************************************/save()/*保存函数,保存n个记录*/{int w=1;FILE *fp;int i;system("cls" );if((fp=fopen("work。
职工信息管理系统源代码
#include<stdio.h>#include<string.h>#include<stdlib.h>int N=2;struct worker /*定义一个职工信息的结构体*/{int num; /*定义一个职工信息的结构体*/char name[20]; /*定义一个职工信息的结构体*/char sex[10]; //用字符串存放职工的性别数据char birth[20]; //用字符串存放职工的出生年月数据char deta[20]; //用字符串存放职工的工作年月数据char education[20]; //用字符串存放职工的学历数据double salary; //用字符串存放职工的性别数据char work[30]; //用字符串存放职工的职务数据char addr[20]; //用字符串存放职工的地址数据char tel[20]; //用字符串存放职工的数据}worker[100]; //用结构体数组存放职工的所有信息void menu();void input();void save();void read();void display();void add();void search();void search_education();void search_num();void del();void modify();void main(){char s;system("color 3f");printf("\n\n");printf(" \t┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n");printf(" \t┃**********************************************************┃\n");printf(" \t┃***┏━━━━━━━━━━━━━━━━━━━━━━━━┓***┃\n");printf(" \t┃***┃************************************************┃***┃\n");printf(" \t┃***┃*** ****┃***┃\n");printf(" \t┃***┃*** 欢迎使用职工信息管理系统****┃***┃\n");printf(" \t┃***┃*** ****┃***┃\n");printf(" \t┃***┃*** ****┃***┃\n");printf(" \t┃***┃*** 制作人吴青伶****┃***┃\n");printf(" \t┃***┃*** ****┃***┃\n");printf(" \t┃***┃*** 2013.12.28 ****┃***┃\n");printf(" \t┃***┃*** ****┃***┃\n");printf(" \t┃***┃************************************************┃***┃\n");printf(" \t┃***┗━━━━━━━━━━━━━━━━━━━━━━━━┛***┃\n"); printf(" \t┃**********************************************************┃\n");printf(" \t┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n"); do{menu();printf("Do you want to continue?(y/n)");s=getchar();}while(s=='Y'||s=='y');}void menu()/*菜单函数*/{int b;printf("\t \n");printf("\t \n");printf("\t \n");printf("\t \n");printf("\t \n");printf("\t 请选择\n");printf("\t ------------------------------ \n");printf("\t || || \n");printf("\t || 1. 职工信息录入|| \n");printf("\t || 2. 职工信息浏览|| \n");printf("\t || 3. 职工信息添加|| \n");printf("\t || 4. 职工信息查询|| \n");printf("\t || 5. 职工信息删除|| \n");printf("\t || 6. 职工信息修改|| \n");printf("\t || 0. 退出|| \n");printf("\t ------------------------------- \n");printf("\n 输入你的选择项(0~6):\n");scanf("%d",&b);switch(b){case 1 : //职工信息录入、保存input();save();getchar();break;case 2 ://读入职工信息并显示read();display();getchar();break;case 3 : //添加职工信息add();getchar();break;case 4 : //查询职工信息search();getchar();break;case 5 : //读入职工信息并实现职工信息删除功能read();del();getchar();break;case 6 : //读入职工信息并修改职工信息read();modify();getchar();break;case 0 : exit(0);//退出default:break;}}void input() //录入职工信息{int i,flag,j;printf("输入职工个数(默认个数为2):");scanf("%d",&N);fflush(stdin);//清除缓存for(i=0;i<N;i++){loop:printf("职工号:");scanf("%d",&worker[i].num); fflush(stdin);flag=1;if(worker[N].num<0)printf("请输入正整数:\n");elsefor(j=0;j<i;j++){if(worker[i].num==worker[j].num){flag=0;printf(" 工号重复,请重新输入!\n");goto loop;}}printf("XX:");scanf("%s",worker[i].name); fflush(stdin);printf("性别:");scanf(" %s",worker[i].sex); fflush(stdin);printf("出生年月:");scanf("%d",&worker[i].birth); fflush(stdin);printf("工作年月:");scanf("%lf",&worker[i].deta); fflush(stdin);printf("请输入学历(中专=zz,大专=dz,本科=bk,研究生=yjs):\n");scanf("%s",worker[i].education);fflush(stdin);printf("工资:");scanf("%lf",worker[i].salary); fflush(stdin);printf("职务:");scanf("%s",worker[i].work); fflush(stdin);printf("住址:");scanf("%s",worker[i].addr); fflush(stdin);printf(":");scanf("%s",worker[i].tel); fflush(stdin);}printf("\n创建完毕!\n");}void save() //保存函数{FILE *fp;int i;if((fp=fopen("worker.txt","wb"))==NULL)//以只写方式打开一个二进制文件{printf("\ncannot open file\n");exit(0);}for(i=0;i<N;i++)fwrite(&worker[i],sizeof(struct worker),1,fp);//将存中的职工信息数据输出到磁盘文件中去(二进制)fclose(fp);}void read() //读入函数{FILE *fp;int i=0;if((fp=fopen("worker.txt","rb"))==NULL) //以只读方式为输出打开磁盘文件中的一个二进制文件{printf("\ncannot open file\n");exit(0);}do{fread(&worker[i],sizeof(struct worker),1,fp);//从worker.txt文件向存读入数据(二进制)i++;}while(!feof(fp));fclose(fp);N=i-1;}void display() //信息浏览函数{int i;for(i=0;i<N;i++){printf("职工号:%d\n",worker[i].num);printf("XX:%s\n",worker[i].name);printf("性别:%s\n",worker[i].sex);printf("出生年月:%d\n",worker[i].birth);printf("工作年月:%d\n",worker[i].deta);printf("学历:%s\n",worker[i].education);printf("工资:%lf\n",worker[i].salary);printf("职务:%d\n",worker[i].work);printf("住址:%s\n",worker[i].addr);printf(":%s\n",worker[i].tel);}}void add() //添加函数{FILE *fp;int i;struct worker p;double t;printf("\n请输入新增加职工的信息:\n");printf("请输入职工号:\n");scanf("%d",&p.num);for(i=0;i<N;i++){while(worker[i].num==p.num){printf(" 工号重复,请重新输入!\n");scanf("%d",&p.num);}}printf("请输入XX:\n");scanf("%s",);printf("请输入性别:\n");scanf("%s",p.sex);printf("请输入出生年月:\n");scanf("%d",&p.birth);printf("请输入工作年月:\n");scanf("%d",&p.deta);printf("请输入学历(中专=zz,大专=dz,本科=bk,研究生=yjs:):\n");scanf("%s",cation);printf("请输入工资:\n");scanf("%lf",&t);p.salary=t;printf("请输入职务:\n");scanf("%s",p.work);printf("请输入住址:\n");scanf("%s",p.addr);printf("请输入:\n");scanf("%s",p.tel);printf("\n添加完毕!\n");if((fp=fopen("worker.txt","ab"))==NULL)//以追加方式打开一个二进制文件尾部{printf("\ncannot open file\n");exit(0);}fwrite(&p,sizeof(struct worker),1,fp);fclose(fp);}void search() //查询函数{int c;do{puts("\nsearch by=>\n1.学历2.职工号3.取消并返回");printf("Which you needed?:\n");scanf("%d",&c);if(c>3||c<1){puts("\nchoice error!please again!");getchar();//此语句用于接受在执行上一句时最后输出的回车符}}while(c>3||c<1);{switch(c){case 1:search_education();break;case 2:search_num();break;case 3:menu();break;}}}void search_education() //按学历查询函数{int i,flag=0;char s[10];printf("\n请输入你要查询的学历:\n");scanf("%s",s);for(i=0;i<N;i++){if(strcmp(s,worker[i].education)==0){printf("职工号:%d\n",worker[i].num);printf("XX:%s\n",worker[i].name);printf("性别:%s\n",worker[i].sex);printf("出生年月:%d\n",worker[i].birth);printf("工作年月:%d\n",worker[i].deta);printf("学历(中专=zz,大专=dz,本科=bk,研究生=yjs):%s\n",worker[i].education);printf("工资:%lf\n",worker[i].salary);printf("职务:%lf\n",worker[i].work);printf("住址:%s\n",worker[i].addr);printf(":%s\n",worker[i].tel);flag++;}}if(flag==0)printf("\n对不起没有找到!\n");getchar();}void search_num() //按工号查询函数{int i,s,flag=0;printf("\n输入要查询的职工号!:\n");scanf("%d",&s);for(i=0;i<N;i++){if(s==worker[i].num){printf("职工号:%d\n",worker[i].num);printf("XX:%s\n",worker[i].name);printf("性别:%s\n",worker[i].sex);printf("出生年月:%d\n",worker[i].birth);printf("工作年月:%d\n",worker[i].deta);printf("学历(中专=zz,大专=dz,本科=bk,研究生=yjs):%s\n",worker[i].education);printf("工资:%lf\n",worker[i].salary);printf("职务:%lf\n",worker[i].work);printf("住址:%s\n",worker[i].addr);printf(":%s\n",worker[i].tel);flag++;}}if(flag==0)printf("\n对不起没有找到! please");getchar();}void del() //删除函数{int i,j;FILE *fp;char name[20];char c;if((fp=fopen("worker.txt","wb"))==NULL)//以只写方式打开一个二进制文件{printf("\ncannot open file\n");exit(0);}printf("请输入要删除的职工的XX:");scanf("%s",name);for(i=0;i<N;i++){if(strcmp(name,worker[i].name)==0)//判断输入的XX和原来的XX是否相同{printf("找到该职工,是否删除?(y/n) ") ;fflush(stdin);scanf("%c",&c);if(c =='Y'||c=='y'){for(j=i;j<N;j++)worker[j]=worker[j+1];printf("删除成功! \n");//break;}}}if(i>=N){printf("没有找到该职工!\n ");return;}else{N=N-1;for(i=0;i<N;i++)if(fwrite(&worker[i],sizeof(struct worker),1,fp)!=1){printf("\ncannot save file\n");getchar();}fclose(fp);}}void modify() //修改函数{struct worker p;FILE *fp;int i,n;double t;printf("\n输入要修改的职工号:\n");scanf("%d",&n);for(i=0;i<N;i++){if(n==worker[i].num){printf("找到该职工的信息(任意键继续)!");printf("\n请输入职工的信息!\n");printf("请输入XX:\n");scanf("%s",);printf("请输入性别:\n");scanf("%s",p.sex);printf("请输入:\n");scanf("%d",&p.birth);printf("请输入工作年月:\n");scanf("%lf",&p.deta);printf("请输入学历(中专=zz,大专=dz,本科=bk,研究生=yjs):\n");scanf("%s",cation);printf("请输入工资:\n");scanf("%lf",&t);p.salary=t;printf("请输入职务:\n");scanf("%s",p.work);printf("请输入住址:\n");scanf("%s",p.addr);printf("请输入:\n");scanf("%s",p.tel);p.num=n;if((fp=fopen("worker.txt","r+"))==NULL)//以读写的方式将修改的信息写入磁盘文件{printf("\ncannot open file\n");exit(0);}fseek(fp,i*sizeof(struct worker),0);//将位置指针移到i*sizeof(struct worker)个字节处fwrite(&p,sizeof(struct worker),1,fp);fclose(fp);printf("修改成功!\n");break;}}if(i>=N)printf("\n未找到该职工!\n");}- .- . 可修编.。
职工信息管理系统源代码
#include <malloc.h>#include <stdio.h>#include <string.h>#include <stdlib.h>#define ALLMAX 100 //总共统计的职工的人数typedef struct Node{long int born_date,work_date,tele_num;charsex,name[ALLMAX],degree[ALLMAX],job[ALLMAX],address[ALLMAX];struct Node *next;}SLNode;typedef struct{long int born_date,work_date,tele_num;charname[ALLMAX],sex,degree[ALLMAX],job[ALLMAX],address[ALLMAX];}DataType;void ListInitiate(SLNode **head)//链表初始化{if((*head=(SLNode *)malloc(sizeof(SLNode)))==NULL) exit(1);//动态分配存储空间(*head)->next=NULL;}SLNode *ListInsert(SLNode *head,DataType x)//职工信息的插入姓名并按照升序排列{SLNode *p,*q,*s;p=head->next;if((q=(SLNode *)malloc(sizeof(SLNode)))==NULL) exit(1);//动态分配存储空间q->born_date=x.born_date;q->work_date=x.work_date;q->tele_num=x.tele_num;strcpy(q->name,);q->sex=x.sex;strcpy(q->degree,x.degree);strcpy(q->job,x.job);strcpy(q->address,x.address);if(head->next==NULL){//如果只有链表的头结点,没有其他的结点,直接插入在头结点后面head->next=q;head->next->next=NULL;}else{//链表非空for(;p;p=p->next){if(p->next!=NULL){if(strcmp(p->name,)<0&&strcmp(p->next->name,)>0){//位于两个结点之间s=p->next;p->next=q;q->next=s;break;}//else if(strcmp(p->name,)==0)break; //如果姓名相同则不插入信息}else if(strcmp(p->name,)<0&&p->next==NULL){//链表非空,并且在排序中是最后一个p->next=q;q->next=NULL;break;}if(strcmp(p->name,)>0){//位于链表头结点之后的位置s=head->next;head->next=q;q->next=s;break;}}}return head;}void ListDelete(SLNode *head)//职工信息的删除{SLNode *p,*s;char x[20];s=head;p=head->next;if(head->next==NULL){//链表为空,输出:名单中无职工信息,无须删除!printf("名单中无此职工信息,无须删除!\n");return;}printf("请输入要删除职工的姓名:\n"); //输入要删除的人的姓名scanf("%s",x);for(p;p;p=p->next){//在链表中从头到尾查找输入的人的姓名if(strcmp(p->name,x)==0){ //如果存在,则删除,否则输出:名单中无职工信息,无须删除!s->next=p->next;free(p);printf("删除成功!请继续操作!\n");break;}s=p;}if(p==NULL){//链表本身为空printf("名单中无此职工信息,无须删除!\n");}}void ListModify(SLNode *head)//职工信息的修改{DataType x;SLNode *p;p=head->next;if(p==NULL){//链表本身为空printf("职工名单无职工信息,无须修改!\n");return;}printf("请输入要修改的职工姓名:\n");scanf("%s",);for(;p;p=p->next){if(strcmp(,p->name)==0){//查找到了该职工的信息printf("依次写入该职工的新信息:\n");printf("请输入职工信息:\n姓名、性别、出生年月、工作年月、学历、职务、住址、电话\n");scanf("%s %c %d %d %s %s %s %d",p->name,&p->sex,&p->born_date,&p->work_ date,p->degree,p->job,p->address,&p->tele_num);printf("修改成功!请继续操作!\n");break;}}if(p==NULL)//如果链表为空printf("此职工不存在,无法修改其信息!\n");}void put(SLNode *head,FILE *fp)//职工信息的保存{SLNode *p;if((fp=fopen("Employee.txt","w"))==NULL){//printf("无法打开'Employee.txt'!\n");exit(0);}for(p=head->next;p;p=p->next){fprintf(fp,"%s %c %d %d %s %s %s %d\n",p->name,p->sex,p->born_date,p->work_ date,p->degree,p->job,p->address,p->tele_num);}if(fclose(fp)){printf("无法关闭'Employee.txt'!\n"); exit(0);}}void Listfind(SLNode head)//职工信息的查找{int i,j;SLNode *p;DataType x;if(head.next==NULL){//链表为空printf("名单中无职工信息,查询失败!\n");return;}//返回主菜单printf("\n");printf("\t*********************************\n");printf("\t*职工信息查询操作*\n");printf("\t**\n");printf("\t*0.退出查询系统,回到主菜单\t\t 1.对姓名进行查询\t*\n\t * 2.对出生年月进行查询\t\t 3.对学历进行查询\t*\n\t* 4.对工作年月进行查询\t\t 5.对职务进行查询\t*\n\t* 6.对住址进行查询\t\t 7.对电话进行查询\t*\n");printf("\t*********************************\n");while(1){printf("请输入您要选择的操作:");scanf("%d",&i);if(i==0)//输入0,退出查询系统,回到主菜单break;else if(i==1){//输入1,对姓名进行查询p=head.next;printf("请输入姓名:");scanf("%s",);j=0;for(p;p;p=p->next){if(strcmp(p->name,)==0){//如果存在这个人,那么j自加++j;printf("\n姓名、性别、出生年月、工作年月、学历、职务、住址、电话\n");printf("%s %c %d %d %s %s %s %d\n",p->name,p->sex,p->born_date,p->work_date ,p->degree,p->job,p->address,p->tele_num);}}if(j==0)//表示没有找到输入的信息printf("职工名单中不存在此人!\n");else printf("查询成功!继续操作!\n");}else if(i==2){//输入2,对出生年月进行查询p=head.next;printf("请输入出生年月:");scanf("%d",&x.born_date);j=0;for(p;p;p=p->next){if(p->born_date==x.born_date){//输入的出生年月在链表中存在++j;//如果存在这个人,那么j自加printf("\n姓名、性别、出生年月、工作年月、学历、职务、住址、电话\n");printf("%s %c %d %d %s %s %s %d\n",p->name,p->sex,p->born_date,p->work_date ,p->degree,p->job,p->address,p->tele_num);}}if(j==0)//表示没有找到输入的信息printf("职工名单中没有这个时间出生的!\n");else printf("查询成功!请继续操作!\n");}else if(i==4){//输入4,对工作年月进行查询p=head.next;printf("请输入工作年月:");scanf("%d",&x.work_date);j=0;for(p;p;p=p->next){if(p->work_date==x.work_date){++j;//如果存在这个人,那么j自加printf("\n姓名、性别、出生年月、工作年月、学历、职务、住址、电话\n");printf("%s %c %d %d %s %s %s %d\n",p->name,p->sex,p->born_date,p->work_date ,p->degree,p->job,p->address,p->tele_num);}}if(j==0)//表示没有找到输入的信息printf("职工名单中没有这个时间工作的!\n");else printf("查询成功!请继续操作!\n");}else if(i==3){//输入3,对学历进行查询p=head.next;printf("请输入学历:");scanf("%s",x.degree);j=0;for(p;p;p=p->next){if(strcmp(p->degree,x.degree)==0){++j;//如果存在这个人,那么j自加printf("\n姓名、性别、出生年月、工作年月、学历、职务、住址、电话\n");printf("%s %c %d %d %s %s %s %d\n",p->name,p->sex,p->born_date,p->work_date ,p->degree,p->job,p->address,p->tele_num);}}if(j==0)//表示没有找到输入的信息printf("职工名单中没有这种学历的!\n");else printf("查询成功!请继续操作!\n");}else if(i==5){//输入5,对职务进行查询p=head.next;printf("请输入职务:");scanf("%s",x.job);j=0;for(p;p;p=p->next){if(strcmp(p->job,x.job)==0){++j;//如果存在这个人,那么j自加printf("\n姓名、性别、出生年月、工作年月、学历、职务、住址、电话\n");printf("%s %c %d %d %s %s %s %d\n",p->name,p->sex,p->born_date,p->work_date ,p->degree,p->job,p->address,p->tele_num);}}if(j==0)//表示没有找到输入的信息printf("职工名单中没有这种职务的!\n");else printf("查询成功!请继续操作!\n");}else if(i==6){//输入6,对住址进行查询p=head.next;printf("请输入住址:");scanf("%s",x.address);j=0;for(p;p;p=p->next){if(strcmp(p->address,x.address)==0){++j;//如果存在这个人,那么j自加printf("\n姓名、性别、出生年月、工作年月、学历、职务、住址、电话\n");printf("%s %c %d %d %s %s %s %d\n",p->name,p->sex,p->born_date,p->work_date ,p->degree,p->job,p->address,p->tele_num);}}if(j==0)//表示没有找到输入的信息printf("职工名单中没有住这的!\n");else printf("查询成功!请继续操作!\n");}else if(i==7){//输入7,对电话号码进行查询p=head.next;printf("请输入电话:");scanf("%d",&x.tele_num);j=0;for(p;p;p=p->next){if(p->tele_num==x.tele_num){++j;//如果存在这个人,那么j自加printf("\n姓名、性别、出生年月、工作年月、学历、职务、住址、电话\n");printf("%s %c %d %d %s %s %s %d\n",p->name,p->sex,p->born_date,p->work_date ,p->degree,p->job,p->address,p->tele_num);}}if(j==0)//表示没有找到输入的信息printf("职工名单中没人用这个号码!\n");else printf("查询成功!请继续操作!\n");}else if(i!=0 && i!=1 && i!=2 && i!=3 && i!=4 && i!=5 && i!=6 && i!=7)//输入任意不是上述数字的,那么久显示输入错误printf("输入出错!请再次输入!\n");printf("\n");printf("\t*********************************\n");printf("\t*职工信息查询系统*\n");printf("\t**\n");printf("\t*0.退出查询系统,回到主菜单\t\t 1.对姓名进行查询\t*\n\t* 2.对出生年月进行查询\t\t 3.对学历进行查询\t*\n\t*4.对工作年月进行查询\t\t 5.对职务进行查询\t*\n\t* 6.对住址进行查询\t\t 7.对电话进行查询\t*\n");printf("\t*********************************\n");//printf("0.退出查询系统,回到主菜单\n1.对姓名进行查询\n2.对出生年月进行查询\n3.对工作年月进行查询\n4.对学历进行查询\n5.对职务进行查询\n6.对住址进行查询\n7.对电话号码进行查询\n");}}void print(SLNode *head)//职工信息的显示{SLNode *p;for(p=head->next;p!=NULL;p=p->next)//输出所有职工的信息printf("%s %c %d %d %s %s %s %d\n",p->name,p->sex,p->born_date,p->work_date ,p->degree,p->job,p->address,p->tele_num);}void printLink(SLNode *head)//职工信息的显示{printf("职工名单:\n姓名、性别、出生年月、工作年月、学历、职务、住址、电话\n");print(head);}void Listpaixu(SLNode *head)//职工信息的排序{int i,n=0,m,flag=1;SLNode *p,*q,*s;if(head->next==NULL){//职工链表为空printf("名单中无职工信息,无法排序!\n\n");return;}// printf("输入出错!请再次输入!\n\n");printf("\t\t~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~\n");printf("\t\t~.~ 职工信息排序操作~.~\n");printf("\t\t~.~ ~.~\n");printf("\t\t~.~\t0.退出排序系统,回到主菜单~.~\n\t\t~.~\t1.对性别进行排序~.~\n\t\t~.~\t2.对出生年月进行排序~.~\n\t\t~.~\t3.对工作年月进行排序~.~\n\t\t~.~\t4.对姓名进行排序~.~\n");printf("\t\t~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~\n");while(1){printf("请输入您要选择的操作:");scanf("%d",&i);if(i==0)//输入0,退出排序系统,回到主菜单break;else if(i==1){//输入1,对性别进行排序n=0,m,flag=1;for(p=head;NULL!=p;p=p->next)//统计职工人数n++;for(m=1;flag&&m<=n;m++){flag=0;for(q=head->next,p=head,s=p;q;s=p,p=q,q=q->next){if(p->sex>q->sex)//p为当前节点,p的性别>p的后继节点的性别{if(head==p)//p为头结点{head->next=q->next;head=q;q->next=p;//交换节点信息q=head->next;p=head;}else{p->next=q->next;q->next=p;s->next=q;p=q;q=p->next;}flag=1;}}}printf("排好序的信息如下:\n");printLink(head);//输出所有节点的信息return;}else if(i==2){//输入2,对出生年月进行排序n=0,m,flag=1;for(p=head;NULL!=p;p=p->next)//统计职工人数n++;for(m=1;flag&&m<=n;n++)//循环{flag=0;for(q=head->next,p=head,s=p;q;s=p,p=q,q=q->next){if(p->born_date>q->born_date)//对出生年月进行排序{if(head==p){head->next=q->next;head=q;q->next=p;q=head->next;p=head;}else{p->next=q->next;q->next=p;s->next=q;p=q;q=p->next;}flag=1;}}}printf("排好序的信息如下:\n");printLink(head);return;}else if(i==3){//输入3,按工作时间进行排序n=0,m,flag=1;for(p=head;NULL!=p;p=p->next)n++;for(m=1;flag&&m<=n;n++){flag=0;for(q=head->next,p=head,s=p;q;s=p,p=q,q=q->next){ if(p->work_date>q->work_date){if(head==p){head->next=q->next;head=q;q->next=p;q=head->next;p=head;}else{p->next=q->next;q->next=p;s->next=q;p=q;q=p->next;}flag=1;}}}printf("排好序的信息如下:\n");printLink(head);return;}else if(i==4){n=0,m,flag=1;for(p=head;NULL!=p;p=p->next)n++;for(m=1;flag&&m<=n;n++){flag=0;for(q=head->next,p=head,s=p;q;s=p,p=q,q=q->next){if(p->name[0]>q->name[0]){if(head==p){head->next=q->next;head=q;q->next=p;q=head->next;p=head;}else{p->next=q->next;q->next=p;s->next=q;p=q;q=p->next;}flag=1;}}}printf("排好序的信息如下:\n");printLink(head);return;}else if(i!=0&&i!=1&&i!=2&&i!=3&&i!=4)printf("输入出错!请再次输入!\n\n");printf("\t\t~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~\n");printf("\t\t~.~ 职工信息排序系统~.~\n");printf("\t\t~.~~.~\n");printf("\t\t~.~\t0.退出排序系统,回到主菜单~.~\n\t\t~.~\t1.对性别进行排序~.~\n\t\t~.~\t2.对出生年月进行排序~.~\n\t\t~.~\t3.对工作年月进行排序~.~\n\t\t~.~\t4.显示全部职工信息~.~\n");printf("\t\t~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~\n");//printf("0.退出排序系统,回到主菜单\n1.对性别进行排序\n2.对出生年月进行排序\n3.对工作年月进行排序\n");}}void main(){DataType x;SLNode *head;int i,n;FILE *fp;ListInitiate(&head);//初始化链表printf("\n");printf("*************************************************************** ****************\n");printf("************************ 欢迎使用职工管理系统***************************\n");printf("*************************************************************** ****************\n");printf("请输入要录入的职工人数n:");//输入要录入的职工人数scanf("%d",&n);if(n==0) goto aa;printf("请输入职工信息:\n姓名、性别、出生年月、工作年月、学历、职务、住址、电话\n");for(i=0;i<n;i++)//职工信息的输入{scanf("%s %c %d %d %s %s %s %d",,&x.sex,&x.born_date,&x.work_date,x. degree,x.job,x.address,&x.tele_num);head=ListInsert(head,x);}if((fp=fopen("Employeetxt","a"))==NULL){printf("\t无法打开'Employee.txt'!\n");exit(0);}put(head,fp);if(fclose(fp)){printf("\t无法关闭'Employee.txt'!\n"); exit(0);}printLink(head);aa: printf("\n");printf("\t★☆☆★☆☆★☆☆★★☆☆★☆☆★☆☆★★☆☆★☆☆★☆☆★☆☆★\n");printf("\t☆* 主菜单* ☆\n");printf("\t★********** ★\n");printf("\t☆☆\n");printf("\t★\t0.结束管理系统\t\t\t1.新增职工信息\t\t★\n\t☆\t2.删除职工信息\t\t\t3.查询职工信息\t\t☆\n\t★\t4.修改职工信息\t\t\t5.职工信息排序\t\t★\n");printf("\t☆☆\n");printf("\t★☆☆★☆☆★☆☆★★☆☆★☆☆★☆☆★★☆☆★☆☆★☆☆★☆☆★\n");while(1){printf("请输入您要选择的操作:");scanf("%d",&i);if(i==0)//输入0,结束系统{printf("\t\t您已经成功退出职工管理系统,谢谢使用!\n");break;}else if(i==1){//输入1,新增一名职工printf("请输入职工信息:\n姓名、性别、出生年月、工作年月、学历、职务、住址、电话\n");scanf("%s %c %d %d %s %s %s %d",,&x.sex,&x.born_date,&x.work_date,x. degree,x.job,x.address,&x.tele_num);head=ListInsert(head,x);printf("新增成功!请继续操作!\n");printLink(head);put(head,fp);//保存在文件中else if(i==2){//输入2,删除一名职工ListDelete(head);if((fp=fopen("Employee.txt","w"))==NULL){printf("无法打开'职工名单.txt'!\n");exit(0);}put(head,fp);//保存在文件中if(fclose(fp)){printf("无法关闭'Employee.txt'!\n"); exit(0);}}else if(i==3)//输入3,查找一名职工Listfind(*head);else if(i==4){//输入4,修改职工信息ListModify(head);if((fp=fopen("Employee.txt","w"))==NULL){printf("无法打开'Employee.txt'!\n");exit(0);}put(head,fp);//保存在文件中if(fclose(fp)){printf("无法关闭'Employee.txt'!\n"); exit(0);}}else if(i==5){//输入5,对职工信息进行排序SLNode *p=head;Listpaixu(p);}//如果出入的不是上述任何一种情况就输出:输入出错else printf("输入出错!请再次输入!\n");printf("\n");printf("\t★☆☆★☆☆★☆☆★★☆☆★☆☆★☆☆★★☆☆★☆☆★☆☆★☆☆★\n");printf("\t☆* 主菜单* ☆\n");printf("\t★********** ★\n");printf("\t☆☆\n");printf("\t★0.结束管理系统\t\t\t\t1.新增职工信息\t★\n\t☆ 2.删除职工信息\t\t\t\t3.查询职工信息\t☆\n\t★ 4.修改职工信息\t\t\t\t5.职工信息排序\t★\n");printf("\t☆☆\n");printf("\t★☆☆★☆☆★☆☆★★☆☆★☆☆★☆☆★★☆☆★☆☆★☆☆★☆☆★\n");//printf("0.结束系统\n1.新增一名职工\n2.删除一名职工\n3.查询职工信息\n4.修改职工信息\n5.对职工信息进行排序\n");}}。
c语言职工工资管理系统代码
C语言职工工资管理系统代码简介职工工资管理是一项重要的任务,它涉及到工资计算、薪资发放、绩效评估等方面。
为了提高管理的有效性和准确性,许多公司和组织都开发了各种各样的工资管理系统。
本文将介绍一种基于C语言开发的职工工资管理系统代码。
代码功能及特点1. 基本功能•添加新员工信息•更新员工信息•计算员工工资•发放工资•查询员工信息•统计工资情况2. 特点•简单易懂:代码使用C语言编写,阅读和理解都相对简单。
•高效可靠:代码采用模块化设计,结构清晰,运行效率高,容错性强。
•跨平台支持:C语言是一种具有广泛应用的语言,可以在多个操作系统上运行。
代码实现1. 员工信息结构体定义struct Employee {int id; // 员工编号char name[20]; // 员工姓名float basicSalary; // 员工基本工资float performanceBonus; // 绩效奖金float salary; // 员工工资};2. 添加新员工信息函数void addEmployee(struct Employee *employee, int num) {printf("请输入员工编号:");scanf("%d", &(employee[num].id));// 输入其他员工信息...}3. 更新员工信息函数void updateEmployee(struct Employee *employee, int id) {int i;for (i = 0; i < num; i++) {if (employee[i].id == id) {// 更新员工信息...}}}4. 计算员工工资函数void calculateSalary(struct Employee *employee, int num) {int i;for (i = 0; i < num; i++) {employee[i].salary = employee[i].basicSalary + employee[i].performance Bonus;}}5. 发放工资函数void paySalary(struct Employee *employee, int num) {int i;for (i = 0; i < num; i++) {printf("员工编号:%d,工资:%.2f\n", employee[i].id, employee[i].salar y);}}6. 查询员工信息函数void searchEmployee(struct Employee *employee, int id) {int i;for (i = 0; i < num; i++) {if (employee[i].id == id) {// 输出员工信息...}}}7. 统计工资情况函数void statisticsSalary(struct Employee *employee, int num) { float totalSalary = 0;int i;for (i = 0; i < num; i++) {totalSalary += employee[i].salary;}printf("总工资:%f\n", totalSalary);}使用示例1. 添加员工信息struct Employee employees[100];int num = 0;addEmployee(employees, num);num++;2. 更新员工信息int id = 12345;updateEmployee(employees, id);3. 计算员工工资calculateSalary(employees, num);4. 发放工资paySalary(employees, num);5. 查询员工信息int id = 12345;searchEmployee(employees, id);6. 统计工资情况statisticsSalary(employees, num);总结本文介绍了一个基于C语言的职工工资管理系统代码。
用c实现的职工信息管理系统
用c实现的职工信息管理系统SANY标准化小组 #QS8QHH-HHGX8Q8-GNHHJ8-HHMHGN##include<iostream>#include"string"#include<fstream>#include <stdlib.h>#include <stdio.h>#define N 100//N作为最大职工总数int f=0;//f作为开关using namespace std;string p;//接受菜单选项void menu();//菜单制作class worker//职工基本信息类{public:worker(){}void visit();//职工信息显示~worker(){}friend class WorkerList;//友元函数wotkerlistprivate:string num,name,sex,edu,address,tel;//工号姓名性别学历地址电话int age,salary;//年龄月薪};class WorkerList//职工系统功能实现类{private:worker w[N];//第N个职工int NUM;//用来计算职工数目int count;//用来暂时记录当前操作第几个职工public:void add();//职工信息录入void sort();//职工信息排序void search();//职工信息查找void dele();//职工信息删除void change();//职工信息修改void save();//职工信息以文件形式保存void visitworker();//显示职工信息在屏幕上WorkerList(){NUM=0;count=0;//默认构造函数初始化NUM 和count}};void menu()//系统主菜单{cout<<endl;cout<<endl;cout<<"***********************************************"<<endl;cout<<"** **"<<endl;cout<<"** 职工信息管理系统主菜单 **"<<endl;cout<<"** **"<<endl;cout<<"** 1.职工信息添加 **"<<endl;cout<<"** 2.职工信息修改 **"<<endl;cout<<"** 3.职工信息删除 **"<<endl;cout<<"** 4.职工信息排序 **"<<endl;cout<<"** 5.职工信息查找 **"<<endl;cout<<"** 6.职工信息显示 **"<<endl;cout<<"** 7.职工信息保存 **"<<endl;cout<<"** 0.退出 **"<<endl;cout<<"** **"<<endl;cout<<"***********************************************"<<endl;cout<<endl;}//各个功能函数定义void WorkerList::add()//职工信息添加函数实现{cout<<"请输入职工信息:"<<endl;cout<<"工号\t姓名\t性别\t学历\t年龄\t工资\t地址\t电话"<<endl;string num;cin>>num;for(int i=0;i<NUM;i )while(num==w[i].num){cout<<"此职工编号已存在,请重新输入:"<<endl;cin>>num;}w[NUM].num=num;cin>>w[NUM].name>>w[NUM].sex>>w[NUM].edu>>w[NUM].age>>w[NUM].salar y>>w[NUM].address>>w[NUM].tel;NUM;count=NUM;}void WorkerList::change()//职工信息修改函数定义{if(NUM<=0)//判断是否有职工信息需要录入{cout<<"没有职工信息存入,系统将返回主菜单"<<endl;menu();//无信息录入,再次进入主菜单}else{ cout<<"职工信息如下:"<<endl;cout<<"工号\t姓名\t性别\t学历\t年龄\t工资\t地址\t电话"<<endl;for(int i=0;i<count;i )cout<<w[i].num<<'\t'<<w[i].name<<'\t'<<w[i].sex<<'\t'<<w[i].edu<<' \t'<<w[i].age<<'\t'<<w[i].salary<<'\t'<<w[i].address<<'\t'<<w[i].tel<<en dl;}//输出各职工基本信息cout<<"请输入需要修改信息职工的工号:"<<endl;string num1;cin>>num1;//需要修改信息的员工工号int j=0,k;int flag=1;while(flag)//设置开关{for(;j<count;j ){if(num1==w[j].num){flag=0;k=j;break;}//找到对应工号的员工,将flag置0}if(flag){cout<<"不存在此员工,请重新输入:"<<endl;j=0;cin>>num1;}//经过循环结构微找到对应员工号码,重新输入num1 }cout<<"你选择的职工的信息为:"<<endl;cout<<"工号\t姓名\t性别\t学历\t年龄\t工资\t地址\t电话"<<endl;cout<<w[k].num<<'\t'<<w[k].name<<'\t'<<w[k].sex<<'\t'<<w[k].edu<<' \t'<<w[k].age<<'\t'<<w[k].salary<<'\t'<<w[k].address<<'\t'<<w[k].tel<<en dl;cout<<endl;//需要修改的信息内容菜单cout<<"***********************************************"<<endl;cout<<"** 1.修改工号 **"<<endl;cout<<"** 2.修改姓名 **"<<endl;cout<<"** 3.修改性别 **"<<endl;cout<<"** 4.修改学历 **"<<endl;cout<<"** 5.修改年龄 **"<<endl;cout<<"** 6.修改工资 **"<<endl;cout<<"** 7.修改地址 **"<<endl;cout<<"** 8.修改电话 **"<<endl;cout<<"** 0.返回主菜单 **"<<endl;cout<<"***********************************************"<<endl;cout<<endl;cout<<"请选择数字编号1~8"<<endl;int c;cin>>c;while(c<0||c>8){cout<<"输入有误,请重新输入:"<<endl;cin>>c;}switch(c){case 1:cout<<"请输入新的职工工号:";cin>>w[k].num;cout<<"修改信息已保存,现返回主菜单:"<<endl;menu();break;case 2:cout<<"请输入新的职工姓名:";cin>>w[k].name;cout<<"修改信息已保存,现返回主菜单:"<<endl;menu();break;case 3:cout<<"请输入新的职工性别:";cin>>w[k].sex;cout<<"修改信息已保存,现返回主菜单:"<<endl;menu();break;case 4:cout<<"请输入新的职工学历:";cin>>w[k].edu;cout<<"修改信息已保存,现返回主菜单:"<<endl;menu();break;case 5:cout<<"请输入新的职工年龄:";cin>>w[k].age;cout<<"修改信息已保存,现返回主菜单:"<<endl;menu();break;case 6:cout<<"请输入新的职工工资:";cin>>w[k].salary;cout<<"修改信息已保存,现返回主菜单:"<<endl;menu();break;case 7:cout<<"请输入新的职工地址:";cin>>w[k].address;cout<<"修改信息已保存,现返回主菜单:"<<endl;menu();break;case 8:cout<<"请输入新的职工电话:";cin>>w[k].tel;cout<<"修改信息已保存,现返回主菜单:"<<endl;menu();break;case 0:menu();default:break;}}void WorkerList::save()//职工信息保存函数定义{if(NUM<=0){cout<<"没有职工信息存入,系统将返回主菜单"<<endl;menu();}else{ofstream out;ifstream in;out.open("E:\\worker.txt",ios::out);cout<<"数据保存成功!!!"<<endl;cout<<"已保存员工信息如下:"<<endl;cout<<"工号\t姓名\t性别\t学历\t年龄\t工资\t地址\t电话"<<endl;//输出保存后的员工信息表for(int i=0;i<count;i )cout<<w[i].num<<'\t'<<w[i].name<<'\t'<<w[i].sex<<'\t'<<w[i].edu<<' \t'<<w[i].age<<'\t'<<w[i].salary<<'\t'<<w[i].address<<'\t'<<w[i].tel<<en dl;cout<<"系统返回主菜单:"<<endl;menu();out.close();}}void WorkerList::visitworker()//职工信息显示函数实现{if(NUM<=0){cout<<"没有职工信息存入,系统将返回主菜单"<<endl;menu();}elsecout<<"已保存的职工信息如下:"<<endl;cout<<"工号\t姓名\t性别\t学历\t年龄\t工资\t地址\t电话"<<endl;for(int i=0;i<count;i )cout<<w[i].num<<'\t'<<w[i].name<<'\t'<<w[i].sex<<'\t'<<w[i].edu<<' \t'<<w[i].age<<'\t'<<w[i].salary<<'\t'<<w[i].address<<'\t'<<w[i].tel<<en dl;cout<<"是否返回主菜单? Y/N"<<endl;cin>>p;while(1){if(p=="y"||p=="Y"){menu();}else if(p=="n"||p=="N"){cout<<"退出系统"<<endl;exit(0);}else{cout<<"输入有误,请重新输入:";cin>>p;}}}void WorkerList::search()//员工信息查找函数定义{if(NUM<=0){cout<<"没有职工信息存入,系统将返回主菜单"<<endl;menu();}elsecout<<"请选择查找方式:"<<endl;//查找方式选择菜单cout<<"***********************************************"<<endl;cout<<"** 1.按工号查找 **"<<endl;cout<<"** 2.按姓名查找 **"<<endl;cout<<"** 3.按工资查找 **"<<endl;cout<<"** 0.返回主菜单 **"<<endl;cout<<"***********************************************"<<endl;cout<<endl;cout<<"请选择数字编号0~3"<<endl;int i4;cin>>i4;while(i4<0||i4>3){cout<<"输入有误,请重新输入:"<<endl;cin>>i4;}if(i4==1)//按按工号查找代码部分{string num2;cout<<"请输入要查询的职工的工号:"<<endl;cin>>num2;int j=0,k;int flag=1;while(flag){for(;j<count;j ){if(num2==w[j].num){flag=0;k=j;cout<<"查询的职工信息如下:"<<endl;cout<<"工号\t姓名\t性别\t学历\t年龄\t工资\t地址\t电话"<<endl;cout<<w[k].num<<'\t'<<w[k].name<<'\t'<<w[k].sex<<'\t'<<w[k].edu<<' \t'<<w[k].age<<'\t'<<w[k].salary<<'\t'<<w[k].address<<'\t'<<w[k].tel<<en dl;break;}}if(flag){flag=0;cout<<"不存在此职工!!\n返回主菜单"<<endl;break;}}}else if(i4==2)//按姓名查找方式代码部分{string name2;cout<<"请输入要查询的职工的姓名:"<<endl;cin>>name2;int j2=0,k2;int flag2=1;while(flag2){for(;j2<count;j2 ){if(name2==w[j2].name){flag2=0;//设置开关k2=j2;cout<<"查询的职工信息如下:"<<endl;cout<<"工号\t姓名\t性别\t学历\t年龄\t工资\t地址\t电话"<<endl;cout<<w[k2].num<<'\t'<<w[k2].name<<'\t'<<w[k2].sex<<'\t'<<w[k2].ed u<<'\t'<<w[k2].age<<'\t'<<w[k2].salary<<'\t'<<w[k2].address<<'\t'<<w[k2] .tel<<endl;break;}}if(flag2){flag2=0;cout<<"不存在此职工!!\n返回主菜单"<<endl;break;}}}else if(i4==3)//按工资查找代码部分{int salary2;cout<<"请输入要查询的职工的工资:"<<endl;cin>>salary2;int j3=0,k3;int flag3=1;while(flag3){for(;j3<count;j3 ){if(salary2==w[j3].salary){flag3=0;k3=j3;cout<<"查询的职工信息如下:"<<endl;cout<<"工号\t姓名\t性别\t学历\t年龄\t工资\t地址\t电话"<<endl;cout<<w[k3].num<<'\t'<<w[k3].name<<'\t'<<w[k3].sex<<'\t'<<w[k3].ed u<<'\t'<<w[k3].age<<'\t'<<w[k3].salary<<'\t'<<w[k3].address<<'\t'<<w[k3] .tel<<endl;break;}}if(flag3){flag3=0;cout<<"职工不存在!\n返回主菜单"<<endl;break;}}}else if(i4==0)menu();}void WorkerList::sort()//职工信息排序功能函数实现{if(NUM<=0){cout<<"没有职工信息存入,系统将返回主菜单"<<endl;menu();}elsecout<<"请选择排序方式:"<<endl;cout<<"***********************************************"<<endl;cout<<"** 1.按工号排序(升序) **"<<endl;cout<<"** 2.按工号排序(降序) **"<<endl;cout<<"** 3.按工资排序(升序) **"<<endl;cout<<"** 4.按工资排序(降序) **"<<endl;cout<<"** 0.返回主菜单 **"<<endl;cout<<"***********************************************"<<endl;cout<<endl;cout<<"请选择数字编号1~4"<<endl;int i5;cin>>i5;while(i5<0||i5>4){cout<<"输入有误,请重新输入:"<<endl;cin>>i5;}if(i5==1){for(int i=0;i<count-1;i )//冒泡函数体实现排序for(int j=0;j<count-1-i;j )if(w[j].num>w[j 1].num){string temp;temp=w[j].num;w[j].num=w[j 1].num;w[j 1].num=temp;}cout<<"按工号升序后的信息如下:"<<endl;cout<<"工号\t姓名\t性别\t学历\t年龄\t工资\t地址\t电话"<<endl;for( i=0;i<count;i )cout<<w[i].num<<'\t'<<w[i].name<<'\t'<<w[i].sex<<'\t'<<w[i].edu<<' \t'<<w[i].age<<'\t'<<w[i].salary<<'\t'<<w[i].address<<'\t'<<w[i].tel<<en dl;}else if(i5==2){for(int i=0;i<count-1;i )for(int j=0;j<count-1-i;j )if(w[j].num<w[j 1].num){string temp;temp=w[j].num;w[j].num=w[j 1].num;w[j 1].num=temp;}cout<<"工号\t姓名\t性别\t学历\t年龄\t工资\t地址\t电话"<<endl;for( i=0;i<count;i )cout<<w[i].num<<'\t'<<w[i].name<<'\t'<<w[i].sex<<'\t'<<w[i].edu<<' \t'<<w[i].age<<'\t'<<w[i].salary<<'\t'<<w[i].address<<'\t'<<w[i].tel<<en dl;}else if(i5==3){for(int i=0;i<count-1;i )for(int j=0;j<count-i-1;j )if(w[j].salary>w[j 1].salary){int temp;temp=w[j].salary;w[j].salary=w[j 1].salary;w[j 1].salary=temp;}cout<<"按工资升序后的信息如下:"<<endl;cout<<"工号\t姓名\t性别\t学历\t年龄\t工资\t地址\t电话"<<endl;for( i=0;i<count;i )cout<<w[i].num<<'\t'<<w[i].name<<'\t'<<w[i].sex<<'\t'<<w[i].edu<<' \t'<<w[i].age<<'\t'<<w[i].salary<<'\t'<<w[i].address<<'\t'<<w[i].tel<<en dl;}else if(i5==4){for(int i=0;i<count-1;i )for(int j=0;j<count-i-1;j )if(w[j].salary<w[j 1].salary){int temp;temp=w[j].salary;w[j].salary=w[j 1].salary;w[j 1].salary=temp;}cout<<"工号\t姓名\t性别\t学历\t年龄\t工资\t地址\t电话"<<endl;for( i=0;i<count;i )cout<<w[i].num<<'\t'<<w[i].name<<'\t'<<w[i].sex<<'\t'<<w[i].edu<<' \t'<<w[i].age<<'\t'<<w[i].salary<<'\t'<<w[i].address<<'\t'<<w[i].tel<<en dl;}else if(i5==0)menu();}void WorkerList::dele()//职工信息删除功能函数实现{if(NUM<=0){cout<<"没有职工信息存入,系统将返回主菜单"<<endl;menu();}elsecout<<"职工信息如下:"<<endl;cout<<"工号\t姓名\t性别\t学历\t年龄\t工资\t地址\t电话"<<endl;for(int i=0;i<count;i )cout<<w[i].num<<'\t'<<w[i].name<<'\t'<<w[i].sex<<'\t'<<w[i].edu<<' \t'<<w[i].age<<'\t'<<w[i].salary<<'\t'<<w[i].address<<'\t'<<w[i].tel<<en dl;cout<<"请输入需要删除信息职工的工号:"<<endl;string num3;cin>>num3;int j=0,k;int flag6=1;while(flag6){for(;j<count;j ){if(num3==w[j].num){flag6=0;k=j;break;}}if(flag6){cout<<"不存在此员工,请重新输入:"<<endl;j=0;cin>>num3;}}cout<<"你选择的职工的信息为:"<<endl;cout<<"工号\t姓名\t性别\t学历\t年龄\t工资\t地址\t电话"<<endl;cout<<w[k].num<<'\t'<<w[k].name<<'\t'<<w[k].sex<<'\t'<<w[k].edu<<' \t'<<w[k].age<<'\t'<<w[k].salary<<'\t'<<w[k].address<<'\t'<<w[k].tel<<en dl;cout<<"确认请输入Y\t返回主菜单请输入N "<<endl;string p;cin>>p;while(1){if(p=="y"||p=="Y"){cout<<"员工信息已删除!"<<endl;for(int i=0;i<count;i )if(w[i].num==num3)int j=i;for(;j<=count-1;j )w[j]=w[j 1];count--;break;}else if(p=="n"||p=="N"){menu();}else{cout<<"输入有误,请重新输入:";cin>>p;}}int main()//主函数体{WorkerList wl;while(1){system("cls");menu();cout<<"请选择数字编号~7"<<endl;int i1;cin>>i1;while(!(i1>=0&&i1<=7)){cout<<"输入有误,请重新输入:"<<endl;cin>>i1;}switch(i1){case 1:wl.add();break;case 2:wl.change();break;case 3:wl.dele();break;case 4:wl.sort();break;case 5:wl.search();break;case 7:wl.save();break;case 6:wl.visitworker();break;case 0:cout<<"系统退出!!"<<endl;exit(0);default:break;}cout<<"是否返回主菜单? Y/N"<<endl;cin>>p;if(p=="n"||p=="N"){ cout<<"系统退出!!"<<endl;exit(0);}}return 0;}。
c语言课程设计报告_员工信息管理系统_结构数组实现程序源代码.doc
c语言课程设计报告_员工信息管理系统_结构数组实现程序源代
码。
//C语言课程设计人员信息管理系统-结构数组实现# INCLUDE # INCLUDE # INCLUDE STRUCT EMPLOYEE { Charnum[10];char name[15];迷人的性感[5];[·XXXX日期、教育背景、职位、电话号码、地址等。
系统可以完成员工信息的查询、更新、插入、删除和排序功能。
基本要求和说明
1.员工信息保存在文本文件中
2.排序:
根据不同的关键字对所有员工的信息进行排序,并输出排序结果。
3.询问:
根据特定标准查找员工。
4.更新:
通过编号修改员工的某些信息。
5.插入:
关于添加新员工的信息。
6.删除:
按号码删除已离开公司的员工信息。
计算机科学与信息工程学院欢迎您的来访。
下载后可以修改和编辑word文档。
双击以删除页眉和页脚。
谢谢!简单的教科书内容不能满足学生的需要。
教育中常见
的问题是教大脑的人不使用手,不使用手的人使用大脑,所以他们什么也做不了。
教育革命的对策是手脑联盟。
因此,双手和大脑的力量都是不可思议的。
单词模型divI)。
c程序设计源程序—职工信息管理系统.doc
c++程序设计源程序—职工信息管理系统1#include#include#include#define N 100 /*宏定义N*/struct clerk /*定义结构型clerk*/{char num[12];/*职工号*/char name[9];/*职工姓名*/char sex[3];/*职工性别*/char xl[11];/*职工学历*/char adr[60];/*职工住址*/char tell[13];/*职工电话号码*/int age; /*职工年龄*/int salary; /*职工工资*/}c[N];void menu()/*定义菜单函数并显示菜单*/{printf("\n");printf("\t┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n");printf("\t┃************************************************************┃\n");printf("\t┃************************************************************┃\n");printf("\t┃***************1.输入记录 2.浏览记录***************┃\n");printf("\t┃************** **************┃\n");printf("\t┃***************3.查询记录 4.添加记录***************┃\n");printf("\t┃************** **************┃\n");printf("\t┃***************5.删除记录 6.修改记录***************┃\n");printf("\t┃************** **************┃\n");printf("\t┃*************** 7.退出系统*****************┃\n");printf("\t┃************************************************************┃\n");printf("\t┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n"); }int enter(int n) /*录入职工信息*/{ int i;char judge;for(i=0;i{printf("开始输入记录!\n"); printf("职工号: ");scanf("%s",c[i].num); printf("姓名: ");scanf("%s",c[i].name); printf("性别: ");scanf("%s",c[i].sex); printf("学历: ");scanf("%s",c[i].xl);printf("住址: ");scanf("%s",c[i].adr); printf("电话: ");scanf("%s",c[i].tell); printf("年龄: ");scanf("%d",&c[i].age);printf("工资: ");scanf("%d",&c[i].salary);printf("\n");getchar();printf("是否继续输入(Y/N)?");/*是否继续输入数据*/ judge=getchar();if(judge=='Y'||judge=='y')continue;elseif(judge=='N'||judge=='n')break;}printf("输入成功,按任意键返回...");getchar();getchar();return i+1;}void display(int a) /*浏览职工信息*/{int i;printf("开始浏览记录!\n");printf(" 职工号姓名性别学历住址电话年龄工资\n"); for(i=0;i{printf("%-12s",c[i].num);printf("%-9s",c[i].name);printf("%-6s",c[i].sex);printf("%-6s",c[i].xl);printf("%-14s",c[i].adr);printf("%-13s",c[i].tell);printf("%-5d",c[i].age);printf("%-6d",c[i].salary);printf("\n");}printf("按任意键返回.......");getchar();getchar();}void locate(int a) /*查询职工信息*/{int choice,i,flag=0;char ch[11];printf("开始查询记录!\n");printf("请选择查找方式:(1.按学历 2.按职工号):"); scanf("%d",&choice); /*输入查找方式*/getchar();switch(choice){case 1:printf("请输入要查职工学历:");/*按职工学历查询*/ gets(ch);printf(" 职工号姓名性别学历住址电话年龄工资\n");for(i=0;i{if(strcmp(ch,c[i].xl)==0) /*比较两个字符串的大小*/{printf("%-12s",c[i].num);printf("%-9s",c[i].name);printf("%-6s",c[i].sex);printf("%-6s",c[i].xl);printf("%-14s",c[i].adr);printf("%-13s",c[i].tell);printf("%-5d",c[i].age);printf("%-6d",c[i].salary);printf("\n");flag=1;}}if(flag==0)printf("无此职工的相关信息!\n"); break;case 2:printf("请输入要查找的职工的职工号:"); /*按职工工号查询*/ gets(ch);printf(" 职工号姓名性别学历住址电话年龄工资\n");for(i=0;i{if(strcmp(ch,c[i].num)==0)/*比较两个字符串的大小*/{printf("%-12s",c[i].num);printf("%-9s",c[i].name);printf("%-6s",c[i].sex);printf("%-6s",c[i].xl);printf("%-14s",c[i].adr);printf("%-13s",c[i].tell);printf("%-5d",c[i].age);printf("%-6d",c[i].salary);printf("\n");flag=1;}}if(flag==0)printf("无此职工的相关信息!\n");break;default:printf("输入错误!");}printf("\n按任意键返回.......");getchar();}int add(int a,int *f) /*插入职工信息*/{int po,i;printf("请输入你在插入的位置(1-%d):",a+1); scanf("%d",&po);if(po>a+1){printf("输入位置有误,按任意键返回.......");return a;}else{printf("开始插入记录!\n"); for(i=a-1;i>=po-1;i--){strcpy(c[i+1].num,c[i].num); strcpy(c[i+1].name,c[i].name); strcpy(c[i+1].sex,c[i].sex); strcpy(c[i+1].xl,c[i].xl);strcpy(c[i+1].adr,c[i].adr); strcpy(c[i+1].tell,c[i].tell);c[i+1].age=c[i].age;c[i+1].salary=c[i].salary;} printf("请输入职工号: "); scanf("%s",c[po].num);getchar();printf("姓名: ");scanf("%s",c[po-1].name); printf("性别: ");scanf("%s",c[po-1].sex); printf("学历: ");scanf("%s",c[po-1].xl); printf("住址: ");scanf("%s",c[po-1].adr); printf("电话: ");scanf("%s",c[po-1].tell); printf("年龄: ");scanf("%d",&c[po-1].age); printf("工资: ");scanf("%d",&c[po-1].salary); printf("\n");*f=1;}if(* f==1){printf("添加成功,按任意键返回......."); getchar();getchar();return a+1;}else{printf("添加失败,按任意键返回......."); getchar();getchar();return a;}}int delet(int a,int *f) /*删除职工信息*/ {int i,po,flag=0;char nu[20];printf("开始删除记录!\n");printf("请输入要删除职工的工号:");/*按职工号删除职工信息*/ getchar(); scanf("%s",nu);/*输入职工号*/for(i=0;i{if(strcmp(nu,c[i].num)==0)/*比较两个字符串的大小*/。
职工信息管理系统c语言课程设计源代码
课程设计报告(本科)课程:高级语言课程设计学号:姓名:班级:教师:时间:计算机科学与技术系图1:进入主菜单界2.输入数字“1”进行录入职工信息:图2:录入职工信息3.输入“y”返回主菜单(界面同图1)。
4.输入“2”浏览职工信息:图4:按职工号查询职工信息图6:按电话号码查询职工信息6.进入主菜单,输入“4”进行删除职工信息:图7:按姓名删除职工信息图8:按职工号删除职工信息7.进入主菜单输入“5”进行添加职工信息:图10:按姓名修改职工信息图11:按职工号修改职工信息9.进入主菜单输入”7”退出职工信息管理系统:附录:#include<stdio.h>//标准输入输出函数库#include<string.h>//字符串函数库#include<stdlib.h>struct employee{int num;//职工号char name[20];//姓名char sex;//性别int age;//年龄char xueli[30];//学历int wage;//工资char addr[30];//家庭住址char tel[20];//联系电话}employee[100];//定义一个结构体int main()//函数主体{void menu();//菜单函数void input();// 录入函数void save(int m);//保存文件函数void display();//浏览函数void del();// 删除函数void del_name();//按姓名删除函数void del_num();//按职工号删除函数void add();//添加函数void search();//查询函数void search_num();//按职工号码查询函数void search_xueli();//按学历查询函数void search_tel();//按号码查询函数void modify();// 修改函数void modify_num();//按员工号修改函数void modify_name();//按姓名修改函数int n,flag;char a;menu();printf("请选择你需要操作的步骤(1--7):\n"); scanf("%d",&n);do{if(n>=1&&n<=7){flag=1;break;}else{flag=0;printf("您输入有误,请重新选择!");}}while(flag==0);while(flag==1){switch(n){case 1:printf("◆◆◆输入职工信息◆◆◆\n");printf("\n");input();break;case 2:printf("◆◆◆浏览职工信息◆◆◆\n");printf("\n");display();break;case 3:printf("◆◆◆查询职工信息◆◆◆\n");printf("\n");search();break;case 4:printf("◆◆◆删除职工信息◆◆◆\n");printf("\n");();break;case 5:printf("◆◆◆添加职工信息◆◆◆\n");printf("\n");add();break;case 6:printf("◆◆◆修改职工信息◆◆◆\n");printf("\n");modify();break;case 7:exit(0);break;default :break;}getchar();printf("\n");printf("是否继续进行(y or n):\n");scanf("%c",&a);if(a=='y'){flag=1;system("cls");//清屏menu();//调用菜单函数printf("请再次选择你需要操作的步骤(1--7):\n");scanf("%d",&n);printf("\n");}elseexit(0);}}void menu() //菜单函数{printf("************欢迎进入职工信息管理系统**********\n");printf("1.录入职工信息");printf("2.浏览职工信息\n");printf("3.查询职工信息");printf("4.删除职工信息\n");printf("5.添加职工信息");printf("6.修改职工信息\n");printf("7.退出\n");printf("********************xx使用******************\n");printf("\n");printf("\n");}void input() //录入函数{int i,m;printf("请输入需要创建信息的职工人数(1--100):\n");scanf("%d",&m);for (i=0;i<m;i++){printf("请输入职工号: ");scanf("%d",&employee[i].num);printf("请输入姓名: ");scanf("%s",employee[i].name);getchar();printf("请输入性别(f--女 m--男): "); scanf("%c",&employee[i].sex);printf("请输入年龄: ");scanf("%d",&employee[i].age);printf("请输入学历: ");scanf("%s",employee[i].xueli);printf("请输入工资: ");scanf("%d",&employee[i].wage);printf("请输入住址: ");scanf("%s",employee[i].addr);printf("请输入电话: ");scanf("%s",employee[i].tel);printf("\n");}printf("\n创建完毕!\n");save(m);}void save(int m) //保存文件函数{int i;FILE*fp;if ((fp=fopen("employee_list.txt","wb"))==NULL){printf ("cannot open file\n");exit(0);}for (i=0;i<m;i++) //将内存中职工的信息输出到磁盘文件中去if (fwrite(&employee[i],sizeof(struct employee),1,fp)!=1)printf("file write error\n");fclose(fp);}int load() //导入函数{FILE*fp;int i=0;if((fp=fopen("employee_list.txt","rb"))==NULL) {printf ("cannot open file\n");exit(0);}else{do{fread(&employee[i],sizeof(struct employee),1,fp);i++;}while(feof(fp)==0);}fclose(fp);return(i-1);//循环过程中跳出循环时i自动加一,所以要减去一}void display() //浏览函数{int i;int m=load();printf(" 职工号姓名性别年龄学历工资住址电话 \n");for(i=0;i<m;i++) //m为输入部分的职工人数printf(" %d %s %c%d%s %d %s %s\n",employee[ i].num,employee[i].name,employee[i].sex,employee[i].age,employee[i].xueli,employee[i].wage,empl oyee[i].addr,employee[i].tel);}void del() //删除函数{int t,flag;do{printf("\n按职工号删除请按1; 按姓名删除请按2; 进入主函数请按3\n");scanf("%d",&t);if(t>=1&&t<=3){flag=1;break;}else{flag=0;printf("您输入有误,请重新选择!"); }}while(flag==0);while(flag==1){switch(t){case 1:printf("按职工号删除\n");del_num();break; case 2:printf("按姓名删除\n");del_name();break; case 3:main();break;default:break;}}}void del_name() //按姓名删除函数{int m=load();int i,j,n,t,flag;char name[20];printf("\n 原来的职工信息:\n");display(); //调用浏览函数printf("\n");printf("请输入要删除的职工的姓名:\n");scanf("%s",name);for(flag=1,i=0;flag&&i<m;i++){if(strcmp(employee[i].name,name)==0){printf("\n已找到此人,原始记录为:\n");printf(" 职工号姓名性别年龄学历工资住址电话 \n");printf(" %d %s %c%d%s %d %s %s\n",employee[ i].num,employee[i].name,employee[i].sex,employee[i].age,employee[i].xueli,employee[i].wage,empl oyee[i].addr,employee[i].tel);printf("\n确实要删除此人信息请按1,不删除请按0\n");scanf("%d",&n);if(n==1)for(j=i;j<m-1;j++){strcpy(employee[j].name,employee[j+1].name);//strcpy(st r1,str2)把str2指向的字符串复制到str1中去employee[j].num=employee[j+1].num;employee[j].sex=employee[j+1].sex;employee[j].age=employee[j+1].age;strcpy(employee[j].xueli,employee[j+1].xueli);employee[j].wage=employee[j+1].wage;strcpy(employee[j].addr,employee[j+1].addr);strcpy(employee[j].tel,employee[j+1].tel);//把下一员工的信息复制到上一个员工信息的位置中去}flag=0;}}if(!flag) //flag取逻辑反,及flag==0m=m-1;elseprintf("\n对不起,查无此人!\n");printf("\n 浏览删除后的所有职工信息:\n");save(m);//调用保存函数display(); //调用浏览函数printf("\n不在删除请按0, 返回删除菜单请按1,继续按姓名删除请按2\n");scanf("%d",&t);switch(t){case 0:main();break;case 1:();break;case 2:break;default :break;}}void del_num() //按职工号删除函数{int m=load();int i,j,n,t,flag;int num;printf("\n 原来的职工信息:\n");display(); //调用浏览函数printf("\n");printf("请输入要删除的职工的职工号:\n"); scanf("%d",&num);for(flag=1,i=0;flag&&i<m;i++){if(employee[i].num==num){printf("\n已找到此人,原始记录为:\n");printf(" 职工号姓名性别年龄学历工资住址电话 \n");printf(" %d %s %c%d%s %d %s %s\n",employee[ i].num,employee[i].name,employee[i].sex,employee[i].age,employee[i].xueli,employee[i].wage,empl oyee[i].addr,employee[i].tel);printf("\n确实要删除此人信息请按1,不删除请按0\n");scanf("%d",&n);if(n==1){for(j=i;j<m-1;j++){strcpy(employee[j].name,employee[j+1].name);//strcpy(st r1,str2)把str2指向的字符串复制到str1中去employee[j].num=employee[j+1].num;employee[j].sex=employee[j+1].sex;employee[j].age=employee[j+1].age;strcpy(employee[j].xueli,employee[j+1].xueli);employee[j].wage=employee[j+1].wage;strcpy(employee[j].addr,employee[j+1].addr);strcpy(employee[j].tel,employee[j+1].tel);//把下一员工的信息复制到上一个员工信息的位置中去}flag=0;}}}if(!flag) //flag取逻辑反,及flag==0m=m-1;elseprintf("\n对不起,查无此人!\n");printf("\n 浏览删除后的所有职工信息:\n");save(m);//调用保存函数display(); //调用浏览函数printf("\n不在删除请按0,返回删除菜单请按1,继续按职工号删除请按2\n");scanf("%d",&t);switch(t){case 0:main();break;case 1:();break;case 2:break;default :break;}}void add() //添加函数{FILE*fp;int n;int count=0;int i;int m=load();printf("\n 原来的职工信息:\n");display();printf("\n");fp=fopen("emploee_list.txt","a");printf("请输入想增加的职工数:\n"); scanf("%d",&n);for (i=m;i<(m+n);i++){printf("\n 请输入新增加职工的信息:\n");scanf("%d",&employee[i].num);printf("\n");printf("请输入姓名: ");scanf("%s",employee[i].name);getchar();printf("请输入性别(f--女 m--男): "); scanf("%c",&employee[i].sex);printf("请输入年龄: ");scanf("%d",&employee[i].age);printf("请输入学历: ");scanf("%s",employee[i].xueli);printf("请输入工资: ");scanf("%d",&employee[i].wage);printf("请输入住址: ");scanf("%s",employee[i].addr);scanf("%s",employee[i].tel);printf("\n");count=count+1;printf("已增加的人数:\n");printf("%d\n",count);}printf("\n添加完毕!\n");m=m+count;printf("\n浏览增加后的所有职工信息:\n"); printf("\n");save(m);display();fclose(fp);}void search()//查询函数{int t,flag;do{printf("\n按职工号查询请按1; 按学历查询请按2; 按电话号码查询请按3;进入主函数请按4\n");scanf("%d",&t);if(t>=1&&t<=4){flag=1;break;}else{flag=0;printf("您输入有误,请重新选择!");}}while(flag==0);while(flag==1){switch(t){case 1:printf("按职工号查询\n");search_num();break; case 2:printf("按学历查询\n");search_xueli();break; case 3:printf("按电话号码查询\n");search_tel();break; case 4:main();break;default:break;}}}void search_num() //按职工号码查询函数{int num;int i,t;int m=load();printf("请输入要查找的职工号:\n");scanf("%d",&num);for(i=0;i<m;i++)if(num==employee[i].num){printf("\n已找到此人,其记录为:\n");printf(" 职工号姓名性别年龄学历工资住址电话 \n");printf(" %d %s %c%d%s %d %s %s\n",employee[ i].num,employee[i].name,employee[i].sex,employee[i].age,employee[i].xueli,employee[i].wage,empl oyee[i].addr,employee[i].tel);break;}if(i==m)printf("\n对不起,查无此人\n");printf("\n");printf("不在查询请按0,返回查询函数请按1,继续查询职工号请按2\n");scanf("%d",&t);switch(t){case 0:main();break;case 1:search();break;case 2: break;default:break;}}void search_xueli() //按职工号码查询函数{char xueli[30];int i,t,n=0;int m=load();printf("请输入要查找的学历:\n");scanf("%s",xueli);for(i=0;i<m;i++)if(strcmp(employee[i].xueli,xueli)==0){printf("\n已找到,其记录为:\n");printf(" 职工号姓名性别年龄学历工资住址电话 \n");printf(" %d %s %c%d%s %d %s %s\n",employee[ i].num,employee[i].name,employee[i].sex,employee[i].age,employee[i].xueli,employee[i].wage,empl oyee[i].addr,employee[i].tel);n++;}if(i==m&&n==m)printf("\n对不起,查无此人\n");printf("\n");printf("不在查询请按0,返回查询函数请按1,继续查询学历请按2\n");scanf("%d",&t);switch(t){case 0:main();break;case 1:search();break;case 2:break;default :break;}}void search_tel() //按号码查询函数{char tel[20];int i, t;int m=load();printf("请输入要查找的电话号码:\n"); scanf("%s",tel);for(i=0;i<m;i++)if(strcmp(tel,employee[i].tel)==0) {printf("\n已找到此人,其记录为:\n");printf(" 职工号姓名性别年龄学历工资住址电话 \n");printf(" %d %s %c%d%s %d %s %s\n",employee[ i].num,employee[i].name,employee[i].sex,employee[i].age,employee[i].xueli,employee[i].wage,empl oyee[i].addr,employee[i].tel);break;}if(i==m)printf("\n对不起,查无此人\n");printf("\n");printf("不在查询请按0;返回查询函数请按1,继续查询电话号码请按2\n");scanf("%d",&t);switch(t){case 0:main();break;case 1:search();break;case 2:break;default :break;}}void modify() //修改函数{int t,flag;do{printf("\n按职工号修改请按1; 按姓名修改请按2; 进入主函数请按3\n");scanf("%d",&t);if(t>=1&&t<=3){flag=1;break;}else{flag=0;printf("您输入有误,请重新选择!");}}while(flag==0);while(flag==1){switch(t){case 1:printf("按职工号修改\n");modify_num();break;case 2:printf("按姓名修改\n");modify_name();break; case 3:main();break;default:break;}}}void modify_num() //按员工号修改函数{int num;char name[20];char sex;int age;char xueli[30];int wage;char addr[30];char tel[20];int b,c,i,n,t,flag;int m=load();printf("\n 原来的职工信息:\n");display(); //调用浏览函数printf("\n");printf("请输入要修改的职工的员工号:\n");scanf("%d",&num);for(flag=1,i=0;flag&&i<m;i++){if(num==employee[i].num)//比较两个字符串,{printf("\n已找到此人,原始记录为:\n");printf(" 职工号姓名性别年龄学历工资住址电话 \n");printf(" %d %s %c%d%s %d %s %s\n",employee[ i].num,employee[i].name,employee[i].sex,employee[i].age,employee[i].xueli,employee[i].wage,empl oyee[i].addr,employee[i].tel);printf("\n确实要修改此人信息请按1 ; 不修改请按0\n");scanf("%d",&n);if(n==1){printf("\n需要进行修改的选项\n 1.职工号 2.姓名 3.性别 4.年龄 5.学历 6.工资 7.住址 8.电话\n");printf("请输入你想修改的那一项序号:\n");scanf("%d",&c);if(c>8||c<1)printf("\n选择错误,请重新选择!\n");}flag=0;}}if(flag==1)printf("\n对不起,查无此人!\n");do{switch(c)//因为当找到第i个职工时,for语句后i自加了1,所以下面的应该把改后的信息赋值给第i-1个人{case 1:printf("职工号改为: ");scanf("%d",&num);employee[i-1].num=num;break;case 2:printf("姓名改为: ");scanf("%s",name);strcpy(employee[i-1].name,name);break;case 3:printf("性别改为: ");getchar();scanf("%c",&sex);employee[i-1].sex=sex;break;case 4:printf("年龄改为: ");scanf("%d",&age);employee[i-1].age=age;break;case 5:printf("学历改为: ");scanf("%s",xueli);strcpy(employee[i-1].xueli,xueli); break;case 6:printf("工资改为: ");scanf("%d",&wage);employee[i-1].wage=wage;break;case 7:printf("住址改为: ");scanf("%s",addr);strcpy(employee[i-1].addr,addr);break;case 8:printf("电话改为: ");scanf("%s",tel);strcpy(employee[i-1].tel,tel);break;}printf("\n");printf("\n是否确定所修改的信息?\n 是请按1 ; 不,重新修改请按2: \n");scanf("%d",&b);}while(b==2);printf("\n浏览修改后的所有职工信息:\n");printf("\n");save(m);display();printf("\n 不在修改请按0, 返回修改函数请按1, 继续修改职工号码请按2\n");scanf("%d",&t);switch(t){case 0:main();break;case 1:modify();break;case 2:break;default :break;}}void modify_name() //按姓名修改函数。
C语言课程设计职工信息管理系统单链实现程序源代码
//C语言课程设计职工信息管理系统—单链表实现#include "stdio.h"#include "stdlib.h"#include "string.h"int saveflag=0; /*是否需要存盘的标志变量*/ struct employee{char name[15];char num[10];/* 工号 */char sex[4];char bm[15];char zc[20];int gz;};typedef struct node{struct employee data;struct node *next;}Node,*Link;//Link l (注意是:字母l不是数字1)void add(Link l);void disp(Link l); //查看职工所有信息void del(Link l); //删除功能Node* Locate(Link l,char findmess[],char nameornum[]);void Qur(Link l); //查询功能void Tongji(Link l); //统计void Sort(Link l); //排序void Modify(Link l); //修改功能void save(Link l); //将单链表l中的数据写入文件void printe(Node *p); //本函数用于打印链表中某个节点的数据内容 *///以下4个函数用于输出中文标题void printstart();void Wrong();void Nofind();void printc();void menu(){printf("\t*****************************************************************\n");printf("\t* *\n");printf("\t* 职工信息管理系统_结构体数组实现*\n");printf("\t**\n");printf("\t* [1] 增加职工信息 [2] 删除职工信息*\n");printf("\t* [3] 查询职工信息 [4] 修改职工信息*\n");printf("\t* [5] 插入职工记录 [6] 统计职工记录*\n");printf("\t* [7] 排序 [8] 保存职工信息*\n");printf("\t* [9] 显示数据 [0] 退出系统*\n");printf("\t* *\n");printf("\t*****************************************************************\n");} //void menu菜单结束void Disp(Link l) //显示单链表l中存储的职工记录,内容为employee结构中定义的内容{int count=0;Node *p;p=l->next; // l存储的是单链表中头结点的指针,该头结点没有存储职工信息,指针域指向的后继结点才有职工信息if(!p) /*p==NULL,NUll在stdlib中定义为0*/{printf("\n=====>提示:没有职工记录可以显示!\n");return;}printf("\t\t\t\t显示结果\n");printstart(); //打印横线printc(); //打印各学科标题printf("\n");while(p) //逐条输出链表中存储的职工信息{printe(p);p=p->next;}printstart();printf("\n");} //void Disp结束void printstart(){printf("-----------------------------------------------------------------------\n");}void Wrong(){printf("\n=====>提示:输入错误!\n");}void Nofind(){printf("\n=====>提示:没有找到该职工!\n");}void printc() /* 本函数用于输出中文 */{printf(" 工号\t 姓名性别部门职称工资总工资平均工资\n");}void printe(Node *p)/* 本函数用于打印链表中某个节点的数据内容 */{printf("%-12s%s\t%s\t%d\t%d\t%d\t %d\t %d\n",p->data.num,p->,p->data.sex,p->data.bm,p->data.zc,p->data.g z);}//Locate(l,findmess,"num");/* 该函数用于定位连表中符合要求的结点,并返回该指针 */Node* Locate(Link l,char findmess[],char zcornum[]){Node *r;if(strcmp(zcornum,"num")==0) /* 按工号查询 */{r=l->next;while(r!=NULL){if(strcmp(r->data.num,findmess)==0) /*若找到findmess值的工号*/ return r;r=r->next;}}else if(strcmp(zcornum,"zc")==0) /* 按职称查询 */{r=l->next;while(r!=NULL){if(strcmp(r->data.zc,findmess)==0) /*若找到findmess值的职工职称*/return r;r=r->next;}return 0; /*若未找到,返回一个空指针*/}//add()函数中,无节点时,r指向list头,有节点时,r指向末尾节点void Add(Link l) /* 增加职工 */{Node *p,*r,*s; /*实现添加操作的临时的结构体指针变量*/char num[10];int flag=0;r=l;s=l->next; //链表没有节点时,s=null;/链表有节点时,指向第一个职工节点while(r->next!=NULL) //如果存在后继结点时,r指针后移一个r=r->next; /*将指针移至于链表最末尾,准备添加记录*/ while(1){printf("请你输入工号(以'0'返回上一级菜单:)");scanf("%s",num);if(strcmp(num,"0")==0) //输入'0',跳出while(1),即跳出add()函数break;s=l->next; //作用?每次从第一个节点开始找,看num是否重复。
职工信息管理系统C++源代码
职工信息管理系统C++源代码#include#include#include#include#include#include#include#includeusing namespace std;class employee{public:string m_Code;string m_Name;unsigned short int m_Year;string m_Sex;string m_Post;string m_Department;unsigned int m_Wage;//链表节点的指针域---employee* Next;public:employee* Create(employee* Head);void Rel(employee* Head);employee* Add(employee* Head);bool Search(employee* Head);employee* Search_Unique_Front(employee* Head);void Display_List(employee* Head);void Display_Node(employee* pNode); employee* Modify(employee* Head); employee* Del(employee* Head);void Save_ByFile(employee* Head,fstream& ofile); employee* Sort(employee* Head);};employee* employee::Create(employee* Head) {//创建一个带头节点的空链表。
Head=new employee;if(!Head){cout<<"分配内存失败!"<return NULL;}Head->m_Code="";Head->m_Name="";Head->m_Year=0;Head->m_Sex="";Head->m_Post="";Head->m_Department="";Head->m_Wage=0;Head->Next=NULL;return Head;}void employee::Rel(employee* Head){//释放链表。
职工信息管理系统C语言课程设计+源代码
职工信息管理系统C语言课程设计+源代码课程设计报告课程:高级语言课程设计学号:姓名:班级:教师:时间:设计名称:职工信息管理系统设计内容、目的与要求:本设计旨在熟练掌握C语言的基本知识和编辑技能,基本掌握结构化程序设计的基本思路和方法。
通过编写职工信息管理系统,便于对职工的信息进行管理,训练综合运用函数的自定义,数组,结构体等,并提高程序设计的能力。
要求:设计一个职工信息管理系统,提供以下功能:1.提供一个清晰美观的界面来调用各个功能。
2.录入功能:职工信息录入(职工信息用文件保存),可以一次完成若干条记录的输入。
3.浏览功能:完成对全部职工信息的显示。
4.查找功能:①按职工的职工号查询职工的相关信息,并显示。
②按职工的学历查询职工的相关信息,并显示。
③按职工的电话号码查询职工的相关信息,并显示。
5.删除功能:①通过输入职工的姓名完成对该名职工的信息进行删除。
②通过输入职工号完成对该名职工的信息进行删除。
6.添加功能:完成添加新职工的信息的任务。
7.修改功能:①通过输入职工的姓名完成对该名职工的信息进行修改。
②通过输入职工号完成对该名职工的信息进行修改。
8.退出职工信息管理系统。
计划与进度安排:2012年12月8日至2012年12月15日:仔细研究数据库相关知识,通过上网查资料找思路。
2012年12月16日至2012年12月20日:完成设计思路并作出草稿,编写主函数和各调用函数模块。
2012年12月21日至2013年1月1日:逐步实现各模块的功能化,实现整个程序大体功能。
2013年1月2日至2013年1月6日:修改并完善各功能,编写电子实验报告,并准备提交验收。
设计过程、步骤:一、功能结构1.职工信息管理系统开始菜单根据菜单输入的值选择程序1.录入职工信息2.浏览职工信息3.查询职工信息5.添加职工信息4.删除职工信息6.修改职工信息7.退出1.按职工号查询2.按学历查询3.按号码查询1.按职工号删除2.按职工姓名删除1.按职工号修改2.按职工姓名修改二、设计说明1.这个程序需要使用结构体来存储职工信息。
员工信息管理系统c语言
员工信息管理系统c语言员工信息管理系统是一个使用C语言编写的程序,旨在帮助企业或组织管理员工的相关信息。
这个系统可以有效地记录和管理员工的基本信息、职位、工资、考勤等。
它能够提供一种便捷、高效的方式来管理员工信息,提高工作效率和准确性。
以下是一个简单的员工信息管理系统的参考代码,以展示一些基本功能:```c#include <stdio.h>#include <stdlib.h>#include <string.h>#define MAX_EMPLOYEES 100struct Employee {char name[50];int id;char position[50];float salary;};struct Employee employees[MAX_EMPLOYEES];int numEmployees = 0;void addEmployee() {if (numEmployees >= MAX_EMPLOYEES) {printf("无法添加新员工,员工数量已达上限。
\n");return;}struct Employee newEmployee;printf("请输入员工姓名: ");scanf("%s", );printf("请输入员工编号: ");scanf("%d", &newEmployee.id);printf("请输入员工职位: ");scanf("%s", newEmployee.position);printf("请输入员工工资: ");scanf("%f", &newEmployee.salary);employees[numEmployees++] = newEmployee;printf("员工添加成功!\n");}void searchEmployee() {char name[50];printf("请输入要查询的员工姓名: ");scanf("%s", name);int found = 0;for (int i = 0; i < numEmployees; i++) {if (strcmp(employees[i].name, name) == 0) {printf("员工姓名: %s\n", employees[i].name); printf("员工编号: %d\n", employees[i].id);printf("员工职位: %s\n", employees[i].position); printf("员工工资: %.2f\n", employees[i].salary);found = 1;break;}}if (!found) {printf("未找到该员工!\n");}}void printAllEmployees() {if (numEmployees == 0) {printf("没有员工信息可打印。
C语言职工管理系统源代码及运行截图(简单版)
#include<stdio.h>#include<string.h>#define N 100typedef struct worker{char name[20];long number;int y,m,d;char zhicheng[20];char bumen[20];float salary;}Worker;void Display(){printf("\n\n\n\t\t***************职工管理系统*************\n\n");printf("\t\t\t0.退\t\t 出\n");printf("\t\t\t1.新\t\t 建\n");printf("\t\t\t2.显\t\t 示\n");printf("\t\t\t3.查\t\t 询\n");printf("\t\t\t4.删\t\t 除\n\n");}/*******1.新建**********/void Add( Worker w[],int n){int i;printf("\t姓名\t工号\t进场时间\t职称\t部门\t工资\n\n");for(i=0;i< n;i++){printf("员工%d: ",i+1);scanf("%s %ld %d %d %d %s %s %f",w[i].name,&w[i].number, &w[i].y,&w[i].m,&w[i].d,w[i].zhicheng,w[i].bumen,&w[i].salary);}}/*******2.显示**********/void Browse( Worker w[],int n ){int i;printf("\t姓名\t工号\t进场时间\t职称\t部门\t工资\n\n");for(i=0;i< n;i++){printf("员工%d:",i+1);printf("%s\t%ld\t%d-%d-%d\t%s\t%s\t%f\n\n",w[i].name,w[i].number,w[i].y,w[i].m, w[i].d,w[i].zhicheng,w[i].bumen,w[i].salary);}}/*******3.1查询姓名**********/void SearchName( Worker w[],int n ){char name[20];int i;printf("\t\t\t输入要查询的名字:");scanf("%s",name);for( i = 0; i < n; i ++ ){if( strcmp( w[i].name,name ) == 0 ){printf("\n\t\t\t查得信息如下:\n\n");printf("姓名\t工号\t进场时间\t职称\t部门\t工资\n\n");printf("%s\t%ld\t%d-%d-%d\t%s\t%s\t%f\n\n",w[i].name,w[i].number,w[i].y,w[i].m,w[i].d,w[i].zhicheng,w[i].bumen,w[i].salary);return;}}printf("\t\t\t查无此人!");}/*******3.2查询工号**********/void SearchNumber( Worker w[],int n ){long number;int i,k=0;printf("\t\t\t输入要查询的工号:");scanf("%ld",&number);for( i = 0; i < n; i ++ ){if( w[i].number == number ){printf("\n\t\t\t查得信息如下:\n\n");printf("姓名\t工号\t进场时间\t职称\t部门\t工资\n\n");printf("%s\t%ld\t%d-%d-%d\t%s\t%s\t%f\n\n",w[i].name,w[i].number,w[i].y,w[i].m, w[i].d,w[i].zhicheng,w[i].bumen,w[i].salary);return;}}printf("\n\t\t\t查无此人!");}/*******3.查询**********/void Search( Worker w[],int n ){int x;printf("\t\t\t选择查询方式(1.姓名/2.工号):");scanf("%d",&x);printf("\n");switch(x){case 1:SearchName(w,n);break;case 2:SearchNumber(w,n);break;}}/*******4.删除**********/void Delete( Worker w[],int n ){char name[20];int i,j;printf("\t\t\t输入要删除的名字:");scanf("%s",name);printf("\n");for( i = 0; i < n; i ++ ){if( strcmp( w[i].name,name ) == 0 ){printf("\t\t\t将删除以下信息:\n\n");printf("\t姓名\t工号\t进场时间\t职称\t部门\t工资\n\n");printf("\t%s\t%ld\t%d-%d-%d\t%s\t%s\t%f\n\n",w[i].name,w[i].number,w[i].y,w[i]. m,w[i].d,w[i].zhicheng,w[i].bumen,w[i].salary);for( j = i;j<n-1;j++ ){w[j] = w[j+1];}printf("\t\t\t成功删除!\n\n");return;}}printf("\t\t\t查无此人!");}void Run( Worker w[],int n ){int choice;do{Display();printf("\t\t\t输入你的选择:");scanf("%d",&choice);printf("\n");switch( choice ){case 0:break;case 1:Add(w,n);break;case 2:Browse(w,n);break;case 3:Search(w,n);break;case 4:Delete(w,n);n--;break;}}while(choice);}void main(){int n;Worker w[N];printf("\t输入职员个数:");scanf("%d",&n);Run(w,n);}友情提示:范文可能无法思考和涵盖全面,供参考!最好找专业人士起草或审核后使用,感谢您的下载!。
C语言课程设计职工工资信息管理系统源代码
#include <stdio.h>#include <string.h>#include <stdlib.h>#include <conio.h>#define N 10000int choice;struct employee{int num;int position;char name[10000];char sex[2];int salary;int i,max,t;}em[N];struct empsalary{char name[10000];int salary;}emps[N];void manage();void query();void input();void display();void change();void del();void add();void paixu();int changeposition();int changesalary();void querysalary();void creat();void main(){do{printf("欢迎进入职工管理系统中文版\n"); printf("请你选择操作类型:\n");printf("1进入管理系统\n");printf("2进入查询系统\n");printf("0退出系统\n");scanf("%d",&choice);switch(choice){case 1:manage();break;case 2:query();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("欢迎进入管理系统\n");printf("请你选择操作类型:\n");printf("1输入职工信息\n");printf("2显示职工信息\n");printf("3修改职工信息\n");printf("4追加一个职工信息\n");printf("5删除一个职工信息\n");printf("6排序\n");printf("0返回\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();case 6:paixu();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");scanf("%d",&em[i].salary);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");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].salary);}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<N;i++){if(strcmp(chname,em[i].name)==0){printf("这是你要修改的人的信息\n");printf("工号为%d\n 职位为%d\n 姓名为%s\n 性别为%s\n 工资为%d\n",em[i].num,em[i].position,em[i].name,em[i].sex,em[i].salary);printf("请你输入要修改的部分:\n");printf("1修改职位\n");printf("2修改工资\n");printf("0退出系统\n");printf("请选择\n");scanf("%d",&choicechange);switch(choicechange){case 1:em[i].position=changeposition();break;case 2:em[i].salary=changesalary();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 changesalary(){int newsalary;printf("请你输入新的工资:\n");scanf("%d",&newsalary);return(newsalary);}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",&em[i].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",);printf("请你输入性别以m为男f为女:\n");scanf("%s",emp.sex);printf("请你输入工资:\n");scanf("%d",&emp.salary);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\n",em[i].name[8]);printf("性别为%s\n",em[i].sex[2]);printf("其中m为男f为女\n");printf("工资为%d\n",em[i].salary);fclose(fp);}}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("\t 1董事长2总经理3副总经理\n");printf("\t 4经理5副经理6秘书\n");printf("\t 7技术员8领班9员工\n");printf("姓名为%s\n",em[i].name);printf("性别为%s\n",em[i].sex);printf("\t其中m为男f为女\n");printf("工资为%d\n",em[i].salary);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\n",em[i].name[8]);printf("性别为%s\n",em[i].sex[2]);printf("其中m为男f为女\n");printf("工资为%d\n",em[i].salary);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<N;i++)fwrite(&emps[i],sizeof(struct empsalary),1,fp2);fclose(fp1);fclose(fp2);}void creat(){FILE *fp;if((fp=fopen("D:\\employee.txt","w+"))==NULL)return;input();fclose(fp);}void paixu(){int max,i,t,j;for(i=1;i<10;i++){max=em[i].salary;for(j=i;j<10;j++){if(em[j].salary>max){max=em[j].salary;t=em[j].salary;em[j].salary=t;}}}printf("姓名工资工号性别职位\n");for(i=1;i<10;i++)printf(" %s %d %d %s %d\n ",em[i].name,em[i].salary,em[i].num,em[i].sex,em[i].position);}。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
#include <stdio.h>#include <windows.h>#include <string.h> #define N 100 struct employee {int num;char name[20];char sex;int age;char xueli[30];int wage;char addr[30];char tel[20];}em[100]; /* 定义一个结构体*/ void menu();void input();void save(int);void display();void del();void add();void search();void search_num();void search_xueli();void search_tel();void modify(); /* 定义各函数*/void main(){menu();int n,flag;char a;do{ printf(" 请选择你需要操作的步骤(1--7):\n");scanf("%d",&n);if(n>=1 && n<=7){flag=1; break;}else{flag=0;printf(" 您输入有误,请重新选择!");}while(flag==0);while(flag==1) {switch(n){case 1:printf("\n");printf("\n");input();break;case 2:printf("\n");printf("\n");display();break;case 3:printf("\n");printf("\n");search();break;case 4:printf("case 5:printf("case 6:printf("\n");printf("\n");modify();break;case 7:exit(0);break;default :break;}getchar();printf("\n");printf(" 是否继续进行(y or n):\n");scanf("%c",&a);if(a=='y')♦♦♦输入职工信息♦♦♦♦♦♦浏览职工信息♦♦♦♦♦♦按职工号查询职工信息♦♦♦♦♦♦删除职工信息♦♦♦♦♦♦添加职工信息♦♦♦♦♦♦\n");printf("\n");del();break;\n");printf("\n");add();break;修改职工信息♦♦♦{flag=1;system("cls"); /* 清屏*/menu(); /* 调用菜单函数*/printf(" 请再次选择你需要操作的步骤(1--7):\n");scanf("%d",&n);printf("\n");}elseexit(0);}}void menu(){/* 菜单函数*/printf(" ************ 欢迎进入职printf(" 1.录入职工信息");printf(" 2.浏览职工信息\n");printf(" 3.查询职工信息");printf(" 4.删除职工信息\n");printf(" 5.添加职工信息");printf(" 6.修改职工信息\n");printf(" 7.退出\n");**********\n");}getchar();printf(" 请输入性别 (f-- 女 m--男 ): "); scanf("%c",&em[i].sex);printf(" 请输入年龄 : "); scanf("%d",&em[i].age);printf(" 请输入学历 : "); scanf("%s",em[i].xueli);printf(" 请输入工资 : "); scanf("%d",&em[i].wage); printf(" 请输入住址 : ");scanf("%s",em[i].addr);printf(" 请输入电话 : ");scanf("%s",em[i].tel);printf("\n");}printf("\n 创建完毕 !\n"); save(m);}void save(int m) /* 保存文件函数 */{int i;FILE*fp;if ((fp=fopen("employee_list","wb"))==NULL){printf ("cannot open file\n");exit(0);}for (i=0;i<m;i++) /* 将内存中职工的信息输出到磁盘文件中去 */ if(fwrite(&em[i],sizeof(struct employee),1,fp)!=1) printf("file write error\n");fclose(fp);printf(" ******************** printf("\n"); printf("\n");} void input() /* 录入函数 */ { int i,m; printf(" 请输入需要创建信息的职工人数scanf("%d",&m); for (i=0;i<m;i++){printf(" 请输入职工号: "); scanf("%d",&em[i].num); printf(" 请输入姓名 : "); scanf("%s",em[i].name); 谢谢使用 **************** (1--100):\n");**\n");int load() /* 导入函数*/{FILE*fp;int i=0;if((fp=fopen("employee_list","rb"))==NULL){printf ("cannot open file\n");exit(0);}else{do{fread(&em[i],sizeof(struct employee),1,fp);i++;}while(feof(fp)==0);}fclose(fp);return(i-1);}void display() /* 浏览函数*/{int i;int m=load();printf(" 职工号姓名性别年龄\n");for(i=0;i<m;i++) /*m 为输入部分的职工人数*/printf("\n %-8d%-6s%-6c%-6d\n",em[i].num,em[i].name,em[i].sex,em[i].age); printf("\n 学历工资住址电话\n");for(i=0;i<m;i++) /*m 为输入部分的职工人数*/printf("\n %-6s%-6d%-6s%-6s\n",em[i].xueli,em[i].wage,em[i].addr,em[i].tel); }void del() /* 删除函数*/{int m=load();int i,j,n,t,flag;char name[20];printf("\n 原来的职工信息:\n");display();printf("\n");printf(" 请输入要删除的职工的姓名:\n");scanf("%s",name);for(flag=1,i=0;flag&&i<m;i++){if(strcmp(em[i].name,name)==0){printf("\n 已找到此人,原始记录为:\n");printf(" 职工号姓名性别年龄\n");printf("\n %-8d%-6s%-6c%-6d\n",em[i].num,em[i].name,em[i].sex,em[i].age);printf("\n 学历工资住址电话\n");printf("\n %-6s%-6d%-6s%-6s\n",em[i].xueli,em[i].wage,em[i].addr,em[i].tel);printf("\n 确实要删除此人信息请按1,不删除请按0\n"); scanf("%d",&n);if(n==1){for(j=i;j<m-1;j++){strcpy(em[j].name,em[j+1].name); em[j].num=em[j+1].num;em[j].sex=em[j+1].sex; em[j].age=em[j+1].age;strcpy(em[j].xueli,em[j+1].xueli);em[j].wage=em[j+1].wage;strcpy(em[j].addr,em[j+1].addr); strcpy(em[j].tel,em[j+1].tel);}flag=0;}}}if(!flag)m=m-1;elseprintf("\n 对不起,查无此人!\n");printf("\n 浏览删除后的所有职工信息:\n");save(m); /* 调用保存函数*/ display(); /* 调用浏览函数*/ printf("\n 继续删除请按1,不再删除请按0\n"); scanf("%d",&t);switch(t){case 1:del();break;case 0:break;default :break;}}void add()/* 添加函数*/{FILE*fp;int n;int count=0;int i;int m=load();printf("\n 原来的职工信息:\n"); display();printf("\n");fp=fopen("emploee_list","a");printf(" 请输入想增加的职工数:\n"); scanf("%d",&n);for (i=m;i<(m+n);i++){printf("\n 请输入新增加职工的信息:\n"); printf(" 请输入职工号: "); scanf("%d",&em[i].num);printf("\n");printf(" 请输入姓名: "); scanf("%s",em[i].name);getchar();printf(" 请输入性别(f-- 女m--男): "); scanf("%c",&em[i].sex);printf(" 请输入年龄: "); scanf("%d",&em[i].age); printf(" 请输入学历: ");scanf("%s",em[i].xueli); printf(" 请输入工资: "); scanf("%d",&em[i].wage);printf(" 请输入住址: ");scanf("%s",em[i].addr);printf(" 请输入电话: "); scanf("%s",em[i].tel);printf("\n"); count=count+1;printf(" 已增加的人数:\n"); printf("%d\n",count);}printf("\n 添加完毕!\n");m=m+count;printf("\n 浏览增加后的所有职工信息:\n"); printf("\n");save(m);display();fclose(fp);}void search()/* 查询函数*/{int t,flag;do{ printf("\n 按职工号查询请按1; 按学历查询请按2; 按电话号码查询请按3 ;进入主函数请按4\n");scanf("%d",&t); if(t>=1&&t<=4){flag=1;break;}else{flag=0;printf(" 您输入有误,请重新选择!");}}while(flag==0);while(flag==1){switch(t){ case 1:printf(" 按职工号查询\n");search_num();break;case 2:printf(" 按学历查询\n");search_xueli();break;case 3:printf(" 按电话号码查询\n");search_tel();break;case 4:main();break;default:break;}}}void search_num(){int num;int i,t;int m=load();printf(" 请输入要查找的职工号:\n");scanf("%d",&num);for(i=0;i<m;i++)if(num==em[i].num){ printf("\n 已找到此人,其记录为:\n");printf(" 职工号姓名性别年龄\n");printf("\n %-8d%-6s%-6c%-6d\n",em[i].num,em[i].name,em[i].sex,em[i].age); printf("\n 学历工资住址电话\n");printf("\n %-6s%-6d%-6s%-6s\n",em[i].xueli,em[i].wage,em[i].addr,em[i].tel); 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_xueli(){ char xueli[30];int i,t;int m=load();printf(" 请输入要查找的学历:\n"); scanf("%s",xueli);for(i=0;i<m;i++) if(strcmp(em[i].xueli,xueli)==0) {printf ("\n 已找到,其记录为:\n");printf(" 职工号姓名性别年龄\n");printf("\n %-8d%-6s%-6c%-6d\n",em[i].num,em[i].name,em[i].sex,em[i].age); printf("\n 学历工资住址电话\n");printf("\n %-6s%-6d%-6s%-6s\n",em[i].xueli,em[i].wage,em[i].addr,em[i].tel); } 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_tel(){ char tel[20];int i, t;int m=load();printf(" 请输入要查找的电话号码:\n");scanf("%s",tel);for(i=0;i<m;i++)if(strcmp(tel,em[i].tel)==0){printf("\n 已找到此人,其记录为:\n");printf(" 职工号姓名性别年龄\n");printf("\n %-8d%-6s%-6c%-6d\n",em[i].num,em[i].name,em[i].sex,em[i].age);printf("\n 学历工资住址电话\n");printf("\n %-6s%-6d%-6s%-6s\n",em[i].xueli,em[i].wage,em[i].addr,em[i].tel); 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 modify() /* 修改函数*/{int num;char name[20];char sex;int age;char xueli[30];int wage;char addr[30];char tel[20];int b,c,i,n,t,flag;int m=load();printf("\n 原来的职工信息:\n");display();printf("\n");printf(" 请输入要修改的职工的姓名:\n");scanf("%s",name);for(flag=1,i=0;flag&&i<m;i++){if(strcmp(em[i].name,name)==0){printf("\n 已找到此人,原始记录为:\n"); printf(" 职工号姓名性别年龄\n");printf("\n %-8d%-6s%-6c%-6d\n",em[i].num,em[i].name,em[i].sex,em[i].age);printf("\n 学历工资住址电话\n");printf("\n %-6s%-6d%-6s%-6s\n",em[i].xueli,em[i].wage,em[i].addr,em[i].tel);printf("\n 确实要修改此人信息请按1 ; 不修改请按0\n"); scanf("%d",&n);if(n==1){printf("\n 需要进行修改的选项\n 1.职工号2.姓名3.性别4.年龄5.学历6. 工资7.住址8.电话\n");printf(" 请输入你想修改的那一项序号:\n"); scanf("%d",&c);if(c>8||c<1)printf("\n 选择错误,请重新选择!\n");}flag=0;}}if(flag==1) printf("\n 对不起,查无此人!\n");do{switch(c) /* 因为当找到第i 个职工时,for 语句后i 自加了1,所以下面的应该把改后的信息赋值给第i-1 个人*/{case 1:printf(" 职工号改为: "); scanf("%d",&num);em[i-1].num=num; break; case 2:printf(" 姓名改为: ");scanf("%s",name); strcpy(em[i-1].name,name);break;case 3:printf(" 性别改为: ");getchar(); scanf("%c",&sex);em[i-1].sex=sex;break;case 4:printf(" 年龄改为: ");scanf("%d",&age);em[i-1].age=age; break; case 5:printf(" 学历改为: ");scanf("%s",xueli); strcpy(em[i-1].xueli,xueli);break; case 6:printf(" 工资改为: ");scanf("%d",wage);break; case 7:printf(" 住址改为: ");scanf("%s",addr); strcpy(em[i-1].addr,addr);break; case 8:printf(" 电话改为: ");scanf("%s",tel); strcpy(em[i-1].tel,tel);break;} printf("\n");printf("\n 是否确定所修改的信息?\n 是请按1 ; 不,重新修改请按2\n"); scanf("%d",&b);} while(b==2);printf("\n 浏览修改后的所有职工信息:\n"); printf("\n");save(m);display(); printf("\n 继续修改请按1,不再修改请按0\n");scanf("%d",&t); switch(t){case 1:modify();break;case 0:break; default :break; }}。