用c++写一个,。假设一个公司员工的正式员工实行终身编号制,第一个正式 的员工编号为1+入职时间,第二个正式员工编号为2+入职时 间。 (例如第一个员工是2023年3月20日入职,那么他的编号自动 生成为120230320,第二个员工也是2023年3月20日入职,那 么他的编号自动生成为:220230320,第三个员工是2023年3 月21日入职,那么他的编号自动生成为:320230321) 。请编写程序设计员工类,其基本属性包括员工工号、姓年龄 。工号按照上述规则自动生成
时间: 2023-05-28 07:05:00 浏览: 108
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_EMPLOYEE_NUM 1000
typedef struct Employee {
char id[10]; // 员工编号
char name[20]; // 姓名
int age; // 年龄
} Employee;
// 初始化员工编号
void init_employee_id(Employee *employee, int index, int year, int month, int day) {
// 生成员工编号
int num = (index + 1) % MAX_EMPLOYEE_NUM;
sprintf(employee->id, "%d%02d%02d%03d", year % 100, month, day, num);
}
// 添加员工
void add_employee(Employee *employees, int *employee_count) {
// 获取员工信息
printf("请输入员工姓名:");
scanf("%s", employees[*employee_count].name);
printf("请输入员工年龄:");
scanf("%d", &employees[*employee_count].age);
// 获取当前日期
printf("请输入入职日期(年 月 日,用空格分隔):");
int year, month, day;
scanf("%d %d %d", &year, &month, &day);
// 生成员工编号
init_employee_id(&employees[*employee_count], *employee_count, year, month, day);
// 增加员工数量
*employee_count += 1;
printf("员工添加成功!\n");
}
// 根据员工编号查找员工
Employee *find_employee_by_id(Employee *employees, int employee_count, char *id) {
for (int i = 0; i < employee_count; i++) {
if (strcmp(employees[i].id, id) == 0) {
return &employees[i];
}
}
return NULL;
}
// 根据员工姓名查找员工
Employee *find_employee_by_name(Employee *employees, int employee_count, char *name) {
for (int i = 0; i < employee_count; i++) {
if (strcmp(employees[i].name, name) == 0) {
return &employees[i];
}
}
return NULL;
}
// 显示菜单
void show_menu() {
printf("========================================\n");
printf("1. 添加员工\n");
printf("2. 根据编号查找员工\n");
printf("3. 根据姓名查找员工\n");
printf("4. 显示所有员工\n");
printf("0. 退出程序\n");
printf("========================================\n");
}
int main() {
Employee employees[MAX_EMPLOYEE_NUM]; // 员工数组
int employee_count = 0; // 员工数量
int choice; // 用户选择的菜单项
do {
show_menu();
printf("请输入选项:");
scanf("%d", &choice);
switch (choice) {
case 1: // 添加员工
add_employee(employees, &employee_count);
break;
case 2: { // 根据编号查找员工
char id[10];
printf("请输入员工编号:");
scanf("%s", id);
Employee *employee = find_employee_by_id(employees, employee_count, id);
if (employee == NULL) {
printf("未找到该员工!\n");
} else {
printf("员工编号:%s,姓名:%s,年龄:%d\n", employee->id, employee->name, employee->age);
}
break;
}
case 3: { // 根据姓名查找员工
char name[20];
printf("请输入员工姓名:");
scanf("%s", name);
Employee *employee = find_employee_by_name(employees, employee_count, name);
if (employee == NULL) {
printf("未找到该员工!\n");
} else {
printf("员工编号:%s,姓名:%s,年龄:%d\n", employee->id, employee->name, employee->age);
}
break;
}
case 4: // 显示所有员工
printf("所有员工:\n");
for (int i = 0; i < employee_count; i++) {
printf("员工编号:%s,姓名:%s,年龄:%d\n", employees[i].id, employees[i].name, employees[i].age);
}
break;
case 0: // 退出程序
printf("程序已退出!\n");
exit(0);
default:
printf("无效选项!\n");
}
} while (1);
return 0;
}
阅读全文