Практическая обработка множества данных, представляющих собой массив указателей на записи
Курсовой проект - Компьютеры, программирование
Другие курсовые по предмету Компьютеры, программирование
вания правого нижнего угла окна, в котором будет выводиться меню.
Процедура передает в главную программу переменную punkt.
procedure My_Meny;x=1;
y=1;
k=7;i, pred,Max_dlin:integer;
otv:char;
x1,y1:byte;
Сначала все строки сравниваются и находится самая длинная строка. После этого строки дополняются до этой длины путем добавления пробелов. Затем вычисляются координаты правого нижнего угла окна, которое затем и прорисовывается процедурой window из стандартного модуля Crt. После в созданное окно выводится массив пунктов меню и подсвечивается первая позиция. Далее в цикле происходит считывание кода нажатой клавиши и в соответствии с кодом происходит присвоение переменной punkt определенного значения, а затем подсветка выбранного пункта.
begin
{Инициализация переменных}
{Определенние максимальной длины строки}
{Дополнение всех строк до максимальной}
{Расчет координат X1 и Y1}
{Прорисовка меню}
window (x,y,x1,y1);
For I:=1 to k do
begin
GotoXY(x,i);
Write(Mas[i]);
end;
{end for}
punkt:=1;
GotoXY(x,1);
{Подсветка первого поля меню}
Write(Mas[1]);
Repeat
Otv:=Readkey;
If Otv=#0 then Otv:=Readkey;
{end If}
{Реакция на нажатие клавиш}
Case Otv of
#27: {Нажатие клавиши esc}
{Выход}
#13: {Нажатие клавиши enter}
{Прорисовка нормального окна и выход из процедуры}
#80: {Нажатие клавиши вниз}
{Если был выбран последний пункт меню, то происходит переход на первый пункт, иначе перемещается вниз}
#72: {Нажатие клавиши ввверх}
{Если был выбран не первый пункт, то поднимаемся вверх, иначе перемещаемся на последний пункт}
end;
{Прорисовка поля меню в исход-ный цвет}
{Подсветка следующего выбранного поля меню} False
{end Repeat}
end;.
1.3Модуль RabotaND.tpu
Этот модуль содержит пять процедур для работы с набором данных.
Заголовок и описательная часть данного модуля представлены ниже:
unit RabotaND;menumod;
{Спецификация файла}
Tip=(cvet, gherno_bel, perenosn);
Televizor=record
nazvanie:string;
razmer:integer;
sr_stoimist:real;
TipTelevizor:Tip;
end;
var
File1, Filekl, Filenov: File of Televizor;
FileName, Filenamekluch, filenamenov, FilenamenovND: string;
TVzap:Televizor;
n:integer;
otv1, punkt, Otv, tek, numb:byte;
otv2, k:string;
answ:char;
В модуле описана спецификация файла и следующие переменные:
- File1, Filekl, Filenov - Переменные файлового типа
- FileName, Filenamekluch, filenamenov, FilenamenovND - Переменные, содержащие имена файлов.
- TVzap - Переменная типа запись
- N - Переменная, которая используется для обозначения текущего элемента из НД.
Процедуры, которые содержатся в модуле:
{Процедура для вывода текущего элемента}Vivod_Tek (var Filename:string; n:integer);
{Процедура создания нового набора данных}Sozdat_ND (var Filename:string; var n:integer);
{Процедура добавление элемента в конец набора данных}Dobavit_ND (var Filename:string; var n:integer);
{Процедура для просмотра содержимого набора данных}Prosmotr_ND (var Filename:string; var n:integer);
{Процедура для поиска элемента по введеному номеру}Poisk_Elem_ND (var Filename:string; var n:integer);
Процедура, которая создает новый набор данных:
Sozdat_ND;i,kol:integer;
{Ввод имени нового набора данных}
{Связывание файловой переменной с НД на диске}
{Открытие файла для записи}
{Ввод количества записей(kol)}i:=1 to kol do
{Ввод данных}
{Запись одной записи в НД}(File1,TVzap);;
{Закрытие файла}
{Изменение имени файла};
{end procedure Sozdat_ND}
В процедуру из главной программы передается только имя старого набора данных. В главную программу из процедуры передается имя нового набора данных и номер текущего элемента.
В процедуре создается и открывается для записи новый набор данных, затем в него вводится заданое количество записей. После создания НД он закрывается, а текущим элементом становится последний введенный элемент.
Процедура добавление элемента в конец набора данных:
Dobavit_ND;:=n+1;
{Связывание файловой переменной с НД на диске}
{Открытие файла для чтения}
{Поиск конца файла}
{Цикл для записи данных, который будет выполнятся пока пользователь не введет No}Otv2 <> No do
{Ввод данных}
{Запись одной записи в НД}(File1,TVzap);
{Запрос на окончание заполнения} (Продолжить заполнение?(Yes\No));(Otv2);;
{Присвоение номера текущего элемента}:=numb;
{Закрытие файла} ;
{end procedure Dobavit_ND}
В процедуру из главной программы передается имя набора данных. В главную программу из процедуры передается номер текущего элемента.
В процедуре происходит открытие набора данных, затем нахождение его конца стандартной процедурой seek, после чего происходит запись элементов в конец НД. После каждого записанного элемента выводится запрос на окончание записи.
Процедура для просмотра содержимого набора данных:
Prosmotr_ND;
{Связывание файловой переменной с НД на диске}(File1, Filename);
{Открытие файла для чтения}(File1);
{Вывод имени текущего набора данных}
{Вывод шапки таблицы}
{Пока не закончится файл -- вывод элементов в таблицу}not eof(File1) do
{чтение одной записи из файла} (File1,TVzap);
{Выбор строки в зависимости от значения перечислимого типа}TVzap.tipTelevizor of:k:= Цветной;_bel:k:= Черно-белый;:k:= Переносной;;
{Вывод содержимого записи}(¦, numb:5,¦);(TVzap.nazvanie:18,¦);(TVzap.razmer:8,¦);(TVzap.sr_stoimist:16:1,¦);(k,¦);
{Вывод нижней границы таблицы}
{Присвоениею текущему номер последнего показанног?/p>