• 无敌!我用【C语言】手搓出了一个体系完整的【员工管理系统】还能玩游戏听音乐?(超详细,附完整源码)


    博主简介:Hello大家好呀,我是陈童学,一个与你一样正在慢慢前行的人。
    博主主页:@陈童学哦
    所属专栏:C语言程序设计实验项目
    如果本文对你有所帮助的话,还希望可以点赞👍收藏📂支持一下哦!

    在这里插入图片描述

    前言:员工管理系统是一款面向公司管理员的管理工具,旨在提供员工信息管理、薪资管理、员工绩效评估、员工福利管理和智能推荐等功能,帮助公司管理员更好地管理员工信息和提高员工工作效率。

    这是总体设计大概模型图:

    在这里插入图片描述

    一、所有结构体的定义

    //员工信息结构体
    struct Employee
    {
    	int Number;  //工号 
    	char Name[250]; //姓名 
    	char Sex[100]; //性别 
    	int Age;  //年龄 
    	ll Phonenumber; //电话号码 
    	char job[200]; //职位 
    	int Salary; //基本工资
    };
    
    //员工薪资发放结构体 
    struct payment
    {
    	int number;  //工号
    	char name[200]; //姓名
    	int money; //应发薪资
    	int judge; //发放状态
    };
    
    //员工绩效评估结构体 
    struct node
    {
    	int Number;  //工号
    	char Name[200];//姓名
    	int first;//第一次评分
    	int second;//第二次评分
    	int third;//第三次评分
    	double final=0;//综合评分
    	char grade[200];//评估等级
    };
    
    //评估等级对应的福利奖金结构体
    struct Benefit
    {
    	char grade[200]; //评估等级
    	int bonus;  //对应福利奖金
    };
    //员工的福利结构体 
    struct Welfare
    {
    	int Number; //工号
    	char name[200]; //姓名
    	char grade[200];//评估等级
    	int money;//应发福利奖金
    	int judge;//发放状态
    };
    //培训结构体
    struct training
    {
    	char grade[200]; //评估等级
    	char recommend[1001]; //推荐的东西
    };
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55

    二、相关功能函数的定义

    void Add();  //添加信息 
    void inquire();//查询信息 
    void Delete();//删除信息 
    void Modify();//修改信息
    void Payroll_Management(); //薪资管理菜单 
    void Employee_Information_Management();//员工信息管理菜单 
    bool Isrepeated(int number); //判断工号是否重复 
    void personnel_performance_appraisal();//员工绩效评估菜单
    void employee_benefits_management(); //员工福利管理菜单 
    void employee_recommend(); //员工推荐菜单 
    
    bool IsSix(); //判断工号是否为6位数 
    void payroll_is_paid(); //薪资发放 
    void Salary_enquiry(); //薪资查询 
    void Performance_evaluation(); //绩效评估 
    void Performance_queries(); //绩效查询
    void Welfare_distribution(); //福利发放
    void Benefits_Inquiry(); //福利查询
    void Recommended_positions(); //推荐职位
    void Recommended_training(); //推荐培训 
    
    int Finalresult(double a); //测试评估等级 
    void entertainment();  //休闲娱乐菜单 
    bool IsPhone(ll num); //判断手机号是否是11位 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    三、主程序界面

    int main()
    {
    	while(1)
    	{
    		printf("=====================欢迎使用员工管理系统======================\n\n");
    		printf("***************************************************************\n");
    		
    		printf("----------------1.员工信息管理\t2.薪资管理---------------------\n");
    		printf("----------------3.员工绩效评估\t4.员工福利管理-----------------\n");
    		printf("----------------5.推荐\t\t6.休闲娱乐-------------------------\n");
    		printf("----------------7.退出\t\t\t  -------------------------\n");
    		printf("***************************************************************\n");
    		int choice;
    		printf("请输入你的选择:");
    	again:
    		scanf("%d",&choice);
    		switch (choice) 
    		{
    			case 1:
    				system("cls");
    				Employee_Information_Management();
    				break;
    			case 2:
    				system("cls");
    				Payroll_Management();
    				break;
    			case 3:
    				system("cls");
    				personnel_performance_appraisal();
    				break;
    			case 4:
    				system("cls");
    				employee_benefits_management();
    				break;
    			case 5:
    				system("cls");
    				employee_recommend();
    				break;
    			case 7:
    				printf("已退出!!!!!!!!!!!感谢使用!!!!!!!!!");
    				return 0;
    				break;
    			case 6:
    				system("cls");
    				entertainment();
    				break;
    			default:
    				printf("输入有误,请您重新输入:");
    				goto again;
    				break;
    		}
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53

    四、员工信息管理界面

    //员工信息管理菜单 
    void Employee_Information_Management()
    {
    	while(1)
    	{	
    		printf("==================欢迎来到员工信息管理界面=====================\n\n");
    		printf("***************************************************************\n");
    		
    		printf("\t1.添加员工信息\t2.删除员工信息\n");
    		printf("\t3.修改员工信息\t4.查询员工信息\n\t5.退出\n");
    		printf("***************************************************************\n");
    		int choice;
    		printf("请输入您需要进行的操作:");
    	again:
    		scanf("%d",&choice);
    		if(choice==1)
    		{
    			Add();
    			system("cls");
    		}
    		else if(choice==2)
    		{
    			Delete();
    			system("cls");
    		}
    		else if(choice==3)
    		{
    
    			Modify();
    			
    		}
    		else if(choice==4)
    		{
    			inquire();
    			system("cls");
    		}
    		else if(choice==5)
    		{
    			system("cls");
    			return;
    		}
    		else
    		{
    			printf("输入有误,请您重新输入:");
    			goto again;
    		}
    	}	
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48

    1.添加员工信息

    1. 添加员工:管理员可以添加新员工信息,包括工号、姓名、年龄、性别、联系方式、职位信息。

    //添加!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 
    void Add()
    {
    	while(1)
    	{
    		struct Employee Old[100],New;
    		int i=0,j;
    		FILE *fp;
    		fp=fopen("E:\\EmployeeHH\\Employeemessage_Subtext.txt","r+");
    		while(fscanf(fp,"%d %s\t%s\t%d\t%lld\t%s\t%d",&Old[i].Number,Old[i].Name,Old[i].Sex,&Old[i].Age,&Old[i].Phonenumber,Old[i].job,&Old[i].Salary)==7)
    				i++;
    		fclose(fp);		
    		printf("请输入该员工的姓名:");
    		scanf("%s",New.Name);
    		printf("请输入该员工的性别(1.男/2.女):");
    		int choose;
    	again2:	
    		scanf("%d",&choose);
    		if(choose==1)
    		{
    			strcpy(Old[i].Sex,"男");
    		}
    		else if(choose==2)
    		{
    			strcpy(Old[i].Sex,"女");
    		}
    		else
    		{			
    			printf("输入有误,请重新输入:");
    			goto again2;
    		}
    			
    			printf("请输入该员工的年龄:");
    			scanf("%d",&New.Age);
    			printf("请输入该员工的联系方式(手机号):");
    		again3:
    			scanf("%lld",&New.Phonenumber);
    			if(!IsPhone(New.Phonenumber))
    			{
    				printf("输入有误,手机号应为11位,请重新输入:");
    				goto again3;
    			}
    			char location[200];
    			printf("\t1.董事长\t2.总经理\n");
    			printf("\t3.总监\t4.经理\n");
    			printf("\t5.主管\t6.组长\n");
    			printf("\t7.员工\t8.待定\n");
    			int choice;
    			printf("请选择该员工的职位:");
    			scanf("%d",&choice);
    			switch(choice)
    			{
    				case 1:
    					strcpy(location,"董事长");
    					Isposition(&New,location);
    					break;
    				case 2:
    					strcpy(location,"总经理");
    					Isposition(&New,location);
    					break;
    				case 3:
    					strcpy(location,"总监");
    					Isposition(&New,location);
    					break;
    				case 4:
    					strcpy(location,"经理");
    					Isposition(&New,location);
    					break;
    				case 5:
    					strcpy(location,"主管");
    					Isposition(&New,location);
    					break;
    				case 6:
    					strcpy(location,"组长");
    					Isposition(&New,location);
    					break;
    				case 7:
    					strcpy(location,"员工");
    					Isposition(&New,location);
    					break;
    				case 8:
    					strcpy(location,"待定");
    					Isposition(&New,location);
    					break;
    			} 
    			
    			
    			
    			printf("请赋予该员工工号(6位数):");
    		again1:
    			scanf("%d",&New.Number);
    			if( Isrepeated(New.Number) )
    			{
    				printf("该工号已存在,请重新给予该员工工号:");
    				goto again1;
    			}
    			if(!IsSix(New.Number))
    			{
    				printf("工号应为6位数,请重新输入:");
    				goto again1;
    			}		
    			printf("输入完毕,该员工信息已录入!");		
    			strcpy(Old[i].Name,New.Name);
    		
    			Old[i].Number=New.Number;
    			Old[i].Phonenumber=New.Phonenumber;
    			Old[i].Age=New.Age;
    			strcpy(Old[i].job,New.job);
    			Old[i].Salary=New.Salary;
    			i++;
    			fp=fopen("E:\\EmployeeHH\\Emoloyeemessage_Positive_text.txt","w+");
    			fputs("工号\t姓名\t性别\t年龄\t联系方式\t\t职位\t基本工资\n",fp);
    			for(j=0;j<i;j++)
    			{
    				fprintf(fp,"%d %s\t%s\t%d\t%lld\t%s\t%d\n",Old[j].Number,Old[j].Name,Old[j].Sex,Old[j].Age,Old[j].Phonenumber,Old[j].job,Old[j].Salary);
    			}		
    			fclose(fp);
    			fp=fopen("E:\\EmployeeHH\\Employeemessage_Subtext.txt","w+");
    			for(j=0;j<i;j++)
    			{
    				fprintf(fp,"%d %s\t%s\t%d\t%lld\t%s\t%d\n",Old[j].Number,Old[j].Name,Old[j].Sex,Old[j].Age,Old[j].Phonenumber,Old[j].job,Old[j].Salary);
    			}	
    			fclose(fp);		
    			printf("\n是否还要录入员工信息:(Y/N)");
    			char c;
    			getchar();
    			scanf("%c",&c);
    			if(c=='Y')
    				continue;
    			else
    				break; 
    	}
    	
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111
    • 112
    • 113
    • 114
    • 115
    • 116
    • 117
    • 118
    • 119
    • 120
    • 121
    • 122
    • 123
    • 124
    • 125
    • 126
    • 127
    • 128
    • 129
    • 130
    • 131
    • 132
    • 133
    • 134

    添加员工信息功能中用到的一些相关函数!!!!

    //判断工号是否重复!!!!!! 
    bool Isrepeated(int number)
    {
    	struct Employee Old[100];
    	int i=0,j;
    	FILE *fp;
    	fp=fopen("E:\\EmployeeHH\\Employeemessage.txt","r+");
    	while(fscanf(fp,"%d %s %s %d %d",&Old[i].Number,Old[i].Name,Old[i].Sex,&Old[i].Age,&Old[i].Salary)==5)
    		i++;
    	for(j=0;j<i;j++)
    	{
    		if(Old[j].Number==number)
    			return true;
    	}
    	return false;
    }
    //判断工号是否为6位数 
    bool IsSix(int num)
    {
    	int count=0;
    	while(num)
    	{
    		num/=10;
    		count++;
    	}
    	if(count==6)
    		return true;
    	else
    		return false;
    }
    //判断手机号是否是11位 
    bool IsPhone(ll num)
    {
    	int count=0;
    	while(num)
    	{
    		num/=10;
    		count++;
    	}
    	if(count==11)
    		return true;
    	else
    		return false;
    }
    struct Employee_Sheet
    {
    	char position[200];
    	int Salary;
    };
    //给予员工职位 
    void Isposition(struct Employee *E,char name[200])
    {
    	struct Employee_Sheet Old[100];
    	int i=0,j;
    	FILE *fp;
    	fp=fopen("E:\\EmployeeHH\\Job_Status_Sheet.txt","r+");
    	while(fscanf(fp,"%s %d",Old[i].position,&Old[i].Salary)==2)
    		i++;
    	fclose(fp);
    	for(j=0;j<i;j++)
    	{
    		if(strcmp(name,Old[j].position)==0)
    		{
    			strcpy(E->job,name);
    			E->Salary=Old[j].Salary;
    			return;
    		}
    		
    	}
    	if(strcmp(name,"待定")==0)
    	{
    		strcpy(E->job,name);
    		E->Salary=0;
    	}
    	
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76

    2. 删除员工:管理员可以删除员工信息。

    2.删除员工信息

    //删除!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 
    void Delete()
    {
    	while(1)
    	{
    		struct Employee Old[100];
    		int i=0,j;
    		int Employee_num,Count=0;
    		FILE *fp;
    		fp=fopen("E:\\EmployeeHH\\Employeemessage_Subtext.txt","r+");
    		while(fscanf(fp,"%d %s\t%s\t%d\t%lld\t%s\t%d",&Old[i].Number,Old[i].Name,Old[i].Sex,&Old[i].Age,&Old[i].Phonenumber,Old[i].job,&Old[i].Salary)==7)
    				i++;
    		fclose(fp);	
    		printf("请输入您需要删除员工的工号:");
    		scanf("%d",&Employee_num);
    		fp=fopen("E:\\EmployeeHH\\Emoloyeemessage_Positive_text.txt","w+");
    		fputs("工号\t姓名\t性别\t年龄\t联系方式\t\t职位\t基本工资\n",fp);
    		for(j=0;j<i;j++)
    		{
    			if(Old[j].Number!=Employee_num)
    			{
    				fprintf(fp,"%d %s\t%s\t%d\t%lld\t%s\t%d\n",Old[j].Number,Old[j].Name,Old[j].Sex,Old[j].Age,Old[j].Phonenumber,Old[j].job,Old[j].Salary);
    				Count++;
    			}			
    		}
    		
    		fclose(fp);
    		fp=fopen("E:\\EmployeeHH\\Employeemessage_Subtext.txt","w+");//副文本!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 
    		for(j=0;j<i;j++)
    		{	
    			if(Old[j].Number!=Employee_num)
    			{
    				fprintf(fp,"%d %s\t%s\t%d\t%lld\t%s\t%d\n",Old[j].Number,Old[j].Name,Old[j].Sex,Old[j].Age,Old[j].Phonenumber,Old[j].job,Old[j].Salary);
    			}			
    		}		
    		fclose(fp);		
    		if(Count==i)
    		{
    			printf("\n未查询到工号为【%d】的员工,无法进行删除!",Employee_num);
    		}
    		else
    			printf("该员工信息已删除!");
    		printf("\n是否还要进行删除员工信息操作:(Y/N)");
    		char c;
    		getchar();
    		scanf("%c",&c);
    		if(c=='Y')
    			continue;
    		else
    			break; 
    	}
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53

    2. 修改员工信息:管理员可以修改员工的基本信息,如联系方式、职位等。

    3.修改员工信息

    //修改!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 
    void Modify()
    {
    	while(1)
    	{
    		struct Employee Old[100],New;
    		int i=0,j,k;
    		int judge=0;
    		int num;
    		FILE *fp;
    		fp=fopen("E:\\EmployeeHH\\Employeemessage_Subtext.txt","r+");
    		while(fscanf(fp,"%d %s\t%s\t%d\t%lld\t%s\t%d",&Old[i].Number,Old[i].Name,Old[i].Sex,&Old[i].Age,&Old[i].Phonenumber,Old[i].job,&Old[i].Salary)==7)
    				i++;
    		fclose(fp);	
    		
    		printf("请输入需要修改信息的员工工号:");
    		scanf("%d",&num);
    		for(j=0;j<i;j++)
    		{
    			if(Old[j].Number==num)
    			{
    				printf("查询到该员工!\n");
    				judge=1;
    				printf("请选择需要修改的信息!!!!!\n");
    				printf("\t1.工号\t2.姓名\n");
    				printf("\t3.性别\t4.年龄\n");
    				printf("\t5.联系方式\t6.职位\n");
    				printf("\t7.退出\n");
    				
    				printf("请输入你的选择:"); 
    				int choice;
    				scanf("%d",&choice);
    				switch(choice)
    				{
    					case 1:
    						printf("请输入该员工的工号:");
    						scanf("%d",&New.Number);
    						Old[j].Number=New.Number;						
    						break;	
    					case 2:
    						printf("请输入该员工的姓名:");
    						scanf("%s",New.Name);
    						strcpy(Old[j].Name,New.Name);
    					
    						break;
    						
    					case 3:
    						printf("请输入该员工的性别:");
    						scanf("%s",New.Sex);
    						strcpy(Old[j].Sex,New.Sex);
    					
    						break;
    						
    					case 4:
    						printf("请输入该员工的年龄:");
    						scanf("%d",&New.Age);
    						Old[j].Age=New.Age;
    						
    						break;
    					case 5:
    						printf("请输入该员工的联系方式:");
    						scanf("%lld",&New.Phonenumber);
    						Old[j].Phonenumber=New.Phonenumber;
    					
    						break;
    					case 6:
    					{					
    						printf("请选择该员工的职位:");
    						scanf("%s",New.job);
    						struct Employee_Sheet Olde[100];
    						int i=0,j;
    						FILE *fp;
    						fp=fopen("E:\\EmployeeHH\\Job_Status_Sheet.txt","r+");
    						while(fscanf(fp,"%s %d",Olde[i].position,&Olde[i].Salary)==2)
    							i++;
    						fclose(fp);
    						for(j=0;j<i;j++)
    						{
    							
    							if(strcmp(New.Name,Olde[j].position)==0)
    							{
    								strcpy(Old[j].job,Olde[j].position);
    								Old[j].Salary=Olde[j].Salary;
    								return;
    							}
    							
    						}
    						if(strcmp(New.job,"待定")==0)
    						{
    							strcpy(Old[j].job,New.job);
    							Old[j].Salary=0;
    						}
    						break;
    					}
    						
    					case 7:
    						exit(0);
    						break;
    						
    				}
    				fp=fopen("E:\\EmployeeHH\\Employeemessage_Subtext.txt","w+");
    				for(k=0;k<i;k++)
    				{
    						fprintf(fp,"%d %s\t%s\t%d\t%lld\t%s\t%d\n",Old[k].Number,Old[k].Name,Old[k].Sex,Old[k].Age,Old[k].Phonenumber,Old[k].job,Old[k].Salary);	
    				}		
    				fclose(fp);
    				fp=fopen("E:\\EmployeeHH\\Emoloyeemessage_Positive_text.txt","w+");
    				fputs("工号\t姓名\t性别\t年龄\t联系方式\t\t职位\t基本工资\n",fp);
    				for(k=0;k<i;k++)
    				{
    					fprintf(fp,"%d %s\t%s\t%d\t%lld\t%s\t%d\n",Old[k].Number,Old[k].Name,Old[k].Sex,Old[k].Age,Old[k].Phonenumber,Old[k].job,Old[k].Salary);
    				}		
    				fclose(fp);
    				printf("修改成功!!!!!!");	
    				break;
    			}
    			
    			
    		}
    		if(!judge)
    		{
    			printf("\n未查询到工号为【%d】的员工!\n",num);
    			break; 
    		}
    		printf("\n是否还要进行修改员工信息操作:(Y/N)");
    		char c;
    		getchar();
    		scanf("%c",&c);
    		if(c=='Y')
    			continue;
    		else
    			break; 
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111
    • 112
    • 113
    • 114
    • 115
    • 116
    • 117
    • 118
    • 119
    • 120
    • 121
    • 122
    • 123
    • 124
    • 125
    • 126
    • 127
    • 128
    • 129
    • 130
    • 131
    • 132
    • 133
    • 134

    4. 查询员工:管理员可以根据员工姓名、职位等信息进行查询。

    4.查询员工信息

    //查询!!!!!!!!!!!!!!!!!!!!!!!! 
    void inquire()
    {	
    	while(1)
    	{
    		struct Employee Old[100];
    		int i=0,j;
    		FILE *fp;
    		fp=fopen("E:\\EmployeeHH\\Employeemessage_Subtext.txt","r+");
    		while(fscanf(fp,"%d %s\t%s\t%d\t%lld\t%s\t%d",&Old[i].Number,Old[i].Name,Old[i].Sex,&Old[i].Age,&Old[i].Phonenumber,Old[i].job,&Old[i].Salary)==7)
    				i++;
    		fclose(fp);	
    		printf("\t1.通过工号查询\t2.通过姓名查询\n");
    		printf("请选择查询的方式:");
    		int choice; //选择查询方式 
    		int num; //员工工号 
    		char name[50]; //员工姓名 
    	again:
    		scanf("%d",&choice);
    		int judge=0;
    		if(choice==1)
    		{
    			
    			printf("请输入员工工号:");
    			scanf("%d",&num);
    			for(j=0;j<i;j++)
    			{
    				if(Old[j].Number==num)
    				{
    					printf("【工号】:%d 【姓名】:%s 【性别】:%s\n【年龄】:%d 【联系方式】:%lld\n【职位】:%s【基本工资】:%d\n",Old[j].Number,Old[j].Name,Old[j].Sex,Old[j].Age,Old[j].Phonenumber,Old[j].job,Old[j].Salary);
    					judge=1;
    				}
    					
    			}
    			if(!judge)
    				printf("未查询到工号为【%d】的员工\n",num);
    		}
    		else if(choice==2)
    		{
    			
    			printf("请输入员工姓名:");
    			scanf("%s",name);
    			for(j=0;j<i;j++)
    			{
    				if(strcmp(Old[j].Name,name)==0)
    				{
    					printf("【工号】:%d 【姓名】:%s \n【性别】:%s\n【年龄】:%d 【联系方式】:%lld\n【职位】:%s【基本工资】:%d\n",Old[j].Number,Old[j].Name,Old[j].Sex,Old[j].Age,Old[j].Phonenumber,Old[j].job,Old[j].Salary);
    					judge=2;
    				}
    					
    			}
    			if(!judge)
    				printf("未查询到姓名为【%s】的员工\n",name);
    		}
    		else
    		{
    			printf("输入有误,请重新输入:");
    			goto again;
    		}
    		printf("\n是否还要进行查询员工信息操作:(Y/N)");
    		char c;
    		getchar();
    		scanf("%c",&c);
    		if(c=='Y')
    			continue;
    		else
    			break; 	
    	}
    	
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70

    五、薪资管理界面

    //薪资管理菜单!!!!!!!!!!!!!!!!!! 
    void Payroll_Management()
    {
    	while(1)
    	{
    		printf("====================欢迎来到薪资管理界面=======================\n");
    		printf("***************************************************************\n");
    		
    		printf("\t1.薪资发放\t2.薪资查询\n\t3.退出\n");
    		printf("***************************************************************\n");
    		int choice;
    		printf("请输入您需要进行的操作:");
    	again:
    		scanf("%d",&choice);
    		if(choice==1)
    		{
    			payroll_is_paid();
    			system("cls");
    		}
    		else if(choice==2)
    		{
    			Salary_enquiry();
    			system("cls");
    		}
    		else if(choice==3)
    		{
    			system("cls");
    			return;
    		}
    		else
    		{
    			printf("输入有误,请您重新输入:");
    			goto again;
    		}
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36

    1. 薪资发放:管理员可以根据员工的工作表现和薪资标准进行薪资发放。

    1.薪资发放

    //薪资发放 
    void payroll_is_paid() 
    {
    	while(1)
    	{
    		
    	
    		struct payment Old1[100];
    		struct Employee Old2[100];
    		int i1=0,i2=0,j;
    		int judge1=0,judge2=0;
    		printf("======欢迎来到薪资发放界面======\n");
    		FILE *fp;
    		fp=fopen("E:\\EmployeeHH\\Payroll_Subtext.txt","r+");
    		while(fscanf(fp,"%d %s %d %d",&Old1[i1].number,Old1[i1].name,&Old1[i1].money,&Old1[i1].judge)==4)
    			i1++;
    		fclose(fp);
    		fp=fopen("E:\\EmployeeHH\\Employeemessage_Subtext.txt","r+");
    		while(fscanf(fp,"%d %s\t%s\t%d\t%lld\t%s\t%d",&Old2[i2].Number,Old2[i2].Name,Old2[i2].Sex,&Old2[i2].Age,&Old2[i2].Phonenumber,Old2[i2].job,&Old2[i2].Salary)==7)
    			i2++;
    		fclose(fp);
    		
    		
    		
    		int num;
    		printf("请输入需要发放薪资的员工工号:");
    		scanf("%d",&num);
    		for(j=0;j<i1;j++)
    		{
    			if(Old1[j].number==num)
    			{
    				judge1=1;
    				printf("查询到该员工,该员工为【%s】",Old1[j].name);
    				if(Old1[j].judge)
    				{
    					printf("\n该员工当月薪资【%d元】已发!!!",Old1[j].money);
    				}
    				else
    				{
    					printf("\n该员工当月薪资【%d元】未发!!!\n",Old1[j].money);
    					int choice;
    				again1:
    					printf("是否发放员工【%s】当月的薪资(1.是/2.否):",Old1[j].name);
    					scanf("%d",&choice);
    					if(choice==1)
    					{
    						Old1[j].judge=1;
    						printf("叮咚!!!!员工【%s】当月薪资【%d元】已发放!",Old1[j].name,Old1[j].money);
    					}
    					else if(choice==2)
    					{
    						Old1[j].judge=0;
    						printf("叮咚!!!!员工【%s】的薪资【%d元】暂不进行发放",Old1[j].name,Old1[j].money);
    					}
    					else
    					{
    						printf("输入有误!!!!!!!请重新输入:");
    						goto again1;
    					}
    				}
    				break;
    			}
    		}
    		if(!judge1)
    		{
    			for(j=0;j<i2;j++)
    			{
    				if(Old2[j].Number==num)
    				{
    					judge2=1;
    					printf("查询到该员工,该员工为【%s】\n",Old2[j].Name);
    					printf("该员工当月薪资【%d】还未发放!!!\n",Old2[j].Salary);
    					int choice;
    				again2:
    					printf("是否发放员工【%s】当月的薪资(1.是/2.否):",Old1[j].name);
    					scanf("%d",&choice);
    					if(choice==1)
    					{
    						Old1[i1].number=num;
    						Old1[i1].money=Old2[j].Salary;
    						strcpy(Old1[i1].name,Old2[j].Name);
    						Old1[i1].judge=1;
    						printf("叮咚!!!!员工【%s】当月薪资【%d元】已发放!",Old2[j].Name,Old2[i1].Salary);
    					}
    					else if(choice==2)
    					{
    						Old1[i1].number=num;
    						Old1[i1].money=Old2[j].Salary;
    						strcpy(Old1[i1].name,Old2[j].Name);
    						Old1[i1].judge=0;
    						printf("叮咚!!!!员工【%s】的薪资【%d元】暂不进行发放",Old2[i1].Name,Old2[i1].Salary);
    					}
    					else
    					{
    						printf("输入有误!!!!!!!请重新输入:");
    						goto again2;
    					}
    					i1++;
    					break;
    				}
    			}
    		}
    		if(!judge1&&!judge2)
    		{
    			printf("并未查询到有工号为【%d】的员工!!!!\n",num);
    		}
    		fp=fopen("E:\\EmployeeHH\\Payroll_Subtext.txt","r+");
    		for(j=0;j<i1;j++)
    		{
    			fprintf(fp,"%d %s %d %d\n",Old1[j].number,Old1[j].name,Old1[j].money,Old1[j].judge);
    		
    		}
    		fclose(fp);
    		fp=fopen("E:\\EmployeeHH\\Payroll_Positive_text.txt","r+");
    		fputs("工号\t姓名 应发薪资 发放状态(1.是/2.否)\n",fp);
    		for(j=0;j<i1;j++)
    		{
    			fprintf(fp,"%d %s %d\t%d\n",Old1[j].number,Old1[j].name,Old1[j].money,Old1[j].judge);
    		
    		}
    		fclose(fp);
    		
    		printf("\n是否还要薪资发放操作:(Y/N)");
    		char c;
    		getchar();
    		scanf("%c",&c);
    		if(c=='Y')
    			continue;
    		else
    			break; 	
    	
    	}
    	
    	
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111
    • 112
    • 113
    • 114
    • 115
    • 116
    • 117
    • 118
    • 119
    • 120
    • 121
    • 122
    • 123
    • 124
    • 125
    • 126
    • 127
    • 128
    • 129
    • 130
    • 131
    • 132
    • 133
    • 134
    • 135

    2. 薪资查询:管理员可以查询员工的薪资信息。

    2.薪资查询

    //薪资查询
    void Salary_enquiry()
    {
    	while(1)
    	{
    		struct payment Old1[100];
    		struct Employee Old2[100];
    		int i1=0,i2=0,j;
    		int judge1=0,judge2=0;
    		FILE *fp;
    		fp=fopen("E:\\EmployeeHH\\Payroll_Subtext.txt","r+");
    		while(fscanf(fp,"%d %s %d %d",&Old1[i1].number,Old1[i1].name,&Old1[i1].money,&Old1[i1].judge)==4)
    			i1++;
    		fclose(fp);
    		fp=fopen("E:\\EmployeeHH\\Employeemessage_Subtext.txt","r+");
    		while(fscanf(fp,"%d %s\t%s\t%d\t%lld\t%s\t%d",&Old2[i2].Number,Old2[i2].Name,Old2[i2].Sex,&Old2[i2].Age,&Old2[i2].Phonenumber,Old2[i2].job,&Old2[i2].Salary)==7)
    			i2++;
    		fclose(fp);
    		printf("======欢迎来到薪资管理界面======\n");
    		int num;
    		printf("请输入需要查询薪资的员工工号:");
    		scanf("%d",&num);
    		for(j=0;j<i1;j++)
    		{
    			if(Old1[j].number==num)
    			{
    				judge1=1;
    				printf("查询到员工【%s】的薪资信息!!其信息如下:\n",Old1[j].name);
    				if(Old1[j].judge==1)
    				{
    					printf("【工号】:%d 【姓名】:%s 【应发薪资】:%d 【发放状态】:已发放",Old1[j].number,Old1[j].name,Old1[j].money);
    				}
    				else
    				{
    					printf("【工号】:%d 【姓名】:%s 【应发薪资】:%d 【发放状态】:未发放",Old1[j].number,Old1[j].name,Old1[j].money);
    				}
    				break;
    				
    			}
    		}
    		if(!judge1)
    		{
    			for(j=0;j<i2;j++)
    			{
    				if(Old2[j].Number==num)
    				{
    					judge2=1;
    					printf("查询到员工【%s】的薪资信息!!其信息如下:\n",Old2[j].Name);
    					
    					printf("【工号】:%d 【姓名】:%s 【应发薪资】:%d 【发放状态】:未发放",Old2[j].Number,Old2[j].Name,Old2[j].Salary);					
    					break;
    					
    				}
    			}
    		}
    		if(!judge1&&!judge2)
    		{
    			printf("并未查询到有工号为【%d】的员工!!!!\n",num);
    		}
    		printf("\n是否还要薪资查询操作:(Y/N)");
    		char c;
    		getchar();
    		scanf("%c",&c);
    		if(c=='Y')
    			continue;
    		else
    			break; 	
    		
    		
    	}
    } 
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72

    六、员工绩效评估界面

    //员工绩效评估菜单 
    void personnel_performance_appraisal()
    {
    	while(1)
    	{
    		printf("***************************************************************\n");
    		printf("=================欢迎来到员工绩效评估界面======================\n");
    		printf("\t1.绩效评估\t2.绩效查询\n\t3.退出\n");
    		printf("***************************************************************\n");
    		int choice;
    		printf("请输入你的选择:");
    		again:
    		scanf("%d",&choice);
    		if(choice==1)
    		{
    			Performance_evaluation();
    			system("cls");
    		}
    		else if(choice==2)
    		{
    			Performance_queries();
    			system("cls");
    		}
    		else if(choice==3)
    		{
    			system("cls");
    			return;
    		}
    		else
    		{
    			printf("输入有误,请重新输入:");
    			goto again;
    		}
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35

    1. 绩效评估:管理员可以根据员工的工作表现进行绩效评估,评估结果包括优秀、良好、一般、差等级别。

    1.绩效评估

    //评估等级 
    int Finalresult(double a)
    {
    	if(a>=80)
    		return 1;
    	else if(a>=70)
    		return 2;
    	else if(a>=60)
    		return 3;
    	else
    		return 4;
    }
    //绩效评估 
    void Performance_evaluation()
    {
    while(1)
    {
    	struct node Old1[100],stu;
    	struct Employee Old2[100];
    	int i1=0,i2=0,j,k;
    	FILE *fp,*fq;
    	fp=fopen("E:\\EmployeeHH\\Performance_evaluation_Subtext.txt","r+");   //副文本!!!!!!!!!!!!!!!!! 
    	while(fscanf(fp,"%d %s %d %d %d %lf %s",&Old1[i1].Number,Old1[i1].Name,&Old1[i1].first,&Old1[i1].second,&Old1[i1].third,&Old1[i1].final,Old1[i1].grade)==7)
    		i1++;
    	fclose(fp);
    	int number;
    	int judge=0;
    	printf("======欢迎来到绩效评估界面======\n");
    	printf("请输入你要评估员工的工号:");
    	scanf("%d",&number);
    	for(j=0;j<i1;j++)
    	{
    		if(number==Old1[j].Number)
    		{
    			judge=1;
    			char choice;  
    
    			struct node stu;
    			printf("该员工【%s】当月已进行过评估!\n",Old1[j].Name);
    			printf("其评估信息为:\n");
    			printf("当月第一次测评评分为:%d\n",Old1[j].first);
    			printf("当月第二次测评评分为:%d\n",Old1[j].second);
    			printf("当月第三次测评评分为:%d\n",Old1[j].third);
    			printf("当月综合测评评分为:%.2lf\n",Old1[j].final);
    			printf("当月的评估等级为:%s\n",Old1[j].grade);
    			printf("是否需要对其重新进行评估(Y/N):");
    			getchar();
    		again1:
    			scanf("%c",&choice);
    
    			if(choice=='Y')
    			{
    				printf("请为该员工当月的第一次测评打分:");
    				scanf("%d",&stu.first);
    				Old1[j].first=stu.first;
    				printf("请为该员工当月的第二次测评打分:");
    				scanf("%d",&stu.second);
    				Old1[j].second=stu.second;
    				printf("请为该员工当月的第三次测评打分:");
    				scanf("%d",&stu.third);
    				Old1[j].third=stu.third; 
    				stu.final=( stu.first+stu.second+stu.third )/3;
    				Old1[j].final=stu.final;
    				int t = Finalresult(stu.final);
    				fp=fopen("E:\\EmployeeHH\\Performance_evaluation_Positive_text.txt","w+");
    				fq=fopen("E:\\EmployeeHH\\Performance_evaluation_Subtext.txt","w+");
    				fputs("工号\t姓名 第一次测评评分 第二次测评评分   第三次测评评分 综合评分 评估等级\n",fp);
    				if(t==1)
    				{
    					strcpy(Old1[j].grade,"优");
    					printf("该员工【%s】最后的评估等级为:【优】\n",Old1[j].Name);
    					for(k=0;k<i1;k++)
    					{
    						fprintf(fp,"%d %s \t%d\t \t%d\t \t%d\t %.2lf\t  %s\n\n",Old1[k].Number,Old1[k].Name,Old1[k].first,Old1[k].second,Old1[k].third,Old1[k].final,Old1[k].grade);
    					}
    					fclose(fp);
    					for(k=0;k<i1;k++)
    					{
    						fprintf(fq,"%d %s \t%d\t \t%d\t \t%d\t %.2lf\t  %s\n\n",Old1[k].Number,Old1[k].Name,Old1[k].first,Old1[k].second,Old1[k].third,Old1[k].final,Old1[k].grade);
    					}
    					fclose(fq);
    				}
    				else if(t==2)
    				{
    					strcpy(Old1[j].grade,"良");
    					printf("该员工【%s】最后的评估等级为:【良】\n",Old1[j].Name);
    					for(k=0;k<i1;k++)
    					{
    						fprintf(fp,"%d %s \t%d\t \t%d\t \t%d\t %.2lf\t  %s\n\n",Old1[k].Number,Old1[k].Name,Old1[k].first,Old1[k].second,Old1[k].third,Old1[k].final,Old1[k].grade);
    					}
    					fclose(fp);
    					for(k=0;k<i1;k++)
    					{
    						fprintf(fq,"%d %s \t%d\t \t%d\t \t%d\t %.2lf\t  %s\n\n",Old1[k].Number,Old1[k].Name,Old1[k].first,Old1[k].second,Old1[k].third,Old1[k].final,Old1[k].grade);
    					}
    					fclose(fq);
    				}
    				else if(t==3)
    				{
    					strcpy(Old1[j].grade,"一般");
    					printf("该员工【%s】最后的评估等级为:【一般】\n",Old1[j].Name);
    					for(k=0;k<i1;k++)
    					{
    						fprintf(fp,"%d %s \t%d\t \t%d\t \t%d\t %.2lf\t  %s\n\n",Old1[k].Number,Old1[k].Name,Old1[k].first,Old1[k].second,Old1[k].third,Old1[k].final,Old1[k].grade);
    					}
    					fclose(fp);
    					for(k=0;k<i1;k++)
    					{
    						fprintf(fq,"%d %s \t%d\t \t%d\t \t%d\t %.2lf\t  %s\n\n",Old1[k].Number,Old1[k].Name,Old1[k].first,Old1[k].second,Old1[k].third,Old1[k].final,Old1[k].grade);
    					}
    					fclose(fq);
    				}
    				else
    				{
    					strcpy(Old1[j].grade,"差");
    					printf("该员工【%s】最后的评估等级为:【差】\n",Old1[j].Name);
    					for(k=0;k<i1;k++)
    					{
    						fprintf(fp,"%d %s \t%d\t \t%d\t \t%d\t %.2lf\t  %s\n\n",Old1[k].Number,Old1[k].Name,Old1[k].first,Old1[k].second,Old1[k].third,Old1[k].final,Old1[k].grade);
    					}
    					fclose(fp);
    					for(k=0;k<i1;k++)
    					{
    						fprintf(fq,"%d %s \t%d\t \t%d\t \t%d\t %.2lf\t  %s\n\n",Old1[k].Number,Old1[k].Name,Old1[k].first,Old1[k].second,Old1[k].third,Old1[k].final,Old1[k].grade);
    					}
    					fclose(fq);
    				}
    					
    					
    			}
    			else if(choice=='N')
    				break;
    			else
    			{
    				printf("输入有误,请重新输入:");
    				goto again1;
    			}
    			break;
    		}
    	}
    	if(!judge)
    	{
    		int judgement=1;
    		fp=fopen("E:\\EmployeeHH\\Employeemessage_Subtext.txt","r+");
    		while(fscanf(fp,"%d %s\t%s\t%d\t%lld\t%s\t%d",&Old2[i2].Number,Old2[i2].Name,Old2[i2].Sex,&Old2[i2].Age,&Old2[i2].Phonenumber,Old2[i2].job,&Old2[i2].Salary)==7)
    				i2++;
    		fclose(fp);
    		for(j=0;j<i2;j++)
    		{
    			if(number==Old2[j].Number)
    			{
    				judgement=1;
    				strcpy(Old1[i1].Name,Old2[j].Name);
    				Old1[i1].Number=Old2[j].Number;
    				break;
    			}
    		}
    		if(judgement)
    		{
    			printf("该员工当月还未进行评估!!!\n");
    			printf("请为该员工当月的第一次测评打分:");
    			scanf("%d",&stu.first);
    			Old1[i1].first=stu.first;
    			printf("请为该员工当月的第二次测评打分:");
    			scanf("%d",&stu.second);
    			Old1[i1].second=stu.second;
    			printf("请为该员工当月的第三次测评打分:");
    			scanf("%d",&stu.third);
    			Old1[i1].third=stu.third; 
    			stu.final=( stu.first+stu.second+stu.third )/3;
    			Old1[i1].final=stu.final;
    			int t = Finalresult(stu.final);
    
    			fp=fopen("E:\\EmployeeHH\\Performance_evaluation_Positive_text.txt","w+");
    			fq=fopen("E:\\EmployeeHH\\Performance_evaluation_Subtext.txt","w+");
    			fputs("工号\t姓名 第一次测评评分 第二次测评评分   第三次测评评分 综合评分 评估等级\n",fp);
    			if(t==1)
    			{
    				strcpy(Old1[i1].grade,"优");
    				printf("该员工【%s】最后的评估等级为:【优】\n",Old1[i1].Name);
    				i1++;
    				for(k=0;k<i1;k++)
    				{
    					fprintf(fp,"%d %s \t%d\t \t%d\t \t%d\t %.2lf\t  %s\n\n",Old1[k].Number,Old1[k].Name,Old1[k].first,Old1[k].second,Old1[k].third,Old1[k].final,Old1[k].grade);
    				}
    				fclose(fp);
    				for(k=0;k<i1;k++)
    				{
    					fprintf(fq,"%d %s \t%d\t \t%d\t \t%d\t %.2lf\t  %s\n\n",Old1[k].Number,Old1[k].Name,Old1[k].first,Old1[k].second,Old1[k].third,Old1[k].final,Old1[k].grade);
    				}
    				fclose(fq);
    			}
    			else if(t==2)
    			{
    				strcpy(Old1[i1].grade,"良");
    				printf("该员工【%s】最后的评估等级为:【良】\n",Old1[i1].Name);
    				i1++;
    				for(k=0;k<i1;k++)
    				{
    					fprintf(fp,"%d %s \t%d\t \t%d\t \t%d\t %.2lf\t  %s\n\n",Old1[k].Number,Old1[k].Name,Old1[k].first,Old1[k].second,Old1[k].third,Old1[k].final,Old1[k].grade);
    				}
    				fclose(fp);
    				for(k=0;k<i1;k++)
    				{
    					fprintf(fq,"%d %s \t%d\t \t%d\t \t%d\t %.2lf\t  %s\n\n",Old1[k].Number,Old1[k].Name,Old1[k].first,Old1[k].second,Old1[k].third,Old1[k].final,Old1[k].grade);
    				}
    				fclose(fq);
    			}
    			else if(t==3)
    			{
    				strcpy(Old1[i1].grade,"一般");
    				printf("该员工【%s】最后的评估等级为:【一般】\n",Old1[i1].Name);
    				i1++;
    				for(k=0;k<i1;k++)
    				{
    					fprintf(fp,"%d %s \t%d\t \t%d\t \t%d\t %.2lf\t  %s\n\n",Old1[k].Number,Old1[k].Name,Old1[k].first,Old1[k].second,Old1[k].third,Old1[k].final,Old1[k].grade);
    				}
    				fclose(fp);
    				for(k=0;k<i1;k++)
    				{
    					fprintf(fq,"%d %s \t%d\t \t%d\t \t%d\t %.2lf\t  %s\n\n",Old1[k].Number,Old1[k].Name,Old1[k].first,Old1[k].second,Old1[k].third,Old1[k].final,Old1[k].grade);
    				}
    				fclose(fq);
    			}
    			else
    			{
    				strcpy(Old1[i1].grade,"差");
    				printf("该员工【%s】最后的评估等级为:【差】\n",Old1[i1].Name);
    				i1++;
    				for(k=0;k<i1;k++)
    				{
    					fprintf(fp,"%d %s \t%d\t \t%d\t \t%d\t %.2lf\t  %s\n\n",Old1[k].Number,Old1[k].Name,Old1[k].first,Old1[k].second,Old1[k].third,Old1[k].final,Old1[k].grade);
    				}
    				fclose(fp);
    				for(k=0;k<i1;k++)
    				{
    					fprintf(fq,"%d %s \t%d\t \t%d\t \t%d\t %.2lf\t  %s\n\n",Old1[k].Number,Old1[k].Name,Old1[k].first,Old1[k].second,Old1[k].third,Old1[k].final,Old1[k].grade);
    				}
    				fclose(fq);
    			
    			}
    		}
    	}
    	else 
    	{
    		printf("并未查询到工号为【%d】的员工!该员工不存在或工号输入有误!\n",number);
    	}
    	printf("是否还要进行员工绩效评估操作:(Y/N)");
    	char c;
    	getchar();
    	scanf("%c",&c);
    	if(c=='Y')
    		continue;
    	else
    		break; 
    	
    	
    }	
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111
    • 112
    • 113
    • 114
    • 115
    • 116
    • 117
    • 118
    • 119
    • 120
    • 121
    • 122
    • 123
    • 124
    • 125
    • 126
    • 127
    • 128
    • 129
    • 130
    • 131
    • 132
    • 133
    • 134
    • 135
    • 136
    • 137
    • 138
    • 139
    • 140
    • 141
    • 142
    • 143
    • 144
    • 145
    • 146
    • 147
    • 148
    • 149
    • 150
    • 151
    • 152
    • 153
    • 154
    • 155
    • 156
    • 157
    • 158
    • 159
    • 160
    • 161
    • 162
    • 163
    • 164
    • 165
    • 166
    • 167
    • 168
    • 169
    • 170
    • 171
    • 172
    • 173
    • 174
    • 175
    • 176
    • 177
    • 178
    • 179
    • 180
    • 181
    • 182
    • 183
    • 184
    • 185
    • 186
    • 187
    • 188
    • 189
    • 190
    • 191
    • 192
    • 193
    • 194
    • 195
    • 196
    • 197
    • 198
    • 199
    • 200
    • 201
    • 202
    • 203
    • 204
    • 205
    • 206
    • 207
    • 208
    • 209
    • 210
    • 211
    • 212
    • 213
    • 214
    • 215
    • 216
    • 217
    • 218
    • 219
    • 220
    • 221
    • 222
    • 223
    • 224
    • 225
    • 226
    • 227
    • 228
    • 229
    • 230
    • 231
    • 232
    • 233
    • 234
    • 235
    • 236
    • 237
    • 238
    • 239
    • 240
    • 241
    • 242
    • 243
    • 244
    • 245
    • 246
    • 247
    • 248
    • 249
    • 250
    • 251
    • 252
    • 253
    • 254
    • 255
    • 256
    • 257
    • 258
    • 259

    2. 绩效查询:管理员可以查询员工的绩效评估结果。

    2.绩效查询

    //绩效查询 
    void Performance_queries()
    {
    	while(1)
    	{
    		int judge1=0,judge2=0;
    		printf("======欢迎来到绩效查询界面======\n");
    		struct node Old1[100],stu;
    		struct Employee Old2[100];
    		int i1=0,i2=0,j,k;
    		FILE *fp,*fq;
    		fp=fopen("E:\\EmployeeHH\\Performance_evaluation_Subtext.txt","r+");   //副文本!!!!!!!!!!!!!!!!! 
    		while(fscanf(fp,"%d %s %d %d %d %lf %s",&Old1[i1].Number,Old1[i1].Name,&Old1[i1].first,&Old1[i1].second,&Old1[i1].third,&Old1[i1].final,Old1[i1].grade)==7)
    			i1++;
    		fclose(fp);
    		fp=fopen("E:\\EmployeeHH\\Employeemessage_Subtext.txt","r+");
    		while(fscanf(fp,"%d %s\t%s\t%d\t%lld\t%s\t%d",&Old2[i2].Number,Old2[i2].Name,Old2[i2].Sex,&Old2[i2].Age,&Old2[i2].Phonenumber,Old2[i2].job,&Old2[i2].Salary)==7)
    				i2++;
    		fclose(fp);
    		int Number;
    		printf("请输入需要查询的员工工号:");
    		scanf("%d",&Number);
    		for(j=0;j<i1;j++)
    		{
    			if(Old1[j].Number==Number)
    			{
    				judge1=1;
    				printf("查询到该员工的绩效信息!其信息如下:\n");
    				printf("当月第一次测评评分为:%d\n",Old1[j].first);
    				printf("当月第二次测评评分为:%d\n",Old1[j].second);
    				printf("当月第三次测评评分为:%d\n",Old1[j].third);
    				printf("当月综合测评评分为:%.2lf\n",Old1[j].final);
    				printf("当月的评估等级为:%s\n",Old1[j].grade);
    				
    				break;
    			}
    		}
    		if(!judge1)
    		{
    		
    			for(j=0;j<i2;j++)
    			{
    				if(Old2[j].Number==Number)
    				{
    					judge2=1;
    					printf("查询到有该员工!该员工为【%s】,但并未查询到有该员工的绩效信息!!!\n",Old2[j].Name);
    					break;
    				}
    			}
    		}
    		if(!judge2&&!judge1)
    		
    			printf("并未查询到有工号为【%d】的员工!!!!!!!\n",Number);
    		
    		printf("是否还要进行员工绩效查询操作:(Y/N)");
    		char c;
    		getchar();
    		scanf("%c",&c);
    		if(c=='Y')
    			continue;
    		else
    			break; 
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64

    七、员工福利管理界面

    //员工福利管理菜单 
    void employee_benefits_management()
    {
    	while(1)
    	{
    		printf("***************************************************************\n");
    		printf("=================欢迎来到员工福利管理界面======================\n");
    		printf("\t1.福利发放\t2.福利查询\n\t3.退出\n");
    		printf("***************************************************************\n");
    	 	int choice;
    		printf("请输入你的选择:");
    	again:
    		scanf("%d",&choice);
    		if(choice==1)
    		{
    			Welfare_distribution();
    
    		}
    		else if(choice==2)
    		{
    			Benefits_Inquiry();
    
    		}
    		else if(choice==3)
    		{
    			
    			system("cls");
    			break;
    		}
    		else
    		{
    			printf("输入有误,请重新输入:");
    			goto again;
    		}
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36

    1. 福利发放:管理员可以根据员工的工作表现和福利标准进行福利发放。

    1.福利发放

    //福利发放
    void Welfare_distribution()
    {
    	
    	while(1)
    	{
    		struct Welfare Old1[100];
    		struct node Old2[100];
    		struct Employee Old3[100];
    		struct Benefit Old4[100];
    		int i1=0,i2=0,i3=0,i4=0,j;
    		int judge1=0,judge2=0,judge3=0;
    		printf("=======欢迎来到福利发放界面============\n");			
    		FILE *fp;
    		fp=fopen("E:\\EmployeeHH\\Welfare_distribution_Subtext.txt","r+");   //福利发放副文本 
    		while(fscanf(fp,"%d %s %s %d %d",&Old1[i1].Number,Old1[i1].name,Old1[i1].grade,&Old1[i1].money,&Old1[i1].judge)==5)
    			i1++;
    		fclose(fp);
    		fp=fopen("E:\\EmployeeHH\\Performance_evaluation_Subtext.txt","r+");    //绩效评估副文本 
    		while(fscanf(fp,"%d %s %d %d %d %lf %s",&Old2[i2].Number,Old2[i2].Name,&Old2[i2].first,&Old2[i2].second,&Old2[i2].third,&Old2[i2].final,Old2[i2].grade)==7)
    			i2++;
    		fclose(fp);
    		fp=fopen("E:\\EmployeeHH\\Employeemessage_Subtext.txt","r+");     //员工信息副文本 
    		while(fscanf(fp,"%d %s\t%s\t%d\t%lld\t%s\t%d",&Old3[i3].Number,Old3[i3].Name,Old3[i3].Sex,&Old3[i3].Age,&Old3[i3].Phonenumber,Old3[i3].job,&Old3[i3].Salary)==7)
    			i3++;
    		fclose(fp);
    		fp=fopen("E:\\EmployeeHH\\benefits_inquiry.txt","r+");       //福利查询文本 
    		while(fscanf(fp,"%s %d",Old4[i4].grade,&Old4[i4].bonus)==2)
    			i4++;
    		fclose(fp);
    		printf("请输入需要进行福利发放员工的工号:");
    		int num;
    		scanf("%d",&num);
    		for(j=0;j<i1;j++)
    		{
    			if(Old1[j].Number==num)
    			{
    				judge1=1;
    				printf("查询到该员工,该员工为【%s】!\n",Old1[j].name);
    				if(Old1[j].judge)
    				{
    					printf("\n该员工当月福利奖金【%d元】已发放!!!",Old1[j].money);
    				}
    				else
    				{
    					printf("\n该员工当月福利奖金【%d元】未发放!!!\n",Old1[j].money);
    					int choice;
    				
    					printf("是否发放员工【%s】当月的福利奖金(1.是/2.否):",Old1[j].name);
    				again1:	
    					scanf("%d",&choice);
    					if(choice==1)
    					{
    						Old1[j].judge=1;
    						printf("叮咚!!!!员工【%s】当月福利奖金【%d元】已发放!",Old1[j].name,Old1[j].money);
    					}
    					else if(choice==2)
    					{
    						Old1[j].judge=0;
    						printf("叮咚!!!!员工【%s】的福利奖金【%d元】暂不进行发放",Old1[j].name,Old1[j].money);
    					}
    					else
    					{
    						printf("输入有误!!!!!!!请重新输入:");
    						goto again1;
    					}
    				}
    			}
    		}
    		if(!judge1)
    		{
    			
    		
    			for(j=0;j<i2;j++)
    			{
    				if(Old2[j].Number==num)
    				{
    					judge2=1;
    					printf("查询到该员工,该员工为【%s】!\n",Old2[j].Name);
    					printf("该员工的福利奖金还未发放!!!!\n");
    					for(int k=0;k<i4;k++)
    					{
    						if(strcmp(Old2[j].grade,Old4[k].grade)==0)
    						{
    							printf("该员工当月的绩效评估等级为【%s】,应发放福利奖金【%d】\n",Old2[j].grade,Old4[k].bonus);
    							int choice;
    						
    							printf("是否发放员工【%s】的福利奖金(1.是/2.否):",Old2[j].Name);
    							Old1[i1].Number=Old2[j].Number;
    							strcpy(Old1[i1].name,Old2[j].Name);
    							Old1[i1].money=Old4[k].bonus;
    							strcpy(Old1[i1].grade,Old2[j].grade);
    						again3:	
    							scanf("%d",&choice);
    							if(choice==1)
    							{
    								Old1[i1].judge=1;
    								printf("叮咚!!!!员工【%s】的福利奖金【%d】已发放!!!!\n",Old2[j].Name,Old4[k].bonus);
    								
    							}
    							else if(choice==2)
    							{
    								Old1[i1].judge=0;
    								printf("叮咚!!!!员工【%s】的福利奖金【%d元】暂不进行发放",Old2[j].Name,Old4[k].bonus);
    							}
    							else
    							{
    								printf("输入有误!!!!!!!请重新输入(1.是/2.否):");
    								goto again3;
    							}
    							i1++;
    							break;
    						}
    						
    					}
    					break;
    				}
    			}
    		}
    		if(!judge1&&!judge2)
    		{
    			for(j=0;j<i3;j++)
    			{
    				if(Old3[j].Number==num)
    				{
    					judge3=1;
    					printf("查询到该员工!!!!该员工为:【%s】\n",Old3[j].Name);
    					printf("该员工当月尚未进行过绩效评估!需要先进行绩效评估后才可进行福利发放!!\n");
    				}
    			}		
    		}
    		if(!judge1&&!judge2&&!judge3)
    		{
    			printf("并未查询到工号为【%d】的员工!!!该员工不存在或工号输入有误!\n");
    			
    		}
    		fp=fopen("E:\\EmployeeHH\\Welfare_distribution_Subtext.txt","w+");
    		for(j=0;j<i1;j++)
    		{
    			fprintf(fp,"%d %s %s %d %d\n",Old1[j].Number,Old1[j].name,Old1[j].grade,Old1[j].money,Old1[j].judge);
    		}
    		fclose(fp);
    		fp=fopen("E:\\EmployeeHH\\Welfare_distribution_Positive_text.txt","w+");
    		fputs(" 工号\t姓名 评估等级 福利奖金 发放状态(1.是/2.否)\n",fp);
    		for(j=0;j<i1;j++)
    		{
    			fprintf(fp,"%d %s\t%s    %d\t%d\n",Old1[j].Number,Old1[j].name,Old1[j].grade,Old1[j].money,Old1[j].judge);
    		}
    		fclose(fp);	
    		printf("\n是否还要福利发放操作:(Y/N)");
    		char c;
    		getchar();
    		scanf("%c",&c);
    		if(c=='Y')
    			continue;
    		else
    			break; 	
    	
    	}	
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111
    • 112
    • 113
    • 114
    • 115
    • 116
    • 117
    • 118
    • 119
    • 120
    • 121
    • 122
    • 123
    • 124
    • 125
    • 126
    • 127
    • 128
    • 129
    • 130
    • 131
    • 132
    • 133
    • 134
    • 135
    • 136
    • 137
    • 138
    • 139
    • 140
    • 141
    • 142
    • 143
    • 144
    • 145
    • 146
    • 147
    • 148
    • 149
    • 150
    • 151
    • 152
    • 153
    • 154
    • 155
    • 156
    • 157
    • 158
    • 159
    • 160
    • 161

    2. 福利查询:管理员可以查询员工的福利信息。

    2.福利查询

    
    //福利查询
    void Benefits_Inquiry()
    {
    	struct Benefit stu[10];
    	int i=0,j;
    	FILE *fp;
    	fp=fopen("E:\\EmployeeHH\\benefits_inquiry.txt","r+");
    	while(fscanf(fp,"%s %d",stu[i].grade,&stu[i].bonus)==2)
    		i++;
    	printf("=======欢迎来到福利查询界面============\n");
    	printf("=======福利详情如下=========\n");
    	for(j=0;j<i;j++)
    	{
    		printf("若该员工的绩效等级为【%s】,则可获得金额为【%d】的奖金\n",stu[j].grade,stu[j].bonus);
    	}	
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    八、推荐界面

    //员工推荐菜单 
    void employee_recommend()
    {
    	while(1)
    	{
    		printf("***************************************************************\n");
    		printf("===================欢迎来到员工推荐界面========================\n");
    		printf("\t1.推荐职位\t2.推荐培训\n\t3.退出\n");
    		printf("***************************************************************\n");
    	 	int choice;
    		printf("请输入你的选择:");
    	again:
    		scanf("%d",&choice);
    		if(choice==1)
    		{
    			Recommended_positions();
    
    		}
    		else if(choice==2)
    		{
    		
    			Recommended_training();
    			
    		}
    		else if(choice==3)
    		{
    			
    			system("cls");
    			break;
    		}
    		else
    		{
    			printf("输入有误,请重新输入:");
    			goto again;
    		}
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37

    1. 推荐职位:管理员可以根据员工的工作表现和职位需求进行智能推荐。

    1.推荐职位

    //推荐职位
    void Recommended_positions()
    {
    	
    	struct training stu[10];
    	int i=0,j;
    	FILE *fp;
    	fp=fopen("E:\\EmployeeHH\\Recommended_positions.txt","r+");
    	while(fscanf(fp,"%s %s",stu[i].grade,stu[i].recommend)==2)
    		i++;
    	printf("=======欢迎来到推荐职位界面============\n");
    	printf("职位的推荐是根据员工的绩效评估等级来判定的\n");
    	for(j=0;j<i;j++)
    	{
    		printf("若员工绩效等级为【%s】,则推荐职位【%s】\n",stu[j].grade,stu[j].recommend);
    	}
    	
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    2. 推荐培训:管理员可以根据员工的工作表现和培训需求进行智能推荐。

    2.推荐培训

    //推荐培训 
    void Recommended_training()
    {
    	struct training stu[10];
    	int i=0,j;
    	FILE *fp;
    	fp=fopen("E:\\EmployeeHH\\Recommended_training.txt","r+");
    	while(fscanf(fp,"%s %s",stu[i].grade,stu[i].recommend)==2)
    		i++;
    	printf("=======欢迎来到推荐培训界面============\n");
    	printf("培训推荐是根据员工的绩效评估等级来判定的\n");
    	for(j=0;j<i;j++)
    	{
    		printf("若员工绩效等级为【%s】,则推荐【%s】\n",stu[j].grade,stu[j].recommend);
    	}
    	
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    九、休闲娱乐界面

    //休闲娱乐菜单 
    void entertainment()
    {
    	printf("==================欢迎来到员工信息管理界面=====================\n\n");
    		printf("***************************************************************\n");
    		
    		printf("\t1.玩游戏\t2.听音乐\n");
    		printf("\t3.退出\n");
    		printf("***************************************************************\n");
    		int choice;
    		printf("请输入您需要进行的操作:");
    	again:
    		scanf("%d",&choice);
    		if(choice==1)
    		{
    			printf("玩游戏!!\n");
    			system("cls");
    		}
    		else if(choice==2)
    		{
    			printf("听音乐");
    			system("cls");
    		}
    		else if(choice==3)
    		{
    			system("cls");
    			return;
    		}
    		else
    		{
    			printf("输入有误,请您重新输入:");
    			goto again;
    		}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34

    休闲娱乐功能尚未完全完善,后期完全完善后将会重新更新本文,且休闲娱乐的玩游戏中会接入【读心术、走迷宫....】等游戏。

    十、完整源码

    因完整代码过于冗长就不放在这里啦,如果有需要的小伙伴私信问我就好啦!顺便点个关注叭!!!
    在这里插入图片描述

  • 相关阅读:
    【LeetCode】【两个数组的交集】
    Golang代码漏洞扫描工具介绍——trivy
    【vue3】实现数据响应式(ref、shallowRef、trigger、reactive、shallowReactive、toRef、toRefs)
    Vue 03 数据绑定
    tp5分页携带搜索参数
    Java feign方式对同一个服务编写多个远程调用实例报错及3种解决办法
    【历史上的今天】9 月 15 日:华为诞生;Stack Overflow 网站公开测试;计算机协会成立
    【VUE实战项目】使用typescript重构项目
    常用工具链和虚拟环境-msys2与mingw
    MVCC-
  • 原文地址:https://blog.csdn.net/H1727548/article/details/131145535