Разработка информационно-поисковой системы "Картотека больных" на языке программирования Паскаль

Совместимость и преобразование типов данных. Создание информационно-поисковой системы на языке программирования Паскаль. Описание интерфейса, каждого блока программы "Картотека больных". Рассмотрение результатов работы программы, сортирования данных.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 18.05.2015
Размер файла 368,9 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Министерство сельского хозяйства и продовольствия

Республики Беларусь

УО "Гомельский государственный аграрно-экономический колледж"

Специальность 2-40 01 01

"Программное обеспечение информационных технологий"

Курсовой проект

Разработка информационно-поисковой системы "Картотека больных" на языке программирования Паскаль

Разработал

Казак В.Н.

Руководитель

Короткова А.В.

Содержание

поисковый программа картотека паскаль

Введение

1. Совместимость и преобразование типов данных

1.1 Совместимость типов данных

1.2 Преобразование типов данных

2. Разработка информационно-поисковой системы "Картотека больных"

2.1 Постановка задачи

2.2 Описание алгоритмов задачи

2.3 Описание исходных данных

3. Практическая часть выполнения задачи

3.1 Описание интерфейса

3.2 Описание каждого блока программы

4. Результаты работы программы

Заключение

Список использованных источников

Приложения

Введение

Информационно-поисковая система (ИПС) - это система, обеспечивающая поиск и отбор необходимых данных в специальной базе с описаниями источников информации на основе информационно-поискового языка и соответствующих правил поиска.

Главной задачей любой информационно-поисковой системы является поиск информации, релевантной информационным потребностям пользователя.

Очень важно в результате поиска ничего не потерять, то есть найти всё, что относится к запросу, и не найти ничего ему не соответствующее.

В данной работе представлена программа создания информационно-поисковой системы на языке программирования Паскаль "Картотека больных". Результатом проделанной работы станет таблица, содержащая следующие сведения: ФИО, день рождение, вес, группа крови, состоит ли на учете, место работы. Данная программа создаст возможность добавлять новые и удалять ненужные сведения в системе.

В программе будут реализованы процедуры, позволяющие сортировать данные по критерию, заменять одни сведения, представленные в базе, на другие, искать информацию по введенным данным, удаление записей.

1. Совместимость и преобразование типов данных

1.1 Совместимость типов данных

Турбо-Паскаль - типизированный язык, следовательно, все применяемые операции определены только над операндами совместимых типов.

Два типа считаются совместимыми, если

- оба они есть один и тот же тип.

- один тип есть тип-диапазон второго типа.

- оба они являются типами-диапазонами одного и того же базового типа.

- один тип есть строка, а другой - строка или символ.

- оба они есть процедурные типы с одинаковым типом результата (для - типа-функции), одинаковым количеством параметров и одинаковым типом взаимно соответствующих параметров.

Когда в тех или иных операциях или операторах присутствуют данные, относящиеся к различным типам, возникает вопрос о совместимости типов. В связи с этим говорят об идентичности типов, совместимости типов и совместимости типов для присваивания. Когда возникают проблемы с соответствием типов данных, можно осуществить преобразование тех или иных типов.

Идентичность типов.

Идентичность типов требуется от формальных параметров процедур и функций и соответствующих им фактических параметров во время вызова. Два типа Т1 и Т2 идентичны в следующих случаях:

T1 и Т2 - один и тот же идентификатор типа (integer; real и т.д. и т.п.);

Один тип объявляется эквивалентным другому.

type T1 = boolean; T2 = T1; T3 = boolean; M1 = array [1 5] of integer; M2 = array [1 5] of integer; var V1, V2 = array [1 10] of integer;

Так, типы Т1, Т2, Т3 и boolean - идентичны, а М1 и М2 - не идентичные типы, но тем не менее, переменные V1 и V2 - переменные идентичных типов.

Совместимость типов.

Совместимость типов требуется в выражениях (в том числе и в операциях отношения). Два типа Т1 и Т2 идентичны в следующих случаях:

Т1 и Т2 - один и тот же тип или они идентичны;

Т1 и Т2 - вещественные типы;

Т1 и Т2 - целые типы;

Один тип - вещественный, а другой - целый;

Один тип представляет собой тип - диапазон другого;

Оба типа являются типами - диапазонами какого-то одного типа;

Оба типа являются типами - множествами с совместимыми базовыми типами;

Один тип является строкой, а другой - символом или строкой.

Совместимость для присваивания.

Эта совместимость необходима, когда значение какого-то выражения присваивается переменной, типизированной константе или функции. Если значение объекта типа Т2 присваивается объекту типа Т1, то это возможно в следующих случаях:

