Смекни!
smekni.com

Разработка информационно-поисковой системы "Результаты соревнований" на языке программирования Паскаль (стр. 2 из 3)

Нечеткие сравнения на «меньше или равно» и «больше или равно»

Фактически «меньше или равно» означает «не больше», а «больше или равно» означает «не меньше». Соответственно производится сравнение на предмет «больше» или «меньше» и результат инвертируется. [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 Практическая часть выполнения задачи на языке программирования Паскаль

programzadacha; {название программы}

usescrt; {подкличение модуля 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('|');

whilenoteof(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('vveditefio'); {начинаем заносит информацию об участнике}

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;

ifn1<>0 thenbegin{вывод найденного участника}

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;

ifp=2 thenbegin{сортировка по полю возраст}

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