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

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

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

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

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

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

  • Содержание

Введение

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Заключение

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

Приложения

Введение

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

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

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

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

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

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

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

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

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

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

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

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

автор (string);

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

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

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

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

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

program kursach;

uses crt, menu, proc;

const

x=1;

y=1;

kol=8;

var

s:masstr;

vybor,flag:byte;

pozitia:byte;

begin

{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;

end.

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

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

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

unit menu;

interface {opisanie interface}

uses crt

type

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;

var

err:word;

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

mas:masstr;

flag:boolean;

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

implementation {opisaniye implementation}

procedure vertmeny(x,y,kol:byte; mas:masstr;tek:longint; var vyb:byte);

var

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

key:char;

r:registers;

begin

{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;

end.

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

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

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

unit proc;

interface {opisanie interfase}

uses crt;

const 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);

implementation {opisanie implamentation}

{realization}

end.

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

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

procedure vvod; {procedura vvoda}

var

vyb,i,n,k:byte;

p:rekords;

begin

{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}

end;

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

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

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

var

tek:longint;

v,i,n,z:byte;

p:rekords;

begin

{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}

end;

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

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

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

var

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}

begin

{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}

end;

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;

begin

{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}

end;

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

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

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

begin

{close the file}

{checking the number}

if number=1 then

begin

//

end

else

begin

//

end;

{end if}

end;

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

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

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

var

poz,kol,kolzap:longint;

rab1:rekords;

rab2:rekords;

vyb:byte;

flag:boolean;

i:integer;

begin

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}

end;

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.2 Описание работы процедуры создания МД

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Заключение

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Приложения

?????????? ?. Текст основной программы

program Kursach;

uses crt, proc, menu;

const

x=1;y=1;kol=8;

var

tek:longint;

vozvrat:byte;

flag:byte;

K:masstr;

begin

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

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

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

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

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

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

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

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

assign (f,'f1.dat');

repeat

vertmeny (x,y,kol,k,tek,vozvrat);

case vozvrat of

1: vvod;

2: dobav;

3: print(tek);

4: poisk;

5: perehod(flag);

6: insert(tek);

7: sozdnew;

8: exit;

end; {case}

until false;

end.

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

unit menu;

interface {описание интерфейсной части}

uses crt;

type

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;

var

err:word;

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

mas:masstr;

flag:boolean;

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

implementation {описание скрытых объектов}

procedure vertmeny(x,y,kol:byte; mas:masstr;tek:longint; var vyb:byte);

var

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

key:char;

p:rekords;

f:b;

begin

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;

end;

{стрелка вниз}#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;

end.

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

unit proc;

interface {opisanie interfase}

uses crt;

const 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);

implementation {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

for k:=(10-kolz)*2 downto 1 do

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;

end.

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


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

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

    курсовая работа [78,9 K], добавлен 28.12.2012

  • Сравнительный анализ языков программирования высокого уровня Си и Паскаль. Реализация алгоритма обработки данных. Тестирование и отладка программы или пакета программ. Структура программы на языке Турбо Паскаль. Указатели и векторные типы данных.

    курсовая работа [233,5 K], добавлен 14.12.2012

  • Характеристика структурированного языка программирования С, его основных структурных компонентов, области памяти, библиотеки. Методы поиска в массивах данных. Описание программы, функции сортировки и меню выбора, последовательного и бинарного поиска.

    курсовая работа [1,7 M], добавлен 19.05.2014

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

    курсовая работа [3,5 M], добавлен 22.06.2012

  • Описание возможностей языка программирования Turbo Pascal. Написание программы создания файлов с прямым доступом, которая также будет обрабатывать наборы данных с определенными полями и ограничениями. Контрольный пример работы поисковой программы.

    курсовая работа [563,6 K], добавлен 22.01.2016

  • Методы хеширования данных и реализация хеш-таблиц. Разработка на языке программирования высокого уровня программы с функциями создания хеш-таблицы, добавления в нее элементов, их просмотра, поиска и удаления. Экспериментальный анализ хеш-функции.

    лабораторная работа [231,9 K], добавлен 18.06.2011

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

    курсовая работа [368,9 K], добавлен 18.05.2015

  • Программа поиска в базе данных в среде Borland Delphi 7.0 Enterprise. Условия и блок-схемы задач. Ввод массива. Текст программ в Delphi, в Паскаль. Текст программы поиска в базе данных. Кодирование материала. Изготовление реляционной базы данных.

    практическая работа [27,6 K], добавлен 11.10.2008

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

    курсовая работа [997,3 K], добавлен 08.06.2014

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

    курсовая работа [425,2 K], добавлен 07.07.2012

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