Схема алгоритма программы




ЗАДАНИЕ

на курсовую работу (проект) студента

Пашкевича Дмитрия Валерьевича

Группа ПС-172

 

1 Дисциплина (специализация)

______Программирование на языках высокого уровня _________________

 

2 Тема работы (проект)

Программирование операций ввода, удаления, корректировки, хранения и использования данных

3 Срок сдачи студентом законченной работы ______ 31 мая ___________2011г.

 

4 Перечень вопросов, подлежащих разработке

4.1 Разработка системы меню и укрупненного алгоритма

4.2. Разработка структуры данных, способа их представления и хранения

4.3. Программирование ввода и сохранения данных

4.4. Программирование корректировки и удаления данных

4.5. Программирование отчетов

4.6. Оформление пояснительной записки

 

5 Календарный план

 

Наименование разделов курсовой работы (проекта) Срок выполнения разделов работы (проекта) Отметка о выполнении руководителя
Разработка системы меню и укрупненного алгоритма 09 марта 2011 г.  
Разработка структуры данных, способа их представления и хранения 23марта 2011 г.  
Программирование ввода и сохранения данных 06 апреля 2011 г.  
Программирование корректировки и удаления данных 20 апреля 2011 г.  
Программирование отчетов 04 мая 2011 г.  
Комплексная отладка 21 мая 2011 г.  
Оформление пояснительной записки 31 мая 2011 г.  

 

Руководитель работы (проекта)____________________/Ярош Елена Семеновна /

(подпись)

Студент ________________________________/ Пашкевич Дмитрий Валерьевич /

(подпись)

 

 

Содержание

 

Описание программы 3

Схема алгоритма программы 9

Текст программы 10

Примеры выполнения программы 24

Список литературы 27

 

Описание программы

 

Программа «kursovaya.pas» написана на языке Pascal. Она называется «Turisticheskie Marshruti» и представляет собой программу для работы с базой данных, состоящей из города, длительности, вида транспорта, месяца и дня начала поездки, стоимости. Программа предназначена для просмотра, редактирования базы данных (ввод, добавление, удаление, изменение записей и использование данных) и сортировки базы данных по одному из заданных полей.

Подключённые библиотеки: CRT – библиотека подключена для использования процедур clrscr (очистка экрана) и textcolor (изменение цвета шрифта). Удаляя лишнюю информацию с экрана и устанавливая различные цвета текста, эти процедуры помогут обеспечить дружественный интерфейс и облегчат пользователю навигацию внутри программы.

 

Объявленные глобальные переменные:

· F – файл типа text.

· Punkt – номер выделенного пункта меню.

· Ch – введенный символ.

· x,y – координаты первой строки меню.

· b – логическая переменная, предназначенная для вызова процедур.

· menu – массив в котором хранятся названия пунктов меню.

Для облегчения чтения кода и более лёгкого написания программа разбита на процедуры.

 

Процедура CreateFail (создание файла)

 

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

 

Объявленные локальные переменные:

· prog – переменная типа programma, для добавления/чтения записи в файл.

· k – счетчик записей.

· code – принимает значение либо от 0 до 1. Для работы с процедурой Val.

· P, l – переменные типа char для отслеживания нажатых клавиш.

· M – строка для проверки корректности ввода данных.

 

Процедура Chek (проверка)

 

Процедура проверяет надо создавать файл или нет. Если файл нужно создать, то следует нажать клавишу ‘y’, если нажата другая клавиша, то произойдет возврат в главное меню.

 

Объявленные локальные переменные:

· M – переменная типа char, для отслеживания нажатой клавиши.

 

Процедура OpenFail (открытие файла)

 

Если файл создан, то он будет открыт. Если файл не создан, то программа выдаст сообщение ‘Fail eshe ne sozdan. Vernites v menu programmi’.

 

Объявленные локальные переменные:

· U,p – переменные типа Char служат для отслеживания нажатых клавиш.

· Sh – для отслеживания количества введенных записей.

Процедура ReadFail (Просмотр файла)

 

В данной процедуре вызывается процедура OpenFail – для открытия, а после выводится содержимое файла.

 

Объявленные локальные переменные:

· U,p – переменные типа Char служат для отслеживания нажатых клавиш.

· Sh – отслеживания количества введенных записей.

Процедура Zamena (Изменение записи)

 

