Manipulação de arquivos

Publicado por Hudson Orsine Assumpção 10/08/2006

[ Hits: 7.141 ]

Download lanchonete.pas




Código-fonte de um trabalho de Estrutura de Dados II com o tema: Manipulação de Arquivos. O programa é apenas um exemplo de como se trabalha com arquivos binários.

  



Esconder código-fonte

{Autores: Hudson Orsine Assumpção
          Marcus Vinícius Gomes Aragão
          Luis Augusto Bernardes Tegedor
Função: Implementar as vendas de uma lanchonete armazenando os dados das vendas e apresentando-os quando pedido
Data: 12/04/2006
Linguagem: Pascal}

program LANCHONETE;
uses crt;
type
   date        = record
        DAY,                      {Registro usado para guardar a data presente no arquivo data.mhl}
        MONTH,
        YEAR:integer;
          end;
   vetor     = array[0..4] of real;
   ponteiro  = ^registro;
   registro  = record
        PROX,ANT : ponteiro;      {Registro usado para manter uma lista duplamente encadeada com os ítens da venda atual}
        CODPROD  : char;
        QUANT      : integer;
          end;      
   listaprod = ^registro2;
   registro2 = record
        ANT,PROX : pointer;       {Registro usado apenas para manter o controle da lista}
        QUANT      : integer;
          end;      
   vendedor  = record      
        NOME : string[10];        {Registro usado para armazenar o nome do atendente}
          end;    
   prod        = record      
        COD   : char;             {Registro usado para armazenar as informações de um produto}
        NOME   : string[15];
        PRECO   : real;
          end;   
   venda     = record      
        COD,                       {Registro usado para armazenar todas as informações de uma venda}
        QUANTA,
        QUANTB,
        QUANTC,
        QUANTD,
        NOMEAT,
        QUANTE: integer;
        VALOR   : real;        
          end;   
   fechadia = record
       DIA,                       {Registro usado para armazenar as informações de todas as vendas efetuadas no dia}
       MES,
       ANO,
       QUANTAA,
       QUANTBB,
       QUANTCC,
       QUANTDD,
       QUANTEE:integer;
       TOTVENDAS,       
       MEDVENDAS:real;
       TOTATEND:vetor;
         end;
var
   ATEND   : file of vendedor;
   PRODUTO : file of prod;
   LANCHE  : file of venda;
   RESUMO  : file of fechadia;
   DATA      : file of date;
procedure ABREDATA;
var                                         {Procedimento para a abertura do arquivo 'data.mhl'}
   Y : date;
begin
   assign(DATA,'data.mhl');
   {$I-}
   reset(DATA);
   {$I+}
   if ioresult<>0 then
   begin
      rewrite(DATA);
      with Y do          {Esse trecho evita um erro de leitura que aconteceria se o arquivo estivesse vazio}
      begin              {já que a primeira operação que é feita com o arquivo (após a abertura) é a leitura}
    DAY:=0;
    MONTH:=0;
    YEAR:=0;    
      end;
      write(DATA,Y);
      close(DATA);
      ABREDATA;
   end;
end; { ABREDATA }
procedure ABREATENDENTE;
begin                               {Procedimento para a abertura do arquivo 'atendente.mhl'}
   assign(ATEND,'atendente.mhl');
   {$I-}
   reset(ATEND);
   {$I+}
   if ioresult<>0 then
      rewrite(ATEND);
end; { ABREATENDENTE }
procedure ABREPRODUTO;
begin                               {Procedimento para a abertura do arquivo 'produto.mhl'}
   assign(PRODUTO,'produto.mhl'); 
   {$I-}
   reset(PRODUTO);
   {$I+}
   if ioresult<>0 then
      rewrite(PRODUTO);
end; { ABREPRODUTO }
procedure ABRELANCHE;
begin                               {Procedimento para a abertura do arquivo 'lanche.dat'}
   assign(LANCHE,'lanche.dat');
   {$I-}
   reset(LANCHE);
   {$I+}
   if ioresult<>0 then
      rewrite(LANCHE);
