请用c语言编写一个员工管理系统的程序,要求1. 录入员工信息:从键盘录入表示员工信息的结构体数组各项数据,并将结构体数组的内容写入表示员工信息的文件中。 2. 更新员工信息:可以实现多次向数据文件追加员工记录的功能,添加完毕后返回主菜单:能够实现根据员工工号删除文件中员工信息的操作,且可多次删除记录;可以实现根据员工工号修改员工信息的功能,其中员工信息包括:工号、姓名、年龄、工作、性别、地址、电话、入职时间,并将最终数据存储到文件中。 3. 查询员工信息:可分别根据姓名、年龄、工作对员工信息进行查询。 4. 排列员工信息:可根据年龄从小到大的顺序对员工信息进行排序。 5.统计员工信息:能够根据员工的年龄、工作和性别统计显示满足要求的所有员工信息。 6. 输出员工信息:将员工信息文件中的数据输出到显示器上。 7. 实现输入数字0则退出管理系统。
时间: 2024-03-03 11:51:34 浏览: 36
好的,以下是员工管理系统的C语言程序:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_EMPLOYEE_NUM 100
typedef struct {
char id[10];
char name[20];
int age;
char job[20];
char sex[10];
char address[50];
char phone[20];
char enroll_time[20];
} Employee;
Employee employees[MAX_EMPLOYEE_NUM];
int employee_num = 0;
void save_employee_to_file(const char* filename) {
FILE* fp = fopen(filename, "wb");
if (fp == NULL) {
printf("Can't open file %s\n", filename);
return;
}
fwrite(employees, sizeof(Employee), employee_num, fp);
fclose(fp);
}
void load_employee_from_file(const char* filename) {
FILE* fp = fopen(filename, "rb");
if (fp == NULL) {
printf("Can't open file %s\n", filename);
return;
}
employee_num = fread(employees, sizeof(Employee), MAX_EMPLOYEE_NUM, fp);
fclose(fp);
}
void print_employee(const Employee* emp) {
printf("ID: %s\n", emp->id);
printf("Name: %s\n", emp->name);
printf("Age: %d\n", emp->age);
printf("Job: %s\n", emp->job);
printf("Sex: %s\n", emp->sex);
printf("Address: %s\n", emp->address);
printf("Phone: %s\n", emp->phone);
printf("Enroll time: %s\n", emp->enroll_time);
}
void add_employee() {
Employee emp;
printf("Input employee ID: ");
scanf("%s", emp.id);
printf("Input employee name: ");
scanf("%s", emp.name);
printf("Input employee age: ");
scanf("%d", &emp.age);
printf("Input employee job: ");
scanf("%s", emp.job);
printf("Input employee sex: ");
scanf("%s", emp.sex);
printf("Input employee address: ");
scanf("%s", emp.address);
printf("Input employee phone: ");
scanf("%s", emp.phone);
printf("Input employee enroll time: ");
scanf("%s", emp.enroll_time);
employees[employee_num++] = emp;
}
void delete_employee() {
char id[10];
printf("Input employee ID to delete: ");
scanf("%s", id);
for (int i = 0; i < employee_num; i++) {
if (strcmp(employees[i].id, id) == 0) {
for (int j = i; j < employee_num-1; j++) {
employees[j] = employees[j+1];
}
employee_num--;
printf("Employee %s has been deleted.\n", id);
return;
}
}
printf("Can't find employee %s.\n", id);
}
void modify_employee() {
char id[10];
printf("Input employee ID to modify: ");
scanf("%s", id);
for (int i = 0; i < employee_num; i++) {
if (strcmp(employees[i].id, id) == 0) {
printf("Input new employee name: ");
scanf("%s", employees[i].name);
printf("Input new employee age: ");
scanf("%d", &employees[i].age);
printf("Input new employee job: ");
scanf("%s", employees[i].job);
printf("Input new employee sex: ");
scanf("%s", employees[i].sex);
printf("Input new employee address: ");
scanf("%s", employees[i].address);
printf("Input new employee phone: ");
scanf("%s", employees[i].phone);
printf("Input new employee enroll time: ");
scanf("%s", employees[i].enroll_time);
printf("Employee %s has been modified.\n", id);
return;
}
}
printf("Can't find employee %s.\n", id);
}
void query_employee_by_name() {
char name[20];
printf("Input employee name to query: ");
scanf("%s", name);
for (int i = 0; i < employee_num; i++) {
if (strcmp(employees[i].name, name) == 0) {
print_employee(&employees[i]);
}
}
}
void query_employee_by_age() {
int age;
printf("Input employee age to query: ");
scanf("%d", &age);
for (int i = 0; i < employee_num; i++) {
if (employees[i].age == age) {
print_employee(&employees[i]);
}
}
}
void query_employee_by_job() {
char job[20];
printf("Input employee job to query: ");
scanf("%s", job);
for (int i = 0; i < employee_num; i++) {
if (strcmp(employees[i].job, job) == 0) {
print_employee(&employees[i]);
}
}
}
void sort_employee_by_age() {
for (int i = 0; i < employee_num-1; i++) {
for (int j = i+1; j < employee_num; j++) {
if (employees[i].age > employees[j].age) {
Employee tmp = employees[i];
employees[i] = employees[j];
employees[j] = tmp;
}
}
}
printf("Employees have been sorted by age.\n");
}
void count_employee() {
int age, count = 0;
char job[20], sex[10];
printf("Input employee age to count: ");
scanf("%d", &age);
for (int i = 0; i < employee_num; i++) {
if (employees[i].age == age) {
count++;
}
}
printf("There are %d employees with age %d.\n", count, age);
printf("Input employee job to count: ");
scanf("%s", job);
count = 0;
for (int i = 0; i < employee_num; i++) {
if (strcmp(employees[i].job, job) == 0) {
count++;
}
}
printf("There are %d employees with job %s.\n", count, job);
printf("Input employee sex to count: ");
scanf("%s", sex);
count = 0;
for (int i = 0; i < employee_num; i++) {
if (strcmp(employees[i].sex, sex) == 0) {
count++;
}
}
printf("There are %d employees with sex %s.\n", count, sex);
}
void print_all_employee() {
for (int i = 0; i < employee_num; i++) {
print_employee(&employees[i]);
}
}
int main() {
load_employee_from_file("employees.dat");
while (1) {
printf("===== Employee Management System =====\n");
printf("1. Add employee\n");
printf("2. Delete employee\n");
printf("3. Modify employee\n");
printf("4. Query employee by name\n");
printf("5. Query employee by age\n");
printf("6. Query employee by job\n");
printf("7. Sort employee by age\n");
printf("8. Count employee\n");
printf("9. Print all employee\n");
printf("0. Quit\n");
printf("Please input your choice: ");
int choice;
scanf("%d", &choice);
switch (choice) {
case 1:
add_employee();
save_employee_to_file("employees.dat");
break;
case 2:
delete_employee();
save_employee_to_file("employees.dat");
break;
case 3:
modify_employee();
save_employee_to_file("employees.dat");
break;
case 4:
query_employee_by_name();
break;
case 5:
query_employee_by_age();
break;
case 6:
query_employee_by_job();
break;
case 7:
sort_employee_by_age();
save_employee_to_file("employees.dat");
break;
case 8:
count_employee();
break;
case 9:
print_all_employee();
break;
case 0:
return 0;
default:
printf("Invalid choice!\n");
}
}
return 0;
}
```
以上就是一个简单的员工管理系统的C语言程序,可以实现录入、更新、查询、排序、统计和输出员工信息的功能。