Упорядочивание элементов файла
Описание записи, содержащей поля: расчётный счёт плательщика и получателя, перечисляемая сумма в рублях. Программа для ввода данных с клавиатуры в массив. Листинг исходного файла программы вывода информации на экран и распечатка снимков с экрана.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | контрольная работа |
Язык | русский |
Дата добавления | 20.01.2011 |
Размер файла | 710,6 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Содержание
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,0 M], добавлен 23.11.2014Структура записей входного массива. Описание основных типов данных. Алгоритм программы: присвоение начальных значений переменных, чтение списка из файла, вывод данных на экран, выполнение обработки данных, сохранение списка в файл. Листинг программы.
курсовая работа [325,2 K], добавлен 28.12.2012Процедура ввода исходных данных в программу, вывод результатов работы программы на экран. Принцип организации хранения логически связанных наборов информации в виде файлов. Параметры характеристики файла, способы обращения к нему, соглашения по типу.
реферат [14,5 K], добавлен 06.12.2011Создание проекта, включающего две программы: одна программа – сортирует массив из файла, а другая выводит на экран содержание этого файла. Обе программы используют один и тот же файл в один момент времени, то есть работают оба процесса одновременно.
лабораторная работа [14,5 K], добавлен 04.04.2011Рассмотрение правил записи, способов ввода и вывода, использования функций обработки символьных данных в Pascal. Описание алгоритмизации и программирования файловых структур данных, проектирования структуры файла. Ознакомление с работой данных массива.
курсовая работа [336,2 K], добавлен 27.06.2015Программа по организации заполнения массива объектов приложения из внешнего файла данных формата csv. Описание модуля Def.h, Plant.h и Main.cpp. Контрольный пример работы программы. Рассмотрение передачи неправильного имени файла в качестве параметра.
курсовая работа [567,9 K], добавлен 27.01.2013Словесное описание алгоритма программы. Открытие файла процедурой Rewrite, его проверка на наличие ошибок при открытии. Особенности построения диаграммы. Листинг программы, ее тестирование и отладка. Выполнение процедуры CloseFile при закрытии файла.
контрольная работа [17,3 K], добавлен 11.06.2010Структура заданного исходного файла и структуры данных, соответствующие данным файла. Подпрограмма проверки принадлежности текста к одной из шести кодовых таблиц. Алгоритмы перекодировки файла в cp1251. Алгоритм сортировки записей исходного файла.
курсовая работа [63,7 K], добавлен 12.12.2010Понятие класса на языке Java. Ввод с клавиатуры данных в массив, состоящий из десяти объектов типа WORKER. Вывод на дисплей фамилий работников, чей стаж работы в организации превышает значение, введенное с клавиатуры. Оценка работы программы, ее код.
курсовая работа [1,2 M], добавлен 20.04.2014Структура программного комплекса. Ввод информации из заданного файла. Создание набора данных. Добавление элементов в конец набора данных. Просмотр всех элементов набора данных. Копирование информации из НД в заданный файл. Сортировка массива по номерам.
курсовая работа [630,5 K], добавлен 01.06.2014