Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
информатика ЗКМЗКЕ_1курс / Основы алг-ции и прог-ие.doc
Скачиваний:
39
Добавлен:
05.06.2015
Размер:
1.88 Mб
Скачать
      1. Кодирование программы.

Текст программы помимо тела, соответствующего матрице операций, должен содержать объявления файлов и структур данных. Для решения данной задачи используются не все поля записей основного и справочных файлов, однако необходимо отвести память для размещения входных записей. Должны быть объявлены и выходные файлы. Кроме того, должны быть объявлены поля управления, печати, итогов и т.п. Некоторые из этих переменных были определены при разметке диаграмм структур данных и заполнении матрицы операций, другие же могут определиться при детализации действий из матрицы операций, например, в связи с формированием ключей для обращения к файлам справочникам.

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

type tn=record

a:string[2];

b:string[2];

h:string[3];

c:string[4];

e:string[10];

k:integer

end;

tr=record

c:string[4];

m:string[30];

g:byte

end;

top=record

e:string[10];

p:word;

ei:string[2]

end;

tp=record

a:string[2];

x:string[25];

ph:string[7];

end;

var fn:file of tn; zn:tn;

fo:file of top; zo:top;

fr:file of tr; zr:tr;

fp:file of tp; zp:tp;

v1,v2,v3:text;

s0,sa,sb,sc,kod,chi:integer;

f:boolean;

a1,b1,bp:string[2];

c1:string[4];

nd:string;

ch:char;

begin

write('имя осн.файла='); readln(nd);

assign(fn,nd);

write('имя файла раб.='); readln(nd);

assign(fr,nd);

write('имя файла опер.='); readln(nd);

assign(fo,nd);

write('имя файла подр.='); readln(nd);

assign(fp,nd);

assign(v1,'v1'); rewrite(v1);

assign(v2,'v2'); rewrite(v2);

assign(v3,'v3'); rewrite(v3);

writeln(v1,' Ведомость 1');

writeln(v1,' Цех Участок Таб.номер ',

Начислено');

writeln(v2,' Ведомость 2');

writeln(v3,' Ведомость 3');

writeln(v3,' Цех Название ',

Начислено');

s0:=0; f:=true;

reset(fn); read(fn,zn);

reset(fp); reset(fr);

while f do

begin

a1:=zn.a; sa:=0;

zp.x:=' '; val(a1,chi,kod);

seek(fp,chi-1); read(fp,zp);

writeln(v2,'Цех ',a1:3,' ',zp.x:25);

writeln(v2,'Участок Т.ном. ФИО',

' Начислено');

while f and(a1=zn.a) do

begin

b1:=zn.b; bp:=b1; sb:=0;

while f and(a1=zn.a)and(b1=zn.b) do

begin

c1:=zn.c; sc:=0;

zr.m:=' '; val(c1,chi,kod);

seek(fr,chi-1); read(fr,zr);

while f and(a1=zn.a)and(b1=zn.b)and

(c1=zn.c) do

begin

reset(fo); zo.p:=0;

repeat

read(fo,zo);

until eof(fo) or (zn.e=zo.e);

close(fo);

sc:=sc+zo.p*zn.k;

if not eof(fn) then read(fn,zn)

else f:=false;

end;

writeln(v1,a1:5,b1:8,c1:10,sc:10);

writeln(v2,bp:5,c1:7,' ',zr.m:30,

sc:3);

bp:='';

sb:=sb+sc;

end;

writeln(v1,' по участку',

sb:5);

writeln(v2,' ',

'по участку', sb:5);

sa:=sa+sb;

end;

writeln(v1,' по цеху',

sa:5);

writeln(v2,' ',

' по цеху', sa:5);

writeln(v3, a1:6,zp.x:30,sa:5);

s0:=s0+sa;

end;

writeln(v1,' ',

'всего',s0:5);

writeln(v2,' ',

' всего',s0:5);

close(v1); close(v2); close(v3); close(fn);

end.

Рис.15 Текст программы.