Разработка программы создания набора данных с соблюдением всех ограничений и требований

  • Вид работы:
    Курсовая работа (т)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    213,08 Кб
  • Опубликовано:
    2016-01-22
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Разработка программы создания набора данных с соблюдением всех ограничений и требований

Содержание

программа pascal поисковый файл

Введение

1. Описание решения поставленной задачи

1.1 Способ реализации задачи

.2 Описание типов и переменных

.3 Проверка на ввод ошибочных данных

.4 Основная программа

.5 Некоторые другие особенности реализации

2. Контрольный пример работы программы

2.1 Запуск программы

.2 Работа с данными

.3 Поиск элемента, вставка перед текущим и сохранение всего НД в другом файле

Заключение

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

Приложения

Введение


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

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

Перечень общих запросов и запросов по моему варианту:

1 Создание набора данных.

2 Добавление новых элементов в конец набора данных.

3 Просмотр всех элементов набора данных.

4 Поиск элемента по номеру.

5 Переход к работе с другим набором данных.

6 Вставка нового элемента перед текущим элементом.

7 Сохранение всех элементов в другом НД.

 

1. Описание решения поставленной задачи

 

.1 Способ реализации задачи


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

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

Во втором модуле menu описана работа вертикального меню. В третьем модуле proc описаны все используемые процедуры, которые определены в зависимости от варианта. В четвертом модуле tipi описаны все используемые переменные и типы.

Далее описаны значения процедур из модуля с процедурами proc:

procedure prosmotr {процедура просмотра набора дынных с использованием скролинга}sozdanie {процедура создания новых наборов данных}dobavlenie {процедура добавления новых элементов в конец набора данных}poisk {поиск элемента по номеру}perexod {процедура перехода к работе с другим набором данных}vstavka {вставка перед текущим}dobavleniedr {процедура сохранения всех элементов в другом наборе данных}

Во второй процедуре (создание набора данных) программа запрашивает у пользователя название создаваемого набора данных. Программа с помощью процедуры seek(f,n) перемещается в нужное место в файле и записывает данные.

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

rep<>'н' do(arr1^[i]);

{Ввод данных}.nazv:=arr1^[i]^.nazv;.rost:=arr1^[i]^.rost;.sr_prod:=arr1^[i]^.sr_prod;.tip:=arr1^[i]^.tip;(f,filesize(f));{****постоянно в конец файла****}(f,per);('Ещё д/н? ');(rep);;;

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

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

В конце работы процедуры происходит просмотр всего набора данных.

dobavlenie;{***добавление данных в конец НД***}

{организация окна и проверка на открытость файла}

{ввод данных}(f,filesize(f));(f,per); {запись в файл}

{вызов процедуры просмотра};;

Для просмотра элементов набора данных была написана процедура prosmotr. С помощью функции открытия reset(f) открывается файл для прочтения, далее, начиная с первого элемента, считываются поля и выводятся на экран в виде таблицы. Незаполненные поля не выводятся. Если просматривается файл, содержащий больше элементов, чем отображается на одном экране, то можно осуществлять перемещение по таблице с помощью клавиш вверх-вниз (скроллинг).

prosmotr; {***Просмотр НД***}

{организация окна и проверка на сущесвование файла}(f);:=filesize(f);

{вывод шапки таблицы}vsego<21 thenz:=1 to filesize(f) do

{вывод данных};

{endfor}

{вывод нижней части таблицы};:=0;z:=4 to 24 do

{вывод данных при условии, что их более 21};

{endfor}

{вывод нижней части таблицы}c<>#27 do

{обработка скролинга};

{enwhile};:=per;:=filesize(f);:=filesize(f);(f);;;

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

После ввода имени НД будет произведен просмотр всего файла. Если введено неверное имя файла, работа программы будет завершена.

Для решения этой задачи было использована процедура assign:

procedure perexod;{****переход к работе с другим набором данных****}

{организация окна}('Введите имя нужного файла: ');(name);(white);;(f,name);(f);(name); {передача имени открытого файла в модуль};(k,vspom);;;

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

clrscr;('Введите номер искомой собаки: ');(k);(f);k>filesize(f) then('Такого номера не существует!');;;

{endif};(f,k-1);(f,per);:=per;;

{вывод искомой собаки}

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

procedure vstavka;z:integer;

{организация окна и проверка на проверка на сущесвование файла}(f);(f,qwe-1);not eof(f) do

{запись элементов в динамическую память};

{endwhile}

