Ir ao conteúdo
  • Cadastre-se

Gerar arquivo


PaullahSuzany

Posts recomendados

Olá pessoal, por gentileza preciso muito da ajuda de vocês.

Meu trabalho final do semestre é criar um Sistema de Controle de Venda de Cerveja.

A linguagem é Pascal e o Compilador usado é o Dev-Pascal.

Todas as etapas principais do programa já estão prontas, contudo a última parte que é Gerar Arquivos com Pedido do Mês e aí está a dificuldade.

Tem que gerar 3 arquivos:

pedidosmes.arq -> Armazenar todos os pedidos do mês

rankingmes.arq -> Apresentar o vendedor ordenados por valor de vendas

precos.arq -> Conterá preço dos Produtos



uses crt;

const
qtdVendedores=10;
qtdTipoCerveja=5;
qtdPedidos=30;

type
TVendedor = record
codigoIdentificador:integer;
nome:string[30];
endereco:string[50];
telefone:integer;
dtadmissao:string[8];
end;

TPreco = record
tipo:string[30];
valor:real;
end;

TPedido = record
numPedido:integer;
nomeCliente:string[50];
nomeVendedor:string[50];
dtpedido:string[8];
qtdTpCerveja1:word; {LITRO}
qtdTpCerveja2:word; {LATAO}
qtdTpCerveja3:word; {LATA}
qtdTpCerveja4:word; {LATINHA}
qtdTpCerveja5:word; {LONG NECK}
valor:real;
situacao:boolean;
dtentrega:string[8];
observacao:string[50];
end;

var
opcaoMenu, maxVetVendedor, posVetVendedor, maxVetPedido: integer;
sair, arqCarregado, arqGerado: boolean;
vetVendedor: array[1..qtdVendedores] of TVendedor;
vetPreco: array[1..qtdTipoCerveja] of TPreco;
vetPedido: array[1..qtdPedidos] of TPedido;




procedure exibirTitulo();
begin
writeln('Gestao de Cervejaria - Sistema Informatizado (Versao 3.3)');
writeln(' Trabalheira... =) ')
end;


function verificarCadExistente(codigo:integer):string; {VERIFICA NOME DO VENDEDOR}
var cont: integer; encontrado: boolean;
begin
encontrado:=false;
cont:=0;
while (encontrado=false) and (cont<=qtdVendedores) do
begin
cont:=cont+1;
if codigo=vetVendedor[cont].codigoIdentificador then
encontrado:=true;
end;

if (encontrado=false) then
verificarCadExistente:=''
else
verificarCadExistente:=vetVendedor[cont].nome;
posVetVendedor:=cont;
end;


procedure cadastrarVendedor();
var
nome, cadastroExistente, endereco, dtadmissao: string[50];
escolha, codigo, telefone: integer;
begin
clrscr();
exibirTitulo();
writeln('----------------------------------');
writeln('CADASTRAR VENDEDOR');
writeln('----------------------------------');
writeln('Preencha os campos:');
writeln('');
write('Codigo: ');
readln(codigo);
write('Nome: ');
readln(nome);
write('Endereco: ');
readln(endereco);
write('Telefone: ');
readln(telefone);
write('Data de admissao(DD/MM/AAAA): ');
readln(dtadmissao);

cadastroExistente:=verificarCadExistente(codigo);

escolha:=0;

while (cadastroExistente<>'') do {VERIFICA CÓDIGO DO VENDEDOR}
begin
writeln('');
writeln('Ja existe um vendedor cadastrado com este codigo, e com o nome:' , cadastroExistente);
writeln('Escolha uma das opções:');
writeln('1. Atualizar o cadastro existente com os novos dados.');
writeln('2. Criar um novo cadastro, informando outro codigo identificador.');
writeln('3. Cancelar e voltar ao Menu do sistema.');
writeln('');
readln(escolha);

while ((escolha<>1) and (escolha<>2) and (escolha<>3)) do
begin
writeln('Opcao invalida, digite novamente: ');
readln(escolha);
end;

if (escolha=1) then
begin
cadastroExistente:='';
end
else if (escolha=2) then
begin
writeln('');
writeln('Informe outro Codigo Identificador para o vendedor: ');
readln(codigo);
cadastroExistente:=verificarCadExistente(codigo);
end
else if (escolha=3) then
begin
cadastroExistente:='';
end;
end;


