Разработка алгоритмов и их реализация
Содержание
Введение
. Назначение и область применения
. Постановка задачи
. Используемые методы
. Алгоритм программы
Заключение
Список литературы
Приложение
Введение
Целью курсовой работы является углубление знаний и расширение навыков по разработке алгоритмов и их реализации на персональном компьютере. Курсовая работа выполняется в среде Турбо Паскаль и предполагает работу с текстами, файловыми структурами, обработку записей.
файловый алгоритмизация паскаль программирование
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). По своему алгоритму они ничем не отличаются, разница лишь в поле сортировки.
Заключение
файловый алгоритмизация паскаль программирование
Данная программа представляет собой работоспособный модуль по работе с мобильными картами АЗС. Имеет интуитивно понятный интерфейс и не должна вызывать затруднений в работе конечного пользователя. В программе использованы разные методы алгоритмизации похожих процессов (сортировки и редактирования).
Список литературы
. "Основы алгоритмизации и программирование", Е. Н. Сафьянова, учебное пособие, Томск, 2000 г.
Приложение 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;
{Запрашиваем и проверяем формат владельца карты}
repeat('Введите Ф.И.О Клиента: ');(Cards.Client);:=True;length(Cards.Client)=0 then s:=False;pos(' ',Cards.Client)=1 then s:=False;;s=True;
{Запрашиваем тип топлива}('Выберите тип топлива: 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> Выборка по типу топлива');
WriteLn;('<Esc> Выход.');:=ReadKey;:=ord(a);b of
: 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> программа завершит свою работу:
Больше работ по теме:
Предмет: Информационное обеспечение, программирование
Тип работы: Диплом
Новости образования
КОНТАКТНЫЙ EMAIL: [email protected]
Скачать реферат © 2017 | Пользовательское соглашение
ПРОФЕССИОНАЛЬНАЯ ПОМОЩЬ СТУДЕНТАМ