end; { ABRELANCHE }
procedure ABRERESUMO;
begin                               {Procedimento para a abertura do arquivo 'resumo.dat'}
   assign(RESUMO,'resumo.dat');
   {$I-}
   reset(RESUMO);
   {$I+}
   if ioresult<>0 then
      rewrite(RESUMO);
end; { ABRERESUMO }
procedure PINTAFUNDO (bkcolor :integer) ;
var
   LINHA,                             {Procedimento usado para 'pintar' o fundo da tela com uma cor passada por parâmetro}
   COL:integer;   
begin
   textbackground(bkcolor);
   for LINHA:=1 to 25 do
      for COL:=1 to 80 do
      begin
    gotoxy(COL,LINHA);
    write(' ');
      end;
end; { PINTAFUNDO }
procedure MENSERRO;
var
   LINE,
   COLUN:integer;
begin
   window(26,12,56,18);                
   PINTAFUNDO(0);
   window(25,11,55,17);                {Exibe uma mensagem de erro}
   textbackground(4);
   for LINE:=11 to 17 do
      for COLUN:=25 to 55 do
      begin
    gotoxy(COLUN,LINE);    
    if ((LINE=11) or (LINE=17)) or ((COLUN=25) or (COLUN=55)) then
       write('#')
    else
       write(' ');
      end;   
   textcolor(14);
   gotoxy(13,4);
   write('ERRO');
   readln;
end; { MENSERRO }
procedure CADATEND;
var                                    {Efetua o cadastro de um novo atendente}
   CAD : vendedor;
begin
   ABREATENDENTE;
   PINTAFUNDO(1);
   if filesize(ATEND)=5 then            {Essa linha limita a quantidade de atendentes que podem ser cadastrados}
      MENSERRO                          {pois o arquivo resumo.dat exige as informações de venda de cada vendedor} 
   else                                 {portanto se não se o limite não fosse colocado, não saberíamos quantos atendentes}
   begin                                {estariam cadastrados, o que impossibilitaria a manipulação correta do registro usado no arquivo}
      textcolor(10);
      gotoxy(25,4);
      writeln('CADASTRO DE ATENDENTES');
      gotoxy(1,7);
      write('Nome: ');
      readln(CAD.NOME);
      seek(ATEND,filesize(ATEND));
      write(ATEND,CAD);
      gotoxy(1,22);
      writeln('CADASTRO EFETUADO COM SUCESSO!');
      writeln('Pressione uma tecla para continuar...');
      readln;
   end;
   close(ATEND);
end; { CADATEND }
procedure CADPROD;
var                                           {Procedimento que efetua o cadastro de um produto}
   CAD : prod;
begin
   PINTAFUNDO(1);                             {Como foi dito anteriormente o arquivo resumo.dat pede as informações de venda de}
   ABREPRODUTO;                               {cada atendente, esse arquivo também pede a quantidade vendida de cada produto}
   if filesize(PRODUTO)=5 then                {portanto o limite da quantidade de produtos também foi necessária}
      MENSERRO
   else
   begin
      textcolor(10);
      seek(PRODUTO,filesize(PRODUTO));
      gotoxy(25,4);
      writeln('CADASTRO DE PRODUTOS');
      gotoxy(1,8);
      writeln('Codigo:');
      writeln('Nome:');
      gotoxy(30,9);
      write('Preco:');
      gotoxy(9,8);      
      readln(CAD.COD);
      gotoxy(7,9);
      readln(CAD.NOME);
      gotoxy(37,9);
      readln(CAD.PRECO);
      write(PRODUTO,CAD);
      gotoxy(1,22);
      writeln('CADASTRO EFETUADO COM SUCESSO!');
      writeln('Pressione uma tecla para continuar...');
      readln;
   end;
   close(PRODUTO);
end; { CADPROD }
procedure VENDAITEM (var L : listaprod;var ACHOU:boolean;var LOCAL:integer;var ITEM:ponteiro;var TEMP2:integer);
var
   LINHA1 : integer;                               {Efetua a venda de um ítem, colocando ele no início da fila caso não haja nenhum}
   AUX4     : prod;                                  {produto. Caso a lista ja tenha sido inicializada, uma busca é feita para se saber}
   TEMP     : char;                                  {se o mesmo produto já estava na lista; evitando assim que uma alocação desnecessária}
begin                                              {seja efetuada, caso o produto não esteja na lista, uma nova alocação é feita}
   window(1,20,80,25);
   PINTAFUNDO(2);
   ACHOU:=false;
   textcolor(0);
   seek(PRODUTO,0);
   read(PRODUTO,AUX4);
   LINHA1:=1;
   while not eof(PRODUTO) do
   begin
      gotoxy(45,LINHA1);
      write(AUX4.COD,' -> ',AUX4.NOME);
      gotoxy(70,LINHA1);
      write(' = ',AUX4.PRECO:6:2);
      LINHA1:=LINHA1+1;
      read(PRODUTO,AUX4);
   end;
   gotoxy(45,LINHA1);
   write(AUX4.COD,' -> ',AUX4.NOME);
   gotoxy(70,LINHA1);
   write(' = ',AUX4.PRECO:6:2);
   gotoxy(1,1);
   writeln('Codigo do produto: ');
   writeln('Quantidade:');
   if (L^.ANT=nil) and (L^.PROX=nil) then
   begin
      gotoxy(21,1);
      readln(TEMP);
   end   
   else
   begin
      gotoxy(21,1);
      readln;
      readln(TEMP);
   end;      
   while ((TEMP<>'A') and (TEMP<>'B')) and (((TEMP<>'C') and (TEMP<>'D')) and (TEMP>'E')) do
   begin
      gotoxy(1,4);
      writeln('ERRO! Entre com um código válido!');
      gotoxy(21,1);
      readln(TEMP);
   end;
   gotoxy(14,2);
   readln(TEMP2);
   if (L^.ANT=nil) and (L^.PROX=nil) then
   begin
      new(ITEM);
      ITEM^.ANT:=nil;
      L^.ANT:=ITEM;
      ITEM^.PROX:=nil;
      L^.PROX:=ITEM;
      L^.QUANT:=L^.QUANT+1;
      ITEM^.CODPROD:=TEMP;
      ITEM^.QUANT:=TEMP2;
   end
   else
   begin
      ITEM:=L^.ANT;
      while (ITEM^.PROX<>nil) and (ITEM^.CODPROD<>TEMP) do
      begin
    LOCAL:=LOCAL+1;
    write(ITEM^.CODPROD,'<>',TEMP);
    ITEM:=ITEM^.PROX;
      end;
      if ITEM^.CODPROD=TEMP then
       ACHOU:=true;
      if ACHOU then
    ITEM^.QUANT:=ITEM^.QUANT+TEMP2
      else
      begin
    new(ITEM);
    ITEM^.ANT:=L^.PROX;
    ITEM^.ANT^.PROX:=ITEM;
    ITEM^.PROX:=nil;
    L^.PROX:=ITEM;
    L^.QUANT:=L^.QUANT+1;
    LOCAL:=LOCAL+1;
    ITEM^.CODPROD:=TEMP;
    ITEM^.QUANT:=TEMP2;
      end;
   end;
end; { VENDAITEM }
procedure CONTAQUANT (var AUX22   : venda;L:listaprod);
var
   Q : ponteiro;
begin
   with AUX22 do                                {Este procedimento conta a quantidade vendida de cada produto}
   begin                                        {e desaloca todos os nós da lista, liberando-a para uma nova venda}
      QUANTA:=0;
      QUANTB:=0;
      QUANTC:=0;
      QUANTD:=0;
      QUANTE:=0;
   end;
   repeat
      Q:=L^.ANT;
      if Q^.PROX<>nil then
    Q^.PROX^.ANT:=nil;
      L^.QUANT:=L^.QUANT-1;
      L^.ANT:=Q^.PROX;
      if L^.ANT=nil then
    L^.PROX:=nil;
      if Q^.CODPROD='A' then
    AUX22.QUANTA:=AUX22.QUANTA+Q^.QUANT;
      if Q^.CODPROD='B' then
    AUX22.QUANTB:=AUX22.QUANTB+Q^.QUANT;
      if Q^.CODPROD='C' then
    AUX22.QUANTC:=AUX22.QUANTC+Q^.QUANT;
      if Q^.CODPROD='D' then
    AUX22.QUANTD:=AUX22.QUANTD+Q^.QUANT;
      if Q^.CODPROD='E' then
    AUX22.QUANTE:=AUX22.QUANTE+Q^.QUANT;
      dispose(Q);
   until L^.ANT=nil;
