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

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

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

Содержание

Введение

. Описание программного комплекса

.1 Структура главной программы KURSACH

.2 Описание модуля меню MENU

.3 Описание модуля обработки PROC

.3.1 Структура модуля обработки PROC

.3.2 Процедура создания нового МД vvod

.3.3 Процедура добавления новых элементов в конец МД dobav

.3.4 Процедура вывода МД print

.3.5 Процедура поиска poisk

.3.6 Процедура перехода к работе с другим МД perehod

.3.7 Процедура вставки нового элемента после текущего элемента insert

.3.8 Процедура создания нового МД из всех элементов по заданному полю sozdnew

. Проверка работы программы на контрольном примере

.1 Запуск главной программы KURSACH

.2 Описание работы процедуры создания МД

.3 Описание работы процедуры добавления новых элемента в конец МД

.4 Описание работы процедуры просмотра всех элементов МД

.5 Описание работы процедуры поиска

.6 Описание работы процедуры перехода к работе с другим МД

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

.8 Описание работы процедуры создания нового МД по ключевому полю

Заключение

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

Приложения

Введение

Данная курсовая работа предполагает использование языка программирования Паскаль для создания множества данных и его обработки. Была создана программа, работающая с набором данных на внешнем устройстве. Набор данных представляет собой множество записей, хранящихся на внешнем устройстве. Обращение к МД осуществляется по средствам прямого доступа.

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

Перечень выполняемых запросов:

1 Создание набора данных (МД).

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

3 Просмотр всех элементов МД.

4 Поиск элемента по заданному значению ключевого поля.

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

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

7 Создание нового массива из всех элементов с заданным значением ключевого поля.

Множество данных - мировые рекорды в беге на 100 метров.

· результат (real);

· автор (string);

· год установления (integer);

· пол: мужской/женский (перечислимый тип).

1. Описание программного комплекса

1.1    Структура главной программы KURSACH

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

program kursach;crt, menu, proc;

x=1;

y=1;

kol=8;

s:masstr;

vybor,flag:byte;

pozitia:byte;

{inizializaziya}

{cicl vyzova}

repeat

{vyzov procedure view of tek. element}

{vyzov procedury vertic menu}

case vybor of

1: {vvod}

2: {dobav}

3: {print}

4: {poisk}

5: {perehod}

6: {insert}

7: {sozdnew}

8: {exit}

end; {case}

until false;.

1.2    Описание модуля меню MENU

программный набор меню поиск

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

unit menu;{opisanie interface}crt

masstr=array[1..25] of string[80];

tpol=(Men,Woman);

rekords=record

avtor:string [40];

rez :real;

god :integer;

pol :tpol;

end;

B=file of rekords;

err:word;

x1,y1,vyb,n,i:integer;

mas:masstr;

flag:boolean;vertmeny(x,y,kol:byte; mas:masstr;tek:longint; var vyb:byte);); {procedure vertmenu}{opisaniye implementation}vertmeny(x,y,kol:byte; mas:masstr;tek:longint; var vyb:byte);

x1,y1,lenstr,i,k:byte;

key:char;

r:registers;

{lenstr - max dlina stroky}

{make all stroki to size of lenstr}

{cheking the size of menu}

{cursoroff}

{sozdaniye teni window}

{window of menu}

{vivod tekushego el}

{vydeleniye pervogo punkta}

{cikl vybora}

repeat

{reading the pressed key}

case key of

{esc}#27: begin

//

end;

{enter}#13: begin

//

end;

{strelka vverx}#72: begin

//

end;

{strelka vniz}#80: begin

//

end;

end; {case}

{otmena vydeleniya punkta menu}

{vydeleniye next pole menu}

until k=vyb;

{clear screen}

clrscr;

textbackground (black);

textcolor (white);

clrscr;

end;.

1.3    Описание модуля обработки PROC

1.3.1 Структура модуля обработки PROC