Т1 и Т2 - идентичные типы и не являются файловыми типами или структурированными типами, содержащими компоненты файлового типа на любом уровне структурированности;

Т1 и Т2 - совместимые порядковые типы и значение типа Т2 находится в границах возможных значений объекта типа Т1;

Т1 и Т2 - вещественные типы и значение типа Т2 находится в границах возможных значений объекта типа Т1;

Т1 - вещественный тип, а Т2 - целый;

Т1 и Т2 - строки;

Т1 - строка, а Т2 - символ;

Т1 и Т2 - совместимые типы - множества и все компоненты значения типа Т2 находятся в множестве Т1.

1.2 Преобразование типов данных

Преобразование типов в Паскале может быть явным и неявным. При явном преобразовании типов используются вызовы специальных функций Ord, Trunc, Round, Chr, Ptr (преобразует четырёхбайтный целочисленный аргумент к типу-указателю), аргументы которых принадлежат одному типу, а результат другому.

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

Type Mytype = (A, B, C, D);

. . . . . . . . . . . . . . . . .

Mytype (2);

Integer (D);

Pointer (Longint (A) + $FF);

Char (127 Mod C);

Byte (K);

При автоопределённом преобразовании типа выражения может произойти изменение длины его внутреннего представления (уменьшение или увеличение).

В Турбо-Паскале есть ещё один явный способ: в ту область памяти, которую занимает переменная некоторого типа, можно поместить значение выражения другого типа, если только длина внутреннего представления вновь размещаемого значения в точности равна длине внутреннего представления переменной. С этой целью вновь используется автоопределённая функция преобразования типов, но уже в левой части оператора присваивания:

Type

Byt = Array [1 2] Of Byte;

Int = Array [1 2] Of Integer;

Rec = Record

X: Integer;

Y: Integer;

End;

Var

VByt: Byt;

VInt: Int;

VRec: Rec;

Begin

Byt (VInt[1])[2]:= 0;

Int (VRec)[1]:= 256;

End.

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

Неявное преобразование типов возможно только в двух случаях:

· выражение из целых и вещественных приводится к вещественным

· одна и та же область памяти трактуется попеременно как содержащая данные то одного, то другого типа.

Совмещение данных может произойти при использовании записей с вариантами, типизированных указателей, содержащих одинаковый адрес, а также при явном размещении данных разного типа в одной области памяти (используется Absolute - за ним помещается либо абсолютный адрес, либо идентификатор ранее определённой переменной).

2. Разработка информационно-поисковой системы "Картотека больных"

2.1 Постановка задачи

В данном проекте необходимо разработать информационно-поисковую систему "Картотека больных".

Создаваемая база данных должна храниться в типизированных файлах. Записи базы данных формируются и выводятся на экран в виде таблицы.

Данная программа должна содержать в себе информацию о фамилии больного, дата его рождения, вес больного, группа крови больного, состоит ли на учете больной, место работы больного.

Программа будет иметь возможность выполнять следующие функции: добавление записей в файл, вывод записей из файла на экран в виде таблицы, удаление записей по указанным атрибутам, сортировка записей, замена записей, а так же дополнительные основные функции, согласно теме курсового проекта.

2.2 Описание алгоритмов задачи

Для разработки информационно-поисковой системы используется язык программирования Паскаль. Выбор действия над файлом в меню осуществляется выбором определенного пункта с помощью клавиатуры.

В программе содержатся процедуры.

1) procedure dobavlenie - процедура создания нового файла с информацией о результатах соревнований. Для начала нам необходимо ввести количество записей в таблице, а потом заполнить информацию. После окончания ввода данных процедура сама выходит в главное меню. Алгоритм описывающий данную процедуру реализован в виде блок-схемы 1 (рисунок 2.2.1).

2) procedure vivod - эта процедура предназначена для вывода на экран информации о результатах соревнований в виде таблицы. Алгоритм описывающий данную процедуру реализован в виде блок-схемы 2 (рисунок 2.2.2).

3) procedure dobavlenie - процедура добавления. Предназначена для добавления новых записей в таблицу. Процедура добавляет новые записи в конец файла. По окончании ввода процедура выходит в главное меню.

4) procedure poisk - процедура поиска предназначенная для поиска нужных записей в нужном поле таблицы. Перед нами появляется меню поиска, где мы выбираем нужный нам критерий поиска.

5) procedure sortirovka - процедура сортировки. Позволяет отсортировать нужное поле по возрастанию. Перед нами появляется меню в котором мы можем выбрать необходимое поле для сортировки.

6) procedure udalenie - процедура удаления. Предназначена для удаления необходимой нам строки. Перед нами появится меню, в котором мы должны ввести нужный номер строки для удаления.

