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

C++ program Write a program that computes a patient\'s bill for a hospital stay.

ID: 3591541 • Letter: C

Question

C++ program

Write a program that computes a patient's bill for a hospital stay. This includes designing several classes: HospitalCharges, Surgery, Medication, PatientAccount, and Date class. Al class attributes must be private and accessed through public member functions The attributes of each class are summarized below: HospitalCharges class has the following private attributes vector surgeries; vector medications; vector patientsAccounts. Surgery class has the following private attributes: int surgeryCode; string surgeryDescription; double surgeryCharge; Medication class has the following private attributes int medicationCode; string medicationDescription; double medicationCharge; PatientAccount class has at least the following private attributes: const long patientAccountNum; //-nextPatientAccountNum string firstName; string lastName; long SSN; char gender; int age double dailyRate; Date admittDate; Date dischargeDate; vector patientSurgeries; vector patientMedications; static long nextPatientAccountNum; // initialize it to 1000 and increment it by 1 // as vou create a new obiect Date class has the following private attributes int month int day; int year,

Explanation / Answer

#include<iostream.h>
#include<conio.h>
#include<string.h>
#include<stdlib.h>

// define maximum number of patients in a queue
#define MAXPATIENTS 100

// define structure for patient data
struct patient
{
   char FirstName[50];
   char LastName[50];
   char ID[20];
};


// define class for queue
class queue
{
   public:
   queue (void);
   int AddPatientAtEnd (patient p);
   int AddPatientAtBeginning (patient p);
   patient GetNextPatient (void);
   int RemoveDeadPatient (patient * p);
   void OutputList (void);
   char DepartmentName[50];
   private:
   int NumberOfPatients;
   patient List[MAXPATIENTS];
};


// declare member functions for queue

queue::queue ()
{
   // constructor
   NumberOfPatients = 0;
}


int queue::AddPatientAtEnd (patient p)
{
   // adds a normal patient to the end of the queue.
   // returns 1 if successful, 0 if queue is full.
if (NumberOfPatients >= MAXPATIENTS)
   {
      // queue is full
      return 0;
   }
      // put in new patient
      else
      List[NumberOfPatients] = p; NumberOfPatients++;
      return 1;
}


int queue::AddPatientAtBeginning (patient p)
{
   // adds a critically ill patient to the beginning of the queue.
   // returns 1 if successful, 0 if queue is full.
   int i;
   if (NumberOfPatients >= MAXPATIENTS)
   {
      // queue is full
      return 0;
   }

   // move all patients one position back in queue
   for (i = NumberOfPatients-1; i >= 0; i--)
   {
      List[i+1] = List[i];
   }
   // put in new patient
   List[0] = p; NumberOfPatients++;
   return 1;
}


patient queue::GetNextPatient (void)
{
   // gets the patient that is first in the queue.
   // returns patient with no ID if queue is empty

   int i; patient p;
   if (NumberOfPatients == 0) {
   // queue is empty
   strcpy(p.ID,"");
   return p;}
   // get first patient
   p = List[0];
   // move all remaining patients one position forward in queue
   NumberOfPatients--;
   for (i=0; i<NumberOfPatients; i++)
   {
      List[i] = List[i+1];
   }
   // return patient
   return p;
}


int queue::RemoveDeadPatient (patient * p)
{
   // removes a patient from queue.
   // returns 1 if successful, 0 if patient not found
   int i, j, found = 0;
   // search for patient
   for (i=0; i<NumberOfPatients; i++)
   {
             if (stricmp(List[i].ID, p->ID) == 0)
       {
      // patient found in queue
      *p = List[i]; found = 1;
      // move all following patients one position forward in queue
      NumberOfPatients--;
          for (j=i; j<NumberOfPatients; j++)
               {
                       List[j] = List[j+1];
               }
       }
   }
   return found;
}