Все процедуры работы с массивом записей описаны в модуле PROC, подключаемом к основной программе. Основным понятием при работе с набором данных является комбинированный тип - структура данных, состоящая из ограниченной совокупности логически связанных разнотипных компонент, называемых полями. Комбинированный тип позволяет в компактной форме описывать различные объекты (списки, каталоги, картотеки, таблицы, ведомости и т.д.). Модуль PROC содержит в себе описание спецификации файла, которое в дальнейшем используется в качестве глобальных данных. К этим данным относятся тип rekords - комбинированный тип, переменные f и f3 - переменные файла записей и переменная p - переменная типа rekords.

unit proc;{opisanie interfase}crt;flag=1;

type

tpol=(Men,Woman);

rekords=record

avtor:string [40];

rez :real;

god :integer;

pol :tpol;

end;

B=file of rekords;

Var

f3:b; f:b;

procedure vvood; {procedura sozdania}

procedure dobav; {procedura dobavlenia v konec}

procedure print(var tek:longint); {procedura pechati}

procedure poisk; {procedura poiska}

procedure perehod(var number:byte); {procedura perehoda}

procedure sozdnew; {procedura sozd po klych poly}

procedure insert(tek:longint);{opisanie implamentation}

{realization}.

1.3.2 Процедура создания нового МД vvod

Процедура vvod создает новый набор данных на внешнем устройстве. Информация, первоначально находившаяся в МД, будет уничтожена.

procedure vvod; {procedura vvoda}

var

vyb,i,n,k:byte;

p:rekords;

{inizializaziya}

{obrabotka}

for i:=1 to n do

begin

{vvod imeni}

{vvod rezultata}

{vvod goda ust}

{vvod pola}

{cikl vybora}

case vyb of

1: {man}

2: {woman}

end; {case}

{zapis to the file}

end;

{end for i}

{print};

1.3.3 Процедура добавления новых элементов в конец МД dobav

Процедура dobav осуществляет добавление новых элементов в конец текущего множества данных.

procedure dobav; {procedure dobav new dannyx to end MD}

tek:longint;

v,i,n,z:byte;

p:rekords;

{open file}

{filesize}

{vvod}

{obrabotka}

for i:=1 to n do

begin

{vvod imeni}

{vvod rezultata}

{vvod goda ust}

{vvod pola}

{cikl vybora}

case vyb of

1: {man}

2: {woman}

end; {case}

{zapis to the file}

end;

{end for i};

1.3.4 Процедура вывода МД print

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

print (var tek:longint); {procedure print}

z:byte;

poz:longint;

flag:boolean;

key:char;

procedure screen (var poz:longint);

var

z,i,k:byte;

l,r:integer;

kolz:longint;

flag:boolean;

procedure peregorodka;{procedura pechati peregorodki}

var s:byte;

begin

//

end;

{open file}

{filesize}

{proverka kolich zapisey na stranicu}

{cikl vivoda}

{proverka na 1 stroku}

if i=1 then

{risov shapki tablici}

{end if}

{vivod 1 zapisi}

{proverka na posledn stroku}

if i<= kolz-1 then

peregorodka {risov peregorodki}

else

{risovanie nizhney granici tablici}

{end if}

{konec cikla}

{proverka na konec stranici}

if kolz < 10 then

{vivod pustih strok do konca stranici}

{end if}

{open the file}

{filesize}

{position}

repeat

{calling the procedure}

screen(poz);

case key of

#73: {PdUp}

begin

//

end;

#81: {PdDn}

begin

//

end;

#27: {Esc}

begin

//

end;

end;{case}

until flag;

{closing file};

1.3.5 Процедура поиска poisk

Процедура poisk служит для поиска элемента по заданному значению ключевого поля.

procedure poisk; {procedure poisk}

var

a,b:byte;

i,kolzap,year:integer;

name:string;

result:real;

sex:tpol;

p:rekords;

{vibor polya}

{choosing the key of search}

{open the file}

{kolzap := filesize}

case a of

1: begin

{entering a name}

{nothing found}

for i:=1 to kolzap do

begin

{reading the file}

{if name found}

if p.avtor=name then

begin

{print}

end;

{end if}

end;

{end for i}

{if nothing found eror}

end;

2: begin

{reading result}

for i:=1 to kolzap do

