博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
人事管理系统 c语言版
阅读量:5220 次
发布时间:2019-06-14

本文共 4997 字,大约阅读时间需要 16 分钟。

int menu(){
printf("请按提示输入完毕操作!\n");  
printf("1.查询员工信息\n");  
printf("2.统计员工数量\n");  
printf("3.录入员工信息\n");  
printf("4.删除员工信息\n");  
printf("5.按id排序全部员工\n"); 
printf("6.打印全部员工信息\n");
printf("7.退出系统\n");   
return 0;

}

如menu()函数所看到的,该系统一共同拥有7个功能

#include 
#include
#include
struct emp{ int id; char name[50]; struct emp * next;// struct emp * prev;};struct emp * initList();struct emp * addListTailNode(struct emp * head);struct emp * deleteListNode(struct emp * head,int id);struct emp * searchEmp(struct emp * head,int id);int printList(struct emp * l);int printNode(struct emp * p);struct emp * sortList(struct emp * head);int getListLen(struct emp * head);int writeToDisk(struct emp * head);struct emp * readFromDisk();int menu();int usage(struct emp * head);

#include "emp.h"int main(){	struct emp * head;	head=readFromDisk();	usage(head);	return 0;}struct emp * initList(){	struct emp * head;	head=(struct emp *)malloc(sizeof(struct emp));	head->next=NULL;	return head;}struct emp * addListTailNode(struct emp * head){  	int id;  	char name[50];   	struct emp * p, * last , * check;  	last = head;  	while(last->next!=NULL){  		last=last->next;  	}  	printf("依次输入:员工id号,姓名!\n");  	scanf("%d%s",&id,&name);  	check = head;  	while(check!=last){  //遍历 		check=check->next;		if(id==check->id){  			printf("加入�失败!员工id号反复!\n");  			return head;  		}  	}  	p=(struct emp *)malloc(sizeof(struct emp));   	p->id=id;  	strcpy(p->name,name);  	//	last->next=p;    	last=p;    	p->next=NULL;  	printf("%s员工信息已加入�!\n",p->name);  	return head;  }  struct emp * deleteListNode(struct emp * head,int id){  	struct emp * p,* q;  	p = head->next;  	while(p!=NULL){  		if(p->next->id==id){  			break;  		}  		p=p->next;  	}  	if(head->next==NULL){  		printf("书籍信息为空!删除失败!\n");  	}  	else{    		q = p->next;		p->next = q->next;		printf("%s书籍信息被删除!\n",q->name); 		free(q);  	}  	return head;  }  struct emp * searchEmp(struct emp * head,int id){//查询,返回节点信息  	struct emp * p;  	p = head->next;  	while(p!=NULL){  		if(p->id==id){  			break;  		}  		p=p->next;  	}  	return p;  } int printNode(struct emp * p){//打印节点信息  	if(p!=NULL){  		printf("员工id: %d    员工姓名:%s\n",p->id,p->name);  	}  	else{  		printf("系统内无该员工信息!\n");  	}  	return 0;  }  int printList(struct emp * head){  //打印整条链表	struct emp * p;  	p = head->next;  	while(p!=NULL){  		printNode(p);  		p=p->next;  	}  	return 0;  }  struct emp * sortList(struct emp * head){//排序	struct emp * p,* q;	int temp_id;	char temp_name[50];	for(p=head->next;p!=NULL;p=p->next){		for(q=p->next;q!=NULL;q=q->next){			if(p->id>q->id){				temp_id = q->id;				q->id = p->id;				p->id = temp_id;				//				strcpy(temp_name,q->name);				strcpy(q->name,p->name);				strcpy(p->name,temp_name);			}		}	}	return head;}int getListLen(struct emp * head){	int len=0;	struct emp * p;	p=head->next;	while(p!=NULL){		len++;		p=p->next;	}	return len;}int writeToDisk(struct emp * head){	FILE * fp;	struct emp * p;	if((fp = fopen("D:\\emp.hhtx", "w")) == 0){		printf("写入失败……!\n");		return 0;	}	//	p=head->next;	while(p!=NULL){		fwrite(p,sizeof(struct emp),1,fp);		printf("%d  %s\n",p->id,p->name);		p=p->next;	}	fclose(fp);	return 0;}struct emp * readFromDisk(){	FILE * fp;  	struct emp * head,* last,* p,* temp;	head = initList();	if((fp = fopen("D:\\emp.hhtx", "r")) == 0){		printf("载入失败……未找到存档数据!\n\n");		return head;	}	//	last = head;  	p=(struct emp *)malloc(sizeof(struct emp));  	while(p!=NULL){		p=(struct emp *)malloc(sizeof(struct emp));  		fread(p,sizeof(struct emp),1,fp);		printf("读取数据: %d  %s\n",p->id,p->name); 		//		last->next=p;            last=p;    		p=p->next;	}	fclose(fp);	printf("系统数据初始化完毕!");	return head;}int menu(){	printf("请按提示输入完毕操作!\n");  	printf("1.查询员工信息\n");  	printf("2.统计员工数量\n");  	printf("3.录入员工信息\n");  	printf("4.删除员工信息\n");  	printf("5.按id排序全部员工\n"); 	printf("6.打印全部员工信息\n");	printf("7.退出系统\n");   	return 0;}int usage(struct emp * head){	int x,id;   	struct emp * p;	menu();	while(1){  		printf("请输入序列号:");  		scanf("%d",&x);  		switch(x){  		case 1:  			printf("输入所要查询的员工的id号:");  			scanf("%d",&id);  			p = searchEmp(head,id);  			printNode(p);  			printf("---------------------------------\n");  			break; 		case 2:			printf("系统中一共存在%d个员工\n",getListLen(head));			break;		case 3:   			head=addListTailNode(head);  			printf("---------------------------------\n");  			break;  		case 4:  			printf("输入所要删除的员工的id号:");  			scanf("%d",&id);  			head=deleteListNode(head,id);  			printf("---------------------------------\n");  			break; 		case 5:			printf("排序開始……\n");			head=sortList(head);			printf("排序已完毕!\n");			printf("---------------------------------\n");  			break;		case 6:  			printList(head);  			printf("---------------------------------\n");  			break;  		case 7:    			writeToDisk(head);			printf("保存完毕……\n");			printf("已退出系统!\n");  			printf("---------------------------------\n"); 			return 0; 		default:			return 0;  		}  	}  	return 0;}

转载于:https://www.cnblogs.com/yxwkf/p/4033633.html

你可能感兴趣的文章
关于 ++x 和 x++ 比较难的一个例子
查看>>
第三次作业 105032014021
查看>>
记录一些容易忘记的属性 -- UILabel
查看>>
android新手关于左右滑动的问题,布局把<android.support.v4.view.ViewPager/><ImageView/> 放在上面就不行了。...
查看>>
人脸识别FaceNet+TensorFlow
查看>>
STL之map UVa156
查看>>
从Angular.JS菜鸟到专家
查看>>
再谈Vmware NAT的配置和路由流程
查看>>
javaScript数组去重方法汇总
查看>>
评价意见整合
查看>>
MySQL表的四种分区类型
查看>>
C++变量的“总分性”(Mereology)
查看>>
应用软件学习心得之mapgis功能学习
查看>>
二、create-react-app自定义配置
查看>>
Android PullToRefreshExpandableListView的点击事件
查看>>
JS之放大镜效果
查看>>
基于UML网络教学管理平台模型的搭建
查看>>
不同的色深条件(8、16、24、32),像素绘制方式
查看>>
二分法原理
查看>>
push指令的执行过程
查看>>