Файл: Курсовой проект по дисциплине Основы объектноориентированного программирования.docx
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 02.12.2023
Просмотров: 86
Скачиваний: 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 – идентификатор -
vectorlistOfDoctors – динамический массив, содержащий указатели на врачей, лечащих пациента
Класс 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 (информация о пациентах на лечении) -
vectordischargedPatients – вектор такого же типа, но хранящий информацию о выписанных пациентах
vectordoctors – вектор, хранящий информацию о врачах
И следующие открытые методы:
-
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 классов с использованием наследования, создана программа для учёта пациентов в больнице, реализующая приведённые выше классы и позволяющая добавлять врачей в систему, положить пациента в больницу, выписать его из больницы, узнать информацию о враче/пациенте. При разработке программы были предусмотрены случаи некорректного ввода информации, связанные с указанием неверного идентификатора пациента/врача и с отсутствием врача/пациента в системе при попытке прикрепить врача к пациенту, выписать пациента из больницы или вывести информацию обо всех врачах в больнице. Благодаря этому, программа работает корректно, соответствуя всем поставленным требованиям.
Таким образом, можно сделать вывод, что все поставленные задачи были выполнены, а цель работы достигнута полностью.
СПИСОК ЛИТЕРАТУРЫ
-
Романов С.С. Ключевые понятия и особенности объектно-ориентированного программирования // Таврический научный обозреватель. 2016. №12-2 (17). URL: https://cyberleninka.ru/article/n/klyuchevye-ponyatiya-i-osobennosti-obektno-orientirovannogo-programmirovaniya (дата обращения: 14.05.2022). -
Ашарина, И.В. Объектно-ориентированное программирование в С++: лекции и упражнения: Учебное пособие для вузов / И.В. Ашарина. - М.: РиС, 2015. - 336 c. -
Ашарина, И.В. Язык С++ и объектно-ориентированное программирование в С++. Лабораторный практикум: Учебное пособие для вузов / И.В. Ашарина, Ж.Ф. Крупская. - М.: ГЛТ , 2015. - 232 c. -
Васильев, А.Н. Объектно-ориентированное программирование на C++ / А.Н. Васильев. - СПб.: Наука и техника, 2016. - 544 c. -
Лафоре, Р. Объектно-ориентированное программирование в С++ / Р. Лафоре. - СПб.: Питер, 2019. - 928 c. -
Павловская, Т. С/С++.Процедурное и объектно-ориентированное программирование / Т. Павловская. - СПб.: Питер, 2018. - 496 c -
Хорев, П.Б. Объектно-ориентированное программирование / П.Б. Хорев. - М.: Academia, 2018. - 352 c. -
Г.С. Иванова Объектно-ориентированное программирование / Г.С. Иванова. - М.: Московский Государственный Технический Университет (МГТУ) имени Н.Э. Баумана, 2014. - 149 c. -
Залогова Л.А. ВЗАИМОДЕЙСТВИЕ ОБЪЕКТОВ В ОБЪЕКТНО-ОРИЕНТИРОВАННОМ ПРОГРАММИРОВАНИИ // Вестник Пермского университета. Серия: Математика. Механика. Информатика. 2016. №3 (34). URL: https://cyberleninka.ru/article/n/vzaimodeystvie-obektov-v-obektno-orientirovannom-programmirovanii (дата обращения: 14.05.2022) -
Кыштымов М. А., Уймин А. Г. Применение объектно-ориентированного программирования для разработки геоинформационных систем // Перспективы развития информационных технологий. 2012. №8. URL: https://cyberleninka.ru/article/n/primenenie-obektno-orientirovannogo-programmirovaniya-dlya-razrabotki-geoinformatsionnyh-sistem (дата обращения: 14.05.2022) -
ПРИЛОЖЕНИЯ
Рис. №. Информация о враче (врачи отсутсвуют)
Рис. №. Информация обо всех врачах (врачи отсутствуют)
Рис. №. Выписка пациента (пациенты отсутствуют)