You are on page 1of 19

Code :

//Project Program for Hospital Database Queue array.

#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));

You might also like