Fierce_poison 2021-06-11 08:54 采纳率: 100%
浏览 90
已采纳

员工管理信息系统 课程设计c

 

  • 写回答

2条回答 默认 最新

  • CSDN专家-sinJack 2021-06-11 08:56
    关注
    #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 ");
    			}
    	}
    	
    }
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 运筹学排序问题中的在线排序
  • ¥15 关于docker部署flink集成hadoop的yarn,请教个问题 flink启动yarn-session.sh连不上hadoop,这个整了好几天一直不行,求帮忙看一下怎么解决
  • ¥30 求一段fortran代码用IVF编译运行的结果
  • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛
  • ¥30 python代码,帮调试,帮帮忙吧
  • ¥15 #MATLAB仿真#车辆换道路径规划