Разработка алгоритмов и их реализация
Дипломная работа - Компьютеры, программирование
Другие дипломы по предмету Компьютеры, программирование
odType похожи по своей структуре и алгоритму работы и необходимым для работы входным параметрам (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). Выводим на экран меню редактирования, выбор поля для редактирования определяется цифрой на клавиатуре:
- Изменить владельца карты.
- Изменить тип топлива.
- Изменить тип владельца карты.
- Изменить пароль.
- ВыйтитАж
Первые четыре строки соответствуют вызову функций FEditClient с параметрами: AFileName - файл БД, AFTmpFile - файл с результатом поиска, PoleId - номер поля для редактирования. В зависимости от выбора поля для редактирования предлагается выбрать новый тип или ввести новое значение данного поля (обязательно с проверкой условий ввода). Выполненные изменения записываются во вновь созданный файл Temp.dat, и туда переписываются все данные из файла БД кроме тех, что содержаться в FTmp.dat. После чего файл с БД удаляется, а Temp.dat переименовывается в файл БД - CardsMK.dat.
MSort - открывает меню пользователя "Сортировать". Так же с помощью цифр определяемся с выбором поля по которому будет выполняться сортировка таблицы БД:
- По клиенту.
- По номеру карты.
- По типу топлива.
- По типу владельца.
- ВыйтитАж
Типы сортировки разбиты на свои функции: 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);codeADlina 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;