Разработка алгоритмов и их реализация
Содержание
Введение
. Назначение и область применения
. Постановка задачи
. Используемые методы
. Алгоритм программы
Заключение
Список литературы
Приложение
Введение
Целью курсовой работы является углубление знаний и расширение навыков по
разработке алгоритмов и их реализации на персональном компьютере. Курсовая
работа выполняется в среде Турбо Паскаль и предполагает работу с текстами,
файловыми структурами, обработку записей.
файловый алгоритмизация паскаль программирование
1. Назначение
и область применения
Программа представляет собой мини комплекс по учету выданных мобильных
карт, областью применения могут быть Автомобильные Заправочные Станции.
. Постановка
задачи
Написать программу, которая будет работать с базой выданных мобильных
карт. При этом программа должна уметь добавлять, изменять, удалять, искать
записи и создавать БД (База Данных) в случае если таковая отсутствует. Для
упрощения работы с программой разработать интуитивно понятный интерфейс.
.
Используемые методы
БД создается под именем CardsMK.dat в той же директории, где находится
сама программа. Доступ к данным происходит напрямую из процедур или функции.
При поиске или изменении записи создается временный файл с именем FTmp.dat, в него записываются результат поиска из файла CardsMK.dat, используемые в дальнейшем для определенных целей:
вывод на экран, визуального контроля редактируемой или удаляемой записи. Для
удаления так же создается временный файл temp.dat,
для хранения отредактированной БД, затем файл CardsMK.dat
удаляется, а файл temp.dat переименовывается в CardsMK.dat.
В программе использован метод объектно-ориентированного программирования.
Программа разбита на процедуры и функции, выполняющие определенные действия.
4. Алгоритм
программы
Создадим новый тип записи TCards.
Именно он будет определять формат нашей БД, в нашем случае состоящей из одной
таблицы с полями:
· Client - поле строкового типа длинной не более 34 символов,
предназначено для хранения Ф.И.О. владельца;
· CardNo - поле строкового тип длинной 6 символов, может
хранить в себе номера карт начинающиеся с № 100000 и до №999999;
· GoodType - поле строкового типа длинной 7
символов. Содержит в себе тип топлива используемого картой. Может принимать
только 4 значения: "АИ-80", "АИ-92", "АИ-95" и
"Дт";
· ClientType - поле строкового типа длинной 10
символов. Содержит в себе тип клиента используемого картой. Может принимать
только 2 значения: "Юр.лицо" и "Физ.лицо";
· Passwd - поле строкового типа длинной 4 символа. Содержит в
себе пароль из 4-х цифр, принимает значения от 0000 до 9999.
Создадим две константы строкового типа хранящие в себе названия выходных
файлов:
· FileName = ‘CardsMK.dat’ (файл БД);
· FileFTmp = ‘FTmp.dat’ (временный файл);
Процедура PMenu -
представляет собой окно Главного меню. Используя цикл Repeat и оператора выбора Case (в основе всех меню пользователя используются похожая
связка цикла и оператора) программа запрашивает у пользователя следующие
варианты для действия по нажатию клавиш
· ‘<1> Список карт.’ - вызывает процедуру ShowFile (FileName);
· <Esc>
Выход из программы..
Для определения кода нажатой кнопки используем оператор ord(a : переменная типа char), возвращающий код нажатой клавиши типа integer.
{Процедура - Окно главного меню}
procedure PMenu; {объявление
процедуры}
var{объявление
переменных}
a: char; {необходимо для оператора Ord(а)}
b: integer; {для оператора Case}
begin
{Начало процедуры}
repeat
{оператор цикла}
begin
{начало оператора цикла}; {очистка экрана, встроенная процедура}('
"Справочник выданных Мобильных карт" - Главное меню ');; {оператор
вывода текста на экран с переводом курсора на следующую строку}('<1>
Список карт.');;('<Esc> Выйти из программы.');
a:=ReadKey; {присваиваем значение ReadKey - встроенная функция считывания кода
нажатой клавиши типа Char}
b:=ord(a); {присваиваем переменной значение, возвращенное оператором ord-преобразует переменную типа Char в целочисленную - Integer}
case b of {начало оператора выборки по
значению переменной b}
: ShowFile(FileName); {если b=49 (клавиша "1"), то запускаем ShowFile(FileName)}
end;
{конец оператора выборки}
end;
{конец оператора цикла}
until b=27; {условие
повторного запуска цикла: пока переменная не будет равна 27 (клавиша "Esc")}
end;
{конец процедуры}
Процедура ShowFile (AFileName:string{переменная строкового типа должна содержать имя файла
БД}) - Проверяет существование файла БД посредством вызова функции FileExists(AFileName:string). Если таковой отсутствует, то процедура создает его.
Далее вызывается функция вывода на экран файла БД - FshowFile(AFileName:string). Ниже прорисованной таблицы БД появляется меню
пользователя:
· <1>-"Поиск…" вызывает процедуру меню поиска: MPoisk;
· <2>-"Выдать карту…" вызывает функцию : FAddCards (AFileName:string);
· <3>-"Удалить карту…" вызывает функцию : FDelCardsNo (AFileName:string; AFTmp:string);
· <4>-"Редактировать карту…" вызывает функцию: FEdit (AFileName:string; AFTmp:string);
· <5>-"Сортировать список…" вызывает процедуру MSort;
· <Esc>-"ВЫХОД
- Главное меню" конец работы текущей процедуры;
Процедура MPoisk - процедура
представляющая собой не что иное, как меню пользователя где предлагается для
выбора три условия поиска нужной (ых) записи: по клиенту, по номеру карты и по
типу топлива (соответственно по клавишам <1>,<2>,<3> для
выхода <Esc>). Процедуры SelectCardsClient, SelectCardsNo, SelectCardsGoodType похожи по своей структуре и
алгоритму работы и необходимым для работы входным параметрам (FileName{файл для поиска},FileFTmp{файл для вывода найденных данных}).
Алгоритм сводится к открытию окна с возможностью ввода(выбора) данных для
поиска(выборки) из БД и вывода результата на экран, по окончании процедура
возвращает пользователя в меню поиска.
Функция FAddCards (AFileName:string) - Предназначена для добавления записи в БД. Перед
началом процедуры ведется проверка по наличию самого файла БД, в случае его
отсутсвия программа сама создает его. Далее пользователю предлагается поэтапно
ввести данные для одной записи, причем обязательным условием является
заполнение всех полей!!! Алгоритм следующий:
А) Вводим №карты - программа проверяет на наличие данной карты в БД, в
положительном случае выдаст сообщение о том что данная карта зарегистрирована и
имеет своего владельца. Также ведется проверка на обязательные условия ввода
№карты - 6 цифр. Проверка проводится функцией FIntTrue (ATCardid:string,ADlina:integer):boolean. Последняя функция использует встроенный оператор val(a,b,c), которая преобразовывает строковую
переменную a в целочисленную переменную b, при этом возвращает код c=0 при положительном варианте. Далее
вычисляется длинна строки посредством встроенного оператора length(a) возвращающий числовое значение равное числу символов в
строке. FIntTrue - логическая функция и потому
возвращает лишь два значения True
(в случае соответствия условиям) или False (несоответствия условию).
FDelCardsNo (AFileName:string; AFTmp:string) - для поиска карты необходимой для
удаления используем выше описанную функцию SelectCardsNo. В случае существования данной карты
данная запись запишется во временный файл. Далее программа проверяет размер
данного временного файла, и если оно равно нулю то выдается сообщение:
"Внимание! Нет данных для удаления!!!" и завершает свою работу. Если
данные все же найдены, то программа потребует повторного подтверждения для
удаления найденных записей. Далее создается еще один временный файл Temp.dat, и туда переписываются все данные из файла БД кроме
тех, что содержаться в FTmp.dat. После чего файл с БД удаляется, а Temp.dat переименовывается в файл БД - CardsMK.dat.
FEdit
(AFileName:string; AFTmp:string) - функция редактирования данных. По
номеру карты находим запись для редактирования (функция SelectCardsNo). Выводим на экран меню
редактирования, выбор поля для редактирования определяется цифрой на
клавиатуре:
<1> - Изменить владельца карты.
<2> - Изменить тип топлива.
<3> - Изменить тип владельца карты.
<4> - Изменить пароль.
<Esc> - Выйти…
Первые четыре строки соответствуют вызову функций FEditClient с параметрами: AFileName - файл БД, AFTmpFile - файл с результатом поиска, PoleId - номер поля для редактирования. В
зависимости от выбора поля для редактирования предлагается выбрать новый тип
или ввести новое значение данного поля (обязательно с проверкой условий ввода).
Выполненные изменения записываются во вновь созданный файл Temp.dat, и туда переписываются все данные из файла БД кроме
тех, что содержаться в FTmp.dat. После чего файл с БД удаляется, а Temp.dat переименовывается в файл БД - CardsMK.dat.
MSort
- открывает меню пользователя "Сортировать". Так же с помощью цифр
определяемся с выбором поля по которому будет выполняться сортировка таблицы
БД:
<1> - По клиенту.
<2> - По номеру карты.
<3> - По типу топлива.
<4> - По типу владельца.
<Esc> - Выйти…
Типы сортировки разбиты на свои функции: FSortByClient(FileName), FSortByCardNo(FileName), FSortByGoodType(FileName), FSortByClientType(FileName). По своему алгоритму они ничем не
отличаются, разница лишь в поле сортировки.
Заключение
файловый алгоритмизация паскаль программирование
Данная программа представляет собой работоспособный модуль по работе с
мобильными картами АЗС. Имеет интуитивно понятный интерфейс и не должна
вызывать затруднений в работе конечного пользователя. В программе использованы
разные методы алгоритмизации похожих процессов (сортировки и редактирования).
Приложение 1
Листинг
программы
Crt;TCards = record {Создание нового типа определенного формата }
Client : string [34];{Поле Клиент}: string[6]; {Поле №карты}: string [7]; {Поле Тип топлива}:
string [10];{Поле Тип Клиент}: string[4]; {Поле Пароль};FileName
: string = 'CardsMK.dat';{Файл БД}FileFTmp : string = 'FTmp.dat'; {Временный файл}
{Функция определяет существует ли файл с данным именем}
function FileExists(AFileName : String): boolean;t: File of
TCards;:= False;(t, AFileName);
{$I-} Reset (t); {$I+} {отключаем контроль ошибки доступа}
If IOResult = 0 then begin(t);
FileExists:=True;;
{Функция выода на экран содержимого файла в виде таблицы}
Function FShowFile (AFileName:string):boolean;, FTmp: File of
TCards;: TCards;:integer;:=True;NOT FileExists(AFileName) then
begin:=False;;;(t,AfileName);(t);:=1;('| № | Владелец карты | Карта | Топливо | Юр. / Физ. |Пароль|');('|---|-----------------------------------|--------|---------|------------|------|');NOT
EOF(t) do begin(t,Cards);('|',n:3,'|',Cards.Client:34,' | ', Cards.CardNo:6,' |
', Cards.GoodType:7,' | ', Cards.ClientType:10,' | ',.Passwd:4,'
|');:=n+1;;('--------------------------------------------------------------------------------');(t);
WriteLn('Количество записей: ',n-1);;
{Функция контроля: ввод числа с определенной длинной символов}
Function FIntTrue (ATCardid:string;
ADlina:integer):boolean;,chislo,dlina: integer;:=True;(ATCardid,chislo,code);:=length(ATCardid);code<>0
then begin:=False;begindlina<>ADlina then FIntTrue:=False;
end;;
{Функция поиска FSelect(файл БД, файл вывода результата, поле
поиска(0-клиент,1-№карты,2-тип топлива)) }
Function FSelect(AFileName:string; AFileFTmp:string;
iskomoe:string; PoleId:integer):boolean;, t : file of TCards;:TCards;:
Longint;,n:integer;:string;:=False;(t,AFileName);(t);(FTmp,AFileFTmp);(FTmp);:=0;:=1;NOT
EOF(t) do begin(t,kursor);(t,Cards);PoleId of
: Pole:=Cards.Client;
: Pole:=Cards.CardNo;
: Pole:=Cards.GoodType;;pos(iskomoe,Pole)=1 then
begin(FTmp,Cards);:=True;:=n+1;;(kursor);;(FTmp);(t);
end;
{Окно поиска по клиенту}
Function SelectCardsClient(AFileName:string;
AFileFTmp:string):boolean;: file of TCards;: file of TCards;, ftmps : Tcards;:
string;:=False;
{Проверка на существование файла БД}
ClrScr;(t,AFileName);(t);(FTmp,FileFTmp);(FTmp);
{Запрашиваем данные для поиска данных}('Введите полные или начальные
параметры для поиска: ');
Readln(iskomoe);(FTmp);(t);
{Выполним поиск и запишем результат в файл FTmp.dat}(AFileName,
AFileFTmp, iskomoe, 0);
{Выводим на экран полученный результат};(AFileFTmp);('Для выхода нажмите
любую клавишу...');;;
{Окно поиска по № карты}
Function SelectCardsNo(AFileName:string;
AFileFTmp:string):boolean;, t : file of TCards;, ftmps : Tcards;: string;:
boolean;:=False;
{Проверка на существование файлов}Not FileExists(AFileName) then
Exit;;(t,AFileName);(t);(FTmp,FileFTmp);(FTmp);
{Запрашиваем №карты для ее поиска с обязательной проверкой верности
введенных данных}('Введите точный номер карты (6 цифр): ');
Readln(iskomoe);:= FIntTrue (iskomoe,6);v=True;(FTmp);
Close(t);
{Выполним поиск и запишем результат в файл FTmp.dat}(AFileName,
AFileFTmp, iskomoe, 1);
{Выводим на экран полученный результат};(AFileFTmp);('Нажмите любую
клавишу...');;;
{Окно поиска данных по типу топлива}
Function SelectCardsGoodType(AFileName:string;
AFileFTmp:string):boolean;: file of TCards;: file of TCards;, ftmps : Tcards;,
f_size: Longint;:char;,n:integer;: string;: boolean;:=False;
{Проверка на существование файлов}Not FileExists(AFileName) then
Exit;;(t,AFileName);(t);(FTmp,FileFTmp);(FTmp);
{Предлогаем выбрать тип топлива};(' Пожалуйста выберите тип топлива:');
WriteLn;('<1> "АИ-80"');;('<2> "АИ-92"');;('<3> "АИ-95"');;('<4> "Дт"');;;('<Esc> Выход.');:=ReadKey;:=ord(a);b
of
: iskomoe:='"АИ-80"';
: iskomoe:='"АИ-92"';
: iskomoe:='"АИ-95"';
: iskomoe:='"ДТ"';
: Exit;;;(b=49) or (b=50) or (b=51) or (b=52) or (b=27);
Close(FTmp);(t);
{Выполним поиск и запишем результат в файл FTmp.dat}(AFileName,
AFileFTmp, iskomoe, 2);
{Выводим на экран полученный результат};(AFileFTmp);('Для выхода нажмите
любую клавишу...');;;
{Функция удаления карты из БД}
Function FDelCardsNo(AFileName:string; AFTmp :
string):boolean;,FTmp,temp: File of TCards;: TCards;, n : integer;,iskomoe2 :
string;: char;:=False;(AFileName,
AFTmp);(FTmp,FileFTmp);(FTmp);FileSize(FTmp)=0 then begin('Внимание! Нет данных для удаления!!!');
Close(FTmp);;;begin
repeat('Вы действительно хотите их удалить? <0>-ДА, <1>-НЕТ :
');(otvet);
if ord(otvet)=49 then
EXIT;ord(otvet)=48;;(t,AFileName);(t);(temp,'Temp.dat');(temp);:=0;(FTmp,Cards);:=Cards.CardNo;NOT
EOF(t) do begin(t,kursor);(t,Cards);:=Cards.CardNo;iskomoe2<>iskomoe1
then begin(temp,Cards);;(kursor);;FileSize(temp)<>0 then FDelCardsNo:=True;(t);(FTmp);(temp);(t);(temp,
AFileName);
WriteLn;('Запись успешно удалена');;('Нажмите любую клавишу...');;;
{Функция добавления записи в файл БД, если его нет, то программа создаст
его}
Function FAddCards (AFilename:string):boolean;: File of TCards;:
TCards;_fuel, t_client, kursor, n: integer;:string;,s:boolean;
Begin:=False;
{Проверка на существование файла}
if NOT FileExists(AFilename) then begin(t,AFilename);(t);
Close (t);;;
{Запрос данных для записи}
Assign(t,AFilename);(t);not Eof(t) do Read(t, Cards);
seek(t,0);;('Внимание все поля обязательны к заполнению!');
WriteLn ('Выдать карту: ');;:=0;
n:=1;
{Запрашиваем и проверяем формат ввода новой карты}('Введите номер карты
(6 цифр): ');
Readln(chislo);:= FIntTrue (chislo,6);v=True then beginNOT
EOF(t) do begin(t,kursor);(t,Cards);chislo=Cards.CardNo then
begin:=n+1;;(kursor);;
If n<>1 then begin('Данная карта уже имеет владельца!!! Введите другую
карту');;begin:=0;.CardNo:=chislo;;
end;n=0;
{Запрашиваем и проверяем формат владельца карты}
{Запрашиваем тип топлива}('Выберите тип топлива: 1-"АИ-80",
2-"АИ-92", 3-"АИ-95", 4-"ДТ" : ');(t_fuel);t_fuel of
: Cards.GoodType:='"АИ-80"';
: Cards.GoodType:='"АИ-92"';
: Cards.GoodType:='"АИ-95"';
: Cards.GoodType:='"ДТ"';;(t_fuel=1) Or (t_fuel=2) Or (t_fuel=3) Or (t_fuel=4);
{Запрашиваем тип владельца карты}('Выберите тип клиента: 1 -
"Физ.лицо", 2 - "Юр.лицо : ');
ReadLn (t_client);t_client of
: Cards.ClientType:='"Физ.лицо"';
: Cards.ClientType:='"Юр.лицо"';;(t_client=1) Or
(t_client=2);
{Запрашиваем и проверяем формат пароля карты}('Введите пароль (4 цифры):
');
Readln(Chislo);:= FIntTrue (chislo,4);v=True;.Passwd:=chislo;(t,
Cards);(t);
FAddCards:=True;('!!! Запись успешно добавлена в БД !!!');;('Нажмите
любую клавишу...');;;
{Функция редактирования данных с номером карты}
Function FEditClient (AFileName:string;AFTmpFile:string;
PoleId:integer):boolean;, t, temp: File of
TCards;:TCards;,kursor,t_fuel,t_client:integer;, NewName,
chislo:string;,v:boolean;:=False;(t,AFileName);(t);(FTmp,AFTmpFile);(FTmp);(temp,'temp.dat');(temp);(FTmp,0);(FTmp,Cards);
{Запрашиваем и проверяем формат владельца карты}
If PoleId=0 then begin
Write('Введите нового клиента: ');
ReadLn(Cards.Client);:=True;length(Cards.Client)=0 then
s:=False;pos(' ',Cards.Client)=1 then s:=False;;s=True;;
{Запрашиваем тип топлива}PoleId=1 then begin('Выберите тип топлива: 1-"АИ-80", 2-"АИ-92", 3-"АИ-95", 4-"ДТ" : ');(t_fuel);t_fuel of
: Cards.GoodType:='"АИ-80"';
: Cards.GoodType:='"АИ-92"';
: Cards.GoodType:='"АИ-95"';
: Cards.GoodType:='"ДТ"';;(t_fuel=1) Or (t_fuel=2) Or (t_fuel=3) Or (t_fuel=4);
end;
{Запрашиваем новый тип владельца карты}
If PoleId=2 then begin
repeat('Выберите
тип клиента: 1 - "Физ.лицо", 2 - "Юр.лицо : ');
ReadLn (t_client);t_client of
: Cards.ClientType:='"Физ.лицо"';
: Cards.ClientType:='"Юр.лицо"';;(t_client=1) Or
(t_client=2);
end;
{Запрашиваем и проверяем формат пароля карты}
If PoleId=3 then begin('Введите
пароль (4 цифры): ');(Chislo);:= FIntTrue
(chislo,4);v=True;.Passwd:=chislo;;(temp,cards);(FTmp);
Write(FTmp,cards);
{Переписываем оставшиеся записи}
seek(FTmp,0);(FTmp,Cards);:=Cards.CardNo;:=0;NOT EOF(t) do
begin(t,kursor);(t,Cards);iskomoe<>Cards.CardNo then
begin(temp,Cards);;(kursor);;(t);(temp);(FTmp);(t);(temp,AFileName);:=True;;
{Функция меню редактирования}FEdit
(AFileName:string;AFTmpFile:string):boolean;:integer;:char;
Begin:=False;
{По номеру карты находим запись для редактирования}(AFileName,
AFTmpFile);
{Выводим на Экран Окно редактирования}
Repeat;(AFTmpFile);
WriteLn('<1>-Изменить владельца карты.');('<2>-Изменить тип
топлива.');('<3>-Изменить тип владельца карты.');('<4>-Изменить
пароль.');
WriteLn('<Esc>-Выйти...');:=ReadKey;:=ord(a);b of
: FEditClient(AFileName, AFTmpFile,0);
: FEditClient(AFileName, AFTmpFile,1);
: FEditClient(AFileName, AFTmpFile,2);
: FEditClient(AFileName, AFTmpFile,3);
: Exit;;
end;b=27;;
{Процедура - Сортировки по имени}FSortByClient (AFileName:string);:
File of TCards;,Cards2: TCards;,kursor2, f_size: Longint;NOT
FileExists(AFileName) then
Exit;(t,AfileName);(t);:=0;_size:=FileSize(t)-1;kursor1 < f_size do
begin(t,kursor1);(t,Cards1);:=kursor1+1;kursor2 <= f_size do begin(t,kursor2);(t,Cards2);Cards1.Client>Cards2.Client
then
begin(t,kursor1);(t,Cards2);(t,kursor2);(t,Cards1);:=Cards2;;(kursor2);;(kursor1);;(t);
end;
{Процедура - Сортировки по номеру карты}
Procedure FSortByCardNo (AFileName:string);: File of
TCards;,Cards2: TCards;,kursor2, f_size: Longint;NOT FileExists(AFileName) then
Exit;(t,AfileName);(t);:=0;_size:=FileSize(t)-1;kursor1 < f_size do
begin(t,kursor1);(t,Cards1);:=kursor1+1;kursor2 <= f_size do
begin(t,kursor2);(t,Cards2);Cards1.CardNo>Cards2.CardNo then begin(t,kursor1);(t,Cards2);(t,kursor2);(t,Cards1);:=Cards2;;(kursor2);;(kursor1);;(t);
end;
{Процедура - Сортировки по Типу топлива}
Procedure FSortByGoodType (AFileName:string);: File of
TCards;,Cards2: TCards;,kursor2, f_size: Longint;NOT FileExists(AFileName) then
Exit;(t,AfileName);(t);:=0;_size:=FileSize(t)-1;kursor1 < f_size do
begin(t,kursor1);(t,Cards1);:=kursor1+1;kursor2 <= f_size do
begin(t,kursor2);(t,Cards2);Cards1.GoodType>Cards2.GoodType then
begin(t,kursor1);(t,Cards2);(t,kursor2);(t,Cards1);:=Cards2;;(kursor2);;(kursor1);;(t);
end;
{Процедура - Сортировки по Типу клиента}
Procedure FSortByClientType (AFileName:string);: File of
TCards;,Cards2: TCards;,kursor2, f_size: Longint;NOT FileExists(AFileName) then
Exit;(t,AfileName);(t);:=0;_size:=FileSize(t)-1;kursor1 < f_size do
begin(t,kursor1);(t,Cards1);:=kursor1+1;kursor2 <= f_size do
begin(t,kursor2);(t,Cards2);Cards1.ClientType>Cards2.ClientType then
begin(t,kursor1);(t,Cards2);(t,kursor2);(t,Cards1);:=Cards2;;(kursor2);;(kursor1);;(t);;
{Процедура - Меню "Сортировать"}
Procedure MSort ;
var:char;:integer;;
WriteLn('
"Справочник выданных Мобильных карт" - Меню
"Сортировть"');;('<1> По клиенту');;('<2> По номеру
карты');;('<3> По типу топлива');;('<4> По типу владельца');
WriteLn;('<Esc> Выход.');:=ReadKey;:=ord(a);b of
: FSortByClient(FileName);
: FSortByCardNo(FileName);
: FSortByGoodType(FileName);
: FSortByClientType(FileName);;;(b=27) or (b=49) or (b=50) or
(b=51) or (b=52);;
{Процедура - Меню поиска}MPoisk
;:char;:integer;
begin;(' "Справочник выданных Мобильных карт" - Меню
поиска');;('<1> Поиск по клиенту');;('<2> Поиск по номеру
карты');;('<3> Выборка по типу топлива');
: SelectCardsClient(FileName, FileFTmp);
: SelectCardsNo(FileName, FileFTmp);
: SelectCardsGoodType(FileName, FileFTmp);;;b=27;;
{Процедура вывода на экран БД}
Procedure ShowFile (AfileName:string);: File of
TCards;:integer;:char;Not FileExists(AFileName) then
begin(FTmp,AFileName);(FTmp);(FTmp);(AFileName);;;(AFilename);;('<1>-"Поиск..."
');('<2>-"Выдать карту..." ');('<3>-"Удалить
карту..." ');('<4>-"Редактировать карту..."
');('<5>-"Сортировать
список..."');('----------------------------');('<Esc>-"ВЫХОД -
Главное меню"');
a:=ReadKey;:=ord(a);b of
:MPoisk;
: FAddCards(FileName);
: FDelCardsNo (FileName, FileFTmp);
: FEdit (FileName, FileFTmp);
: MSort;;b=27;
{Удаляем FTmp.dat-файл}FileExists(FileFTmp) then
begin(FTmp, FileFTmp);(FTmp);(FTmp);(FTmp);;;
{Процедура - Окно главного меню}
procedure PMenu;
var: char;: integer;
ClrScr;(' "Справочник выданных Мобильных карт" - Главное меню
');;('<1> Список карт.');;('<Esc> Выйти из программы.');
a:=ReadKey;:=ord(a);b of
: ShowFile(FileName);;;b=27;;
{Тело программы};;
end.
Приложение 2
Результат
работы
Результат работы приведен в картинках:
Начало работы программы:
"<1>-Список карт"
"<1>-Список карт" -> "<1>-Поиск…"
"<1>-Список карт" -> "<1>-Поиск…"
-> "<1>-Поиск по клиенту"
"<1>-Список карт" -> "<1>-Поиск…"
-> "<2>-Поиск по номеру карты"
"<1>-Список карт" -> "<1>-Поиск…"
-> "<3>-Выборка по типу топлива"
Результат поиска:
"<1>-Список карт" -> "<2>-Выдать
карту…"
Результат добавление записи:
"<1>-Список карт" -> "<3>-Удалить
карту…"
"<1>-Список карт" -> "<4>-Редактировать
карту…"
"<1>-Список карт" -> "<5>-Сортировать
список…"
"<1>-Список карт" -> "<5>-Сортировать
список…" -> "<1>-По клиенту"
"<1>-Список карт" -> "<5>-Сортировать
список…" -> "<2>-По номеру карты"
"<1>-Список карт" -> "<5>-Сортировать
список…" -> "<3>-По типу топлива"
"<1>-Список карт" -> "<5>-Сортировать
список…" -> "<3>-По типу владельца"
При нажатии <Esc>
программа завершит свою работу: