一、第一关:对象创建与赋值

Date.cpp

  1. /***********************************
  2. * Copyright(c) 2016-2099 CTGU YOUNGMIEN
  3. * All rights reserved.
  4. #pragma once
  5. * Version: v1.0
  6. * Author: YOUNGMIEN
  7. * Date: 2020/4/8
  8. * Company: CTGU
  9. *
  10. * fileName: Date.cpp
  11. * Descripton: Task File 任务文件
  12. *
  13. *******************************/
  14. /*
  15. Name: Date.cpp
  16. Date: 07/04/20 10:09
  17. Description: 任务文件
  18. 第1关需要完成
  19. //设置日期
  20. void reset();
  21. void set(int,int,int);
  22. void set(string);
  23. void show();
  24. 第2关需要完成
  25. //构造函数
  26. //constructor default
  27. Date();
  28. //constructor with args
  29. Date(int,int,int);
  30. //copy constructor
  31. Date(const Date&);
  32. void show();
  33. 第3关需要完成
  34. string toString();
  35. //constructor default
  36. Date();
  37. //constructor with args
  38. Date(int,int,int);
  39. //copy constructor
  40. Date(const Date&);
  41. KiKi学习了面向对象技术,学会了通过封装属性(变量)和行为(函数)定义类,现在他要设计一个电子日历类TDate。
  42. 它有3个私有数据成员:m_month,m_day,m_year和若干个公有成员函数,要求:
  43. (1)带有默认形参值的构造函数,默认值为0, 0, 0;
  44. (2)输出日期函数,用“日/月/年”格式输出日期;
  45. (3)设置日期函数,从键盘输入年、月、日。
  46. 输入描述:
  47. 一行,三个整数,用空格分隔,分别表示年、月、日。
  48. 输出描述:
  49. 一行,用"日/月/年"格式输出日期。
  50. 示例1
  51. 输入
  52. 2019 12 30
  53. 输出
  54. 30/12/2019
  55. */
  56. /*
  57. PART 2:类的实现部分
  58. 通过类作用域标识符::来指明成员函数是属于哪一个类
  59. */
  60. #include "Date.h"
  61. #include "comm.h"
  62. #include <iomanip>
  63. void Date::reset() {
  64. //第1关需要完成
  65. /********** Begin ***********/
  66. cout << "reset date to default!" << endl;
  67. this->m_year = 2000;
  68. this->m_month = 1;
  69. this->m_day = 1;
  70. return;
  71. /********** End ***********/
  72. }
  73. //将日期设置为输入的year,month,day
  74. void Date::set(int year, int month, int day) {
  75. //第1关需要完成
  76. /********** Begin ***********/
  77. cout << "set date to the value you specified!" << endl;
  78. this->m_year = year;
  79. this->m_month = month;
  80. this->m_day = day;
  81. /********** End ***********/
  82. }
  83. //将日期设置为输入的string,格式为:yyyy-mm-dd 2020-04-01
  84. void Date::set(string s) {
  85. //第1关需要完成
  86. /********** Begin ***********/
  87. cout << "set date to the value from string!" << endl;
  88. string year = s.substr(0, 4);
  89. string month = s.substr(5, 2);
  90. string day = s.substr(8, 2);
  91. this->m_year = atoi(year.c_str());
  92. this->m_month = atoi(month.c_str());
  93. this->m_day = atoi(day.c_str());
  94. return;
  95. /********** End ***********/
  96. }
  97. //构造函数 ,初始化 第2, 3关需要完成
  98. /*无参:default
  99. 假定日期为2000-1-1
  100. */
  101. Date::Date(){
  102. /********** Begin ***********/
  103. /********** End ***********/
  104. }
  105. /*
  106. @param y,m,d: int ,年,月,日
  107. */
  108. Date::Date(int y,int m ,int d){
  109. /********** Begin ***********/
  110. /********** End ***********/
  111. }
  112. //copy constructor,参数为同类对象常引用
  113. // Parameters are const referenced by same object
  114. Date::Date(const Date& objref){
  115. /********** Begin ***********/
  116. /********** End ***********/
  117. }
  118. //输出:格式为日,月,年. 2020年4月7日 07/04/2020
  119. void Date::show(){
  120. //第1关需要完成第2关需要完成
  121. /********** Begin ***********/
  122. cout << "dd/mm/yyyy: ";
  123. // cout << this->m_day << "/" << this->m_month << "/" << this->m_year << endl;
  124. cout << setw(2) << setfill('0') << this->m_day << '/' << setw(2) << setfill('0')<< this->m_month << '/' << setw(2) << setfill('0') << this->m_year << endl;
  125. /********** End ***********/
  126. }
  127. //将Date对象转换为string对象 第3关需要完成
  128. string Date:: toString(){
  129. string to_str="";
  130. /********** Begin ***********/
  131. /********** End ***********/
  132. return to_str;
  133. }

