职工信息管理系统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语言-职工信息管理系统
1.设计目的设计目的是:1) 为了能够方便的对职工的信息进行管理,对职工信息进行输入、排序、查找、删除、修改等功能的实现。
2) 基本掌握面向过程程序设计的基本思路和方法,达到熟练掌握C语言的基本知识和技能,能够利用所学的基本知识和技能,解决简单的程序设计问题。
3) 培养了上机动手能力,使学生巩固《C语言程序设计》课程学习的内容,掌握如何使用面向过程的计算机语言进行程序设计的基本方法,强化上机动手能力,闯过编程关,为后续各门计算机课程的学习打下坚实基础。
2.总体设计该系统包括数据录入、排序、删除、查询、修改等功能模块,每个模块在程序系统中用一个函数来实现,系统总体框图如图1所示。
图1 系统框图3.详细设计1)结构体数组struct staff:建立结构体数组来存放职工号、姓名、年龄、学历等;2)数据输出函数output:输出所输入的数据;3)数据输入函数intput:输入相关的数据;4)修改函数modify:对职工信息进行修改,然后输出;5)查询函数search:输入一个工号,输出其信息;6)删除函数delete:按输入的工号删除该职工,然后输出剩余职工的信息;7)主函数main:编辑出菜单,对各个函数进行调用,实现各项功能;4.程序调试程序调试正常。
5.源程序清单(1)源程序:#include<stdio.h>struct staff{char name[8];char num[10];char sex[10];char age[10];char record[10];char position[15];char wanges[10];char tel[15];char addr[50];}worker; /*定义一个结构体*/char filename[20]; /*文件名*/ FILE *fp;void creat(); /*定义一个创建函数*/void output(); /*定义一个输出信息的函数*/ void search(); /*定义一个查询的函数*/void append(); /*定义一个添加函数*/void modify(); /*定义一个修改函数*/void delete(); /*定义一个删除函数*/void exit();/*定义一个输出函数*/void main() /*主函数*/{int m;creat(); /*先调用creat函数*/while(1){printf("\n\n添加,请按1");printf("\n查找,请按2");printf("\n修改,请按3");printf("\n删除,请按4");printf("\n输出,请按5");printf("\n退出,请按0\n"); /*输出提示信息*/ scanf("%d",&m);if(m>=0&&m<=5){switch(m){case 1: append();break;case 2: search();break;case 3: modify();break;case 4: delete();break;case 5: output();break;case 0: exit();}printf("\n\n操作完毕,请再次选择!");}elseprintf("\n\n选择错误,请再次选择!");}}void creat() /*被调用的creat函数*/{struct staff one;printf(" ———————《职工信息管理系统》———————");printf("∣☆☆管理工程系电子商务专业☆☆∣");printf("∣→☆☆☆Maxwei☆☆☆←∣");printf(" -————————————————————————");printf("\n请输入保存员工信息的文件名:");scanf("%s",filename); /*创建一个文件的名字*/if((fp=fopen(filename,"w"))==NULL) /*打开文件,实现向文件输入数据*/{printf("\n不能建立!");exit();}fprintf(fp,"%-10s%-8s%-5s%-5s%-10s%-8s%-8s%-10s%-15s\n","姓名","工号","性别","年龄","学历","职位","工资","电话号码","住址");printf("\n请输入职工信息(以0结束)\n");printf("姓名:\n");scanf("%s",);while(strcmp(,"0")){printf("工号:\n");scanf("%s",one.num);printf("性别:\n");scanf("%s",one.sex);printf("年龄:\n");scanf("%s",one.age);printf("学历:\n");scanf("%s",one.record);printf("职位:\n");scanf("%s",one.position);printf("工资:\n");scanf("%s",one.wanges);printf("电话:\n");scanf("%s",one.tel);printf("住址:\n");scanf("%s",one.addr); /*输出职工的相关信息*/fprintf(fp,"%-10s%-8s%-5s%-5s%-10s%-8s%-8s%-10s%-15s\n",,one.num,one.sex,one.age,on e.record,one.position,one.wanges,one.tel,one.addr);scanf("%s",);}fclose(fp); /*关闭文件*/}void output() /*输出函数*/{struct staff one;if((fp=fopen(filename,"r"))==NULL) /*打开文件*/{printf("\n不能打开该文件!");exit();}printf("\n\n%20s\n","职工信息管理系统");/*向文件输入数据*/while(!feof(fp)){fscanf(fp,"%s%s%s%s%s%s%s%s%s\n",,one.num,one.sex,one.age,one.record,one.position,o ne.wanges,one.tel,one.addr);printf("%-10s%-8s%-5s%-5s%-10s%-8s%-8s%-10s%-15s\n",,one.num,one.sex,one.age,one.re cord,one.position,one.wanges,one.tel,one.addr);}fclose(fp);/*关闭文件*/}void append() /*添加函数*/{struct staff one;if((fp=fopen(filename,"a"))==NULL) /*打开文件*/{printf("\n不能打开该文件!");exit();}printf("\n请输入添加职工信息(姓名、工号、性别、年龄、学历、职位、工资、电话、地址)\n");/*向文件中输入数据*/scanf("%s%s%s%s%s%s%s%s%s",,one.num,one.sex,one.age,one.record,one.position,one.wan ges,one.tel,one.addr);fprintf(fp,"%-10s%-8s%-5s%-5s%-10s%-8s%-8s%-10s%-15s\n",,one.num,one.sex,one.age,on e.record,one.position,one.wanges,one.tel,one.addr);fclose(fp); /*关闭文件*/}void search() /*查询函数*/{int k=0;char namekey[8];struct staff one;printf("\n请输入您要查找的职工姓名:");scanf("%s",namekey);if((fp=fopen(filename,"rb"))==NULL) /*打开文件*/{printf("\n不能打开文件!");exit();}while(!feof(fp)){fscanf(fp,"%s%s%s%s%s%s%s%s%s\n",,one.num,one.sex,one.age,one.record,one.position,o ne.wanges,one.tel,one.addr);if(!strcmp(namekey,)){printf("\n\n已查到,记录为:");printf("\n%-10s%-8s%-5s%-5s%-10s%-8s%-8s%-10s%-15s\n",,one.num,one.sex,one.age,one. record,one.position,one.wanges,one.tel,one.addr);k=1;}}if(!k)printf("\n\n对不起,查无此人!。
员工管理系统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 <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实现的职工信息管理系统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语言
#include<stdio.h>#include<string.h>#include<stdlib.h>#include<conio.h>#include<time.h>#define N 100#define PRINT "\n%5d|%8s|%10.2f|%10.2f|%8.2f|%8.2f|%10.2f|%10.2f ",em[i].num,em[i].name,em[i].basicsalary,em[i].benefit,em[i].waterfare,em[i].electricityfare,em[i]. shouldpay,em[i].actualpay#define TOTAL1 em[i].basicsalary+em[i].benefit#define TOTAL2 TOTAL1-em[i].waterfare-em[i].electricityfare-em[i].personalstruct clerk{int num; //ID号char name[20]; //姓名double basicsalary; //基本工资double benefit; // 津贴double waterfare; //水费double electricityfare; //电费double actualpay; //实发工资double shouldpay; //应发工资double personal; //个人所得税}em[N];void menu();void input();void save(int);void display();void del();void add();void search();void search_num();void search_name();void modify();void arrange();void sta();unsigned int password();void start(); /*定义各函数*/void start() //开始界面{printf("\n\n\n\n\n\n");system("color 06");//黄色字体printf("************************************************************************* *********");printf("**********************************");printf("*******************欢迎使用职工工资管理模拟系统*********************");printf("***************************************");printf("************************************************************************\ n\n\n\n\n");printf("\t\t\t ***请按任意键进入***\n");}void menu() //菜单界面{system("cls");printf("\t\t\t\t***菜单***\n\n");printf("|~~~~~~~~~~~~~~~~~~~~~~~~ \t\t\t 1 输入~~|\n");printf("| 小贴士: 2 显示|\n");printf("| 请按说明 3 查找|\n");printf("| 进行操作 4 删除|\n");printf("| 5 添加|\n");printf("| 6 修改|\n");printf("| 7 统计|\n");printf("| 8 排序|\n");printf("|________________________ \t\t\t 9 退出___|\n");printf("说明:\n *如首次使用尚未输入数据请先输入数据\n *输入的数据将自动保存\n *再次选择输入功能时原数据将被覆盖,此时可选添加加入职工\n\n");}unsigned int password()//密码模块{char a1[20],a2[20],a3[20];int i,j;FILE *fp1;time_t start,end;if((fp1=fopen("D:\\password.dat","rb"))==NULL)//无密码文件,设置密码。
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语言课程设计职工信息管理系统单链实现程序源代码
//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 100struct 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(" ◆◆◆删除职工信息◆◆◆\n");printf("\n");del();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(" ********************谢谢使用******************\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",&em[i].num);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");}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);}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; }}。