Смекни!
smekni.com

Создание информационного банка данных Больница (стр. 3 из 4)

Таблица 3. Основные файлы программы

Файлы Назначение
Unit2.pas исходный файл с модулем для формы «Unit2»
UnitFilter.pas исходный файл с модулем для формы «UnitFilter»
UnitGlavVrach.pas исходный файл с модулем для формы «UnitGlavVrach»
UnitMedSestra.pas исходный файл с модулем для формы «UnitMedSestra»
UnitPassword.pas исходный файл с модулем для формы «UnitPassword»
ProjectHospital.dpr исходный файл проекта
ProjectHospital.exe автономный исполнимый файл, запускающий приложение

Модуль «Unit2» проекта «Больница» служит приветствием проекта. Модуль «UnitMedSestra» обеспечивает основную работу программы, «UnitFiter» обеспечивает поиск информации, «UnitGlavVrach» обеспечивает работу программы для врача и «UnitPassword» обеспечивает защиту информации.

Наименование процедуры (функции) Краткое описание
Модуль «Unit2»
procedure TForm2.FormPaint Закрашивание формы при запуске программы
Модуль «UnitMedSestra»
Procedure N1Click Вызов формы с паролем
procedure mnFindClick Вызов формы для поиска пациента
procedure tbPalataBeforeDelete Каскадное удаление палаты при отсутствие в ней пациентов
procedure tbOtdelBeforeDelete Каскадное удаление отделения, если все палаты пустые
procedure tbPalataAfterPost После создания палаты создаем список пациентов в ней путем копирования из списка отделения
procedure tbPacientAfterPost После добавления пациента в палату она на одного занимается
procedure tbOtdelAfterScroll После выбора отделения обновляется поле списка для выбора палаты
procedure tbPalataBeforeDelete Невозможно удалить палату при наличие в ней пациентов
procedure tbOtdelBeforeDelete Невозможно удалить отделение пока все палаты не пустые
procedure tbPacientBeforeInsert Блокируется добавление записи при вызове из сетки
procedure FormCanResize
procedure FormClose
procedure FormShow
Модуль «UnitFilter»
procedure btnFilterClick Поиск пациента по дате
procedure btnFamilClick Поиск пациента по фамилии
procedure FormShow
procedure FormCanResize
Модуль «UnitPassword»
procedure FormShow
procedure Timer1Timer Появление формы с паролем

Таблица 1. Основные процедуры и функции


5. Методическое обеспечение

5.1 Руководство пользователю

После запуска приложения на экране появляется заставка программы (см. Рисунок 2).

Рисунок 2. Заставка приложения

После заставки появляется главная форма (см. Рисунок 4). На ней можно просмотреть всю необходимую информацию, имеющуюся в текущий момент об отделение, палате и пациентах, лечащихся в данной больнице. Для этого необходимо выбрать интересующее вас отделение, палату пациента. После выбора интересующего отделения и палаты в правой части будут отображаться сведения о пациентах, лежащих там. Пациентов можно редактировать (выписка, поступление). При удалении пациентов из палаты они будут удалены из базы данных. Закрыть или свернуть главную форму можно при помощи кнопок, размещенных в правом верхнем углу формы или сочетанием клавиш Alt+F4.

Рисунок 4. Главное окно программы

Для того, чтобы найти необходимого пациента можно воспользоваться поиском. Поиск осуществляется по фамилии пациента или по сроку его пребывания в больнице. Для этого необходимо выбрать в главном меню «Поиск пациента» на главной форме. После этого появится форма поиска (см. Рисунок 5).

Рисунок 5. Поиск студента

В этой форме необходимо нажать кнопку «фамилия», если поиск производится по фамилии, затем задать фамилию пациента и нажать ОК, или если поиск производится по дате, нажать «дата» и ввести количество дней. Пример поиска показан на Рисунке 6 (а) и (б).

Рисунок 6(а) Поиск по фамилии

Рисунок 6 (б). Поиск по дате

После осуществления поиска при щелчке по одному из найденных пациентов, в главной форме произойдет локализация на данном пациенте (см. Рисунок 7).

Рисунок 7. Пример поиска

Для того что бы перейти к форме для главврача необходимо в главном меню, на форме для медсестры, выбрать «форма для главврача». Но после этого, для безопасности, появиться форма с паролем (см. Рисунок 8)

Рисунок 8. Форма с паролем

После ввода верного пароля появится форма для главврача, в которой можно будет осуществить добавление в базу, или удаление из нее отделения или палаты изменять количество койкомест (см. Рисунок 9)

Рисунок 9. форма для главврача


Заключение

База данных «Больница», разработанная в ходе выполнения проекта, является актуальной на сегодняшний день, так как все больницы нуждаются в автоматизации управления. Нами были приобретены навыки программирования на языке Object Pascal в среде Delphi 7.0. Также мы научились разрабатывать собственные алгоритмы для решения поставленных задач, овладели методами и средствами отладки и тестирования программ.

Разработанная нами программа устойчиво выполняет все свои функции, но для использования ее в больницах, она требует некоторых доработок: программным путем обеспечить безопасность данных, расширить возможности поиска (поиск по двум и более полям), и т.д.


Список используемой литературы

1. А.Я. Архангельский Программирование в Delphi 7

2. А. Микляев «Учебник пользователя IBMPC», Москва – 2000


Приложение А

Листингмодуля «Unit2.pas»

procedure TForm2.FormPaint(Sender: TObject);

var y:integer; red:byte;

consttext='База данных больницы';

begin

with Canvas do

begin

for y := 0 to Form2.Height-1 do

begin

red:=round($FF*(Form2.Height-y)/Form2.Height);

pen.Color:=rgb(red,0,0);

moveTo(0,y);

