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

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

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

МИНИСТЕРСТВО СЕЛЬСКОГО ХОЗЯЙСТВА И ПРОДОВОЛЬСТВИЯ РЕСПУБЛИКИ БЕЛАРУСЬ
ГЛАВНОЕ УПРАВЛЕНИЕ ОБРАЗОВАНИЯ, НАУКИ И КАДРОВ
УО «ГОМЕЛЬСКИЙ ГОСУДАРСТВЕННЫЙ АГРАРНО-ЭКОНОМИЧЕСКИЙ КОЛЛЕДЖ»
Курсовой проект
по дисциплине «Основы алгоритмизации и программирования»
на тему Разработка информационно-поисковой системы «Результаты соревнований» на языке программирования Паскаль
Исполнитель Бондарев А.Ю.
Руководитель Царева К.О.
Гомель 2010

ОГЛАВЛЕНИЕ
ВВЕДЕНИЕ
1. СИМВОЛЬНЫЙ И СТРОКОВЫЙ ТИП ДАННЫХ
1.1 Тип данных Char
1.2 Тип данных String
2. РАЗРАБОТКА ИНФОРМАЦИОННО-ПОИСКОВОЙ СИСТЕМЫ «РЕЗУЛЬТАТЫ СОРЕВНОВАНИЙ» НА ЯЗЫКЕ ПРОГРАММИРОВАНИЯ ПАСКАЛЬ
2.1 Постановка задачи
2.2 Описание алгоритма задачи
2.3 Практическая часть выполнения задачи на языке программирования Паскаль
2.4 Результаты работы программы
ЗАКЛЮЧЕНИЕ
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

ВВЕДЕНИЕ
Язык программирования Паскаль предлагает богатую среду программирования, которая делает разработку программ более производительной и более приятной. Паскаль также легок в обращении, в нем легко и просто можно писать программы. Именно поэтому я выбрал именно его для данной курсовой работы. Паскаль хорош тем, что в нем можно создавать прикладные программы, работающие в реальном времени.
Необходимо создать программу «Результаты соревнований» на языке программирования Паскаль. Программа должна выполнять следующие действия создание файла, просмотр содержимого файла которое выводится в виде таблицы, дополнение файла новыми записями, поиск и сортировка по любому указанному полю, удаление любой строки файла. Для реализации этой работы я буду использовать язык программирования Паскаль.
Для удобства и простоты использования, программа будет реализована в виде меню. Используя клавиатуру, можно будет выбирать необходимые действия. С помощью Паскаля я попытаюсь сделать мою программу проще и удобнее для пользователя.