begin

{readind file}

if p.rez=result then

begin

{print}

end;

{end if}

end;

{end for i}

end;

3: begin

{reading year}

for i:=1 to kolzap do

begin

{reading file}

if p.god=year then

begin

{print}

end;

{end if}

end;

{end for i}

end;

4: begin

{reading pol = b}

case b of

1: sex:=woman;

2: sex:=men;

end; {case}

for i:=1 to kolzap do

begin

{readind file}

if sex = p.pol then

begin

{print}

end;

{end if}

end;

{end for}

end;

end; {case}

{closing file};

1.3.6 Процедура перехода к работе с другим МД perehod

Процедура perehod осуществляет переход к работе с другим МД. В списке параметров имеет переменную number, которая определяет значение открытого в данный момент МД. При вызове процедуры perehod она изменяет значение number и инициализирует другой МД, а также показывает информацию о переходе.

procedure perehod(var number:byte);{procedure perehod to another MD}

{close the file}

{checking the number}

if number=1 then

begin

//

end

else

begin

//

end;

{end if};

1.3.7 Процедура вставки нового элемента после текущего элемента insert

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

 procedure insert(tek:longint); {vstavka elementa pered tekishim}

var

poz,kol,kolzap:longint;

rab1:rekords;

rab2:rekords;

vyb:byte;

i:integer;

readln (vyb);

if vyb=1 then

readln(poz)

else

poz:=tek+1;

{end if}

{open the file}

kol:=filesize(f)-poz;

kolzap:=filesize (f);

{read to rab1.avtor}

{read to rab1.rezult}

{read to rab1.year}

{vybor pola}

readln(vyb);

case vyb of

1: rab1.pol:=men;

2: rab1.pol:=woman;

flag:=true;

{cikl sdviga zapisey}

for i:=0 to kol-1 do

begin

if flag then

begin

seek (f, poz+i);

{read file to rab2}

seek (f, poz+i);

write (f,rab1);

flag:=false

end

else

begin

seek (f,poz+i);

{read file to rab1};

seek (f,poz+i);

write (f,rab2);

flag:=true;

end;

{end if}

end;

{end for}

{zapis poslednego eltmenta v konec faila}

seek(f,kolzap);

if flag then

write (f,rab1)

else

write (f,rab2);

{end if}

{closing file};

{print the result};

1.3.8 Процедура создания нового МД из всех элементов по заданному полю sozdnew

 procedure sozdnew; {procedure sozdaniya novogo MD}

var

a,b,c:byte;

i,kolzap,year:integer;

name:string;

result:real;

sex:tpol;

p:rekords;

begin

{case vybora sozdaniya novogo ili vivoda starogo}

readln (c);

case c of

1: {sozdanie novogo F3}

begin

{chtenie}

{vidor klychevogo polya}

readln (a);

{sozdanie novogo f3}

assign (f3,'f3.dat');

rewrite (f3);

{vischislenie dlini f}

reset (f);

kolzap := filesize (f);

case a of

1: begin

{vvod imeni}

readln (name);

for i:=1 to kolzap do

begin

read (f,p);

if p.avtor=name then

write (f3,p);

{end if}

end;

{end for i}

end;

2: begin

{vvod rezult}

readln (result);

for i:=1 to kolzap do

begin

read (f,p);

if p.rez=result then

write (f3,p);

{end if}

end;

{end for i}

end;

3: begin

{vvod goda}

readln (year);

for i:=1 to kolzap do

begin

read (f,p);

if p.god=year then

write (f3,p);

{end if}

end;

{end for i}

end;

4: begin

{case vibora mujskih ili jenskih resultatov}

readln (b);

case b of

1: sex:=woman;

2: sex:=men;

end; {case}

for i:=1 to kolzap do

begin

read (f,p);

if sex = p.pol then

write (f3,p);

{end if}

end;

{end for}

end;

end; {case a of}

close (f3); {new file}

close (f); {osnovnoi file}

end;

2: {vivod starogo F3}

begin

assign (f3,'f3.dat');

{open file}

reset (f3);

{calculating filesize}