if ((escolha=0) or (escolha=2)) then
begin
maxVetVendedor:=maxVetVendedor+1;
vetVendedor[maxVetVendedor].codigoIdentificador:=codigo;
vetVendedor[maxVetVendedor].nome:=nome;
vetVendedor[maxVetVendedor].endereco:=endereco;
vetVendedor[maxVetVendedor].telefone:=telefone;
vetVendedor[maxVetVendedor].dtadmissao:=dtadmissao;
writeln('Vendedor cadastrado. Pressione qualquer tecla para continuar...');
end
else if (escolha=1) then
begin
vetVendedor[posVetVendedor].nome:=nome;
vetVendedor[posVetVendedor].endereco:=endereco;
vetVendedor[posVetVendedor].telefone:=telefone;
vetVendedor[posVetVendedor].dtadmissao:=dtadmissao;
writeln('Dados atualizado. Pressione qualquer tecla para continuar...');
end;

readln;
end;


procedure preencherVetPreco(); {PREENCHER PRECO COM VALOR 0.00}
var cont: integer;
begin
for cont:=1 to qtdTipoCerveja do
begin
if (cont=1) then
begin
vetPreco[cont].tipo:='CERVEJA LITRO';
end
else if (cont=2) then
begin
vetPreco[cont].tipo:='CERVEJA LATAO';
end
else if (cont=3) then
begin
vetPreco[cont].tipo:='CERVEJA LATA';
end
else if (cont=4) then
begin
vetPreco[cont].tipo:='CERVEJA LATINHA';
end
else if (cont=5) then
begin
vetPreco[cont].tipo:='CERVEJA LONG NECK';
end;
vetPreco[cont].valor:=0.00;
end;
end;


procedure imprimirVetPreco(); {IMPRIMIR PRECO}
var cont: integer;
begin
writeln('COD':3,'| ','TIPO DO PRODUTO':17,' | ','PRECO':14);
writeln('- - - - - - - - - - - - - - - - -');
for cont:=1 to qtdTipoCerveja do
begin
writeln(' ',cont,' |',vetPreco[cont].tipo:30,' | ',vetPreco[cont].valor:2:2);
end;
end;


procedure informarPreco(); {CADASTRAR PREÇO}
var codigo: integer; valor: real;
begin
clrscr();
exibirTitulo();
writeln('----------------------------------');
writeln('CADASTRAR PRECO DE PRODUTO');
writeln('----------------------------------');
writeln('');
imprimirVetPreco();
writeln('');
writeln('-> Para atualizar o valor de um produto, preencha os campos:');
writeln('');

write('Codigo do produto: ');
readln(codigo);
while ((codigo<1) or (codigo>qtdTipoCerveja)) do
begin
write('-> voce digitou uma codigo inexistente, digite novamente: ');
read(codigo);
end;

write('Valor: ');
readln(valor);
while (valor<=0) do
begin
write('-> voce digitou um valor invalido, digite novamente: ');
readln(valor);
end;

vetPreco[codigo].valor:=valor;
writeln('-> Produto atualizado com sucesso. Pressione qualquer tecla para continuar...');

readkey;
end;


procedure cadastrarPedido(); {CADASTRAR PEDIDO}
var
nome, dtpedido, obs: string;
codVendedor, qtdItem1, qtdItem2, qtdItem3, qtdItem4, qtdItem5, codItem, qtdItem, cont:integer;
soma, valor:real;
adicionarItem:boolean;
escolha:char;
begin
clrscr();
exibirTitulo();
writeln('----------------------------------');
writeln('CADASTRAR PEDIDO');
writeln('----------------------------------');
writeln('');
writeln('-> Preencha os campos:');
writeln('');
writeln('Numero do pedido: (Gerado automaticamene pelo sistema na confirmacao do pedido)');
write('Nome do cliente: ');
readln(nome);
readln(nome);
write('Codigo vendedor: ');
readln(codVendedor);
// ********** testar codigo do vendedor

write('Data do pedido (DD/MM/AAAA): ');
readln(dtpedido);
write('Observacao: ');
readln(obs);

adicionarItem:=true; qtdItem1:=0; qtdItem2:=0; qtdItem3:=0; qtdItem4:=0; qtdItem5:=0;
writeln('');
writeln('-> Para adicionar um produto ao pedido, preencha os campos:');
writeln('');
imprimirVetPreco();
writeln('');

while (adicionarItem) do
begin
write('Codigo do produto: ');
readln(codItem);
// ********** testar codigo do produto

write('Quantidade: ');
readln(qtdItem);
// ********** testar codigo quantidade

CASE codItem OF
1 : qtdItem1:=qtdItem1+qtdItem;
2 : qtdItem2:=qtdItem2+qtdItem;
3 : qtdItem3:=qtdItem3+qtdItem;
4 : qtdItem4:=qtdItem4+qtdItem;
5 : qtdItem5:=qtdItem5+qtdItem;
END;

escolha:=' ';
write('-> Deseja incluir outro item? (S/N): ');
readln(escolha);
escolha:=UpCase(escolha);
if (escolha='N') then
adicionarItem:=false;
end;