end; { CONTAQUANT }
procedure VENDACOMPLETA;
var
   ACAO   : char;               {Este procedimento chama dois outros procedimentos: VENDAITEM e CONTAQUANT}
   P   : ponteiro;           {após isso grava os dados necessários em 'lanche.dat'}
   AUX   : prod;
   AUX2   : venda;
   AUX3   : vendedor;
   LINHA,
   CODFUNC,
   QUANTFORA : integer;
   PRECOITEM:real;
   LISTA   : listaprod;
   LOCALIZADO:boolean;
begin   
   new(LISTA);
   LISTA^.ANT:=nil;
   LISTA^.PROX:=nil;
   LISTA^.QUANT:=0;
   PINTAFUNDO(1);
   textcolor(10);
   AUX2.VALOR:=0;
   ACAO:='S';
   ABREPRODUTO;
   ABREATENDENTE;
   gotoxy(25,3);
   write('VENDA');
   gotoxy(1,6);
   write('Informe o codigo do atendente:');
   window(61,7,79,13);
   PINTAFUNDO(0);
   window(60,6,78,12);
   PINTAFUNDO(5);
   read(ATEND,AUX3);
   while not eof(ATEND) do
   begin
      writeln(' ',filepos(ATEND)-1,' -> ',AUX3.NOME);
      read(ATEND,AUX3);
   end;
   writeln(' ',filepos(ATEND)-1,' -> ',AUX3.NOME);
   window(1,1,80,25);
   textbackground(1);
   textcolor(2);
   gotoxy(32,6);
   readln(CODFUNC);
   while (CODFUNC>4) or (CODFUNC<0) do
   begin
      gotoxy(1,10);
      writeln('ERRO! Entre com um valor valido!');
      gotoxy(32,6);
      readln(CODFUNC);
   end;
   window(1,1,80,19);
   PINTAFUNDO(1);
   gotoxy(25,3);
   write('    Lanchonete ESTRUTURA DO SABOR');
   gotoxy(25,4);
   write('Saboreie nossas delicias passo a passo!');
   gotoxy(35,6);
   write('VENDA');
   gotoxy(1,7);
   seek(ATEND,CODFUNC);
   read(ATEND,AUX3);
   writeln('Atendente: ',AUX3.NOME);
   gotoxy(7,9);
   writeln('Quant');
   gotoxy(15,9);
   writeln('Descricao');
   gotoxy(27,9);
   writeln('Valor');
   while (ACAO='S') or (ACAO='s') do
   begin
      LINHA:=11;
      VENDAITEM(LISTA,LOCALIZADO,LINHA,P,QUANTFORA);
      window(1,1,80,19);
      seek(PRODUTO,0);
      read(PRODUTO,AUX);
      while (not eof(PRODUTO)) and (P^.CODPROD<>AUX.COD) do
    read(PRODUTO,AUX);
      gotoxy(10,LINHA);
      write(P^.QUANT);
      gotoxy(13,LINHA);
      write(AUX.NOME);
      gotoxy(25,LINHA);
      PRECOITEM:=P^.QUANT*AUX.PRECO;
      write(PRECOITEM:6:2);
      gotoxy(65,18);
      if not LOCALIZADO then
    AUX2.VALOR:=AUX2.VALOR+PRECOITEM
      else
      begin
    QUANTFORA:=P^.QUANT-QUANTFORA;
    PRECOITEM:=QUANTFORA*AUX.PRECO;
    PRECOITEM:=P^.QUANT*AUX.PRECO-PRECOITEM;
    AUX2.VALOR:=AUX2.VALOR+PRECOITEM;
      end;
      write(AUX2.VALOR:6:2);
      gotoxy(1,18);      
      write('Deseja inserir outro produto? ');
      gotoxy(30,18);
      read(ACAO);      
   end;   
   ABRELANCHE;
   CONTAQUANT(AUX2,LISTA);
   dispose(LISTA);
   AUX2.NOMEAT:=CODFUNC;
   AUX2.COD:=filesize(LANCHE);
   seek(LANCHE,filesize(LANCHE));
   write(LANCHE,AUX2);
   close(PRODUTO);
   close(ATEND);
   close(LANCHE);
   readln;