二、第二关:构造函数

Date.cpp

  1. /***********************************
  2. * Copyright(c) 2016-2099 CTGU YOUNGMIEN
  3. * All rights reserved.
  4. #pragma once
  5. * Version: v1.0
  6. * Author: YOUNGMIEN
  7. * Date: 2020/4/8
  8. * Company: CTGU
  9. *
  10. * fileName: Date.cpp
  11. * Descripton: Task File 任务文件
  12. *
  13. *******************************/
  14. #include "comm.h"
  15. /*
  16. Name: Date.cpp
  17. Date: 07/04/20 10:09
  18. Description: 任务文件
  19. 第1关需要完成
  20. //设置日期
  21. void reset();
  22. void set(int,int,int);
  23. void set(string);
  24. void show();
  25. 第2关需要完成
  26. //构造函数
  27. //constructor default
  28. Date();
  29. //constructor with args
  30. Date(int,int,int);
  31. //copy constructor
  32. Date(const Date&);
  33. void show();
  34. 第3关需要完成
  35. string toString();
  36. //constructor default
  37. Date();
  38. //constructor with args
  39. Date(int,int,int);
  40. //copy constructor
  41. Date(const Date&);
  42. KiKi学习了面向对象技术,学会了通过封装属性(变量)和行为(函数)定义类,现在他要设计一个电子日历类TDate。
  43. 它有3个私有数据成员:m_month,m_day,m_year和若干个公有成员函数,要求:
  44. (1)带有默认形参值的构造函数,默认值为0, 0, 0;
  45. (2)输出日期函数,用“日/月/年”格式输出日期;
  46. (3)设置日期函数,从键盘输入年、月、日。
  47. 输入描述:
  48. 一行,三个整数,用空格分隔,分别表示年、月、日。
  49. 输出描述:
  50. 一行,用"日/月/年"格式输出日期。
  51. 示例1
  52. 输入
  53. 2019 12 30
  54. 输出
  55. 30/12/2019
  56. */
  57. /*
  58. PART 2:类的实现部分
  59. 通过类作用域标识符::来指明成员函数是属于哪一个类
  60. */
  61. #include "Date.h"
  62. //设置日期
  63. //将日期重置为2000年1月1日
  64. void Date::reset() {
  65. //第1关需要完成
  66. /********** Begin ***********/
  67. cout << "reset date to default!" << endl;
  68. this->m_year = 2000;
  69. this->m_month = 1;
  70. this->m_day = 1;
  71. return;
  72. /********** End ***********/
  73. }
  74. //将日期设置为输入的year,month,day
  75. void Date::set(int year, int month, int day) {
  76. //第1关需要完成
  77. /********** Begin ***********/
  78. cout << "set date to the value you specified!" << endl;
  79. this->m_year = year;
  80. this->m_month = month;
  81. this->m_day = day;
  82. /********** End ***********/
  83. }
  84. //将日期设置为输入的string,格式为:yyyy-mm-dd 2020-04-01
  85. void Date::set(string s) {
  86. //第1关需要完成
  87. /********** Begin ***********/
  88. cout << "set date to the value from string!" << endl;
  89. string year = s.substr(0, 4);
  90. string month = s.substr(5, 2);
  91. string day = s.substr(8, 2);
  92. this->m_year = atoi(year.c_str());
  93. this->m_month = atoi(month.c_str());
  94. this->m_day = atoi(day.c_str());
  95. return;
  96. /********** End ***********/
  97. }
  98. //构造函数 ,初始化 第2, 3关需要完成
  99. /*无参:default
  100. 假定日期为2000-1-1
  101. */
  102. Date::Date(){
  103. /********** Begin ***********/
  104. cout << "constructor default!" << endl;
  105. this->m_year = 2000;
  106. this->m_month = 1;
  107. this->m_day = 1;
  108. /********** End ***********/
  109. }
  110. /*
  111. @param y,m,d: int ,年,月,日
  112. */
  113. Date::Date(int y,int m ,int d){
  114. /********** Begin ***********/
  115. cout << "constructor with 3 args!" << endl;
  116. this->m_year = y;
  117. this->m_month = m;
  118. this->m_day = d;
  119. /********** End ***********/
  120. }
  121. //copy constructor,参数为同类对象常引用
  122. // Parameters are const referenced by same object
  123. Date::Date(const Date& objref){
  124. /********** Begin ***********/
  125. cout << "copy constructor !" << endl;
  126. this->m_year = objref.m_year;
  127. this->m_month = objref.m_month;
  128. this->m_day = objref.m_day;
  129. /********** End ***********/
  130. }
  131. //输出:格式为日,月,年. 2020年4月7日 07/04/2020
  132. void Date::show(){
  133. //第1关需要完成第2关需要完成
  134. /********** Begin ***********/
  135. cout << "dd/mm/yyyy: ";
  136. // cout << this->m_day << "/" << this->m_month << "/" << this->m_year << endl;
  137. cout << setw(2) << setfill('0') << this->m_day << '/' << setw(2) << setfill('0')<< this->m_month << '/' << setw(2) << setfill('0') << this->m_year << endl;
  138. /********** End ***********/
  139. }
  140. //将Date对象转换为string对象 第3关需要完成
  141. string Date:: toString(){
  142. string to_str="";
  143. /********** Begin ***********/
  144. /********** End ***********/
  145. return to_str;
  146. }

