Загрузка данных


#define _CRT_SECURE_NO_WARNINGS

#include "hospital.h"
#include <iostream>
using namespace std;

// ========== ГЛОБАЛЬНЫЕ ДАННЫЕ ==========
Patient patients[20];
int patientCount = 0;

Doctor doctors[10];
int doctorCount = 0;

Ward wards[10];
int wardCount = 0;

Department dept;
bool deptCreated = false;

// ========== ВСПОМОГАТЕЛЬНЫЕ ФУНКЦИИ ==========

void clearInput() {
    cin.clear();
    cin.ignore(10000, '\n');
}

void pause() {
    cout << "\nНажмите Enter, чтобы продолжить...";
    cin.get();
}

// ========== ДЕЙСТВИЯ МЕНЮ ==========

void addPatient() {
    if (patientCount >= 20) {
        cout << "Достигнут максимум больных (20)!\n";
        return;
    }
    char name[50];
    int age;
    cout << "\n--- Добавление больного ---\n";
    cout << "Имя: ";
    cin >> name;
    cout << "Возраст: ";
    cin >> age;
    patients[patientCount].SetName(name);
    patients[patientCount].SetAge(age);
    patientCount++;
    cout << "Больной добавлен.\n";
}

void addDoctor() {
    if (doctorCount >= 10) {
        cout << "Достигнут максимум врачей (10)!\n";
        return;
    }
    char name[50], spec[50];
    int exp;
    cout << "\n--- Добавление врача ---\n";
    cout << "Имя: ";
    cin >> name;
    cout << "Специальность: ";
    cin >> spec;
    cout << "Стаж (лет): ";
    cin >> exp;
    doctors[doctorCount].SetName(name);
    doctors[doctorCount].SetSpecialty(spec);
    doctors[doctorCount].SetExperience(exp);
    doctorCount++;
    cout << "Врач добавлен.\n";
}

void addWard() {
    if (wardCount >= 10) {
        cout << "Достигнут максимум палат (10)!\n";
        return;
    }
    int num, cap;
    cout << "\n--- Добавление палаты ---\n";
    cout << "Номер палаты: ";
    cin >> num;
    cout << "Вместимость: ";
    cin >> cap;
    wards[wardCount].SetRoomNumber(num);
    wards[wardCount].SetCapacity(cap);
    wardCount++;
    cout << "Палата добавлена.\n";
}

void createDepartment() {
    if (deptCreated) {
        cout << "Отделение уже создано: " << dept.GetName() << endl;
        return;
    }
    char deptName[50];
    cout << "\n--- Создание отделения ---\n";
    cout << "Название отделения: ";
    cin >> deptName;
    dept.SetName(deptName);
    for (int i = 0; i < doctorCount; i++) {
        dept.AddDoctor(doctors[i]);
    }
    for (int i = 0; i < wardCount; i++) {
        dept.AddWard(wards[i]);
    }
    deptCreated = true;
    cout << "Отделение создано. Добавлено врачей: " << doctorCount
         << ", палат: " << wardCount << endl;
}

void showAllPatients() {
    cout << "\n=== БОЛЬНЫЕ (" << patientCount << ") ===\n";
    if (patientCount == 0) {
        cout << "  Список пуст.\n";
        return;
    }
    for (int i = 0; i < patientCount; i++) {
        patients[i].Show();
    }
}

void showAllDoctors() {
    cout << "\n=== ВРАЧИ (" << doctorCount << ") ===\n";
    if (doctorCount == 0) {
        cout << "  Список пуст.\n";
        return;
    }
    for (int i = 0; i < doctorCount; i++) {
        doctors[i].Show();
    }
}

void showAllWards() {
    cout << "\n=== ПАЛАТЫ (" << wardCount << ") ===\n";
    if (wardCount == 0) {
        cout << "  Список пуст.\n";
        return;
    }
    for (int i = 0; i < wardCount; i++) {
        wards[i].Show();
    }
}

void showDepartment() {
    if (!deptCreated) {
        cout << "Отделение ещё не создано.\n";
        return;
    }
    cout << endl;
    dept.Show();
}

void showMenu() {
    cout << "\n========== БОЛЬНИЦА ==========\n";
    cout << "1. Добавить больного\n";
    cout << "2. Добавить врача\n";
    cout << "3. Добавить палату\n";
    cout << "4. Создать отделение\n";
    cout << "5. Показать больных\n";
    cout << "6. Показать врачей\n";
    cout << "7. Показать палаты\n";
    cout << "8. Показать отделение\n";
    cout << "0. Выход\n";
    cout << "Ваш выбор: ";
}

// ========== MAIN ==========

int main() {
    setlocale(LC_ALL, "Russian");

    int choice;
    do {
        showMenu();
        cin >> choice;
        clearInput();

        switch (choice) {
            case 1: addPatient(); break;
            case 2: addDoctor(); break;
            case 3: addWard(); break;
            case 4: createDepartment(); break;
            case 5: showAllPatients(); break;
            case 6: showAllDoctors(); break;
            case 7: showAllWards(); break;
            case 8: showDepartment(); break;
            case 0: cout << "Выход...\n"; break;
            default: cout << "Неверный выбор. Попробуйте снова.\n";
        }

        if (choice != 0) pause();
    } while (choice != 0);

    return 0;
}