Файл: Курсовой проект по дисциплине Основы объектноориентированного программирования.docx

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 02.12.2023

Просмотров: 83

Скачиваний: 3

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.


1.3 Анализ требований к программе


Коммерческие приложения, позволяющие вести учёт пациентов в больнице, могу предоставлять различный функционал в зависимости от выбора приложения.

Так, российский сервис Med.me предоставляет возможность пациентам записать «онлайн» на приём к врачу, а администратор может управлять медицинскими картами пациентов в личном кабинете.

А система 1С: Медицина.Больница дополнена возможностью оповещений пациентов. Оповещения о приёме, переносе даты приёма, а также о других мероприятиях могут приходить как на сотовый телефон, так и на электронную почту пациента.

Однако, основным функционалом приложений для учёта пациентов в больнице является следующий список:

  • Создание базы данных пациентов

  • Сохранение картотеки пациентов в электронном виде

  • Составление списка обследований по каждому из пациентов

  • Ведение пользовательских справочников

  • Автоматизация работы регистратуры (отслеживание оплаты услуг и прочее)

  • Генерация различных документов (медицинские заключения, результаты обследования и т.п.)

Функционал создаваемого в рамках данной работы приложения ограничивается следующим:

  • Добавление врачей в систему

  • Вывод информации о враче по идентификатору

  • Вывод информации о всех врачах

  • Добавление пациентов в систему

  • Выписка пациентов

  • Вывод информации о пациентах, находящихся на лечении

  • Вывод информации о пациентах, выписанных из больницы

  • Прикрепление врача к пациенту

  • Вывод списка врачей у пациента

  • Вывод списка пациентов у врача


ГЛАВА 2. РАЗРАБОТКА ПРОГРАММЫ

2.1 Архитектура программы


В приложении используются следующие библиотеки:

  • iostream – стандартная библиотека для организации ввода/вывода

  • vector – позволяет использовать класс vector (используется как замена стандартному динамическому массиву)

В программе реализовано 4 класса: класс Human, наследуемые от него классы Doctor и Patient, а также класс Hospital. Весь функционал реализуется методами класса Hospital с помощью методов классов Doctor и Patient.

Пользователь работает с меню, для выхода он должен нажать 0, соответственно, вывод меню и работа с ним организованы с помощью цикла while.

2.2 Реализация классов для учёта пациентов



Класс Human содержит следующие защищённые поля:

  • string name – имя

  • int age – возраст

Также класс Human содержит один открытый метод, а именно конструктор:

Human(string name_, int age_) : name(name_), age(age_) {}

С помощью списка инициализации задаются имя и возраст человека.

Класс Doctor наследуется от класса Human с модификатором наследования protected и содержит закрытые поля:

  • string specialization – специализация врача

  • unsigned int experience – стаж работы

  • unsigned int id – идентификатор

А также класс Doctor содержит следующие открытые методы:

  • Doctor(string name_, int age_, string specialization_, unsigned int experience_, unsigned int id_) : Human(name_, age_), specialization(specialization_), experience(experience_), id(id_) {} – конструктор, с помощью списка инициализации задаётся значение всем полям

  • string getName() – возвращает имя врача

  • unsigned int getId() – возвращает идентификатор врача

  • void showInfo() – выводит на экран всю информацию о враче

Класс Patient также наследуется от класса Human с модификатором доступа protected, содержит следующие закрытые поля:

  • string typeOfDesease – название заболевания

  • string dateOfAdmission – дата поступления в больницу

  • string dateOfDischarge- дата выписки

  • unsigned int id – идентификатор

  • vector listOfDoctors – динамический массив, содержащий указатели на врачей, лечащих пациента