При вызове процедуры открывается файл, далее требуется ввести номер записи, который нужно удалить. Если такого номера записи не существует, то на экран выдается “The Fail does not contain record with this number”. Если же все правильно, то потребует ввести новую информацию.

 

Объявленные локальные переменные:

· P,u – переменные типа char для отслеживания нажатых клавиш.

· M – переменная типа string для проверки корректности ввода данных.

· N – для работы с процедурой Val. (тип был описан ранее)

· Code – для работы с процедурой Val. (тип был описан ранее)

Процедура Add (добавление записи в файл)

 

Файл открывается для добавления новой информации о туристических маршрутах. Информация добавляется в конец файла.

 

Объявленные локальные переменные:

· N – для работы с процедурой Val. (тип был описан ранее)

· Code – для работы с процедурой Val. (тип был описан ранее)

· P,u – переменные типа char для отслеживания нажатых клавиш.

Процедура Del_N (удаление записи)

 

Запись удаляется по номеру, который вводит пользователь, после вызова данной процедуры. Если номера, который ввел пользователь – нет, то на экран выдается ошибка “Zapisi s takim nomerom v faile ne sushestvuet”.

 

Объявленные локальные переменные:

· N – для работы с процедурой Val. (тип был описан ранее)

· Code – для работы с процедурой Val. (тип был описан ранее)

· U,c – переменные типа char для отслеживания нажатых клавиш.

· St – переменная типа string, для проверки корректности ввода данных.

· I – переменная типа integer, счетчик, для сдвига записей в фале после удаления.

Процедура SortGor (сортировка по полю город)

 

В программе сразу задано поле “Город”, требуется лишь в главном меню выбрать пункт, для сортировки по полю город.

 

Объявленные локальные переменные:

· St, a, b – переменные типа prog, служат для обмена строк в файле.

· u – переменные типа char для отслеживания нажатых клавиш.

· I, j – переменные типа longint, служат для прохода по строка файла.

 

Процедура SortDlit (сортировка по полю длительность)

 

В программе сразу задано поле “Длительность”, требуется лишь в главном меню выбрать пункт, для сортировки по полю длительность.

 

Объявленные локальные переменные:

· St, a, b – переменные типа prog, служат для обмена строк в файле.

· u – переменные типа char для отслеживания нажатых клавиш.

· I, j – переменные типа longint, служат для прохода по строка файла.

Процедура SortVidTran (сортировка по полю вид транспорта)

 

В программе сразу задано поле “Вид транспорта”, требуется лишь в главном меню выбрать пункт, для сортировки по полю вид транспорта.

 

Объявленные локальные переменные:

· St, a, b – переменные типа prog, служат для обмена строк в файле.

· u – переменные типа char для отслеживания нажатых клавиш.

· I, j – переменные типа longint, служат для прохода по строка файла.

Процедура SortMes (сортировка по полю месяц)

 

В программе сразу задано поле “Месяц”, требуется лишь в главном меню выбрать пункт, для сортировки по полю месяц.

 

Объявленные локальные переменные:

· St, a, b – переменные типа prog, служат для обмена строк в файле.

· u – переменные типа char для отслеживания нажатых клавиш.

· I, j – переменные типа longint, служат для прохода по строка файла.

Процедура SortDen (сортировка по полю день)

 

В программе сразу задано поле “День”, требуется лишь в главном меню выбрать пункт, для сортировки по полю день.

 

Объявленные локальные переменные:

· St, a, b – переменные типа prog, служат для обмена строк в файле.

· u – переменные типа char для отслеживания нажатых клавиш.

· I, j – переменные типа longint, служат для прохода по строка файла.

Процедура SortStoimost (сортировка по полю стоимость)

 

В программе сразу задано поле “Стоимость”, требуется лишь в главном меню выбрать пункт, для сортировки по полю стоимость.

 

Объявленные локальные переменные:

· St, a, b – переменные типа prog, служат для обмена строк в файле.

· u – переменные типа char для отслеживания нажатых клавиш.

· I, j – переменные типа longint, служат для прохода по строка файла.

Процедура marnevstzad (вывод маршрута не выше заданной стоимости)

 

После вызова процедуры пользователю нужно ввести требуемую стоимость. Нажать ‘Enter’ и на экран выведутся все маршруте со стоимостью не выше заданной.

 

Объявленные локальные переменные:

· u – переменные типа char для отслеживания нажатых клавиш.

· Code – для работы с процедурой Val. (тип был описан ранее)

