在此示例中,我们使用结构体定义了一个员工的属性,包括姓名、年龄、地址和薪水。我们使用数组来存储所有员工的信息,并使用循环来遍历这个数组以执行不同的操作。
菜单选项提供了四个选项:添加新员工、搜索员工、显示所有员工和退出程序。每个选项都有相应的代码块来执行特定的操作。添加新员工选项通过 scanf
函数接收用户输入,搜索员工选项通过 strcmp
函数比较员工姓名来找到对应的员工,显示所有员工选项则通过循环遍历数组来显示所有员工的信息,退出程序选项则终止程序运行。
注意,在此示例中,我们仅仅使用了数组来存储员工信息,并没有将信息保存在文件中。如果想要将员工信息保存到文件中,可以使用文件输入/输出函数,如 fopen
、fread
、fwrite
、fclose
等。
此外,为了使程序更健壮,我们还可以添加输入验证和错误处理功能。例如,当用户输入无效的选项时,我们可以要求用户重新输入,或者我们可以添加输入验证来确保用户输入的是有效的值。同样地,当用户输入无效数据时,我们可以提示用户重新输入。
#include <stdio.h>
#include <string.h>
// 定义员工结构体
typedef struct {
char name[50];
int age;
char address[100];
float salary;
} Employee;
int main() {
int option, i, n = 0;
Employee employees[100];
char search_name[50];
do {
// 显示菜单选项
printf("\nEmployee Management System\n");
printf("---------------------------\n");
printf("1. Add new employee\n");
printf("2. Search employee\n");
printf("3. Display all employees\n");
printf("4. Exit\n");
printf("Enter your choice: ");
scanf("%d", &option);
switch (option) {
case 1:
// 添加新员工
printf("\nEnter employee name: ");
scanf("%s", employees[n].name);
printf("Enter employee age: ");
scanf("%d", &employees[n].age);
printf("Enter employee address: ");
scanf("%s", employees[n].address);
printf("Enter employee salary: ");
scanf("%f", &employees[n].salary);
n++;
break;
case 2:
// 搜索员工
printf("\nEnter employee name to search: ");
scanf("%s", search_name);
for (i = 0; i < n; i++) {
if (strcmp(search_name, employees[i].name) == 0) {
printf("Name: %s\n", employees[i].name);
printf("Age: %d\n", employees[i].age);
printf("Address: %s\n", employees[i].address);
printf("Salary: %.2f\n", employees[i].salary);
break;
}
}
if (i == n) {
printf("Employee not found.\n");
}
break;
case 3:
// 显示所有员工
printf("\nAll employees:\n");
for (i = 0; i < n; i++) {
printf("\nEmployee %d:\n", i + 1);
printf("Name: %s\n", employees[i].name);
printf("Age: %d\n", employees[i].age);
printf("Address: %s\n", employees[i].address);
printf("Salary: %.2f\n", employees[i].salary);
}
break;
case 4:
// 退出程序
printf("\nExiting program...\n");
break;
default:
// 无效选项
printf("\nInvalid option. Please try again.\n");
break;
}
} while (option != 4);
return 0;
}