Контрольная работа

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

Работа добавлена на сайт bukvasha.net: 2015-10-25

Поможем написать учебную работу

Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 25.11.2024





Содержание
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. Запись списка в файл

1. Диплом на тему Учет и аудит собственного капитала предприятия
2. Сочинение на тему Толстой л. н. - В поисках смысла жизни.
3. Реферат на тему Bolivia Complete Culture Study Essay Research Paper
4. Реферат Султанахмет площадь
5. Реферат на тему Об идеологии контртерроризма
6. Реферат на тему Дисидентство на Украине Дисидентський рух в Україні
7. Статья Исследование влияния ультразвука на коррозионно-механическое изнашивание
8. Реферат Участие прокурора в гражданском процессе 8
9. Реферат на тему Почему искажается историческая правда методологический аспект проблемы
10. Реферат История денег Республики Беларусь