7) procedure zamena - процедура замена. Предназначена для замены необходимой нам строки. Перед нами появится меню в котором мы должны ввести нужный номер строки для замены.

В программе использовались переменные

fio, ves, data, grkr, uchet, mesrab-строкового типа

2.3 Описание исходных данных

К основным данным формирующим таблицу, находящуюся в базе данных, относятся:

- ФИО больного;

- Дата рождения больного;

- Вес больного;

- Группа крови больного;

- Состоит ли больно на учете;

- Место работы больного;

Каждому полю было присвоено свое имя и тип.

Так для полей ФИО больного(fio), дата рождения больного(data), вес больного(ves), группа крови больного(grkr), состоит ли на учете больной(uchet), место работы больного(mesrab).

3. Практическая часть выполнения задачи

3.1 Описание интерфейса

Интерфейс - это совокупность средств и методов, при помощи которых пользователь взаимодействует с программой, компьютером, сайтами и т.д. Окно интерфейса программы служит для выбора пользователем необходимых действий. Меню информационно-поисковой системы состоит из 7 пунктов:

1) Добавление больного;

2) Удаление больного;

3) Поиск больного;

4) Сортировка больного;

5) Вывод больного;

6) Замена больного;

7) Выход.

При запуске программа отображается в окне Pascal ABC, в нем находится меню, состоящее из 7 пунктов, при нажатии на которые будут осуществляться следующие действия.

При выборе первого пункта происходит запись введенных данных в файл.

Второй пункт отвечает за удаление записи по указанному больному.

При выборе четвертого пункта появляется меню, позволяющее указать критерии, по которому будет производиться поиск данных.

При выборе четвертого пункта появляется меню, позволяющее указать критерии, по которому будет производиться сортировка данных.

Пятый пункт производит вывод данных из файла в виде таблицы.

При выборе шестого пункта появляются определенные критерии, по которым будет производиться замена данных в файле.

При выборе седьмого пункта осуществляется выход из программы.

3.2 Описание каждого блока программы

Процедуры вызываются через меню основной программы, выбирая соответствующие пункты.

Программа содержит процедуры.

1) Menu - процедура для отображения главного меню. Результатом работы является вывод на экран "Главного меню", в котором можно выбирать нужные процедуры.

2) dobavlenie - процедура создания таблицы. В ходе выполнения процедуры указывается количество записываемых полей, а затем заполняем их соответствующей информацией.

3) Udal - процедура удаления записей. Процедура осуществляет удаление записи из таблицы по указанному номеру строки.

4) Poisk - процедура поиска данных. Процедура выполняет поиск записей в файле базы данных по определенному атрибуту.

5) Sorti - процедура сортировки записей. Данная процедура осуществляет сортировку все записей, хранящихся в файле по возрастанию по указанному атрибуту.

4. Результаты работы программы

После запуска программы появляется меню информационно-поисковой системы. Меню представлено на рисунке 4.1.

Рисунок 4.1. - Меню информационно-поисковой системы

При выборе первого пункта программа запрашивает количество добавляемых записей. Запрос представлен на рисунке 4.2.

Рисунок 4.2. - Запрос количества добавляемых записей

После этого запроса происходит добавление записей. Этот процесс представлен на рисунке 4.3.

Рисунок 4.3. - Добавление записей

После завершения добавления записей программа возвращается в меню.

При выборе шестого пункта осуществляется вывод добавленных записей на экран в виде таблицы. Этот процесс представлен на рисунке 4.4.

Рисунок 4.4. - Вывод таблицы на экран

При выборе второго пункта осуществляется удаление записи по введенному больному. Ввод больного, по которому будет производиться удаление, представлен на рисунке 4.5. результат удаления показан на рисунке 4.6.

Рисунок 4.5. - ввод определенного критерия, по которому будет производиться удаление

Рисунок 4.6. - Результат удаления

При выборе третьего пункта появляется меню, позволяющие выбрать критерии поиска. Данное меню представлено на рисунке 4.7.

Рисунок 4.7. - Меню позволяющее выбрать критерии поиска

После ввода данных на экран выводиться результат поиска. Результат поиска представлен на рисунке 4.8.

Рисунок 4.8. - Вывод результата поиска

При выборе четвертого пункта так же появится меню, позволяющее выбрать критерии сортировки. Данное меню представлено на рисунке 4.9.

Рисунок 4.9. - Меню позволяющее выбрать критерии сортировки

После того, как критерий выбран, выводится результат сортировки. Результат представлен на рисунке 4.10.

Рисунок 4.10. - Результат сортировки

При выборе пятого пункта осуществляется замена по определенным критериям. Данный процесс представлен на рисунке 4.11. Результат замены представлен на рисунке 4.12.

