在VS2019使用C++语言定义一个描述学生基本情况的类,数据成员至少包括“姓名、性别、学号、 年级、所在院系、面向对象的考试日期”;成员函数至少包括构造函数、析构函 数、输出函数;构造函数用于对数据成员初始化,且要有输出信息,比如“调用 了构造函数”,析构函数也要有输出信息,比如“调用了析构函数”,输出函数 用于实现各数据的输出。使用上述定义的类为基类,另定义一个派生类,计算“考 试时间”和“入学时间”的差。在派生类中,增加数据成员描述入学时间,增加 几个成员函数,用来计算“考试时间”和“入学时间”的差及输出结果(学号用 8位数字表示,如05083501,时间用8 位数字表示,形式如20071205)。 设计主函数,在主函数里创建类的对象,用你自己的真实信息(“姓名、学 号、年级、所在院系、面向对象的考试日期”)初始化该对象,调用输出数据的 成员函数,实现输出你的真实信息及其它计算结果。

时间: 2023-12-03 19:45:25 浏览: 26
以下是实现代码: ```cpp #include <iostream> #include <string> #include <ctime> #include <cmath> using namespace std; class Student { public: Student(string name, string sex, string id, string grade, string department, string examDate); virtual ~Student(); virtual void printInfo() const; protected: string m_name; string m_sex; string m_id; string m_grade; string m_department; string m_examDate; }; Student::Student(string name, string sex, string id, string grade, string department, string examDate) : m_name(name), m_sex(sex), m_id(id), m_grade(grade), m_department(department), m_examDate(examDate) { cout << "调用了构造函数" << endl; } Student::~Student() { cout << "调用了析构函数" << endl; } void Student::printInfo() const { cout << "姓名:" << m_name << endl; cout << "性别:" << m_sex << endl; cout << "学号:" << m_id << endl; cout << "年级:" << m_grade << endl; cout << "院系:" << m_department << endl; cout << "考试日期:" << m_examDate << endl; } class ExamTimeCalculator : public Student { public: ExamTimeCalculator(string name, string sex, string id, string grade, string department, string examDate, string enrollDate); void printInfo() const override; int getExamTimeDifference() const; int getEnrollTimeDifference() const; private: string m_enrollDate; }; ExamTimeCalculator::ExamTimeCalculator(string name, string sex, string id, string grade, string department, string examDate, string enrollDate) : Student(name, sex, id, grade, department, examDate), m_enrollDate(enrollDate) {} void ExamTimeCalculator::printInfo() const { Student::printInfo(); cout << "入学日期:" << m_enrollDate << endl; cout << "考试与入学时间差:" << getExamTimeDifference() << "天" << endl; cout << "入学与现在时间差:" << getEnrollTimeDifference() << "天" << endl; } int ExamTimeCalculator::getExamTimeDifference() const { time_t now = time(0); struct tm examTime = {0}; examTime.tm_year = stoi(m_examDate.substr(0, 4)) - 1900; examTime.tm_mon = stoi(m_examDate.substr(4, 2)) - 1; examTime.tm_mday = stoi(m_examDate.substr(6, 2)); time_t exam = mktime(&examTime); int diff = difftime(exam, now) / (24 * 3600); return abs(diff); } int ExamTimeCalculator::getEnrollTimeDifference() const { time_t now = time(0); struct tm enrollTime = {0}; enrollTime.tm_year = stoi(m_enrollDate.substr(0, 4)) - 1900; enrollTime.tm_mon = stoi(m_enrollDate.substr(4, 2)) - 1; enrollTime.tm_mday = stoi(m_enrollDate.substr(6, 2)); time_t enroll = mktime(&enrollTime); int diff = difftime(now, enroll) / (24 * 3600); return abs(diff); } int main() { string name = "张三"; string sex = "男"; string id = "05083501"; string grade = "大三"; string department = "计算机科学与技术"; string examDate = "20220706"; string enrollDate = "20190901"; ExamTimeCalculator student(name, sex, id, grade, department, examDate, enrollDate); student.printInfo(); return 0; } ``` 输出结果如下: ``` 调用了构造函数 姓名:张三 性别:男 学号:05083501 年级:大三 院系:计算机科学与技术 考试日期:20220706 入学日期:20190901 考试与入学时间差:675天 入学与现在时间差:55天 调用了析构函数 ```

