文章目录
- 题目一:职工信息管理系统设计
- 代码块
- employeeManagement.h
- employeeManage.c
- test.c
- 调试验证
- 录入信息,并浏览
- 验证职工号唯一
- 保存职工信息,加载职工信息
- 按职工号进行查询
- 根据id删除职工
- 修改职工信息
题目一:职工信息管理系统设计
职工信息包括职工号、姓名、性别、年龄、学历、工资、住址、电话等(职工号不重复)。
设计职工信息管理系统,功能包括:
- 系统以菜单方式工作。
- 职工信息录入功能(职工信息用文件保存)--输入。
- 职工信息浏览功能--输出。
- 职工信息查询功能--算法。
- 按学历查询等。
- 按职工号查询等。
- 职工信息删除、修改功能(可选项)。
代码块
employeeManagement.h
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>// 定义最大职工数量
#define MAX_EMPLOYEES 100//定义职工结构体
typedef struct {int id; // 职工号char name[50]; // 姓名char gender[50]; // 性别int age; // 年龄char education[50]; // 学历double salary; // 工资char address[100]; // 地址char phone[20]; // 电话
}Employee;
// 显示菜单
void showMenu();
// 主菜单函数
void menu(Employee* employees, int* count);
// 打印单个职工信息
void printEmployee(Employee emp);
// 检查职工号是否唯一
int isIdUnique(Employee* employees, int count, int id);
// 添加职工信息
void addEmployee(Employee* employees, int* count);
// 显示所有职工信息
void displayEmployee(Employee* employees, int count);
// 按学历查询职工信息
void searchByEducation(Employee* employees, int count);
// 按职工号查询职工信息
void searchById(Employee* employees, int count);
// 删除职工信息
void deleteEmployee(Employee* employees, int* count);
// 修改职工信息
void modifyEmployee(Employee* employees, int count);
// 保存职工信息到文件
void saveToFile(Employee* employees, int count);
// 加载职工信息
void loadFromFile(Employee* employees, int* count);
employeeManage.c
#include"employeeManagement.h"// 显示菜单
void showMenu() {printf("\n");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("+-------------------------+\n");printf("请选择操作: ");
}
// 主菜单函数
void menu(Employee* employees, int* count) {int choice;while (1) {showMenu();scanf("%d", &choice);switch (choice) {case 1://printf("录入职工信息\n");addEmployee(employees, count);break;case 2://printf("浏览职工信息\n");displayEmployee(employees, *count);break;case 3://printf("按学历查询职工信息\n");searchByEducation(employees, *count);break;case 4://printf("按职工号查询职工信息\n");searchById(employees, *count);break;case 5://printf("删除职工信息\n");deleteEmployee(employees, count);break;case 6://printf("修改职工信息\n");modifyEmployee(employees, *count);break;case 7://printf("退出\n");saveToFile(employees, *count);return;default:printf("无效的选择,请重新输入。\n");}}
}
// 打印单个职工信息
void printEmployee(Employee emp) {printf("职工号: %d\n", emp.id);printf("姓名: %s\n", emp.name);printf("性别: %s\n", emp.gender);printf("年龄: %d\n", emp.age);printf("学历: %s\n", emp.education);printf("工资: %.2f\n", emp.salary);printf("地址: %s\n", emp.address);printf("电话: %s\n", emp.phone);printf("\n");
}
// 检查职工号是否唯一
int isIdUnique(Employee* employees, int count, int id) {for (int i = 0; i < count; i++) {if (employees[i].id == id) {return 0; //职工号不唯一}}return 1;//职工号唯一
}
// 添加职工信息
void addEmployee(Employee* employees, int* count) {if (*count >= MAX_EMPLOYEES) {printf("已达到最大容量,无法添加更多职工。\n");return;}Employee* emp = &employees[*count];int id;printf("请输入职工号: ");scanf("%d", &id);if (!isIdUnique(employees, *count, id)) {printf("职工号已存在,请重新输入。\n");return;}emp->id = id;printf("请输入姓名: ");scanf("%s", emp->name);printf("请输入性别: ");scanf("%s", emp->gender);printf("请输入年龄: ");scanf("%d", &emp->age);printf("请输入学历: ");scanf("%s", emp->education);printf("请输入工资: ");scanf("%lf", &emp->salary);printf("请输入地址: ");scanf("%s", emp->address);printf("请输入电话: ");scanf("%s", emp->phone);(*count)++;printf("职工 %s 信息录入成功\n", emp->name);}
// 显示所有职工信息
void displayEmployee(Employee* employees, int count) {for (int i = 0; i < count; i++) {printEmployee(employees[i]);}
}
// 按学历查询职工信息
void searchByEducation(Employee* employees, int count) {char education[50];printf("请输入学历进行查询:");scanf("%s", education);int found = 0;for (int i = 0; i < count; i++) {if (strcmp(employees[i].education, education) == 0) {printEmployee(employees[i]);found = 1;}}if (!found) {printf("没有找到符合条件的职工。\n");}
}
// 按职工号查询职工信息
void searchById(Employee* employees, int count) {int id;printf("请输入职工号进行查询: ");scanf("%d", &id);for (int i = 0; i < count; i++) {if (employees[i].id == id) {printEmployee(employees[i]);return;}}printf("没有找到该职工号的职工信息。\n");
}
// 删除职工信息
void deleteEmployee(Employee* employees, int* count) {int id;printf("请输入要删除的职工号: ");scanf("%d", &id);for (int i = 0; i < *count; i++) {if (employees[i].id == id) {//将要删除的职工信息后移for (int j = i; j < *count - 1; j++) {employees[j] = employees[j + 1];}(*count)--;//总数减一printf("职工号 %d 的信息已经删除。\n", id);return;}}printf("没有找到该职工号的职工信息,无法删除。\n");
}
// 修改职工信息
void modifyEmployee(Employee* employees, int count) {int id;printf("请输入要修改的职工号:");scanf("%d", &id);for (int i = 0; i < count; i++) {if (employees[i].id == id) {// 提示用户输入新的信息printf("请输入新的姓名: ");scanf("%s", employees[i].name);printf("请输入新的性别: ");scanf("%s", employees[i].gender);printf("请输入新的年龄: ");scanf("%d", &employees[i].age);printf("请输入新的学历: ");scanf("%s", employees[i].education);printf("请输入新的工资: ");scanf("%lf", &employees[i].salary);printf("请输入新的地址: ");scanf("%s", employees[i].address);printf("请输入新的电话: ");scanf("%s", employees[i].phone);printf("职工号 %d 的信息已修改。\n", id);return;}}printf("没有找到该职工号的职工信息,无法修改。\n");
}
// 保存职工信息到文件
void saveToFile(Employee* employees, int count) {FILE* file = fopen("employees.txt", "w");if (file == NULL) {printf("无法打开文件。\n");return;}for (int i = 0; i < count; i++) {Employee* emp = &employees[i];fprintf(file, "%d %s %s %d %s %.2f %s %s\n",emp->id, emp->name, emp->gender, emp->age,emp->education, emp->salary, emp->address, emp->phone);}fclose(file);printf("职工信息保存成功。\n");
}
// 加载职工信息
void loadFromFile(Employee* employees, int* count) {FILE* file = fopen("employees.txt", "r");if (file == NULL) {printf("无法打开文件。\n");return;}*count = 0;while (*count < MAX_EMPLOYEES && fscanf(file, "%d %s %s %d %s %lf %s %s",&employees[*count].id,employees[*count].name,employees[*count].gender,&employees[*count].age,employees[*count].education,&employees[*count].salary,employees[*count].address,employees[*count].phone) == 8) {(*count)++;}fclose(file);printf("从文件加载了 %d 条记录。\n", *count);
}
test.c
#include"employeeManagement.h"
int main() {Employee employees[MAX_EMPLOYEES];int count = 0;loadFromFile(employees, &count);menu(employees, &count);return 0;
}
调试验证
录入信息,并浏览