Поисковая система «Записная книжка врача-педиатра»
Результатом выполнения курсового проекта является база данных в виде таблицы, включающая в себя следующие поля: ФИО пациента, возраст, диагноз, дата посещения, назначения. В ходе работы закреплены знания, полученные ранее при изучении дисциплины «Основы алгоритмизации и программирования». А так же эти знания были применены на практике. В процессе работы были разработаны следующие процедуры… Читать ещё >
Поисковая система «Записная книжка врача-педиатра» (реферат, курсовая, диплом, контрольная)
Содержание Введение
1. Объектный тип
1.1 Объекты и классы
1.2 Базовые принципы объектно-ориентированного программирования (ООП)
1.3 Реализация ООП в Тurbo Рascal (TP)
2. Разработка информационно — поисковой системы «Записная книжка врача-педиатра» на языке программирования Паскаль
2.1 Постановка задачи
2.2 Описание алгоритма решения задачи
2.3 Описание исходных данных
3. Практическая часть выполнения задачи на языке программирования Паскаль
3.1 Описания интерфейса
3.2 Описание работы каждого блока (модуля / подпрограммы)
4. Результаты работы программы Заключение Список использованных источников Приложение, А Приложение Б
Введение
В данном курсовом проекте главной целью является разработка информационно-поисковой системы «Записная книжка врача-педиатра» на языке программирования Паскаль, с удобным пользовательским интерфейсом для работы с данной программой.
Информационно-поисковая система (ИПС) — это система, обеспечивающая поиск и отбор необходимых данных в некоторой базе данных.
Результатом выполнения курсового проекта будет являться база данных в виде таблицы, которая будет включать в себя следующие поля: Ф.И.О пациента, возраст пациента, основной диагноз пациента, дата посещения, назначения врача.
Так же одной из поставленных задач является создание следующих процедур: ввод данных, вывод данных на экран виде таблицы, сортировка данных по любому атрибуту который выбрал пользователь и вывод упорядоченной таблицы, поиск пациента по выбранному критерию и вывод соответствующей таблицы, удаление всех сведений по заданному больному и вывод вывод упорядоченной таблицы, удаление записи по определенному критерию который выбрал пользователь и вывод упорядоченной таблицы, замена диагноза заданного больного и вывод соответствующей таблицы, вывод сведений о всех датах посещения врача пациентом, удаление пациентов по заданному критерию который выбрал пользователь и вывод упорядоченной таблицы. Еще одной задачей является разработка удобного интерфейса для того что бы при работе с программой у пользователя не возникало затруднений. Результатом выполнения задания станет программа информационно-поисковой системы «Записная книжка врача-педиатра» с которой пользователь сможет работать без каких-либо затруднений.
1. Объектный тип
1.1 Объекты и классы Базовыми блоками объектно-ориентированной программы являются объекты и классы. Формально объект определить довольно трудно. Содержательно объект можно представить как что-то ощущаемое или воображаемое и имеющее хорошо определенное поведение. Таким образом, объект можно либо увидеть, либо потрогать, либо, по крайней мере, знать, что он есть, например, представлен в виде информации, хранимой в памяти ПК.
Объект — это часть окружающей нас реальности, т. е. он существует во времени и в пространстве. Класс — это множество объектов, имеющих общую структуру и общее поведение.
Объект имеет состояние, поведение и паспорт (средство для его однозначной идентификации). Состояние объекта объединяет все его поля данных (статический компонент, т. е. неизменный) и текущие значения каждого из этих полей (динамический компонент, т. е. обычно изменяющийся). Поведение выражает динамику изменения состояний объекта и его реакцию на поступающие сообщения. Идентификация (распознавание) объекта — это свойство, которое позволяет отличить объект от других объектов того же или других классов. Осуществляется идентификация посредством уникального имени (паспорта), которым наделяется объект в программе, впрочем как и любая другая переменная.
Операция — это функция, которую можно применить к объектам данного класса. Методом называют реализацию операции для объектов данного класса. Таким образом, операция — это спецификация (описание) метода, а метод — реализация операции. 1]
1.2 Базовые принципы объектно-ориентированного программирования (ООП) К базовым принципам объектно-ориентированного стиля программирования относятся:
— пакетирование или инкапсуляция;
— наследование;
— полиморфизм.
Пакетирование (инкапсуляция) — соединение в одном объекте данных и функций, которые манипулируют этими данными. Доступ к некоторым данным внутри пакета может быть либо запрещен, либо ограничен.
В рамках ООП данные называются полями объекта, а алгоритмы — объектными методами.
Инкапсуляция позволяет в максимальной степени изолировать объект от внешнего окружения. Она существенно повышает надежность разрабатываемых программ, т.к. локализованные в объекте алгоритмы обмениваются с программой сравнительно небольшими объемами данных, причем количество и тип этих данных обычно тщательно контролируется. Другим немаловажным следствием инкапсуляции является легкость обмена объектами, переноса их из одной программы в другую. 2]
Наследование — это такое отношение между объектами, когда один объект повторяет структуру и поведение другого.
И структурная, и объектно-ориентированная методологии преследуют цель построения иерархического дерева взаимосвязей между объектами (подзадачами). Но если структурная иерархия строится по простому принципу разделения целого на составные части, то при создании объектно-ориентированной иерархии принимается другой взгляд на тот же исходный объект. В объектно-ориентированной иерархии непременно отражается наследование свойств родительских (вышележащих) типов объектов дочерним (нижележащим) типам объектов.
Принцип наследования действует в жизни повсеместно и повседневно. Млекопитающие и птицы наследуют признаки живых организмов, в отличие от растений, орел и ворон наследуют общее свойство для птиц — умение летать. С другой стороны, львы, тигры, леопарды наследуют «структуру» и поведение, характерное для представителей отряда кошачьих и т. д.
Типы верхних уровней объектно-ориентированной иерархии, как правило, не имеют конкретных экземпляров объектов. Не существует, например, конкретного живого организма, который бы сам по себе назывался «млекопитающее» или «птица». Такие типы называют абстрактными.
Наследование позволяет использовать библиотеки классов и развивать их (совершенствовать и модифицировать библиотечные классы) в конкретной программе. Наследование позволяет создавать новые объекты, изменяя или дополняя свойства прежних. Объект-наследник получает все поля и методы предка, но может добавить собственные поля, добавить собственные методы или перекрыть своими методами одноименные унаследованные методы.
Принцип наследования решает проблему модификации свойств объекта и придает ООП в целом исключительную гибкость. При работе с объектами программист обычно подбирает объект, наиболее близкий по своим свойствам для решения конкретной задачи, и создает одного или нескольких потомков от него, которые «умеют» делать то, что не реализовано в родителе.
Когда вы строите новый класс, наследуя его из существующего класса, можно:
— добавить в новый класс новые компоненты-данные;
— добавить в новый класс новые компоненты-функции;
— заменить в новом классе наследуемые из старого класса компоненты-функции. 3, с.10]
Полиморфизм — это свойство родственных объектов (т.е. объектов, имеющих одного общего родителя) решать схожие по смыслу проблемы разными способами. Например, действие «бежать» свойственно большинству животных. Однако каждое из них (лев, слон, крокодил, черепаха) выполняет это действие различным образом.
Полиморфизм позволяет использовать одни и те же функции для решения разных задач. В рамках ООП поведенческие свойства объекта определяются набором входящих в него методов. Изменяя алгоритм метода в потомках объекта, программист может придавать этим потомкам отсутствующие у родителя специфические свойства. Для изменения метода необходимо перекрыть его в потомке, т. е. объявить в потомке одноименный метод и реализовать в нем нужные действия. В результате в объекте-родителе и объекте-потомке будут действовать два одноименных метода, имеющих разную алгоритмическую основу и, следовательно, придающие объектам разные свойства. Это и называется полиморфизмом объектов. 4]
1.3 Реализация ООП в Тurbo Рascal (TP)
В ТР для создания объектов используются зарезервированные слова object, class, constructor, destructor и стандартные директивы: private, public, virtual, inherited, abstract, dynamic.
Класс или объект — это структура данных, которая содержит поля и методы. Формальный синтаксис не сложен: описание объектного типа получается, если в описании данных поставить слово object или class и добавить объявление функций и процедур над полями. Закрывается описание объекта оператором end.
Type <�имя типа объекта>= object
<�поле>;
<�поле>;
…
<�метод>;
<�метод>;
end;
Компонент объекта — либо поле, либо метод. Поле содержит имя и тип данных. Метод — это процедура или функция, объявленная внутри декларации объектного типа, в том числе и особые процедуры, создающие и уничтожающие объекты (конструкторы и деструкторы). Объявление метода внутри описания объектного типа состоит только из заголовка (предварительное описание подпрограмм). Тело метода приводится вслед за объявлением объектного типа.
Пример. Вводится объектный тип «предок», который имеет поле данных Name (имя) и может выполнять два действия: провозглашать: «Я — предок!» и сообщать свое имя.
Type tPredoc = object Name: string; {поле данных объекта}
Procedure Declaration; {объявление методов объекта}
Procedure MyName;
End;
Тексты подпрограмм, реализующих методы объекта, должны приводиться в разделе описания процедур и функций. Заголовки при описании реализации метода повторяют заголовки, приведенные в описании типа, но дополняются именем объекта, которое отделяется от имени процедуры точкой. В нашем примере:
Procedure tPredoc. Declaration; {реализация метода объекта}
begin
writeln (`Я — предок!');
end;
Procedure tPredoc. MyName; {реализация метода объекта}
begin
writeln (`Я -', Name);
end;
Внутри описания методов на поля и методы данного типа ссылаются просто по имени. Так метод MyName использует поле Name без явного указания его принадлежности к объекту так, если бы выполнялся неявный оператор with <�переменная_типа_объект> do.
Под объектами понимают и переменные объектного типа — их называют экземплярами. Как всякая переменная, экземпляр имеет имя и тип: их надо объявить.
…{объявление объектного типа и описание его методов}
var v 1: tPredoc; {объявление экземпляра объекта}
begin
v1. Name:= `Петров Николай Иванович';
v1.Declaration;
v1.MyName
end.
Использование поля данных объекта v1 не отличается по своему синтаксису от использования полей записей. Вызов методов экземпляра объекта означает, что указанный метод вызывается с данными объекта v1. В результате на экран будут выведены строчки
Я — предок!
Я — Петров Николай Иванович
Аналогично записям, к полям переменных объектного типа разрешается обращаться как с помощью уточненных идентификаторов, так и с помощью оператора with.
Например, в тексте программы вместо операторов
v1.Name:= `Петров Николай Иванович';
v1.Declaration;
v1.MyName
возможно использование оператора with такого вида
with v1 do begin
Name:= `Петров Николай Иванович';
Declaration;
MyName
End;
Более того, применение оператора with с объектными типами, также как и для записей не только возможно, но и рекомендуется. 5]
2. Разработка информационно — поисковой системы «Записная книжка врача-педиатра» на языке программирования Паскаль
2.1 Постановка задачи В данном проекте необходимо разработать программу, создающую информационно-поисковую систему «Записная книжка врача-педиатра» на языке программирования Паскаль.
Создаваемая база данных должна храниться в файле. Записи базы данных формируются и выводятся на экран в виде таблицы.
В программе должны быть процедуры и функции, которые выполняют следующие действия над базой данных:
Программа должна иметь возможность добавления записи в файл и возможность сортировки, удаления и поиска по выбранному критерию. Необходимо реализовать просмотр содержимого файла путем вывода данных на экран в виде таблицы.
Данные процедуры и функции оформлены на экране в виде меню.
Для возможности реализации различных операций с базой данных, необходимо использовать переменные типа: record, string, integer, char, boolean, byte.
Структура программы должна содержать:
Ф.И.О пациента;
возраст пациента;
основной диагноз;
дату посещения;
назначения врача.
Требуется реализовать так же удаление заданного пациента, замена заданному пациенту диагноза, поиск всех дат посещения пациентом врача.
2.2 Описание алгоритма решения задачи Для разработки информационно-поисковой системы используется язык программирования Паскаль. Данная курсовая работа создавалась с использованием файлов. Созданная программа состоит из множества процедур, каждая из которых выполняет свою функцию. Это такие процедуры, как:
процедура ввода базы данных в файл (vvod_v_jyrnal);
процедура вывода базы данных на экран (tablica);
процедура меню сортировки (sortirovka);
процедура сортировки по фамилии (sortirovka_po_familii);
процедура сортировки по имени (sortirovka_po_imeni);
процедура сортировки по отчеству (sortirovka_po_otchestvy);
процедура сортировки по возрасту (sortirovka_po_vozrasty);
процедура сортировки по диагнозу (sortirovka_po_diagnozy);
процедура сортировки по дате посещения пациента
(sortirovka_po_date_posewenuya);
процедура сортировки по назначению врача
(sortirovka_po_naznacheniyu_vracha);
процедура меню поиска (poisk);
процедура поиска по фамилии (poisk_po_fam);
процедура поиска по имени (poisk_po_imeni);
процедура поиска по отчеству (poisk_po_otchestvy);
процедура поиска по возрасту (poisk_po_vozrasty);
процедура поиска по диагнозу (poisk_po_diagnozy);
процедура поиска по дате посещения (poisk_po_date_poseweniya);
процедура поиска по назначению врача (poisk_po_naznacheniuy);
процедура меню удаления (ydalenue);
процедура удаления по фамилии (ydalenue_po_familii);
процедура удаления по имени (ydalenue_po_imeni);
процедура удаления по отчеству (ydalenue_po_otchestvy);
процедура удаления по возрасту (ydalenue_po_vozrasty);
процедура удаления по диагнозу (ydalenue_po_diagnozy);
процедура удаления по дате посещения (ydalenue_po_date_poseweniya);
процедура удаления по назначению врача (ydalenue_po_naznacheniuy);
процедура удаления сведений о заданном больном (ydalenue_po_zadanomy_bolnomy);
процедура замены диагноза для заданного больного (zamena_diagnoza);
процедура вывода всех дат посещения пациентом врача (svedenuya_o_date_poseweniya);
процедура записи таблицы в текстовый файл для распечатки (zapis_tablici_v_txt_fail);
процедура вывода сведений по найденым пациентам (tablica_poiska);
процедура главного меню (menu).
Основной задачей программы является обработка данных, которые будут храниться в файле. Далее пользователь выполняет операции с созданной базой.
После запуска программы, нужно нажать Enter что бы перейте к таблице в которой записаны данные. Далее нужно нажать Enter что бы перейте к меню. При переходе к меню программа переходит к процедуре Menu.
Меню состоит из следующих пунктов:
— ввод записей о пациентах в журнал;
— вывод записей о пациентах;
— поиск пациента;
— удаление по заданному больному;
— замена диагноза и назначения;
— информация о датах посещения;
— удаление записей о пациентах;
— сортировка записей.
В зависимости от того какой пункт выберет пользователь будет выполнятся та или иная задача (процедура). Если пользователь выберет пункт «Ввод записей о пациентах в журнал», то программа переходит к процедуре vvod_v_jyrnal и пользователю предлагается занести в журнал сведения о пациентах. В конце ввода сведений автоматически программа переходит к процедуре «tablica» (в этой процедуре происходит вывод информации о пациентах в виде таблицы). С помощью нажатия клавиши Enter пользователь из таблицы может вернуться к меню. Если пользователь выбирает пункт «Поиск пациента» программа переходит к процедуре poisk которая представляет собой меню поиска.
В неё входят такие пункты как (каждому из пунктов соответствует своя процедура):
— поиск по фамилии (poisk_po_fam);
— поиск по имени (poisk_po_imeni);
— поиск по отчеству (poisk_po_otchestvy);
— поиск по возрасту (poisk_po_vozrasty);
— поиск по диагнозу (poisk_po_diagnozy);
— поиск по дате посещения (poisk_po_date_poseweniya);
— поиск по назначению врача (poisk_po_naznacheniuy).
При выборе любого из пунктов программа переходит к нужной процедуре. После выбора пункта по которому пользователь хочет найти пациента он вводит данные которые соответствуют критерию который он выбрал. Происходит поиск нужного пациента (пациентов) по критерию и перезапись их во второй массив записей и вывод второго массива записей в таблицу (программа делает вызов процедуры «tablica_poiska»).
Если пользователь выбирает удаление по заданному больному, то программа переходит к процедуре «ydalenue_po_zadanomy_bolnomy». Далее пользователю предлагается ввести Ф.И.О больного и программа удаляет все записи связаные с этим больным. Происходит перезапись в файл. Далее опять же автоматически выводится таблица в которой записаны данные пациентов уже без пациента которого удалили.
Если пользователь выбирает пункт замена диагноза и назначение пациенту программа переходит к процедуре «zamena_diagnoza». Пользователю предлагается ввести Ф.И.О пациента которому он хочет заменить диагноз и назначение, затем диагноз и назначение на которое пользователь хочет заменить пациенту. Далее происходит перезапись в файл для вывода в таблицу и перезапись в файл для печати. И вывод таблицы (опять же программа переходит к процедуре «tablica»).
Если пользователь выбирает пункт информация о датах посещения, то программа переходит к процедуре «svedenuya_o_date_poseweniya».
Пользователю предлагается ввести Ф.И.О пациента чьи даты посещения он хочет найти. Далее происходит поиск пациента и перезапись его во второй массив записей и вывод массива в виде таблицы (программа переходит к процедуре «tablica_poiska»).
Если пользователь выбирает пункт удаление записей о пациентах программа переходит к процедуре «ydalenue» которая является меню удаления.
В неё входят такие пункты как (каждому из пунктов соответствует своя процедура):
— удаление по фамилии (ydalenue_po_familii);
— удаление по имени (ydalenue_po_imeni);
— удаление по отчеству (ydalenue_po_otchestvy);
— удаление по возрасту (ydalenue_po_vozrasty);
— удаление по диагнозу (ydalenue_po_diagnozy);
— удаление по дате посещения (ydalenue_po_date_poseweniya);
— удаление по назначению врача (ydalenue_po_naznacheniuy).
При выборе любого из пунктов программа переходит к нужной процедуре. После выбора пункта по которому пользователь хочет удалить пациента он вводит данные которые соответствуют критерию который он выбрал. Происходит удаление нужного пациента (пациентов) по критерию и перезапись данных в файл и вывод таблицы (программа делает вызов процедуры «tablica»). Происходит так же перезапись в файл для печати.
Если пользователь выбирает пункт сортировка записей программа вызывает процедуру «sortirovka» которая является меню сортировки.
В неё входят такие пункты как (каждому из пунктов соответствует своя процедура):
— сортировка по фамилии (sortirovka_po_familii);
— сортировка по имени (sortirovka_po_imeni);
— сортировка по отчеству (sortirovka_po_otchestvy);
— сортировка по возрасту (sortirovka_po_vozrasty);
— сортировка по диагнозу (sortirovka_po_diagnozy);
— сортировка по дате посещения (sortirovka_po_date_posewenuya);
— сортировка по назначению врача (sortirovka_po_naznacheniyu_vracha).
При выборе любого из пунктов программа переходит к нужной процедуре. После выбора пункта по которому пользователь хочет произвести сортировку происходит сортировка по возрастанию и перезапись данных в файл и вывод таблицы (программа делает вызов процедуры «tablica»). Происходит так же перезапись в файл для печати.
2.3 Описание исходных данных К основным исходным данным формирующим таблицу, находящуюся в базе данных, относятся:
— Ф.И.О больного;
— возраст больного;
— диагноз больного;
— дата посещения;
— назначения врача.
Каждому полю было присвоено свое имя и тип.
Так для полей: Ф.И.О больного (familiya, imya, otchestvo), диагноз больного (diagnoz), назначения врача (naznachenue), дата посещения (god, mes, den) был выбран тип данных String. Переменные данных поля заполняются символами русского или английского алфавита.
Для поля Возраст (vozrast) был выбран тип данных Integer. Данный тип служит для представления целых чисел.
Постоянной переменной в программе является имя файла (tablica).
3. Практическая часть выполнения задачи на языке программирования Паскаль
3.1 Описания интерфейса Интерфейс — это совокупность средств и методов, при помощи которых пользователь взаимодействует с программой, компьютером, сайтами и т. д.
Интерфейс меню включает в себя некоторые пункты. Основными из них являются:
— Ввод записей о пациентах в журналпереходит к процедуре vvod_v_jyrnal;
— Вывод записей о пациентах — переходит к процедуре tablica;
— Поиск пациента — переходит к меню poisk В этом меню пользователю предлагается выбрать по какому полю будет произведен поиск;
— Удаление по заданному больному — переходит к процедуре ydalenue_po_zadanomy_bolnomy. Пользователю предлагается ввести Ф.И.О больного которого он хочет удалить;
— Замена диагноза и назначиения пациента — переходит к процедуре zamena_diagnoza. В этой процедуре пользователю предлагается ввести Ф.И.О пациента которому он хочет заменить диагноз и назначение. Далее предлагается ввести диагноз и назначение которые он хочет заменить;
— Информация о датах посещения — переходит к процедуре svedenuya_o_date_poseweniya;
— Удаление записей о пациентах — к меню ydalenue. В этом меню пользователю предлагается выбрать по какому полю будет произведено удаление;
— Сортировка записей — переходит к меню sortirovka. В этом меню пользователю предлагается выбрать по какому критерию будет произведена сортировка.
3.2 Описание работы каждого блока (модуля / подпрограммы) Созданная программа состоит из множества процедур, каждая из которых выполняет свою функцию. Это такие процедуры, как:
процедура ввода базы данных в файл (vvod_v_jyrnal);
процедура вывода базы данных на экран (tablica);
процедура меню сортировки (sortirovka);
процедура сортировки по фамилии (sortirovka_po_familii);
процедура сортировки по имени (sortirovka_po_imeni);
процедура сортировки по отчеству (sortirovka_po_otchestvy);
процедура сортировки по возрасту (sortirovka_po_vozrasty);
процедура сортировки по диагнозу (sortirovka_po_diagnozy);
процедура сортировки по дате посещения пациента
(sortirovka_po_date_posewenuya);
процедура сортировки по назначению врача
(sortirovka_po_naznacheniyu_vracha);
процедура меню поиска (poisk);
процедура поиска по фамилии (poisk_po_fam);
процедура поиска по имени (poisk_po_imeni);
процедура поиска по отчеству (poisk_po_otchestvy);
процедура поиска по возрасту (poisk_po_vozrasty);
процедура поиска по диагнозу (poisk_po_diagnozy);
процедура поиска по дате посещения (poisk_po_date_poseweniya);
процедура поиска по назначению врача (poisk_po_naznacheniuy);
процедура меню удаления (ydalenue);
процедура удаления по фамилии (ydalenue_po_familii);
процедура удаления по имени (ydalenue_po_imeni);
процедура удаления по отчеству (ydalenue_po_otchestvy);
процедура удаления по возрасту (ydalenue_po_vozrasty);
процедура удаления по диагнозу (ydalenue_po_diagnozy);
процедура удаления по дате посещения
(ydalenue_po_date_poseweniya);
процедура удаления по назначению врача
(ydalenue_po_naznacheniuy);
процедура удаления сведений о заданном больном
(ydalenue_po_zadanomy_bolnomy);
процедура замены диагноза для заданного больного
(zamena_diagnoza);
процедура вывода всех дат посещения пациентом врача (svedenuya_o_date_poseweniya);
процедура записи таблицы в текстовый файл для распечатки (zapis_tablici_v_txt_fail);
процедура вывода сведений по найденым пациентам (tablica_poiska);
процедура главного меню (menu).
Основной задачей программы является обработка данных, которые будут храниться в файле. Далее пользователь выполняет операции с созданной базой.
Процедура добавление записи выполняется при помощи оператора цикла. Файл открывается для записи. Команда (seek) переносит указатель в конец файла (это означает что добавление пациентов будет происходить в конец файла). Далее пользователю предлагается ввести количество пациентов которых он хочет добавить в файл и информацию про них которая добавляется в файл. Далее происходит перезапись в текстовый файл для печати.
Что касается процедуры вывода записей. Файл изначально открывается для чтения и из него считываются данные, которые выводятся пользователю на экран в виде таблицы. Весь процесс состоит в том, что из файла считываются записи (по одной и пока файл не закончится) и выводит на экран все данные этих записей.
Процедура поиска предназначена для выполнения поисковой функции нашей программы. Пользователю предлагается выбрать критерии, по которым производится поиск. Искомые данные могут иметь строковый или числовой тип. В итоге программа выведет в виде таблицы все данные, которые содержат выбранные пользователем критерии.
Алгоритм поиска: пользователь вводит информацию по тому критерию по которому он выбрал поиск (к примеру пользователь выбрал поиск по фамилии, то сначала пользователь должен ввести фамилию пациента которого он хочет найти) файл открывается для чтения и из него считываются все данные пока файл не кончится. После, с помощью оператора цикла (for), цикл проходит по всем записям и ищет в них те, в которых содержаться критерии, которые ввел пользователь (с помощью оператора If), если такой критерий найден то всю запись о пациенте перезаписывает во второй массив записей под названием pacientu_poisk и выводит в виде таблицы второй массив записей. В случае, если введенного пользователем критерия не оказалось, программа выведет пустую таблицу.
Процедура сортировки осуществляется методом «Сортировки простыми обменами (сортировка пузырьком)». Это один из наиболее простых и распространенных методов сортировки. Процедура сортировки упорядочивает данные в порядке возрастания. Изначально пользователь выбирает критерий по которому он хочет произвести сортировку. Затем процедура открывает файл для чтения и из него считываются данные, после этого с помощью условия цикл проходит по массиву записей, сравнивает их (с помощью оператора if), а после сортирует. Отсортированные данные перезаписываются в файл. На экран выводятся уже отсортированные данные. Далее происходит перезапись в текстовый файл для печати.
Процедура удаления выполняется после того, как в меню пользователь выбирает критерий удаления. С помощью условия цикл ищет информацию не равную введенной и переписывает во второй массив записей pacientu_poisk. Затем происходит перезапись сведений в файл из массива pacientu_poisk (т.к она содержит информацию без пациента которого удалили). И происходит перезапись в текстовый файл для печати.
Процедура замены диагноза происходит по следующему алгоритму: файл открывается для чтения и из него считывается вся информация про пациентов, затем пользователь вводит Ф.И.О пациента которому хочет заменить диагноз. Далее пользователь вводит диагноз и назначение врача на которые он хочет заменить данному пациенту. Далее с помощью условия цикл проходит по всем запясям и по Ф.И.О ищет нужного больного и когда она его находит заменяет диагноз и назначения врача. Далее происходит перезапись данных в файл уже с изменениями. И происходит перезапись в текстовый файл для печати.
Процедура поиска всех дат посещения пациентом врача происходит по следующему алгоритму: пользователь вводит Ф.И.О пациента чьи даты посещения он хочет найти. Далее файл открывается для чтения и из него считываются все данные пока файл не кончится. После, с помощью оператора цикла (for), цикл проходит по всем записям и ищет в них те, в которых содержится Ф.И.О, которое ввел пользователь и выводит информацию об этом пациенте. В случае, если введенного пользователем Ф.И.О не оказалось, программа выведет пустую таблицу.
Процедура удаления заданного больного происходит по такому же алгоритму как и процедура удаления с небольшим отличием. В процедуре удаления заданного больного пользователь вводит только Ф.И.О больного которого он хочет удалить из файла.
Процедура меню осуществляет диалог между программой и пользователем. Ведь именно в меню содержаться все процедуры, с которыми пользователь в дальнейшем осуществляет какие-либо действия.
4. Результаты работы программы После запуска, программа предложит нажать Enter для открытия журнала (рисунок 4.1).
Рисунок 4.1 — вход в журнал После нажатия клавиши Enter появится информация о пациентах в виде таблицы (рисунок 4.2), в которую входят такие пункты как:
— Ф.И.О пациента;
возраст;
диагноз;
дата;
назначение врача.
Что бы из таблицы перейти к меню нужно нажать Enter.
Рисунок 4.2 — Таблица информации о пациентах После перехода к меню пользователю предоставится возможность работы с программой (рисунок 4.3).
В меню содержится 8 пунктов:
— ввод записей о пациентах в журнал;
— вывод записей о пациентах;
— поиск пациента;
— удаление по заданному больному;
— замена диагноза и назначения;
— информация о датах посещения;
— удаление записей о пациентах;
— сортировка записей.
Выбор пункта осуществляется при помощи ввода номера пункта с клавиатуры.
информационная поисковая система pascal
Рисунок 4.3 — Меню При выборе пункта «Ввод записей о пациентах в журнал» в диалоговом окне появляется надпись «Введите количество пациентов» (рисунок 4.4). Этот пункт спрашивает у пользователя какое количество пациентов он хочет занести в файл.
Рисунок 4.4 — Запрос на ввод количества пациентов После программа переходит к самому вводу записей (рисунок 4.5).
Рисунок 4.5 — Ввод данных о пациентах
Пользователь вводит данные, а после выводится таблица с внесенными данными (рисунок 4.6).
Рисунок 4.6 — Таблица с введенными данными При выборе пункта «Поиск пациента» в диалоговом окне появляется меню поиска (рисунок 4.7). В этом меню находятся пункты, по которым будет производиться поиск записей.
Рисунок 4.7 — Меню поиска При выборе пункта пользователю будет предложено ввести информацию соответствующую критерию который пользователь выбрал (рисунок 4.8).
Рисунок 4.8 — Ввод информации соответствующей критерию который пользователь выбрал После появится таблица данных с найдеными пациентами (пациентом) (рисунок 4.9). Если такого пациента нету в журнале, то таблица будет пустой.
Рисунок 4.9 — Таблица с найдеными пациентами При выборе пункта «Удаление по заданному больному» в диалоговом окне появляется запрос на ввод Ф.И.О пациента которого пользователь хочет удалить (рисунок 4.10).
Рисунок 4.10 — Ввод Ф.И.О пациента которого пользователь хочет удалить При вводе Ф.И.О программа находит пациента и удаляет его. Далее происходит перезапись в журнал (файл) и перезапись в файл для печати (рисунок 4.11).
Рисунок 4.11 — Вывод таблицы и файла после удаления При выборе пункта «Замена диагноза и назначения» в диалоговом окне появляется надпись предлагающая ввести Ф.И.О пациента которому пользователь хочет заменить диагноз и назначение, а затем ввести диагноз и назначение на которое пользователь хочет заменить пациенту. Затем происходит перезапись в файл и далее программа выводит новые данные в таблице и перезаписывает файл для печати.
При выборе пункта «Информация о датах посещения» в диалоговом окне появляется запрос на ввод Ф.И.О пациента чьи даты посещения пользователь хочет найти Далее программа выводит новые данные в таблице При выборе пункта «Удаление записей о пациентах» в диалоговом окне появляется меню удаления. В этом меню находятся пункты, по которым будет производиться удаление записей. При выборе пункта пользователю будет предложено ввести информацию соответствующую критерию который пользователь выбрал.
Далее произойдет перезапись в журнал (файл) после появится таблица данных уже без пациентов которых удалили. И произойдет перезапись в файл для печати При выборе пункта «Сортировка записей» в диалоговом окне появляется меню сортировки. В этом меню находятся пункты, по которым будет производиться сортировка записей. При выборе пункта произведется сортировка записей в порядке возрастания.
Далее произойдет перезапись в журнал (файл) после появится таблица данных уже отсортированных данных. И произойдет перезапись в файл для печати
Заключение
В данном курсовом проекте на основе информационно-поисковой системы была разработана «Записная книжка врача-педиатра». Программа была разработана на языке программирования Паскаль, с организацией удобного пользовательского интерфейса для работы с данной программой.
Результатом выполнения курсового проекта является база данных в виде таблицы, включающая в себя следующие поля: ФИО пациента, возраст, диагноз, дата посещения, назначения. В ходе работы закреплены знания, полученные ранее при изучении дисциплины «Основы алгоритмизации и программирования». А так же эти знания были применены на практике. В процессе работы были разработаны следующие процедуры: добавление пациента (пациентов), просмотр созданной таблицы, удаление записи по заданному атрибуту, замена диагноза и назначения заданному пациенту, сортировка по заданному атрибуту, поиск по заданному атрибуту, удаление заданного пациента, просмотр дат посещения заданного пациента.
Данная информационно-поисковая система может широко использоваться в поликлиниках, больницах, госпиталях.
Удобный пользователю интерфейс базы данных, а так же ее простота обеспечит легкое и быстрое получение нужной информации об интересующих пользователя пациентах.
При выполнении поиска запрошенной информации, разработанная база данных выдаст всю найденную по запросу пользователя информацию без потерь и без показа лишней информации, что позволит пользователю сократить затраты времени на поиск нужной информации.
При создании файла вся информация сохраняется, что позволяет при выходе из программы не потерять данные. А при входе пользователь может осуществлять далее работу с файлом. Созданные и разработанные процедуры предназначены для создания наиболее благоприятных условий работы пользователя с программой, а простой и понятный интерфейс облегчает работу с ней.
Список использованных источников
1. Лекционные материал предоставленный на занятиях дисциплины «Основы алгоритмизации и программирования».
2. Окулов, С. М. Основы программирования.
3. Абрамов, В.Г.
Введение
в язык Паскаль. — 320 с.
4. Павловская, Т. А. Паскаль. Программирование на языке высокого уровня. — 288 с.
5. Гончаров, С. Я. Конструирование программ и языки программирования. — 232 с.
Приложение, А (Обязательное) Листинг программы Код программы «Записная книжка врача-педиатра»
program prog;
uses crt;
type jyrnal=record;
imya, familiya, otchestvo, diagnoz, naznachenue, god, mes, den: string; vozrast: integer;
end;
var pacientu, pacientu_poisk:array [1.1000] of jyrnal;
o:jyrnal; a, i, q, w, v, r, p, n, g, b, j:integer; f: file of jyrnal; t, z, x, c, u, d: string;m:integer;h:text;
procedure dizan (x1,y1,x2,y2,fon, cvet: integer);
var i, j: integer;
begin
window (x1+1,y1+1,x2−1,y2−1);
textcolor (cvet);
textBackground (fon);
clrscr;
end;
procedure vvod_v_jyrnal;
begin
clrscr;
assign (f,'tablica');
reset (f);
seek (f, FileSize (f));
write ('Введите количество пациентов: ');
read (a);
clrscr;
for i:=1 to a do with pacientu[i] do
begin
WriteLn ('Пациент № ', i);
write ('Фамилия Пациента:');
read (familiya);
write ('Имя Пациента:');
read (imya);
write ('Отчество Пациента:');
read (otchestvo);
write ('Возраст пациента:');
read (vozrast);;
write ('Основной диагноз:');
read (diagnoz);
write ('Число посещения врача:');
read (den);
write ('Месяц посещения врача:');
read (mes);
write ('Год посещения врача:');
read (god);
write ('Назначения врача:');
read (naznachenue);
write (f, pacientu[i]);
end;
close (f);
end;
procedure tablica;
begin
clrscr;
textBackground (lightcyan);
window (100,100,100,100);
dizan (100,100,100,100,green, black);
assign (f,'tablica');
reset (f);
Write ('—————————————',#22,'———-',#22,'——————-',#22,'—————',#22,'—————————-',#2);
Write (#5,' Ф.И.О Пациента ',#5,'Возраст',#5,' Диагноз ',#5,' Дата ',#5,' Назначение врача ',#5);
Write (#25,'————————————-',#16,'———-',#16,'——————-',#16,'—————',#16,'—————————-',#23);
while not eof (f) do with o do
begin
read (f, o);
write (' ', familiya:25,'', vozrast:4,' ', diagnoz:11,' ', den:2,'.', mes,'.', god,'', naznachenue:19,'');
write ('', imya:25,'',' ',' ',' ',' ');
write ('', otchestvo:25,'',' ',' ',' ',' ');
Write (#25,'————————————-',#16,'———-',#16,'——————-',#16,'—————',#16,'—————————-',#23);
end;
close (f);
writeln ('Нажмите ENTER для открытия меню');
end;
procedure tablica_poiska;
begin
clrscr;
textBackground (lightcyan);
window (100,100,100,100);
dizan (100,100,100,100,green, black);
Write ('—————————————',#22,'———-',#22,'——————-',#22,'—————',#22,'—————————-',#2);
Write (#5,' Ф.И.О Пациента ',#5,'Возраст',#5,' Диагноз ',#5,' Дата ',#5,' Назначение врача ',#5);
Write (#25,'————————————-',#16,'———-',#16,'——————-',#16,'—————',#16,'—————————-',#23);
for i:=1 to p do with pacientu_poisk[i] do
begin
write ('', familiya:25,'', vozrast:4,' ', diagnoz:11,' ', den:2,'.', mes,'.', god,'', naznachenue:19,'');
write ('', imya:25,'',' ',' ',' ',' ');
write ('', otchestvo:25,'',' ',' ',' ',' ');
Write (#25,'————————————-',#16,'———-',#16,'——————-',#16,'—————',#16,'—————————-',#23);
end;
close (f);
writeln ('Нажмите ENTER для открытия меню');
end;
procedure zapis_tablici_v_txt_fail;
begin
assign (f,'tablica');
reset (f);
assign (h,'tablica.txt');
rewrite (h);
Writeln (h,'—————————————',#22,'———-',#22,'——————-',#22,'—————',#22,'—————————-',#2);
Writeln (h,#5,' Ф.И.О Пациента ',#5,'Возраст',#5,' Диагноз ',#5,' Дата ',#5,' Назначение врача ',#5);
Writeln (h,#25,'————————————-',#16,'———-',#16,'——————-',#16,'—————',#16,'—————————-',#23);
while not eof (f) do with o do
begin
read (f, o);
writeln (h,'', familiya:25,'', vozrast:4,' ', diagnoz:11,' ', den:2,'.', mes,'.', god,'', naznachenue:19,'');
writeln (h,'', imya:25,'',' ',' ',' ',' ');
writeln (h,'', otchestvo:25,'',' ',' ',' ',' ');
Writeln (h,#25,'————————————-',#16,'———-',#16,'——————-',#16,'—————',#16,'—————————-',#23);
end;
close (h);
end;
procedure poisk_po_fam;
begin
clrscr;
write ('Введите фамилию пациента: ');
read (t);
i:=1;
assign (f,'tablica');
reset (f);
while not eof (f) do
begin
read (f, pacientu[i]);
inc (i);
end;
begin
p:=0;
for i:=1 to 1000 do with pacientu[i] do
if familiya = t then
begin
inc (p);
pacientu_poisk[p]: =pacientu[i];
end;
tablica_poiska;
readln;
end;end;
procedure poisk_po_imeni;
begin
clrscr;
write ('Введите имя пациента: ');
read (t);
i:=1;
assign (f,'tablica');
reset (f);
while not eof (f) do
begin
read (f, pacientu[i]);
inc (i);
end;
begin
p:=0;
for i:=1 to 1000 do with pacientu[i] do
if imya = t then
begin
inc (p);
pacientu_poisk[p]: =pacientu[i];
end;
tablica_poiska;
readln;
end;end;
procedure poisk_po_otchestvy;
begin
clrscr;
write ('Введите отчество пациента: ');
read (t);
i:=1;
assign (f,'tablica');
reset (f);
while not eof (f) do
begin
read (f, pacientu[i]);
inc (i);
end;
begin
p:=0;
for i:=1 to 1000 do with pacientu[i] do
if otchestvo = t then
begin
inc (p);
pacientu_poisk[p]: =pacientu[i];
end;
tablica_poiska;
readln;
end;end;
procedure poisk_po_vozrasty;
begin
clrscr;
write ('Введите возраст пациента: ');
read (m);
i:=1;
assign (f,'tablica');
reset (f);
while not eof (f) do
begin
read (f, pacientu[i]);
inc (i);
end;
begin
p:=0;
for i:=1 to 1000 do with pacientu[i] do
if vozrast = m then
begin
inc (p);
pacientu_poisk[p]: =pacientu[i];
end;
tablica_poiska;
readln;
end;end;
procedure poisk_po_diagnozy;
begin
clrscr;
write ('Введите диагноз пациента: ');
read (t);
i:=1;
assign (f,'tablica');
reset (f);
while not eof (f) do
begin
read (f, pacientu[i]);
inc (i);
end;
begin
p:=0;
for i:=1 to 1000 do with pacientu[i] do
if diagnoz = t then
begin
inc (p);
pacientu_poisk[p]: =pacientu[i];
end;
tablica_poiska;
readln;
end;end;
procedure poisk_po_date_poseweniya;
begin
clrscr;
write ('Введите число посещения пациента: ');
read (t);
write ('Введите месяц посещения пациента: ');
read (z);
write ('Введите год посещения пациента: ');
read (c);
i:=1;
assign (f,'tablica');
reset (f);
while not eof (f) do
begin
read (f, pacientu[i]);
inc (i);
end;
begin
p:=0;
for i:=1 to 1000 do with pacientu[i] do
if (den = t) and (mes=z) and (god=c) then
begin
inc (p);
pacientu_poisk[p]: =pacientu[i];
end;
tablica_poiska;
readln;
end;end;
procedure poisk_po_naznacheniuy;
begin
clrscr;
write ('Введите назначения пациенту которые дал ему врач: ');
read (t);
i:=1;
assign (f,'tablica');
reset (f);
while not eof (f) do
begin
read (f, pacientu[i]);
inc (i);
end;
begin
p:=0;
for i:=1 to r do with pacientu[i] do
if naznachenue = t then
begin
inc (p);
pacientu_poisk[p]: =pacientu[i];
end;
tablica_poiska;
readln;
end;end;
procedure poisk;
begin
clrscr;
writeln (' Меню поиска');
writeln ('1:Поиск по фамилии');
writeln ('2:Поиск по имени');
writeln ('3:Поиск по отчеству');
writeln ('4:Поиск по возрасту');
writeln ('5:Поиск по диагнозу');
writeln ('6:Поиск по дате посещения');
writeln ('7:Поиск по назначению врача');
write ('Введите цифру нужной вам операции: ');
read (v);
case v of
1:begin
poisk_po_fam;
end;
2:begin
poisk_po_imeni;
end;
3:begin
poisk_po_otchestvy;
end;
4:begin
poisk_po_vozrasty;
end;
5:begin
poisk_po_diagnozy;
end;
6:begin
poisk_po_date_poseweniya;
end;
7:begin
poisk_po_naznacheniuy;
end;
end;
end;
procedure svedenuya_o_date_poseweniya;
begin
clrscr;
write ('Введите фамилию пациента: ');
read (z);
write ('Введите имя пациента: ');
read (x);
write ('Введите отчество пациента: ');
read (c);
i:=1;
r:=1;
assign (f,'tablica');
reset (f);
while not eof (f) do
begin
read (f, pacientu[i]);
inc (i);
inc®;
end;
begin
p:=0;
for i:=1 to r do with pacientu[i] do
if familiya = z then
begin
if imya = x then
begin
if otchestvo = c then
begin
inc (p);
pacientu_poisk[p]: =pacientu[i];
end;
end;
end;
tablica_poiska;
end;
end;
procedure ydalenue_po_zadanomy_bolnomy;
begin
clrscr;
write ('Введите фамилию пациента: ');
read (z);
write ('Введите имя пациента: ');
read (x);
write ('Введите отчество пациента: ');
read (c);
i:=1;
assign (f,'tablica');
reset (f);
while not eof (f) do
begin
read (f, pacientu[i]);
inc (i);
r:=i-1;
end;
begin
p:=0;
for i:=1 to r do with pacientu[i] do
if (familiya<>z) or (imya<>x) or (otchestvo<>c) then
begin
inc (p);
pacientu_poisk[p]: =pacientu[i];
end;
assign (f,'tablica');
rewrite (f);
for i:=1 to p do
write (f, pacientu_poisk[i]);
end;
zapis_tablici_v_txt_fail;
tablica;
end;
procedure zamena_diagnoza;
begin
clrscr;
i:=1;
assign (f,'tablica');
reset (f);
while not eof (f) do
begin
read (f, pacientu[i]);
inc (i);
n:=i-1;
end;
write ('Введите фамилию пациента: ');
read (z);
write ('Введите имя пациента: ');
read (x);
write ('Введите отчество пациента: ');
read (c);
write ('Введите диагноз на который вы хотите заменить: ');
read (u);
write ('Введите назначения на которое вы хотите заменить: ');
read (d);
assign (f,'tablica');
for i:=1 to n do with pacientu[i] do
if familiya = z then
begin
if imya = x then
begin
if otchestvo = c then
begin
diagnoz:=u;
naznachenue:=d;
rewrite (f);
for i:=1 to n do
write (f, pacientu[i]);
zapis_tablici_v_txt_fail;
tablica;
end;end;end;end;
procedure ydalenue_po_familii;
begin
clrscr;
write ('Введите фамилию пациента: ');
read (t);
i:=1;
r:=0;
assign (f,'tablica');
reset (f);
while not eof (f) do
begin
read (f, pacientu[i]);
inc (i);
inc®;
end;
begin
p:=0;
for i:=1 to r do with pacientu[i] do
if familiya <> t then
begin
inc (p);
pacientu_poisk[p]: =pacientu[i];
end;
assign (f,'tablica');
rewrite (f);
for i:=1 to p do
write (f, pacientu_poisk[i]);
end;
zapis_tablici_v_txt_fail;
tablica;
end;
procedure ydalenue_po_imeni;
begin
clrscr;
write ('Введите имя пациента: ');
read (t);
i:=1;
r:=0;
assign (f,'tablica');
reset (f);
while not eof (f) do
begin
read (f, pacientu[i]);
inc (i);
inc®;
end;
begin
p:=0;
for i:=1 to r do with pacientu[i] do
if imya <> t then
begin
inc (p);
pacientu_poisk[p]: =pacientu[i];
end;
assign (f,'tablica');
rewrite (f);
for i:=1 to p do
write (f, pacientu_poisk[i]);
end;
zapis_tablici_v_txt_fail;
tablica;
end;
procedure ydalenue_po_otchestvy;
begin
clrscr;
write ('Введите отчество пациента: ');
read (t);
i:=1;
r:=0;
assign (f,'tablica');
reset (f);
while not eof (f) do
begin
read (f, pacientu[i]);
inc (i);
inc®;
end;
begin
p:=0;
for i:=1 to r do with pacientu[i] do
if otchestvo <> t then
begin
inc (p);
pacientu_poisk[p]: =pacientu[i];
end;
assign (f,'tablica');
rewrite (f);
for i:=1 to p do
write (f, pacientu_poisk[i]);
end;
zapis_tablici_v_txt_fail;
tablica;
end;
procedure ydalenue_po_vozrasty;
begin
clrscr;
write ('Введите возраст пациента: ');
read (m);
i:=1;
r:=0;
assign (f,'tablica');
reset (f);
while not eof (f) do
begin
read (f, pacientu[i]);
inc (i);
inc®;
end;
begin
p:=0;
for i:=1 to r do with pacientu[i] do
if vozrast <> m then
begin
inc (p);
pacientu_poisk[p]: =pacientu[i];
end;
assign (f,'tablica');
rewrite (f);
for i:=1 to p do
write (f, pacientu_poisk[i]);
end;
zapis_tablici_v_txt_fail;
tablica;
end;
procedure ydalenue_po_diagnozy;
begin
clrscr;
write ('Введите диагноз пациента: ');
read (t);
i:=1;
r:=0;
assign (f,'tablica');
reset (f);
while not eof (f) do
begin
read (f, pacientu[i]);
inc (i);
inc®;
end;
begin
p:=0;
for i:=1 to r do with pacientu[i] do
if diagnoz <> t then
begin
inc (p);
pacientu_poisk[p]: =pacientu[i];
end;
assign (f,'tablica');
rewrite (f);
for i:=1 to p do
write (f, pacientu_poisk[i]);
end;
zapis_tablici_v_txt_fail;
tablica;
end;
procedure ydalenue_po_date_poseweniya;
begin
clrscr;
write ('Введите число посещения пациента: ');
read (t);
write ('Введите месяц посещения пациента: ');
read (z);
write ('Введите год посещения пациента: ');
read (c);
i:=1;
r:=0;
assign (f,'tablica');
reset (f);
while not eof (f) do
begin
read (f, pacientu[i]);
inc (i);
inc®;
end;
begin
p:=0;
for i:=1 to r do with pacientu[i] do
if (den <> t) or (mes<>z) or (god<>c) then
begin
inc (p);
pacientu_poisk[p]: =pacientu[i];
end;
assign (f,'tablica');
rewrite (f);
for i:=1 to p do
write (f, pacientu_poisk[i]);
end;
zapis_tablici_v_txt_fail;
tablica;
end;
procedure ydalenue_po_naznacheniuy;
begin
clrscr;
write ('Введите назначения пациента данные ему врачом: ');
read (t);
i:=1;
r:=0;
assign (f,'tablica');
reset (f);
while not eof (f) do
begin
read (f, pacientu[i]);
inc (i);
inc®;
end;
begin
p:=0;
for i:=1 to r do with pacientu[i] do
if naznachenue <> t then
begin
inc (p);
pacientu_poisk[p]: =pacientu[i];
end;
assign (f,'tablica');
rewrite (f);
for i:=1 to p do
write (f, pacientu_poisk[i]);
end;
zapis_tablici_v_txt_fail;
tablica;
end;
procedure ydalenue;
begin
clrscr;
writeln ('1:Удаление по фамилии');
writeln ('2:Удаление по имени');
writeln ('3:Удаление по отчеству');
writeln ('4:Удаление по возрасту');
writeln ('5:Удаление по дигнозу');
writeln ('6:Удаление по дате посещения');
writeln ('7:Удаление по назначению врача');
write ('Введите цифру нужной вам операции: ');
read (g);
case g of
1:begin
ydalenue_po_familii;
end;
2:begin
ydalenue_po_imeni;
end;
3:begin
ydalenue_po_otchestvy;
end;
4:begin
ydalenue_po_vozrasty;
end;
5:begin
ydalenue_po_diagnozy;
end;
6:begin
ydalenue_po_date_poseweniya;
end;
7:begin
ydalenue_po_naznacheniuy;
end;
end;
end;
procedure sortirovka_po_familii;
begin
clrscr;
i:=1;
r:=0;
assign (f,'tablica');
reset (f);
while not eof (f) do
begin
read (f, pacientu[i]);
inc (i);
inc®;
end;
begin
for i:=1 to r-1 do
for j:=i+1 to r do
if pacientu[i]. familiya>pacientu[j].familiya then
begin
o:=pacientu[i];
pacientu[i]:=pacientu[j];
pacientu[j]:=o;
end;
assign (f,'tablica');
rewrite (f);
for i:=1 to r do
write (f, pacientu[i]);
end;
zapis_tablici_v_txt_fail;
tablica;
end;
procedure sortirovka_po_imeni;
begin
clrscr;
i:=1;r:=0;
assign (f,'tablica');
reset (f);
while not eof (f) do
begin
read (f, pacientu[i]);
inc (i);inc®;
end;
begin
for i:=1 to r-1 do
for j:=i+1 to r do
if pacientu[i]. imya>pacientu[j].imya then
begin
o:=pacientu[i];
pacientu[i]:=pacientu[j];
pacientu[j]:=o;
end;
assign (f,'tablica');
rewrite (f);
for i:=1 to r do
write (f, pacientu[i]);
end;
zapis_tablici_v_txt_fail;
tablica;
end;
procedure sortirovka_po_otchestvy;
begin
clrscr;
i:=1;r:=0;
assign (f,'tablica');
reset (f);
while not eof (f) do
begin
read (f, pacientu[i]);
inc (i);inc®;
end;
begin
for i:=1 to r-1 do
for j:=i+1 to r do
if pacientu[i]. otchestvo>pacientu[j].otchestvo then
begin
o:=pacientu[i];
pacientu[i]:=pacientu[j];
pacientu[j]:=o;
end;
assign (f,'tablica');
rewrite (f);
for i:=1 to r do
write (f, pacientu[i]);
end;
zapis_tablici_v_txt_fail;
tablica;
end;
procedure sortirovka_po_vozrasty;
begin
clrscr;
i:=1;r:=0;
assign (f,'tablica');
reset (f);
while not eof (f) do
begin
read (f, pacientu[i]);
inc (i);inc®;
end;
begin
for i:=1 to r-1 do
for j:=i+1 to r do
if pacientu[i]. vozrast>pacientu[j].vozrast then
begin
o:=pacientu[i];
pacientu[i]:=pacientu[j];
pacientu[j]:=o;
end;
assign (f,'tablica');
rewrite (f);
for i:=1 to r do
write (f, pacientu[i]);
end;
zapis_tablici_v_txt_fail;
tablica;
end;
procedure sortirovka_po_diagnozy;
begin
clrscr;
i:=1;r:=0;
assign (f,'tablica');
reset (f);
while not eof (f) do
begin
read (f, pacientu[i]);
inc (i);inc®;
end;
begin
for i:=1 to r-1 do
for j:=i+1 to r do
if pacientu[i]. diagnoz>pacientu[j].diagnoz then
begin
o:=pacientu[i];
pacientu[i]:=pacientu[j];
pacientu[j]:=o;
end;
assign (f,'tablica');
rewrite (f);
for i:=1 to r do
write (f, pacientu[i]);
end;
zapis_tablici_v_txt_fail;
tablica;
end;
procedure sortirovka_po_date_posewenuya;
begin
clrscr;
i:=1;r:=0;
assign (f,'tablica');
reset (f);
while not eof (f) do
begin
read (f, pacientu[i]);
inc (i);inc®;
end;
begin
for i:=1 to r-1 do
for j:=i+1 to r do
if (pacientu[i]. den>pacientu[j].den) then
begin
o:=pacientu[i];
pacientu[i]:=pacientu[j];
pacientu[j]:=o;
end;
begin
for i:=1 to r-1 do
for j:=i+1 to r do
if (pacientu[i]. mes>pacientu[j].mes) then
begin
o:=pacientu[i];
pacientu[i]:=pacientu[j];
pacientu[j]:=o;
end;
begin
for i:=1 to r-1 do
for j:=i+1 to r do
if (pacientu[i]. god>pacientu[j].god) then
begin
o:=pacientu[i];
pacientu[i]:=pacientu[j];
pacientu[j]:=o;
end;
assign (f,'tablica');
rewrite (f);
for i:=1 to r do
write (f, pacientu[i]);
end;
zapis_tablici_v_txt_fail;
tablica;
end;end;end;
procedure sortirovka_po_naznacheniyu_vracha;
begin
clrscr;
i:=1;
r:=0;
assign (f,'tablica');
reset (f);
while not eof (f) do
begin
read (f, pacientu[i]);
inc (i);inc®;
end;
begin
for i:=1 to r-1 do
for j:=i+1 to r do
if pacientu[i]. naznachenue>pacientu[j].naznachenue then
begin
o:=pacientu[i];
pacientu[i]:=pacientu[j];
pacientu[j]:=o;
end;
assign (f,'tablica');
rewrite (f);
for i:=1 to r do
write (f, pacientu[i]);
end;
zapis_tablici_v_txt_fail;
tablica;
end;
procedure sortirovka;
begin
clrscr;
writeln ('1:Сортировка по фамилии');
writeln ('2:Сортировка по имени');
writeln ('3:Сортировка по отчеству');
writeln ('4:Сортировка по возрасту');
writeln ('5:Сортировка по дигнозу');
writeln ('6:Сортировка по дате посещения');
writeln ('7:Сортировка по назначению врача');
write ('Введите цифру нужной вам операции: ');
read (b);
case b of
1:begin
sortirovka_po_familii;
end;
2:begin
sortirovka_po_imeni;
end;
3:begin
sortirovka_po_otchestvy;
end;
4:begin
sortirovka_po_vozrasty;
end;
5:begin
sortirovka_po_diagnozy;
end;
6:begin
sortirovka_po_date_posewenuya;
end;
7:begin
sortirovka_po_naznacheniyu_vracha;
end;end;end;
procedure menu;
begin
clrscr;
writeln (' Меню');
writeln ('1:Ввод записей о пациентах в журнал');
writeln ('2:Вывод записей о пациентах');
writeln ('3:Поиск пациента');
writeln ('4:Удаление по заданному больному');