Создание мини-приложения, которое будет предоставлять модель работы с базой данных доноров и запросов крови.
Вложение | Размер |
---|---|
sozdanie_interaktivnoy_modeli_bazy_dannyh_po_donorstvu_krovi.docx | 90.76 КБ |
Муниципальное общеобразовательное учреждение
Ликино-Дулёвский лицей
ИТОГОВЫЙ ИНДИВИДУАЛЬНЫЙ ПРОЕКТ
ПО ИНФОРМАТИКЕ
«СОЗДАНИЕ ИНТЕРАКТИВНОЙ МОДЕЛИ БАЗЫ ДАННЫХ ПО ДОНОРСТВУ КРОВИ»
(практико-ориентированный проект)
Выполнил:
Царёв Вячеслав Сергеевич
Ученик 9 Б класса
Руководитель:
Крюкова Наталья Юрьевна
Учитель информатики
Г. ЛИКИНО-ДУЛЁВО
2023 г.
ОГЛАВЛЕНИЕ
ВВЕДЕНИЕ 3
ГЛАВА 1. БАЗА ДАННЫХ 5
1.1. Структура базы данных 5
1.2. Подготовка и само создание свойств элементов в SQLite 5
1.3.Интерфейс 6
ГЛАВА 2. РАЗРАБОТКА ПРОГРАММНОГО КОДА 7
2.1. Подключение библиотек и создание класса окна 7
2.2. Разработка заявленных функций 7
ЗАКЛЮЧЕНИЕ 9
Возможные дополнения к программе 9
Перспективы и дальнейшее применение 9
СПИСОК ЛИТЕРАТУРЫ 10
СПИСОК ИНТЕРНЕТ-РЕСУРСОВ 10
ПРИЛОЖЕНИЯ 11
ВВЕДЕНИЕ
На протяжении всего существования человека наш вид подвергается испытаниям: многочисленные стихийные бедствия, изменение климата, борьба за ресурсы. Но не стоит и забывать, что существуют не только глобальные проблемы для всех людей, но и для отдельно взятого человека. Он стремиться в первую очередь не к благополучию всей Земли, а к безопасному и здоровому существованию самого себя и близких ему людей. И поэтому, казалось бы, такие малые социальные блага, как например, медицина, кажущиеся нам пустяком на фоне масштабных проблем, являются пускай и малыми, но винтиками во всей жизни и прогрессе человечества.
У каждого человека могут быть разные проблемы со здоровьем с разной степенью опасностью для жизни. Но практически в каждой области медицины участвует взаимодействие с химическим составом человека, в частности, с кровью. С помощью неё можно создавать препараты для свёртывания крови и всеми известный протеин, который необходим пациенту в период после операции. Также кровь используется для создания лекарств для лечения кори и гриппа, не говоря уже о применении крови в многочисленных исследованиях, помогающих лучше познать сильные и слабые стороны нашего организма. Короче говоря, потенциал использования крови в современной медицине велик, но встаёт главный вопрос, о том, где же её можно взять. И тут на помощь приходят программы донорства в разных странах.
Донорство крови – это сдача крови на добровольной основе для последующего применения биоматериала. Каждый год переливание крови спасает жизни миллионам людям по всей планете, что делает такие мероприятия довольно важными в современном мире. Стоит отметить, что исследования доказали наличие плюсов для здоровья самих доноров, что делает процесс добровольной сдачи крови не только полезным с точки зрения волонтерства. Сам процесс сдачи крови простой для донора, но однозначно нелегкий для людей, которым придётся составлять каталог биоматериалов, ведь информации достаточно много
Донорство крови очень крепко связанно с информационными технологиями, так как для работы с ним требуется довольно универсальный инструментарий для структуризации и использования большого потока данных. Именно для таких целей и существуют базы, которые помогают привести полученную информацию в стандартный и просматриваемый формат. Как раз этому и будет посвящён практический проект.
Цель проекта: Создать мини-приложение, которое будет предоставлять модель работы с базой данных доноров и запросов крови.
Задачи:
1. Создать интерфейс для взаимодействия пользователя и машины
2. Написать программный код, действующий при выполнении основных алгоритмов
3. “Связать” код и интерфейс в единое приложение
Основная суть приложения: предоставляется интерфейс, где пользователь может сортировать по группе крови списки доноров и запросов, взаимодействовать с ними путём создание собственных элементов в базе данных или же самому удалять два им же выбранных объекта по присвоенному объектам номерам, схожим по группе крови. В случае если элементы не подходят, то выводить ошибку и игнорировать запрос.
Актуализация проекта: В современном мире стремительными темпами нарастает волонтёрское движение, и важно показать школьникам, что добровольческая деятельность может заключаться не только в самой сдаче крови, но и в создании, в данном случае, тематических ПО, способных провести интеграцию между антропологией и информационными технологиями.
База данных – это совокупность данных, хранимых в соответствии со схемой данных, манипулирование которыми выполняют по определённым правилам. Существует много приложений для создания и редактирования баз данных, но в проекте будет использоваться СУБД (система управления базами данных) SQLiteStudio, так как она имеет низкий порог вхождения и является идеальным вариантом для реализации простых и локальных задач.
Объект в базе данных состоит из порядкового номера в списке, типа данных, наличия или отсутствия первичного и внешнего ключей, включенного или выключенного параметра уникальности и параметра “Не NULL”.
Поскольку приложение подразумевает работу с донорами и запросами, то понадобится как минимум два списка, которые в основе своей будут очень похожи по структуре: у обоих объектов из разных списков должно быть своё id, наименование и группа крови, которую имеет донор или требует запрос.
Итак, начнём с порядкового номера объекта в таблице. Приложение само выдаёт автоматически номер каждому созданному объекту, но для дальнейшего взаимодействия пользователя с базой данных такой вариант не подходит. Дело в том, что при создании новых данных или удалении старых, id незатронутого объекта может поменяться, а это значительно усложняет запросы в самой СУБД. Следовательно каждый объект будет иметь свой собственных номер, который будет создан вручную при выполнении работы над списком. Далее в коде программы будет дана возможность пользователю при создании собственных данных в списках редактировать id. Порядковый номер будет являться первичным ключом и должен быть уникальным среди его списка. Тип данных будет числовой – INTEGER.
С наименованием объекта всё гораздо проще, ведь это просто строчка, не играющая большого значения в любом запросе, а больше эстетическое дополнение. Данные “name” в обоих списках не содержат особых настроек, кроме невозможности быть пустыми, как и все элементы в базе в целом. Тип данных имени текстовый – TEXT.
Для оптимизации программы элементы, отвечающие за группу крови будут ссылаться на внешний ключ в другой список. В приложении берутся четыре группы крови без резус-фактора и без возможности использования, к примеру, группы Iдля выполнения запроса на II группу. Значит таблица довольна проста и вмещает в себя всего лишь четыре значения – по одному на каждую группу. В списках по донорам и запросам крови элементам, отвечающим за группу крови, присвоен тип данных числовой – INTEGER.
Как итог, в файле с базой данных storage содержатся (скриншоты показывают наглядно структуру таблиц):
В проекте для создания интерфейса будет использоваться среда разработки QtDesigner. Для комфортного “общения” пользователя с приложением требуется определенное количество полей, плашек, выпадающих списков и кнопок. Далее функционал фрагментов приведён в соответствии с их названием в файле interface.ui.
table_of_donor и table_of_request являются полями для вывода таблиц из базы данных. Класс – QTableWidget.
label_1 – label_15 несут информацию о значении кнопки или выпадающего списка, значении поля, наличии ошибок, а также об условии при создании объекта. Класс – QLabel.
id_edit_donor и id_edit_request являются полями для ввода номера создаваемого объекта пользователем.create_name_of_donorи create_name_of_donor выполняют функцию полей, в которые пользователь вводит название создаваемого объекта. Класс –QLineEdit.
filter_donor и filter_request – выпадающие списки с группой крови для поиска по данной категории всех доноров или запросов. create_group_donor и create_group_request – выпадающие списки с группой крови для создания объекта донора или запроса с выбранным пользователем элементом. select_donor_id и select_request_id – выпадающие списки, в которых пользователь выбирает номера запроса и донора, которые он хочет взаимно удалить из двух списков. Класс – QComboBox.
search_of_donor и search_of_request выполняют поиск объектов по выбранной группе крови в своём списке при нажатии. create_of_donor и create_of_donorвыполняют создание объектов в своих списках с номером, названием и группой крови, которые ввёл и выбрал пользователь, при нажатии. delete_button выполняет функцию удаления двух выбранных объектов пользователем в случае, если совпадение действительно обнаружено, при нажатии. ndbutton_donor и ndbutton_request выполняют поиск по всем донорам и запросам, выводя на своих полях все объекты в базе. Класс – QPushButton.
Интерфейс без подключения данных представлен в ПРИЛОЖЕНИИ 3.
2.1. Подключение библиотек и создание класса окна
Для реализации проекта языком программирования был выбран python, а среда разработки – PyCharm. Но обычного функционала недостаточно, ведь программа представляет из себя комплекс взаимодействий, поэтому подключение библиотек неминуемо. Вот их список и объяснения, зачем они нужны:
sqlite3– поскольку в проекте используется SQLiteStudio, требуются возможности к взаимодействию с СУБД через программный код.
sys– нужен для работы с потоковым вводом и выводом, а также для взаимодействия с операционной системой.
PyQt5 и PyQt.QtWidget служат для деятельности с интерфейсом и назначения разным фрагментам рабочего пространства своих взаимосвязанных функций.
Особняком всего программного кода будет класс окна MyWidget, в который будут внесены все функции, используемые самим пользователем. Но в первую очередь в классе будут подключаться и инициализироваться все возможные фрагменты интерфейса, нужные для их корректной работы словари и переменные.
Однако, в класс MyWidget также входят функции, ответственные за взаимодействия пользователя и машины. Но стоит отметить, что функции, связанные с поиском и созданием доноров и запросов, очень схожи по своему строению и алгоритму. Список всех функций предоставлен ниже:
select_blood_group– функция для выбора группы крови в четырёх выдвижных списках, участвующая и в создании, и в поиске запросов и доноров.
select_id_donor и select_id_request – функции для выбора ID в выдвижных списках. Участвуют в взаимоуничтожении выбранных пользователем донора и запроса.
execute_query_and_fill_table_of_donorи execute_query_and_fill_table_of_request – функции для создания параметров и обновления таблиц в полях доноров и запросов. Активируются в каждой функции, участвующей в поиске или создании объектов в базе данных.
search_donor и search_request – функции для поиска объектов в таблицах по значениям в выпадающих списках группы крови при нажатии соответствующей кнопки. Формируется запрос, который поступает в базу данных, а она в свою очередь возвращает весь список по определённому значению, тем самым обновляя таблицу, таблицу, которая доступна для просмотра пользователю.
go_to_all_donors и go_to_all_requests –функции для возвращения таблиц в состояние без фильтров по группе крови при нажатии определённой кнопки для доноров и запросов.
delete_function –функция, удаляющая запрос и донора, выбранные пользователем, если их группы крови совпадают. В противном случае функция приостанавливает своё выполнение, выводя строку об ошибке и ничего не делает.
create_donor и create_request – функции, ответственные за создание доноров и запросов, активирующиеся по нажатию кнопки. Алгоритм таков: сначала функция берёт введённые пользователем ID и название предполагаемого объекта; затем проверяет строку на правильность ввода и на корректно введённое ID; если всё в порядке, то добавляет объект к донорам или запросам (смотря в каком сегменте интерфейса пользователь вводил данные), иначе выводить ошибку “Неправильное ID или название”.
Всё, что идет после написания класса непосредственно является запуском программы
Подробнее обо всех функциях можно прочесть в самом файле программного кода, где комментариями пошагово всё объяснено.
Демонстрация программы будет выполнена во время защиты проекта.
В заключение хотелось бы отметить, что модель не без минусов, например, с обязательным требованием к пользователю вводить создаваемое наименование в кавычках, что явно затрудняет доступность программы. Но даже при этих минусах модель выполняет все вышеописанные задачи, пускай и не без огрехов. Пожалуй, проделанная работа продемонстрировала возможность взаимовыгодного симбиоза современных технологий и медицины, пускай и без каких-то явных прорывов, но какого-то фурора и не требовалось.
Как и любая работа, эта тоже не является идеальной и имеет возможности для расширения функционала. К примеру, можно было бы рассматривать доноров более правильно с точки зрения биологии, имея информацию по заболеваемостям, мутациям и т.д. Также на ранних стадиях была отброшена система с расстоянием между запросом и донором для более реалистичной симуляции ситуаций, но это не означает, что такая идея не имеет права на жизнь. В общем, модель хоть и законченная, но имеет потенциал в росте и разрастанию, так как в ней затронуты многие технологии.
В дальнейшем программа, как сказано выше, может модернизироваться разными путями, и хорошо, что выбор возможных дополнений обширен. Понятно, что в случае какого-то технического идеала или раннее не появлявшийся “изюминки” в будущем модель может быть использована у волонтёров или даже у работников социальных служб.
ПРИЛОЖЕНИЕ 1. Список доноров
ПРИЛОЖЕНИЕ 2. Список групп крови
ПРИЛОЖЕНИЕ 3. Интерфейс без подключения данных
Весенние чудеса
Композитор Алексей Рыбников
Рисуем домики зимой
Рисуем подснежники гуашью
Ворона