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

home / study / engineering / computer science / computer science questions and a

ID: 3592103 • Letter: H

Question

home / study / engineering / computer science / computer science questions and answers / please use information provided to complete this program in c++. need to create a struct and ...

Your question has been answered

Let us know if you got a helpful answer. Rate this answer

Question: Please use information provided to complete this program in C++. Need to create a struct and 2 cl...

Please use information provided to complete this program in C++.

Need to create a struct and 2 classes (outline for them are below). The following tasks are done when the appropriate letter is chosen.

N: The new patient’s first name, last name, and birthdate are asked for and entered. The new patient ID will be the last name concatenated with the first name and the year of birth. (Example: SmithJohn1998)   The primary doctor’s ID is also entered. The new patient object is placed in both arrays: one keeping all patients, and one keeping the patients who checked in today.

R: The returning patient’s ID is asked for, and the array holding all patients is searched for the patient object. If found, a copy of the patient object is placed in the array for all currently checked in patients. If not found, the user is returned to the main menu after asking them to either try R again, making sure the correct ID was entered, or choose N to enter the patient as a new patient.

O: Using the patient’s ID, the patient object is found in the array holding currently checked in patients. (If not found, the user is returned to the main menu after asking them to either try O again, making sure the correct ID was entered, or choose N or R to check in the patient as a new or returing patient.) The procedure record is updated by entering a new entry, with the current date, procedure ID, and provider ID. The up-dated patient object is then removed from the array of currently checked in patients, and replaces the old patient object in the main array. If the update fails, a message is output.

I: Using the patient’s ID, the main array holding all patients is searched for the patient object. If found the information it holds: the names, birthdate, the primary doctor ID, and a list of all past procedures done (date, procedure ID, procedure provider ID) is printed to the monitor.

P: From the array holding all patients currently checked in, a list is printed in nice readable form, showing the patient ID, first and last names, and the primary doctor ID for each patient.

Q: If the list of patients currently checked in is not empty, the list is printed out and the user asked to keep running the program so they can be checked out. If the list is empty, the program will write the patient objects in the main array to the binary file CurrentPatients.dat. It should overwrite all previous information in the file.

For the struct, you may use the following:

struct procedure
{

      Date dateOfProcedure;

int procedureID;

int procedureProviderID;

};

~~~

For the class Patient, you should have the following interface (public) member functions:

Class Patient{

Public:

Patient ( const char *, const char * , const char *, Date, int);

~Patient();

Patient & setID ( const char * ); //check if length of name string is < 32 if not, shorten to 32 letters.

Patient & setFirstName ( const char *); //check if length of name string is <15, if not, shorten to 14 letters.

Patient & setLastName ( const char *); //check if length of name string is <15, if not, shorten to 14 letters.

Patient & setBirthDate ( Date);

Patient & setPrimaryDoctorID (int);

const char * getID();

const char * getFirstName();

const char * getLastName();

Date getBirthDate();

int getPrimaryDoctorID();

bool enterProcedure(Date procedureDate, int procedureID,int procedureProviderID);

void printAllProcedures();

private:

char ID[33];

char firstName[15];

char lastName [15];

Date birthdate;

int primaryDoctorID;

procedure record[100];

int currentCountOfProcedures; // keeps track of how many procedures have been recorded if it reaches 500, no new procedures // can be entered.

};

~~~~

For the Date class, you may copy what is at the end of this assignment with the following changes:

void operator+=(int); // Does not return anything

bool leapYear( ) const;   // is the year for the date object a leap year?

bool endOfMonth( ) const; // is the date of the object the last day of the month?

~~~

Date class (Before changes asked for above)

// Definition of class Date in date.h

#ifndef DATE1_H

#define DATE1_H

#include

#include

using namespace std;

class Date {

   friend ostream &operator<<( ostream &, const Date & ); // allows easy output to a ostream

public:

   Date( int m = 1, int d = 1, int y = 1900 ); // constructor, note the default values

   void setDate( int, int, int ); // set the date

   const Date &operator+=( int ); // add days, modify object

   bool leapYear( int) const;    // is this a leap year?

   bool endOfMonth( int ) const; // is this end of month?

   int getMonth ( ) const;           // You need to implement this

   int getDay ( ) const;                   // You need to implement this

   int getYear ( ) const;                   // You need to implement this

   string getMonthString( ) const; // You need to implement this

private:

   int month;

   int day;

   int year;

static const int days[];         // array of days per month

   static const string monthName[]; // array of month names

   void helpIncrement();            // utility function

};

#endif

// Member function definitions for Date class in separate date.cpp file

#include

#include "date.h"

#include

//Initialize static members at file scope; one class-wide copy.

const int Date::days[] = { 0, 31, 28, 31, 30, 31, 30,

                           31, 31, 30, 31, 30, 31 };

const string Date::monthName[] = { "", "January",

      "February", "March", "April", "May", "June",

      "July", "August", "September", "October",

      "November", "December" };

Date::Date( int m, int d, int y ) { setDate( m, d, y ); } //Date constructor

void Date::setDate( int mm, int dd, int yy ) //Set the date

{

   month = ( mm >= 1 && mm <= 12 ) ? mm : 1;

   year = ( yy >= 1900 && yy <= 2100 ) ? yy : 1900;

   if ( month == 2 && leapYear(year ) ) //test for a leap year

      day = ( dd >= 1 && dd <= 29 ) ? dd : 1;

   else

      day = ( dd >= 1 && dd <= days[ month ] ) ? dd : 1;

}

const Date &Date::operator+=( int additionalDays )  //Add a specific number of days to a date

{

   for ( int i = 0; i < additionalDays; i++ )

      helpIncrement();

   return *this;    //enables cascading

}

