Задача состоит в следущем:
создать многоуровневую диалоговую программу, с помощью которой создается основной файл и 2 файла справочника. Для основного файла надо предусмотреть создание нового, открытие существующего, печать, также его редактирование(добавление, удаление записей) и сортировку входных данных по первому компоненту.
В общем проблема возникла с основным файлом,т.к. отсортировать или отредактировать у меня его не получилось...никак...
вот основная прога, которая выводит основное меню и запускает модуль
.
Program menu1;
Uses modmenu111;
var
choice,count,code:integer;
flag:boolean;
answer:char;
choice1:string;
begin
writeln(' Laboratornaya rabota 2 ');
writeln(' Variant 4 ');
writeln;
flag:=true;
while flag=true do
begin
writeln('..................MENU...................');
writeln('..1. Vedenie osnovnogo faila ..');
writeln('..2. Vedenie spravo4nikov ..');
writeln('..3. Formirovanie vedomostei ..');
writeln('..4. Vihod ..');
writeln('..........................................');
writeln;
writeln('vash vibor:');
count:=0;
repeat
readln(choice1);
val(choice1,choice,code);
if (code<>0)then
writeln ('vvedeno ne 4islo');
count:=count+1;
if count>3 then
begin
writeln ('4islo popitok is4erpano');
halt;
end
until code=0;
Case choice of
1:begin
podmenu1;;
end;
2:begin
podmenu2;
end;
3:begin
podmenu3;
end;
4:begin
writeln('Vi deistvitelno hotite viyti iz programmi? <y\n>');
readln(answer);
if answer='y' then
flag:=false;
end
else writeln('Oshibka!!!Vibran nevirnyi punkt menu:',choice);
end;
end;
end.
вот сам модуль(выкладываю только процедуры на основной файл)
.
unit modmenu1;
{модуль всех процедур для пунктов главного меню и всех подменю}
interface
type tosnfile=record {основной файл}
cod_stock:integer;
cod_ceh:integer;
nom_num:integer;
data:string;
kol_vo:integer
end;
procedure podmenu1;
procedure vvodfile;
procedure printfile;
procedure drawtabfile;
procedure drawlegs;
procedure sort(var f:atosnfile;n:byte);
implementation
--------------------------------{подменю для первого пункта меню}-----------------------------------------------
procedure podmenu1;
var
choice,count,code:integer;
flag:boolean;
answer:char;
choice1:string;
begin
flag:=true;
while(flag=true) do
begin
writeln('.1.Vedenie osnovnogo faila............');
writeln('......................................');
writeln('.1.1 Sozdanie novogo faila .');
writeln('.1.2 Korrektirovka osnovnogo faila .');
writeln('.1.3 Prosmotr osnovnogo faila .');
writeln('.1.4 Pe4at osnovnogo faila .');
writeln('.1.5 Vozvrat v glavnoe menu .');
writeln('......................................');
writeln;
writeln('vash vibor:');
count:=0;
repeat
readln(choice1);
val(choice1,choice,code);
if (code<>0)then
writeln ('vvedeno ne 4islo');
count:=count+1;
if count>3 then
begin
writeln ('4islo popitok is4erpano');
halt;
end
until code=0;
case choice of
1:begin
vvodfile;
end;
2:begin
end;
3:begin
printfile;
end;
4:begin
printfile;
end;
5:begin
flag:=false;
end
else writeln('Oshibka!!!Vibran neverniy punkt menu:',choice);
end;
end;
end;
------------------- {процедура создания нового основного файла}-------------------------------
procedure vvodfile;
var
osnfile:file of atosnfile;
zap:atosnfile;
namefile:string;
flajok:boolean;
answer:char;
i,n:byte;
begin
writeln('vvedite imya osnovhogo faila(s rasshireniem .txt):');
readln(namefile);
assign(osnfile,namefile);
rewrite(osnfile);
flajok:=true;
writeln('Vvedite kol-vo zapisey, kotorie sobiraetes vvodit:');
readln(n);
for i:=1 to n do
with zap[i] do
begin
writeln('ZaPiS N ',i);
writeln('>Vvedite kod sklada:');
readln(cod_stock);
writeln('>vvedite kod ceha-izgotovitelya:');
readln(cod_ceh);
writeln('>vvedite nomen. nomer izdeliya:');
readln(nom_num);
writeln('>data postupleniya /ddmmyy/ :');
readln(data);
writeln('>vvedite kol-vo izdelii:');
readln(kol_vo);
write(osnfile,zap);
writeln('vvod dannih zavershen? <y/n>: ');
readln(answer);
if answer='y' then
Break;
end;
close(osnfile);
assign(osnfile,namefile);
reset(osnfile);
sort(zap,n);
write(osnfile,zap);
close(osnfile);
end;
---------------------------{процедура распечатки(вывода на экран) основного файла}---------------------------------
procedure printfile;
var
namefile:string;
osnfile:file of tosnfile;
zap:tosnfile;
begin
writeln ('Vvedite imiya faila dlya pe4ati');
readln (namefile);
assign(osnfile,namefile);
reset(osnfile);
writeln('Pe4at faila: ',namefile);
drawtabfile;
repeat
read(osnfile,zap);
writeln('*',zap.cod_stock:12,'*',zap.cod_ceh:10,'*', zap.nom_num:10,'*',zap.data:8,'*',zap.kol_vo:8,'*');
drawlegs;
until (EOF(osnfile));
close(osnfile);
writeln;
end;
--------------------------{процедура рисует подобие таблицы}------------------------------------------------
procedure drawtabfile;
begin
writeln('******************************************************');
writeln('* KOD * KOD CEHA * NOMEN. * DATA * KOL-VO *');
writeln('* SKLADA * IZGOTOV. * NOMER * * IZDELIY*');
writeln('******************************************************');
end;
-------------------------------{процедура рисует линии-ограничители}-----------------------------------------------
procedure drawlegs;
begin
writeln('******************************************************');
end;
-------------------------------{процедура сортировки по коду склада}----------------------------------------------
вот в ней то и проблема
procedure sort(var f:atosnfile;n:byte);
var
i:byte;
zap:tosnfile;
flag:boolean;
begin
repeat
flag:=true;
for i:=1 to n-1 do
if not (f[i].cod_stock >= f[i+1].cod_stock) then
begin
zap:=f[i];
f[i]:=f[i+1];
f[i+1]:=zap;
flag:=false;
end;
until flag;
end;
end.
все на что меня хватило.Дальше - мозговой затык....
Отредактировать файл уже нет мыслей никаких....
Подскажите, пожалуйста....уже замучалась....
Сообщение отредактировано: what is -