База данных поликлиники
Содержание
Задание
Назначение
и область применения разрабатываемой программы
Постановка
задачи
Структурная
схема фрагмента информационной системы
Таблица
имён
Инструкция
по работе с программой
Заключение
Литература
Приложение
1(листинг программного кода)
Задание
Разработать информационную систему с применением
динамических структур данных. Для решения поставленной задачи рекомендуется
использовать динамические структуры (списки, деревья, очереди, стеки и т.п.) в
том случае, если для решения поставленной задачи их использование окажется
более целесообразным. Обеспечить возможность выполнения следующих операций над
выбранными структурами данных:
инициализацию;
добавление новых элементов;
удаление элементов;
перемещение по структуре данных;
поиск элементов структуры данных, отвечающих
заданным критериям;
вывод всех элементов структуры данных на экран.
Вариант №2 «Поликлиника»
Назначение и область применения разрабатываемой
программы
Область применения программы - регистрация
больных в поликлинике. Данная программа предназначена для автоматизации ведения
учета пациентов а поликлинике.
Основные возможности и характеристики программы
Программа позволяет создавать, упорядоченный по
алфавиту, список пациентов, содержащий ФИО , год рождения и название отделения
в которое направлен больной. Добавлять в него новые записи о пациентах, так же
осуществлять просмотр всего имеющегося списка, и удалять записи о пациентах ,
осуществляя их поиск по заданным параметрам:ФИО и год рождения.
Постановка задачи
Для выполнения контрольной работы будет
использоваться динамическая структура памяти - список. Такой выбор я сделал
потому, что он обладает необходимой функциональностью в отличие, например, от
очереди или стека.
Списком называется упорядоченное множество, состоящее
из переменного числа элементов, к которым применимы операции включения,
исключения. Список, отражающий отношения соседства между элементами, называется
линейным. Если ограничения на длину списка не допускаются, то список
представляется в памяти в виде связной структуры. Линейные связные списки
являются простейшими динамическими структурами данных.
Графически связи в списках удобно изображать с
помощью стрелок. Если компонента не связана ни с какой другой, то в поле
указателя записывают значение, не указывающее ни на какой элемент. Такая ссылка
обозначается специальным именем - nil.
На рисунке ниже приведена структура односвязного
списка. На нем поле INF - информационное поле, данные, NEXT - указатель на
следующий элемент списка. Каждый список должен иметь особый элемент, называемый
указателем начала списка или головой списка, который обычно по формату отличен
от остальных элементов. В поле указателя последнего элемента списка находится
специальный признак nil, свидетельствующий о конце списка.
Рис. Список.
Итак, необходимо реализовать программно линейный
связный список и обеспечить выполнение над ним следующих операций:
Добавление
Сортировка
Поиск
Удаление
Структурная схема фрагмента информационной
системы
Таблица имён
Во время работы над курсовой работой был создан
объект - пациентов. В качестве узлов списка используются экземпляры структуры
node.
= ^TPacient; //указатель на тип Tpacient
TPacient
= record
name:string[20]; //ФИО:string[4];
//год
рождения
vr:string[20]; //врач:TPPacient; //следующий
элемент списка: TPPacient; // голова списка: TPPacient; //новый узел списка:
TPPacient; //текущий узел списка: TPPacient; //предыдущий( относительно curr)
узел списка(node); //создание нового элемента списка
node^.name:= Edit1.Text; //ФИО^.date:=
Edit2.Text; //Год рождения^.vr:=
ListBox1.Items[listBox1.ItemIndex];//врачButton1Click(Sender:
TObject);//добавление пациента
в
списокButton2Click(Sender:
TObject);//вывод списка
пациентовButton3Click(Sender:
TObject);//удаление из
списка
Инструкция по работе с программой
При запуске программы появляется форма (рис. 1)
Рис. 1
Для добавления нового пациента в список нужно
ввести в поля «ФИО» и «Год рождения» данные пациента, а также выделить курсором
мыши название, отделения в которое направляется больной. Когда данные введены
нажать на кнопку «добавить». Список при добавлении пациентов автоматически
сортируется по алфавиту.
Для просмотра введенного списка пациентов нужно
нажать кнопку «вывести список» . (рис. 2)
Рис.2
Для поиска и удаления пациента до нужно ввести
его ФИО, год рождения и нажать на кнопку «удалить». Если пациент присутствует в
списке появится сообщение (рис. 3)
Рис.3
И при нажатии на «ОК» появится сообщение (рис.4)
Рис.4
Если введенные данные не соответствуют ни одному
пациенту , тогда появится сообщение (рис.5)
Рис.5
Проверить результат выполнения операции удаления
можно снова нажав на кнопку «вывести список» (рис.6)
Рис.6
Заключение
Контрольная работа заключалась в написании базы
данных поликлиники с использованием динамических структур данных. Для
выполнения контрольной работы в качестве динамических структур использовались
связные списки. Была изучена теория вопросу, затем, в среде визуального
программирования Delphi, реализован класс для работы со списком и интерфейс
программы.
Большинство современных языков программирования
уже содержат встроенные средства для работы со списками , но тем не менее,
полезно самому написать код для работы с ними, чтобы лучше понимать их
внутреннее устройство для более эффективного использования.
база данный список информационный
Литература
Никита
Культин «Delphi в задачах и примерах» БХВ-Петербург 2003
Вирт
Н. «Алгоритмы и структуры данных» Пер. с англ. - М.: Мир, 1989.
Приложение 1(листинг программного кода)
Unit1;
interface, Messages, SysUtils,
Variants, Classes, Graphics, Controls, Forms,, StdCtrls;= class(TForm): TEdit;:
TEdit;: TButton;: TButton;: TButton;: TListBox;: TLabel;: TLabel;:
TLabel;Button1Click(Sender: TObject);Button2Click(Sender:
TObject);FormCreate(Sender: TObject);Button3Click(Sender: TObject);: TForm1;
{$R *.dfm}= ^TPacient; //указатель
на
тип
Tpacient= record:string[20]; //ФИО:string[4];
//год
рождения
vr:string[20]; //врач:TPPacient; //следующий
элемент списка
end;: TPPacient; // голова
спискаTForm1.Button1Click(Sender:
TObject);: TPPacient; //новый узел
списка:
TPPacient; //текущий узел
списка:
TPPacient; //предыдущий(
относительно
curr) узел
списка
begin(node); //создание нового элемента списка
node^.name:= Edit1.Text; //ФИО^.date:=
Edit2.Text; //Год рождения^.vr:=
ListBox1.Items[listBox1.ItemIndex];//врач
//добавление узла в список
//найдем подходящее место
curr:=head;:=NIL;(curr <> NIL)
and (node.name > curr^.name) do
begin
// введенное значение больше текущего:=
curr;:=curr^.next; // к следующему узлу
end;pre = NIL
// новый узел в начало списка
node^.next:=head;
head:=node;
// новый
узел
после
pre, перед
curr^.next:=pre^.next;^.next:=node;;.text:='';.text:='';.SetFocus;;TForm1.Button2Click(Sender:
TObject);
var: TPPacient; // текущий элемент
списка:integer; // длина (кол-во элементов) списка:string; // строковое
представление списка
n:=0;:='';:=head;curr <> NIL
n:=n+1;:=st+curr^.name+' '+curr^.date+' '+curr^.vr+#13;:=curr^.next;;n <>
0ShowMessage('Список пациентов:
'#13+st)
else ShowMessage('В списке нет элементов.');
end;TForm1.FormCreate(Sender:
TObject);:=NIL; // список пустой;
//удаление
пациентовTForm1.Button3Click(Sender:
TObject);:TPPacient; // текущий,
проверяемый
узел:
TPPacient; // предыдущий
узел:boolean; // TRUE - узел, который надо удалить, есть в списке
buttonSelected : Integer;head = NIL
then('Список
пустой!',mtError,[mbOk],0);;;:=head;
// текущий
узел
- первый
узел:=NIL;
// предыдущего
узла
нет:=FALSE;
// найти
узел,
который
надо
удалить(curr
<> NIL) and (not found) do(curr^.name = Edit1.Text) and (curr^.date =
Edit2.Text)found:=TRUE // нужный
узел
найден//
к
следующему
узлу:=curr;:=curr^.next;;;found
then
// нужный узел найденMessageDlg('Пациент будет
удален из списка!',
mtWarning,[mbOk,mbCancel],0) =
mrOk{Exit}
// удаляем
узелpre
= NIL head:=curr^.next
// удаляем первый узел списка
else pre^.next:=curr.next;(curr);('Узел'
+ #13 +
'ФИО:'+Edit1.Text
+ #13 +
Edit2.Text+' года рождения'+ #13 +
'удален из списка.',,[mbOk],0);Exit;// узла,
который надо удалить, в списке нет
MessageDlg('Пациент'
+ #13 +
'ФИО:'
+ Edit1.Text + #13 +
Edit2.Text +' года рождения'+ #13 +
'в списке не найден.',
mtError,[mbOk],0);.Text:='';.Text:='';.SetFocus;
end;.