{ввод нового элемента}

{endwhile}

{запись последнего элемента списка в файл}('Для дальнейшей работы нажмите ENTER');;;;

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

dobavleniedr;

{описание переменных}

{формирование окна}:='';('Введите имя добавляемого НД: ');(name2);

{просмотр искомого файла}z:=1 to i do

{чтение нового файла и запись в конец открытого файла};

{endfor}

{просмотр файла};.

Сохранение набора данных в другом реализовано в процедуре dobavleniedr. В процедуре сначала формируется динамический список из элементов данного набора данных, далее идёт ввод имени нового набора данных и запись элементов списка в нём.

dobavleniedr;{Сохранение в другом НД}, name:string[20];,i,q:integer;

{организация окна и проверка на проверка на сущесвование файла}(f,name);(f);(f,0);not eof(f) do

{формирование динамического списка};

{endwhile}

{ввод имени файла и его открытие }:=0;z:=1 to i donot eof(f) do

{запись элементов динамического списка в новый файл};

{endwhile}

{запись последнего элемента};

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

menu;crt,tipi;ima(var name:string); {процедура передающая имя из программы в модуль}massiv(a:ar; var z:integer); {первая прорисовка меню}menuu(a:ar; var i:integer; var vspom:poroda); {обработка клавиш}niz(a:ar; k:integer; name:string); {строка состояния}element(z:integer); {вывод последнего использованного элемента}

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

{организовываем окно нужного размера}

{ассемблерные вставки}c<>#27 do(k);(a,k,name);:=readkey;c=#0 then c:=readkey;c of

{обработка клавиш для работы в меню};;

{endwhile}

{ассмблерные вставки для возврата курсора}

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

.2 Описание типов и переменных

Для описания типов и переменных был использовал отдельный модуль c именем tipi, в котором помещены все переменные и типы. Это было использовано для удобства обращения ко всем процедурам и функциям из основной программы:

=array[1..8] of string;=^poroda;_zapis = array [1..100] of v;= ^array_zapis;=(sluz,dekor,ohota,dr);= record: string[30];: integer;_prod : longint;: tipr;;

{описание прерменных}

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

8 Создаем строковую переменную per, которая будет служить для вывода на экран необходимого слова.

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

10   В зависимости от результата, переменной tip присваиваем соответствующее значение.

11   При выводе информации на экран будем совершать с помощью условного оператора if проверку её значения и в зависимости от результата выводить соответствующее значение оператором writeln.

if per.tip=sluz then writeln('служебная','│':3)if per.tip=dekor then writeln('декоративная','│':6)if per.tip=ohota then writeln('охотничья','│':6)if per.tip=dr then writeln('другая','│':6);

1.3 Проверка на ввод ошибочных данных

При использовании программы может возникнуть ситуация, когда из-за невнимательности пользователя при прочтении запроса или опечатки при наборе ответа будут введены неверные данные или выбран не тот пункт меню. Ниже описан пример того, если мы вошли не в тот пункт меню, при нажатии на клавишу Esc мы вернемся в первоначальное меню.

