• Главная
  • Блог
  • Пользователи
  • Форум
  • Литературное творчество
  • Музыкальное творчество
  • Научно-техническое творчество
  • Художественно-прикладное творчество

СОЗДАНИЕ ИНТЕРАКТИВНОЙ МОДЕЛИ БАЗЫ ДАННЫХ ПО ДОНОРСТВУ КРОВИ

Опубликовано Крюкова Наталья Юрьевна вкл 22.07.2024 - 20:31
Автор: 
Царёв Вячеслав Сергеевич

Создание мини-приложения, которое будет предоставлять модель работы с базой данных доноров и запросов крови.

Скачать:

ВложениеРазмер
Файл sozdanie_interaktivnoy_modeli_bazy_dannyh_po_donorstvu_krovi.docx90.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. “Связать” код и интерфейс в единое приложение

Основная суть приложения: предоставляется интерфейс, где пользователь может сортировать по группе крови списки доноров и запросов, взаимодействовать с ними путём создание собственных элементов в базе данных или же самому удалять два им же выбранных объекта по присвоенному объектам номерам, схожим по группе крови. В случае если элементы не подходят, то выводить ошибку и игнорировать запрос.

Актуализация проекта: В современном мире стремительными темпами нарастает волонтёрское движение, и важно показать школьникам, что добровольческая деятельность может заключаться не только в самой сдаче крови, но и в создании, в данном случае, тематических ПО, способных провести интеграцию между антропологией и информационными технологиями.

ГЛАВА 1. БАЗА ДАННЫХ

1.1. Структура базы данных

База данных – это совокупность данных, хранимых в соответствии со схемой данных, манипулирование которыми выполняют по определённым правилам. Существует много приложений для создания и редактирования баз данных, но в проекте будет использоваться СУБД (система управления базами данных) SQLiteStudio, так как она имеет низкий порог вхождения и является идеальным вариантом для реализации простых и локальных задач.

Объект в базе данных состоит из порядкового номера в списке, типа данных, наличия или отсутствия первичного и внешнего ключей, включенного или выключенного параметра уникальности и параметра “Не NULL”.

1.2. Подготовка и само создание свойств элементов в SQLite

Поскольку приложение подразумевает работу с донорами и запросами, то понадобится как минимум два списка, которые в основе своей будут очень похожи по структуре: у обоих объектов из разных списков должно быть своё id, наименование и группа крови, которую имеет донор или требует запрос.

Итак, начнём с порядкового номера объекта в таблице. Приложение само выдаёт автоматически номер каждому созданному объекту, но для дальнейшего взаимодействия пользователя с базой данных такой вариант не подходит. Дело в том, что при создании новых данных или удалении старых, id незатронутого объекта может поменяться, а это значительно усложняет запросы в самой СУБД. Следовательно каждый объект будет иметь свой собственных номер, который будет создан вручную при выполнении работы над списком. Далее в коде программы будет дана возможность пользователю при создании собственных данных в списках редактировать id.  Порядковый номер будет являться первичным ключом и должен быть уникальным среди его списка. Тип данных будет числовой – INTEGER.

С наименованием объекта всё гораздо проще, ведь это просто строчка, не играющая большого значения в любом запросе, а больше эстетическое дополнение. Данные “name” в обоих списках не содержат особых настроек, кроме невозможности быть пустыми, как и все элементы в базе в целом. Тип данных имени текстовый – TEXT.

Для оптимизации программы элементы, отвечающие за группу крови будут ссылаться на внешний ключ в другой список. В приложении берутся четыре группы крови без резус-фактора и без возможности использования, к примеру, группы Iдля выполнения запроса на II группу. Значит таблица довольна проста и вмещает в себя всего лишь четыре значения – по одному на каждую группу. В списках по донорам и запросам крови элементам, отвечающим за группу крови, присвоен тип данных числовой – INTEGER.

Как итог, в файле с базой данных storage содержатся (скриншоты показывают наглядно структуру таблиц):

  1. storage_donor – список доноров (ПРИЛОЖЕНИЕ 1).
  2. storage_request – список запросов со схожей структурой как и у таблицы доноров.
  3. storage_group_blood – список групп крови (ПРИЛОЖЕНИЕ 2).

1.3. Интерфейс

В проекте для создания интерфейса будет использоваться среда разработки 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. РАЗРАБОТКА ПРОГРАММНОГО КОДА

2.1. Подключение библиотек и создание класса окна

 Для реализации проекта языком программирования был выбран python, а среда разработки – PyCharm. Но обычного функционала недостаточно, ведь программа представляет из себя комплекс взаимодействий, поэтому подключение библиотек неминуемо. Вот их список и объяснения, зачем они нужны:

sqlite3– поскольку в проекте используется SQLiteStudio, требуются возможности к взаимодействию с СУБД через программный код.

sys– нужен для работы с потоковым вводом и выводом, а также для взаимодействия с операционной системой.

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

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

2.2. Разработка заявленных функций

Однако, в класс 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. Миркин, Б. Г. Введение в анализ данных. Учебник и практикум / Б.Г. Миркин. - М.: Юрайт, 2019. - 176 c.
  2. Илюшечкин, В. М. Основы использования и проектирования баз данных. Учебник / В.М. Илюшечкин. - М.: Юрайт, 2018. - 214 c
  3. Эрик, Мэтиз Изучаем Python. Программирование игр, визуализация данных, веб-приложения / Мэтиз Эрик. - М.: Питер, 2019. – 551 c.
  4. Васильев, А. Н. Python на примерах. Практический курс по программированию / А.Н. Васильев. - М.: Наука и техника, 2019. - 432 c.

СПИСОК ИНТЕРНЕТ-РЕСУРСОВ

  1. https://ru.wikipedia.org/wiki/База_данных
  2. https://doc.qt.io/qt-6/qtdesigner-manual.html
  3. https://sqlitestudio.pl
  4. https://ru.wikipedia.org/wiki/Система_управления_базами_данных


ПРИЛОЖЕНИЯ

ПРИЛОЖЕНИЕ 1. Список доноров

ПРИЛОЖЕНИЕ 2. Список групп крови

ПРИЛОЖЕНИЕ 3. Интерфейс без подключения данных


Поделиться:

Ворона

В какой день недели родился Юрий Гагарин?

Земля на ладонях. Фантастический рассказ

Чем пахнут ремёсла? Джанни Родари

Астрономы получили первое изображение черной дыры