Содержание
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;
procedureRecArrInit(var RecArr: TRecArr);
var
i: integer;
begin
for i:= 1 to MaxRecCountdo
begin
RecArr[i].ChetPlatel:='';
RecArr[i].ChetPoluch:='';
RecArr[i].SummaPlateja:=0
end
end;
functionFillRecArr(var RecArr: TRecArr): integer;
var
i, n: integer;
c: char;
begin
FillRecArr:=0;
i:= 0;
while i
begin
c:= #0;
WriteLn('Doyou want insert new record in list?(y/n)');
c:= ReadKey;
if (c in ['n','N', #27]) then Break;
ClrScr;
Inc(i);
Write('Pleaseget Pay #', i, ' :');
ReadLn(RecArr[i].ChetPlatel);
Write('Pleaseget Dest #', i, ' :');
ReadLn(RecArr[i].ChetPoluch);
repeat
Write('Pleaseget summ :');
{$I-}
ReadLn(RecArr[i].SummaPlateja);
{$I+}
n:= IOResult;
if n 0 then
WriteLn('Thesumm is fault.Try again.');
until n = 0;
ClrScr
end;
FillRecArr:=i;
end;
procedurePrintRecArr(RecArr: TRecArr);
var
i: integer;
begin
ClrScr;
for i:= 1 toMaxRecCount do
ifRecArr[i].ChetPlatel '' then
begin
WriteLn('Pay#', i, ': ', RecArr[i].ChetPlatel);
WriteLn('Dest#', i, ': ', RecArr[i].ChetPoluch);
WriteLn('Paysumm', i, ': ', RecArr[i].SummaPlateja:8:2);
WriteLn('--------------------------');
end
end;
procedureFindInRecArr(RecArr: TRecArr);
var
i: integer;
isFind:boolean;
s: string[30];
summ: real;
begin
isFind:=false;
summ:= 0;
ClrScr;
Write('Getpayment num(q for quit):');
ReadLn(s);
if s = 'q'then Exit;
for i:= 1 toMaxRecCount do
ifPos(RecArr[i].ChetPlatel, s) 0 then
begin
summ:= summ +RecArr[i].SummaPlateja;
isFind:= true
end;
if not isFindthen
begin
WriteLn('Currentrecord not found. Try again.');
ReadLn;
FindInRecArr(RecArr)
end;
WriteLn('Summa= ',summ:8:2)
end;
procedureSortRecArr(var RecArr: TRecArr);
var
i, j: integer;
TmpRec: TBill;
begin
for i:= 1 to MaxRecCountdo
for j:= 1 toMaxRecCount — 1 do
ifRecArr[j].ChetPlatel[1] > RecArr[j + 1].ChetPlatel[1] then
begin
TmpRec:=RecArr[j];
RecArr[j]:=RecArr[j + 1];
RecArr[j +1]:= TmpRec
end
end;
functionRecArrSaveToFile(FileName: string; RecArr: TRecArr): integer;
var
TmpFile: fileof 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 toMaxRecCount do
ifRecArr[i].ChetPlatel '' then
begin
Inc(n);
Write(TmpFile,RecArr[i])
end;
Close(TmpFile);
RecArrSaveToFile:=n
end;
functionRecArrLoadFromFile(FileName:string; var RecArr: TRecArr): integer;
var
TmpFile: fileof 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 (notEof(TmpFile)) and (i
begin
Read(TmpFile,RecArr[i]);
Inc(i)
end;
Close(TmpFile);
RecArrLoadFromFile:=i
end;
functionViewMenu: 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('Getfile 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('Listis empty.')
end;
'4': begin
if RecCount> 0 then
begin
Write('Inputfile name :');
ReadLn(FileName);
FileName:='.\' + FileName;
RecCount:=RecArrSaveToFile(FileName, RecArr);
WriteLn('Save', RecCount, ' records from file ', FileName, '.')
end
else
WriteLn('Listis empty.')
end;
'5': begin
if RecCount> 0 then
PrintRecArr(RecArr)
else
WriteLn('Listis empty.')
end;
'6', #27:Break;
end;
WriteLn;
WriteLn('Pleasepress any key and go to menu>');
repeat untilKeyPressed
end;
end.
Снимки с экрана приработе программы
/>
Рис 7. Главное менюпрограммы
/>
Рис 8. Запрос надобавление нового элемента в список
/>
Рис 9. Окно вводазначений в элемент списка
/>
Рис 10. Запрос на вводимени файла для загрузки данных в список
/>
Рис 11. Окно выводаэлементов списка
/>
Рис 12. Окно поискаэлемента списка по значению его поля
/>
Рис 13. Сообщение оботсутствии искомого элемента в списке
/>
Рис 14. Запись списка вфайл