kolzap:=filesize (f3);

{cikl vivoda}

for i:=1 to kolzap do

begin

read (f3,p);

{print}

end;

{end for i}

close (f3);{novogo MD}

end;

end; {case c}

end;

2. Проверка работы программы на контрольном примере

2.1 Запуск главной программы KURSACH

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

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

.2 Описание работы процедуры создания МД

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

Рисунок 2 - Ввод информации

Рисунок 3 - Таблица с данными

.3 Описание работы процедуры добавления новых элементов в конец МД

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

Рисунок 4 - Ввод информации для добавления

Рисунок 5 - Таблица с данными

2.4 Описание работы процедуры просмотра всех элементов МД

Для просмотра всех элементов МД нужно выбрать пункт меню «Вывести текущий МД» и нажать клавишу Enter. Элементы выводятся в виде таблицы, где каждый элемент занимает одну строку в таблице (Рисунок 6).

Рисунок 6 - Просмотр всех элементов МД

.5 Описание работы процедуры поиска

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

Рисунок 7 - Поиск элемента по ключевому полю

.6 Описание работы процедуры перехода к работе с другим МД

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

Рисунок 8 - Переход к работе с другим МД

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

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

Рисунок 9 - Ввод данных для вставки элемента

Рисунок 10 - Результат

2.8 Описание работы процедуры создания нового МД по ключевому полю

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

Рисунок 11 - Выбор операции

Рисунок 12 - Вывод массива

Заключение

В ходе выполнения курсовой работы была создана и протестирована программа, работающая с МД на внешнем устройстве. Программа производит различные операции над МД. Само МД представляет собой некоторое количество записей, обращение к которым осуществляется по средствам прямого доступа к файлу. Программа реализовывает следующие запросы: Создание набора данных (МД).

1 Добавление новых элементов в конец МД.

2 Просмотр всех элементов МД.

3 Поиск элемента по заданному значению ключевого поля.

4 Переход к работе с другим МД.

5 Вставка нового элемента после текущего элемента.

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

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

7 Глобальные данные: Спецификация файла. Никаких других глобальных переменных использовать нельзя.

8 Вместе с меню на экране должно быть отображено:

-       номер текущего элемента,

-       содержимое текущего элемента.

1 На экран выводить элементы в виде таблицы (один элемент - одна строка таблицы). Если после выполнения запроса изменяется хотя бы один элемент, то заканчивать запрос выводом всего множества элементов.

2 Тестами к заданиям служат 2 МД с правдоподобной информацией.

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

3 Зуев, Е. А. Программирование на языке Turbo Pascal 6.0,7.0,/ Е. А. Зуев// М.:Веста,Радио и связь, 1993. - 376с.

4 Свободная энциклопедия ВикипедиЯ [Электронный ресурс]. - 2015. - Режим доступа: http://ru.wikipedia.org. - Дата доступа: 03.05.2015.

5 Turbo Pascal [Электронный ресурс]. - 2015. - Режим доступа: http://pascal.net.ru. - Дата доступа: 03.05.2015.

6 Языки программирования Pascal & Delphi [Электронный ресурс]/ Структурное программирование - Режим доступа: http://www.maksakov-sa.ru. - Дата доступа: 03.05.2015

Приложения

Приложение А. Текст основной программы

program Kursach;crt, proc, menu;=1;y=1;kol=8;:longint;:byte;:byte;:masstr;

K[1]:='Создать новый набор данных ';

K[2]:='Добавить новый элемент в конец набора данных ';

K[3]:='Вывксти текущий НД ';

K[4]:='Поиск элемента по заданному полю ';

K[5]:='Перейти к другому НД ';

K[6]:='Вставка элемента после текущего ';

K[7]:='Создать новый массив данных из элементов с заданным знач поля ';

K[8]:='Выход ';

assign (f,'f1.dat');(x,y,kol,k,tek,vozvrat);vozvrat of

1: vvod;

2: dobav;

3: print(tek);

4: poisk;

5: perehod(flag);

6: insert(tek);

7: sozdnew;

8: exit;; {case}false;.

Приложение Б. Текст модуля вертикального меню

unit menu;{описание интерфейсной части}crt;

masstr=array[1..25] of string[80];

tpol=(Men,Woman);

rekords=record

avtor:string [40];

rez :real;

god :integer;

pol :tpol;

end;

B=file of rekords;

err:word;

x1,y1,vyb,n,i:integer;

mas:masstr;

flag:boolean;vertmeny(x,y,kol:byte; mas:masstr;tek:longint; var vyb:byte); {процедура вертикального меню}{описание скрытых объектов}vertmeny(x,y,kol:byte; mas:masstr;tek:longint; var vyb:byte);

x1,y1,lenstr,i,k:byte;

key:char;

p:rekords;

f:b;

lenstr:=length(mas[1]);

for i:= 2 to kol do

if lenstr<length(mas[i]) then lenstr:=length(mas[i]);

{end if}

{end for i}

{выравние всех строк до lenstr}

for i:=1 to kol do

while length(mas[i])<lenstr do

mas[i]:=mas[i]+' ';

{end while..}

{end for i}

{проверка размеров меню}

if ((x+lenstr>80) or (y+kol>25)) then exit;

cursoroff;

x1:=x+lenstr+1;

y1:=y+kol-1;

{создание фона окна}

window (1,1,80,25);

textbackground(blue);

clrscr;

{vivod tekushego el}

window (1,19,40,25);

textbackground (white);

clrscr;

textcolor (black);

gotoxy (1,1);

writeln (' Текущий элемент ');

writeln (' Номер ',tek+1);

assign (f,'f1.dat');

{$i-}

reset (f);

{$i+}

err:=ioresult;

if err <> 0 then

rewrite (f)

else

begin

if filesize (f) <> 0 then

begin

seek (f,tek);

read (f,p);

writeln (' Автор: ',p.avtor);

writeln (' Результат: ',p.rez:6:2);

writeln (' Год: ',p.god);

if p.pol=men then

writeln (' Пол: Mujchina')

else

writeln (' Пол: Jenshina');

{end if}

end;

{end if}

end;

{end if}

close (f);

{создание тени окна, цвет фона}

window(x+1,y+1,x1+1,y1+1);

textbackground(black);

clrscr;

{окно меню}

window(x,y,x1,y1);

textbackground(black);

textcolor(white);

clrscr;

for i:= 1 to kol do

begin

gotoxy(1,i);

write(' ',mas[i]);

end;

{end for i}

{выделение первого пункта}

gotoxy(1,1);

textbackground(white);

textcolor(black);

write(' ',mas[1]);

vyb:=1;

{цикл выбора}

repeat

flag:=false;

key:=readkey;

if key=#0 then key:=readkey;

k:=vyb;

case key of

{esc}#27: begin

window(1,1,80,25);

textbackground(black);

textcolor(black);

clrscr;

key:=readkey;

flag:=true;

end;

{enter}#13: begin

window(1,1,80,25);

textbackground(black);

textcolor(white);

clrscr;

key:=readkey;

flag:=true;

end;

{стрелка вверх}#72: begin

vyb:=vyb-1;

if vyb=0 then vyb:=kol;

{стрелка вниз}#80: begin

vyb:=vyb+1;

if vyb>kol then vyb:=1

end;

end; {case}

{отмена выделения пункта меню}

gotoxy(1,k);

textbackground(black);

textcolor(white);

write(' ',mas[k]);

{выделение следующего поля меню}

gotoxy(1,vyb);

textbackground(white);

textcolor(black);

write(' ',mas[vyb]);

until flag;

cursoron;

textbackground (black);

textcolor (white);

clrscr;

end;.

Приложение В. Текст модуля обработки МД

unit proc;{opisanie interfase}crt;flag=1;

type

tpol=(Men,Woman);

rekords=record

avtor:string [40];

rez :real;

god :integer;

pol :tpol;

end;

B=file of rekords;

Var

f3:b;

f:b;

procedure vvod; {procedura sozdania}

procedure dobav; {procedura dobavlenia v konec}

procedure print(var tek:longint); {procedura pechati}

procedure poisk; {procedura poiska}

procedure perehod(var number:byte); {procedura perehoda}

procedure sozdnew; {procedura sozd po klych poly}

procedure insert(tek:longint);{opisanie implamentation}

procedure vvod; {procedura vvoda}

var

tek:longint;

vyb,i,n,k:byte;

p:rekords;

begin

{vibor faila, inicializacia}

writeln;

assign(f,'f1.dat');

rewrite(f);

writeln ('vvedite kolichestvo zapisey: ');

readln(n);

{obrabotka}

for i:=1 to n do

begin

writeln('vvedite imya avtora: ');

readln(p.avtor);

writeln('vvedite rezultat ', p.avtor);

readln(p.rez);

writeln('vvedite god ustanovlenia: ');

readln(p.god);

writeln('viberite pol avtora: ');

writeln('1 - men');

writeln('2 - woman');

readln(vyb);

case vyb of

1: p.pol:=men;

2: p.pol:=woman;

end; {case}

write(f,p);

end;

{end for i}

writeln('Complete!');

close (f);

print (tek);

end;

procedure dobav; {процедура добавления данных в конец МД}

var

tek:longint;

v,i,n,z:byte;

p:rekords;

begin

reset(f);

z:=filesize(f);

seek(f,z);

writeln('vvedite kolichestvo dobavlyaemih dannih: ');

readln(n);

for i:=1 to n do

begin

{ввод значений}

{ввод имени}

writeln('vvedite imya avtora: ');

readln(p.avtor);

{ввод результата}

writeln('vvedite rezultat ', p.avtor);

readln(p.rez);

{ввод года установления}

writeln('vvedite god ustanovlenia: ');

readln(p.god);

{выбор пола}

writeln('viberite pol avtora: ');

writeln('1 - men');

writeln('2 - woman');

readln(v);

{цикл выбора}

case v of

1: p.pol:=men;

2: p.pol:=woman;

end; {case}

write(f,p);

end;

{end for i}

writeln('Complete!');

close (f);

print (tek);

end;

procedure sozdnew;

var

a,b,c:byte;

i,kolzap,year:integer;

name:string;

result:real;

sex:tpol;

p:rekords;

begin

writeln ('sozdat novii fail');

writeln ('vivesti tekushii');

readln (c);

case c of

1:

begin

{chtenie}

writeln ('viberite kriterii');

writeln ('1 - Po imeni avtora');

writeln ('2 - Po rezultatu');

writeln ('3 - po gpdu ustanovlrnia');

writeln ('4 - Po polu');

readln (a);

{sozdanie novogo f3}

assign (f3,'f3.dat');

rewrite (f3);

{vischislenie dlini f}

reset (f);

kolzap := filesize (f);

case a of

1: begin

writeln ('vvedite imya');

readln (name);

for i:=1 to kolzap do

begin

read (f,p);

if p.avtor=name then

write (f3,p);

{end if}

end;

{end for i}

end;

2: begin

writeln ('vvedite pezultat');

readln (result);

for i:=1 to kolzap do

begin

read (f,p);

if p.rez=result then

write (f3,p);

{end if}

end;

{end for i}

end;

3: begin

writeln ('vvedite god');

readln (year);

for i:=1 to kolzap do

begin

read (f,p);

if p.god=year then

write (f3,p);

{end if}

end;

{end for i}

end;

4: begin

writeln ('1 - vse jenskie rezultat');

writeln ('2 - vse mujskie rezultat');

readln (b);

case b of

1: sex:=woman;

2: sex:=men;

end; {case}

for i:=1 to kolzap do

begin

read (f,p);

if sex = p.pol then

write (f3,p);

{end if}

end;

{end for}

end;

end; {case a of}

close (f3);

writeln ('Complete!');

readln;

close (f);

end;

2:begin

assign (f3,'f3.dat');

reset (f3);

kolzap:=filesize (f3);

for i:=1 to kolzap do

begin

read (f3,p);

case p.pol of

men : writeln (p.avtor,' ',p.rez:6:2,' ',p.god,' ','Men');

woman: writeln (p.avtor,' ',p.rez:6:2,' ',p.god,' ','Woman');

end; {case}

end;

{end for i}

close (f3);

writeln ('Complete!');

readln;

end;

end; {case c}

end;

procedure print(var tek:longint); {процедура печати}

var

k:byte;

poz,kolzap:longint;

flag:boolean;

key:char;

p:rekords;

procedure screen (var poz:longint);

var

z,i,k:byte;

l,r:integer;

kolz:longint;

flag:boolean;

procedure peregorodka;

var s:byte;

begin

write (chr(204));

for s:=1 to 3 do

write (chr(205));

{end for}

write (chr(206));

for s:=1 to 21 do

write(chr(205));

{end for}

write (chr(206));

for s:=1 to 8 do

write (chr(205));

{end for}

write (chr(206));

for s:=1 to 6 do

write (chr(205));

{end for}

write (chr(206));

for s:=1 to 7 do

write (chr(205));

{end for}

writeln(chr(185));

end;

begin

{end if}

{}

reset(f);

seek (f,poz);

r:=filesize (f);

if poz+10>r then

begin

while r>10 do

r:=r-9;

kolz:=r;

end

else kolz:=10;

{end if}

for i:=1 to kolz do

begin

read(f,p);

if i=1 then

{pechat shapki tablici}

begin

write (chr(201));

write (chr(205),chr(205),chr(205),chr(203));

for k:=1 to 21 do

write (chr(205));

{end for}

write (chr(203));

for k:=1 to 8 do

write (chr (205));

{end for}

write (chr(203));

for k:=1 to 6 do

write (chr(205));

{end for}

write (chr(203));

for k:=1 to 7 do

write (chr(205));

{end for}

writeln (chr(187));

write (chr(186));

write ('Nom',chr(186),' Автор ');

write (chr(186));

write ('Результат');

write (chr(186));

write (' Год ');

write (chr(186));

write (' Пол ');

writeln (chr(186));

peregorodka;

end;

{end if}

while length (p.avtor) < 20 do

p.avtor:=p.avtor+' ';

case p.pol of

men : writeln (chr(186),i+poz:3,chr(186),' ',p.avtor,chr(186),' ',p.rez:6:2,' ',chr(186),' ',p.god:4,' ',chr(186),' ','Men ',chr(186));

woman: writeln (chr(186),i+poz:3,chr(186),' ',p.avtor,chr(186),' ',p.rez:6:2,' ',chr(186),' ',p.god:4,' ',chr(186),' ','Woman ',chr(186));

end; {case}

if i<=kolz-1 then

peregorodka

else

begin

write (chr (200));

for k:=1 to 3 do

write (chr(205));

{end for}

write (chr(202));

for k:=1 to 21 do

write(chr(205));

{end for}

write (chr(202));

for k:=1 to 8 do

write (chr(205));

{end for}

write (chr(202));

for k:=1 to 6 do

write (chr(205));

{end for}

write (chr(202));

for k:=1 to 7 do

write (chr(205));

{end for}

writeln (chr(188));

writeln;

end;

{end if}

end;

{end for i}

if kolz < 10 then

writeln;

{end for}

{end if}

end;

begin

reset(f);

kolzap:=filesize(f);

poz:=0;

flag:=false;

repeat

screen (poz);

key:=readkey;

case key of

#72: {vverh}

begin

if poz<9 then

poz:=0

else

poz:=poz-9;

{end if}

end;

#80: {vniz}

begin

if poz+10>=kolzap then

{end for}

else poz:=poz+9;

end;

#27: {Esc}

begin

tek:=poz;

flag:=true;

end;

end;{case}

until flag;

writeln;

close (f);

end;

procedure poisk; {procedure poisk}

var

a,b:byte;

i,kolzap,year:integer;

name:string;

result:real;

sex:tpol;

p:rekords;

begin

{чтение}

writeln ('viberite kriterii');

writeln ('1 - Po imeni avtora');

writeln ('2 - Po rezultatu');

writeln ('3 - po gpdu ustanovlrnia');

writeln ('4 - Po polu');

readln (a);

