Упорядочивание элементов файла

Описание:
Тип работы: контрольная работа
Описание записи, содержащей поля: расчётный счёт плательщика и получателя, перечисляемая сумма в рублях. Программа для ввода данных с клавиатуры в массив. Листинг исходного файла программы вывода информации на экран и распечатка снимков с экрана.
Доступные действия
Введите защитный код для скачивания файла и нажмите "Скачать файл"
Защитный код
Введите защитный код

Нажмите на изображение для генерации защитного кода

Текст:

Содержание

1.  Задание

2.  Блок схема

3.  Листинг исходного файла программы

4.  Снимки с экрана при работе программы


1. Задание

Написать программу упорядочивания элементов файлов.

1)  Описать запись с именем Bill, содержащую следующие поля:

- расчётный счёт плательщика;

- расчётный счёт получателя;

- перечисляемая сумма в рублях.

2) Написать программу, выполняющую следующие действий:

- ввод данных с клавиатуры в массив, состоящий из 8 элементов типа Bill; записи должны быть упорядочены в алфавитном порядке по расчетным счетам плательщиков;

- вывод на экран информации о сумме снятой с расчётного счёта плательщика, введённого с клавиатуры; если такого расчётного счёта нет, вывести на экран соответствующие сообщение;

- запись массива в файл под заданным с клавиатуры именем.

2. Блок схема

Рис 1. Блок-схема алгоритма основной программы


Рис2. Блок-схема процедуры ввода данных в список

Рис 3. Блок-схема процедуры вывода данных из списка на дисплей


Рис4. Блок-схема процедуры ввода данных в список из файла записей

Рис5. Блок-схема процедуры поиска данных в списке


Рис 6. Блок-схема процедуры записи данных списка в файл

Листинг исходного файла программы

program Prog1;

uses

Crt;

const

MaxRecCount = 8;

type

TBill = record

ChetPlatel: string [30];

ChetPoluch: string [30];

SummaPlateja: real;

end;

TRecArr = array [1..MaxRecCount] of TBill;

var

RecArr: TRecArr;

Bill: TBill;

RecCount: integer;

FileName: string [15];

c: char;

procedure RecArrInit(var RecArr: TRecArr);

var

i: integer;

begin

for i:= 1 to MaxRecCount do

begin

RecArr[i].ChetPlatel:= "";

RecArr[i].ChetPoluch:= "";

RecArr[i].SummaPlateja:= 0

end

end;

function FillRecArr(var RecArr: TRecArr): integer;

var

i, n: integer;

c: char;

begin

FillRecArr:= 0;

i:= 0;

while i < MaxRecCount do

begin

c:= #0;

WriteLn("Do you want insert new record in list?(y/n)");

c:= ReadKey;