三、第三关:toString——对象转string

Date.cpp

  1. /***********************************
  2. * Copyright(c) 2016-2099 CTGU YOUNGMIEN
  3. * All rights reserved.
  4. #pragma once
  5. * Version: v1.0
  6. * Author: YOUNGMIEN
  7. * Date: 2020/4/8
  8. * Company: CTGU
  9. *
  10. * fileName: Date.cpp
  11. * Descripton: Task File 任务文件
  12. *
  13. *******************************/
  14. #include "comm.h"
  15. /*
  16. Name: Date.cpp
  17. Date: 07/04/20 10:09
  18. Description: 任务文件
  19. 第1关需要完成
  20. //设置日期
  21. void reset();
  22. void set(int,int,int);
  23. void set(string);
  24. void show();
  25. 第2关需要完成
  26. //构造函数
  27. //constructor default
  28. Date();
  29. //constructor with args
  30. Date(int,int,int);
  31. //copy constructor
  32. Date(const Date&);
  33. void show();
  34. 第3关需要完成
  35. string toString();
  36. //constructor default
  37. Date();
  38. //constructor with args
  39. Date(int,int,int);
  40. //copy constructor
  41. Date(const Date&);
  42. KiKi学习了面向对象技术,学会了通过封装属性(变量)和行为(函数)定义类,现在他要设计一个电子日历类TDate。
  43. 它有3个私有数据成员:m_month,m_day,m_year和若干个公有成员函数,要求:
  44. (1)带有默认形参值的构造函数,默认值为0, 0, 0;
  45. (2)输出日期函数,用“日/月/年”格式输出日期;
  46. (3)设置日期函数,从键盘输入年、月、日。
  47. 输入描述:
  48. 一行,三个整数,用空格分隔,分别表示年、月、日。
  49. 输出描述:
  50. 一行,用"日/月/年"格式输出日期。
  51. 示例1
  52. 输入
  53. 2019 12 30
  54. 输出
  55. 30/12/2019
  56. */
  57. /*
  58. PART 2:类的实现部分
  59. 通过类作用域标识符::来指明成员函数是属于哪一个类
  60. */
  61. #include "Date.h"
  62. //设置日期
  63. //将日期重置为2000年1月1日
  64. void Date::reset() {
  65. //第1关需要完成
  66. /********** Begin ***********/
  67. cout << "reset date to default!" << endl;
  68. this->m_year = 2000;
  69. this->m_month = 1;
  70. this->m_day = 1;
  71. return;
  72. /********** End ***********/
  73. }
  74. //将日期设置为输入的year,month,day
  75. void Date::set(int year, int month, int day) {
  76. //第1关需要完成
  77. /********** Begin ***********/
  78. cout << "set date to the value you specified!" << endl;
  79. this->m_year = year;
  80. this->m_month = month;
  81. this->m_day = day;
  82. /********** End ***********/
  83. }
  84. //将日期设置为输入的string,格式为:yyyy-mm-dd 2020-04-01
  85. void Date::set(string s) {
  86. //第1关需要完成
  87. /********** Begin ***********/
  88. cout << "set date to the value from string!" << endl;
  89. string year = s.substr(0, 4);
  90. string month = s.substr(5, 2);
  91. string day = s.substr(8, 2);
  92. this->m_year = atoi(year.c_str());
  93. this->m_month = atoi(month.c_str());
  94. this->m_day = atoi(day.c_str());
  95. return;
  96. /********** End ***********/
  97. }
  98. //构造函数 ,初始化 第2, 3关需要完成
  99. /*无参:default
  100. 假定日期为2000-1-1
  101. */
  102. Date::Date(){
  103. /********** Begin ***********/
  104. cout << "constructor default!" << endl;
  105. this->m_year = 2000;
  106. this->m_month = 1;
  107. this->m_day = 1;
  108. /********** End ***********/
  109. }
  110. /*
  111. @param y,m,d: int ,年,月,日
  112. */
  113. Date::Date(int y,int m ,int d){
  114. /********** Begin ***********/
  115. cout << "constructor with 3 args!" << endl;
  116. this->m_year = y;
  117. this->m_month = m;
  118. this->m_day = d;
  119. /********** End ***********/
  120. }
  121. //copy constructor,参数为同类对象常引用
  122. // Parameters are const referenced by same object
  123. Date::Date(const Date& objref){
  124. /********** Begin ***********/
  125. cout << "copy constructor !" << endl;
  126. this->m_year = objref.m_year;
  127. this->m_month = objref.m_month;
  128. this->m_day = objref.m_day;
  129. /********** End ***********/
  130. }
  131. //输出:格式为日,月,年. 2020年4月7日 07/04/2020
  132. void Date::show(){
  133. //第1关需要完成第2关需要完成
  134. /********** Begin ***********/
  135. cout << "dd/mm/yyyy: ";
  136. // cout << this->m_day << "/" << this->m_month << "/" << this->m_year << endl;
  137. cout << setw(2) << setfill('0') << this->m_day << '/' << setw(2) << setfill('0')<< this->m_month << '/' << setw(2) << setfill('0') << this->m_year << endl;
  138. /********** End ***********/
  139. }
  140. //将Date对象转换为string对象 第3关需要完成
  141. string Date:: toString(){
  142. string to_str="";
  143. /********** Begin ***********/
  144. to_str = to_str + to_string(this->m_day);
  145. to_str += '/';
  146. to_str += to_string(this->m_month);
  147. to_str += '/';
  148. to_str += to_string(this->m_year);
  149. /********** End ***********/
  150. return to_str;
  151. }