Мегаобучалка Главная | О нас | Обратная связь


Описание используемых процедур.



2019-07-03 167 Обсуждений (0)
Описание используемых процедур. 0.00 из 5.00 0 оценок




В приложении используются как глобальные, так и локальные переменные. К глобальным переменным относятся:

1) names,namer:string[10] – строковые переменные, которые вынесены в глобальные, чтобы сделать программу более компактной. Иначе бы в разных процедурах надо было вводить аналогичные типы данных, а так можно обойтись лишь парой глобальных переменных.

2) key,kr:char – символьные переменные. В переменной key хранится код нажатой клавиши. А в переменной kr находится текущее положение звездочки. Звездочка будет рассмотрена ниже.

3) tek,i,j,izm:integer – целочисленные переменные. Из них i и j –циклические, временные переменные. Tek и izm показывают, какое меню активно в текущий момент. Они помогают понять программе от какого меню к какому перешли, тоесть помогает восстановить последовательность действий.

4) exist,vfile,issor:boolean – Логические переменные. Exist – служит для выхода из программы. Vfile – позволяет пускать одну процедуру по двум путям – либо выводить данные на экран, либо в файл. Issor – показывает меню выбора таблиц, что следующим шагом должна быть сортировка данной таблицы.

5) nast:pered – Типизированная переменная, в которой хранятся строки текущего меню. Описание типа pered имеется в модуле:

pered=record

st:array[1..12] of string;

m:byte;                               {количество строк в меню}

end;

temr,tt1,tt2,tt3,tt4:cc – Таблицы базы данных. Тут tt1 – таблица с данными о студентах, tt2 – предметы, tt3 – преподаватели, tt4 – оценки (успеваемость). Temr – временная таблица. Все эти переменные являются динамическими списками. Они описаны в файле tips.pas:

tabl2=record                        {Сама таблица }

t1, t2, t3, t4, t5: string[12];     {Состоит из строк}

end;

cc=^tab;

tab= record                             {Создание динамического списка}

tabl:tabl2;

sled:cc;

end;

 

Программа отвечает на то, какую клавишу нажал пользователь и передает управление процедуре main. Процедура readkey используется в основном блоке программы. Для работы с управляющими клавишами используются их коды в таблице ISCII. Тут:

80 – курсор вверх

72 – курсор вниз

27 – ESC

13 – Enter

При нажатии на клавишу «Ввод» управление передается продцедуре main. При этом используются глобальные переменные.

В процедуре main управление переходит к подпрограмме, согласно текущему меню, но порой надо знать откуда был осуществлен вход. Как я уже говорил, зайти в меню выбора таблиц можно по разному. Все меню имеют разные заголовки, которые и используются для их идентификации. При нажатии на кнопку «Выход», текущем становится первоначальное меню.

Интерфейсная часть программы состоит из трех процедур:

procedure menus(m:pered;max:byte); {Вывод меню }

begin

clrscr;

For i:=1 to max do begin

if i=1 then begin

textcolor(1); gotoxy(9,2); write(m.st[i]);

end

else begin

if i=2 then textcolor(9)

else textcolor(3);

gotoxy(8,i+3);write(m.st[i]);

end;

end;

end;

С помощью этой процедуры на экране меняются меню. Нужно учесть, что мы первоначально знаем, из сколки строк состоит каждое меню, что упрощает задачу. Заголовок и содержание меню пишутся разными цветами. Изменение цвета выводимых символов идет с помощью команды textcolor, параметром котором является предопределенная константа.

Следующая процедура:

procedure krutis; {Звездочка рядом с активным элементом}

begin

textcolor(14);

if kr='/' then kr:='-'

else if kr='-' then kr:='\'

else if kr='\' then kr:='|'

   else kr:='/';

gotoxy(6,tek+3);write(kr);

textcolor(3);

end;

Эта процедура работает таким образом – обращение к ней идет из основного блока программы, в котором стоит бесконечный цикл. На экране отображается что то похожее на бенгальский огонь. Это достигается путем последовательного вывода на одном и том же месте символов: \, |, /, —. В переменной tek у нас содержится номер активной строки, а относительно нее мы и должны поставить звездочку.

Следующая процедура:

procedure ramka(ch:char); {перемещение указателя}

begin

gotoxy(6,tek+3);Writeln(' ');

textcolor(3);gotoxy(8,tek+3);write(nast.st[tek]);

if ch='+' then tek:=tek+1

else tek:=tek-1;

if tek=1 then tek:=nast.m

else if tek=nast.m+1 then tek:=2;

key:=#0;

textcolor(9);gotoxy(8,tek+3);write(nast.st[tek]);

krutis;

end;

Данная процедура имеет параметр символьного типа. По содержанию ch определяется – вверх или вниз сдвинулась активная строка. Обращение к этой процедуре идет из основного блока программы. Больше процедур такого рода нет (ко всем другим процедурам обращение идет из процедуры main).

Эта процедура затирает элемент, который был активен перед этим цветом по умолчанию (голубым) и стирает предыдущее положение звездочки. После этого исходя из значения ch изменяется значение tek и выделяется элемент, на который был осуществлен переход. В подпрограмме вставлены два условия:

if tek=1 then tek:=nast.m

else if tek=nast.m+1 then tek:=2;

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

Процедуры следующего типа осуществляют загрузку и выгрузку данных из файла. Я не буду здесь приводить полный текст процедур, так как его можно посмотреть в приложении. Чтение осуществляется с помощью readetip, а запись – writetip. В этих процедурах используются глобальные переменные. Загрузка идет посредством таблиц tt1, tt2, tt3, tt4. При работе пользователь работает как бы с одним файлом, хотя реально каждая из таблиц сохраняется в свой файл. При запросе пользователь вводит название файла, а потом к этому названию добавляется слева цифра – 1, 2, 3 или 4. Например если при сохранении в типизированный файл имени сохраняемого файла присвоить значение pasha, то таблица tt1 будет сохранена в файле 1 pasha, tt2 – 2 pasha, tt3 – 3 pasha, tt4 – 4 pasha. При выгрузке из файла присвоение имен идет таким же образом. Для сохранения в текстовой файл используется процедура tabl11(t:integer;rab:cc), где rab – сохраняемая таблица, а t – помогает найти заголовки столбцов текущей таблицы. Результат выполнения данной процедуры можно посмотреть выше, где показаны таблицы первоначальных данных. Для вывода содержимого таблицы на экран используется процедура tabl1(t:integer;rab:cc;yd:boolean), действие которой аналогично предыдущей, только добавляется параметр yd, от которого зависит, нужно ли затирать таблицу сразу или она должна повисеть на экране, пока пользователь не ввел какие либо данные. Например при удалении записей из таблицы, пользователю будет удобнее, если он будет содержание таблицы перед глазами. Например покажем содержание таблицы студентов, которые будут выведены после нажатии на кнопку «Просмотр»:

 

Следующая процедура - obrabotka(iz,t:integer; var rab:cc). Эта процедура вызывается при корректировке записей. Через параметр iz процедура выбирает путь дальнейшего хода. То есть надо ли добавить запись, изменить или удалить. Параметр rab – это таблица, которая передается в процедуру, и параметр var показывает, что данную таблицу можно изменять непосредственно из процедуры.

В ней используются локальные переменные –

dlud:string;

bis:boolean;

tems,temr,tem:cc;

Здесь все переменные типа cc – временные, dlud служит для ввода данных, а bis показывает, выполнимо ли выбранное действие или нет.

Продцедура sort(iz,t:integer; var rab:cc) осуществляет сортировку записей в выбранной таблице по выбранному полю. Ее работа и параметры с переменными аналогичны предыдущей процедуре.

При запросах выполняется процедура zapros(num:integer), где через параметр num передается, какой именно запрос должен выполняться. Потом через условие case идет обработка запросов. Как показано на схеме взаимодействия таблиц, чтобы перейти от студентам к преподавателям надо пройти через таблицу оценок. Связь между таблицами осуществляется по уникальным полям. Например для нахождении оценки студента надо сначала из таблицы студентов найти номер его студенческого, а потом найти номер сдаваемого предмета из таблицы, а уже после этого, используя полученные номера, найти из таблицы успеваемости полученную студентом оценку. То есть связь идет по трем таблицам. В запросах я старался как можно больше показать возможности моей базы данных. На последнем рисунке показан один из запросов и результат его выполнения. Возможность создания гибких запросов является важнейшей задачей программирования баз данных.



2019-07-03 167 Обсуждений (0)
Описание используемых процедур. 0.00 из 5.00 0 оценок









Обсуждение в статье: Описание используемых процедур.

Обсуждений еще не было, будьте первым... ↓↓↓

Отправить сообщение

Популярное:
Почему люди поддаются рекламе?: Только не надо искать ответы в качестве или количестве рекламы...
Почему человек чувствует себя несчастным?: Для начала определим, что такое несчастье. Несчастьем мы будем считать психологическое состояние...
Как выбрать специалиста по управлению гостиницей: Понятно, что управление гостиницей невозможно без специальных знаний. Соответственно, важна квалификация...



©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (167)

Почему 1285321 студент выбрали МегаОбучалку...

Система поиска информации

Мобильная версия сайта

Удобная навигация

Нет шокирующей рекламы



(0.006 сек.)