{
Criar um arquivo: cadastro.db e cadprod5.db
}
Program CADASTRO;
uses crt;
type
    ficha = record
    cod:integer;
    descricao:string;
    preco,qtd:real;
    end;
VAR
  aux:ficha;
  arq:file of ficha;
  preco5:file of ficha;
  op:char;

PROCEDURE Cadastrar;
Var
   op:char;
begin
clrscr;
op:='s';
         WHILE ((op='s') or (op='S')) DO
         Begin
         CLRSCR;
         seek(arq,filesize(arq));
         aux.cod:=filesize(arq);
         Writeln ('DIGITE A DESCRICAO');
         Readln (aux.descricao);
         Writeln ('DIGITE A QUANTIDADE');
         Readln (aux.QTD);
         Writeln ('DIGITE O PRECO');
         Readln (aux.preco);
         Write(arq,aux);
         Writeln ('Deseja continuar cadastrando? S/N');
         op:=Readkey;
         end;
end;

PROCEDURE Imprimir;
Var linhas:integer;
begin
clrscr;
reset(arq);
linhas:=1;
         WRITELN ('ÉÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍ»');
         WriteLN ('º CODIGO º DESCRICAO                                     º QUANTIDADE º PRECO º');

         WHILE not eof(arq) DO
         Begin
              if linhas > 21 then
              begin
              Writeln (' Pressione qualquer tecla para continuar...');
              readkey;
              linhas:=0;
              clrscr;
              end;
         read (arq,aux);
         gotoxy(1,linhas+2);
         Write ('º ',aux.cod);
         gotoxy(10,linhas+2);

                             while length(aux.descricao)<50 do
                             aux.descricao:=aux.descricao+'.';
         Write ('º ',aux.descricao);
         gotoxy(58,linhas+2);
         Write ('º ',aux.QTD:8:2);
         gotoxy(70,linhas+2);
         Write (' º',aux.preco:7:2,'º ');
         linhas:=linhas+1;
         end;
         WRITE('ÈÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍ¼');

writeln;
Write('Pressione [ENTER]');
readkey;
end;

PROCEDURE Verifica;
Var
   Existe:boolean;
   Prod:integer;
begin
clrscr;
reset (arq);
    Writeln ('DIGITE O CODIGO DO PRODUTO');
    writeln;
    readln(prod);
    Existe := False;
                 While not eof(arq) do
                 begin
                 read (arq,aux);
                      if aux.cod = prod then
                      Existe := true;
                 end;
    If Existe then
    begin
    clrscr;
    writeln ('O PRODUTO JA ESTA CADASTRADO ');
    reset(arq);
    seek(arq,prod);
    writeln;
    read(arq,aux);
    Writeln('Codigo........',aux.cod);
    Writeln('Descricao.....',aux.descricao);
    Writeln('Estoque.......',aux.qtd:4:2);
    Writeln('Preco.........',aux.preco:6:2);
    end
    ELSE
    begin
    clrscr;
    textcolor(10);
    writeln (' O PRODUTO NAO ESTA CADASTRADO ');
    textcolor(15);
    end;
writeln;
Write('Pressione [ENTER]');
readkey;
END;

PROCEDURE Imp_Total;
Var linhas:integer;
begin
clrscr;
reset(arq);
linhas:=1;
         WRITELN ('ÉÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍ»');
         WriteLN ('º CODIGO º DESCRICAO                                     º VALOR TOTALº ESTOQ º');

         WHILE not eof(arq) DO
         Begin
              if linhas > 20 then
              begin
              Writeln (' Pressione qualquer tecla para continuar...');
              readkey;
              linhas:=0;
              clrscr;
              end;
         read (arq,aux);
         gotoxy(1,linhas+2);
         Write ('º ',aux.cod);
         gotoxy(10,linhas+2);
         Write ('º ',aux.descricao);
         gotoxy(58,linhas+2);
         Write ('º ',aux.QTD*AUX.QTD:8:2);
         gotoxy(70,linhas+2);
         Write (' º',aux.QTD:7:2,'º ');
         linhas:=linhas+1;
         end;
         WRITEln('ÈÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍ¼');
writeln;
Write('Pressione [ENTER]');
readkey;
end;

PROCEDURE ESTOQUE;
var
i:integer;
Begin
reset (arq);
assign(preco5,'a:\cadprod5.db'); { Arquivo com produtos que custam < R$5.00 }
reset(preco5);
clrscr;
i:=0;
IF filesize(preco5)=0 then
rewrite(preco5);
          Repeat
          read(arq,aux);
                        if aux.PRECO < 5 then
                        begin
                        writeln (' Produto......',aux.descricao);
                        Writeln (' Estoque......',aux.qtd:6:2);
                        Writeln (' Preco........',aux.preco:6:2);
                        writeln ('ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ');
                        write(preco5,aux);
                        i:=i+1;
                                          if i>4 then begin
                                          i:=0;
                                          writeln('Pressione qualquer tecla para continuar');
                                          readkey;
                                          end;
                        end;
          until eof(arq);
writeln;
Write('Pressione [ENTER]');
readkey;
readln;
end;

BEGIN { PROGRAMA PRINCIPAL }
Assign (arq,'c:\roberto\cadastro.db'); {Casdastro principal}
reset(arq);
       IF filesize(arq)=0 then
       rewrite(arq);
clrscr;
             while op<>'6' do
             begin
             clrscr;
             textcolor(0);
             textbackground(7);
             writeln('ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»');
             writeln('º                                        MENU                                º');
             writeln('º                                                                            º');
             writeln('º 1.CADASTRAR                                                                º');
             writeln('º 2.IMPRIMIR                                                                 º');
             writeln('º 3.PESQUISA                                                                 º');
             writeln('º 4.IMPRIMIR VALOR TOTAL DE CADA PRODUTO E ESTOQUE                           º');
             writeln('º 5.LISTAR PRODUTOS COM VALOR < R$ 5.00                                      º');
             writeln('º 6.SAIR                                                                     º');
             writeln('ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ¼');
             textcolor(15);
             textbackground(4);
             writeln;
             writeln;
             writeln;
             writeln('ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»');
             writeln('º                     PROGRAMA DESENVOLVIDO POR:                             º');
             writeln('º                                                                            º');
             writeln('º                                                                            º');
             writeln('º ROBERTO JUNDI FURUTANI  0061/02                                            º');
             writeln('º                                                                            º');
             writeln('º MATHEUS ROCHA           0731/02                                            º');
             writeln('º                                                                            º');
             writeln('º                      CIENCIA DA COMPUTACAO - NOTURNO                       º');
             writeln('ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ¼');
             textcolor(15);
             textbackground(0);
             gotoxy(1,11);
             op:=readkey;
                        case op of
                        '1':Cadastrar;
                        '2':Imprimir;
                        '3':Verifica;
                        '4':Imp_Total;
                        '5':Estoque;
                        '6':begin
                        Write('    Saindo....');
                        delay(500); end
                        else
                        begin
                        textcolor(10);
                        Write ('   Opcao Invalida');
                        delay(1000);
                        textcolor(15);
                        end;
             end;
end;
END.
