Автор работы: Пользователь скрыл имя, 05 Декабря 2011 в 16:41, курсовая работа
Целью курсовой работы является углубление знаний и расширение навыков по разработке алгоритмов и их реализации на персональном компьютере. Курсовая работа выполняется в среде Турбо Паскаль и предполагает работу с текстами, файловыми структурами, обработку записей.
1. Введение ______________________________________________________________ 3
2. Назначение и область применения _______________________________________ 4
3. Постановка задачи _____________________________________________________ 5
4. Используемые методы __________________________________________________ 6
5. Алгоритм программы __________________________________________________ 7
6. Заключение ___________________________________________________________ 10
7. Список литературы ___________________________________________________ 11
8. Приложение 1. Листинг программы _________
<Esc> - Выйти…
Типы сортировки разбиты на свои функции: FSortByClient(FileName), FSortByCardNo(FileName), FSortByGoodType(FileName), FSortByClientType(FileName). По своему алгоритму они ничем не отличаются, разница лишь в поле сортировки.
Данная программа представляет собой работоспособный модуль по работе с мобильными картами АЗС. Имеет интуитивно понятный интерфейс и не должна вызывать затруднений в работе конечного пользователя. В программе использованы разные методы алгоритмизации похожих процессов (сортировки и редактирования).
uses Crt;
type TCards = record {Создание нового типа определенного формата }
Client : string [34];{Поле Клиент}
CardNo : string[6]; {Поле №карты}
GoodType : string [7]; {Поле Тип топлива}
ClientType : string [10];{Поле Тип Клиент}
Passwd : string[4]; {Поле Пароль}
end;
CONST FileName : string = 'CardsMK.dat';{Файл БД}
CONST FileFTmp : string = 'FTmp.dat';
{Временный файл}
{Функция определяет существует ли файл с данным именем}
function FileExists(AFileName : String): boolean;
var t: File of TCards;
begin
FileExists := False;
Assign (t, AFileName);
{$I-} Reset (t); {$I+} {отключаем контроль ошибки доступа}
If IOResult = 0 then begin
Close (t);
FileExists:=True
end;
end;
{Функция выода на экран содержимого файла в виде таблицы}
Function FShowFile (AFileName:string):boolean;
Var
t, FTmp: File of TCards;
Cards: TCards;
n:integer;
begin
FShowFile:=True;
If NOT FileExists(AFileName) then begin
FShowFile:=False;
Exit;
end;
Assign(t,AfileName);
Reset(t);
n:=1;
WriteLn('| № | Владелец карты | Карта | Топливо | Юр. / Физ. |Пароль|');
WriteLn('|---|----------------
While NOT EOF(t) do begin
Read(t,Cards);
Writeln('|',n:3,'|',Cards.
Cards.Passwd:4,' |');
n:=n+1;
end;
WriteLn('---------------------
Close(t);
WriteLn('Количество записей: ',n-1);
end;
{Функция контроля: ввод числа с определенной длинной символов}
Function FIntTrue (ATCardid:string; ADlina:integer):boolean;
var
code,chislo,dlina: integer;
begin
FIntTrue:=True;
val(ATCardid,chislo,code);
dlina:=length(ATCardid);
if code<>0 then begin
FIntTrue:=False;
end
else begin
If dlina<>ADlina then FIntTrue:=False;
end;
end;
{Функция поиска
FSelect(файл БД, файл вывода результата,
поле поиска(0-клиент,1-№карты,
Function FSelect(AFileName:string; AFileFTmp:string; iskomoe:string; PoleId:integer):boolean;
var
FTmp, t : file of TCards;
Cards:TCards;
kursor: Longint;
b,n:integer;
Pole:string;
Begin
FSelect:=False;
Assign(t,AFileName);
Reset(t);
Assign(FTmp,AFileFTmp);
Rewrite(FTmp);
kursor:=0;
n:=1;
while NOT EOF(t) do begin
seek(t,kursor);
Read(t,Cards);
Case PoleId of
0: Pole:=Cards.Client;
1: Pole:=Cards.CardNo;
2: Pole:=Cards.GoodType;
end;
If pos(iskomoe,Pole)=1 then begin
write(FTmp,Cards);
FSelect:=True;
n:=n+1;
end;
inc(kursor);
end;
Close(FTmp);
Close(t);
end;
{Окно поиска по клиенту}
Function SelectCardsClient(AFileName:
var
t : file of TCards;
FTmp : file of TCards;
Cards, ftmps : Tcards;
iskomoe : string;
Begin
SelectCardsClient:=False;
{Проверка на существование файла БД}
ClrScr;
Assign(t,AFileName);
Reset(t);
Assign(FTmp,FileFTmp);
Rewrite(FTmp);
{Запрашиваем данные для поиска данных}
Write('Введите полные или начальные параметры для поиска: ');
Readln(iskomoe);
Close(FTmp);
Close(t);
{Выполним поиск и запишем результат в файл FTmp.dat}
FSelect(AFileName, AFileFTmp, iskomoe, 0);
{Выводим на экран полученный результат}
ClrScr;
FShowFile(AFileFTmp);
WriteLn('Для выхода нажмите любую клавишу...');
ReadKey;
end;
{Окно поиска по № карты}
Function SelectCardsNo(AFileName:
var
FTmp, t : file of TCards;
Cards, ftmps : Tcards;
iskomoe: string;
v : boolean;
Begin
SelectCardsNo:=False;
{Проверка на существование файлов}
If Not FileExists(AFileName) then Exit;
ClrScr;
Assign(t,AFileName);
Reset(t);
Assign(FTmp,FileFTmp);
Rewrite(FTmp);
{Запрашиваем №карты для ее поиска с обязательной проверкой верности введенных данных}
Repeat
Write('Введите точный номер карты (6 цифр): ');
Readln(iskomoe);
v:= FIntTrue (iskomoe,6);
until v=True;
Close(FTmp);
Close(t);
{Выполним поиск и запишем результат в файл FTmp.dat}
FSelect(AFileName, AFileFTmp, iskomoe, 1);
{Выводим на экран полученный результат}
ClrScr;
FShowFile(AFileFTmp);
WriteLn('Нажмите любую клавишу...');
ReadKey;
end;
{Окно поиска данных по типу топлива}
Function SelectCardsGoodType(AFileName:
var
t : file of TCards;
FTmp : file of TCards;
Cards, ftmps : Tcards;
kursor, f_size: Longint;
a:char;
b,n:integer;
iskomoe: string;
v : boolean;
Begin
SelectCardsGoodType:=False;
{Проверка на существование файлов}
If Not FileExists(AFileName) then Exit;
ClrScr;
Assign(t,AFileName);
Reset(t);
Assign(FTmp,FileFTmp);
Rewrite(FTmp);
{Предлогаем выбрать тип топлива}
repeat
begin
ClrScr;
WriteLn(' Пожалуйста выберите тип топлива:');
WriteLn;
WriteLn ('<1> "АИ-80"');
WriteLn;
WriteLn ('<2> "АИ-92"');
WriteLn;
WriteLn ('<3> "АИ-95"');
WriteLn;
WriteLn ('<4> "Дт"');
WriteLn;
WriteLn;
WriteLn ('<Esc> Выход.');
a:=ReadKey;
b:=ord(a);
case b of
49 : iskomoe:='"АИ-80"';
50 : iskomoe:='"АИ-92"';
51 : iskomoe:='"АИ-95"';
52 : iskomoe:='"ДТ"';
27 : Exit;
end;
end;
until (b=49) or (b=50) or (b=51) or (b=52) or (b=27);
Close(FTmp);
Close(t);
{Выполним поиск и запишем результат в файл FTmp.dat}
FSelect(AFileName, AFileFTmp, iskomoe, 2);
{Выводим на экран полученный результат}
ClrScr;
FShowFile(AFileFTmp);
WriteLn('Для выхода нажмите любую клавишу...');
ReadKey;
end;
{Функция удаления карты из БД}
Function FDelCardsNo(AFileName:string; AFTmp : string):boolean;
Var
t,FTmp,temp: File of TCards;
Cards : TCards;
kursor, n : integer;
iskomoe1,iskomoe2 : string;
otvet: char;
begin
FDelCardsNo:=False;
SelectCardsNO(AFileName, AFTmp);
Assign(FTmp,FileFTmp);
Reset(FTmp);
If FileSize(FTmp)=0 then begin
WriteLn('Внимание! Нет данных для удаления!!!');
Close(FTmp);
ReadKey;
Exit;
end
else begin
repeat
Write ('Вы действительно хотите их удалить? <0>-ДА, <1>-НЕТ : ');
readln (otvet);
if ord(otvet)=49 then EXIT;
until ord(otvet)=48;
end;
Assign(t,AFileName);
Reset(t);
Assign(temp,'Temp.dat');
Rewrite(temp);
kursor:=0;
Read(FTmp,Cards);
iskomoe1:=Cards.CardNo;
while NOT EOF(t) do begin
seek(t,kursor);
Read(t,Cards);
iskomoe2:=Cards.CardNo;
If iskomoe2<>iskomoe1 then begin
write(temp,Cards);
end;
inc(kursor);
end;
If FileSize(temp)<>0 then FDelCardsNo:=True;
Close(t);
Close(FTmp);
Close(temp);
Erase(t);
Rename(temp, AFileName);
WriteLn;
WriteLn ('Запись успешно удалена');
WriteLn;
WriteLn ('Нажмите любую клавишу...');
ReadKey;
end;
{Функция добавления записи в файл БД, если его нет, то программа создаст его}
Function FAddCards (AFilename:string):boolean;
var
t : File of TCards;
Информация о работе Програмирование на языке высокого уровня