В качестве инструмента администрирования мы будем использовать среду IBExpert. Данная программа является одним из лучших средств администрирования СУБД и является совершенно бесплатной.
Для установки соединения клиентского приложения
с БД, будет использоваться ADO.NET (ActiveX Data Object для .NET). .NET - это
набор классов, предоставляющих службы доступа к данным программистам, которые
используют платформу .NET Framework. ADO.NET имеет богатый набор компонентов
для создания распределенных приложений, совместно использующих данные. Это
неотъемлемая часть платформы .NET Framework, которая предоставляет доступ к
реляционным данным, XML-данным и данным приложений. ADO.NET удовлетворяет
различные потребности разработчиков, включая создание клиентских приложений баз
данных.
.4 Вывод по анализу технического задания
В ходе анализа технического задания было выяснено, что база данных поликлиники будет создаваться для того, чтобы автоматизировать работу организации и избавить ее сотрудников от многих рутинных процессов, а именно:
от учета большого количества данных о пациентах, их истории болезни, диагнозах, специалистах и кабинетах, в которых специалисты ведут прием, а также специальностях сотрудников поликлиники;
поиска среди большого количества данных.
Исходя из выше описанного, готовая программа должна удовлетворять следующим требованиям:
вход в приложение с помощью логина и пароля:
занесение данных о пациенте, специалисте, диагнозах, специальностях и кабинетах в клиентскую базу;
добавление, удаление и редактирование данных БД;
хранение истории болезни пациентов;
поиск по таблице БД;
защиту от некорректного ввода данных с выводом сообщения об ошибке;
программа должна иметь удобный и интуитивно понятный интерфейс.
Для дальнейшего проектирования и создания
приложения нам следует подробнее изучить выбранную нами среду разработки,
построить блок-схемы частей, из которых будет состоять наша программа,
продумать дальнейший алгоритм работы. Также требуется разработать интерфейс
клиентского приложения для БД. После этого следует программная реализация
описанных выше алгоритмов и функций приложения. Написав программный код и
создав интерфейсную часть нашего приложения и необходимые базы, протестировать
все возможности программы на возникновение ошибок. При выявлении ошибок
устранить их. И в заключении необходимо написать вывод по проделанной работе.
2. Проектирование структуры базы данных
Проектирование базы данных - процесс создания схемы базы данных и определения необходимых ограничений целостности.
Основные задачи:
обеспечение хранения в базе данных всей необходимой информации;
возможность получения данных по всем необходимым запросам;
сокращение избыточности и дублирования данных;
обеспечение целостности базы данных.
Разработка курсового проекта будет базироваться на реляционной базе данных.
Для реляционных баз данных используется процесс, называемый нормализацией. На каждом этапе нормализации таблицы приводятся к виду, который называется нормальной формой.
Существует шесть нормальных форм, пять из которых так и называются: первая, вторая, третья, четвертая, пятая нормальная форма, а также форма Бойса-Кодда, лежащая между третьей и четвертой.
Основные свойства нормальных форм состоят в следующем:
каждая следующая нормальная форма в некотором смысле лучше предыдущей нормальной формы;
при переходе к следующей нормальной форме свойства предыдущих нормальных форм сохраняются.
При разработке структуры базы данных будут использованы первые три нормальные формы.
Первая нормальная форма (1НФ). Основным правилом первой нормальной формы является необходимость неделимости значения в каждом поле (столбце) строки - атомарность значений.
Каждая строка должна быть уникальна, поэтому для нее определяется первичный ключ. Первичный ключ - это атрибут или группа атрибутов, которые единственным образом идентифицируют каждую строку в столбце, т.е. первичный ключ не может повторяться в пределах таблицы и служит идентификатором записи.
Таблица 1
|
Название таблицы |
Ключевое поле таблицы |
|
PACIENT VRACH DIAGNOZ CABINET SPECIALNOST SOST_ZDOR TRUD_STATUS IST_BOLEZNI |
PACIENT_ID VRACH_ID DIAGNOZ_ID CABINET_ID SPECIALNOST_ID SOST_ID TRUD_ID IST_ID |
Для приведения данных таблицы PACIENT в 1НФ
разбиваем поле Ф.И.О. пациента на такие составные части как фамилия, имя и
отчество, поле адрес на город, улица, дом и квартира. В таблице VRACH поле
Ф.И.О. врача разбиваем на такие поля как фамилия, имя и отчество. Приводя
таблицу IST_BOLEZNI к 1НФ, разбиваем поле таблицы дата на 2 поля: дата
посещения и дата выписки. Таблицы IST_BOLEZNI и VRACH дополняем имеющимися
данными из других таблиц.
Рисунок 5 - Приведение таблиц к 1НФ
Вторая нормальная форма (2НФ) требует, чтобы все поля таблицы зависели от первичного ключа, т.е., чтобы первичный ключ однозначно определял запись и не был избыточен, а поля, зависящие от части первичного ключа, должны быть выведены в составе отдельных таблиц.
Во избежание избыточного дублирования данных
таблицы IST_BOLEZNI указываемые данные о пациенте (пол, дата рождения, адрес
проживания и место работы) сгруппированы в еще одну таблицу PACIENT.
Рисунок 6 - Предотвращение избыточного
дублирования данных
Третья нормальная форма (3НФ). 3НФ схожа по логике с 2НФ, но с некоторым отличием. Если 2 форма ликвидирует зависимости неключевых полей от части ключа, то третья нормальная форма исключает зависимость неключевых полей от других неключевых полей.
Нормализация несет с собой немало преимуществ. Очевидно, что в нормализованной базе данных уменьшается вероятность возникновения ошибок, она занимает меньше места на жестком диске и т.д.
Для того чтобы пользователям базы данных
поликлиники не пришлось многократно вводить одни и те же данные, например,
название диагноза или специальность врача, были созданы дополнительные таблицы
DIAGNOZ, CABINET, SPECIALNOST, SOST_ZDOR и TRUD STATUS.
Рисунок 7 - Дочерние таблицы, таблицы VRACH
Рисунок 8 - Дочерние таблицы, таблицы
IST_BOLEZNI
После создания таблиц в базе данных необходимо предоставить приложению средства, с помощью которых можно будет при необходимости объединять сведения. Это осуществляется путем создания общих полей в связанных таблицах и настройки отношений между таблицами. Как правило, общими полями в связанных таблицах являются поля, имеющие первичный ключ. Первичный ключ используется для связывания таблицы с внешними ключами в других таблицах. Внешний ключ - это одно или несколько полей (столбцов) в таблице, содержащих ссылку на поле или поля первичного ключа в другой таблице. Внешний ключ определяет способ объединения таблиц. Из двух логически связанных таблиц одну называют таблицей первичного ключа или главной таблицей, а другую таблицей внешнего ключа или подчиненной таблицей. СУБД позволяют сопоставить родственные записи из обеих таблиц и совместно вывести их в форме, отчете или запросе.
Таблица IST_BOLEZNI связана с таблицами PACIENT,
VRACH, DIAGNOZ, CABINET, SOST_ZDOR с помощью первичных ключей PACIENT_ID,
VRACH_ID, DIAGNOZ_ID, CABINET_ID, SOST_ID и полей PACIENT_ID, VRACH_ID,
DIAGNOZ_ID, CABINET_ID, SOST_ID таблицы IST_BOLEZNI, которые являются внешними
ключами.
Рисунок 9 - Связи таблицы IST_BOLEZNI
Таблица VRACH связана с таблицами CABINET,
SPECIALNOST, IST_BOLEZNI, TRUD_STATUS.
Рисунок 10 - Связи таблицы VRACH
Физическая модель базы данных содержит все детали, необходимые конкретной СУБД для создания базы данных: наименование таблиц и столбцов, типы данных, определения первичных и внешних ключей и т.п.
Рисунок 11 - ER-диаграмма проектируемой базы
данных (физическая модель)
3. Проектирование структуры программы и базовых
алгоритмов
Для представления принципа работы программы ниже
приведена ее структурная схема.
Рисунок 12 - Структурная схема программы
.1 Блок «Защита»
Рисунок 13 - Блок «Защита». Шаблон интерфейса
Рисунок 14 - Блок-схема блока «Защита»
Блок-схема блока «Защита» демонстрирует
структуру первичного окна приложения. Смысл данного блока состоит в сохранении
конфиденциальности и целостности данных, которые хранятся в программе.
.2 Блок «Главное окно программы»
Блок «Главное окно программы» в свою очередь
делится на подблоки: «Диагноз», «Кабинет», «Специальность», «Специалисты»,
«Пациенты» и «История болезни».
Рисунок 15 - Блок «Главное окно приложения».
Шаблон интерфейса
Рассмотрим более подробно подблок «Специалисты».
Рисунок 16 - Подблок «Специалисты». Шаблон
интерфейса
Удаление специалиста из базы данных будет
происходить путем выбора специалиста в списке и нажатия на кнопку:
Рисунок 17 - Блок-схема алгоритма удаления
специалиста из БД
Добавление специалиста в базу данных:
Рисунок 18 - Блок-схема алгоритма добавления
специалиста в БД
Добавление специалиста будет также происходить путем нажатия на кнопку в окне «Специалисты».
В результате специалист добавляется в базу данных и отображается в таблице формы «Специалисты».
Редактирование данных о специалисте:
Рисунок 19 - Блок-схема алгоритма редактирования
данных о специалисте
В результате происходит редактирование данных о специалисте. После подтверждения изменений они отображаются в новом состоянии в таблице.
В приложении стоит реализовать поиск. В данном
случае, поиск будет осуществляться только лишь по таблице специалистов.
Рисунок 20 - Блок схема алгоритма поиска
Подблоки «Диагноз», «Кабинет», «Специальность», «Пациенты» и «История болезни» будут реализованы аналогичным образом.
После того как была проанализирована структура
всего приложения, были разработаны проекты интерфейса и блок-схемы алгоритмов,
следует приступить непосредственно к их программной реализации.
4. Программная реализация разработанной
структуры и алгоритмов
Разработка базы данных поликлиники будет производиться посредством Windows Forms и технологии ADO.NET.
Взаимодействие с БД Firebird, как и с любым другим источником данных на платформе .NET, осуществляется через соответствующий провайдер (поставщик данных).
Поскольку провайдер Firebird не входит в состав базовых классов программной платформы, то его необходимо подключить к проекту отдельно.
После подключения библиотеки провайдера в проект необходимо включить пространство имен содержащее набор классов для работы с БД Firebird:FirebirdSql.Data.FirebirdClient;Forms - это технология интеллектуальных клиентов для .NET Framework. Она представляет собой набор управляемых библиотек, упрощающих выполнение стандартных задач.
В Windows Forms форма - это видимая поверхность, на которой выводится информация для пользователя. Обычно приложение Windows Forms строится путем помещения элементов управления на форму и написания кода для реагирования на действия пользователя, такие как щелчки мыши или нажатия клавиш. Элемент управления - это отдельный элемент пользовательского интерфейса, предназначенный для отображения или ввода данных.
Согласно разработанному проекту интерфейса (Рис. 13) блок «Защита» имеет следующий вид:
- Строка названия; 2,3 - Компоненты Label;4 - Поле для ввода логина; 5 - Поле для ввода пароля; 6 - Кнопка входа в программу
Рисунок 21 - Стартовое окно приложения
На форму «Вход» наложены такие элементы управления, как: Button (представляет элемент управления "кнопка Windows"), Label (представляет стандартную метку Windows) и PictureBox (предоставляет элемент управления графическим окном Windows для отображения рисунка). После ввода логина и пароля в соответствующие поля необходимо нажат кнопку «Вход» и данное событие при помощи алгоритма программно обрабатывается.
Листинг события при нажатии кнопки «Вход»:void button1_Click(object sender, EventArgs e)
{ (a == "123" & b == "123")
{ = 123; ();
} (Password != 123)
{ result = MessageBox.Show("Вход не выполнен. Проверте правильность ввода данных и попробуйте снова.", "Системное сообщение", MessageBoxButtons.OK, MessageBoxIcon.Error);
} .Clear(); = 0;
}
Главное окно приложения согласно проекту имеет
вид:
Рисунок 22 - Интерфейс главного окна приложения
Главное окно приложения представляет собой своего рода механизм управления, с помощью которого можно получить доступ к информации, хранящейся в базе данных поликлиники. Данная форма представляет собой набор клавиш, которые переключают пользователя на необходимые ему данные.
Используя кнопку «Пациенты», которая находится
на основной форме, перейдем к окну, интерфейс которого представлен на рисунке
23.
Рисунок 23 - Интерфейс формы «Пациенты»
Интерфейс данного окна напоминает визуальную оболочку предыдущей формы, но находясь в этом окне, пользователь не имеет возможности сразу перейти к просмотру других таблиц базы, ему придется вернуться к главной форме приложения.
Главным элементом формы «Пациенты» является таблица, хранящая информацию о пациентах поликлиники. Таблица реализована через компонент DataGridView (предоставляет мощный и гибкий способ отображения данных в табличном формате) и является точной копией базы IBExpert. Данные таблицы можно удалять, редактировать, а так же добавлять новые. Все происходящие изменения в таблице будут скопированы в базу.
Листинг редактирования данных:void button3_Click(object sender, EventArgs e)
{connectionString = new FbConnectionStringBuilder();.Database = "D:\\POLIKLINIKA.FDB";.UserID = "SYSDBA"; .Password = "masterkey"; .Role = ""; .Dialect = 3; .Charset = "NONE"; connection = new FbConnection(connectionString.ToString()); .Open(); id = Convert.ToInt32(dataGridView1[0, dataGridView1.CurrentRow.Index].Value.ToString()); command = new FbCommand("update pacient set pacient_familiya = '" + pACIENT_FAMILIYATextBox.Text + "', pacient_name = '" + pACIENT_NAMETextBox.Text + "', pacient_otchestvo = '" + pACIENT_OTCHESTVOTextBox.Text + "',pol = '" + pOLTextBox.Text + "', date_rod = '" + dATE_RODTextBox.Text + "', gorod = '" + gORODTextBox.Text + "', ulica = '" + uLICATextBox.Text + "', dom = '" + dOMTextBox.Text + "', kvartira = '" + kVARTIRATextBox.Text + "', mesto_raboti = '" + mESTORABOTITextBox.Text + "',connection); adapter = new FbDataAdapter(); .ExecuteNonQuery(); .Fill(this.dataSet1.PACIENT);.Close(); .Dispose();
}
При нажатии на кнопку «Добавить» происходит добавление нового пациента в базу. Добавленный пациент так же отобразится и в таблице формы.