source code for hospital management system in c++

12
#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

Upload: rajiv-kumar-garg

Post on 07-Nov-2014

1.224 views

Category:

Documents


7 download

TRANSCRIPT

Page 1: Source Code for Hospital Management System in C++

#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

Page 2: Source Code for Hospital Management System in C++

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–)

{

Page 3: Source Code for Hospital Management System in C++

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

Page 4: Source Code for Hospital Management System in C++

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;

Page 5: Source Code for Hospital Management System in C++

}

}

}

// 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;

}

Page 6: Source Code for Hospital Management System in C++

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)

{

Page 7: Source Code for Hospital Management System in C++

// 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();

Page 8: Source Code for Hospital Management System in C++

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)

{

Page 9: Source Code for Hospital Management System in C++

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 << ”

Page 10: Source Code for Hospital Management System in C++

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

Page 11: Source Code for Hospital Management System in C++

}

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 << ”

Page 12: Source Code for Hospital Management System in C++

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

}

}

}