soma:=0; valor:=0;
for cont:=1 to qtdTipoCerveja do
begin
if (cont=1) then soma:=soma+(vetPreco[cont].valor*qtdItem1);
if (cont=2) then soma:=soma+(vetPreco[cont].valor*qtdItem2);
if (cont=3) then soma:=soma+(vetPreco[cont].valor*qtdItem3);
if (cont=4) then soma:=soma+(vetPreco[cont].valor*qtdItem4);
if (cont=5) then soma:=soma+(vetPreco[cont].valor*qtdItem5);
end; // FIM FOR
valor:=soma;

writeln('');
writeln('-> O sistema simulou o pedido. Pressione qualquer tecla para visualizar...');
readkey();
writeln('');

writeln('% % % % % % % % % % % % % % % % % % % % % % % % % % % %');
writeln('Numero do pedido: -');
writeln('Nome do cliente: ',nome);
writeln('Codigo vendedor: ',codVendedor);
writeln('Data do pedido: ',dtPedido);
writeln('Descricao dos itens:');
writeln('- - - - - - - - - - - - - - - - - - - - - - - - - - -');
writeln('PRODUTO':18,' | ','VALOR UNIT':4,' | ','QTD':6,' | ','VALOR':8);

if qtdItem1<>0 then
writeln(' ',vetPreco[1].tipo:17,' | ',vetPreco[1].valor:10:2,' | ',qtdItem1:6,' | ',vetPreco[1].valor*qtdItem1:8:2);

if qtdItem2<>0 then
writeln(' ',vetPreco[2].tipo:17,' | ',vetPreco[2].valor:10:2,' | ',qtdItem2:6,' | ',vetPreco[2].valor*qtdItem2:8:2);

if qtdItem3<>0 then
writeln(' ',vetPreco[3].tipo:17,' | ',vetPreco[3].valor:10:2,' | ',qtdItem3:6,' | ',vetPreco[3].valor*qtdItem3:8:2);

if qtdItem4<>0 then
writeln(' ',vetPreco[4].tipo:17,' | ',vetPreco[4].valor:10:2,' | ',qtdItem4:6,' | ',vetPreco[4].valor*qtdItem4:8:2);

if qtdItem5<>0 then
writeln(' ',vetPreco[5].tipo:17,' | ',vetPreco[5].valor:10:2,' | ',qtdItem5:6,' | ',vetPreco[5].valor*qtdItem5:8:2);

writeln('- - - - - - - - - - - - - - - - - - - - - - - - - - -');
writeln('Valor Total: ',valor:2:2);
writeln('Situacao: -');
writeln('Data de entrega: -');
writeln('Observacao: ',obs);
writeln('% % % % % % % % % % % % % % % % % % % % % % % % % % % %');

escolha:=' ';
writeln('');
write('-> Deseja gravar este pedido? (S/N): ');
readln(escolha);
escolha:=UpCase(escolha);
if (escolha='S') then
begin
maxVetPedido:=maxVetPedido+1;

vetPedido[maxVetPedido].numPedido:=maxVetPedido;
vetPedido[maxVetPedido].nomeCliente:=nome;
vetPedido[maxVetPedido].nomeVendedor:=verificarCadExistente(codVendedor);
vetPedido[maxVetPedido].dtpedido:=dtpedido;
vetPedido[maxVetPedido].qtdTpCerveja1:=qtdItem1; {LITRO}
vetPedido[maxVetPedido].qtdTpCerveja2:=qtdItem2; {LATAO}
vetPedido[maxVetPedido].qtdTpCerveja3:=qtdItem3; {LATA}
vetPedido[maxVetPedido].qtdTpCerveja4:=qtdItem4; {LATINHA}
vetPedido[maxVetPedido].qtdTpCerveja5:=qtdItem5; {LONG NECK}
vetPedido[maxVetPedido].valor:=valor;
vetPedido[maxVetPedido].situacao:=false;
vetPedido[maxVetPedido].dtentrega:='';
vetPedido[maxVetPedido].observacao:=obs;

writeln('-> Pedido gerado com sucesso. Anote o codigo para consultas futuras: "',maxVetPedido,'".');
writeln(' Pressione qualquer tecla para continuar...');
end
else
begin
writeln('-> voce escolheu cancelar. A simulacao do pedido foi descartada.');
writeln(' Pressione qualquer tecla para continuar...');
end;

readkey();
end;


function validaNumeroPedido(numero:integer):boolean;
var
cont:integer;
begin
cont:=1;

if (maxVetPedido<numero) then
begin
validaNumeroPedido:=false;
end
else

while (vetPedido[cont].numPedido<>numero) do
begin
if (vetPedido[cont].numPedido<>numero) then
begin
validaNumeroPedido:=false;
end
else
begin
validaNumeroPedido:=true;
end;
cont:=cont+1;
end;

end;


