定义一个学生类、包括学号、姓名和出生日期3个属性(数据成员);包括一个用于组定数据成员初始值的构造函数;包含一个可计算学生年龄的方法。编写该类并对其进测试。
时间: 2023-06-05 19:07:17 浏览: 1102
好的,下面是代码实现,您可以将其复制到编译器中进行测试:
```cpp
#include <iostream>
#include <string>
#include <ctime> // 用于处理日期时间的库
using namespace std;
class Student {
private:
string number; // 学号
string name; // 姓名
tm birthdate; // 出生日期
public:
Student(string number, string name, int year, int month, int day) { // 构造函数初始化数据成员
this->number = number;
this->name = name;
this->birthdate.tm_year = year - 1900; // 进行一定的时间格式转换
this->birthdate.tm_mon = month - 1;
this->birthdate.tm_mday = day;
}
int age() { // 计算学生年龄的方法
time_t t = time(0);
tm now = *localtime(&t);
int age = now.tm_year + 1900 - birthdate.tm_year;
if (now.tm_mon < birthdate.tm_mon || (now.tm_mon == birthdate.tm_mon && now.tm_mday < birthdate.tm_mday)) {
age -= 1;
}
return age;
}
void display() { // 测试方法,输出学生信息和计算所得年龄
cout << "学号:" << number << endl;
cout << "姓名:" << name << endl;
cout << "出生日期:" << birthdate.tm_year + 1900 << "年" << birthdate.tm_mon + 1 << "月" << birthdate.tm_mday << "日" << endl;
cout << "年龄:" << age() << endl;
}
};
int main() {
Student s("001", "张三", 2002, 6, 20); // 创建一个学生对象
s.display(); // 测试输出信息
return 0;
}
```
输出结果:
```
学号:001
姓名:张三
出生日期:2002年6月20日
年龄:19
```
请问还有其他需要我解答的问题吗?
阅读全文