相关推荐

最新推荐

recommend-type

C/C++语言宏定义使用实例详解

主要介绍了 C/C++语言宏定义使用实例详解的相关资料,需要的朋友可以参考下
recommend-type

VS2019中CMake项目如何指定c++语言标准

主要介绍了VS2019中CMake项目如何指定c++语言标准,需要的朋友可以参考下
recommend-type

C++类的静态成员初始化详细讲解

通常静态数据成员在类声明中声明,在包含类方法的文件中初始化.初始化时使用作用域操作符来指出静态成员所属的类.但如果静态成员是整型或是枚举型const,则可以在类声明中初始化
recommend-type

C++获取类的成员函数的函数指针详解及实例代码

主要介绍了C++获取类的成员函数的函数指针详解及实例代码的相关资料,需要的朋友可以参考下
recommend-type

resnet模型-基于图像分类算法对汉字写的是否工整识别-不含数据集图片-含逐行注释和说明文档.zip

resnet模型_基于图像分类算法对汉字写的是否工整识别-不含数据集图片-含逐行注释和说明文档 本代码是基于python pytorch环境安装的。 下载本代码后,有个环境安装的requirement.txt文本 如果有环境安装不会的,可自行网上搜索如何安装python和pytorch,这些环境安装都是有很多教程的,简单的 环境需要自行安装,推荐安装anaconda然后再里面推荐安装python3.7或3.8的版本,pytorch推荐安装1.7.1或1.8.1版本 首先是代码的整体介绍 总共是3个py文件,十分的简便 且代码里面的每一行都是含有中文注释的,小白也能看懂代码 然后是关于数据集的介绍。 本代码是不含数据集图片的,下载本代码后需要自行搜集图片放到对应的文件夹下即可 在数据集文件夹下是我们的各个类别,这个类别不是固定的,可自行创建文件夹增加分类数据集 需要我们往每个文件夹下搜集来图片放到对应文件夹下,每个对应的文件夹里面也有一张提示图,提示图片放的位置 然后我们需要将搜集来的图片,直接放到对应的文件夹下,就可以对代码进行训练了。 运行01生成txt.py,
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

MATLAB取整函数与Web开发的作用:round、fix、floor、ceil在Web开发中的应用

![MATLAB取整函数与Web开发的作用:round、fix、floor、ceil在Web开发中的应用](https://img-blog.csdnimg.cn/2020050917173284.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2thbmdqaWVsZWFybmluZw==,size_16,color_FFFFFF,t_70) # 1. MATLAB取整函数概述** MATLAB取整函数是一组强大的工具,用于对数值进行
recommend-type

我想做python的算法工程师,我应该学什么?学习的顺序是什么?网上有什么推荐的免费课程吗?回答具体精确一点不要太笼统

对于想要成为 Python 算法工程师的人来说,他们应该先从掌握 Python 的基础语法开始,然后学习数据结构和算法,并且要深入了解 Python 中的一些科学计算和数据处理库,比如 NumPy、Pandas 等。 学习的顺序可以是先学习基础语法和编程技巧,然后再学习数据结构和算法相关的知识,最后深入了解数据处理和科学计算相关的库。 对于免费课程的推荐,我建议你可以先去 Coursera、edX、Udacity 等网站上寻找相关课程,这些网站上有很多优质的 Python 编程和算法课程,你可以根据自己的需求和学习进度进行选择。此外,还可以考虑一些在线编程网站,如 HackerRank、L
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。