procedure consultarPedido(); {CONSULTAR SITUACAO DO PEDIDO}
var
numero:integer;
numeroValido:boolean;
begin
clrscr();
exibirTitulo();
writeln('----------------------------------');
writeln('CONSULTAR SITUACAO DE PEDIDO');
writeln('----------------------------------');
writeln('');

if (maxVetPedido=0) then
begin
writeln('-> Nao existem pedido cadastrados. Pressione qualquer tecla para continuar...');
end
else
begin
write('-> Informe o numero do pedido: ');
readln(numero);
numeroValido:=false;
numeroValido:=validaNumeroPedido(numero);

while (numeroValido=false) do
begin
write(' Nao existe pedido cadastrado com este numero. Informe outro numero: ');
readln(numero);
numeroValido:=validaNumeroPedido(numero);
end;

if (vetPedido[numero].situacao=true) then
begin
writeln('');
writeln('-> O pedido foi atendido.');
writeln(' Pressione qualquer tecla para continuar...');
end
else
begin
writeln('');
writeln('-> O pedido nao foi atendido.');
writeln(' Pressione qualquer tecla para continuar...');
end;
end;

readkey();
end;


procedure alterarPedido(); {ALTERAR SITUACAO DE PEDIDO}
var
numero:integer;
numeroValido:boolean;
escolha:char;
begin
clrscr();
exibirTitulo();
writeln('----------------------------------');
writeln('ALTERAR SITUACAO DE PEDIDO');
writeln('----------------------------------');
writeln('');

if (maxVetPedido=0) then
begin
writeln('-> Nao existem pedidos cadastrados. Pressione qualquer tecla para continuar...');
end
else
begin
write('-> Informe o numero do pedido: ');
readln(numero);
numeroValido:=false;
numeroValido:=validaNumeroPedido(numero);

while (numeroValido=false) do
begin
write(' Nao existe pedido cadastrado com este numero. Informe outro numero: ');
readln(numero);
numeroValido:=validaNumeroPedido(numero);
end;

if (vetPedido[numero].situacao=true) then
begin
writeln('');
writeln('-> O pedido ja foi atendido. Nao sera possivel modifica-lo.');
writeln(' Pressione qualquer tecla para continuar...');
end
else
begin
writeln('');
write('-> O pedido nao foi atendido. Deseja alterar para ATENDIDO? (S/N): ');
readln(escolha);
escolha:=UpCase(escolha);
if (escolha='S') then
begin
vetPedido[numero].situacao:=true;
writeln('-> O status do pedido foi alterado com sucesso.');
writeln(' Pressione qualquer tecla para continuar...');
end
else
writeln('');
writeln('-> Pressione qualquer tecla para continuar...');
end;
end;


readkey();
end;


procedure gerarArquivo(); {GERAR ARQUIVOS}
begin
clrscr();
exibirTitulo();
writeln('----------------------------------');
writeln('GERAR ARQUIVOS');
writeln('----------------------------------');
writeln('');
begin

end;

writeln('-> Essa opcao esta sendo implementada. Aguarde a proxima versao.');
writeln(' Pressione qualquer tecla para continuar...');

readkey();
end;



procedure exibirMenu(); {MENU}
begin


writeln('----------------------------------');
writeln(' MENU');
writeln('----------------------------------');
writeln('1. Cadastrar vendedor.');
writeln('2. Cadastrar pedido.');
writeln('3. Informar preco de cerveja.');
writeln('4. Consultar situacao de pedido.');
writeln('5. Alterar situacao de pedido.');
writeln('6. Gerar arquivos com pedidos.');
writeln('7. Sair.');
writeln('');
write('-> Digite o numero da opcao desejada: ');
read(opcaoMenu);

while ((opcaoMenu<1) or (opcaoMenu>7)) do
begin
write('-> voce digitou uma opcao invalida, digite novamente: ');
read(opcaoMenu);
end;

CASE opcaoMenu OF
1 : cadastrarVendedor();
2 : cadastrarPedido();
3 : informarPreco();
4 : consultarPedido();
5 : alterarPedido();
6 : gerarArquivo();
7 : sair:=true;
END;

end;


begin

sair:=false;
maxVetVendedor:=0;
maxVetPedido:=0;
arqCarregado:=false;

if (arqCarregado=false) then
preencherVetPreco();


while (sair=false) do
begin
clrscr;
exibirTitulo();
exibirMenu();
end;

write('-> voce escolheu sair do sistema. Pressione qualquer tecla para finalizar...');


readkey();
end.
program Cervejaria;

Link para o comentário
Compartilhar em outros sites

  • Membro VIP
Olá pessoal, por gentileza preciso muito da ajuda de vocês.

Meu trabalho final do semestre é criar um Sistema de Controle de Venda de Cerveja.

A linguagem é Pascal e o Compilador usado é o Dev-Pascal.

