用c++假设一个公司员工的正式员工实行终身编号制,第一个正式的员工编号为1+入职时间,第二个正式员工编号为2+入职时间。
时间: 2024-06-12 09:04:17 浏览: 7
以下是一个用 C 语言实现的员工编号程序:
```c
#include <stdio.h>
int main() {
int n;
printf("请输入员工入职时间:\n");
scanf("%d", &n);
printf("员工编号为:%d\n", n+1);
return 0;
}
```
这个程序会提示用户输入员工的入职时间,然后根据入职时间计算出员工的编号并输出。由于第一个正式员工的编号是 1,因此需要将计算出的编号加上 1 才是员工的真实编号。
相关问题
用c++写一个,。假设一个公司员工的正式员工实行终身编号制,第一个正式 的员工编号为1+入职时间,第二个正式员工编号为2+入职时 间。 (例如第一个员工是2023年3月20日入职,那么他的编号自动 生成为120230320,第二个员工也是2023年3月20日入职,那 么他的编号自动生成为:220230320,第三个员工是2023年3 月21日入职,那么他的编号自动生成为:320230321) 。请编写程序设计员工类,其基本属性包括员工工号、姓年龄 。工号按照上述规则自动生成
#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;
}
5.假设一个公司的正式员工实行终生编号制,第一个正式员工的工号为1,第二个正式员工的工号为2,依次类推。试编写程序设计员工类,其基本属性包括员工工号、姓名、年龄和职称等。工号按上述规则自动生成。请设计必要的成员函数,完成此类用c++写
#include <iostream>
#include <string>
using namespace std;
class Employee {
private:
int empNo; //员工工号
string empName; //员工姓名
int empAge; //员工年龄
string empTitle; //员工职称
static int count; //静态变量,用于记录员工数量,初始值为0
public:
Employee(string name, int age, string title) { //构造函数,自动生成员工工号
count++; //员工数量加1
empNo = count;
empName = name;
empAge = age;
empTitle = title;
}
void printInfo() { //打印员工信息
cout << "工号:" << empNo << endl;
cout << "姓名:" << empName << endl;
cout << "年龄:" << empAge << endl;
cout << "职称:" << empTitle << endl;
}
};
int Employee::count = 0; //静态变量初始化
int main() {
Employee e1("张三", 25, "程序员");
Employee e2("李四", 30, "项目经理");
e1.printInfo();
cout << endl;
e2.printInfo();
return 0;
}