人事管理系统 c语言版

人事管理系统 c语言版

大家好,又见面了,我是全栈君,祝每个程序员都可以多学几门语言。

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 <stdio.h>
#include <stdlib.h>
#include <string.h>

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;
}


人事管理系统 c语言版

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/118218.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • vdbench的作用_vdbench

    vdbench的作用_vdbench一、vdbench安装1、安装java:java-version(vdbench的运行依赖于java)2、检测vdbench能够使用:进入vdbench相应目录下./vdbench-t来测试一下vdbench的可用性,如果正常,会在目录下自动生成一个output目录。root@node1:/home/vdbench/vdbench50406#./vdbench-t如果报错,则需修改vdb…

    2022年5月20日
    76
  • 微服务架构-实现技术之六大基础组件:服务通信+事件驱动+负载均衡+服务路由+API网关+配置管理

    微服务架构-实现技术之六大基础组件:服务通信+事件驱动+负载均衡+服务路由+API网关+配置管理微服务架构的实现首先需要提供一些基础组件,这些基础的功能性组件主要包括服务之间的通信、面向事件驱动的架构设计方法、负载均衡、服务路由、API网关和分布式配置中心等,我们对这六大基本组件进行初步的分析定案。一、服务通信:网络连接+IO模型+可靠性+同步与异步对于微服务而言,网络通信主要关注于网络连接、IO模型、可靠性设计及服务调用方式。1.网络连接一般,基于TCP网络连接有两种基本方…

    2022年4月27日
    71
  • golang面试题(带答案)[通俗易懂]

    golang面试题(带答案)[通俗易懂]1.下面代码输出什么,为什么 //make([]T,length,capacity) s1:=[]int{1,2,3} fmt.Println(s1,”哈哈”)//[123] s2:=s1 fmt.Println(s1,”哈哈”)//[123] fori:=0;i<3;i++{ s2[i]=s2[i]+1 } fmt.Println(s1)//[234] fmt.Println(s2)//[234][12

    2022年6月29日
    88
  • modis数据命名规则

    modis数据命名规则1. MOD是Terra星数据—-上午星;MYD是Aqua星数据—-下午星。2. Terra卫星原始数据命名规则>>>15位  A20040707140331.down                  A定义为Terra卫星;YYYY-MM-DD-HH-MM-SS(年-月-日-时-分-秒)

    2022年5月30日
    137
  • 自动化测试——unittest框架

    自动化测试——unittest框架自动化测试——unittest框架文章目录自动化测试——unittest框架unittest一、TestCase(测试用例)二、TestSuite(测试套件)和TestRunner(测试执行)三、TestLoader(测试加载)四、Fixture(测试夹具)4.1方法级别4.2类级别五、断言六、跳过七、数据驱动(unittestddt)八、测试报告8.1自带测试报告8.2生成第三方测试报告unittest1、什么是Unittest框架? python自带一种单元测试框架2、为什么使用Un

    2022年10月14日
    0
  • linux 命令:whereis详解

    linux 命令:whereis详解linux命令:whereis详解

    2025年7月8日
    6

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号