· M – типа string, служит для проверки корректности введенных данных.

· Ukstoim – переменная типа integer служит для отслеживания требуемой стоимости.

· K – переменная типа integer, для отслеживания нулевого количества записей.

 

Процедура mardlit (вывод маршрута с длительностью не ниже заданной)

 

После вызова процедуры, пользователь вводит требуемую длительность. Нажать ‘Enter’ и на экране появятся все маршруты с длительностью не ниже заданной.

 

Объявленные локальные переменные:

· u – переменные типа char для отслеживания нажатых клавиш.

· Code – для работы с процедурой Val. (тип был описан ранее)

· M – типа string, служит для проверки корректности введенных данных.

· Ukdlit – переменная типа longint служит для отслеживания требуемой длительности.

· K – переменная типа integer, для отслеживания нулевого количества записей.

Процедура MenuToScr (процедура, которая выводит меню на экран)

 

Процедура вызывается сразу после запуска программы. Результат ее выполнения – пункты меню, которые увидит пользователь.

Объявленные локальные переменные:

· I – переменная типа integer, для отслеживания количества строк меню.

 

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

 

Программа начинается с очистки экрана, после чего выполняется связывание переменной F с именем файла. Далее массив menu заполняется названиями пунктов меню. X и Y – устанавливают координаты первой строчки меню. Далее вызывается процедура MenuToScr – для отрисовки меню на экране. Затем пользователь может перемещаться по меню с помощью стрелок вверх и вниз после запуска цикла repeat.

1. “Create new fail”, служит для создания файла базы данных.

2. “Prosmotr”, слижит для просмотра содержимого файла.

3. “Uslovie #1”, служит для вывода маршрутов со стоимостью не выше заданной.

4. “Uslovie #2”, служит для вывода маршрутов, с длительность не ниже заданной.

5. “Redaktirovanie”, служит для изменения уже существующей записи.

6. “Dobavit Zapis”, служит для добавления новой информации о маршрутах.

7. “Udalenie Zapisi”, служит для удаления записи по ее номеру.

8. “Sort Gooroda”, служит для сортировки файла по полю город.

9. “Sort Dlitelnosti”, служит для сортировки файла по полю длительность.

10. “Sort Vidtransporta”, служит для сортировки файла по полю вид транспорта.

11. “Sort Mesiac”, служит для сортировки файла по полю месяц.

12. “Sort Den”, служит для сортировки файла по полю день.

13. “Sort stoimost”, служит для сортировки файла по полю стоимость.

14. “Exit”, программа завершается, если пользователь выбрал пункт “EXIT” либо нажал клавишу “ESC”.

 

 

Схема алгоритма программы

Текст кода программы

 

Program TuristicheskieMarshruti;

Uses Crt;

Type programma= record {Zapis, sootvetstvuyushaya programme}

Gorod:string; {Nazvanie Goroda}

Dlitelnost:longint; {Dlitelnost marshruta}

vidtran:string; {Vid transporta}

mes,den:longint; {Mes i den nachala}

stoimost:longint; {Stoimost poezdki}

end;

fail= file of programma;

 

Const

NORM=14; { cvet nevydelennogo punkta }

SEL=32; { cvet vydelennogo punkta }

N=14;

Var

st,st1:string;

menu: array [1..N] of string[16]; { nazvaniya punktov menu }

punkt:integer; { nomer vydelennogo punkta }

ch:char; { vvedenniy simvol }

i,x,y:integer; { koordinaty pervoy stroki menu }

ff,b:boolean;

 

{---Procedura sozdaniya faila---}

 

Procedure CreateFile(var f:fail);

var prog:programma; k,code:integer; l:char; m:string;

Begin

k:=0;

clrscr;

rewrite(f); {Otkrytie faila dlya chteniya}

writeln(' Enter the information about touristic root');

writeln(' Press any key to start entering the information');

writeln(' or <Esc> to exit to the main menu ');

writeln;

l:=readkey;

case l of

#27: exit;

end;

Repeat

with prog do

Begin

k:=k+1;

clrscr;

writeln;

Repeat

write (' Gorod (Ne pustoe znachenie): '); readln(gorod);

until (gorod <> '');

Repeat

write(' dlitelnost (1 to 31): '); readln(m);

val(m,dlitelnost,code);

until (code=0) and (dlitelnost > 0) and (dlitelnost <= 31);

Repeat

