weixin_58730152
2021-06-11 10:00
采纳率: 100%
浏览 36

企业员工管理系统的输出模块

可以根据工号,姓名,年龄,工作查询输出员工信息,也可排序输出员工信息,员工信息有,姓名,年龄,性别,工作,工号,入职时间,工资,电话

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

4条回答 默认 最新

  • CSDN专家-sinjack 2021-06-11 10:09
    已采纳

    如有帮助望采纳,点击我回答右上角的【采纳】按钮。

    #include<stdio.h> 
    #include<stdlib.h>  
    #include<string.h>
    struct workers
    {
    	char jobNo[15];       //职工号
    	char name[15];        //姓名
    	char sex[15];         //性别
    	char birthday[15];    //出生年月
    	char degree[15];      //学历
    	char position[15];    //职务 
    	char salary[15];      //工资 
    	char addr[15];        //住址 
    	char tel[15];         //电话 
    };
     
    //类型定义语句  
    typedef struct node
    {
    	struct workers data;
    	struct node *next;
    }Node;
     
    //添加信息函数     "尾插法建表"
    void Add(Node *worker)
    {
    	Node *p, *q;
    	char n[10]; 
    	q = worker; 
    	while (q->next != NULL)
    	{
    		q = q->next;     
    	}
    	while (1)
    	{
    		printf("提示:输入0返回主菜单!\n");
    		printf("请输入职工号:");
    		scanf("%s", n);
    		if (strcmp(n, "0") == 0)
    		{
    			break;
    		}
    		p = (Node *)malloc(sizeof(Node));
    		strcpy(p->data.jobNo, n);
    		
    		printf("请输入姓名:");
    		scanf("%s", p->data.name);
    		printf("请输入性别:");
    		scanf("%s", p->data.sex);
    		printf("请输入出生年月:");
    		scanf("%s", p->data.birthday);
    		printf("请输入学历:");
    		scanf("%s", p->data.degree);
    		printf("请输入职务:");
    		scanf("%s", p->data.position);
    		printf("请输入工资:");
    		scanf("%s", p->data.salary);
    		printf("请输入住址:");
    		scanf("%s", p->data.addr);
    		printf("请输入电话:");
    		scanf("%s", p->data.tel);
    		printf("提示:已经完成一条记录的添加!");
    		p->next = NULL;
    		q->next = p;      
    		q = p;        
    	}
    }
     
    //修改职工信息函数
    int  change(Node *worker)
    {
    	Node *p;
    	char find[20];   
    	p = worker->next;   
    	if (p == NULL)
    	{
    		printf("\n提示:没有资料可以修改!\n");
    		return 0;
    	}
    	
    	printf("请输入要修改的职工号");
    	scanf("%s", find);
    	while (p != NULL) 
    	{
    		if (strcmp(p->data.jobNo, find) == 0)
    		{
    			break;
    		}
    		p = p->next;
    	}
    	
    	if (p!=NULL)
    	{
    		int x;
    		while (1)
    		{
    			printf("完成修改请输入0,否则输入非0数字进行修改!");
    			scanf("%d", &x);
    			if (x == 0)
    			{
    				break;
    			}
    			printf(" 请输入新职工号: ");
    			scanf("%s", p->data.jobNo);
    			printf(" 请输入新职工姓名: ");
    			scanf("%s", p->data.name);
    			printf(" 请输入新职工性别: ");
    			scanf("%s", p->data.sex);
    			printf(" 请输入新职工出生年月: ");
    			scanf("%s", p->data.birthday);
    			printf(" 请输入新职工学历: ");
    			scanf("%s", p->data.degree);
    			printf(" 请输入新职工职务: ");
    			scanf("%s", p->data.position);
    			printf(" 请输入新职工工资: ");
    			scanf("%s", p->data.salary);
    			printf(" 请输入新职工住址: ");
    			scanf("%s", p->data.addr);
    			printf(" 请输入新职工电话: ");
    			scanf("%s", p->data.tel);
    			printf(" \n提示:该职工资料已经修改!\n ");
    		}
    	}
    	else 
    		printf("\n提示:没有你要修改的资料!\n ");
    }
     
    //输出职工信息函数
    int  Disp(Node *worker)
    {
    	Node *p;
    	p = worker->next;
    	if (p == NULL)
    	{
    		printf(" \n提示:没有信息可以显示!\n ");
    		return 0;
    	}
    	printf("\t\t\t\t显示结果\n");
    	printf(" \n职工号   姓名	性别	出生年月    学历	职务	工资	住址	电话	\n ");
    	while (p!=NULL)  
    	{
    		printf("\n %s\t %s\t %s\t %s\t %s\t %s\t %s\t %s\t %s\t\n ", p->data.jobNo, p->data.name,
    			p->data.sex, p->data.birthday, p->data.degree, p->data.position,
    			p->data.salary, p->data.addr, p->data.tel);
    		p = p->next;
    	}
    }
     
    //查询职工信息函数: 按职工号查询	按职工姓名查询
    int  Cha_xun(Node *worker)
    {
    	Node *p;
    	int sel;
    	char find[20];	
    	p = worker->next;   
    	if (p==NULL) 
    	{
    		printf(" \n提示:没有资料可以查询!\n ");
    		return 0;
    	}
    	printf("\n提示:\n 输入 0---- 退出\t 输入 1----按职工号查询\t 输入 2-----按职工姓名查询\n");
    	printf("请选择:");
    	scanf("%d", &sel);
    	if (sel == 1)
    	{
    		printf("\n请输入你要查询分类的职工号:");
    		scanf("%s", find);
    		while (p!=NULL)  
    		{
    			if (strcmp(p->data.jobNo, find) == 0)
    			{
    				printf(" 职工号	  姓名  	性别	出生年月	学历	职务	工资	住址	电话 \n ");
    				printf(" \n %s\t %s\t %s\t %s\t %s\t %s\t %s\t %s\t %s\t\n ", p->data.jobNo, p->data.name,
    					p->data.sex, p->data.birthday, p->data.degree, p->data.position,
    					p->data.salary, p->data.addr, p->data.tel);
    			}
    			p = p->next;   
    		}
    	}
    	else if (sel == 2)
    	{
    		printf(" \n输入你要查询分类的职工姓名:");
    		scanf("%s", find);
    		while (p!=NULL)
    		{
    			if (strcmp(p->data.name, find) == 0) 
    			{
    				printf(" 职工号		姓名	性别	出生年月	学历	职务	工资	住址	电话 \n ");
    				printf(" \n %s\t %s\t %s\t %s\t %s\t %s\t %s\t %s\t %s\t \n ", p->data.jobNo, p->data.name,
    					p->data.sex, p->data.birthday, p->data.degree, p->data.position,
    					p->data.salary, p->data.addr, p->data.tel);
    			}
    			p = p->next;
    		}
    	}
    	
    	else if (sel == 0)
    		return 0;
    		
    }
     
    //删除职工信息函数
    int  Delete(Node *worker)
    {
    	Node *p, *r;
    	char find[10];
    	p = worker->next;
    	if (p == NULL)
    	{
    		printf("提示:没有职工信息可以删除!\n ");
    		return 0;
    	}
    	printf(" \n提示:请输入你要删除的职工号!\n ");
    	scanf("%s", find);
    	while (p != NULL)
    	{
    		if (strcmp(p->data.jobNo, find) == 0)
    		{
    			break;
    		}
    		p = p->next;
    	}
    	if (p!=NULL)
    	{
    		r = worker;
    		while (r->next != p)
    		{
    			r = r->next;
    		}
    		r->next = r->next->next;    
    	}
    }
     
    //将职工信息保存到文件中
    void save(Node *worker)
    {
    	int n;
    	Node *p = NULL;
    	FILE *fp;    
    	printf("是否保存到文件?( 1-----保存!,0-----不保存! )");
    	scanf("%d", &n);
    	if (n == 1)
    	{
    		if (worker->next == NULL)
    		{
    			printf(" 没有记录!");
    		}
    		else
    		{
    			p = worker->next;
    		}
    		if ((fp = fopen(" 职工信息管理系统.txt ", " wb ")) == NULL)  
    		{
    			printf(" 文件不能打开!\n");     
    		}
    		while (p != NULL)   
    		{
    			fprintf(fp, " %s\t %s\t %s\t %s\t %s\t %s\t %s\t %s\t %s\t ", p->data.jobNo, p->data.name, p->data.sex,
    				p->data.birthday, p->data.degree, p->data.position, p->data.salary,
    				p->data.addr, p->data.tel);        
    			p = p->next; 
    		}
    		fclose(fp);  
    	}
    }
     
    //读取职工信息 
    void Du_qu(Node *worker)
    {
    	Node *p;
    	FILE *fp; 
    	if ((fp = fopen("职工信息管理系统.txt", "rb")) == NULL)     
    	{
    		printf("文件不能打开!\n ");
    	}
    	
    	p = worker->next;
    	while (p!=NULL)
    	{
    		fscanf(fp, " %s\t %s\t %s\t %s\t %s\t %s\t %s\t %s\t %s\t ", p->data.jobNo, p->data.name, p->data.sex,
    			p->data.birthday, p->data.degree, p->data.position, p->data.salary,
    			p->data.addr, p->data.tel);     
    		p=p->next;
    	}
    	fclose(fp);
    }
     
    //主函数实现 
    int main()
    {
    	Node *worker;
    	int flag;
    	
    	worker = (Node*)malloc(sizeof(Node));
    	worker->next = NULL; 
    	
     	while(1)
     	{
     			printf("\t职 工 信 息 管 理 系 统\n");
    			printf("==================菜 单==================\n ");
    			printf("1.输入职工信息\n ");
    			printf("2.修改职工信息\n ");
    			printf("3.浏览职工信息\n ");
    			printf("4.查询职工信息\n ");
    			printf("5.删除职工信息\n ");
    			printf("6.读取职工信息\n ");
    			printf("0.退出\n ");
    			printf("输入你选择的序号:");
    			scanf("%d", &flag);
    			switch (flag)
    			{
    				case 0:  printf(" \n提示:退出系统!\n ");  break;
    				case 1:	 Add(worker); save(worker);  break;    //添加职工信息,保存到文件中 
    				case 2:  change(worker);  break;           //修改职工信息 
    				case 3:  Disp(worker);  break;             //显示职工信息 
    				case 4:  Cha_xun(worker);  break;           //查询职工信息 
    				case 5:  Delete(worker);  break;          //删除职工信息 
    				case 6:  Du_qu(worker);  break;             //读取职工信息 
    				default: printf("提示:输入错误!\n ");
    			}
    	}
    	
    }
     
    
    点赞 评论
  • CSDN专家-黄老师 2021-06-11 10:06

    参考一下:https://blog.csdn.net/F__Rong/article/details/75765571

    如果对你有帮助,可以点击我这个回答右上方的【采纳】按钮,给我个采纳吗,谢谢

    点赞 评论
  • Jine_GG 2021-06-11 10:26
    点赞 评论
  • 有问必答小助手 2021-06-15 18:42

    您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

    如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

    ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632

    点赞 评论

相关推荐 更多相似问题