c语言 职工信息管理系统

 链表 + 文件

#include<stdio.h>
#include<string.h>
#include<stdlib.h>

typedef struct staff
{
	char num[20];     //职工号 
	char name[20];    //姓名
	char sex[5];      //性别
	char birthday[20];//出生日期 
	char study[20];	  //学历
	int salary;       //工资
	char live[20];    //住址
	char tel[20];     //电话 
	struct staff *next;
}STAFF;

STAFF *FindLast(STAFF *head);//查找尾节点  
void InsertLast(STAFF *head,STAFF *Pt);//在尾结点插入
STAFF *BuildHand(STAFF *head);//手动录入员工信息 
void *BuildFile(STAFF *head);//文件录入员工信息 
void Print(STAFF *head);//输出员工信息 
void SeekName(STAFF *head);//按姓名查找职员
void SeekNum(STAFF *head);//按职工号查找职员 
STAFF *Delete(STAFF *head);//删除员工信息 
void InsertJiaRu(STAFF *head);//插入职工信息; 
void *Change(STAFF *head);//修改员工信息 
void Save(STAFF *head); 
void menu();//菜单 

int main()
{
	STAFF *head = (STAFF*)malloc(sizeof(STAFF));
	head->next = NULL;
	int k;
	BuildFile(head);
	while(1) 
	{
		menu();
		scanf("%d", &k);
		switch(k) 
		{					
			case 1: head=BuildHand(head); break;															
			case 2: SeekName(head); break;											
			case 3: SeekNum(head); break;											
			case 4: head=Delete(head); break;							
			case 5: Change(head); break;
			case 6: Print(head); break;								
			case 0: printf("                            谢谢对本系统的使用!\n");
				Save(head);
				exit(0);
				break;
		}
            system("pause");  
 		    system("cls");     

	}

	printf("************************************谢谢使用************************************\n");
	return 0;
}

