用c语言编写职工档案管理系统 (1).程序启动后显示主菜单,包括下面的选项:1.显示职工列表2.职工调入(新增职工信息)3.职工调出(删除职工信息)4.可以按职工号、姓名查询该记录的有关信息;5.修改记录信息;6.职工信息存盘7.职工信息文件调入8.退
时间: 2024-02-12 20:05:33 浏览: 81
以下是用 C 语言编写的简单职工档案管理系统,包含了主菜单和相关功能的实现:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_EMPLOYEES 100 // 最多可存储的职工数量
// 职工信息结构体
typedef struct {
int id; // 职工号
char name[20]; // 姓名
char gender[5]; // 性别
int age; // 年龄
} Employee;
// 职工列表
Employee employees[MAX_EMPLOYEES];
int numEmployees = 0; // 职工数量
// 显示主菜单
void showMenu() {
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("0. 退出程序\n");
printf("========================================\n");
}
// 显示职工列表
void showEmployeeList() {
if (numEmployees == 0) {
printf("没有任何职工信息!\n");
return;
}
printf("职工号\t姓名\t性别\t年龄\n");
for (int i = 0; i < numEmployees; i++) {
printf("%d\t%s\t%s\t%d\n", employees[i].id, employees[i].name, employees[i].gender, employees[i].age);
}
}
// 新增职工信息
void addEmployee() {
if (numEmployees >= MAX_EMPLOYEES) {
printf("职工数量已达到上限,无法新增!\n");
return;
}
Employee newEmployee;
printf("请输入职工号:");
scanf("%d", &newEmployee.id);
printf("请输入姓名:");
scanf("%s", newEmployee.name);
printf("请输入性别:");
scanf("%s", newEmployee.gender);
printf("请输入年龄:");
scanf("%d", &newEmployee.age);
employees[numEmployees++] = newEmployee;
printf("职工信息已添加!\n");
}
// 删除职工信息
void deleteEmployee() {
int employeeId;
printf("请输入要删除的职工号:");
scanf("%d", &employeeId);
for (int i = 0; i < numEmployees; i++) {
if (employees[i].id == employeeId) {
for (int j = i; j < numEmployees - 1; j++) {
employees[j] = employees[j + 1];
}
numEmployees--;
printf("职工信息已删除!\n");
return;
}
}
printf("未找到职工信息!\n");
}
// 按职工号查询职工信息
void searchEmployeeById() {
int employeeId;
printf("请输入要查询的职工号:");
scanf("%d", &employeeId);
for (int i = 0; i < numEmployees; i++) {
if (employees[i].id == employeeId) {
printf("职工号\t姓名\t性别\t年龄\n");
printf("%d\t%s\t%s\t%d\n", employees[i].id, employees[i].name, employees[i].gender, employees[i].age);
return;
}
}
printf("未找到职工信息!\n");
}
// 按姓名查询职工信息
void searchEmployeeByName() {
char employeeName[20];
printf("请输入要查询的姓名:");
scanf("%s", employeeName);
for (int i = 0; i < numEmployees; i++) {
if (strcmp(employees[i].name, employeeName) == 0) {
printf("职工号\t姓名\t性别\t年龄\n");
printf("%d\t%s\t%s\t%d\n", employees[i].id, employees[i].name, employees[i].gender, employees[i].age);
return;
}
}
printf("未找到职工信息!\n");
}
// 修改职工信息
void modifyEmployee() {
int employeeId;
printf("请输入要修改的职工号:");
scanf("%d", &employeeId);
for (int i = 0; i < numEmployees; i++) {
if (employees[i].id == employeeId) {
printf("请输入新的姓名:");
scanf("%s", employees[i].name);
printf("请输入新的性别:");
scanf("%s", employees[i].gender);
printf("请输入新的年龄:");
scanf("%d", &employees[i].age);
printf("职工信息已修改!\n");
return;
}
}
printf("未找到职工信息!\n");
}
// 职工信息存盘
void saveEmployeeInfo() {
FILE* fp;
if ((fp = fopen("employee.dat", "wb")) == NULL) {
printf("无法打开文件!\n");
return;
}
fwrite(&numEmployees, sizeof(int), 1, fp);
fwrite(employees, sizeof(Employee), numEmployees, fp);
fclose(fp);
printf("职工信息已存盘!\n");
}
// 职工信息文件调入
void loadEmployeeInfo() {
FILE* fp;
if ((fp = fopen("employee.dat", "rb")) == NULL) {
printf("无法打开文件!\n");
return;
}
fread(&numEmployees, sizeof(int), 1, fp);
fread(employees, sizeof(Employee), numEmployees, fp);
fclose(fp);
printf("职工信息已调入!\n");
}
int main() {
int choice;
do {
showMenu();
printf("请输入您的选择:");
scanf("%d", &choice);
switch (choice) {
case 1:
showEmployeeList();
break;
case 2:
addEmployee();
break;
case 3:
deleteEmployee();
break;
case 4:
searchEmployeeById();
break;
case 5:
searchEmployeeByName();
break;
case 6:
modifyEmployee();
break;
case 7:
saveEmployeeInfo();
break;
case 8:
loadEmployeeInfo();
break;
case 0:
printf("程序已退出!\n");
break;
default:
printf("无效的选择!\n");
break;
}
} while (choice != 0);
return 0;
}
```
在这个程序中,我们先定义了一个职工信息结构体 `Employee`,包含了职工号、姓名、性别和年龄。然后定义了一个职工列表 `employees`,用于存储所有的职工信息。在 `main` 函数中,我们不断循环显示主菜单,等待用户的选择,并调用相应的函数实现相应的功能。
每个功能的实现都比较简单,例如显示职工列表时,我们只需要遍历 `employees` 数组,逐个输出每个职工的信息即可。新增职工信息时,我们先判断当前职工数量是否已达到上限,如果是,则无法新增;否则,读取用户输入的职工信息,将其保存到 `employees` 数组中,并增加职工数量。
其他功能的实现也类似,需要读取用户的输入,进行相关的操作,最后输出相应的结果。例如,按职工号查询职工信息时,我们需要读取用户输入的职工号,然后遍历 `employees` 数组,查找与该职工号匹配的职工信息。如果找到了,则输出职工信息,否则输出未找到职工信息。
最后,我们还实现了职工信息存盘和职工信息文件调入两个功能,用于将职工信息保存到文件中或从文件中读取职工信息。这里我们使用了二进制文件操作,将职工数量和职工列表分别以二进制形式写入或读出文件中。
以上是一个简单的职工档案管理系统的 C 语言实现,希望能够对您有所帮助。
阅读全文