writeln('Vid Transporta (Ne pustoe znachenie):');

readln(vidtran);

until (vidtran <> '');

Repeat

write(' Mesiac (1 to 12): ');

readln(m);

val(m,mes,code);

until (code=0) and (mes<=12) and (mes>=1);

Repeat

write(' Den (1 to 31): ');

readln(m);

val(m,den,code);

until (code=0) and (den<=31) and (den>=1);

Repeat

write(' Stoimost (0 to 256000): '); readln(m);

val(m,stoimost,code);

until (code = 0) and (stoimost >=0) and (stoimost <=256000);

writeln;

writeln('--------------------------------------------------------------------------------');

writeln(' Record ',k,' is succesfully added.');

writeln(' Press any key to continue entering information');

writeln(' or <Esc> to exit to the main menu.');

end;

write(f,prog);

until readkey=#27;

close(f);

exit;

end;

{---Procedurka proverki nado sozdavat fail ili net---}

 

procedure Check(var f:fail);

var m:char;

Begin

clrscr;

writeln(' Do you really want to rewrite file?');

writeln(' Press "Y" to rewrite file or any other key to exit');

m:=readkey;

case m of

'y':CreateFile(f);

end;

end;

 

{Procedura optkritia faila}

procedure OpenFile(var f:fail; var b:boolean);

Var

u:char;

Begin

b:=true;

{$I-} reset(f); {$I+}

if IOResult<>0 then

Begin

b:=false;

writeln(' File eshe ne sozdan. Vernites v menu programmy');

readln;

CreateFile(f);

end;

end;

 

{---Procedura prosmotra faila---}

 

procedure ReadFile(var f:fail);

var prog:programma;

sh:longint;

u,p:char;

Begin

clrscr;

sh:=0;

OpenFile(f,b);

writeln(' Full list of the touristic roots');

writeln(' Press <Esc> to exit to the main menu');

writeln(' Press "P" dla ocherednogo vivoda');

writeln;

while not eof(f) do

Begin

read(f,prog);

sh:=sh+1;

with prog do

begin writeln('__________Zapis Nomer: ',sh,'__________');

writeln;

writeln('Nazvanie goroda: ',gorod);

writeln('Dlitelnost: ',dlitelnost);

writeln('Vid transporta: ',vidtran);

writeln('Mesiac: ',mes);

writeln('Den: ',den);

writeln('Stoimost: ',stoimost);

writeln();

p:=readkey;

case p of

#27: exit;

end;

end;

end;

u:=readkey;

case u of

#27: exit;

end;

close(f);

end;

 

{---Procedura izmenenia zapisi---}

 

procedure Zamena(var f:fail);

var n,code:integer;

prog:programma;

m:string;

u:char;

Begin

clrscr;

OpenFile(f,b);

write(' Chose the number of a record which you want to edit. n= ');

Repeat

readln(m);

val(m,n,code);

until (code=0) and (n<=32767) and (n>0);

if (n<1) or (filesize(f)<n) then

Begin

writeln(' The file does not contain record with this number!');

readln;

exit;

end;

writeln(' Enter new information about Touristic roots:');

writeln;

with prog do

Begin

Repeat

write (' Gorod (Ne pustoe znachenie): '); readln(gorod);

until (gorod <> '');

Repeat

write(' dlitelnost (1 to 31): '); readln(m);

val(m,dlitelnost,code);

until (code=0) and (dlitelnost > 0) and (dlitelnost <= 31);

Repeat

writeln('Vid Transporta (Ne pustoe):');

readln(vidtran);

until (vidtran <> '');

Repeat

write(' Mesiac (1 to 12): ');

readln(m);

val(m,mes,code);

until (code=0) and (mes<=12) and (mes>=1);

Repeat

write(' Den (1 to 31): ');

readln(m);

val(m,den,code);

until (code=0) and (den<=31) and (den>=1);

Repeat

write(' Stoimost (1 to 256000): '); readln(m);

val(m,stoimost,code);

until (code = 0) and (stoimost >=1) and (stoimost <=256000);

writeln;

writeln(' The record was edited. Press <ESC> to exit to the main menu');

end;

seek(f,n-1);

write(f,prog);

close(f);

u:=readkey;

case u of

#27: exit;

end;

readln;

end;

 

{---Procedura dobavleniya zapisi v fail---}

 

procedure Add(var f:fail);

var prog:programma;

m:string;

code:integer;