end; { VENDACOMPLETA }
procedure RELATORIO;
var
   RESUMODIA : fechadia;          {Este procedimento coleta todos os dados referentes ao dia e os grava no arquivo 'resumo.dat'}
   VENDADIA  : venda;             {Além disso apresenta na tela os valores contidos em 'resumo.dat'} 
   LINHA,
   T        : integer;
   AUX7836   : vendedor;
   DATATO    : date;
   ACHOU:boolean;
begin
   ACHOU:=FALSE;
   window(1,1,80,25);
   PINTAFUNDO(1);
   ABREDATA;
   read(DATA,DATATO);
   ABRERESUMO;
   if filesize(RESUMO)>0 then
   begin
      repeat
    read(RESUMO,RESUMODIA);
    if (RESUMODIA.DIA=DATATO.DAY) and ((RESUMODIA.MES=DATATO.MONTH) and (RESUMODIA.ANO=DATATO.YEAR)) then
       ACHOU:=TRUE;
      until (eof(RESUMO)) or (ACHOU);
      if not ACHOU then
      begin
    seek(RESUMO,filesize(RESUMO));
    RESUMODIA.DIA:=DATATO.DAY;
    RESUMODIA.MES:=DATATO.MONTH;
    RESUMODIA.ANO:=DATATO.YEAR;
    RESUMODIA.QUANTAA:=0;
    RESUMODIA.QUANTBB:=0;
    RESUMODIA.QUANTCC:=0;
    RESUMODIA.QUANTDD:=0;
    RESUMODIA.QUANTEE:=0;
    RESUMODIA.TOTVENDAS:=0;
    RESUMODIA.MEDVENDAS:=0;
    RESUMODIA.TOTATEND[0]:=0;
    RESUMODIA.TOTATEND[1]:=0;
    RESUMODIA.TOTATEND[2]:=0;
    RESUMODIA.TOTATEND[3]:=0;
    RESUMODIA.TOTATEND[4]:=0;
      end
      else
      begin
    ABRELANCHE;
    if filesize(LANCHE)>0 then
    begin
       RESUMODIA.QUANTAA:=0;
       RESUMODIA.QUANTBB:=0;
       RESUMODIA.QUANTCC:=0;
       RESUMODIA.QUANTDD:=0;
       RESUMODIA.QUANTEE:=0;
       RESUMODIA.TOTVENDAS:=0;
       RESUMODIA.MEDVENDAS:=0;
       RESUMODIA.TOTATEND[0]:=0;
       RESUMODIA.TOTATEND[1]:=0;
       RESUMODIA.TOTATEND[2]:=0;
       RESUMODIA.TOTATEND[3]:=0;
       RESUMODIA.TOTATEND[4]:=0;
    end;
    close(LANCHE);
      end;
   end
   else
   begin
      RESUMODIA.DIA:=DATATO.DAY;
      RESUMODIA.MES:=DATATO.MONTH;
      RESUMODIA.ANO:=DATATO.YEAR;
      RESUMODIA.QUANTAA:=0;
      RESUMODIA.QUANTBB:=0;
      RESUMODIA.QUANTCC:=0;
      RESUMODIA.QUANTDD:=0;
      RESUMODIA.QUANTEE:=0;
      RESUMODIA.TOTVENDAS:=0;
      RESUMODIA.MEDVENDAS:=0;
      RESUMODIA.TOTATEND[0]:=0;
      RESUMODIA.TOTATEND[1]:=0;
      RESUMODIA.TOTATEND[2]:=0;
      RESUMODIA.TOTATEND[3]:=0;
      RESUMODIA.TOTATEND[4]:=0;
   end;      
   ABRELANCHE;
   repeat
      read(LANCHE,VENDADIA);
      RESUMODIA.QUANTAA:=RESUMODIA.QUANTAA+VENDADIA.QUANTA;
      RESUMODIA.QUANTBB:=RESUMODIA.QUANTBB+VENDADIA.QUANTB;
      RESUMODIA.QUANTCC:=RESUMODIA.QUANTCC+VENDADIA.QUANTC;
      RESUMODIA.QUANTDD:=RESUMODIA.QUANTDD+VENDADIA.QUANTD;
      RESUMODIA.QUANTEE:=RESUMODIA.QUANTEE+VENDADIA.QUANTE;
      RESUMODIA.TOTVENDAS:=RESUMODIA.TOTVENDAS+VENDADIA.VALOR;
      RESUMODIA.MEDVENDAS:=RESUMODIA.TOTVENDAS/filesize(LANCHE);
      case VENDADIA.NOMEAT of
        0 : RESUMODIA.TOTATEND[0]:=RESUMODIA.TOTATEND[0]+VENDADIA.VALOR;
        1 : RESUMODIA.TOTATEND[1]:=RESUMODIA.TOTATEND[1]+VENDADIA.VALOR;
        2 : RESUMODIA.TOTATEND[2]:=RESUMODIA.TOTATEND[2]+VENDADIA.VALOR;
        3 : RESUMODIA.TOTATEND[3]:=RESUMODIA.TOTATEND[3]+VENDADIA.VALOR;
        4 : RESUMODIA.TOTATEND[4]:=RESUMODIA.TOTATEND[4]+VENDADIA.VALOR;
      end; { case }
   until eof(LANCHE);
   write(RESUMO,RESUMODIA);
   close(LANCHE);
   window(1,1,80,25);
   PINTAFUNDO(1);
   gotoxy(30,3);
   writeln('RESUMO DO DIA');
   gotoxy(1,5);
   write(RESUMODIA.DIA,'/',RESUMODIA.MES,'/',RESUMODIA.ANO);
   gotoxy(3,7);
   writeln('Produto A: ',RESUMODIA.QUANTAA);
   gotoxy(3,8);
   writeln('Produto B: ',RESUMODIA.QUANTBB);
   gotoxy(3,9);
   writeln('Produto C: ',RESUMODIA.QUANTCC);
   gotoxy(3,10);
   writeln('Produto D: ',RESUMODIA.QUANTDD);
   gotoxy(3,11);
   writeln('Produto E: ',RESUMODIA.QUANTEE);
   gotoxy(40,7);
   write('Total arrecadado......: ',RESUMODIA.TOTVENDAS:6:2);
   gotoxy(40,8);
   write('Valor medio por pedido: ',RESUMODIA.MEDVENDAS:6:2);
   ABREATENDENTE;
   gotoxy(3,14);
   write('Vendedor');
   gotoxy(30,14);
   write('Total vendido');
   LINHA:=16;
   T:=0;
   read(ATEND,AUX7836);
   while not eof(ATEND) do
   begin
      gotoxy(3,LINHA);
      write(AUX7836.NOME);
      gotoxy(30,LINHA);
      write(RESUMODIA.TOTATEND[T]:6:2);
      T:=T+1;
      read(ATEND,AUX7836);
      LINHA:=LINHA+1;
   end;
   gotoxy(3,LINHA);
   write(AUX7836.NOME);
   gotoxy(30,LINHA);
   write(RESUMODIA.TOTATEND[T]:6:2);
   gotoxy(1,25);
   textcolor(142);
   writeln('Pressione uma tecla para continuar...');
   readln;
   close(ATEND);
   close(RESUMO);