Todas as etapas principais do programa já estão prontas, contudo a última parte que é Gerar Arquivos com Pedido do Mês e aí está a dificuldade.

Tem que gerar 3 arquivos:

pedidosmes.arq -> Armazenar todos os pedidos do mês

rankingmes.arq -> Apresentar o vendedor ordenados por valor de vendas

precos.arq -> Conterá preço dos Produtos



uses crt;

const
qtdVendedores=10;
qtdTipoCerveja=5;
qtdPedidos=30;

type
TVendedor = record
codigoIdentificador:integer;
nome:string[30];
endereco:string[50];
telefone:integer;
dtadmissao:string[8];
end;

TPreco = record
tipo:string[30];
valor:real;
end;

TPedido = record
numPedido:integer;
nomeCliente:string[50];
nomeVendedor:string[50];
dtpedido:string[8];
qtdTpCerveja1:word; {LITRO}
qtdTpCerveja2:word; {LATAO}
qtdTpCerveja3:word; {LATA}
qtdTpCerveja4:word; {LATINHA}
qtdTpCerveja5:word; {LONG NECK}
valor:real;
situacao:boolean;
dtentrega:string[8];
observacao:string[50];
end;

var
opcaoMenu, maxVetVendedor, posVetVendedor, maxVetPedido: integer;
sair, arqCarregado, arqGerado: boolean;
vetVendedor: array[1..qtdVendedores] of TVendedor;
vetPreco: array[1..qtdTipoCerveja] of TPreco;
vetPedido: array[1..qtdPedidos] of TPedido;




procedure exibirTitulo();
begin
writeln('Gestao de Cervejaria - Sistema Informatizado (Versao 3.3)');
writeln(' Trabalheira... =) ')
end;


function verificarCadExistente(codigo:integer):string; {VERIFICA NOME DO VENDEDOR}
var cont: integer; encontrado: boolean;
begin
encontrado:=false;
cont:=0;
while (encontrado=false) and (cont<=qtdVendedores) do
begin
cont:=cont+1;
if codigo=vetVendedor[cont].codigoIdentificador then
encontrado:=true;
end;

if (encontrado=false) then
verificarCadExistente:=''
else
verificarCadExistente:=vetVendedor[cont].nome;
posVetVendedor:=cont;
end;


procedure cadastrarVendedor();
var
nome, cadastroExistente, endereco, dtadmissao: string[50];
escolha, codigo, telefone: integer;
begin
clrscr();
exibirTitulo();
writeln('----------------------------------');
writeln('CADASTRAR VENDEDOR');
writeln('----------------------------------');
writeln('Preencha os campos:');
writeln('');
write('Codigo: ');
readln(codigo);
write('Nome: ');
readln(nome);
write('Endereco: ');
readln(endereco);
write('Telefone: ');
readln(telefone);
write('Data de admissao(DD/MM/AAAA): ');
readln(dtadmissao);

cadastroExistente:=verificarCadExistente(codigo);

escolha:=0;

while (cadastroExistente<>'') do {VERIFICA CÓDIGO DO VENDEDOR}
begin
writeln('');
writeln('Ja existe um vendedor cadastrado com este codigo, e com o nome:' , cadastroExistente);
writeln('Escolha uma das opções:');
writeln('1. Atualizar o cadastro existente com os novos dados.');
writeln('2. Criar um novo cadastro, informando outro codigo identificador.');
writeln('3. Cancelar e voltar ao Menu do sistema.');
writeln('');
readln(escolha);

while ((escolha<>1) and (escolha<>2) and (escolha<>3)) do
begin
writeln('Opcao invalida, digite novamente: ');
readln(escolha);
end;

if (escolha=1) then
begin
cadastroExistente:='';
end
else if (escolha=2) then
begin
writeln('');
writeln('Informe outro Codigo Identificador para o vendedor: ');
readln(codigo);
cadastroExistente:=verificarCadExistente(codigo);
end
else if (escolha=3) then
begin
cadastroExistente:='';
end;
end;


if ((escolha=0) or (escolha=2)) then
begin
maxVetVendedor:=maxVetVendedor+1;
vetVendedor[maxVetVendedor].codigoIdentificador:=codigo;
vetVendedor[maxVetVendedor].nome:=nome;
vetVendedor[maxVetVendedor].endereco:=endereco;
vetVendedor[maxVetVendedor].telefone:=telefone;
vetVendedor[maxVetVendedor].dtadmissao:=dtadmissao;
writeln('Vendedor cadastrado. Pressione qualquer tecla para continuar...');
end
else if (escolha=1) then
begin
vetVendedor[posVetVendedor].nome:=nome;
vetVendedor[posVetVendedor].endereco:=endereco;
vetVendedor[posVetVendedor].telefone:=telefone;
vetVendedor[posVetVendedor].dtadmissao:=dtadmissao;
writeln('Dados atualizado. Pressione qualquer tecla para continuar...');
end;