Рисунок 4.11. - Ввод данных, которые нужно заменить

Рисунок 4.12. Результат замены

При выборе седьмого пункта осуществляется выход из программы.

Заключение

В курсовой работе необходимо было разработать информационно-поисковую систему "Картотека больных" на языке программирования паскаль. Результатом проделанной стала таблица, содержащая следующие сведения: ФИО, Дата рождения, Вес, Группа крови, Состоит ли на учете, Место работы.

В программе были реализованы процедуры, позволяющие сортировать данные по критерию, заменять одни сведения на другие, искать информацию по введенным данным, удаление записей с указанием определенного критерия.

Была изучена теоретическая часть задания на тему "Совместимость и преобразование типов данных".

Для удобства и простоты использования, программа была реализована в виде меню. Я постаралась сделать так, чтобы любому пользователю было удобно и практично использовать мою программу.

Ее можно использовать для записей картотеки больных, которые будут храниться в файлах. Пользователь сможет легко заносить данные в таблицы, заменять содержимое, удалять не нужные записи, искать и сортировать по необходимому полю.

Список использованных источников

1. Алиев Ю.А. Практикум по алгоритмизации и программированию на языке Паскаль / Ю.А. Алиев. - В. - Питер: 2007. - 527 с.

2. Аронов В.В. TurboPascal / В.В. Аронов. - БХВ - Петербург, 2004 . - 156 с.

3. Алексеев Е.Р. Турбо Паскаль 7.0 / Е.Р. Алексеев, О.В. Чесноков а.- М.: НТ Пресс, 2007. - 83 с.

4. Павловская Т.А. Паскаль. Программирование на языке высокого уровня: учебник / Павловская Т.А. - СПб. : Питер, 2007. - 140с.

5. [Электронный ресурс]. - Электронные данные. - Совместимость и преобразование типов данных. - Режим доступа: http://www.km.ru/referats/D89A32EFE4274401B164B7A7C4C12CD9# - Дата доступа 13.06.2014

6. [Электронный ресурс].- Электронные данные. - Совместимость и преобразование типов данных. - Режим доступа: http://tarefer.ru/works/69/100473/index.html#Toc64728292 - Дата доступа 13.06.2014

7. [Электронный ресурс].- Электронные данные. - Типы данных в Паскале. - Режим доступа: http://pas1.ru/data - Дата доступа 13.06.2014

8. Меженный О.А. Турбо паскаль. Самоучитель / О.А. Меженный. - Москва: 2008. - 336 с.

Приложения

Приложение А

(обязательное)

Листинг программы

program kartoteka;

uses crt;

type Data=Record

fio,ves,data,grkr,uchet,mesrab:STRING;

END;

VAR

i,k,j,fc:INTEGER;

g:ARRAY[1..200] of DATA;

f:text;

n,s:string;

f1,f2:file of string;

procedure yd;

var d,q,i:integer;

s:string;

br:boolean;

begin

writeln('Введите по какому критерию удалить');

writeln('1 - по ФИО');

writeln('2 - по Дате рождения');

writeln('3 - по Весу');

writeln('4 - по Группе крови');

writeln('5 - по Состоит ли на учете');

writeln('6 - по Месту работы');

readln(d);

br:=false;

case d of

1:begin

writeln('Введите ФИО больного');

readln(s);

for i:=1 to j do begin

if g[i].fio=s then begin

writeln('Удалено',g[i].fio);

br:=true;

for q:=i to j-1 do begin

g[q].data:=g[q+1].data;

g[q].ves:=g[q+1].ves;

g[q].grkr:=g[q+1].grkr;

g[q].uchet:=g[q+1].uchet;

g[q].mesrab:=g[q+1].mesrab;

g[q].fio:=g[q+1].fio;

end;

j:=j-1;

end;

end;

if br=false then writeln('Данной фамилии нет в списке');

end;

2:begin

writeln('Введите дату рождения больного');

readln(s);

for i:=1 to j do begin

if g[i].data=s then begin

writeln('Удалено',g[i].fio);

br:=true;

for q:=i to j-1 do begin

g[q].data:=g[q+1].data;

g[q].ves:=g[q+1].ves;

g[q].grkr:=g[q+1].grkr;

g[q].uchet:=g[q+1].uchet;

g[q].mesrab:=g[q+1].mesrab;

g[q].fio:=g[q+1].fio;

end;

j:=j-1;

end;

end;

if br=false then writeln('Данной даты рождения нет в списке');

end;

3:begin

writeln('Введите вес больного');

readln(s);

for i:=1 to j do begin

if g[i].ves=s then begin

writeln('Удалено',g[i].fio);

br:=true;

for q:=i to j-1 do begin

g[q].data:=g[q+1].data;

g[q].ves:=g[q+1].ves;

g[q].grkr:=g[q+1].grkr;

g[q].uchet:=g[q+1].uchet;

g[q].mesrab:=g[q+1].mesrab;

g[q].fio:=g[q+1].fio;

end;

j:=j-1;

end;

end;

if br=false then writeln('Данного веса нет в списке');

end;

4:begin

writeln('Введите крупу крови больного');

readln(s);

for i:=1 to j do begin

if g[i].grkr=s then begin

writeln('Удалено',g[i].fio);

br:=true;

for q:=i to j-1 do begin

g[q].data:=g[q+1].data;

g[q].ves:=g[q+1].ves;

g[q].grkr:=g[q+1].grkr;

g[q].uchet:=g[q+1].uchet;

g[q].mesrab:=g[q+1].mesrab;

g[q].fio:=g[q+1].fio;

end;

j:=j-1;

end;

end;

if br=false then writeln('Данной группы крови нет в списке');

end;

5:begin

writeln('Введите состоит ли на учете больной');

readln(s);

for i:=1 to j do begin

if g[i].uchet=s then begin

writeln('Удалено',g[i].fio);

br:=true;

for q:=i to j-1 do begin

g[q].data:=g[q+1].data;

g[q].ves:=g[q+1].ves;

g[q].grkr:=g[q+1].grkr;

g[q].uchet:=g[q+1].uchet;

g[q].mesrab:=g[q+1].mesrab;

g[q].fio:=g[q+1].fio;

end;

j:=j-1;

end;

end;

if br=false then writeln('Данные о учете нет в списке');

end;

6:begin

writeln('Введите место работы больного');

readln(s);

for i:=1 to j do begin

if g[i].mesrab=s then begin

writeln('Удалено ',g[i].fio);

br:=true;

for q:=i to j-1 do begin

g[q].data:=g[q+1].data;

g[q].ves:=g[q+1].ves;

g[q].grkr:=g[q+1].grkr;

g[q].uchet:=g[q+1].uchet;

g[q].mesrab:=g[q+1].mesrab;

g[q].fio:=g[q+1].fio;

end;

j:=j-1;

end;

end;

if br=false then writeln('Данного места работы нет в списке');

end;

end;

end;

procedure menu;

begin

writeln('-----------------------------------');

writeln('| Главное меню |');

writeln('|-----------------------------------|');

writeln('|1 - Добавление записей |');

writeln('|2 - Удаление записей |');

writeln('|3 - Поиск записей |');

writeln('|4 - Сортировка записей |');

writeln('|5 - Замена записей |');

writeln('|6 - Вывод записей |');

writeln('|7 - выход |');

writeln('------------------------------------');

end;

procedure dob;

var

h,i:integer;

begin

{gotoxy(110,10);

window(110,10,210,100);

}writeln('Введите количество добавляемых записей');

readln(h);

for i:=j+1 to h+j do begin

writeln('Введите ФИО добавляемого больного');

readln(g[i].fio);

writeln('Введите дату рождения добавляемого больного');

readln(g[i].data);

writeln('Введите вес добавляемого больного');

readln(g[i].ves);

writeln('Введите группу крови добавляемого больного');

readln(g[i].grkr);

writeln('Введите состоит ли на учете добавляемый больной');

readln(g[i].uchet);

writeln('Введите место работы больного');

readln(g[i].mesrab);

end;

j:=j+h;

end;

procedure wr;

var i,t,v:integer;

s:string;

begin

writeln('_______________________________________________________________________________');

write(chr(5),' ФИО ',chr(5),'Вес ',chr(5),'Дата рождения',chr(5),'Группа крови',chr(5),'Состоит ли на учете',chr(5),'Место работы',chr(5));

writeln;

for i:=1 to j do begin

v:=(12-length(g[i].fio));

for t:=1 to v do g[i].fio:=g[i].fio+' ';

v:=(4-length(g[i].ves));

for t:=1 to v do g[i].ves:=g[i].ves + ' ';

v:=(13-length(g[i].data));

for t:=1 to v do g[i].data:=g[i].data + ' ';

v:=(12-length(g[i].grkr));

for t:=1 to v do g[i].grkr:=g[i].grkr + ' ';

v:=(19-length(g[i].uchet));

for t:=1 to v do g[i].uchet:=g[i].uchet+ ' ';

v:=(12-length(g[i].mesrab));

for t:=1 to v do g[i].mesrab:=g[i].mesrab + ' ';

g[i].fio:=g[i].fio+chr(5);

g[i].ves:=g[i].ves+chr(5);