void queue::OutputList (void)
{
   // lists entire queue on screen
   int i;
   if (NumberOfPatients == 0)
   {
             cout << "
Queue is empty";
   }
   else
   {

       for (i=0; i<NumberOfPatients; i++)
       {
           cout << "
" << List[i].FirstName;
          cout << " " << List[i].LastName;
          cout << " " << List[i].ID;
       }
   }
}


// declare functions used by main:

patient InputPatient (void)
{
   // this function asks user for patient data.
   patient p;
   cout << "

Please enter data for new patient
First name: ";
   cin.getline(p.FirstName, sizeof(p.FirstName));
   cout << "
Last name: ";
   cin.getline(p.LastName, sizeof(p.LastName));
   cout << "
Social security number: ";
   cin.getline(p.ID, sizeof(p.ID));
   // check if data valid
   if (p.FirstName[0]==0 || p.LastName[0]==0 || p.ID[0]==0)
   {
             // rejected
             strcpy(p.ID,"");
             cout << "

Error: Data not valid. Operation cancelled.";
             getch();
   }
   return p;
}


void OutputPatient (patient * p)
{
   // this function outputs patient data to the screen
   if (p == NULL || p->ID[0]==0)
   {
             cout << "
No patient";
             return;
   }
   else
   cout << "

Patient data:";
   cout << "

First name: " << p->FirstName;
   cout << "

Last name: " << p->LastName;
   cout << "

Social security number: " << p->ID;
}


int ReadNumber()
{
   // this function reads an integer number from the keyboard.
   // it is used because input with cin >> doesn't work properly!
   char buffer[20];
   cin.getline(buffer, sizeof(buffer));
   return atoi(buffer);
}


void DepartmentMenu (queue * q)
{
   // this function defines the user interface with menu for one
department
   int choice = 0, success; patient p;
   while (choice != 6)
   {
             // clear screen
             clrscr();
             // print menu
             cout << "


Welcome to department: " << q->DepartmentName;
             cout << "

Please enter your choice:";
             cout << "

1: Add normal patient";
             cout << "
2: Add critically ill patient";
             cout << "
3: Take out patient for operation";
             cout << "
4: Remove dead patient from queue";
             cout << "
5: List queue";
             cout << "
6: Change department or exit
";
             // get user choice
             choice = ReadNumber();
             // do indicated action
         switch (choice)
      {
             case 1:   // Add normal patient
      p = InputPatient();
      if (p.ID[0])
           {
               success = q->AddPatientAtEnd(p);
               clrscr();
                  if (success)
                {
                      cout << "
Patient added:

";

                }
            else
           {
                  // error
                  cout << "

Error: The queue is full. Cannot add patient:";
           }
               OutputPatient(&p);
               cout << "

Press any key";
               getch();
      }
   break;

      case 2:   // Add critically ill patient
   p = InputPatient();
   if (p.ID[0])
         {
           success = q->AddPatientAtBeginning(p);
           clrscr();
              if (success)
           {
                     cout << "
Patient added:

";
                }
         else
                {
                     // error
                     cout << "

Error: The queue is full. Cannot add
patient:";
           }

              OutputPatient(&p);
                  cout << "

Press any key";
                  getch();
         }
   break;

      case 3:   // Take out patient for operation
   p = q->GetNextPatient();
   clrscr();
   if (p.ID[0])
        {
           cout << "
Patient to operate:

";
           OutputPatient(&p);}
   else
        {
           cout << "
There is no patient to operate.";
        }
           cout << "

Press any key";
           getch();
           break;

      case 4:   // Remove dead patient from queue
   p = InputPatient();
   if (p.ID[0])
       {
            success = q->RemoveDeadPatient(&p);
            clrscr();
              if (success)
              {
                  cout << "
Patient removed:

";
              }
              else
              {
                  // error
                  cout << "

Error: Cannot find patient:

";
              }
          OutputPatient(&p);
           cout << "

Press any key";
           getch();
       }
   break;

      case 5:   // List queue
   clrscr();
   q->OutputList();
   cout << "

Press any key";
   getch(); break;
   }
      }
}