readln;
end;


procedure preencherVetPreco(); {PREENCHER PRECO COM VALOR 0.00}
var cont: integer;
begin
for cont:=1 to qtdTipoCerveja do
begin
if (cont=1) then
begin
vetPreco[cont].tipo:='CERVEJA LITRO';
end
else if (cont=2) then
begin
vetPreco[cont].tipo:='CERVEJA LATAO';
end
else if (cont=3) then
begin
vetPreco[cont].tipo:='CERVEJA LATA';
end
else if (cont=4) then
begin
vetPreco[cont].tipo:='CERVEJA LATINHA';
end
else if (cont=5) then
begin
vetPreco[cont].tipo:='CERVEJA LONG NECK';
end;
vetPreco[cont].valor:=0.00;
end;
end;


procedure imprimirVetPreco(); {IMPRIMIR PRECO}
var cont: integer;
begin
writeln('COD':3,'| ','TIPO DO PRODUTO':17,' | ','PRECO':14);
writeln('- - - - - - - - - - - - - - - - -');
for cont:=1 to qtdTipoCerveja do
begin
writeln(' ',cont,' |',vetPreco[cont].tipo:30,' | ',vetPreco[cont].valor:2:2);
end;
end;


procedure informarPreco(); {CADASTRAR PREÇO}
var codigo: integer; valor: real;
begin
clrscr();
exibirTitulo();
writeln('----------------------------------');
writeln('CADASTRAR PRECO DE PRODUTO');
writeln('----------------------------------');
writeln('');
imprimirVetPreco();
writeln('');
writeln('-> Para atualizar o valor de um produto, preencha os campos:');
writeln('');

write('Codigo do produto: ');
readln(codigo);
while ((codigo<1) or (codigo>qtdTipoCerveja)) do
begin
write('-> voce digitou uma codigo inexistente, digite novamente: ');
read(codigo);
end;

write('Valor: ');
readln(valor);
while (valor<=0) do
begin
write('-> voce digitou um valor invalido, digite novamente: ');
readln(valor);
end;

vetPreco[codigo].valor:=valor;
writeln('-> Produto atualizado com sucesso. Pressione qualquer tecla para continuar...');

readkey;
end;


procedure cadastrarPedido(); {CADASTRAR PEDIDO}
var
nome, dtpedido, obs: string;
codVendedor, qtdItem1, qtdItem2, qtdItem3, qtdItem4, qtdItem5, codItem, qtdItem, cont:integer;
soma, valor:real;
adicionarItem:boolean;
escolha:char;
begin
clrscr();
exibirTitulo();
writeln('----------------------------------');
writeln('CADASTRAR PEDIDO');
writeln('----------------------------------');
writeln('');
writeln('-> Preencha os campos:');
writeln('');
writeln('Numero do pedido: (Gerado automaticamene pelo sistema na confirmacao do pedido)');
write('Nome do cliente: ');
readln(nome);
readln(nome);
write('Codigo vendedor: ');
readln(codVendedor);
// ********** testar codigo do vendedor

write('Data do pedido (DD/MM/AAAA): ');
readln(dtpedido);
write('Observacao: ');
readln(obs);

adicionarItem:=true; qtdItem1:=0; qtdItem2:=0; qtdItem3:=0; qtdItem4:=0; qtdItem5:=0;
writeln('');
writeln('-> Para adicionar um produto ao pedido, preencha os campos:');
writeln('');
imprimirVetPreco();
writeln('');

while (adicionarItem) do
begin
write('Codigo do produto: ');
readln(codItem);
// ********** testar codigo do produto

write('Quantidade: ');
readln(qtdItem);
// ********** testar codigo quantidade

CASE codItem OF
1 : qtdItem1:=qtdItem1+qtdItem;
2 : qtdItem2:=qtdItem2+qtdItem;
3 : qtdItem3:=qtdItem3+qtdItem;
4 : qtdItem4:=qtdItem4+qtdItem;
5 : qtdItem5:=qtdItem5+qtdItem;
END;

escolha:=' ';
write('-> Deseja incluir outro item? (S/N): ');
readln(escolha);
escolha:=UpCase(escolha);
if (escolha='N') then
adicionarItem:=false;
end;

soma:=0; valor:=0;
for cont:=1 to qtdTipoCerveja do
begin
if (cont=1) then soma:=soma+(vetPreco[cont].valor*qtdItem1);
if (cont=2) then soma:=soma+(vetPreco[cont].valor*qtdItem2);
if (cont=3) then soma:=soma+(vetPreco[cont].valor*qtdItem3);
if (cont=4) then soma:=soma+(vetPreco[cont].valor*qtdItem4);
if (cont=5) then soma:=soma+(vetPreco[cont].valor*qtdItem5);
end; // FIM FOR
valor:=soma;