LineTo(Form2.Width-1,y)

end; // for

Font.Size:=32;

Font.Style:=[fsBold,fsItalic,fsUnderLine];

Font.Name:='Times New Roman Cyr';

Brush.Style:=bsClear;

Font.Color:=clBlack;

TextOut(40,30,Text);

Font.Color:=clWhite;

TextOut(36,26,Text);

end;// with

end;

procedure TForm2.Button1Click(Sender: TObject);

begin

close

end;

Приложение B

Листингмодуля «UnitMedSestra.pas»

procedure TFormMedSestra.N1Click(Sender: TObject);

begin

FormDeactivate(Self);

if (FormPassword.ShowModal=mrOk) and

(FormPassword.Edit1.Text='1') then

FormGlavVrach.Showmodal;

FormActivate(Self);

end;

procedure TFormMedSestra.FormShow(Sender: TObject);

begin

tbOtdel.Open;

tbPalata.Open;

tbPacient.Open;

form2.ShowModal;

DBLookupComboBox1.KeyValue:=tbOtdel.fieldByName('Notdel').AsInteger

end;

procedure TFormMedSestra.FormClose(Sender: TObject;

var Action: TCloseAction);

begin

tbOtdel.Close;

tbPalata.Close;

tbPacient.Close;

end;

procedure TFormMedSestra.tbPacientAfterDelete(DataSet: TDataSet);

begin // после удаления пациента палата на одного освобождается

tbPalata.Edit;

tbPalata.FieldByName('Kol_pacient').AsInteger:=

tbPalata.FieldByName('Kol_pacient').AsInteger-1;

tbPalata.Post;

if FormFilter.Visible then // если поисковая форма видима - информация на ней должна быть актуальна

begin

FormFilter.tbPalata2.Refresh;

FormFilter.tbPacient2.Refresh;

end;

end;

procedure TFormMedSestra.tbPacientBeforePost(DataSet: TDataSet);

begin // невозможно сохранить запись с пустыми полями: "фамилия и диагноз"

PacSt:= tbPacient.State;

if tbPacient.FieldByName('Famil').AsString='' then

if tbPacient.FieldByName('Diagnoz').AsString='' then

begin

tbPacient.Cancel;

Abort

end

else

begin

ShowMessage('Введитефамилию');

Abort

end

end;

procedure TFormMedSestra.tbPacientAfterPost(DataSet: TDataSet);

begin // после добавления(но не после редактирования) пациента палата на одного занимается

if PacSt=dsInsert then begin

tbPalata.Edit;

tbPalata.FieldByName('Kol_pacient').AsInteger:=

tbPalata.FieldByName('Kol_pacient').AsInteger+1;

tbPalata.Post;

end;

if FormFilter.Visible then // если поисковая форма видима - информация на ней должна быть актуальна

begin

FormFilter.tbPalata2.Refresh;

FormFilter.tbPacient2.Refresh;

end;

end;

procedure TFormMedSestra.tbPacientBeforeInsert(DataSet: TDataSet);

begin // невозможно добавить пациента, если вся палата занята

if tbPalata.FieldByName('Kol_pacient').AsInteger=

tbPalata.FieldByName('Kol_mest').AsInteger then abort;

end;

procedure TFormMedSestra.tbPacientNewRecord(DataSet: TDataSet);

begin // маленький сервис с вставкой текущей даты при добавлении пациента(уменьшается вероятность ошибки при вводе даты)

tbPacient.FieldByName('DataPostup').AsDateTime:=now;

end;

procedure TFormMedSestra.mnFindClick(Sender: TObject);

begin

FormFilter.Show

end;

procedure TFormMedSestra.tbOtdelAfterScroll(DataSet: TDataSet);

begin

if tbOtdel.fieldByName('Notdel').AsInteger>0 then // безэтойпроверкидобавлениеотделения

// в DBGrid стрелкой вниз не выполняется

DBLookupComboBox1.KeyValue:=tbOtdel.fieldByName('Notdel').AsInteger;

StaticText1.Caption:=tbOtdel.fieldByName('Kol_palat').AsString;

end;

procedure TFormMedSestra.tbPalataAfterScroll(DataSet: TDataSet);

begin

if tbPalata.fieldByName('Npalat').AsInteger>0 then // безэтойпроверкидобавлениепалаты

// в DBGrid стрелкой вниз не выполняется

DBLookupListBox1.KeyValue:=tbPalata.fieldByName('Npalat').AsInteger

end;

procedure TFormMedSestra.tbPalataBeforeDelete(DataSet: TDataSet);

begin

if tbPalata.FieldByName('Kol_Pacient').AsInteger>0 then

begin

windows.beep(400,200);

windows.beep(200,200);

ShowMessage('удаление палаты не возможно при наличии в ней пациентов');

abort

end;

end;

procedure TFormMedSestra.tbPalataAfterDelete(DataSet: TDataSet);

begin

tbOtdel.Edit;

tbOtdel.FieldByName('Kol_palat').AsInteger:=

tbOtdel.FieldByName('Kol_palat').AsInteger-1;

tbOtdel.Post

end;

procedure TFormMedSestra.tbOtdelBeforeDelete(DataSet: TDataSet);

begin

tbPalata.First;

while not tbPalata.Eof do

begin

if tbPalata.FieldByName('Kol_Pacient').AsInteger >0 then

begin

windows.beep(400,200);

windows.beep(500,200);

windows.beep(600,200);

ShowMessage('невозможно удалить отделение, так как не все палаты пустые');

abort;

end;

tbPalata.Next

end; // палаты каскадно будут удаляться, если ни в одной из них не пациентов

while not tbPalata.Bof do tbPalata.Delete

end;

procedure TFormMedSestra.tbPalataBeforePost(DataSet: TDataSet);