u:char;

Begin

clrscr;

OpenFile(f,b);

writeln(' Enter the information about a Touristic roots which you want to add:');

writeln;

with prog do

Begin

Repeat

write (' Gorod (Ne pustoe): '); readln(gorod);

until (gorod <> '');

Repeat

write(' Dlitelnost (1 to 31): '); readln(m);

val(m,dlitelnost,code);

until (code=0) and (dlitelnost > 0) and (dlitelnost <= 31);

Repeat

writeln('Vid Transporta (Ne pustoe):');

readln(vidtran);

until (vidtran <> '');

Repeat

write(' Mesiac (1 to 12): ');

readln(m);

val(m,mes,code);

until (code=0) and (mes<=12) and (mes>=1);

Repeat

write(' Den (1 to 31): ');

readln(m);

val(m,den,code);

until (code=0) and (den<=31) and (den>=1);

Repeat

write(' Stoimost (1 to 256000): '); readln(m);

val(m,stoimost,code);

until (code = 0) and (stoimost >=1) and (stoimost <=256000);

writeln;

writeln(' The record was added. Press <ESC> to exit to the main menu');

end;

seek(f,filesize(f));

write(f,prog);

close(f);

u:=readkey;

case u of

#27: exit;

end;

readln;

end;

 

{Procedura udalenia zapisi is faila}

 

procedure Del_N(var f:fail); {Udalenie zapisi po nomeru}

var n,i,code:integer;

c:char;

st:string;

prog:programma;

u:char;

Begin

clrscr;

write(' Vvedite nomer zapisi kotoruu hotite udalit. n=');

Repeat

readln(st); {Vvodim nomer zapisi}

val(st,n,code);

until (code=0) and (n<=255000) and (n>0);

reset(f);

if (filesize(f)<n) or (n<0) then

Begin

writeln(' Zapisi s takim nomerom v faile ne sushestvuet');

close(f);

write(' Press <Enter> to exit to the Global menu');

readln;

exit;

end;

if n=filesize(f) then {Esli zapis poslednyaa}

Begin

seek(f,filesize(f)-1);

truncate(f);

close(f);

write(' Zapis bila udalena. Press <ESC> to exit to the Global menu');

readln;

exit;

end;

seek(f,n-1); {esli ne poslednyaa}

for i:=n-1 to filesize(f)-2 do

Begin

seek(f,i+1);

read(f,prog);

seek(f,i);

write(f,prog);

end;

seek(f,filesize(f)-1);

truncate(f);

close(f);

write(' The record was successfully deleted. Press <ESC> to exit to the main menu');

u:=readkey;

case u of

#27: exit;

end;

readln;

end;

 

{---Procedura sortirovki polia Gorod---}

procedure SortGor(var f:fail);

var st,a,b,prog:programma;

I,j:longint;

u:char;

Begin

clrscr;

writeln(' Sortirovka po polu Gorod ');

writeln;

writeln('Fail otsortirovan');

writeln('Press <ESC> to exit');

writeln;

writeln('vernites v Menu -- <Prosmotr>');

reset(f);

for i:=0 to filesize(f)-2 do

for j:=i+1 to filesize(f)-1 do

Begin

seek(f,i);

read(f,a);

seek(f,j);

read(f,b);

if a.gorod>b.gorod then

Begin

st:=a;

a:=b;

b:=st;

seek(f,i);

write(f,a);

seek(f,j);

write(f,st);

end;

end;

close(f);

u:=readkey;

case u of #27: exit; end;

readln;

end;

 

{---Procedura sortirovki polia Dlitelnost---}

procedure SortDlit(var f:fail);

var st,a,b,prog:programma;

I,j:longint;

u:char;

Begin

clrscr;

writeln(' Sortirovka po polu DLITELNOST ');

writeln;

writeln('Fail otsortirovan');

writeln('Press <ESC> to exit');

writeln;

writeln('vernites v Menu -- <Prosmotr>');

reset(f);

for i:=0 to filesize(f)-2 do

for j:=i+1 to filesize(f)-1 do

Begin

seek(f,i);

read(f,a);

seek(f,j);

read(f,b);

if a.dlitelnost < b.dlitelnost then

Begin

st:=a;

a:=b;

b:=st;

seek(f,i);

write(f,a);

seek(f,j);

write(f,st);

end;

end;

close(f);

u:=readkey;

case u of #27: exit; end;

readln;