('Введите имя создаваемого файла: ');(c<>#27) or (c<>#13) do:=#0;c=#0 then c:=readkey;c=#13 then break;c=#27 then break;:=name+c;(33,1);(name);;

{endwhile}

Если пользователь пытается ввести данные в не созданный файл, ниже была описана проверка на наличие файла:

length(name)=0 then('Файл не создан!');('Для продолжения нажмите ENTER');;;;

{endif}

Ниже описан пример проверки на наличие файла и ввод данных в процедурах в созданный файл:

while (c<>#27) or (c<>#13) do:=#0;c=#0 then c:=readkey;c=#13 then break;c=#27 then;;;

{endif}.nazv:=per.nazv+c;(24,1);(per.nazv);;

{endwhile}

В этом примере описывается проверка введенного номера элемента на значение, не превышающее размер файла (количество записей), если же такое введенное значение больше числа записей в файле, то будет выдано сообщение об ошибке:

readln(k);(f);k>filesize(f) then('Такого номера не существует!');;;

{endif};

.4 Основная программа

В основной программе осуществляется ввод массива меню, далее происходит обработка клавиш вверх-вниз и клавиш ENTER и ESC, в зависимости от выбранного пункта меню происходит выбор процедуры из модуля с процедурами.

Задача основной программы состоит в выборе процедур, в зависимости от пункта меню, а основные процедуры описаны в подключаемых модулях:

{основная программа};

{подключение модулей};

{создание окна}[1]:='Создать новый НД ';[2]:='Добавить новые элементы НД ';[3]:='Просмотр всех элементов НД ';[4]:='Поиск собаки по номеру ';[5]:='Переход к другому НД ';[6]:='Вставка нового элемента перед тек. ';[7]:='Сохранение всех элементов в другом НД';[8]:='Выход ';

{первая прорисовка меню}i<>9 do(a,i,vspom);i of

{выбор процедур в зависимости от значения преременной i};;

{endwhile};.

.5 Некоторые другие особенности реализации

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

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

В программе были использованы следующие процедуры:

· textbackground(color) - задаёт цвет фона экрана;

· window(x,y,x1,y1) - определяет на экране текстовое окно;

· clrscr - очищает текущее окно и помещает курсор в верхний правый угол окна;

· textcolor (color) - устанавливает цвет символов;

· gotoXY(x,y) - устанавливает курсор в точку текущего окна с заданными координатами;

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

· assign (f; filename) - связывает логический файл f с физическим файлом, имя которого задано в строке filename. Если путь к файлу не задан, то считается, что он находится в текущем каталоге.

· close (f) - закрывает логический файл. Вызов данной процедуры используется только при завершении работы с файлом, который был открыт для записи, поскольку при её выполнении происходит выгрузка содержимого буфера. Для входных файлов зарывать файл не обязательно.

· rewrite (f) - открывает логический файл f для записи данных (открывает выходной файл).

После успешного завершения этой процедуры файл готов записи в него первого элемента. Если физический файл, с которым связана переменная f, существовал ранее, он очищается, т.е. вся информация с него теряется. Если файл не существовал, он создается. Данная процедура используется только в одном запросе - создание набора данных. В остальных используется процедура reset;

· reset (f) - открывает логический файл f для последующего чтения данных.

· filepos (f):longint - функция возвращает текущую позицию в файле f.

· filesize (f):longint - функция возвращает количество блоков в отрытом файле f.

· seek (f; n) - процедура выполняет установку текущей позиции в файле (позиционирование). В параметре n задается номер блока, к которому выполняется обращение. Блоки нумеруются с нуля, т.е. первый блок файла имеет номер 0. Например, чтобы работать с четвертым блоком, необходимо задать значение n, равное 3.

· Процедура работает с открытыми файлами.

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

2. Контрольный пример работы программы

2.1 Запуск программы

При запуске программы мы первоначальное окно с меню программы (Рисунок 1):

Рисунок 1 - Открытие программы.

При нажатии на клавиши вверх-вниз можно переместиться по меню. При нажатии клавиши Ввод будет выполнять выбранный пункт меню. Создадим новый набор данных с именем Собака. Для этого выберем первый пункт в меню "Создать новый НД" и нажмем ввод, появится следующее окно с запросом имени (Рисунок 2):

Рисунок 2 - Создание набора данных.

 

2.2 Работа с данными


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

Рисунок 3 - Ввод данных в файл.

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

Рисунок 4 - Просмотр всех элементов набора данных

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

Рисунок 5 - Меню программы.

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

Рисунок 6 - Просмотр файла Dog.

 

2.3 Поиск элемента, вставка перед текущим и сохранение всего НД в другом файле


Для поиска элемента в открытом наборе данных достаточно выбрать соответствующий пункт меню, ввести номер элемента и нажать клавишу ввод, нам так же будет предложено изменить текущий элемент (Рисунок 7).

Рисунок 7 - Поиск элемента.

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

Рисунок 8 - Сохранение элементов в другом наборе данных.

Для вставки элемента перед текущим(текущим является последний элемент, если набор данных содержит менее 21 записей, иначе текущим будет последний видимый на экране элемент), необходимо выбрать пункт меню, ввести данные(Рисунок 9).

Рисунок 9 - Вставка нового элемента перед текущим.

Для выхода из программы выбираем пункт меню Выход и для подтверждения выхода нажимаем клавишу ввод, так же для выхода из программы можно использовать клавишу Esc (Рисунок 10).

Рисунок 10 - Выход из программы

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

 

Заключение


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

· создание НД;

· добавление новых элементов в конец НД;

· просмотр всех элементов НД;

· поиск элемента по номеру;

· переход к работе с другим НД;

· вставка нового элемента перед текущим элементом;

· сохранение всех элементов в другом НД.

Были соблюдены заданные параметры и ограничения задачи:

· средняя продолжительность жизни (longint);

· рост (integer);

· название (string);

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

 

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


1. Павловская Т.А. Паскаль. Программирование на языке высокого уровня: Учебник для ВУЗов / Т.А. Павловская. - СПб.: Питер, 2006. - 393 с.: ил.

. Алексеев Е.Р. Турбо Паскаль 7.0: Учебное пособие / Е.Р. Алексеев, О.В. Чеснакова - М.: НТ Пресс, 2009. - 320 с.

. Зуев Е.А. Язык программирования Turbo Pascal: Учебное пособие/ Е.А. Зуев. - М.: Веста, Радио и связь, 1993. - 384 с.: ил.

Приложения

 

Приложение А


Код основной программы

program kyrsa4;crt,tipi,menu,proc;(1,1,80,25);(black);;[1]:='Создать новый НД ';[2]:='Добавить новые элементы НД ';[3]:='Просмотр всех элементов НД ';[4]:='Поиск собаки по номеру ';[5]:='Переход к другому НД ';[6]:='Вставка нового элемента перед тек. ';[7]:='Сохранение всех элементов в другом НД';[8]:='Выход ';(1,12);(white);:=1;(a,i);:=1;:=1;i<>9 do(a,i,vspom);i of

: begin(k,vspom);(k,vspom);(a,i);;

: begin(vspom);(a,i);;

: begin(k,vspom);(a,i);;

: begin(k,vspom);(a,i);;

: begin;(a,i);;

: begin(k);(k,vspom);(a,i);;

: begin

dobavleniedr(k);(k,vspom);(a,i);;

{endwhile};.

 

Приложение Б


Модуль главного меню

menu;crt,tipi;ima(var name:string);massiv(a:ar; var z:integer);menuu(a:ar; var i:integer; var vspom:poroda);niz(a:ar; k:integer; name:string);element(z:integer);

{***Пошло выполнение программы***}ima; {***передача имени открытого файла в модуль***}:=name;;niz; {****состояния всего меню****}(white);(1,10);length(name)=0 then('_____________________________________');(1,11);(white);('Фаил не создан!');('Пункт: ',k);('Название: ',a[k]);('_____________________________________');(1,11);(white);('Файл :',name);('Пункт: ',k);('Название: ',a[k]);;

{endif};element; {***вывод последнего просмотреного элемента***}(1,14);k=0 then(' ')('Последний доступный элемент: ',k);('Название : ',vspom.nazv);('Рост собаки : ',vspom.rost);('Ср. прод. жизни : ',vspom.sr_prod);per.tip=sluz then writeln('Тип : служебная')if per.tip=dekor then writeln('Тип : декоративная')if per.tip=ohota then writeln('Тип : охотничья.')if per.tip=dr then writeln('Тип : другая');

{endif}

{endif}

{endif}

{endif};

{endif};massiv; {****первая прорисовка меню****}k,d:integer;(20,5,70,24);(red);(black);;d:=1 to 8 do(a[d]);

{endfor}(1,i);(white);(green);(a[z]);(black);;menuu;

{***работа меню***}k,y:integer;(black);(20,5,70,24);ah, $01;ch, $20;cl, $00;$10;;:=1;:=1;:=i;:=0;c<>#27 do(k);(a,k,name);:=readkey;c=#0 then c:=readkey;c of

#72 : begin:=k;:=k-1;k=0 then k:=8;(1,y+k-1);(white);(green);(a[k]);(red);(black);(1,y+nomstr-1);(a[nomstr]);(black);(a,k,name);;

#80 : begin:=k;:=k+1;k>8 then k:=1;(1,y+k-1);(white);(green);(a[k]);(red);(black);(1,y+nomstr-1);(a[nomstr]);(black);(a,k,name);;

#27 : begin:=9;;;

#13 : begin:=k;;;;;

{endwhile}ah, $01;cl, $06;ch, $07;$10;;;.

 

Приложение В


Модуль обработки данных

proc;crt,tipi,menu;qwe:integer;prosmotr(var k:integer; var vspom:poroda); {***Просмотр***}sozdanie(var k:integer; var vspom:poroda); {***Создание НД***}dobavlenie(vspom:poroda); {***Добавление новых элементов в конец***}poisk(var k:integer; var vspom:poroda); {***Поиск элементов***}perexod; {***Переход к другому файлу***}vstavka(q:integer);{***Вставка перед текущим***}dobavleniedr(var k:integer);{***Сохранение в другом НД ***}

{****исполняемая часть программы*****}prosmotr; {***Просмотр НД***}z,vsego,q,w,vs:integer;,x:char;(1,1,80,25);(black);;:=0;name=''then exit;(f);:=filesize(f);('╒═══╤════════════╤══════╤════════════════╤═════════════╕');('│№ │ порода │рост │сред.прод. жизни│ тип │');('├───┼────────────┼──────┼────────────────┼─────────────┤');vsego<21 thenz:=1 to filesize(f) do(f,per);('│',z:3,'│',per.nazv,' ':12-length(per.nazv),'│',per.rost:6,'│',per.sr_prod:16,'│');per.tip=sluz then writeln('служебная │')if per.tip=dekor then writeln('декоративная │')if per.tip=ohota then writeln('охотнич │')if per.tip=dr then writeln('другая │');

{endif}

{endif}

{endif}

{endif};

{endfor}('╘═══╧════════════╧══════╧════════════════╧═════════════╛');;:=0;z:=4 to 24 do(1,z);(f,per);('│',z:3,'│',per.nazv,' ':12-length(per.nazv),'│',per.rost:6,'│',per.sr_prod:16,'│');per.tip=sluz then writeln('служебная │')if per.tip=dekor then writeln('декоративная │')if per.tip=ohota then writeln('охотнич │')if per.tip=dr then writeln('другая │');

{endif}

{endif}

{endif}

{endif};

{endfor}(1,25);('╘═══╧════════════╧══════╧════════════════╧═════════════╛');c<>#27 do:=#0;c=#0 then c:=readkey;c of

#72 : begin {вверх}:=vs-1;vs=-1 then vs:=0;;

#80 : begin {вниз}:=vs+1;vs>filesize(f)-21 then vs:=filesize(f)-21;;

#27 : break;;(f,vs);z:=4 to 24 do(1,z);(f,per);('│',z:3,'│',per.nazv,' ':12length(per.nazv),'│',per.rost:6,'│',per.sr_prod:16,'│');per.tip=sluz then writeln('служебная │')if per.tip=dekor then writeln('декоративная │')if per.tip=ohota then writeln('охотничья │')if per.tip=dr then writeln('другая │');

{endif}

{endif}

{endif}

{endif};

{endfor}(1,25);('╘═══╧════════════╧══════╧════════════════╧═════════════╛');;

{enwhile};

{endwhile}:=per;:=filesize(f);:=filesize(f);(f);;;sozdanie;{****Создание нового НД****}c,name1:string;:='';:=name;(1,1,80,25);(black);;:='';:='';('Введите имя создаваемого файла: ');(c<>#27) or (c<>#13) do:=#0;c=#0 then c:=readkey;c=#13 then break;c=#27 then break;:=name+c;(33,1);(name);;

{endwhile}c=#13 then(f,name);(f);;:=0;:=32767;:=0;:=maxint;(white);(f);rep<>'н' do(arr1^[i]);('Введите породу собак: ');(arr1^[i]^.nazv);('Введите рост собаки : ');(arr1^[i]^.rost);('Введите среднюю продолжительность жизни: ');(arr1^[i]^.sr_prod);('Введите тип(служебная,декоративная,охотничья,другая): ');(tipok);tipok='служебная' then arr1^[i]^.tip:=sluzif tipok='декоративная' then arr1^[i]^.tip:=dekorif tipok='охотничья' then arr1^[i]^.tip:=ohotaif tipok='другая' then arr1^[i]^.tip:=dr;

{endif}

{endif}

{endif}

{endif}.nazv:=arr1^[i]^.nazv;.rost:=arr1^[i]^.rost;.sr_prod:=arr1^[i]^.sr_prod;.tip:=arr1^[i]^.tip;(f,filesize(f));{****постоянно в конец файла****}(f,per);('Ещё д/н? ');(rep);;;

{endwhile};('Вы ничего не создали!');:=name1;;;;

{endif}(f);:=n;:=per;;(name);;;dobavlenie;{***добавлени данных в конец НД***}(1,1,80,25);(black);;length(name)=0 then('Файл не создан!');('Для продолжения нажмите ENTER');;;;

{endif}(f);(white);;('Введите породу собаки: ');(per.nazv);('Введите рост собаки: ');(per.rost);('Введите ср. прод. жизни: ');(per.sr_prod);('Введите тип собаки(служебная,декоративная,охотничья,другая): ');(tipok);tipok='служебная' then arr1^[i]^.tip:=sluzif tipok='декоративная' then arr1^[i]^.tip:=dekorif tipok='охотничья' then arr1^[i]^.tip:=ohotaif tipok='другая' then arr1^[i]^.tip:=dr;

{endif}

{endif}

{endif}

{endif}(f,filesize(f));(f,per);(k,vspom);;;poisk;{****поиск элемента по номеру****}vo:char;(1,1,80,25);(black);;('Введите номер искомой собаки: ');(k);(f);k>filesize(f) then('Такого номера не существует!');;;

{endif};(f,k-1);(f,per);:=per;;(' Искомая собака ');('╒═══╤════════════╤══════╤════════════════╤═════════════╕');('│№ │ порода │рост │сред.прод. жизни│ тип │');('├───┼────────────┼──────┼────────────────┼─────────────┤');('│',k:3,'│',per.nazv,' ':12-length(per.nazv),'│',per.rost:6,'│',per.sr_prod:16,'│');per.tip=sluz then('служебная │')per.tip=dekor then('декоративная │')per.tip=ohota then('охотничья │')per.tip=dr then('другая │');

{endif}

{endif}

{endif}

{endif}('╘═══╧════════════╧══════╧════════════════╧═════════════╛');;('Хотите изменить? д/н');(vo);vo='д' then('Введите название: ');(per.nazv);('Введите рост: ');(per.rost);('Введите среднюю продолжительность жизни: ');(per.sr_prod);('Введите тип(служебная,декоротивная,охотничья,другая): ');(tipok);tipok='служебная' then per.tip:=sluzif tipok='декоративная' then per.tip:=dekorif tipok='охотничья' then per.tip:=ohotaif tipok='другая' then per.tip:=dr;

{endif}

{endif}

{endif}

{endif};

{endif}(f,k-1);(f,per);:=per;;;perexod;{****переход к работе с другим набором данных****}:=0;(1,1,80,25);(black);;('Введите имя нужного файла: ');(name);(white);;(f,name);(f);(name);;(k,vspom);;;vstavka;{****Вставка перед текущим****}z:integer;(1,1,80,25);(black);(white);;length(name)=0 then('Файл не создан!');('Для продолжения нажмите ENTER');;;;

{endif}(f);:='0';(white);.nazv:='';(f,name);(f);(f,qwe-1);not eof(f) do:=i+1;(arr1^[i]);(f,per);^[i]^.nazv:=per.nazv;^[i]^.rost:=per.rost;^[i]^.sr_prod:=per.sr_prod;^[i]^.tip:=per.tip;;

{endwhile}('Введите породу собаки: ');(per.nazv);('Введите рост собаки: ');(per.rost);('Введите сред. прод. жизни: ');(per.sr_prod);('Введите тип собаки(служебная,декоративная,охотничья,другая): ');(tipok);tipok='служебная' then per.tip:=sluzif tipok='декоративная' then per.tip:=dekorif tipok='охотничья' then per.tip:=ohotaif tipok='другая' then per.tip:=dr;

{endif}

{endif}

{endif}

{endif}(f,per); {записываем последний элемент списка в файл}('Для дальнейшей работы нажмите ENTER');;;;dobavleniedr;{Сохранение в другом НД}, name:string[20];,i,q:integer;: file of poroda;(1,1,80,25);(black);(white);;length(name)=0 then('Файл не создан!');('Для продолжения нажмите ENTER');;;;

{endif}(white);(f,name);(f);(f,0);:=0;not eof(f) do:=i+1;(arr1^[i]);(f,per);^[i]^.nazv:=per.nazv;^[i]^.rost:=per.rost;^[i]^.sr_prod:=per.sr_prod;^[i]^.tip:=per.tip;;

{endwhile}('Введите имя нового файла: ');(n);(f,n);(f);:=0;z:=1 to i donot eof(f) do.nazv:=arr1^[q]^.nazv;.rost:=arr1^[q]^.rost;.sr_prod:=arr1^[q]^.sr_prod;.tip:=arr1^[q]^.tip;(f,per);;;.

tipi;crt;=array[1..8] of string;=^poroda;_zapis = array [1..100] of v;= ^array_zapis;=(sluz,dekor,ohota,dr);= record: string[30];: integer;_prod : longint;: tip;;: file of poroda;,vspom : poroda;,c : char;,name2 : string[20];,nomstr : integer;: ar;,min1 : real;,min2 : integer;,j,x,y,max,k : integer;: string;.

Похожие работы на - Разработка программы создания набора данных с соблюдением всех ограничений и требований

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!