Автор: Пользователь скрыл имя, 17 Сентября 2011 в 18:24, контрольная работа
Составить программу с горизонтальным типом меню, которая включает в себя: динамические переменные, ввод и вывод горизонтальной таблицы, добавление данных, сортировка данных, удаление данных и сохранение в файл.
Задание.
Составить программу
с горизонтальным типом меню которая
включает в себя: динамические переменные,
ввод и вывод горизонтальной таблицы,
добавление данных, сортировка данных,
удаление данных и сохранение в файл.
1).
Program Menu; {название программы}
Uses CRT; {объявление модуля для работы с экраном}
Type {новый тип}
Divid=record {служебное слво}
Naimen:string; {переменная}
Zakcena,Nadbav:real; {
Otpcena:real; {переменная}
end; {конец}
Var {оператор переменных}
F:file of divid;
mas:array [1..100] of divid; {массив}
i,x,stroka,stolb,size,kont1,
tovar:divid;
Procedure vvod; {процедура ввод}
Label met,met1,metk,metk1,metk2,
Begin {начало}
{$i-}
Rewrite(f);
if ioresult<>0 then Begin {условие, начало}
textbackground(12); {установка цвета фона}
gotoxy(16,23); {перемещение указателя}
Writeln('Oshibka pri otkritie faila dla zapisi'); {выводится на экран}
Readln; {задержка}
textbackground(25); {установка цвета фона}
goto met1; {объявления метки}
end; {конец}
if kont2=0 then begin {условие}
size:=0; {присвоение}
clrscr; {очистка экрана}
Writeln('_____________________
Writeln('"*"-vihod');
Writeln('');
Writeln('*__________________*_
Writeln('* Naimenovanie * Zakup cena * Nadbavka * Otpucknaa cena *');
Writeln('*------------------*-
gotoxy(1,7); {перемещение указателя}
end; {конец}
While true do begin {цикл, начало}
size:=size+1; {присвоение}
Writeln('* * * * *'); {вывод на экран}
Writeln('*------------------*-
Gotoxy(2,size+6); Writeln(size,'.'); {
gotoxy(25,3); {перемещение курсора}
metk5:gotoxy(5,size+6); {метка, перемещение курсора}
gotoxy(5,size+6); {перемещение курсора}
readln(mas[size].naimen); {
if ioresult<>0 then begin {условие}
gotoxy(25,3); textbackground(12); {
write('Oshibka vvoda,budte vnimatelnee'); {вывод на экран}
textbackground(25);goto metk5; {смена цвета фона, метка}
end; {конец}
if mas[size].naimen='*' then goto met; {условие}
if length (mas[size].naimen)>15 then begin {условие начало}
gotoxy(25,3); {}
textbackground(12); write('macsimalnai dlina slova-15 sim'); {смена цвета фона, вывод на экран}
textbackground(25); {смена цвета фона}
goto metk5; {метка}
end;gotoxy(25,3); {конец, перемещение указателя}
metk2:gotoxy(52,size+6) {
gotoxy(25,size+6); {
readln(mas[size].zakcena); {
if (ioresult<>0) or (mas[size].zakcena<1) or (mas[size].zakcena>500000) then begin {условие, начало}
gotoxy(25,3); textbackground(12); write('Oshibca vvoda,budte vnimatelnee'); {смена цвета фона}
textbackground(25); {смена цвета фон}
goto metk2; {метка}
end; {конец}
gotoxy(25,3); {перемещение указателя}
metk3:gotoxy(52,size+6); {
gotoxy(40,size+6); {
readln(mas[size].nadbav); {
if (ioresult<>0) or (mas[size].nadbav<1) then begin {условие, начало}
gotoxy(25,3); textbackground(12); write('Oshibca vvoda,budte vnimatelnee'); {перемещение указателя}
textbackground(25); {смена цвета фона}
goto metk3; {метка}
end; {конец}
gotoxy(25,3); {перемещение указателя}
mas[size].otpcena:=(mas[size].
textbackground(12); gotoxy(64,size+6); {смена цвета фона, перемещение указателя}
writeln(mas[size].otpcena:4:2,
textbackground(25); {смена цвета фона}
end; {конец}
met: {метка}
size:=size-1; {присвоение}
for i:=1 to size do write(f,mas[i]); {цикл}
met1:kont2:=0; {метка}
{$I+}
end; {конец}
Procedure vivod; {процедура}
label met1,metka; {метка}
begin {начало}
{$i-}
reset(f);
if ioresult<>0 then begin {условие}
textbackground(12); {смена цвета фона}
gotoxy(16,23); Write('Oshibka pri otkritie faila dla zapisi'); {вывод на экран}
Readln; {задержка}
temp1:=1; {присвоение}
textbackground(25); {смена цвета фона}
goto met1; {метка}
end; {конец}
{$i+}
clrscr; {очистка экрана}
size:=0; {присвоение}
case kont of
0:
Writeln('_"*"-vihod___________
1:
Writeln('_____________________
2:
Writeln('_____________________
3:
Writeln('_____________________
end;
Writeln(''); {вывод на экран}
Writeln('');
Writeln('_____________________
Writeln(' Naimenovanie * Zakup. cena * Nadbavka * Otpucknaa cena *');
Writeln('---------------------
Writeln('+____________________
Writeln('* Naimenovanie + Zakupo4naa cena + Nadbavka + Otpucknaa cena ');
Writeln('*--------------------
gotoxy(1,7); {перемещение курсора}
While not eof(f) do begin {цикл}
size:=size+1; {присвоение}
read(f,mas[size]); {ввод с клавы}
Writeln('
Writeln('
gotoxy(2,size+6);Write(size,'.
gotoxy(5,size+6);Writeln('*
',mas[size].naimen);Readln; {
gotoxy(25,size+6);Writeln('*
',mas[size].zakcena:1:1);
gotoxy(40,size+6);Writeln('*
',mas[size].nadbav:4:1);
gotoxy(54,size+6);Writeln('*
',mas[size].otpcena:10:1,'rub
Readln; {задержка}
end; {конец}
if kont2=0 then begin {условие}
if size=0 then begin {условие}
gotoxy(36,12);textbackground(
textbackground(25); end; {смена цвета фона, конец}
end; {конец}
if kont1=1 then begin {условие}
textbackground(12); {смена цвета фона}
gotoxy(25,3);Write('Nashmite Enter dla vihoda menu:');Readln; {вывод на экран, ввод с клавиатуры}
textbackground(25); {смена цвета фона}
end; {конец}
met1: {метка}
end; {конец}
Procedure sort; {процедура}
Label met,met2,met3,met4,met5,met6,
Var {оператор переменных}
i1,size1,min,max,max1:integer;
begin {начало}
if size=0 then begin gotoxy(10,3);textbackground(
Write('Net dannih dla sortirovki faila,Enter-vihod'); {вывод на экран}
readln; {задержка}
textbackground(25); {смена цвета фона}
goto met7; {метка}
end; {конец}
While true do begin {цикл}
met6:textbackground(12); {
{$i-}
Repeat {цикл}
gotoxy(20,3);Write('Vvedite nomer ctolbca dla sortirovki(11-vihod:'); {вывод на экран}
readln(stolb); {ввод с клавиатуры}
if stolb=11 then goto met7; {условие}
until ioresult=0; {конец цикла}
{$i+}
if stolb>5 then begin {условие}
gotoxy(20,3);Write('Macsimalni nomer stolbca-5:'); Readln;Goto met6; {вывод на экран, метка}
end; {конец}
textbackground(25); {смена цвета фона}
{$i-}
rewrite(f);
if ioresult<>0 then begin {условие}
textbackground(12); {смена цвета фона}
gotoxy(16,23); Writeln('Oshibka pri otcritii faila dla zapisi'); {вывод на экран}
Readln; {задержка}
textbackground(25); {смена цвета фона}
goto met7; {метка}
end; {конец}
{$i+}
case stolb of {оператор ввода метки}
1:begin {начало}
met2:i:=0; {метка, обнуление}
for i:=1 to (size-1) do {цикл}
if mas[i].naimen>mas[i+1].naimen then begin {условие}
tovar:=mas[i];mas[i]:=mas[i+1]
goto met2 end; {метка, конец}
for i:=1 to size do write(f,mas[i]); {цикл}
vivod;
end; {конец}
2:begin {начало}
met3:i:=0; {метка, обнуление}
for i:=1 to (size-1) do {цикл}
if mas[i].zakcena>mas[i+1].
tovar:=mas[i]; mas[i]:=mas[i+1]; mas[i+1]:=tovar; {формула}
goto met3 end; {метка, конец}
for i:=1 to size do write(f,mas[i]); {цикл}
vivod;
end; {конец}
3:begin {начало}
met4:i:=0; {метка, обнуление}
for i:=1 to (size-1) do {цикл}
if mas[i].nadbav>mas[i+1].nadbav then begin {условие}
tovar:=mas[i]; mas[i]:=mas[i+1]; mas[i+1]:=tovar; {формула}
goto met4 end; {метка, конец}
for i:=1 to size do write(f,mas[i]); {цикл}
vivod;
end; {конец}
4:begin {начало}
met:i:=0; {обнуление}
for i:=1 to (size-1) do {цикл}
if mas[i].otpcena>mas[i+1].
tovar:=mas[i]; mas[i]:=mas[i+1]; mas[i+1]:=tovar; {формула}
goto met end; {конец}
for i:=1 to size do write(f,mas[i]); {цикл}
vivod;
end; {конец}
end; {конец}
end; {конец}
met7:textbackground(25); {
end; {конец}
Procedure del; {процедура}
Label met,met1,metk; {метка}
Begin {начало}
if size=0 then begin gotoxy(10,3); {условие}
Информация о работе Составить программу с горизонтальным типом меню