end;

 

{---Procedura sortirovki polia vid transporta---}

procedure SortVidTran(var f:fail);

var st,a,b,prog:programma;

I,j:longint;

u:char;

Begin

clrscr;

writeln(' Sortirovka po polu VID TRANSPORTA ');

writeln;

writeln('Fail otsortirovan');

writeln('Press <ESC> to exit');

writeln;

writeln('vernites v Menu -- <Prosmotr>');

reset(f);

for i:=0 to filesize(f)-2 do

for j:=i+1 to filesize(f)-1 do

Begin

seek(f,i);

read(f,a);

seek(f,j);

read(f,b);

if a.vidtran > b.vidtran then

Begin

st:=a;

a:=b;

b:=st;

seek(f,i);

write(f,a);

seek(f,j);

write(f,st);

end;

end;

close(f);

u:=readkey;

case u of #27: exit; end;

readln;

end;

 

{---Procedura sortirovki polia mesiac---}

procedure SortMes(var f:fail);

var st,a,b,prog:programma;

I,j:longint;

u:char;

Begin

clrscr;

writeln(' Sortirovka po polu MESIAC ');

writeln;

writeln('Fail otsortirovan');

writeln('Press <ESC> to exit');

writeln;

writeln('vernites v Menu -- <Prosmotr>');

reset(f);

for i:=0 to filesize(f)-2 do

for j:=i+1 to filesize(f)-1 do

Begin

seek(f,i);

read(f,a);

seek(f,j);

read(f,b);

if a.mes < b.mes then

Begin

st:=a;

a:=b;

b:=st;

seek(f,i);

write(f,a);

seek(f,j);

write(f,st);

end;

end;

close(f);

u:=readkey;

case u of #27: exit; end;

readln;

end;

 

{---Procedura sortirovki polia den---}

procedure SortDen(var f:fail);

var st,a,b,prog:programma;

I,j:longint;

u:char;

Begin

clrscr;

writeln(' Sortirovka po polu DEN ');

writeln;

writeln('Fail otsortirovan');

writeln('Press <ESC> to exit');

writeln;

writeln('vernites v Menu -- <Prosmotr>');

reset(f);

for i:=0 to filesize(f)-2 do

for j:=i+1 to filesize(f)-1 do

Begin

seek(f,i);

read(f,a);

seek(f,j);

read(f,b);

if a.den < b.den then

Begin

st:=a;

a:=b;

b:=st;

seek(f,i);

write(f,a);

seek(f,j);

write(f,st);

end;

end;

close(f);

u:=readkey;

case u of #27: exit; end;

readln;

end;

 

{---Procedura sortirovki polia stoimost---}

procedure SortStoimost(var f:fail);

var st,a,b,prog:programma;

I,j:longint;

u:char;

Begin

clrscr;

writeln(' Sortirovka po polu STOIMOST ');

writeln;

writeln('Fail otsortirovan');

writeln('Press <ESC> to exit');

writeln;

writeln('vernites v Menu -- <Prosmotr>');

reset(f);

for i:=0 to filesize(f)-2 do

for j:=i+1 to filesize(f)-1 do

Begin

seek(f,i);

read(f,a);

seek(f,j);

read(f,b);

if a.stoimost < b.stoimost then

Begin

st:=a;

a:=b;

b:=st;

seek(f,i);

write(f,a);

seek(f,j);

write(f,st);

end;

end;

close(f);

u:=readkey;

case u of #27: exit; end;

readln;

end;

 

{--Vivod marshrutov ne vishe zadannoy stoimosti--}

 

procedure marnevstzad(var f:fail);

var k:integer;

ukstoim:longint;

m:string;

code:longint;

prog:programma;

u:char;

Begin

clrscr;

OpenFile(f,b);

Repeat

writeln('Vvedite trebuemuu stoimost(1 to 256000): ');

readln(m);

val(m,ukstoim,code);

until (code = 0) and (ukstoim>0) and (ukstoim<=256000);

writeln('Vse Marshruti ne vishe zadannoi stoimosty');

writeln();

writeln('Dlia vihoda najmite "esc"');

writeln('__________________________________________');

k:=0;

while not eof(f) do begin

read(f,prog);

with prog do begin

if stoimost > ukstoim then begin k:=k+1;

writeln('Gorod: ',gorod);

writeln('Dlitelnost: ',dlitelnost);

writeln('vidtransporta: ',vidtran);

writeln('Den: ',den);

writeln('Mesiac: ',mes);

writeln('Stoimost:',stoimost);

writeln('________________________________________________');

end;

end;

end;

if k = 0 then begin writeln('Takih marshrutov net'); writeln('__________________________________________'); end;

u:=readkey;

case u of #27: exit; end;

readln;

end;

{--Vivod marshrutov s dlitelnostiu ne nige zadannoi--}

 

procedure mardlit(var f:fail);

var k:integer;

ukdlit:longint;

m:string;

code:longint;

prog:programma;

u:char;

Begin

clrscr;

OpenFile(f,b);

Repeat

writeln('Vvedite trebuemuu dlitelnost: ');

readln(m);

val(m,ukdlit,code);

until (code = 0) and (ukdlit>0) and (ukdlit<=31);

writeln('Vse Marshruti ne nige zadannoi dlitelnosti');

writeln();

writeln('Dlia vihoda najmite "esc"');

writeln('__________________________________________');

k:=0;

while not eof(f) do begin

read(f,prog);

with prog do begin

if dlitelnost > ukdlit then begin k:=k+1;

writeln('Gorod: ',gorod);

writeln('Dlitelnost: ',dlitelnost);

writeln('vidtransporta: ',vidtran);

writeln('Den: ',den);

writeln('Mesiac: ',mes);

writeln('Stoimost:',stoimost);

writeln('________________________________________________');

end;

end;

end;

if k = 0 then begin writeln('Takih marshrutov net'); writeln('__________________________________________'); end;

u:=readkey;

case u of #27: exit; end;

readln;

end;

 

{---Procedura menu--}

 

Procedure MenuToScr; { Vyvod menu na ekran }

var i:integer;

Begin

ClrScr;

for i:=1 to N do begin

GoToXY(x,y+i-1);

write(menu[i]);

end;

TextAttr:=SEL;

GoToXY(x,y+punkt-1);

write(menu[punkt]); { Vydelenie stroki menu }

TextAttr:=NORM;

end;

 

{ Telo programmy }

 

Var f:fail;

Begin

clrscr;

assign(f,'fail.dat'); {Svyazyvanie peremennoy s imenem faila}

menu[1]:=' Create new file ';

menu[2]:=' Prosmotr ';

menu[3]:=' Uslovie #1 '; {Vse marshruti so stoimostiu ne vishe zadannoy}

menu[4]:=' Uslovie #2 '; {Vse marshruti c dlitelnostiu ne nije zadannoy}

menu[5]:=' Redaktirovanie ';

menu[6]:=' Dobavit zapis ';

menu[7]:=' Udalenie zapisi ';

menu[8]:=' Sort Gooroda ';

menu[9]:=' Sort Dlitelnosti ';

menu[10]:=' Sort Vidtransporta ';

menu[11]:=' Sort Mesiac ';

menu[12]:=' Sort Den ';

menu[13]:=' Sort Stoimost ';

menu[14]:=' Exit ';

punkt:=1;

x:=15;

y:=15; TextAttr:=NORM;

MenuToScr;

Repeat

ch:=ReadKey;

if ch=char(0) then begin

ch:=ReadKey;

case ch of

chr(80): { strelka vniz }

if punkt<N then begin

GoToXY(x,y+punkt-1);

write(menu[punkt]);

punkt:=punkt+1;

TextAttr:=SEl;

GoToXY(x,y+punkt-1);

write(menu[punkt]);

TextAttr:=NORM;

end;

chr(72): { strelka vverh }

if punkt>1 then begin

GoToXY(x,y+punkt-1);

write(menu[punkt]);

punkt:=punkt-1;

TextAttr:=SEl;

GoToXY(x,y+punkt-1);

write(menu[punkt]);

TextAttr:=NORM;

end;

end;

End

Else

if ch=chr(13) then begin { nazhata klavisha <Enter> }

case punkt of

1:Check(f);

2:ReadFile(f);

3:marnevstzad(f);

4:mardlit(f);

5:Zamena(f);

6:Add(f);

7:Del_N(f);

8:SortGor(f);

9:SortDlit(f);

10:SortVidTran(f);

11:SortMes(f);

12:SortDen(f);

13:SortStoimost(f);

14:ch:=chr(27);{ vyhod }

end;

MenuToScr;

end;

until ch=chr(27);{ 27 - kod <Esc> }

end.

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2016-08-20 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: