人事管理系统 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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 怎么获取枚举的值_枚举是值类型吗

    怎么获取枚举的值_枚举是值类型吗最近在做一个学校的系统,其中用到一些枚举,可是在显示下拉列表时要绑定枚举的描述及其枚举值时就只一个一个的默认设死,这样不灵活。有没有其快捷方法?搜了下百度很多相关资料有了些许眉目,代码如下1.首先定

    2022年8月3日
  • 基于php教师档案管理系统毕业设计

    基于php教师档案管理系统毕业设计获取项目源文件,联系Q:1415736481,可指导毕设,课设随着经济的发展和社会的进步,高校的现代化管理逐渐被人们所重视,利用计算机对高校的管理在各个领域中都有广阔的发展空间和前景。高校教师档案管理系统的设计与实现对高等院校的决策者和管理者来说至关重要,对教育系统来说更是不可缺少的。本系统采用PHP语言和MySQL数据库等技术,基于B/S模式,根据管理员、教务处管理员、教师三种不同的用户权限…

    2022年10月29日
  • vuex使用教程(最好最详细的乒乓教程)

    最详细的Vuex教程什么是Vuex?vuex是一个专门为vue.js设计的集中式状态管理架构。状态?我把它理解为在data中的属性需要共享给其他vue组件使用的部分,就叫做状态。简单的说就是data中需要共用的属性。引入Vuex(前提是已经用Vue脚手架工具构建好项目)1、利用npm包管理工具,进行安装vuex。在控制命令行中输入下边的命令就可以了。npminstallvuex

    2022年4月14日
  • dede后台登陆后一片空白的解决办法汇总

    dede后台登陆后一片空白的解决办法汇总

    2021年9月19日
  • 什么软件可以激活成功教程网址_bya意思

    什么软件可以激活成功教程网址_bya意思国内激活成功教程站点大全![http://blog.csdn.net/netxiaoyue/archive/2005/01/29/273559.aspx]国内激活成功教程站点大全!(强烈推荐)【8DD资源中心】-http://www.18dd.com/精品软件秀-http://www.ohsoft.com/163软件园-http://www.soft163.com/中华激活成功教程联盟

    2022年9月16日
  • 如何用python刷屏_利用python实现在微信群刷屏的方法[通俗易懂]

    hello,我是小小炽,这是我写的第一篇博客,写博客一直都想在写,但是苦于能力尚浅,在各位大牛面前那既然是关公面前耍大刀了,但是其实想来每一个大牛不也是从一个小白慢慢进步学习从而达到一定的高度的吗,而且写博客的意义但不在于炫耀你的成果,而在于分享,听取他人的建议,互相学习,因此我下定决心,每天写一篇博客,不管是小项目还是学习笔记,至少坚持下来,我想一定会有所收获的。好,废话不多说,今天我写的是如何…

    2022年4月15日

发表回复

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

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