Файл: Особенности и примеры использования массивов при разработке программ (Определение массива).pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 29.03.2023

Просмотров: 182

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Средством реализации по заданию является язык программирования PASCAL. Для реализации выбрана среда программирования Borland Turbo Pascal Version 7.1

Программа реализована в среде разработки Borland Turbo Pascal Version 7.1 В VisualC++6.0 c использованием стандартного модуля CRT.

Файловая структура программы представлена ниже

Файл программы – Adres5.pas;

Файл хранения записей - Adress.dat;

Файл хранения результатов поиска абонентов – Find.txt

Для описания записи с указанными в задании параметрами, в разделе описания используемых типов, создан тип записи TDlgData, который включает три поля типа string:

Number – поле хранения номера телефона абонента;

Name - поле хранения имени абонента;

Street – поле хранения адреса (улицы) проживания абонента.

Для реализации необходимой функциональности программы, были созданы соответствующие процедуры:

procedure LData – процедура листинга, вывода на экран всех имеющихся записей;

procedure XData – процедура поиска и отображения найденных записей на экран и в файл;

procedure WData – процедура создания новой записи в файл.

Описание процедуры LData

Задача процедуры состоит в построчном выводе элементов записей из файла Dress.dat на экран.

Assign(AdrR,'Adress.dat'); связываем переменную для считывания с файлом записей

Reset(AdrR); открываем связанный файл

writeln(' List racords');

writeln('Number of phone Abonent Name Street'); выводим на экран шапку поиска записей

цикл считывания и вывода на экран записи

while not Eof(AdrR) do

begin

read(AdrR,t);{считали запись}

writeln(' '+t.Number + ' ' + t.Name + ' ' + t.Street);{вывели запись}

Описание процедуры XData. Задача процедуры состоит в построчном поиске необходимой записи и выводе элементов записей из файла Dress.dat на экран и в файл Find.txt.

Writeln('Enter Street');

readln(S);{запрос параметра поиска}

writeln(' Finding racords');

writeln('Number of phone Abonent Name Street'); вывод шапки результатов поиска

Assign(AdrR,'Adress.dat');{связываемся с файлом хранения всех записей}

Reset(AdrR);

Assign(AdrS,'Find.txt'); {связываемся с файлом хранения найденных записей}

Rewrite(AdrS);{очищаем файл найденных записей}

цикл поэлементного поиска записей

while not Eof(AdrR) do

begin

read(AdrR,t);

{поиск нужной записи}

if t.Street= S then

begin

writeln(' '+t.Number + ' ' + t.Name + ' ' + t.Street);

write(AdrS,t.Number + ' ' + t.Name + ' ' + t.Street);

end;

Описание процедуры WData. Задача процедуры состоит в добавлении новых записей.

{запрос параметров добавления записи}

Writeln('Enter number phone');

readln(N);

Writeln('Enter abonent Name');

readln(Na);

Writeln('Enter Street');

readln(S);

{сохранение параметров в запись}

RData.Number := N;

RData.Name := Na;

RData.Street := S;


Assign(f,'Adress.dat');{связываемся с файлом хранения найденных записей}

Reset(f);

Seek(f,FileSize(f));{переходим в конец файла}

write(f,RData); {создаем запись в файле}

В целях удобства работы с программой для пользователя, было создано интуитивное текстово-графичесское меню.

Элементы меню:

Константа элементов меню:

menu : array[1..4] of string=('[ Create record ]',

'[ Find record ]',

'[ List record ]',

'[ Exit ]');

Для отключения курсора использована вставка кода на ассемблере

asm mov ah,01;mov cl,$20;int $10;end;

Вывод меню на экран реализован в цикле:

for temp:=1 to 4 do writeln(menu[temp]); { // выводим меню}

repeat

{ // цикл идет..}

gotoxy(1,curchoice); textcolor(20); { // рисуем полоску}

textbackground(7); write(menu[curchoice]); {// выбора}

if keypressed then

case readkey of { // проверяем кнопки}

#72: if curchoice>1 then begin { // вниз, если можно}

textcolor(7);textbackground(0); {// стираем пред.}

{ // надпись}

gotoxy(1,curchoice);write(menu[curchoice]);dec(curchoice);

end;

#80: if curchoice<4 then begin { // вверх, если можно}

textcolor(7);textbackground(0);

gotoxy(1,curchoice);write(menu[curchoice]);inc(curchoice);

end;

#27: status:=4; { // escape}

{если нажат enter то вызываем соответствующую процедуру}

#13: case curchoice of

1: begin

WData; вызов процедуры WData

curchoice:=1;status:=128;textcolor(7);textbackground(0);

for temp:=1 to 4 do writeln(menu[temp]);

end;

2:begin

XData; вызов процедуры XData

curchoice:=1;status:=128;textcolor(7);textbackground(0);

for temp:=1 to 4 do writeln(menu[temp]);

end;

3:begin

LData; вызов процедуры LData

curchoice:=1;status:=128;textcolor(7);textbackground(0);

for temp:=1 to 4 do writeln(menu[temp]);

end;

4:exit; { // enter}

end;

end;

until status=4; { // ..пока не выбран последний}

{ // пункт/не нажат escape}

asm mov ah,01; mov cx,$0E0D; int $10; end;

textcolor(7); textbackground(0); {// ставим нормальный цвет}

Для начала работы программы нужно запустить файл adres5.exe. После запуска на экране появится меню программы (см. рис.1).

рис 1. Меню программы.

Меню содержит 4 пункта Create record – создание записи, Find record –поиск записи, List record – вывод записей на экран и Exit – завершение работы программы. Перемещать курсор по элементам меню можно при помощи кнопок «вверх»и «вниз»

При выборе пункта Create record запускается процедура WData и на экране выводятся указания для ввода параметров новых записей(см. рис.2).

рис 2. Функция создания записи.

При выборе пункта меню «Find record» запускается процедура XData – поиск записи и вывода результата поиска в файл и на экран. Для поиска записи необходимо ввести название улицы и нажать Enter(см. рис.3).