g[i].data:=g[i].data + chr(5);

g[i].mesrab:=g[i].mesrab + chr(5);

g[i].uchet:=g[i].uchet + chr(5);

g[i].grkr:=g[i].grkr + chr(5);

write(chr(5),g[i].fio:12,g[i].ves:4,g[i].data:13,g[i].grkr:12,g[i].uchet:19,g[i].mesrab:12);writeln;

end;

writeln('_______________________________________________________________________________');

s:='_';

for i:=1 to j do begin

for v:=1 to length(g[i].fio) do if g[i].fio[v]=s then delete(g[i].fio,v,1);

for v:=1 to length(g[i].ves) do if g[i].ves[v]=s then delete(g[i].ves,v,1);

for v:=1 to length(g[i].data) do if g[i].data[v]=s then delete(g[i].data,v,1);

for v:=1 to length(g[i].grkr) do if g[i].grkr[v]=s then delete(g[i].grkr,v,1);

for v:=1 to length(g[i].uchet) do if g[i].uchet[v]=s then delete(g[i].uchet,v,1);

for v:=1 to length(g[i].mesrab) do if g[i].mesrab[v]=s then delete(g[i].mesrab,v,1);

end;

s:='';

for i:=1 to j do begin

for v:=1 to length(g[i].fio) do if g[i].fio[v]<>' ' then s:=s+g[i].fio[v];

g[i].fio:=s;

s:='';

for v:=1 to length(g[i].ves) do if g[i].ves[v]<>' ' then s:=s+g[i].ves[v];

g[i].ves:=s;

s:='';

for v:=1 to length(g[i].data) do if g[i].data[v]<>' ' then s:=s+g[i].data[v];

g[i].data:=s;

s:='';

for v:=1 to length(g[i].grkr) do if g[i].grkr[v]<>' ' then s:=s+g[i].grkr[v];

g[i].grkr:=s;

s:='';

for v:=1 to length(g[i].uchet) do if g[i].uchet[v]<>' ' then s:=s+g[i].uchet[v];

g[i].uchet:=s;

s:='';

for v:=1 to length(g[i].mesrab) do if g[i].mesrab[v]<>' ' then s:=s+g[i].mesrab[v];

g[i].mesrab:=s;

s:='';

end;

end;

procedure sort;

var i,d,u,v,p1,p2,code,o,q,n1,n2,l:integer;

a,s,w,a1,s1:string;

begin

writeln('Введите по какому критерию сортировать');

writeln('1 - по ФИО');

writeln('2 - по Дате рождения');

writeln('3 - по Весу');

writeln('4 - по Группе крови');

writeln('5 - по Состоит ли на учете');

writeln('6 - по Месту работы');

readln(d);

case d of

1:begin

for i:=1 to j do begin

s:=g[i].fio;

for v:=1 to j do begin

a:=g[v].fio;

for u:=1 to j do begin

if ord(a[u])<ord(s[u]) then begin

w:=g[v].fio;

g[v].fio:=g[i].fio;

g[i].fio:=w;

w:=g[v].grkr;

g[v].grkr:=g[i].grkr;

g[i].grkr:=w;

w:=g[v].data;

g[v].data:=g[i].data;

g[i].data:=w;

w:=g[v].ves;

g[v].ves:=g[i].ves;

g[i].ves:=w;

w:=g[v].uchet;

g[v].uchet:=g[i].uchet;

g[i].uchet:=w;

w:=g[v].mesrab;

g[v].mesrab:=g[i].mesrab;

g[i].mesrab:=w;

break;

end;

end;

end;

end;

end;

2:begin

for i:=1 to j do begin

s:=g[i].data;

val(s,p1,code);

for v:=1 to j do begin

a:=g[v].data;

val(a,p2,code);

if p1>p2 then begin

w:=g[v].fio;

g[v].fio:=g[i].fio;

g[i].fio:=w;

w:=g[v].grkr;

g[v].grkr:=g[i].grkr;

g[i].grkr:=w;

w:=g[v].ves;

g[v].ves:=g[i].ves;

g[i].ves:=w;

w:=g[v].data;

g[v].data:=g[i].data;

g[i].data:=w;

w:=g[v].uchet;

g[v].uchet:=g[i].uchet;

g[i].uchet:=w;

w:=g[v].mesrab;

g[v].mesrab:=g[i].mesrab;

g[i].mesrab:=w;

end;

end;

end;

end;

3:begin

for i:=1 to j do begin

s:=g[i].fio;

for v:=1 to j do begin

a:=g[v].fio;

for u:=1 to j do begin

if ord(a[u])>ord(s[u]) then begin

w:=g[v].fio;

g[v].fio:=g[i].fio;

w:=g[v].grkr;

g[v].grkr:=g[i].grkr;

g[i].grkr:=w;

w:=g[v].ves;

g[v].ves:=g[i].ves;

g[i].ves:=w;

w:=g[v].data;

g[v].data:=g[i].data;

g[i].data:=w;

w:=g[v].uchet;

g[v].uchet:=g[i].uchet;

g[i].uchet:=w;

w:=g[v].mesrab;

g[v].mesrab:=g[i].mesrab;

g[i].mesrab:=w;

break;

end;

end;

end;

end;

end;

4:begin

s:='';

a:='';

for i:=1 to j do begin

n1:=pos('.',g[i].grkr);

for q:=1 to n1 do s:=s+g[i].grkr[q];

val(s,p1,code);

for v:=1 to j do begin

n2:=pos('.',g[v].grkr);

for q:=1 to n2 do a:=a+g[v].grkr[q];

val(a,p2,code);

a:='';

s:='';

if p1<p2 then begin

w:=g[v].fio;

g[v].fio:=g[i].fio;

g[i].fio:=w;

w:=g[v].grkr;

g[v].grkr:=g[i].grkr;

g[i].grkr:=w;

w:=g[v].ves;

g[v].ves:=g[i].ves;

g[i].ves:=w;

w:=g[v].data;

g[v].data:=g[i].data;

g[i].data:=w;

w:=g[v].uchet;

g[v].uchet:=g[i].uchet;

g[i].uchet:=w;

w:=g[v].mesrab;

g[v].mesrab:=g[i].mesrab;

g[i].mesrab:=w;

end;

end;

end;

s:='';

a:='';

for i:=1 to j do begin

n1:=pos('.',g[i].grkr);

for q:=1 to n1 do s:=s+g[i].grkr[q];

val(s,p1,code);

for v:=1 to j do begin

n2:=pos('.',g[v].grkr);

for q:=1 to n2 do a:=a+g[v].grkr[q];

val(a,p2,code);

a:='';

s:='';

if p1=p2 then begin

l:=i;

o:=v;

for q:=length(g[l].grkr) downto n1 do s:=s+g[l].grkr[q];

val(s,p1,code);

for q:=length(g[o].grkr) downto n2 do a:=a+g[o].grkr[q];

val(s,p2,code);

if p1<p2 then begin

w:=g[v].fio;

g[v].fio:=g[i].fio;

g[i].fio:=w;

w:=g[v].grkr;

g[v].grkr:=g[i].grkr;

g[i].grkr:=w;

w:=g[v].ves;

g[v].ves:=g[i].ves;

g[i].ves:=w;

w:=g[v].data;

g[v].data:=g[i].data;

g[i].data:=w;

w:=g[v].uchet;

g[v].uchet:=g[i].uchet;

g[i].uchet:=w;

w:=g[v].mesrab;

g[v].mesrab:=g[i].mesrab;

g[i].mesrab:=w;

end;

end;

end;

end;

end;

5:begin

for i:=1 to j do begin

s:=g[i].uchet;

for v:=1 to j do begin

a:=g[v].uchet;

for u:=1 to j do begin

if ord(a[u])>ord(s[u]) then begin

w:=g[v].fio;

g[v].fio:=g[i].fio;

g[i].fio:=w;

w:=g[v].grkr;

g[v].grkr:=g[i].grkr;

g[i].grkr:=w;

w:=g[v].ves;

g[v].ves:=g[i].ves;

g[i].ves:=w;

w:=g[v].data;

g[v].data:=g[i].data;

g[i].data:=w;

w:=g[v].uchet;

g[v].uchet:=g[i].uchet;

g[i].uchet:=w;

w:=g[v].mesrab;

g[v].mesrab:=g[i].mesrab;

g[i].mesrab:=w;

break;

end;

end;

end;

end;

end;

6:begin

for i:=1 to j do begin

s:=g[i].mesrab;

val(s,p1,code);

for v:=1 to j do begin

a:=g[v].mesrab;

val(a,p2,code);

if p1>p2 then begin

w:=g[v].fio;

g[v].fio:=g[i].fio;

g[i].fio:=w;

w:=g[v].grkr;

g[v].grkr:=g[i].grkr;

g[i].grkr:=w;

w:=g[v].ves;

g[v].ves:=g[i].ves;

g[i].ves:=w;

w:=g[v].data;

g[v].data:=g[i].data;

g[i].data:=w;

w:=g[v].uchet;

g[v].uchet:=g[i].uchet;

g[i].uchet:=w;

w:=g[v].mesrab;

g[v].mesrab:=g[i].mesrab;

g[i].mesrab:=w;

end;

end;

end;

end;

end;

end;

procedure find;

var e,k,n:integer;

s,a:string;

begin

writeln('Введите по какому критерию искать');

writeln('1 - по ФИО');

writeln('2 - по Дате рождения');

writeln('3 - по Весу');

writeln('4 - по Группе крови');

writeln('5 - по Состоит ли на учете');

writeln('6 - по Месту работы');

readln(e);

case e of

1:begin

writeln('Введите ФИО больного');

readln(s);

n:=length(s);

for i:=1 to j do if g[i].fio=s then writeln('Данная фамилия присутствует в списке');

end;

2:begin

writeln('Введите дату рождения больного');

readln(s);

for i:=1 to j do if s=g[i].data then begin

writeln('Данная дата рождения присутствует в списке');

end;

end;

3:begin

writeln('Введите вес больного');

readln(s);

for i:=1 to j do if s=g[i].ves then begin

writeln('Данный вес присутствует в списке');

end;

end;

4:begin

writeln('Введите группу крови');

readln(s);

for i:=1 to j do if s=g[i].grkr then begin

writeln('Данная группа крови присутствует в списке');

end;

end;

5:begin

writeln('Введите состоит ли на учете больной');

readln(s);

for i:=1 to j do if s=g[i].uchet then begin

writeln('Данные о учете присутствуют в списке');

end;

end;

6:begin

writeln('Введите место работы больного');

readln(s);

for i:=1 to j do if s=g[i].mesrab then begin

writeln('Данное место работы присутствует в списке');

end;

end;

end;

end;

procedure zamena;

var vesa1,vesa2,gruppa1,gruppa2:string;

z,x:integer;

begin

i:=1;

k:=0;

begin

inc(i);

inc(k);

end;

writeln;

write('Укажите вес больного, который нужно заменить');

readln(vesa1);

write('Укажите вес больного на который нужно заменить);

readln(vesa2);

z:=0;

write('Укажите группу крови больного, которую нужно заменить);

readln(gruppa1);

write(' Укажите группу крови больного на которую нужно заменить ');

readln(gruppa2);

x:=0;

for i:=1 to k do

begin

if g[i].ves=vesa1 then

begin

g[i].ves:=vesa2;

z:=1;

end;

if g[i].grkr=gruppa1 then

begin

g[i].grkr:=gruppa2;

x:=1;

end;

end;

if z=0 then

begin

writeln;

writeln(' больных с весом',vesa1,' не найдено' );

readln;

end;

if x=0 then

begin

writeln;

writeln(' больных с группой крови',gruppa1,' не найдено' );

readln;

end;

end;

{procedure diz(x1,y1,x2,y2:integer;bcl,tcl:integer);

begin

window(x1,y1,x2,y2);

textbackground(bcl);

textcolor(tcl);

end;}

begin

{clrscr;}

assign(f,'1.txt');reset(f);

readln(f,j);

for i:=1 to j do begin

readln(f,g[i].fio);

readln(f,g[i].ves);

readln(f,g[i].data);

readln(f,g[i].grkr);

readln(f,g[i].uchet);

readln(f,g[i].mesrab);

k:=j;

end;

{clrscr;}

while fc<6 do begin

{ window(1,1,90,35);

diz(1,1,30,15,red,black);

}menu;

readln(fc);

case fc of

1:begin

{window(1,1,90,35);

diz(30,1,60,15,green,black);

}dob;

{clrscr;}

end;

2:begin

{window(1,1,90,35);

diz(30,1,60,15,green,black);

}yd;

end;

3:begin

{window(1,1,90,35);

diz(30,1,60,15,green,black);

}find;

end;

4:begin

{window(1,1,90,35);

diz(30,1,60,15,green,black);

}sort;

end;

6:begin

{window(1,1,90,35);

diz(30,1,60,15,green,black);

}wr;

end;

5: begin {window(1,1,90,35);

diz(30,1,60,15,green,black);

}

zamena;

end;

7:begin

close(f);

assign(f1,'1.txt');reset(f1);

seek(f1,0);

truncate(f1);

close(f1);

assign(f,'1.txt');rewrite(f);

writeln(f,j);

for i:=1 to j do begin

writeln(f,g[i].fio);

writeln(f,g[i].ves);

writeln(f,g[i].data);

writeln(f,g[i].grkr);

writeln(f,g[i].uchet);

writeln(f,g[i].mesrab);

end;

close(f); close(f1);

end;

end;

end;

end.

Приложение Б

(обязательное)

Блок-схема программы

Рисунок Б.1 - Общая блок-схема программы

Приложение В

(обязательное)

Пример оформления подписи электронного носителя

Размещено на Allbest.ru


Подобные документы

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.