bool Date::leapYear( int testYear ) const  //If the year is a leap year, return true;otherwise, return false

{

   if ( testYear % 400 == 0 || ( testYear % 100 != 0 && testYear % 4 == 0 ) )

      return true;   //a leap year

   else

      return false; // not a leap year

}

bool Date::endOfMonth(int testDay ) const //Determine if the day is the end of the month

{

   if ( month == 2 && leapYear( year ) )

      return (testDay == 29); //last day of Feb. in leap year

   else

      return (testDay == days[ month ]);

}

void Date::helpIncrement() //Function to help increment the date

{

   if ( ! endOfMonth( day )) { //date is not at the end of the month

      day++;

   }

   else if (month < 12 ) {       //date is at the end of the month, but month<12

      day = 1;

      ++month;

   }

   else       //end of month and year: last day of the year

   {

          day = 1;

month = 1;

++year;

       }

}

ostream &operator<<( ostream &output, const Date &d ) //Overloaded output operator

{

output << d.monthName[ d.month ] << ' '<< d.day << ", " << d.year;

return output;   //enables cascading

}

Explanation / Answer

Public:

Patient ( const char *, const char * , const char *, Date, int);

~Patient();

Patient & setID ( const char * ); //check if length of name string is < 32 if not, shorten to 32 letters.

Patient & setFirstName ( const char *); //check if length of name string is <15, if not, shorten to 14 letters.

Patient & setLastName ( const char *); //check if length of name string is <15, if not, shorten to 14 letters.

Patient & setBirthDate ( Date);

Patient & setPrimaryDoctorID (int);

const char * getID();

const char * getFirstName();

const char * getLastName();

Date getBirthDate();

int getPrimaryDoctorID();

bool enterProcedure(Date procedureDate, int procedureID,int procedureProviderID);

void printAllProcedures();

private:

char ID[33];

char firstName[15];

char lastName [15];

Date birthdate;

int primaryDoctorID;

procedure record[100];

int currentCountOfProcedures; // keeps track of how many procedures have been recorded if it reaches 500, no new procedures // can be entered.

};

~~~~

For the Date class, you may copy what is at the end of this assignment with the following changes:

void operator+=(int); // Does not return anything

bool leapYear( ) const;   // is the year for the date object a leap year?

bool endOfMonth( ) const; // is the date of the object the last day of the month?

~~~

Date class (Before changes asked for above)

// Definition of class Date in date.h

#ifndef DATE1_H

#define DATE1_H

#include

#include

using namespace std;

class Date {

   friend ostream &operator<<( ostream &, const Date & ); // allows easy output to a ostream

public:

   Date( int m = 1, int d = 1, int y = 1900 ); // constructor, note the default values

   void setDate( int, int, int ); // set the date

   const Date &operator+=( int ); // add days, modify object

   bool leapYear( int) const;    // is this a leap year?

   bool endOfMonth( int ) const; // is this end of month?

   int getMonth ( ) const;           // You need to implement this

   int getDay ( ) const;                   // You need to implement this

   int getYear ( ) const;                   // You need to implement this

   string getMonthString( ) const; // You need to implement this

private:

   int month;

   int day;

   int year;

static const int days[];         // array of days per month

   static const string monthName[]; // array of month names

   void helpIncrement();            // utility function

};

#endif

// Member function definitions for Date class in separate date.cpp file

#include

#include "date.h"

#include

//Initialize static members at file scope; one class-wide copy.

const int Date::days[] = { 0, 31, 28, 31, 30, 31, 30,

                           31, 31, 30, 31, 30, 31 };

const string Date::monthName[] = { "", "January",

      "February", "March", "April", "May", "June",

      "July", "August", "September", "October",

      "November", "December" };

Date::Date( int m, int d, int y ) { setDate( m, d, y ); } //Date constructor

void Date::setDate( int mm, int dd, int yy ) //Set the date

{

   month = ( mm >= 1 && mm <= 12 ) ? mm : 1;

   year = ( yy >= 1900 && yy <= 2100 ) ? yy : 1900;

   if ( month == 2 && leapYear(year ) ) //test for a leap year

      day = ( dd >= 1 && dd <= 29 ) ? dd : 1;

   else

      day = ( dd >= 1 && dd <= days[ month ] ) ? dd : 1;

}

const Date &Date::operator+=( int additionalDays )  //Add a specific number of days to a date

{

   for ( int i = 0; i < additionalDays; i++ )

      helpIncrement();

   return *this;    //enables cascading

}

bool Date::leapYear( int testYear ) const  //If the year is a leap year, return true;otherwise, return false

{

   if ( testYear % 400 == 0 || ( testYear % 100 != 0 && testYear % 4 == 0 ) )

      return true;   //a leap year

   else

      return false; // not a leap year

}

bool Date::endOfMonth(int testDay ) const //Determine if the day is the end of the month

{

   if ( month == 2 && leapYear( year ) )

      return (testDay == 29); //last day of Feb. in leap year

   else

      return (testDay == days[ month ]);

}

void Date::helpIncrement() //Function to help increment the date

{

   if ( ! endOfMonth( day )) { //date is not at the end of the month

      day++;

   }

   else if (month < 12 ) {       //date is at the end of the month, but month<12

      day = 1;

      ++month;

   }

   else       //end of month and year: last day of the year

   {

          day = 1;

month = 1;

++year;

       }

}

ostream &operator<<( ostream &output, const Date &d ) //Overloaded output operator

{

output << d.monthName[ d.month ] << ' '<< d.day << ", " << d.year;

return output;   //enables cascading

}

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Chat Now And Get Quote