if (c in ["n", "N", #27]) then Break;

ClrScr;

Inc(i);

Write("Please get Pay #", i, " :");

ReadLn(RecArr[i].ChetPlatel);

Write("Please get Dest #", i, " :");

ReadLn(RecArr[i].ChetPoluch);

repeat

Write("Please get summ :");

{$I-}

ReadLn(RecArr[i].SummaPlateja);

{$I+}

n:= IOResult;

if n <> 0 then

WriteLn("The summ is fault.Try again.");

until n = 0;

ClrScr

end;

FillRecArr:= i;

end;

procedure PrintRecArr(RecArr: TRecArr);

var

i: integer;

begin

ClrScr;

for i:= 1 to MaxRecCount do

if RecArr[i].ChetPlatel <> "" then

begin

WriteLn("Pay #", i, " : ", RecArr[i].ChetPlatel);

WriteLn("Dest #", i, " : ", RecArr[i].ChetPoluch);

WriteLn("Pay summ", i, " : ", RecArr[i].SummaPlateja:8:2);

WriteLn("--------------------------");

end

end;

procedure FindInRecArr(RecArr: TRecArr);

var

i: integer;

isFind: boolean;

s: string [30];

summ: real;

begin

isFind:= false;

summ:= 0;

ClrScr;

Write("Get payment num(q for quit):");

ReadLn(s);

if s = "q" then Exit;

for i:= 1 to MaxRecCount do

if Pos(RecArr[i].ChetPlatel, s) <> 0 then

begin

summ:= summ + RecArr[i].SummaPlateja;

isFind:= true

end;

if not isFind then

begin

WriteLn("Current record not found. Try again.");

ReadLn;

FindInRecArr(RecArr)

end;

WriteLn("Summa = ",summ:8:2)

end;

procedure SortRecArr(var RecArr: TRecArr);

var

i, j: integer;

TmpRec: TBill;

begin

for i:= 1 to MaxRecCount do

for j:= 1 to MaxRecCount - 1 do

if RecArr[j].ChetPlatel[1] > RecArr[j + 1].ChetPlatel[1] then

begin

TmpRec:= RecArr[j];

RecArr[j]:= RecArr[j + 1];

RecArr[j + 1]:= TmpRec

end

end;

function RecArrSaveToFile(FileName: string; RecArr: TRecArr): integer;

var

TmpFile: file of TBill;

i, n: integer;

begin

RecArrSaveToFile:= 0;

Assign(TmpFile, FileName);

{$I-}

Rewrite(TmpFile);

{$I+}

if IOResult <> 0 then

begin

WriteLn("File ", FileName, " create error.");

Exit

end;

n:= 0;

for i:= 1 to MaxRecCount do

if RecArr[i].ChetPlatel <> "" then

begin

Inc(n);

Write(TmpFile, RecArr[i])

end;

Close(TmpFile);

RecArrSaveToFile:= n

end;

function RecArrLoadFromFile(FileName:string; var RecArr: TRecArr): integer;

var

TmpFile: file of TBill;

i: integer;

begin

RecArrLoadFromFile:= 0;

Assign(TmpFile, FileName);

{$I-}

Reset(TmpFile);

{$I+}

if IOResult <> 0 then

begin

WriteLn("File ", FileName, " open error.");

Exit

end;

i:= 1;

Seek(TmpFile, 0);

while (not Eof(TmpFile)) and (i <= MaxRecCount) do

begin

Read(TmpFile, RecArr[i]);

Inc(i)

end;

Close(TmpFile);

RecArrLoadFromFile:= i

end;

function ViewMenu: char;

var

c: char;

begin

ViewMenu:= "0";

ClrScr;

WriteLn;

WriteLn;

WriteLn("_________________________________");

WriteLn("| Menu |");

WriteLn("---------------------------------");

WriteLn("| 1. Input records to list |");

WriteLn("| |");

WriteLn("| 2. Load list from file |");

WriteLn("| |");

WriteLn("| 3. Find need records in list |");

WriteLn("| |");

WriteLn("| 4. Save list to file |");

WriteLn("| |");

WriteLn("| 5. Print list |");

WriteLn("| |");

WriteLn("| 6. Quit |");

WriteLn("---------------------------------");

repeat

c:= ReadKey;

until (c in ["1", "2","3", "4", "5", "6", #27]) ;

ViewMenu:= c

end;

begin

c:= #0;

RecCount:= 0;

FileName:= "";

ClrScr;

Window(23,15,75,30);

while true do

begin

c:= ViewMenu;

ClrScr;

case c of

"1": begin

RecArrInit(RecArr);

RecCount:= FillRecArr(RecArr);

SortRecArr(RecArr);

WriteLn("Input ", RecCount, " records in list.")

end;

"2": begin

Write("Get file name :");

ReadLn(FileName);

FileName:= "." + FileName;

RecArrInit(RecArr);

RecCount:= RecArrLoadFromFile(FileName, RecArr);

WriteLn("Load ", RecCount, " records in list.")

end;

"3": begin

if RecCount > 0 then

FindInRecArr(RecArr)

else

WriteLn("List is empty.")

end;

"4": begin

if RecCount > 0 then

begin

Write("Input file name :");

ReadLn(FileName);

FileName:= "." + FileName;

RecCount:= RecArrSaveToFile(FileName, RecArr);

WriteLn("Save ", RecCount, " records from file ", FileName, ".")

end

else

WriteLn("List is empty.")

end;

"5": begin

if RecCount > 0 then

PrintRecArr(RecArr)

else

WriteLn("List is empty.")

end;

"6", #27: Break;

end;

WriteLn;

WriteLn("Please press any key and go to menu>");

repeat until KeyPressed

end;

end.


Снимки с экрана при работе программы

Рис 7. Главное меню программы

Рис 8. Запрос на добавление нового элемента в список

Рис 9. Окно ввода значений в элемент списка


Рис 10. Запрос на ввод имени файла для загрузки данных в список

Рис 11. Окно вывода элементов списка

Рис 12. Окно поиска элемента списка по значению его поля


Рис 13. Сообщение об отсутствии искомого элемента в списке

Рис 14. Запись списка в файл

Информация о файле
Название файла Упорядочивание элементов файла от пользователя z3rg
Дата добавления 11.1.2012, 17:51
Дата обновления 11.1.2012, 17:51
Тип файла Тип файла (zip - application/zip)
Скриншот Не доступно
Статистика
Размер файла 205.24 килобайт (Примерное время скачивания)
Просмотров 678
Скачиваний 114
Оценить файл