STAFF *FindLast(STAFF *head)//查找尾节点 
{
	STAFF *pr;
	pr = head;
	while(pr->next != NULL)
	{
		pr = pr->next;
	}
	return pr;
}
void InsertLast(STAFF *head,STAFF *Pt)//在尾结点插入 
{
	STAFF *prePt;
	prePt = FindLast(head);
	prePt->next = Pt;
	Pt->next = NULL;
}
void *BuildFile(STAFF *head)//文件录入员工信息 
{
	STAFF *prePt;
	char num[20];     //职工号 
	char name[20];    //姓名
	char sex[5];      //性别 
	char birthday[20];//出生日期 
	char study[20];	  //学历
	int salary;       //工资
	char live[20];    //住址
	char tel[20];     //电话 
	FILE *fp;
	fp=fopen("wenjian.txt","r");
	if(fp == NULL)
	{
		printf("Failed!\n");
	} 
	char check[20];
	while(fscanf(fp,"%s%s%s%s%s%d%s%s\n", num, name, sex, birthday, study, &salary, live, tel) != EOF)
	{
		STAFF *Pt = (STAFF*)malloc(sizeof(STAFF));
		strcpy(Pt->num, num);
		strcpy(Pt->name, name);
		strcpy(Pt->sex, sex);
		strcpy(Pt->birthday, birthday);
		strcpy(Pt->study, study);
		Pt->salary = salary;
		strcpy(Pt->live, live);
		strcpy(Pt->tel, tel);
		InsertLast(head, Pt);
	} 
	fclose(fp);
}
STAFF *BuildHand(STAFF *head)//手动录入员工信息 
{
	int num;
	printf("请输入需要录入信息的员工数量:");
	scanf("%d", &num);
	STAFF *Pt, *prePt;
	Pt = (STAFF*)malloc(sizeof(STAFF));
	if(Pt!=NULL)
	{
		printf("请输入职工号:");
		scanf("%s", Pt->num); 
		printf("请输入员工姓名:");
		scanf("%s", Pt->name);
		printf("请输入员工性别:");
		scanf("%s", Pt->sex);
		printf("请输入员工出生日期:");
		scanf("%s", Pt->birthday);
		printf("请输入员工学历:");
		scanf("%s", Pt->study);
		printf("请输入员工工资:");
		scanf("%d", &Pt->salary);
		printf("请输入员工住址:");
		scanf("%s", Pt->live);
		printf("请输入员工电话:");
		scanf("%s", Pt->tel);
		prePt = FindLast(head);
		prePt->next = Pt;
		Pt->next = NULL;
	}
	else
	{
		printf("Failed!\n");
		exit(0);
	}
	for(int i = 1; i < num; i ++)
	{
		Pt = (STAFF*)malloc(sizeof(STAFF));
		if(Pt != NULL)
		{
			printf("请输入职工号:");
			scanf("%s", Pt->num); 
			printf("请输入员工姓名:");
			scanf("%s", Pt->name);
			printf("请输入员工性别:");
			scanf("%s", Pt->sex);
			printf("请输入员工出生日期:");
			scanf("%s", Pt->birthday);
			printf("请输入员工学历:");
			scanf("%s", Pt->study);
			printf("请输入员工工资:");
			scanf("%d", &Pt->salary);
			printf("请输入员工住址:");
			scanf("%s", Pt->live);
			printf("请输入员工电话:");
			scanf("%s", Pt->tel);
			InsertLast(head, Pt);
		}
		else
		{
			printf("Failed!\n");
			exit(0);
		}
	}
	return head;
}
void Print(STAFF *head)//输出员工信息 
{
	STAFF *p = head;
	if(p->next == NULL)
	{
		printf("没有职工信息可以输出!\n");
	}
	else
	{
		p = p->next;
		printf("\n职工号\t姓名\t性别\t出生日期\t学历\t工资\t住址\t电话号码\n");
		while(p != NULL) 
		{		
			printf("%s\t%s\t%s\t%s\t%s\t%d\t%s\t%s\n", p->num, p->name, p->sex, p->birthday, p->study,
			p->salary, p->live, p->tel);
			p=p->next;
		}
	}
}
void SeekName(STAFF *head)//按姓名查找职员 
{
	STAFF *Pt = head;
	char na[20];
	printf("\n请输入查找职员的姓名:\n");
	scanf("%s", na);
	while(strcmp(Pt->name, na) != 0 && Pt->next != NULL)
	{
		Pt = Pt->next;
	}
	if(strcmp(Pt->name, na) == 0)
	{
		printf("\n职工号\t姓名\t性别\t出生日期\t学历\t工资\t住址\t电话号码\n");
		printf("%s\t%s\t%s\t%s\t%s\t%d\t%s\t%s\n", Pt->num, Pt->name, Pt->sex, Pt->birthday, Pt->study,
		Pt->salary, Pt->live, Pt->tel);
	}
	else 
	{
		printf("\n未查找到该员工!\n");
	}
}
void SeekNum(STAFF *head)//按工号查找职员 
{
	STAFF *Pt = head;
	char nu[20];
	printf("请输入查找职工的职工号:\n");
	scanf("%s", nu);
	while(strcmp(Pt->num,nu) != 0 && Pt->next != NULL)
	{
		Pt = Pt->next;
	}
	if(strcmp(Pt->num, nu) == 0)
	{
		printf("\n职工号\t姓名\t性别\t出生日期\t学历\t工资\t住址\t电话号码\n");
		printf("%s\t%s\t%s\t%s\t%s\t%d\t%s\t%s\n", Pt->num, Pt->name, Pt->sex, Pt->birthday, Pt->study,
		Pt->salary, Pt->live, Pt->tel);
	}
	else
	{
		printf("\n未查找到该员工!\n");
	}
} 
void InsertJiaRu(STAFF *head)//插入职工信息; 
{
	STAFF *Pt = (STAFF*)malloc(sizeof(STAFF));
	printf("请输入职工号:");
	scanf("%s", Pt->num); 
	printf("请输入员工姓名:");
	scanf("%s", Pt->name);
	printf("请输入员工性别:");
	scanf("%s", Pt->sex);
	printf("请输入员工出生日期:");
	scanf("%s", Pt->birthday);
	printf("请输入员工学历:");
	scanf("%s", Pt->study);
	printf("请输入员工工资:");
	scanf("%d", &Pt->salary);
	printf("请输入员工住址:");
	scanf("%s", Pt->live);
	printf("请输入员工电话:");
	scanf("%s", Pt->tel);
	InsertLast(head, Pt);
}
STAFF *Delete(STAFF *head)//删除员工信息 
{
	STAFF *Pt = head, *nowPt = NULL;
	char nu[20];
	if(Pt == NULL)
	{
		printf("\n现在没有职工信息可以删除!\n");
	}
	printf("\n请输入你要删除的职工号:\n");
	scanf("%s", nu);
	if(strcmp(Pt->num, nu) == 0)
	{
		head = head->next;
		free(Pt);
		printf("删除成功!\n");
	}
	while(Pt->next != NULL)
	{
		if(strcmp(Pt->next->num, nu) == 0)
		{
			nowPt = Pt->next;
			Pt->next = Pt->next->next;
			free(nowPt);
			break;
		}
		Pt = Pt->next;
	}
	return head;
}
void *Change(STAFF *head)//修改员工信息 
{
	STAFF *Pt = head;
	printf("\n请输入密码:\n");
	char mi[20];
	scanf("%s",mi);
	if(strcmp(mi,"123456")==0)
	{
		printf("密码正确!\n");
		char nu[20];
		printf("请输入要修改的职工的职工号:");
		scanf("%s", nu);
		while(strcmp(Pt->num, nu) != 0 && Pt->next != NULL)
		{
			Pt = Pt->next;
		}
		if(strcmp(Pt->num, nu) == 0)
		{
			printf("请输入职工号:");
			scanf("%s", Pt->num); 
			printf("请输入员工姓名:");
			scanf("%s", Pt->name);
			printf("请输入员工性别:");
			scanf("%s", Pt->sex);
			printf("请输入员工出生日期:");
			scanf("%s", Pt->birthday);
			printf("请输入员工学历:");
			scanf("%s", Pt->study);
			printf("请输入员工工资:");
			scanf("%d", &Pt->salary);
			printf("请输入员工住址:");
			scanf("%s", Pt->live);
			printf("请输入员工电话:");
			scanf("%s", Pt->tel);
		}
		else
		{
			printf("\n未找到职工\n");
		}
	}
	else
	{
		printf("密码错误!\n"); 
	}
}
void Save(STAFF *head)
{
	FILE *fp;
	fp = fopen("wenjian.txt","w+");
	STAFF *p = head->next;
	if(p != NULL)
	{
		while(p != NULL)
		{
			fprintf(fp, "%s %s %s %s %s %d %s %s\n", p->num, p->name, p->sex, p->birthday, p->study, p->salary, p->live, p->study);
			p = p->next;
		}
	}
	else
	{
		printf("没有信息可以存入!\n");
	}
	fclose(fp);
}
void menu()//菜单 
{
	printf("    -----------------------------------------------------------------------\n");
	printf("\t\t\t     欢迎使用职工管理系统\n");
	printf("\t---------------------------------------------------------------\n");
	printf("\t\t\t     1.手动录入职工信息。\n");
	printf("\t\t\t     2.按姓名查询职工信息。\n");
	printf("\t\t\t     3.按职工号查询职工信息。\n");
	printf("\t\t\t     4.删除职工信息。\n");
	printf("\t\t\t     5.修改职工信息。\n");
	printf("\t\t\t     6.输出职工信息。\n");
	printf("\t\t\t     0.保存并退出。\n");
	printf("--------------------------------------------------------------------------------\n");
	printf("\t\t\t     选择对应编号:");

}

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值