Ir ao conteúdo
  • Cadastre-se
PaullahSuzany

Gerar arquivo

Recommended Posts

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;

Compartilhar este post


Link para o post
Compartilhar em outros sites
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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×