Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Attached Files: Using the classes extDateType and dayType (both provided), desig

ID: 669099 • Letter: A

Question

Attached Files:

Using the classes extDateType and dayType (both provided), design the class calendarType so that, given the month and the year, we can print the calendar for that month. To print a monthly calendar, you must know the first day of the month and the number of days in that month. Thus, you must store the first day of the month, which is of the form dayType, and the month and the year of the calendar. Clearly, the month and the year can be stored in an object of the form extDateType by setting the day component of the date to 1 and the month and year as specified by the user. Thus, the class calendarType has two member variables: an object of the type dayType and an object of the type extDateType. Design the class calendarType so that the program can print a calendar for any month starting January 1, 1500. Note that the day for January 1 of the year 1500 is a Monday. To calculate the first day of a month, you can add the appropriate days to Monday of January 1, 1500.

For the class calendarType, include the following operations:

Determine the first day of the month for which the calendar will be printed. Call this operation firstDayOfMonth.

Set the month.

Set the year.

Return the month.

Return the year.

Print the calendar for the particular month.

Add the appropriate constructors to initialize the member variables.

Write the definitions of the member functions of the class calendarType to implement the operations of the class calendarType.

You are being provided with:

dayType.h

dayTypeImp.cpp

dateType.h

dateTypeImp.cpp

extDateType.h

extDateTypeImp.cpp

calendarType.h

UML Diagram for calendarType

You will turn in:

calendarTypeImp.cpp

A test driver

Your test driver should produce output similar to the following:

   September 2017
    Sun    Mon    Tue    Wed    Thu    Fri    Sat
                                         1      2
      3      4      5      6      7      8      9
     10     11     12     13     14     15     16
     17     18     19     20     21     22     23
     24     25     26     27     28     29     30



To print another calendar enter month and year.
Enter 0 0 to quit.
2 2016
                     February 2016
    Sun    Mon    Tue    Wed    Thu    Fri    Sat
             1      2      3      4      5      6
      7      8      9     10     11     12     13
     14     15     16     17     18     19     20
     21     22     23     24     25     26     27
     28     29

To print another calendar enter month and year.
Enter 0 0 to quit.
2 2017
                     February 2017
    Sun    Mon    Tue    Wed    Thu    Fri    Sat
                           1      2      3      4
      5      6      7      8      9     10     11
     12     13     14     15     16     17     18
     19     20     21     22     23     24     25
     26     27     28

To print another calendar enter month and year.
Enter 0 0 to quit.
0 0

Please look at the grading rubric for details on how the project will be graded.

Explanation / Answer

#include <iostream>
#include <cstdlib>
#include <iomanip>
using namespace std;
bool isLeapYear (int);
int firstDayofnewyearMonth (int );
int numOfDaysInMonth (int, bool);
void printHeader (int);
void printMonth (int, int&);
void skip (int);
void skipToDay (int);
void disaster ();
int main ()
{
system ("color f1 ");
int year, firstDayInCurrentMonth;
int currentMonth = 1;
int numDays;
bool leap;
cout << "year you want calendar for? ";
cin >>year;
cout<<endl;
firstDayInCurrentMonth=firstDayofnewyearMonth(year);
leap = isLeapYear(year);
skip(9);
cout << year << endl;
while (currentMonth <= 12)
{
numDays = numOfDaysInMonth(currentMonth, leap);
printHeader(currentMonth);
printMonth(numDays, firstDayInCurrentMonth);
cout << endl << endl << endl;
currentMonth = currentMonth + 1;
}
cout << endl;
}
bool isLeapYear (int year)
{
return   ((year%4==0) && (year%100 !=0))||(year%400==0) ;      
}
int firstDayofnewyearMonth(int year)
{
int day_start;
int x1, x2, x3;
x1 = (year - 1)/ 4;
x2 = (year - 1)/ 100;
x3 = (year - 1)/ 400;
day_start = (year + x1 - x2 + x3) %7;
return day_start;
}
int numOfDaysInMonth (int m, bool leap)
{
if (m == 1) return(31);
else if (m == 2) if (leap) return(29);else return(28);
else if (m == 3) return(31);
else if (m == 4) return(30);
else if (m == 5) return(31);
else if (m == 6) return(30);
else if (m == 7) return(31);
else if (m == 8) return(31);
else if (m == 9) return(30);
else if (m == 10) return(31);
else if (m == 11) return(30);
else if (m == 12) return(31);
else disaster();
}
void printHeader (int m)
{
if (m == 1)
{
skip(7);
cout << "January" << endl;
}
else if (m == 2) { skip(7); cout << "February" << endl;
}
else if (m == 3) { skip(7); cout << "March" << endl;
}
else if (m == 4) { skip(7); cout << "April" << endl;
}
else if (m == 5) { skip(7); cout << "May" << endl;
}
else if (m == 6) { skip(7); cout << "June" << endl;
}
else if (m == 7) { skip(7); cout << "July" << endl;
}
else if (m == 8) { skip(7); cout << "August" << endl;
}
else if (m == 9) { skip(7); cout << "September" << endl;
}
else if (m == 10) { skip(7); cout << "October" << endl;
}
else if (m == 11) { skip(7); cout << "November" << endl;
}
else if (m == 12) { skip(7); cout << "December" << endl;
}
else disaster();
cout << " S M T W T F S" <<endl;
cout << "____________________" << endl;
}
void skip (int i)
{
while (i > 0)
{
cout << " ";
i = i - 1;
}
}
void printMonth (int numDays, int &weekDay)
{
int day = 1;
skipToDay(weekDay);
while (day <= numDays)
{
cout << setw(2) << day << " ";
if (weekDay == 6)
{
cout << endl;
weekDay = 0;
}
else weekDay = weekDay + 1;
day = day + 1;
}
}
void skipToDay (int d)
{
return skip(3*d);
}
void disaster ()
{
cout << "Disaster! Exiting ..." << endl;
exit ( -1);
}