Класс Patient содержит открытые методы:

  • Patient(string name_, int age_, string typeOfDeasease_, string dateOfAdmission_, unsigned int id_) : Human(name_, age_), typeOfDesease(typeOfDeasease_), dateOfAdmission(dateOfAdmission_), id(id_) {} – конструктор

  • string getName() – возвращает имя пациента

  • unsigned int getId() – возвращает идентификатор пациента

  • void showInfo() – выводит всю информацию о пациенте

  • void addADoctor(Doctor* aDoctor) – добавляет переданный в качестве аргумента указатель на врача в массив listOfDoctors

  • vector& getListOfDoctors() – возвращает ссылку на массив listOfDoctors

  • void setDateOfDischarge(string dateOfDischarge) – задаёт дату выписки

  • void showDischargedInfo() – выводит информацию о пациенте, если он выписан

Класс Hospital содержит следующие закрытые поля:

  • vector
    patients – вектор, хранящий указатели на объекты типа Patient (информация о пациентах на лечении)

  • vector dischargedPatients – вектор такого же типа, но хранящий информацию о выписанных пациентах

  • vector doctors – вектор, хранящий информацию о врачах

И следующие открытые методы:

  • void addADoctor(Doctor* aDoctor) – добавление врача в систему

  • void deleteDoctor(unsigned int id_) – удаление врача из системы по идентификатору

  • void showInfoAboutADoctor(unsigned int id_) – вывод полной информации о враче по идентификатору

  • void showAllDoctors() – вывод списка врачей

  • void admitNewPatient(Patient* patient) – добавление пациента в систему

  • void dischargeAPatient(unsigned int id_, string date_) – выписка пациента по идентификатору с указанием даты

  • void showInfoAboutAPatient(unsigned int id_) – вывод информации о пациенте по идентификатору

  • void showInfoAboutDischargedPatient(unsigned int id_) – вывод информации о выписанном пациенте по идентификатору

  • void addADoctorForAPatient(unsigned int patientId, unsigned int doctorId) – прикрепление врача к пациенту по идентификаторам пациента и врача

  • void showListOfDoctors(unsigned int id_) – вывод списка лечащих пациента врачей

  • void showListOfPatients(unsigned int id_) – вывод списка пациентов, находящихся на лечении у врача


Ниже на рисунке представлена диаграмма классов


2.3 Демонстрация работы программы


Оставить основные скрины, добавить текста о работе проги

Ниже продемонстрирована работа программы. При запуске на экран выводится меню, пользователь должен выбрать одну опцию из 10, для выхода из программы необходимо ввести 0. Также даётся подсказка о том, что для начала работы необходимо добавить как минимум одного врача и пациента, хотя программа работает корректно и в случае, если не добавлены ни пациент, ни врач.



Рис. №. Стартовое меню

На следующем рисунке продемонстрировано добавление врача в систему. При этом программа требует от пользователя ввести имя, возраст, специализацию, стаж работы и идентификатор врача.



Рис. №. Добавление 1-го врача

Аналогично происходит добавление пациента в систему, требуется указать основную информацию о пациенте.



Рис. №. Добавление 1-го пациента

Программа вывод информацию о враче по идентификатору (случай, когда указан отсутствующий идентификатор, представлен в приложении)



Рис. №. Информация о враче

Также имеется возможность вывести информацию обо всех врачах в системе.



Рис. №. Информация обо всех врачах

Аналогично происходит вывод информации о пациенте по идентификатору.



Рис. №. Информация о пациенте

После добавления в систему врачей и пациентов необходимо прикрепить врача к пациенту. Для этого пользователь указывает идентификатор пациента, к которому нужно прикрепить врача, и, соответственно идентификатор врача.




Рис. №. Прикрепление врача с ID 1 к пациенту с ID 11

Для вывода списка лечащих врачей необходимо указать идентификатор пациента. Если идентификатор указан верно, то выводятся имена лечащих врачей.



Рис. №. Список врачей у пациента с ID 11

Аналогично, есть возможность вывести список пациентов у врача, указав его идентификатор.



Рис. №. Список пациентов у врача с ID 1

Для выписки пациента необходимо указать идентификатор выписываемого пациента и дату выписки. При этом пациент пропадает из списка пациентов в больнице и попадает в список выписанных пациентов.



Рис. №. Выписка пациента с ID 11

После выписки пациента можно узнать информацию о нём, выбрав пункт 7 («Показать информацию о выписанном пациенте»). При этом также выводится информация о дате выписки.