end; { RELATORIO }
procedure MOSTRAEQUIPE;                                  {Procedimento que apresenta a tela inicial contendo os integrantes da equipe}
begin
   window(1,1,80,25);
   PINTAFUNDO(2);
   textcolor(1);
   gotoxy(15,2);
   writeln('UNIMONTES - UNIVERSIDADE ESTADUAL DE MONTES CLAROS');
   gotoxy(15,3);
   writeln('  CCET - CENTRO DE CIENCIAS EXATAS E TECNOLOGICAS');
   gotoxy(15,4);
   writeln('   DCC - DEPARTAMENTO DE CIENCIAS DA COMPUTACAO');
   writeln('________________________________________________________________________________');
   gotoxy(25,7);
   write('LANCHONETE ESTRUTURA DO SABOR');
   gotoxy(20,8);
   write('Saboreie nossas delicias passo a passo!');
   gotoxy(1,15);
   writeln('EQUIPE 3 - MVGA & BREVLEQ ASSOCIATIONS');
   writeln;
   writeln('Integrantes: Hudson Orsine Assumpcao (brevleq)');
   writeln('             Marcus Vinicius Gomes Aragao (MVGA)');
   writeln('             Luis Augusto Bernardes Tegedor (Pai)');
   gotoxy(1,24);
   textcolor(128);
   write('Pressione uma tecla para continuar...');
   readln;