1. СИМВОЛЬНЫЙ И СТРОКОВЫЙ ТИП ДАННЫХ
1.1 Тип данных Char
Базовый тип данных — Char. Переменная типа Char может хранить всего один символ, один из набора 256 символов. Каждый символ имеет свой код. Символы можно сравнивать между собой на равенство и на определение, какой больше или меньше, тогда компьютер опять же сравнивает не сами символы, а их коды.
Приблизительно таблицу символов можно описать примерно так. В начале идут различные служебные управляющие символы, которые не имеют графического представления. Например, это символы табуляции, возврата каретки, перевода строки и т.п. Потом идут знаки препинания «!», «?», «.» и т.п. Далее идут цифры «1», «2»,«3» и т.д. Следующими идут литеры английского алфавита «A», «B», «C»,…, «Z», «a», «b», «c»,…, «z». Завершают таблицу литеры русского алфавита «А», «Б», «В»,…, «Я», «а», «б», «в»,…, «я».
Разные системы могут по-разному интерпретировать коды по причине, того что они руководствуются разными таблицами символов. Windows Code Page 1251 (Cyrillic) — таблица символов для кириллицы в системах Microsoft Windows. Это означает что в системе Windows каждый символ с определенным кодом будет интерпретироваться одинаково для всех программ, если они конечно не реализуют какую-то свою, специфическую обработку символов.
Для типа данных Char определены также две операции — получение кода символа из переменной типа Char и преобразование кода символа в значение типа Char. Эти операции реализованы двумя функциями стандартной библиотеки — Ord и Chr.
Функция Ord принимает один параметр типа Char а возвращает значение типа Byte которое и представляет собой код символа. Функция Chr делает все с точностью наоборот — принимает значение типа Byte а возвращает значение типа Char [3,с.122-124].
1.2 Тип данных String
программирование паскаль регистр символьный
Переменная типа String представляет собой последовательность символов — строку. Мы можем определять длину строки, можем добавлять к строке другие строки и символы, можем заменять произвольные части строки на другие строки и символы, можем удалять части строки.
Подпрограммы
Многие операции над строками выполняются с помощью различных подпрограмм. Подпрограмма — кусочек программного кода, который имеет идентификатор и может быть вызван по нему для выполнения какой-либо задачи. Зачастую подпрограмма требует передать ей какие-нибудь параметры. В качестве параметров используется либо выражение, либо идентификатор чего-либо. Например, идентификатор переменной или константы. Подпрограммы подразделяются на процедуры и функции. Разница между ними лишь в наличии возвращаемого результата. Функции возвращают результат своего выполнения, а процедуры не возвращают никакого результата, только выполняют какое-то действие. Процедуры вызываются следующим образом
Имя процедуры (Параметр 1, Параметр 2, …, Параметр N);
Вызов функции может быть использован внутри какого-либо выражения. Также вызов функции может быть использован в операторе присваивания, чтобы присвоить какой-нибудь переменной результат выполнения функции.
Имя переменной Имя функции (Параметр 1, Параметр 2, …, Параметр N)[5,с.15-17].
Присваивание значения строке, получение содержимого строки
Строковой переменной может быть присвоено значение, как и любой другой переменной. Единственное ограничение состоит в том, что тип значения должен быть String или Char
Получение длины строки
Для определения длины строки в символах используется функция стандартной библиотеки Length. Функция Length получает на вход один единственный параметр, идентификатор строковой переменной или выражение строкового типа. Результат функции, количество символов в строке, имеет тип Integer.
Формат вызова Length(идентификатор переменной или выражение типа String) [1,с.163-168].
Получение и установка отдельного символа строки
К символам строки можно обращаться по их индексу (позиции в строке). Индекс первого символа строки «1». Индекс последнего символа строки будет равен результату вызова функции Length, которой в качестве параметра будет передана строка. Обратите внимание на то, что индекс первого символа «1», а не «0» как обычно делается в различных структурах данных, которые могут содержать много элементов. При попытке обращения к символу с индексом меньше «0» или больше Length возникает ошибка времени выполнения.
Формат обращения к символу строки S[I], S — идентификатор строковой переменной, а I — индекс символа.
Выражение вида S[I], S — идентификатор строковой переменной, возвращает результат типа Char.
Слияние двух строк (конкатенация)
Строки можно складывать как числовые переменные, используя оператор «+». Результатом сложения является более длинная строка, включающая в себя содержимое обеих строк в порядке их употребления в операции сложения. Также существует функция Concat которая выполняет в точности то же действие что и «+».
Формат операции конкатенации двух строк
A+B или Concat(A,B),
где A — идентификатор одной строки или строковое выражение, а B — идентификатор другой строки или строковое выражение [2,с.48-52].
Вставка одной строки внутрь другой
Вставка строки выполняется процедурой Insert. Процедура получает на вход три параметра строку, которую нужно вставить, строку в которую должна быть произведена вставка и позицию, в которой должна быть произведена вставка. Формат вызова
Insert(Source,Target,Position), где Source — строка которая будет вставлена, Target — идентификатор строковой переменной в которую вставляют содержимое Source, Position — позиция, начиная с которой будет вставлено содержимое Source в Target.
Если Position меньше 1, то процедура принимает его равным 1.
Если Position больше чем Length(Target), то содержимое Source добавляется к Target с конца.
Если Source является пустой строкой, то Insert ничего не делает [5,с.22-26].
Удаление части строки
Часть строки может быть удалена с помощью процедуры Delete. Формат вызова процедуры Delete Delete(Target,Index,Count), где Target — идентификатор строковой переменной, из которой удаляются символы, Index — позиция, начиная с которой производится удаление, Count — количество удаляемых символов.
Если Index меньше 1 или больше чем Length(Target), то ничего из Target не удаляется.
Если Count указывает больше символов чем есть начиная с Index, то удаляются символы от Index и до конца строки. Если Count меньше 1, то ничего не удаляется. [4,с.89-92].
Изменение регистра символов
Каждый символ, представляющий собой букву, имеет регистр — верхний или нижний. Например, буква «а» может быть заглавной «А» и прописной «а». Заметим что «А» и «а» являются различными символами. Про заглавные буквы говорят, что они имеют верхний регистр. Про прописные буквы говорят, что они имеют нижний регистр. В некоторых случаях нужно преобразовать отдельную строку или символ в верхний или нижний регистр. Это делают функции UpCase, UpperCase, LoCase, LowerCase.
Сравнение строк на равенство или больше/меньше
Строки можно сравнивать между собой как если бы они были числами. Возможны следующие операции сравнения
= -сравнение строк на предмет равенства
<> -сравнение строк на предмет неравенства
< -сравнение на «меньше»
> -сравнение на «больше»
<= -сравнение на «меньше или равно»
>= -сравнение на «больше или равно»
Результатом сравнения является значение типа Boolean, которое может быть только одним из двух — TRUE (Истина) и FALSE (Ложь).
Сравнение на предмет неравенства производится сравнение на предмет равенства, затем результат «переворачивается вверх ногами». Вместо TRUE возвращается FALSE и наоборот.
Сравнение на «меньше» поочередно сравниваются коды символов, стоящих на соответствующих позициях. Если одна из строк больше не имеет символов, или символ, стоящий в соответствующей позиции имеет меньший код, то считается что эта строка «меньше».
Сравнение на «больше» поочередно сравниваются коды символов, стоящих на соответствующих позициях. Если одна из строк еще имеет символы, в то время как другая больше не имеет символов, или символ, стоящий в соответствующей позиции имеет больший код, то считается что первая строка «больше».
Нечеткие сравнения на «меньше или равно» и «больше или равно»
Фактически «меньше или равно» означает «не больше», а «больше или равно» означает «не меньше». Соответственно производится сравнение на предмет «больше» или «меньше» и результат инвертируется. [4,с.67-69].

