Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

c++ (Class) Implement SortedUserType as a class sorted user objects. Create and implement the specification file (SortedUserType.h) and implementation file (SortedUserType.cpp). The SortedUserType class uses

c++

(Class) Implement SortedUserType as a class sorted user objects. Create and implement the specification file (SortedUserType.h) and implementation file (SortedUserType.cpp). The SortedUserType class uses NodeUser struct to create a node of a user in the list. For testing purposes, SortedUserType can store a maximum of 5 users (maxList). The user object will be inserted based on the increasing order of the users dateOfBirth.

Code:

DateType.h:

#include #include using namespace std; //declare a class to represent the Data ADT //This is File DataType.h. enum RelationType {LESS, EQUAL, GREATER}; //compares self with someDate. class DateType { public: void Initialize(int newMonth, int newDay, int newYear); int GetMonth() const; //returns month int GetYear() const; //returns year int GetDay() const; //returns day string GetMonthAsString() const; //returns month as string DateType Adjust(int daysAway) const; RelationType ComparedTo(DateType someDate) const; private: int year; int month; int day; };

DateType.cpp:

//File DataType.cpp contains the implementation of class DataType #include "DateType.h" #include #include using namespace std;

// Numbers of days in each month static int daysInMonth[] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 };

//Names of the months static string conversionTable[] = {"Error", "January", "February", "March", "April", "May","June", "July", "August", "September", "October", "November", "December"};

void DateType::Initialize (int newMonth, int newDay, int newYear) /* Post: if newMonth, newDay and newYear represents a valid date year is set to newYear; month is set to newMonth; day is set to newDay; otherwise a string exception is thrown, stating the first incorrect parameter */ { if (newMonth < 1 || newMonth>12) throw string("Month is invalid"); else if (newDay < 1 || newDay > daysInMonth[newMonth]) throw string("Day is invalid"); else if (newYear < 1583) throw string("Year is invalid"); year = newYear; month = newMonth; day = newDay; } int DateType::GetMonth() const //Accessor function for data member month { return month; }

string DateType::GetMonthAsString() const //returns data member as a string { return conversionTable[month]; }

int DateType::GetYear() const //Accessor function for data member year. { return year; }

int DateType::GetDay() const //Accessor function for data member day { return day; }

RelationType DateType::ComparedTo(DateType aDate) const /* Pre: self and aDate have been initialized post: function value = LESS, if self comes before aDate. = EQUAL, if self is the same as aDate. = GREATER, if self comes after aDate. */ { if (year < aDate.year) return LESS; else if (year > aDate.year) return GREATER; else if (month < aDate.month) return LESS; else if (month > aDate.month) return GREATER; else if (day < aDate.day) return LESS; else if (day > aDate.day) return GREATER; else return EQUAL; }

DateType DateType::Adjust(int daysAway) const //Pre: self has been initialized //Post: function value =newDate daysAway from self { int newDay = day + daysAway; int newMonth = month; int newYear = year; bool finished = false; int daysInThisMonth; DateType returnDate; while (!finished) { daysInThisMonth = daysInMonth[newMonth]; if (newMonth == 2) if (((newYear % 4 == 0) && !(newYear % 100 == 0)) || (newYear % 400 == 0)) daysInThisMonth++; if (newDay <= daysInThisMonth) finished = true; else { newDay = newDay - daysInThisMonth; newMonth = (newMonth % 12) + 1; if (newMonth == 1) newYear++; } }

returnDate.Initialize(newMonth, newDay, newYear); return returnDate; }

UserDetails.h

#include "DateType.h" #include class User { //Attributes private: char firstName[6], lastName[6]; DateType date; //Member functions public: //Constructor User(); //function is to initialize a user object with given values. void Initialize(char firstName[6], char lastName[6], DateType date); //function compare the self user with aUser RelationType comparedTo(User* aUser) const; //function returns a string that contains all information of the user string ToString(); };

UserDetails.cpp

//Implementation of User class #include "UserDetails.h" //Constructor User::User() { strcpy(firstName, ""); strcpy(lastName, ""); date.Initialize(1, 1, 1970); } //function is to initialize a user object with given values. void User::Initialize(char firstName[6], char lastName[6], DateType date) { strcpy(this->firstName,firstName); strcpy(this->lastName,lastName); this->date = date; } //function compare the self user with aUser RelationType User::comparedTo(User* aUser) const { if (this->comparedTo(aUser) == LESS) { return LESS; } else if (this->comparedTo(aUser) == GREATER) { return GREATER; } else { return EQUAL; } } //function returns a string that contains all information of the user string User::ToString() { return string(firstName)+" "+ string(lastName) + ", DOB: " + date.GetMonthAsString() + " " + to_string(date.GetDay()) + ", " + to_string(date.GetYear()); }

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

Focus On Geodatabases In ArcGIS Pro

Authors: David W. Allen

1st Edition

1589484452, 978-1589484450

More Books

Students also viewed these Databases questions

Question

Know the ethical issues and consequences of downsizing.

Answered: 1 week ago

Question

What are Decision Trees?

Answered: 1 week ago

Question

What is meant by the Term Glass Ceiling?

Answered: 1 week ago