Рис. №. Информация о выписанном пациенте с ID 11

ЗАКЛЮЧЕНИЕ


Рассмотрим результаты работы, целью которой было создание программы, реализующей классы для ведения учёта пациентов в больнице. В ходе работы были рассмотрены основы объектно-ориентированного программирования, особенности использования объектно-ориентированного программирования в языке C++, сформулированы требования к разрабатываемой программе.

Нами была разработана архитектура программы, включающая в себя реализацию 4 классов с использованием наследования, создана программа для учёта пациентов в больнице, реализующая приведённые выше классы и позволяющая добавлять врачей в систему, положить пациента в больницу, выписать его из больницы, узнать информацию о враче/пациенте. При разработке программы были предусмотрены случаи некорректного ввода информации, связанные с указанием неверного идентификатора пациента/врача и с отсутствием врача/пациента в системе при попытке прикрепить врача к пациенту, выписать пациента из больницы или вывести информацию обо всех врачах в больнице. Благодаря этому, программа работает корректно, соответствуя всем поставленным требованиям.


Таким образом, можно сделать вывод, что все поставленные задачи были выполнены, а цель работы достигнута полностью.

СПИСОК ЛИТЕРАТУРЫ


  1. Романов С.С. Ключевые понятия и особенности объектно-ориентированного программирования // Таврический научный обозреватель. 2016. №12-2 (17). URL: https://cyberleninka.ru/article/n/klyuchevye-ponyatiya-i-osobennosti-obektno-orientirovannogo-programmirovaniya (дата обращения: 14.05.2022).

  2. Ашарина, И.В. Объектно-ориентированное программирование в С++: лекции и упражнения: Учебное пособие для вузов / И.В. Ашарина. - М.: РиС, 2015. - 336 c.

  3. Ашарина, И.В. Язык С++ и объектно-ориентированное программирование в С++. Лабораторный практикум: Учебное пособие для вузов / И.В. Ашарина, Ж.Ф. Крупская. - М.: ГЛТ , 2015. - 232 c.

  4. Васильев, А.Н. Объектно-ориентированное программирование на C++ / А.Н. Васильев. - СПб.: Наука и техника, 2016. - 544 c.

  5. Лафоре, Р. Объектно-ориентированное программирование в С++ / Р. Лафоре. - СПб.: Питер, 2019. - 928 c.

  6. Павловская, Т. С/С++.Процедурное и объектно-ориентированное программирование / Т. Павловская. - СПб.: Питер, 2018. - 496 c

  7. Хорев, П.Б. Объектно-ориентированное программирование / П.Б. Хорев. - М.: Academia, 2018. - 352 c.

  8. Г.С. Иванова Объектно-ориентированное программирование / Г.С. Иванова. - М.: Московский Государственный Технический Университет (МГТУ) имени Н.Э. Баумана, 2014. - 149 c.

  9. Залогова Л.А. ВЗАИМОДЕЙСТВИЕ ОБЪЕКТОВ В ОБЪЕКТНО-ОРИЕНТИРОВАННОМ ПРОГРАММИРОВАНИИ // Вестник Пермского университета. Серия: Математика. Механика. Информатика. 2016. №3 (34). URL: https://cyberleninka.ru/article/n/vzaimodeystvie-obektov-v-obektno-orientirovannom-programmirovanii (дата обращения: 14.05.2022)

  10. Кыштымов М. А., Уймин А. Г. Применение объектно-ориентированного программирования для разработки геоинформационных систем // Перспективы развития информационных технологий. 2012. №8. URL: https://cyberleninka.ru/article/n/primenenie-obektno-orientirovannogo-programmirovaniya-dlya-razrabotki-geoinformatsionnyh-sistem (дата обращения: 14.05.2022)


ПРИЛОЖЕНИЯ




Рис. №. Информация о враче (врачи отсутсвуют)



Рис. №. Информация обо всех врачах (врачи отсутствуют)



Рис. №. Выписка пациента (пациенты отсутствуют)