writeln('');
writeln('-> O sistema simulou o pedido. Pressione qualquer tecla para visualizar...');
readkey();
writeln('');

writeln('% % % % % % % % % % % % % % % % % % % % % % % % % % % %');
writeln('Numero do pedido: -');
writeln('Nome do cliente: ',nome);
writeln('Codigo vendedor: ',codVendedor);
writeln('Data do pedido: ',dtPedido);
writeln('Descricao dos itens:');
writeln('- - - - - - - - - - - - - - - - - - - - - - - - - - -');
writeln('PRODUTO':18,' | ','VALOR UNIT':4,' | ','QTD':6,' | ','VALOR':8);

if qtdItem1<>0 then
writeln(' ',vetPreco[1].tipo:17,' | ',vetPreco[1].valor:10:2,' | ',qtdItem1:6,' | ',vetPreco[1].valor*qtdItem1:8:2);

if qtdItem2<>0 then
writeln(' ',vetPreco[2].tipo:17,' | ',vetPreco[2].valor:10:2,' | ',qtdItem2:6,' | ',vetPreco[2].valor*qtdItem2:8:2);

if qtdItem3<>0 then
writeln(' ',vetPreco[3].tipo:17,' | ',vetPreco[3].valor:10:2,' | ',qtdItem3:6,' | ',vetPreco[3].valor*qtdItem3:8:2);

if qtdItem4<>0 then
writeln(' ',vetPreco[4].tipo:17,' | ',vetPreco[4].valor:10:2,' | ',qtdItem4:6,' | ',vetPreco[4].valor*qtdItem4:8:2);

if qtdItem5<>0 then
writeln(' ',vetPreco[5].tipo:17,' | ',vetPreco[5].valor:10:2,' | ',qtdItem5:6,' | ',vetPreco[5].valor*qtdItem5:8:2);

writeln('- - - - - - - - - - - - - - - - - - - - - - - - - - -');
writeln('Valor Total: ',valor:2:2);
writeln('Situacao: -');
writeln('Data de entrega: -');
writeln('Observacao: ',obs);
writeln('% % % % % % % % % % % % % % % % % % % % % % % % % % % %');

escolha:=' ';
writeln('');
write('-> Deseja gravar este pedido? (S/N): ');
readln(escolha);
escolha:=UpCase(escolha);
if (escolha='S') then
begin
maxVetPedido:=maxVetPedido+1;

vetPedido[maxVetPedido].numPedido:=maxVetPedido;
vetPedido[maxVetPedido].nomeCliente:=nome;
vetPedido[maxVetPedido].nomeVendedor:=verificarCadExistente(codVendedor);
vetPedido[maxVetPedido].dtpedido:=dtpedido;
vetPedido[maxVetPedido].qtdTpCerveja1:=qtdItem1; {LITRO}
vetPedido[maxVetPedido].qtdTpCerveja2:=qtdItem2; {LATAO}
vetPedido[maxVetPedido].qtdTpCerveja3:=qtdItem3; {LATA}
vetPedido[maxVetPedido].qtdTpCerveja4:=qtdItem4; {LATINHA}
vetPedido[maxVetPedido].qtdTpCerveja5:=qtdItem5; {LONG NECK}
vetPedido[maxVetPedido].valor:=valor;
vetPedido[maxVetPedido].situacao:=false;
vetPedido[maxVetPedido].dtentrega:='';
vetPedido[maxVetPedido].observacao:=obs;

writeln('-> Pedido gerado com sucesso. Anote o codigo para consultas futuras: "',maxVetPedido,'".');
writeln(' Pressione qualquer tecla para continuar...');
end
else
begin
writeln('-> voce escolheu cancelar. A simulacao do pedido foi descartada.');
writeln(' Pressione qualquer tecla para continuar...');
end;

readkey();
end;


function validaNumeroPedido(numero:integer):boolean;
var
cont:integer;
begin
cont:=1;

if (maxVetPedido<numero) then
begin
validaNumeroPedido:=false;
end
else

while (vetPedido[cont].numPedido<>numero) do
begin
if (vetPedido[cont].numPedido<>numero) then
begin
validaNumeroPedido:=false;
end
else
begin
validaNumeroPedido:=true;
end;
cont:=cont+1;
end;

end;


procedure consultarPedido(); {CONSULTAR SITUACAO DO PEDIDO}
var
numero:integer;
numeroValido:boolean;
begin
clrscr();
exibirTitulo();
writeln('----------------------------------');
writeln('CONSULTAR SITUACAO DE PEDIDO');
writeln('----------------------------------');
writeln('');