end; { MOSTRAEQUIPE }
procedure TELAPRINCIPAL;
var
   OPCAO : char;                            {Procedimento que apresenta a tela principal, onde o usuário pode trabalhar com o programa}
begin                                       {através das opções que esse procedimento é capaz de ler}
   OPCAO:='K';
   while (OPCAO<>'S') and (OPCAO<>'s') do
   begin
      window(1,1,80,25);
      PINTAFUNDO(1);
      textcolor(14);
      gotoxy(25,3);
      write('LANCHONETE ESTRUTURA DO SABOR');
      gotoxy(32,6);
      textcolor(142);
      writeln('OPCOES _');
      gotoxy(32,7);
      writeln('        |');
      gotoxy(32,8);
      writeln('        V');
      textcolor(14);
      gotoxy(30,10);
      write('          C - Cadastro de atendentes');
      gotoxy(30,11);
      write('          P - Cadastro de produtos');
      gotoxy(30,12);
      write('          V - Efetuar venda');
      gotoxy(30,13);
      write('          R - Resumo do dia');
      gotoxy(30,14);
      write('          S - Sair');
      gotoxy(1,20);
      write('Digite a acao desejada: ');
      readln(OPCAO);
      case OPCAO of
   'C','c'   : CADATEND;
   'P','p'   : CADPROD;
   'V','v'   : VENDACOMPLETA;
   'R','r'   : RELATORIO;   
   'S','s'   : write('brevleq');
      else
    MENSERRO;
      end; { case }
   end;
end; { TELAPRINCIPAL }
procedure TESTADATA;
var                            {Esse procedimento testa se a data atual é igual a da data guardada no arquivo 'data.mhl'}
   DT : date;                  {caso a data seja diferente esse procedimento limpa todos os dados contidos em 'lanche.dat'}
   DIAS,
   MESES,
   ANOS:integer;
begin
   clrscr;
   ABREDATA;
   read(DATA,DT);
   window(1,1,30,5);
   PINTAFUNDO(0);
   textcolor(15);
   gotoxy(1,1);
   writeln('Insira a data de hoje!');
   gotoxy(1,3);
   writeln('Dia:    Mes:     Ano:');
   gotoxy(5,3);
   readln(DIAS);
   gotoxy(13,3);
   readln(MESES);
   gotoxy(22,3);
   readln(ANOS);
   with DT do
   begin
      if ((DAY<>DIAS) and (MONTH<>MESES)) and (YEAR<>ANOS) then
      begin
    DAY:=DIAS;
    MONTH:=MESES;
    YEAR:=ANOS;
    rewrite(DATA);
    write(DATA,DT);
    ABRELANCHE;
    rewrite(LANCHE);
    close(LANCHE);
      end;
   end;
   close(DATA);
end; { TESTADATA }   
begin
   TESTADATA;
   MOSTRAEQUIPE;
   TELAPRINCIPAL;
end.

Scripts recomendados

Funções de Manipulação de Arquivos Pascal

Visualizador De Imagem feito no Lazarus (Delphi 7 para Linux)

Arquivo texto

Criando Objetos 2

[Script Pascal] Verificando quantos Caracteres por Segundo tem a legenda


  

Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts