Использование языка программирования Паскаль для создания множества данных и его обработки
Создание программы, работающей с набором данных на внешнем устройстве. Описание программного комплекса. Обзор структуры главной программы. Процедура добавления новых элементов, поиска и создания на экране вертикального меню. Проверка работы программы.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 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