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


Полнотекстовый поиск по базе:

Главная >> Контрольная работа >> Информатика, программирование


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




Содержание

  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. Запись списка в файл

Похожие работы:

  • Методы внутренней сортировки

    Реферат >> Информатика, программирование
    ... поле, содержащее величину, используемую в правилах упорядочивания файла. В предположении, что результатом сортировки является ... при каждом сравнении (k – 1): k больший элемент попадает в позицию k. Элемент, перемещаемый вниз, считается в данный ...
  • Алгоритмический язык Паскаль

    Дипломная работа >> Информатика, программирование
    ... можно указать любой его элемент, например, A[7] - седьмой элемент. У файла же вызывать данные таким ... несколько способов упорядочивания одномерных массивов по возрастанию величин их элементов. Такая задача ...
  • Основы работы на ПК

    Реферат >> Информатика, программирование
    ... , содержащие любое значение, присвоенное файлу, или связанные с определенными элементами файла, например, с именованной ячейкой ... Создание таблицы Используйте таблицы для упорядочивания данных и создания интересных макетов страницы ...
  • Программирование на языке Турбо Паскаль

    Реферат >> Информатика, программирование
    ... два типа операций, связанных с массивами: Упорядочивание элементов массива по возрастанию или убыванию ... и структурированные (массивы, записи и т.п.). 2. Нетипизированные файлы Нетипизированный файл, в отличие от типизированного, используется для ...
  • Обработка матриц

    Курсовая работа >> Информатика, программирование
    ... условий «особого элемента». Сравниваем количество особых элементов в обоих матрицах. И производим упорядочивание элементов строк по ... Delphi 7 программа состоит из нескольких файлов. Это файлы с исходными текстами на Паскале ...
  • Excel

    Реферат >> Информатика, программирование
    ... диалога. После нахождения нужного файла надо ввести имя или ссылку ... . Обновление таблицы при открытии файла Чтобы Excel автоматически обновлял сводную ... всех полей сводной таблицы , и для упорядочивания элементов полей можно использовать привычную команду ...
  • Сортировка массивов методом вставок

    Реферат >> Информатика, программирование
    ... следующий алгоритм сортировки (упорядочивания): сортировка вставками: пусть первые k элементов массива уже упорядочены ... число, значение которого равно количеству элементов в файле.) Проделаем вышеуказанные действия и выведем результат ...
  • Разработка баз данных в Delphi

    Реферат >> Информатика, программирование
    ... - остальные символы сохраняются в отдельном файле с расширением .MB. Однако, Delphi ... же может быть элементом сравнения? Элементом сравнения может выступать: ... номерами столбцов. Способ упорядочивания определяется дополнительными зарезервированными словами ...
  • Разработка программного обеспечения по автоматизации учебного процесса в колледже

    Дипломная работа >> Информатика, программирование
    ... указывается имя файла и расширение имя файла. На этапе ... черного прямоугольника. К неоконным элементам управления базовым является класс GraphiControl ... ; - номерами столбцов. Способ упорядочивания определяется дополнительными зарезервированными словами ASC ...
  • Информационные технологии в юриспруденции

    Учебное пособие >> Информатика, программирование
    ... кнопок. Вариант № Кнопки 1 С,Д,Е,Ж, 2 И,К,Л,М 3 Н,О,П,Р 4 С,Т,У,Ф 5 Х,Ц,Ш,Щ V. Автоматизация и упорядочивание работы с базой данных Продолжительность: 160 ... панели элементов выберите элемент Рисунок и вставьте с помощью его в форму рисунок из файла Рисунок ...