adding the date class files

This commit is contained in:
Jidong Xiao
2023-09-05 01:30:31 -04:00
parent 22eb148f65
commit 02bd8a0a65
4 changed files with 157 additions and 2 deletions

View File

@@ -0,0 +1,86 @@
// File: date.cpp
// Purpose: Implementation file for the Date class.
#include <iostream>
#include "date.h"
// array to figure out the number of days, it's used by the auxiliary function daysInMonth
const int DaysInMonth[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
Date::Date() { //default constructor
day = 1;
month = 1;
year = 1900;
}
Date::Date(int aMonth, int aDay, int aYear) { // construct from month, day, & year
month = aMonth;
day = aDay;
year = aYear;
}
int Date::getDay() const {
return day;
}
int Date::getMonth() const {
return month;
}
int Date::getYear() const {
return year;
}
void Date::setDay(int d) {
day = d;
}
void Date::setMonth(int m) {
month = m;
}
void Date::setYear(int y) {
year = y;
}
void Date::increment() {
if (!isLastDayInMonth()) {
day++;
} else {
day = 1;
if (month == 12) { // December
month = 1;
year++;
} else {
month++;
}
}
}
bool Date::isEqual(const Date& date2) const {
return day == date2.day && month == date2.month && year == date2.year;
}
bool Date::isLeapYear() const {
return (year%4 ==0 && year % 100 != 0) || year%400 == 0;
}
int Date::lastDayInMonth() const {
if (month == 2 && isLeapYear())
return 29;
else
return DaysInMonth[ month ];
}
bool Date::isLastDayInMonth() const {
return day == lastDayInMonth(); // uses member function
}
void Date::print() const {
std::cout << month << "/" << day << "/" << year;
}
bool sameDay(const Date& date1, const Date& date2) {
return date1.getDay() == date2.getDay() && date1.getMonth() == date2.getMonth();
}

View File

@@ -0,0 +1,36 @@
// File: date.h
// Purpose: Header file with declaration of the Date class, including
// member functions and private member variables.
class Date {
public:
Date();
Date(int aMonth, int aDay, int aYear);
// ACCESSORS
int getDay() const;
int getMonth() const;
int getYear() const;
// MODIFIERS
void setDay(int aDay);
void setMonth(int aMonth);
void setYear(int aYear);
void increment();
// other member functions that operate on date objects
bool isEqual(const Date& date2) const; // same day, month, & year?
bool isLeapYear() const;
int lastDayInMonth() const;
bool isLastDayInMonth() const;
void print() const; // output as month/day/year
private: // REPRESENTATION (member variables)
int day;
int month;
int year;
};
// prototypes for other functions that operate on class objects are often
// included in the header file, but outside of the class declaration
bool sameDay(const Date &date1, const Date &date2); // same day & month?

View File

@@ -0,0 +1,29 @@
// Program: date_main.cpp
// Purpose: Demonstrate use of the Date class.
#include <iostream>
#include "date.h"
int main() {
std::cout << "Please enter today's date.\n"
<< "Provide the month, day and year: ";
int month, day, year;
std::cin >> month >> day >> year;
Date today(month, day, year);
//Let's show what happens if we try to use today.month (private member variable)
Date tomorrow(today.getMonth(), today.getDay(), today.getYear());
tomorrow.increment();
std::cout << "Tomorrow is ";
tomorrow.print();
std::cout << std::endl;
Date Sallys_Birthday(9,29,1995);
if (sameDay(tomorrow, Sallys_Birthday)) {
std::cout << "Hey, tomorrow is Sally's birthday!\n";
}
std::cout << "The last day in this month is " << today.lastDayInMonth() << std::endl;
return 0;
}