// main function defining queues and main menu
void main ()
{
   int i, MenuChoice = 0;
   // define three queues
   queue departments[3];
   // set department names
   strcpy (departments[0].DepartmentName, "Heart clinic");
   strcpy (departments[1].DepartmentName, "Lung clinic");
   strcpy (departments[2].DepartmentName, "Plastic surgery");

   while (MenuChoice != 4)
   {
             // clear screen
             clrscr();
             // print menu
             cout << "


Welcome to Software City Hospital";
             cout << "

Please enter your choice:
";
          for (i = 0; i < 3; i++)
       {
          // write menu item for department i
          cout << "
" << (i+1) << ": " << departments[i].DepartmentName;
       }
            cout << "
4: Exit
";
            // get user choice
            MenuChoice = ReadNumber();
            // is it a department name?
             if (MenuChoice >= 1 && MenuChoice <= 3)
            {
          // call submenu for department
          // (using pointer arithmetics here:)
          DepartmentMenu (departments + (MenuChoice-1));
            }
   }
}

patient details

#include<iostream>
using namespace std;

class Patient    //Base Class
{
        char patient_name[100];
        int age;
        char sex[50];

        public:
                void accept_patient_details()
                {
                        cout<<" -------------------------------";
                        cout<<" Enter Patient Details";
                        cout<<" -------------------------------";
                        cout<<" Patient Name : ";
                        cin>>patient_name;
                        cout<<" Patient Age : ";
                        cin>>age;
                        cout<<" Sex          : ";
                        cin>>sex;
                }
                void display_patient_details()
                {
                        cout<<" -------------------------------";
                        cout<<" Displaying Patient Details";
                        cout<<" -------------------------------";
                        cout<<" Patient Name : "<<patient_name;
                        cout<<" Patient Age   : "<<age;
                        cout<<" Sex           : "<<sex;
                }
};
class IPD    //Base Class
{
        int ward_no;
        int bed_no;
        int charge_per_day;
    public:
        void accept_ipd_details()
        {
                cout<<" -------------------------------";
                cout<<" Enter IPD Details ";
                cout<<" -------------------------------";
                cout<<" Ward No.        : ";
                cin>>ward_no;
                cout<<" Bed No.         : ";
                cin>>bed_no;
                cout<<" Charge Per Day : ";
                cin>>charge_per_day;
        }
        void display_ipd_details()
        {
                cout<<" -------------------------------";
                cout<<" Displaying IPD Details";
                cout<<" -------------------------------";
                cout<<" Ward No.         : "<<ward_no;
                cout<<" Bed No.          : "<<bed_no;
                cout<<" Charge Per Day   : "<<charge_per_day;
        }
};
//Class IPDPatient is derived from Class IPD and Class Patient
class IPDPatient : public IPD, public Patient
{
        int no_of_days_admitted;

    public:
        void accept_ipd_patient_details()
        {
                accept_patient_details();
                accept_ipd_details();
                cout<<" Enter No. of Days Admitted   : ";
                cin>>no_of_days_admitted;
        }
        void display_ipd_patient_details()
        {
                display_patient_details();
                display_ipd_details();
                cout<<" -------------------------------";
                cout<<" No. of Days Admitted : "<<no_of_days_admitted;
        }
};
int main()
{
        IPDPatient *ipdt;   // Object ipdt is created of class IPDPatient <-- Child Class
        int i,cnt;
        cout<<" Enter No. of Patient Details You Want : ";
        cin>>cnt;
        ipdt=new IPDPatient[cnt];
        for(i=0;i<cnt;i++)
        {
                ipdt[i].accept_ipd_patient_details();
                ipdt[i].display_ipd_patient_details();
        }
        return 0;
}

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote