Разработка алгоритмов и их реализация

Дипломная работа - Компьютеры, программирование

Другие дипломы по предмету Компьютеры, программирование



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;