Anda di halaman 1dari 5

Q9: Hospital Management System.

Step by Step functionalities needs to be implemented:


I. Client will enter patient details along with department name he/she wants to
visit to the server.
II. Server will hold all doctors’ name for each department in a database.
III. Whenever any patient comes from client, server will check doctor’s availability
and assign one doctor to the patient for the concerned department.
IV. If no doctor will be available in that time no doctor would be assigned to that
patient.
V. After every 1 minute, each assigned doctor will be free.
VI. Server will maintain one queue for the waited patient, and assign free doctor
accordingly
VII. Connection will be closed when client wants to.

Code:
Client Side:
#include <stdio.h>
#include <sys/socket.h>
#include <stdlib.h>
#include <netinet/in.h>
#include <string.h>
#include<math.h>
#include <arpa/inet.h>
#include<unistd.h>
#include<iostream>
#include<bits/stdc++.h>

using namespace std;

#defne PORT s0s0


#defne loop8i, a, b ior8iaa; i<b; i++

int main8int argc, char const *argv[] {


struct sockaddr_in address;
int sock a 0, valread;
struct sockaddr_in serv_addr;
char bufer[[256] a {0};
ii88sock a socket8AF_INET , SOCK_ST REAM, 0 < 0 {
printi8"\n Socket creation error \n" ;
return -1;
}
memset8&serv_addr, '0', sizeoi8serv_addr ;
serv_addr.sin_iamily a AF_INET ;
serv_addr.sin_port a htons8PORT ;
ii8inet_pton8AF_INET , "1[27.0.0.1", &serv_addr.sin_addr <a0 {
printi8"\nInvalid address \n" ;
return -1;
}
ii 8connect8sock, 8struct sockaddr * &serv_addr, sizeoi8serv_addr <0{
printi8"\nConnection Failed \n" ;
return -1;
}

cout<<"~ Welcome to ISM Health Center ~\n";

while8true {
string patient_name, department_to_visit, patient_sex, patient_age,
patient_status;
cout<<"\nPlease enter the iollowing patient details 8or to exit:\n";
cout<<"\nName: "; getline8cin, patient_name ;
cout<<"\nAge: "; getline8cin, patient_age ;
cout<<"\nSex:"; getline8cin, patient_sex ;
cout<<"\nDepartment to visit: "; getline8cin, department_to_visit ;

string send_data a patient_name + "@" + patient_age +"@" + patient_sex


+ "@" + department_to_visit;
send8sock, send_data.data8 , send_data.size8 , 0 ;
int len a recv8sock, bufer, sizeoi8bufer , 0 ;
patient_status.append8bufer, bufer + len ;
cout<<"Patient Status:"<<patient_status<<endl;
}
return 0;
}

Server Side:
#include <unistd.h>
#include <stdio.h>
#include <sys/socket.h>
#include <stdlib.h>
#include <netinet/in.h>
#include <string.h>
#include<math.h>
#include <arpa/inet.h>
#include<iostream>
#include<bits/stdc++.h>

using namespace std;

#defne PORT s0s0


#defne loop8i, a, b ior8iaa; i<b; i++

typedei struct Doctor{


string name;
bool avialable;
}doc;

typedei struct Department{


string name;
doc doctor[[2];
}dept;

typedei struct Patient{


string name;
string age;
string sex;
string department_to_visit;
}pat;
dept departments[[2];

void init_db8 {
departments[0].name a "ENT ";
departments[0].doctor[0].name a "Dr. Khana";
departments[0].doctor[0].avialable a true;
departments[0].doctor[1].name a "Dr. Sharma";
departments[0].doctor[1].avialable a true;

departments[1].name a "A&E";
departments[1].doctor[0].name a "Dr. Kumar";
departments[1].doctor[0].avialable a true;
departments[1].doctor[1].name a "Dr. Singh";
departments[1].doctor[1].avialable a true;
}

int main8int argc, char const *argv[] {


queue<pat> waiting_queue;
int server_id, new_socket, valread;
struct sockaddr_in address;
int opt a 1;
int addrlen a sizeoi8address ;
char bufer[51[2] a {0};

ii 88server_id a socket8AF_INET , SOCK_ST REAM, 0 aa 0 {


perror8"socket iailed" ;
exit8EXIT _FAILURE ;
}
ii 8setsockopt8server_id, SOL_SOCKET , SO_REUSEADDR |
SO_REUSEPORT ,&opt, sizeoi8opt {
perror8"setsockopt" ;
exit8EXIT _FAILURE ;
}
address.sin_iamily a AF_INET ;
address.sin_addr.s_addr a INADDR_ANY;
address.sin_port a htons8 PORT ;
ii 8bind8server_id, 8struct sockaddr * &address,sizeoi8address <0 {
perror8"bind iailed" ;
exit8EXIT _FAILURE ;
}
ii 8listen8server_id, 3 < 0 {
perror8"listen" ;
exit8EXIT _FAILURE ;
}
ii 88new_socket a accept8server_id, 8struct sockaddr * &address,
8socklen_t* &addrlen <0 {
perror8"accept" ;
exit8EXIT _FAILURE ;
}
init_db8 ;
int i, j;
while8true {
vector<string> p_data;
int tag a 1;
string status;
int len a recv8new_socket, bufer, sizeoi8bufer , 0 ;
char delim[] a "@";
char *token a strtok8bufer, delim ;
while8token {
p_data.push_back8token ;
token a strtok8NULL, delim ;
}
len a p_data.size8 ;
bool fag a ialse;
ior8int ka0; k<len; k++ {
ii8p_data[k] aa "0" {
fag a true;
break;
}
}
ii8fag break;
ior8ia0; i<51[2; i++ bufer[i] a '\0';
pat patient;
patient.name a p_data[0]; patient.age a p_data[1];
patient.sex a p_data[[2]; patient.department_to_visit a p_data[3];
p_data.clear8 ;
waiting_queue.push8patient ;
ii8waiting_queue.size8 > 3 {
init_db8 ;
}
pat patient_new a waiting_queue.iront8 ;
waiting_queue.pop8 ;
ior8ia0; i<[2; i++ {
ii8departments[i].name aa patient_new.department_to_visit break;
}
ii8iaa[2 {
status a "T his Department doesn't exits";
}
else{
ior8ja0; j<[2; j++ {
ii8departments[i].doctor[j].avialable {
departments[i].doctor[j].avialable a ialse;
break;
}
}
ii8jaa[2 {
status a "Doctors are busy please wait ior some time";
tag a 0;
}
else{
status a departments[i].doctor[j].name + " is assinged to " +
patient_new.name;
}
}
ii8tagaa0 {
waiting_queue.push8patient_new ;
}
send8new_socket, status.data8 , status.size8 , 0 ;
}
return 0;
}
Output:

Anda mungkin juga menyukai