reset (f);

kolzap := filesize (f);

case a of

1: begin

writeln ('vvedite imya');

readln (name);

for i:=1 to kolzap do

begin

read (f,p);

if p.avtor=name then

begin

if p.pol = men then

writeln (i,' ',p.avtor:13,' ',p.rez:6:2,' ',p.god,' Men')

else

writeln (i,' ',p.avtor:13,' ',p.rez:6:2,' ',p.god,' Woman');

{end if}

end;

{end if}

end;

{end for i}

end;

2: begin

writeln('vvedite rezultat ');

readln (result);

for i:=1 to kolzap do

begin

read (f,p);

if p.rez=result then

begin

if p.pol = men then

writeln (i,' ',p.avtor:13,' ',p.rez:6:2,' ',p.god,' Men')

else

writeln (i,' ',p.avtor:13,' ',p.rez:6:2,' ',p.god,' Woman');

{end if}

end;

end;

{end for i}

end;

3: begin

writeln ('vvedite god');

readln (year);

for i:=1 to kolzap do

begin

read (f,p);

if p.god=year then

begin

if p.pol = men then

writeln (i,' ',p.avtor:13,' ',p.rez:6:2,' ',p.god,' Men')

else

writeln (i,' ',p.avtor:13,' ',p.rez:6:2,' ',p.god,' Woman');

{end if}

end;

end;

{end for i}

end;

4: begin

writeln ('1 - vse jenskie rezultat);

writeln ('2 - vse mujskie rezultat');

readln (b);

case b of

1: sex:=woman;

2: sex:=men;

end; {case}

for i:=1 to kolzap do

begin

read (f,p);

if sex = p.pol then

begin

if p.pol = men then

writeln (i,' ',p.avtor:13,' ',p.rez:6:2,' ',p.god,' Men')

else

writeln (i,' ',p.avtor:13,' ',p.rez:6:2,' ',p.god,' Woman');

{end if}

end;

{end if}

end;

{end for}

end;

end; {case a of}

close(f);

readln;

end;

procedure perehod(var number:byte);{процедура перехода к работе с другим МД}

var

n:integer;

begin

reset(f);

close(f);

if number=1 then

begin

assign(f,'f1.dat');

number:=2;

end

else

begin

assign(f,'f2.dat');

number:=1;

end;

{end if}

writeln ('Complete!');

readln;

end;

procedure insert(tek:longint); {vstavka elementa pered tekishim}

var

poz,kol,kolzap:longint;

rab1:rekords;

rab2:rekords;

vyb:byte;

flag:boolean;

i:integer;

begin

{needind position}

writeln ('1 - Выбрать позицию');

writeln ('2 - Вставить после текущего');

readln (vyb);

if vyb = 1 then

begin

writeln('vvedite nuzjnuu poziciu');

readln(poz);

end

else

poz:=tek+1;

{end if}

{inizialization}

reset(f);

{enter data}

kol:=filesize(f)-poz;

kolzap:=filesize (f);

writeln ('vvedite dannie');

writeln('vvedite imya avtora: ');

readln(rab1.avtor);

writeln('vvedite rezultat ', rab1.avtor);

readln(rab1.rez);

writeln('vvedite god ustanovlenia: ');

readln(rab1.god);

writeln('viberite pol avtora: ');

writeln('1 - men');

writeln('2 - woman');

readln(vyb);

case vyb of

1: rab1.pol:=men;

2: rab1.pol:=woman;

end; {case}

flag:=true;

for i:=0 to kol-1 do

begin

if flag then

begin

{proverka na 0 poz}

seek (f,poz+i);

read (f,rab2);

seek (f,poz+i);

write (f,rab1);

flag:=false

end

else

begin

seek (f,poz+i);

read (f,rab1);

seek (f,poz+i);

write (f,rab2);

flag:=true;

end;

{end if}

end;

{end for}

seek(f,kolzap);

if flag then

write (f,rab1)

else

write (f,rab2);

{end if}

close (f);

print (tek);

end;.

Похожие работы на - Использование языка программирования Паскаль для создания множества данных и его обработки

 

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