Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
[1] Курсовая работа [2] Создание информационной системы "Клиника". [3] СОДЕРЖАНИЕ
[4]
[5]
[6] [6.1] 2.1 Создание 3НФ [6.2] 2.2 Создание таблиц
[7] [7.1] 3.1 Модуль данных [7.2] 3.2 Создания событий [7.3] 3.3 Добавление компонентов на Form1
[8]
[9]
[10] |
Система управления базами данных (СУБД) - это программное обеспечение, с помощью которого пользователи могут определять, создавать и поддерживать базу данных, а также осуществлять к ней контролируемый доступ.
База данных (БД) совокупность сведений, хранимых в запоминающих устройствах ЭВМ, выступающая в качестве исходных данных при решении различных задач.
Главная цель создания баз данных состоит в объединении функций обновления, ведения и пополнения хранимой информации, а также справочной функции. Основное характерное свойство базы данных - ее независимость от рабочих программ, с которыми она взаимодействует. Эта независимость проявляется в возможности изменения содержания, объема и организации хранимой информации без изменения рабочих программ, пользующихся данной информацией. Для обеспечения независимости базы данных необходимо хранить описание накопленной информации вместе с самой информацией и обеспечить возможность коллективного доступа к любой части хранимых сведений.
Цель курсового проекта: создать информационную систему "Клиника".
Задачи:
Необходимо создать СУБД "Клиника" и приложение в Lazarus. Необходимо привести к третьей нормальной форме: Ф.И.О врача, Специализация, Ф.И.О пациента, День Регистрационный номер, Адрес, Дата рождения, Номер полиса, Диагноз, Дата приема, Страховая карта, Дата начало больничного Дата выпески.
Созданная 3НФ показана на рисунке 1.
Рисунок 1 - 3НФ
Создание таблиц начинается с таблицы, не имеющей внешних ключей. Запросы на создание таблиц выглядеть следующим образом:
Таблица №1
create table vrah
(IDvrah numeric not null primary key,
FIOvrah varchar (200),
spec varchar (50));
Внешний ключ IDvrah связывает текущую таблицу с таблицей vrah по ее первичному ключу IDvrah.
Таблица №2
create table pacient
(IDpacient numeric not null primary key,
FIOpacient varchar (200),
pegnom varchar (30),
adres varchar (50),
dt varchar (50),
nompol varchar (20));
Для автоматического заполнения значениями ключевых полей используются триггеры и генераторы. Запрос на их создание выглядит следующим образом:
Триггер к таблице №1
create generator vrah_id_gen;
commit;
set term ^;
create trigger set_vrah_id for vrah
active before insert position 0 as
begin
if(new.IDvrah is null) then
new.IDvrah = gen_id(vrah_id_gen,1);
end; ^
set term; ^
commit;
Триггер к таблице №2
create generator pacient_id_gen;
commit;
set term ^;
create trigger set_pacient_id for pacient
active before insert position 0 as
begin
if(new.IDpacient is null) then
new.IDpacient = gen_id(pacient_id_gen,1);
end; ^
set term; ^
commit;
Оставшиеся таблицы и триггеры делаются аналогичным образом, как на примере 1 и 2.
Для того чтобы создать приложение необходимо, создать новый проект (Файл > Создать...> из группы «Проект» выбираем «Приложение»). Добавим модуль данных (Файл > Создать...> из группы «Модуль» выбираем «Модуль данных»).
Добавляем в 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
Database |
IBConnection1 |
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
DataSet |
SQLQuery1 |
Задаем в свойстве 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
DataSet |
SQLQuery2 |
Оставшиеся SQLQuery и DataSource делаются аналогичным образом.
Задаем событие OnCreate в модуле данных DataModule1
procedure TDataModule1.DataModuleCreate(Sender: TObject);
begin
IBConnection1.Open;
end;
Задаем событие AfterConnect в компоненте IBConnection1
procedure TDataModule1.IBConnection1AfterConnect(Sender: TObject);
begin
SQLQuery1.Open;
SQLQuery2.Open;
SQLQuery3.Open;
SQLQuery4.Open;
SQLQuery5.Open;
SQLQuery6.Open;
end;
Задаем событие AfterOpen в компоненте SQLQuery1
Procedure TDataModule1.SQLQuery1AfterOpen (Sender:TDataSet);
Begin
SQLQuery2.Open;
End;
Задаем событие BeforeDisconnect в компоненте IBConnection1
procedure TDataModule1.IBConnection1BeforeDisconnect(Sender: TObject);
begin
SQLQuery1.Close;
SQLQuery2.Close;
SQLQuery3.Close;
SQLQuery4.Close;
SQLQuery5.Close;
SQLQuery6.Close;
end;
Задаем событие BeforeClose, общее для компонентов SQLQuery1и SQLQuery2
procedure TDataModule1.SQLQuery1BeforeClose(DataSet: TDataSet);
begin
if TSQLQuery(Dataset).State in [dsInsert,dsEdit]
then TSQLQuery(Dataset).Post;
end;
Задаем событие OnClose формы в Form1
procedure TForm1.FormClose(Sender: TObject; var CloseAction: TCloseAction);
begin
DataModule1.SQLTransaction1.Commit;
DataModule1.IBConnection1.Close;
end;
Задаем событие OnNewRecord в компонента SQLQuery1
procedure TDataModule1.SQLQuery1NewRecord(DataSet: TDataSet);
begin
SQLQuery1.FieldByName('IDvrah').AsInteger:=0;
end;
Задаем событие OnNewRecord в компонента SQLQuery2
procedure TDataModule1.SQLQuery2NewRecord(DataSet: TDataSet);
begin
SQLQuery2.FieldByName('IDpacient').AsInteger:=0;
end;
Задаем событие After Post в компоненте SQLQuery1
procedure TDataModule1.SQLQuery1AfterPost(DataSet: TDataSet);
begin
TSQLQuery(Dataset).ApplyUpdates;
end;
Оставшиеся SQLQuery делаются аналогичным образом.
Добавим со вкладки Standard на форму два компонента TPanel. Добавим со вкладки Data Controls на TPanel четыре TDBGrid. Добавим со вкладке Data Controls четыре компонента TDBNavigator (как показана на рисунке 4).
Задаем свойство для Panel1 и Panel2
Align |
alTop |
Height |
224 |
Задаем свойство для DBNavigator1 и DBNavigator2
DataSource |
DataModule1.DataSource1 (DataModule1.DataSource2) |
Задаем свойство для DBGrid1 и DBGrid2
DataSource |
DataModule1.DataSource1 (DataModule1.DataSource2) |
Оставшиеся DBNavigator и DBGrid задаются аналогичный образом.
Рисунок 4 Размещение компонентов на Form1
На рисунке 5 представлено приложение созданное в Lazarus.
Рисунок 5 приложение в Lazarus
В таблицу Врач добавим название ФИО врача и специалдизацию, например Сидоров Иван Василеевич специализация Хирург. Чтобы добавить запись в приложение необходимо нажать на
Рисунок 6 Таблица Врачи
- в начало таблицы;
- предыдущая запись;
- следующая запись;
- в конец таблицы;
- добавить;
- удались;
- редактировать;
- сохранить;
- отмена редактирования;
- Обновить.
В таблицу Пациент добавим Ф.И.О пациента, рег. номер, Адрес дату рождения и Номер полиса,например:
Иваннов Иван Иванович, 1, Кирова 10, 01.01.12, 2;
Петрова Светлана Ировна, 2, Дружбы 1, 15.11.99, 54;
Рисунок 7 Таблица Пациенты
В ходе работы была создана информационная система "Клиника". Выполнены задачи: создано 3НФ, создано БД "статистика матчей" в программе IBExpert, создано приложение в Lazarus.
Дополнительные ссылки:
1. http://ed.tusur.ru/data/umpo/011.pdf
PAGE 5