if (maxVetPedido=0) then
begin
writeln('-> Nao existem pedido cadastrados. Pressione qualquer tecla para continuar...');
end
else
begin
write('-> Informe o numero do pedido: ');
readln(numero);
numeroValido:=false;
numeroValido:=validaNumeroPedido(numero);

while (numeroValido=false) do
begin
write(' Nao existe pedido cadastrado com este numero. Informe outro numero: ');
readln(numero);
numeroValido:=validaNumeroPedido(numero);
end;

if (vetPedido[numero].situacao=true) then
begin
writeln('');
writeln('-> O pedido foi atendido.');
writeln(' Pressione qualquer tecla para continuar...');
end
else
begin
writeln('');
writeln('-> O pedido nao foi atendido.');
writeln(' Pressione qualquer tecla para continuar...');
end;
end;

readkey();
end;


procedure alterarPedido(); {ALTERAR SITUACAO DE PEDIDO}
var
numero:integer;
numeroValido:boolean;
escolha:char;
begin
clrscr();
exibirTitulo();
writeln('----------------------------------');
writeln('ALTERAR SITUACAO DE PEDIDO');
writeln('----------------------------------');
writeln('');

if (maxVetPedido=0) then
begin
writeln('-> Nao existem pedidos cadastrados. Pressione qualquer tecla para continuar...');
end
else
begin
write('-> Informe o numero do pedido: ');
readln(numero);
numeroValido:=false;
numeroValido:=validaNumeroPedido(numero);

while (numeroValido=false) do
begin
write(' Nao existe pedido cadastrado com este numero. Informe outro numero: ');
readln(numero);
numeroValido:=validaNumeroPedido(numero);
end;

if (vetPedido[numero].situacao=true) then
begin
writeln('');
writeln('-> O pedido ja foi atendido. Nao sera possivel modifica-lo.');
writeln(' Pressione qualquer tecla para continuar...');
end
else
begin
writeln('');
write('-> O pedido nao foi atendido. Deseja alterar para ATENDIDO? (S/N): ');
readln(escolha);
escolha:=UpCase(escolha);
if (escolha='S') then
begin
vetPedido[numero].situacao:=true;
writeln('-> O status do pedido foi alterado com sucesso.');
writeln(' Pressione qualquer tecla para continuar...');
end
else
writeln('');
writeln('-> Pressione qualquer tecla para continuar...');
end;
end;


readkey();
end;


procedure gerarArquivo(); {GERAR ARQUIVOS}
begin
clrscr();
exibirTitulo();
writeln('----------------------------------');
writeln('GERAR ARQUIVOS');
writeln('----------------------------------');
writeln('');
begin

end;

writeln('-> Essa opcao esta sendo implementada. Aguarde a proxima versao.');
writeln(' Pressione qualquer tecla para continuar...');

readkey();
end;



procedure exibirMenu(); {MENU}
begin


writeln('----------------------------------');
writeln(' MENU');
writeln('----------------------------------');
writeln('1. Cadastrar vendedor.');
writeln('2. Cadastrar pedido.');
writeln('3. Informar preco de cerveja.');
writeln('4. Consultar situacao de pedido.');
writeln('5. Alterar situacao de pedido.');
writeln('6. Gerar arquivos com pedidos.');
writeln('7. Sair.');
writeln('');
write('-> Digite o numero da opcao desejada: ');
read(opcaoMenu);

while ((opcaoMenu<1) or (opcaoMenu>7)) do
begin
write('-> voce digitou uma opcao invalida, digite novamente: ');
read(opcaoMenu);
end;

CASE opcaoMenu OF
1 : cadastrarVendedor();
2 : cadastrarPedido();
3 : informarPreco();
4 : consultarPedido();
5 : alterarPedido();
6 : gerarArquivo();
7 : sair:=true;
END;

end;


begin

sair:=false;
maxVetVendedor:=0;
maxVetPedido:=0;
arqCarregado:=false;

if (arqCarregado=false) then
preencherVetPreco();


while (sair=false) do
begin
clrscr;
exibirTitulo();
exibirMenu();
end;

write('-> voce escolheu sair do sistema. Pressione qualquer tecla para finalizar...');


readkey();
end.
program Cervejaria;

Olá PaullahSuzany

Está com dúvidas em quê...

São dois pontos principais ai:

1) Trabalhar com arquivos (binários ou de texto);

2) Trabalhar com datas (tratamento de string).

1) ARQUIVOS

Se tiver dúvidas, sugiro que dê uma pesquisa aqui no Fórum utilizando o recurso "Pesquisar" que fica no topo da página.

Por exemplo:

Duvida com arquivos em pascal

ou também na internet...

2) DATAS

Você precisa extrair a informação necessária das variáveis, no caso o MÊS de dentro da string que contém a data. A partir daí verificar se é do mês em questão e jogar no arquivo...

***

Tente especificar mais ou menos quais são as dúvidas..

No aguardo.

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...