2. РАЗРАБОТКА ИНФОРМАЦИОННО-ПОИСКОВОЙ СИСТЕМЫ «РЕЗУЛЬТАТЫ СОРЕВНОВАНИЙ» НА ЯЗЫКЕ ПРОГРАММИРОВАНИЯ ПАСКАЛЬ
2.1 Постановка задачи
Разработать программу создания информационно-поисковой системы «Результаты соревнований» на языке программирования Паскаль.
База данных должна храниться в типизированных файлах. Записи формируются в таблицы и выводятся на экран.
Требуется произвести некоторые действия над записями. Для каждого действия мы создаем процедуры процедура создания файла который будет содержать минимум 10 записей, процедура вывода на экран содержимого файла в виде таблицы, процедура дополнения файла новыми записями, процедура поиска записей по любому выбранному полю, процедура сортировки записей по любому выбранному полю, и процедура удаления записей по любому выбранному номеру.
Все операции с файлом оформляются в виде меню.
2.2 Описание алгоритма задачи
Процедуры мы вызываем с помощью меню основной программы, выбирая соответствующие пункты.
Выбор действия над файлом в меню осуществляется выбором определенного пункта с помощью клавиатуры.
В программе содержатся процедуры.
1) procedure sozdanie – процедура создания нового файла с информацией о результатах соревнований. Для начала нам необходимо ввести количество записей в таблице, а потом заполнить информацию. После окончания ввода данных процедура сама выходит в главное меню. Алгоритм описывающий данную процедуру реализован в виде блок-схемы 1 (рисунок 2.2.1).
2) procedure vivod – эта процедура предназначена для вывода на экран информации о результатах соревнований в виде таблицы. Алгоритм описывающий данную процедуру реализован в виде блок-схемы 2 (рисунок 2.2.2).
3) procedure dobavlenie – процедура добавления. Предназначена для добавления новых записей в таблицу. Процедура добавляет новые записи в конец файла. По окончании ввода процедура выходит в главное меню.
4) procedure poisk – процедура поиска предназначенная для поиска нужных записей в нужном поле таблицы. Перед нами появляется меню поиска, где мы выбираем нужный нам критерий поиска.
5) procedure sortirovka – процедура сортировки. Позволяет отсортировать нужное поле по возрастанию. Перед нами появляется меню в котором мы можем выбрать необходимое поле для сортировки.
6) procedure udalenie — процедура удаления. Предназначена для удаления необходимой нам строки. Перед нами появится меню, в котором мы должны ввести нужный номер строки для удаления.
Для запуска программы необходимо открыть файл «zadacha.pas» и нажать сочетание клавиш «Ctrl+F9».
В программе использовались переменные
fio, ych — stil строкового типа,
voz, rez — числового типа.

