c语言编写程序【问题描述】设计一个用于人事管理的People(人员)类。考虑到通用性,这里只抽象出所有类型人员都具有的属性:姓名char name[11]、编号char number[7]、性别char sex[3]、生日birthday、身份证号char id[19]。其中“出生日期”声明为一个“日期”类内嵌子对象。用成员函数实现对人员信息的录入和显示。要求包括:构造函数和析构函数、拷贝构造函数、内联成员函数。在测试程序中声明people类的对象数组(要求使用动态内存分配生成对象数组),录入数据并显示相关信息。注:输出信息时先通过拷贝构造函数生成第一个员工的副本并输出其相关信息,然后再输出所有员工的相关信息。 【输入形式】先输入员工人数,再依次输入每个员工的信息。 【输出形式】输出信息时先通过拷贝构造函数生成第一个员工的副本并输出其相关信息,然后再输出所有员工的相关信息。
时间: 2024-02-19 18:59:04 浏览: 30
以下是该问题的C语言程序实现:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define NAME_SIZE 11
#define NUMBER_SIZE 7
#define SEX_SIZE 3
#define ID_SIZE 19
typedef struct Date {
int year;
int month;
int day;
} Date;
typedef struct People {
char name[NAME_SIZE];
char number[NUMBER_SIZE];
char sex[SEX_SIZE];
Date birthday;
char id[ID_SIZE];
inline void input() {
printf("请输入姓名:");
scanf("%s", name);
printf("请输入编号:");
scanf("%s", number);
printf("请输入性别:");
scanf("%s", sex);
printf("请输入出生日期(格式:yyyy-mm-dd):");
scanf("%d-%d-%d", &birthday.year, &birthday.month, &birthday.day);
printf("请输入身份证号:");
scanf("%s", id);
}
inline void output() {
printf("姓名:%s,编号:%s,性别:%s,出生日期:%d-%02d-%02d,身份证号:%s\n", name, number, sex, birthday.year, birthday.month, birthday.day, id);
}
People() {
memset(name, 0, NAME_SIZE);
memset(number, 0, NUMBER_SIZE);
memset(sex, 0, SEX_SIZE);
memset(id, 0, ID_SIZE);
}
People(const People& p) {
strcpy(name, p.name);
strcpy(number, p.number);
strcpy(sex, p.sex);
memcpy(&birthday, &p.birthday, sizeof(Date));
strcpy(id, p.id);
}
~People() {}
} People;
int main() {
int n;
printf("请输入员工人数:");
scanf("%d", &n);
People* p = (People*)malloc(sizeof(People) * n);
printf("请依次输入员工信息:\n");
for (int i = 0; i < n; i++) {
p[i].input();
}
People p1(p[0]);
printf("第一个员工的信息为:\n");
p1.output();
printf("所有员工的信息为:\n");
for (int i = 0; i < n; i++) {
p[i].output();
}
free(p);
return 0;
}
```
程序中定义了两个结构体:Date和People。其中,Date用于表示日期,People用于表示人员。People中包含了姓名、编号、性别、生日、身份证号等信息,并实现了输入和输出功能。同时,People还定义了构造函数、拷贝构造函数和析构函数,并使用了动态内存分配生成对象数组。
在主函数中,首先读入员工人数,然后使用malloc函数分配内存生成对象数组,并依次输入所有员工的信息。接着,使用拷贝构造函数生成第一个员工的副本并输出其相关信息,最后再输出所有员工的相关信息。程序运行完毕后,使用free函数释放动态分配的内存。
相关推荐
![](https://img-home.csdnimg.cn/images/20210720083646.png)
![](https://img-home.csdnimg.cn/images/20210720083646.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)