本代码示例使用 C 语言实现了一个简单的职工信息管理系统,包含以下功能:

  1. 添加职工信息:

    • 使用 add() 函数添加新的职工信息。
    • 用户输入职工的编号、姓名、性别、出生年月、入职年月、学历、职务、地址和电话等信息。
    • 系统会检查编号是否重复,如果重复则提示用户并询问是否继续输入。
  2. 显示所有职工信息:

    • 使用 show() 函数显示所有已添加的职工信息。
    • 信息以表格形式展示,包含编号、姓名、性别、出生年月、入职年月、学历、职务、地址和电话等信息。
  3. 查询职工信息:

    • 使用 search() 函数查询职工信息。
    • 用户可以选择根据编号、姓名、学历、职务、性别、出生年月、入职年月、地址或电话进行查询。
    • 系统会根据用户选择的查询方式和输入的查询条件进行查找,并显示匹配的职工信息。
    • 如果没有找到匹配的职工信息,则会输出相应的提示信息。

代码示例:

void add()
{
	int i, flag;
	char c;
	read();
	do
	{
		flag = 0;
		printf("\n\n");
		printf("请输入职工的编号:");
		scanf("%s", &em[n].number);
		for (i = 0; i < n; i++)
		{
			if(strcmp(em[i].number, em[n].number) == 0)
			{
				flag = 1;
				break;
			}
		}
		if(flag)
		{
				printf("!!!该职工已存在!!!\n\n");
				printf("\t\t是否继续输入?(Y/N): ");
				scanf("%c", &c);
				if(c == 'N' || c == 'n')
					break;
				continue;
		}
		printf("请输入职工姓名:");
		scanf("%s", &em[n].name);
		printf("请输入职工性别:");
		scanf("%s", &em[n].sex);
		printf("请输入职工出生年月:");
		scanf("%s", &em[n].birthday);
		printf("请输入职工入职年月:");
		scanf("%s", &em[n].date);
		printf("请输入职工学历:");
		scanf("%s", &em[n].degree);
		printf("请输入职工职务:");
		scanf("%s", &em[n].position); 
		printf("请输入职工住址:");
		scanf("%s", &em[n].add);
		printf("请输入职工电话:");
		scanf("%s", &em[n].tel);
		printf("是否继续输入?(Y/N): ");
		scanf("%*c%c", &c);
		n++;
	}while (c != 'N' && c != 'n'); 
	write();
	printf("\n\n数据已保存!\n\n");
}
       
//输出函数
  
void output(int t)
{
	printf("+--------+----+----+--------+--------+----+--------+----+------------+\n");
	printf("|职工编号|姓名|性别|出生年月|入职年月|学历|  职务  |地址|    电话    |\n");
	printf("+--------+----+----+--------+--------+----+--------+----+------------+\n");
	{
	printf("|%4s    |%3s|%3s |%7s |%7s |%4s|%6s  |%4s|%11s |\n", em[t].number, em[t].name,
			em[t].sex, em[t].birthday, em[t].date, em[t].degree, em[t].position, em[t].add, em[t].tel);
	}
}

//显示

void show()
{
	int i;
	read();
	if (n == 0)
		printf("无记录!\n\n");
	else
		for (i = 0; i < n; i++)
		{
			output(i);
		}
}

// 查询

