Разработка информационной системы 'Клиника'
Введение
Система управления базами данных (СУБД) - это программное
обеспечение, с помощью которого пользователи могут определять, создавать и
поддерживать базу данных, а также осуществлять к ней контролируемый доступ.
База данных (БД) - совокупность сведений, хранимых в
запоминающих устройствах ЭВМ, выступающая в качестве исходных данных при
решении различных задач.
Главная цель создания баз данных состоит в объединении
функций обновления, ведения и пополнения хранимой информации, а также
справочной функции. Основное характерное свойство базы данных - ее
независимость от рабочих программ, с которыми она взаимодействует. Эта
независимость проявляется в возможности изменения содержания, объема и
организации хранимой информации без изменения рабочих программ, пользующихся
данной информацией. Для обеспечения независимости базы данных необходимо
хранить описание накопленной информации вместе с самой информацией и обеспечить
возможность коллективного доступа к любой части хранимых сведений.
Цель курсового проекта: создать информационную
систему «Клиника».
Задачи:
1. Создать ЗНФ;
2. Создать БД «статистика матчей» в программе IBExpert;
. Создать приложение в Lazarus.
1.
Постановка задачи
Необходимо создать СУБД «Клиника» и приложение в Lazarus.
Необходимо привести к третьей нормальной форме: Ф.И.О врача, Специализация,
Ф.И.О пациента, День Регистрационный номер, Адрес, Дата рождения, Номер полиса,
Диагноз, Дата приема, Страховая карта, Дата начало больничного Дата выписки.
управление пользователь
программа
2.
Описание алгоритма
.1
Создание 3НФ
Созданная 3НФ показана на рисунке 1.
Рисунок 1 - 3НФ
.2
Создание таблиц
Создание таблиц начинается с таблицы, не имеющей внешних
ключей. Запросы на создание таблиц выглядеть следующим образом:
Таблица №1table vrah
(IDvrah numeric not null primary key,varchar
(200),varchar (50));
Внешний ключ IDvrah связывает текущую таблицу с таблицей vrah по ее первичному ключу IDvrah.
Таблица №2table pacient
(IDpacient numeric not null primary key,varchar
(200),varchar (30),varchar (50), varchar (50),
nompol varchar (20));
Для автоматического заполнения значениями ключевых полей
используются триггеры и генераторы. Запрос на их создание выглядит следующим
образом:
Триггер к таблице №1
create generator vrah_id_gen;;term ^;trigger
set_vrah_id for vrahbefore insert position 0 as(new.IDvrah is null) then.IDvrah
= gen_id (vrah_id_gen, 1);; ^term; ^;
Триггер к таблице №2generator
pacient_id_gen;;term ^;trigger set_pacient_id for pacientbefore insert position
0 as(new.IDpacient is null) then.IDpacient = gen_id (pacient_id_gen, 1);; ^
set term; ^
commit;
Оставшиеся таблицы и триггеры делаются аналогичным образом,
как на примере 1 и 2.
3.
Создание приложения
Для того чтобы создать приложение необходимо, создать новый
проект (Файл > Создать…> из группы «Проект» выбираем «Приложение»).
Добавим модуль данных (Файл > Создать…> из группы «Модуль» выбираем
«Модуль данных»).
.1
Модуль данных
Добавляем в DataModule1 TIBConnection, TSQLTransaction и четыре компонента TSQLQuery со вкладки SQLdb. Добавим четыре
компонента TDataSource со вкладки Data Access. (как показано на
рисунке 2)
Рисунок 2 - добавление компонентов
Задаем в свойстве IBConnection1
DatabaseName
|
C:\\BD\BD.GDB
|
Transaction
|
SQLTransaction1
|
LoginPrompt
|
False
|
Dialect
|
3
|
CharSet
|
UTF-8
|
UserName
|
SYSDBA
|
Password
|
masterkey
|
Задаем в свойстве SQLTransaction1
Database
|
IBConnection1
|
DefaultAction
|
caCommit
|
Params
|
write
read_committed rec_version nowait
|
Установим свойство Connected в компоненте IBConnection1в True
(как показана на рисунке 3).
Рисунок 3 - В свойстве Connected меняем вместо True на False
В случае успеха свойство беспрепятственно установится в True.
В Случае ошибки необходимо проверить имя пользователя, пароль, путь к базе.
Задаем в свойстве SQLQuery1
DatabaseIBConnection1
|
|
Transaction
|
SQLTransaction1
|
SQL
|
select * from
vrah
|
InsertSQL
|
insert
into vrah (FIOvrah, spec) values (:FIOvrah,:spec)
|
DeleteSQL
|
delete
from vrah where IDvrah=:IDvrah
|
UpdateSQL
|
update
vrah set IDvrah=:IDvrah, FIOvrah=:FIOvrah, spec=:spec where
IDvrah=:OLD_IDvrah
|
Задаем в свойстве DataSource1
|
Задаем в свойстве SQLQuery2
Database
|
IBConnection1
|
Transaction
|
SQLTransaction1
|
DataSource
|
DataSource1
|
SQL
|
select
* from pacient
|
InsertSQL
|
insert
into pacient (FIOpacient, pegnom, adres, dt, nompol) values
(:FIOpacient,:pegnom,:adres,:dt,:nompol)
|
DeleteSQL
|
delete
from pacient where IDpacient=:IDpacient
|
UpdateSQL
|
update
pacient set IDpacient=:IDpacient, FIOpacient=:FIOpacient, pegnom=:pegnom,
adres=:adres, dt=:dt, nompol=:nompol where IDpacient=:OLD_IDpacient
|
Задаем в свойстве DataSource1
Оставшиеся SQLQuery и DataSource делаются аналогичным образом.
.2
Создания событий
Задаем событие OnCreate в модуле данных DataModule1
procedure TDataModule1. DataModuleCreate (Sender:
TObject);. Open;;
Задаем событие AfterConnect в компоненте
IBConnection1TDataModule1.IBConnection1AfterConnect (Sender: TObject);. Open;.
Open;. Open;. Open;. Open;. Open;;
Задаем событие AfterOpen в компоненте SQLQuery1
Procedure TDataModule1.SQLQuery1AfterOpen
(Sender:TDataSet);. Open;;
Задаем событие
BeforeDisconnect в
компоненте IBConnection1
procedure
TDataModule1.IBConnection1BeforeDisconnect (Sender: TObject);. Close;. Close;.
Close;. Close;. Close;. Close;;
Задаем событие BeforeClose, общее для компонентов SQLQuery1и SQLQuery2
procedure TDataModule1.SQLQuery1BeforeClose
(DataSet: TDataSet);TSQLQuery(Dataset).State in [dsInsert,
dsEdit]TSQLQuery(Dataset).Post;;
Задаем событие OnClose формы в Form1
procedure TForm1. FormClose (Sender: TObject; var
CloseAction: TCloseAction);.SQLTransaction1. Commit;.IBConnection1. Close;;
Задаем событие OnNewRecord в компонента SQLQuery1
procedure TDataModule1.SQLQuery1NewRecord
(DataSet: TDataSet);. FieldByName('IDvrah').AsInteger:=0;;
Задаем событие OnNewRecord в компонента SQLQuery2
procedure TDataModule1.SQLQuery2NewRecord
(DataSet: TDataSet);. FieldByName('IDpacient').AsInteger:=0;;
Задаем событие After Post в компоненте SQLQuery1
procedure TDataModule1.SQLQuery1AfterPost
(DataSet: TDataSet);(Dataset).ApplyUpdates;;
Оставшиеся SQLQuery делаются аналогичным образом.
.3
Добавление компонентов на Form1
Добавим во вкладки Standard на форму два компонента TPanel. Добавим во вкладки Data
Controls на TPanel четыре TDBGrid. Добавим со вкладке Data Controls четыре
компонента TDBNavigator (как показана на рисунке 4).
Задаем свойство для Panel1 и Panel2
Задаем свойство для DBNavigator1 и DBNavigator2
DataSourceDataModule1. DataSource1 (DataModule1.
DataSource2)
|
|
Задаем свойство для DBGrid1 и DBGrid2
DataSourceDataModule1. DataSource1 (DataModule1.
DataSource2)
|
|
Оставшиеся DBNavigator и DBGrid задаются аналогичный образом.
Рисунок 4 -