Рисунок 2.2.1- Блок-схема 1

Рисунок 2.2.2- Блок-схема 2

2.3 Практическая часть выполнения задачи на языке программирования Паскаль
program zadacha; {название программы}
uses crt; {подкличение модуля crt}
type mass=record
fio string; {Фамилия}
ych string; {учреждение}
stil string; {стиль плавания}
voz integer; {возраст}
rez real; {результат}
end;
var
chi mass; {имеет тип mass}
ch,ch1 array[1..25] of mass;
f file of mass;
i,m,j,k,n,nom integer;
filename string; {для имени файла}
procedure sozdanie; {процедура создания}
var
q integer;
begin
clrscr;
writeln(‘vvedite imya faila ‘); {ввод имени файла}
readln(Filename);
assign(f,Filename);
rewrite(f);
Writeln (‘vvedite kolichestvo zapisei’); {вводим количество записей}
Readln (n);
q =0;
for i =1 to n do
with ch[i] do
begin
q =q+1;
clrscr;
writeln(‘vvedite fio ‘,q,’-go uchasnika’); {заносим информацию об участнике}
readln(fio);
writeln(‘vvedite vozrast ‘,q,’-go uchasnika’);
readln(voz);
writeln(‘vvedite ycheregdenie’);
readln(ych);
writeln(‘vvedite stil plavaniya’);
readln(stil);
writeln(‘vvedite rezultat zapliva’);
readln(rez);
write(f,ch[i]);
end;
close(f); {закрываем файл}
end;
procedure vivod; {процедура вывода}
begin
clrscr;
writeln (‘vvedite imya sozdannogo faila’); {указываем имя созданного файла}
readln(filename);
assign (f,filename);
reset(f);
clrscr;
nom =0;
writeln(‘writeln(‘| # | FIO | VOZRAST | YCHEREGDENIE | STIL |REZYLTAT |’);
writeln(‘|’);
while not eof(f) do {начинаем выводить записи в таблицу}
with ch[i] do
begin
inc(i);
inc(nom);
read(f,ch[i]);
writeln(‘|’,nom 3,’|’,fio 17,’|’,voz 9,’|’,ych 15,’|’,stil 10,’|’,rez 9 1,’|’);
i =i+1;
end;
writeln(‘|’);
close(f); {закрыли файл}
readln;
clrscr;
end;
procedure dobavlenie; {процедура добавления}
begin
clrscr;
writeln (‘vvedite imya sozdannogo faila’); {ввод имени файла}
readln(filename);
assign (f,filename);
reset(f);
i =1;
while not eof(f) do
begin
read(f,ch[i]);
i =i+1;
end;
writeln(‘vvedite fio’); {начинаем заносит информацию об участнике}
readln(ch[i].fio);
writeln(‘vvedite voz ‘);
readln(ch[i].voz);
writeln(‘vvedite ycheregdenie obrazovaniya’);
readln(ch[i].ych);
writeln(‘vvedite stil plavaniya’);
readln(ch[i].stil);
writeln(‘vvedite rezultat zapliva’);
readln(ch[i].rez);
n =i;
close(f); {закрыли файл}
rewrite(f);
for i =1 to n do
write(f,ch[i]);
close(f);
end;
procedure poisk; {процедура поиска}
var e string;
n1,o integer;
l real;
begin
writeln(‘vibirete regim poiska ‘ ); {меню}
writeln(‘ ‘);
writeln(‘1 poisk po polu fio’);
writeln(‘2 poisk po polu vozrast’);
writeln(‘3 poisk po polu ycheregdenie’);
writeln(‘4 poisk po polu stil’);
writeln(‘5 poisk po polu rezultat’);
writeln;
readln(o);
clrscr;
if o=1 then begin {поиск по полю фио}
writeln (‘vvedite imya sozdannogo faila’);
readln(filename);
assign (f,filename);
reset(f);
i =1;
n =0;
while not eof(f) do
begin
read(f,ch[i]);
inc(i);
inc(n);
end;
close(f);
writeln(‘vvedite fio uchasnika’); {водим ФИО участника}
readln(e);
n1 =0;
for i =1 to n do
if ch[i].fio=e
then begin
n1 =n1+1;
ch1[n1] =ch[i];
end;
if n1<>0 then begin {вывод найденного участника}
writeln(‘||’);
writeln(‘| FIO | VOZRAST | YCHEREGDENIE | STIL |REZYLTAT |’);
writeln(‘||’);
for i =1 to n1 do
with ch1[i] do
begin
writeln(‘|’,fio 17,’|’,voz 9,’|’,ych 15,’|’,stil 10,’|’,rez 9 1,’|’);
end;
writeln(»);
end
else
writeln(‘zapis ne naidena ‘);
readln;
end;
if o=2 then begin {поиск по полю возраст}
writeln (‘vvedite imya sozdannogo faila’);
readln(filename);
assign (f,filename);
reset(f);
i =1;
n =0;
while not eof(f) do
begin
read(f,ch[i]);
inc(i);
inc(n);
end;
close(f);
writeln(‘vvedite vozrast uchasnika’); {вводим возраст}
readln(l);
n1 =0;
for i =1 to n do
if ch[i].voz=l
then begin
n1 =n1+1;
ch1[n1] =ch[i];
end;
if n1<>0 then begin {вывод}
writeln(‘||’);
writeln(‘| FIO | VOZRAST | YCHEREGDENIE | STIL |REZYLTAT |’);
writeln(‘|’);
for i =1 to n1 do
with ch1[i] do
begin
writeln(‘|’,fio 17,’|’,voz 9,’|’,ych 15,’|’,stil 10,’|’,rez 9 1,’|’);
end;
writeln(‘||’);
end
else
writeln(‘zapis ne naidena ‘);
readln;
end;
if o=3 then begin {поиск по полю учреждение}
writeln (‘vvedite imya sozdannogo faila’);
readln(filename);
assign (f,filename);
reset(f);
i =1;
n =0;
while not eof(f) do
begin
read(f,ch[i]);
inc(i);
inc(n);
end;
close(f);
writeln(‘vvedite ycheregdenie’); {введите учреждение }
readln(e);
n1 =0;
for i =1 to n do
if ch[i].ych=e
then begin
n1 =n1+1;
ch1[n1] =ch[i];
end;
if n1<>0 then begin {вывод}
writeln(‘|’);
writeln(‘| FIO | VOZRAST | YCHEREGDENIE | STIL |REZYLTAT |’);
writeln(‘||’);
for i =1 to n1 do
with ch1[i] do
begin
writeln(‘|’,fio 17,’|’,voz 9,’|’,ych 15,’|’,stil 10,’|’,rez 9 1,’|’);
end;
writeln(‘|’);
end
else
writeln(‘zapis ne naidena ‘);
readln;
end;
if o=4 then begin {поиск по полю стиль}
writeln (‘vvedite imya sozdannogo faila’);
readln(filename);
assign (f,filename);
reset(f);
i =1;
n =0;
while not eof(f) do
begin
read(f,ch[i]);
inc(i);
inc(n);
end;
close(f);
writeln(‘vvedite stil uchasnika’); {ввод стиля}
readln(e);
n1 =0;
for i =1 to n do
if ch[i].stil=e
then begin
n1 =n1+1;
ch1[n1] =ch[i];
end;
if n1<>0 then begin {вывод}
writeln(‘||’);
writeln(‘| FIO | VOZRAST | YCHEREGDENIE | STIL |REZYLTAT |’);
writeln(‘|’);
for i =1 to n1 do
with ch1[i] do
begin
writeln(‘|’,fio 17,’|’,voz 9,’|’,ych 15,’|’,stil 10,’|’,rez 9 1,’|’);
end;
writeln(‘||’);
end
else
writeln(‘zapis ne naidena ‘);
readln;
end;
if o=5 then begin {поиск по полю результат}
writeln (‘vvedite imya sozdannogo faila’);
readln(filename);
assign (f,filename);
reset(f);
i =1;
n =0;
while not eof(f) do
begin
read(f,ch[i]);
inc(i);
inc(n);
end;
close(f);
writeln(‘vvedite preblezitelnii rezyltat uchastnika’); {ввод результата }
readln(l);
n1 =0;
for i =1 to n do
if (ch[i].rez<=l+0.5) and (ch[i].rez>=l-0.5)
then begin
n1 =n1+1;
ch1[n1] =ch[i];
end;
if n1<>0 then begin {вывод}
writeln(‘||’);
writeln(‘| FIO | VOZRAST | YCHEREGDENIE | STIL |REZYLTAT |’);
writeln(‘||’);
for i =1 to n1 do
with ch1[i] do
begin
writeln(‘|’,fio 17,’|’,voz 9,’|’,ych 15,’|’,stil 10,’|’,rez 9 1,’|’);
end;
writeln(‘||’);
end
else
writeln(‘zapis ne naidena ‘);
readln;
end;
end;
procedure sortirovka; {процедура сортировка}
var
p integer;
begin
clrscr;
writeln(‘vibirete regim sortirovki ‘ ); {меню сортировки}
writeln(‘ ‘);
writeln(‘1 sortirovka po polu fio’);
writeln(‘2 sortirovka po polu vozrast’);
writeln(‘3 sortirovka po polu ycheregdenie’);
writeln(‘4 sortirovka po polu stil’);
writeln(‘5 sortirovka po polu rezultat’);
writeln;
readln(p);
if p=1 then begin {сортировка по полю фио}
writeln (‘vvedite imya sozdannogo faila’); {вводим имя файла}
readln(filename);
assign (f,filename);
reset(f);
for i =1 to n do
read(f,ch[i]);
close(f);
for i =1 to n-1 do
for j =i+1 to n do
if ch[i].fio>ch[j].fio then {сравниваем 2 строки}
begin
chi =ch[i]; {проводим перестановку}
ch[i] =ch[j];
ch[j] =chi;
end;
rewrite(f);
for i =1 to n do
write(f,ch[i]);
close(f);
end;
if p=2 then begin {сортировка по полю возраст}
writeln (‘vvedite imya sozdannogo faila’);
readln(filename);
assign (f,filename);
reset(f);
for i =1 to n do
read(f,ch[i]);
close(f);
for i =1 to n-1 do
for j =i+1 to n do
if ch[i].voz>ch[j].voz then
begin
chi =ch[i];
ch[i] =ch[j];
ch[j] =chi;
end;
rewrite(f);
for i =1 to n do
write(f,ch[i]);
close(f);
end;
if p=3 then begin {сортировка по полю учреждение}
writeln (‘vvedite imya sozdannogo faila’);
readln(filename);
assign (f,filename);
reset(f);
for i =1 to n do
read(f,ch[i]);
close(f);
for i =1 to n-1 do
for j =i+1 to n do
if ch[i].ych>ch[j].ych then
begin
chi =ch[i];
ch[i] =ch[j];
ch[j] =chi;
end;
rewrite(f);
for i =1 to n do
write(f,ch[i]);
close(f);
end;
if p=4 then begin {сортировка по полю стиль}
writeln (‘vvedite imya sozdannogo faila’);
readln(filename);
assign (f,filename);
reset(f);
for i =1 to n do
read(f,ch[i]);
close(f);
for i =1 to n-1 do
for j =i+1 to n do
if ch[i].stil>ch[j].stil then
begin
chi =ch[i];
ch[i] =ch[j];
ch[j] =chi;
end;
rewrite(f);
for i =1 to n do
write(f,ch[i]);
close(f);
end;
if p=5 then begin {сортировка по полю результат}
writeln (‘vvedite imya sozdannogo faila’);
readln(filename);
assign (f,filename);
reset(f);
for i =1 to n do
read(f,ch[i]);
close(f);
for i =1 to n-1 do
for j =i+1 to n do
if ch[i].rez>ch[j].rez then
begin
chi =ch[i];
ch[i] =ch[j];
ch[j] =chi;
end;
rewrite(f);
for i =1 to n do
write(f,ch[i]);
close(f);
end;
end;
procedure udalenie; {процедура удаления}
var m integer;
begin
clrscr;
writeln (‘vvedite imya sozdannogo faila’); {вводим имя файла}
readln(filename);
assign (f,filename);
reset(f);
i =1;
n =0;
while not eof(f) do
begin
read(f,ch[i]);
i =i+1;
n =n+1;
end;
writeln(‘vvedite nomer udaliaemoi zapisi’); {вводим номер записи для удаления}
readln(m);
for i =m to n do
begin {удаляем}
ch[i].fio =ch[i+1].fio;
ch[i].voz =ch[i+1].voz;
ch[i].ych =ch[i+1].ych;
ch[i].stil =ch[i+1].stil;
ch[i].rez =ch[i+1].rez;
end;
n =n-1;
close(f);
rewrite(f);
for i =1 to n do
write(f,ch[i]);
close(f);
writeln(‘zapis udalena’);
readln;
end;
begin {тело основной программы}
while True do
begin {меню программы}
clrscr;
Writeln (» 20,’ *Menu* ‘);
Writeln (» 20,’||’);
Writeln (» 20,’| 1- sozdanie novogo faila |’);
Writeln (» 20,’| 2- vivod dannih |’);
Writeln (» 20,’| 3- dobavlenie |’);
Writeln (» 20,’| 4- poisk |’);
Writeln (» 20,’| 5- sortirovka |’);
Writeln (» 20,’| 6- udalenie zapisei |’);
Writeln (» 20,’| 0- vihod |’);
Writeln (» 20,’||’);
Writeln;
Writeln(‘vi mojete rabotat s uje sozdanim failom «sor» ‘);
Writeln(»);
Readln (m);
case m of
1 sozdanie;
2 vivod;
3 dobavlenie;
4 poisk;
5 sortirovka;
6 udalenie;
0 exit;
else begin Writeln(‘ne verno!’);
readln;
end;
end;
end;
end.
2.4 Результаты работы программы
Для запуска программы необходимо открыть файл «zadacha.pas» и нажать на клавишу «F9»(в программе «Pascal ABC»). Появится главное меню в котором мы можем выбрать необходимое действие над файлом (рисунок 2.4.1).

Рисунок 2.4.1 — основное меню
В пункте первом мы создаем новый файл (рисунок 2.4.2).

Рисунок 2.4.2 — создание файла
В поле «ФИО» необходимо ввести фамилию имя и отчество участника.
В поле «Возраст» нужно ввести возраст участника, только цифрами
В поле «Учреждение» необходимо ввести учреждение образования в котором обучается участник.
В поле «Стиль» необходимо ввести стиль плавания участника.
В поле «Результат» нужно ввести результат участника проплывшего дистанцию.
Выбрав «вывод данных», программа выводит данные в виде таблицы из указанного файла (рисунок 2.4.3).

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

Рисунок 2.4.4 — меню поиска
Выбрав пункт «сортировка», появляется меню в котором можно отсортировать указанный файл по необходимому полю (рисунок 2.4.5.).

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

ЗАКЛЮЧЕНИЕ
Паскаль хорош тем, что в нем можно создавать прикладные программы, работающие в реальном времени, предлагая богатую среду программирования, которая делает разработку программ более производительной и более приятной. Именно по этому я выбрал данный язык программирования для своей курсовой работы.
Подобрал и изучил материал по теме «Строковые и символьные типы данных».
Реализовал программу «Результаты соревнований» на языке программирования Паскаль. Программа выполняет следующие действия создание файла, просмотр содержимого файла которое выводится в виде таблицы, дополнение файла новыми записями, поиск и сортировка по любому указанному полю, удаление любой строки файла.
Для удобства и простоты использования, программа реализована в виде меню. Я постарался сделать так, чтобы любому пользователю было удобно и практично использовать мою программу.
Её можно использовать для записей результатов соревнований по плаванию, которые будут храниться в типизированных файлах. Пользователь сможет легко заносить данные в таблицы, редактировать содержимое, удалять не нужные записи, искать и сортировать по необходимому полю.

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
1. Павловская, Т. А. Паскаль. Программирование на языке Турбо Паскаль / Т.А. Павловская. — СПб. – Петербург 2007. – 317с.
2. Алиев, Ю.А. Практикум по алгоритмизации и программированию на языке Паскаль/ Ю.А. Алиев. – В. – Питер 2007. – 527с
3. Аронов, В.В. Turbo Pascal/В.В. Аронов. – БХВ — Петербург, 2004 . – 156с.
4. Алексеев, Е.Р. Турбо Паскаль 7.0/ Е.Р. Алексеев, О.В. Чесноков а.- М. НТ Пресс, 2007.– 83с.
5. Паскаль [Электронный ресурс].- Типы данных. – Режим доступа http //www.pascal.ru. – Дата доступа 02.06.2010

«