void search()
{
	int num, flag, i;
	char a[10], name[10], degree[10], position[10], sex[10], birthday[10], date[10], add[10], tel[20];     
	char c;
	read();
	while (1)
	{
		printf("\n");
		printf("+---------------------------------+\n");
		printf("|    职 工 信 息 查 询 系 统      |\n"); 
		printf("|          1.按编号查询           |\n");  
		printf("|          2.按姓名查询           |\n"); 
		printf("|          3.按学历查询           |\n"); 
		printf("|          4.按职务查询           |\n"); 
		printf("|          5.按性别查询           |\n");
		printf("|          6.按出生年月查询       |\n");
		printf("|          7.按入职年月查询       |\n");
		printf("|          8.按地址查询           |\n");
		printf("|          9.按电话查询           |\n");
		printf("|      输入其他任意键退出本模块   |\n"); 
		printf("+---------------------------------+\n"); 
		printf("请选择操作:");
		scanf("%d", &num);
		if (num < 1 || num > 9)
		{
			printf("!!!输入错误!!!\n\n");
			system("cls");    // 清屏
		}          
		if (num == 1)
		{
			printf("\n请输入您要查询的职工的编号:");
			scanf("%s", &a);
			for (i = 0; i < n; i++)
			{
				if (strcmp(em[i].number, a) == 0)
				{
					output(i);
					flag = 1;
				}
			}
		}
		else if (num == 2)       
		{
			printf("\n请输入您要查询的职工的姓名:"); 
			scanf("%s", &name); 
			for (i = 0; i < n; i++) 
			{
				if (strcmp(em[i].name, name) == 0) 
				{
					output(i);
					flag = 1;   
				} 
			}
		}
		else if (num == 3)         
		{
			printf("\n请输入您要查询的职工的学历:");
			scanf("%s", &degree);
			for (i = 0; i < n; i++)
			{
				if (strcmp(em[i].degree, degree) == 0)
				{
					output(i);
					flag = 1;
				} 
			}
		}
		else if (num == 4)
		{
			printf("\n请输入您要查询的职工的职务:");
			scanf("%s", &position);
			for (i = 0; i < n; i++)
			{
				if (strcmp(em[i].position, position) == 0) 
				{
					output(i); 
					flag = 1;    
				}
			}
		}
		else if (num == 5)         
		{
			printf("\n请输入您要查询的职工的性别:"); 
			scanf("%s", &sex);
			for (i = 0; i < n; i++)
			{
				if (strcmp(em[i].sex, sex) == 0) 
				{
					output(i); 
					flag = 1;    
				}
			}
		}
		else if (num == 6)
		{
			printf("\n请输入您要查询的职工的出生年月:"); 
			scanf("%s", &birthday); 
			for (i = 0; i < n; i++)
			{
				if (strcmp(em[i].birthday, birthday) == 0)
				{
					output(i);
					flag = 1; 
				}
			}
		}
		else if (num == 7)         
		{
			printf("\n请输入您要查询的职工的入职年月:");
			scanf("%s", &date); 
			for (i = 0; i < n; i++) 
			{
				if (strcmp(em[i].date, date) == 0) 
				{
					output(i); 
					flag = 1;    
				}
			}
		}
		else if (num == 8)         
		{
			printf("\n请输入您要查询的职工的地址:");
			scanf("%s", &add); 
			for (i = 0; i < n; i++) 
			{
				if (strcmp(em[i].add, add) == 0) 
				{
					output(i); 
					flag = 1;    
				}
			}
		}
		else if (num == 9)
		{
			printf("\n请输入您要查询的职工的电话:");
			scanf("%s", &tel); 
			for (i = 0; i < n; i++) 
			{
				if (strcmp(em[i].tel, tel) == 0) 
				{
					output(i); 
					flag = 1;    
				}
			}
		}
		if(!flag)       
		{
			printf("\n\n!!!无该职工信息!!!\n\n");
		}
		
		printf("\n\n是否继续查询?(Y/N):");
		scanf("%*c%c", &c);
		if(c == 'N' || c == 'n')
			break;
	}
}

代码说明:

  • 代码中使用了 em 数组来存储职工信息,每个职工信息包含编号、姓名、性别、出生年月、入职年月、学历、职务、地址和电话等信息。
  • read() 函数用于从文件中读取已保存的职工信息,write() 函数用于将职工信息保存到文件中。
  • add() 函数用于添加新的职工信息。
  • show() 函数用于显示所有已添加的职工信息。
  • search() 函数用于查询职工信息,用户可以选择根据不同的条件进行查询。
  • 代码中使用了 strcmp() 函数来比较字符串,system("cls") 用于清空屏幕。

运行结果:

  • 运行程序后,用户可以选择添加、显示或查询职工信息。
  • 添加职工信息时,系统会检查编号是否重复,如果重复则提示用户并询问是否继续输入。
  • 显示职工信息时,系统会以表格形式展示所有已添加的职工信息。
  • 查询职工信息时,用户可以选择根据不同的条件进行查询,系统会根据用户选择的查询方式和输入的查询条件进行查找,并显示匹配的职工信息。

注意事项:

  • 代码中使用 scanf() 函数获取用户输入,建议使用 fgets() 函数代替 scanf() 函数,避免潜在的安全漏洞。
  • 代码中没有进行异常处理,建议添加异常处理机制来提高程序的健壮性。
  • 代码中没有进行数据验证,建议添加数据验证机制来确保输入数据的合法性。
  • 代码中使用了 system("cls") 函数来清空屏幕,建议使用更平台无关的方式来清空屏幕。

本代码示例仅供参考,用户可以根据自己的需求进行修改和扩展。

C语言职工信息管理系统:添加、显示、查询功能实现

原文地址: https://www.cveoy.top/t/topic/fwXz 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录