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


相关推荐

  • 读完了csapp(中文名:深入理解计算机系统)

    读完了csapp(中文名:深入理解计算机系统)

    2021年12月7日
    46
  • 数据结构——线索化二叉树和哈夫曼树[通俗易懂]

    数据结构——线索化二叉树和哈夫曼树[通俗易懂]线索化二叉树和哈夫曼树基础知识介绍与代码分析一、基础知识介绍二、代码分析:线索二叉树(采用中序遍历)#include “pch.h”#include <iostream>using namespace std;//定义线索二叉树typedef struct Tree{ int data, LTag, RTag; //定义数据域与标记域 Tre…

    2022年8月18日
    10
  • angular5面试题_大数据面试题

    angular5面试题_大数据面试题Angular更新还是非常快的,目前(2020)的速度是每年2个主版本。网上也有不少面试题,不过很多都是针对老的版本,尤其是AngularJS的。因为最近在看Angular的面试题,所以特意总结一下。下面内容都是基于Angularv8.0以上的。顺便科普一下,Angular最早期的版本,也叫AnugularJS,使用javascript开发;新的版本,才叫Angular,也称为Angular2,使用typescript开发,Angular和AngularJS是不兼容的(当然也有2个版本的集成方案)。

    2022年10月18日
    2
  • 数据结构与算法经典书籍——大话数据结构(带配套源码)

    数据结构与算法经典书籍——大话数据结构(带配套源码)书本下载链接:链接:https://pan.baidu.com/s/1jgVnbBZoLgA8pshpxbapOQ密码:577l配套程序链接:https://pan.baidu.com/s/1HYka42KngWT2el7T0HO7LA密码:i6hw虽说数据结构以美国人MarkAllenWeiss写的《数据结构与算法分析——C语言实现》最好,但是我发现他的书让人很不容易理解,可能我们…

    2022年6月3日
    55
  • javascript返回上一步,后退的代码

    javascript返回上一步,后退的代码第一种方法:<ahref=”javascript:history.go(-1)”>返回上一步</a><ahref=”javascript:”οnclick=”history.back();”>返回上一页</a>第二种方法:<scriptlanguage=”javascript”>window.history.back(-1);</script>…

    2022年7月25日
    8
  • java解析url的链接和参数_java根据url下载图片

    java解析url的链接和参数_java根据url下载图片方法一Blob和FileReader对象实现原理:使用xhr请求图片,并设置返回的文件类型为Blob对象[xhr.responseType=“blob”],使用FileReader对象接收blob。getBase64(“https://fastmarket.oss-cn-shenzhen.aliyuncs.com/oss/static/other/1/images/baseMap_index.jpg”)//链接是你的网络图片functiongetBase64(imgUrl){

    2022年9月2日
    2

发表回复

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

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