Reception شغل عمكم عطا
#include<iostream> using namespace std; struct Date { int day = 1; int month = 1; int year = 1900; int get_days() { return day + (month * 30) + year * 365; } //Date get_age() { // return between(now(), this); //} //Date between(Date other) { // return between(this, other); //} void print() { std::cout << "Year(s): " << year << ", Month(s): " << month << ", Day(s): " << day << std::endl; } static Date between(Date date, Date other) { return date - other; } static Date now() { return Date(); } protected: Date operator-(const Date& other) { Date result; result.day = abs(this->day - other.day); result.month = abs(this->month - other.month); result.year = abs(this->year - other.year); return result; } }; enum class Gender { UNKNOWN, MALE, FEMALE }; class Person { private: const char* firstName; const char* lastName; const char* nickName; Date birthday; Gender gender; double weight; double height; public: Person() { throw std::exception("Please specify first and last name."); } Person(const char* firstName, const char* lastName) { this->firstName = firstName; this->lastName = lastName; this->nickName = nullptr; this->gender = Gender::UNKNOWN; this->birthday = Date(); this->height = 0; this->weight = 0; } constexpr const char* getFirstName() { return firstName; } constexpr const char* getLastName() { return lastName; } constexpr const char* getNickName() { return nickName; } void setWeight(double weight) { this->weight = weight; } void setHeight(double height) { this->height = height; } void setBirthday(int year, int month, int day) { birthday.year = year; birthday.month = month; birthday.day = day; } void setGender(Gender& gender) { this->gender = gender; } void setNickName(const char* nickName) { this->nickName = nickName; } Date getAge() const { return Date::between(birthday, Date::now());; } int getWeight() const { return weight; } int getHeight() const { return height; } int print() const { Date::between(birthday, Date()); } }; enum class BloodType { UNKNOWN, A, B, AB, O, A_NEGATIVE, B_NEGATIVE, AB_NEGATIVE, O_NEGATIVE }; class Patient : public Person { int id; private: BloodType bloodType = BloodType::UNKNOWN; public: Patient() : Patient("First Name", "Last Name") { } Patient(const char* firstName, const char* lastName) : Person(firstName, lastName) { this->bloodType = bloodType; } BloodType getBloodType() { return bloodType; } void help() { } }; enum class MedicalSpeciality { }; class Doctor : public Person { private: MedicalSpeciality speciallity; public: Doctor(const char* firstName, const char* lastName) : Person(firstName, lastName) { } void check(Patient& patient) { } void giveMedicalExamine(Patient& patient) { } }; #include <list> class HospitalException : protected std::exception { private: const char* message; public: HospitalException(const char* message) : std::exception(message) { this->message = message; } constexpr const char* getMessage() { return message; } void print() { std::cerr << message << std::endl; } }; class Hospital { private: const int HOSPITAL_SIZE = 1024; public: std::list<Patient> patients = {}; void checkIn(Patient& patient) throw() { if (isFull()) { throw HospitalException("Hospital is full!"); } patients.push_front(patient); } int getPatientsCount() { return patients.size(); } bool isFull() { return patients.size() >= HOSPITAL_SIZE; } }; class AdministrativeSection : public Hospital { private: string office1 = "Hospital manager"; string office2 = "Nursing manager"; }; class MedicalSection : public Hospital { }; class EmergencySection : public MedicalSection { private: string room1_EM = "Distribution room"; string room2_EM = "CPR room"; //cpr it means : resuscitation room. Em = Emergency. string room3_EM = "Treatment room"; }; class XraysSection : public MedicalSection { private: string RoomXr = "Xrays room"; }; class IcuSection : public MedicalSection { private: string RoomIcu = "ICU room"; }; class SurgicalSection : public MedicalSection { private: string Room1Sl = "Males surgical room"; string Room2Sl = "Males surgical room"; string Room3Sl = "Females surgical room"; string Room4Sl = "Females surgical room"; // sl = surgical }; class CareSection : public MedicalSection { private: int RoomsCare = 60; int BedsCare = 120; // 2 bed in each room }; class MainPharmacy : public MedicalSection { }; class InternalSection : public MedicalSection { private: string TnRoom1 = "Males internal room"; string TnRoom2 = "Females internal room"; }; class ChildrenSection : public MedicalSection { }; class MaternitySection : public MedicalSection { }; class Reception { private: int MaxPatientNum; // The max number of patients the hosoital can handle int PatientNumber; // Number of the current patient string PatientCheckIn; // When did the patient enter the hospital .. for example "11:11 pm" string PatientCheckOut; // When did the patient get out of the hospital .. for example "4:59 am" float PatientBill; // How much the treatment cost the patient int PatientAge; // Age of patient string PatientName; // Name of patient public: void DisplayAvailableSpace() // Display the number of available spaces in the hospital { int availableSpace = MaxPatientNum - PatientNumber; std::cout << "Available hospital space: " << availableSpace << " patients." << endl; } void CheckAvailableSpace() // A system that checks if there is an available space in the hospital for new patients { if (PatientNumber <= MaxPatientNum) { cout << "There is an available space." << endl; } else { cout << "There is no space available right now." << endl; } } float OldPatientsDiscount() // A system that makes discounts depending on patients age { if (PatientAge >= 50) // 10% if age is 50 or above { return PatientBill * 0.1; } else if (PatientAge >= 60) // 20% if age is 60 or above { return PatientBill * 0.2; } else if (PatientAge >= 70 || PatientAge >= 80 || PatientAge >= 90) // 30% starting for age 70 and all above. { return PatientBill * 0.3; } else // No discount { return PatientBill ; } } void DisplayPatientDetails() // Display details of the current patient { std::cout << "Patient name is: " << PatientName << endl; std::cout << "Patient age is: " << PatientAge << endl; std::cout << "Patient checked in at: " << PatientCheckIn << endl; std::cout << "Patient checked out at: " << PatientCheckOut << endl; std::cout << "Patient treatment costs: " << PatientBill << endl; std::cout << "Patients treatment costs after discount (if patient meets the requirments): " << OldPatientsDiscount << endl; } };
Leave a Comment