Ir ao conteúdo
  • Cadastre-se

Ajuda - Sisteminha


pedrocestari

Posts recomendados

Pessoal, estou recorrendo a vocês pois estou com um abacaxi,

Foi pedido para mim realizar o seguinte Sisteminha abaixo.

Faça um programa para, para registrar a venda de produtos. Monte uma nota fiscal o qual pode conter no máximo 10 itens, relacionando a data da venda, o nome do cliente e suas compras.

Na opção 1 – Cadastra Categoria, o programa deve promover uma a interface para lançar os dados referentes ao código e ao nome, por exemplo:

OPÇÃO 1 - CATEGORIA:

Código Nome:

1 hortifruti

2 mercearia

Na opção 2 – Cadastra Produto, o programa deve promover uma a interface para lançar os dados referentes ao código, ao nome, o preço unitário e a respectiva categoria, por exemplo:

OPÇÃO 2 - PRODUTO:

Código Nome Preço unit Categoria

534 coca cola 2,50 02 - mercearia ->o programa mostra o nome categoria

567 guarana 0,80 02 - mercearia

573 batata 1,50 06 - Categoria não existe!!!! <OBS1>

Importante:

OBS1: Ao digitar o código de uma categoria, mostrar no lado o nome desta ou uma mensagem de erro (Categoria não existe!!!!) e pedir novo código de categoria.

Na opção 3 – Venda, o programa deve ser desenvolvido, respeitando o layout abaixo, como segue:

OPÇÃO 3 - VENDA:

Nome do cliente....: xxxx Numero da Venda: 9999 Data: da venda: xx / xx / xxxx

--------------------------------------------------------------------------------------------------------------

Código do produto Quantidade Total do Produto

xxx – nome<OBS 1> xx <OBS2> xxx.xx <OBS 3>

... ... ... ....

Valor total da venda R$ xx,xx <OBS 4>

Observações:

OBS1: O produto deve estar cadastrado, logo, mostrar ao lado do código o nome do mesmo. Caso não exista, validar e mostrar mensagem de produto não cadastrado. Solicitar novo código.

OBS2: Validar para que a quantidade não seja negativa ou superior a 100. Caso seja, gerar mensagem de erro e pedir nova quantidade.

OBS3: O total do produto deve ser calculado, considerando a quantidade informada pelo usuário e o preço cadastrado (quando identificado o produto).

OBS4: O valor total da venda deve ser calculada, a cada novo produto digitado na venda, considerando o total do produto calculado.

Importante:

-Para cada venda registrada, deve ter no máximo 10 itens;

-Não pode ter uma venda sem produto (pelo menos 1).

Na opção 4 – Listagem da Venda, o usuário apenas informa o numero da nota de venda e o programa mostra demais dados da venda ou mostra mensagem de erro de venda inexistente, como segue abaixo:

OPÇÃO 4 - LISTAGEM DA VENDA:

Nota de número: xxxxxxxx <OBS1> Data: xx / xx / xxxx

Nome do cliente: xxxx(50)

Relação de itens:

Código Nome Qtda valor unit. total

xxx xxx x xx,xx xxx,xx

.. .. .. .... ...

Total a pagar: x.xxx,xx

Observação:

OBS1: O numero da Nota de Venda deve ser validado, pois caso não exista, mostrar mensagem de erro (Nota de Venda não existe!!!!) e pedir nova nota.

Na opção 5 – Resumo por categoria, o programa mostra os dados abaixo, considerando todas as vendas registradas:

OPÇÃO 5 - RESUMO:

Nome Categoria: Total

hortifruti xx,xx

mercearia xx,xx

Total Geral xxxx.xx

O programa deve oferecer as seguintes opções (menu):

***** MENU DE OPERACOES *****

1 - Cadastra a Categoria

2 - Cadastra o Produto

3 - Registra a Venda

4 - Lista a Venda

5 - Resumo por Categoria

6 - Fim

Informe a opção: < >

*/

Observações Finais

- Validar para que não permita cadastrar os produtos se não tiver cadastrado as categorias;

- Validar para que não permita realizar a venda se não tiver cadastrado os produtos;

- Validar que se não tiver vendido, não deve ter resumo e lista de venda;

- Validar que as opções sejam as do menu, senão mostrar mensagem de erro;

- Rever as competências.

Aplique o conceito de estrutura, usando vetor.

Observações Adicionais

- Validar para que não permita cadastrar um mesmo código de categoria;

- Validar para que não permita cadastrar um mesmo código de produto;

- Permita, caso não exista produto vinculado, a remoção de uma categoria;

- Rever as competências.

Preciso muito de uma ajuda.

abraço

Pessoal, esse progrma veio se modificando, primeiramente tinha que realiza-lo com matriz e vetor, agora necessito utilizar struturas.

Se quiserem posso postar o que ja fiz, to precisando muito da ajudar!!!

Segue abaixo,:

/*Estruturas e Bibliotecas*/


// Bibliotecas

#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <string.h>
#include <ctype.h>
#include <math.h>
#include <stddef.h>


// Estrutura de Cliente

typedef struct cliente{

char nomecliente [30];
int codcliente;
};


//Estrutura de Categoria

typedef struct categoria{

char nomecategoria [30];
int codcategoria;
};


//Estrutura de Produto

typedef struct produto{

int codproduto;
char nomeproduto [30];
int codcategoria;
float valor;
int qtde;


};
// -Estrutura com caracterísicas do cabeçalho da nota de compra

typedef struct nota {

char nome_cliente[30]
int numero_venda;
int data_venda;

};

// -Estrutura com caracterísicas dos produtos contidos na venda

typedef struct valor_total {

int codigo_prod;
int qtd_prod;
int um_cat_vinculada;
char nome_prod[30];
int numero_nota;
float valor_total;
}

O restante



#include "estrutura.h"

// Constantes
#define tam 2 // Mudar no Fim para 10


// Protótipos de função
void monta_menu(void);
void valida_opcao(int opcao);
void cadastra_categoria();
void cadastra_produto();
void registra_venda();
void lista_venda();
void resumo_categoria();
int procura_categ(int num);


// Declara as variáveis de ambiente
// Variaveis Funcao Resumo
float categorias_aux [tam];
int lin;
float r_total;

// Veriaveis
char letra [10]=" ";
char categoria [tam][35];
char categoria1 [tam][35];
char produto[tam][50];
char cliente[tam][50];
float preco[tam];
float total[tam];
int codigo[10];
int posi [10];
int nota=1;
int quantidade[tam];
int flagCat = 0;
int flagProd = 0;
int flagList = 0;
int op = 0;
int l=1;
int z=1;
int y=1;
int w=1;
int quantidadex[tam];
char data [10];


// Variaveis do tipo Struct
categoria vcategoria;
produto vproduto;
cliente vclinete;
nota vnota;
itensnota vitensnota;


//Monta o posicionamento
//Primeiro pega o handle do stdou STD_OUTPUT_HANDLE
HANDLE hstdout = GetStdHandle(STD_OUTPUT_HANDLE);


//Rotina Principal
main(){
do {
monta_menu();
valida_opcao(op);

switch(op) {
case 1: cadastra_categoria();

break;

case 2: if (flagCat == 0) {
SetConsoleCursorPosition(hstdout,(COORD) { 6, 21 });
printf("Erro. Deves cadastrar antes uma categoria!!!\n");
system("pause > null");
}
else
cadastra_produto();
break;

case 3: if (flagProd == 0) {
SetConsoleCursorPosition(hstdout,(COORD) { 6, 21 });
printf("Erro. Deves cadastrar antes os produtos!!!\n");
system("pause > null");
}
else
registra_venda();
break;

case 4: if (flagList == 0) {
SetConsoleCursorPosition(hstdout,(COORD) { 6, 21 });
printf("Erro. Deves registrar antes uma venda!!!\n");
system("pause > null");
}
else
lista_venda();
break;
case 5: resumo_categoria();


default: exit(1);
}// fim do switch
}
while (op !=6);

} fim do main*/

// Funções Constroi Menu

void monta_menu(void) {
fflush(stdin); // Limpa o Buffer
system("cls");
printf("\t====== Menu de Operacoes ======\n\n");
printf("\t 1 - Cadastra Categoria\n");
printf("\t 2 - Cadastra Produto\n");
printf("\t 3 - Registra Venda\n");
printf("\t 4 - Lista a Venda\n");
printf("\t 5 - Resumo por Categoria\n");
printf("\t 6 - Fim\n");
printf("\t\t Escolha a opcao: ");
scanf("%d", &op);
}

// Funcao Valida opção do Menu

void valida_opcao(int opcao) {
// Rotina abaixo para validar que a opção deva ser entre 1 e 6
do
{ if (opcao < 1 || opcao > 6)
{
SetConsoleCursorPosition(hstdout,(COORD) { 6, 21 });
printf("Erro, opcao deve entre 1 a 6, infome novamente !!!!\n");
system("pause > null"); // > null inibe a mensagem de tecla do SO

// Limpa a linha de mensagem
SetConsoleCursorPosition(hstdout,(COORD) { 6, 21 });
printf(" \n");
printf(" ");

SetConsoleCursorPosition(hstdout,(COORD) { 1, 8});
printf(" ");

SetConsoleCursorPosition(hstdout,(COORD) { 1, 8});
printf("\t\t Escolha a opcao: ");
fflush(stdin); // Limpa o buffer
scanf("%d", &opcao);
op = opcao;
}
}
while (opcao < 1 || opcao > 6);
// fim da validação da opção.
}

// Funcao Cadastra Categoria

void cadastra_categoria(){
flagCat = 1; // seta valor 1, logo registrou categoria.
// Variavel apenas desta funcao
int cad_categ = 0;
int resp_categ;
do{
printf("Digite o codigo da Categoria:\n");
fflush(stdin);
scanf("%i", &vcategoria.codcategoria);
if ( vcategoria.codcategoria == cad_categ) //Verificacao se a categoria digitada ja esta cadastrada
{
printf("Erro: Categoria ja cadastrada!! \n");
system("pause > null");
}
else
cad_categ = vcategoria.codcategoria;
printf("Digite o nome da Categoria:\n");
fflush(stdin);
scanf("%s", &vcategoria.nomecategoria);
printf("Cadastrar mais categorias? Digite 's' \n" );
scanf("%c", &resp_categ);
fflush(stdin);
}

while (resp_categ != 's'); //Finaliza funcao quando a categoria nova
l++;
}

// Funcao Cadastra Produto

void cadastra_produto(){
flagProd = 1; // seta valor 1, logo registrou produto.

int cad_prod = 0;
do{
printf("Digite o codigo do Produto:\n");
fflush(stdin);
scanf("%i", &vproduto.codproduto);

//verifica se o codigo produto digitado ja esta cadastrada
if ( vproduto.codproduto == cad_prod)
{
printf("Erro: Produto ja cadastrado!! \n");
system("pause > null");
}
else
cad_prod = vproduto.codproduto;

}
while (vproduto.codproduto != cad_prod);

printf("Qual categoria pertence este produto? Digite o codigo da categoria: \n");
fflush(stdin);
scanf("%i",&vproduto.codcategoria); //armazena o numero da categoria
do{
if (vproduto.codcategoria != vcategoria.codcategoria)
{
printf("Erro: Categoria invalida: %i\n",l);
fflush(stdin);

}
else
printf("Digite o Preco do Produto:\n");
fflush(stdin);
scanf("%f",&vproduto.valor);
printf("Digite a Quantidade deste Produto: %s \n");
fflush(stdin);
scanf("%i",&vproduto.qtde);

if (vproduto.qtde < 1 or vproduto.qtde > 100)
{
printf("Erro; Digite quantidade de 1 a 100! \n");
fflush(stdin);
}
else (vproduto.qtde < 1 or vproduto.qtde > 100);
}
while ()


}

// Funcao Resumo Categoria
void resumo_categoria() // -mostra o total de vendas por cada categoria e o somatório geral de tudo já vendido

{
printf("-------------- RESUMO GERAL --------------");
printf("");
printf("Total de vendas: %f", &valor_total.valor_total);
printf("");
printf(" CATEGORIA %f ",&valor_total.valor_total);
printf("TOTAL %f", &valor_total.valor_total );


for (int a = 0; a < tam; a++)
{
printf ("%f\n", categorias_aux[a]);
}
getch();



}


//A verificar
void registra_venda(){

flagList = 1;
int y=1;
printf("Nota de Numero: %i\n", nota);
printf("Digite o nome do Cliente: \n");
fflush(stdin);
scanf("%s", cliente[nota]);
printf("Digite Data de Venda: \n", data);
fflush(stdin);
scanf("%s", data);


do{

{
printf("Para sair tecle 999: \n");
printf("Digite o Codigo do produto de numero %i a ser vendido: \n", y);

scanf("%i", &codigo[w]); //codigo[w] grava o codigo do produto na posição W

if (codigo[w] != 999){ //verifica se o cod 999 de saida foi inserido, sendo verdadeiro nao executa os testes a seguir
do{
if ((codigo[w] < 1) or (codigo[w] >z)){ //verifica se o codigo digitado existe
printf("%i", codigo[w]+20);
printf("Erro: Codigo do produto invalido: \n");
fflush(stdin);
scanf("%i", &codigo[w]);
}

}while ((codigo[w] < 1) or (codigo[w] >z));


if (quantidade[codigo[w]] ==0){ //testa a quantidade do produto na posicao codigo[w], se for = 0 exibi erro.
printf ("Este produto nao tem em estoque, escolha outro: \n");

system("pause > null");
}
else
{
do{
y++; // so incrementa contador se passar pelos testes anteriores
printf("Digite a quantidade do produto %s: \n", produto[codigo[w]]);
fflush(stdin);
scanf("%i", &quantidadex[w]);

if ((quantidadex[w] < 0) or (quantidadex[w] > quantidade[codigo[w]])){
printf ("Este produto tem apenas %i unidade(s)\n", quantidade[codigo[w]]);

system("pause > null");
}
}while ((quantidadex[w] < 0 )or (quantidadex[w] > quantidade[codigo[w]]));
quantidade[codigo[w]]= (quantidade[codigo[w]]) - (quantidadex[w]);
}
float total = quantidadex[w]*preco[w];
categorias_aux[w]=(categorias_aux[w]+total);
w++;
}
}
if (y==11){ //y controla o numero de prosdutos registrados
printf("voce registrou 10 itens!");
system("pause > null");
codigo[w]=999; // se Y=11 codigo[w] recebe 999 que é o codigo para sair do laco
}
}while (codigo[w] != 999);

}
//A verificar
void lista_venda(){

int cont=nota;
int notateste=0;

do{

printf ("Digite o Numero da Nota a ser listada: ");
fflush(stdin);
scanf("%i", &notateste);



if ((notateste<=nota) && (notateste !=0)){ //Verifica nota
printf ("Nome do Cliente: %s\n", cliente[notateste]);
printf ("relação de itens: \n");

for (;notateste<cont+y+1; notateste++){

printf ("Codigo: %i\n", codigo[notateste]);
}
notateste=notateste-(y+1);
for (;notateste<cont+y+1; notateste++){
printf ("Produto: %s\n", produto [codigo[notateste]]);
}

notateste=notateste-(y+1);
for (;notateste<cont+y+1; notateste++){
printf ("Quantidade: %i\n", quantidadex[codigo[notateste]]);
}
notateste=notateste-(y+1);
for (;notateste<cont+y+1; notateste++){
printf ("Valor Unitario: %f\n", preco[codigo[notateste]]);
}
notateste=notateste-(y+1);
for (;notateste<cont+y+1; notateste++){
total[notateste]= ((quantidadex[codigo[notateste]]) * (preco[codigo[notateste]]));
total[99]= (total[99])+(total[notateste]);
}
printf("Total: %f", total[99]);
system("pause > null");
}
else // erro exibir mensagem!!
printf("Erro: Nota Invalida!\n");
system("pause > null");
}while ((notateste<=nota) && (notateste !=0));


}


//A verificar
int procura_categ(int num)
{
for (int a=0; a<tam; a++)
{
if (num == codigo[a])
{
return (posi[a]);
}
}
printf("Erro");
}
// Bibliotecas

/*

- Validar para que não permita cadastrar um mesmo código de categoria;

- Validar para que não permita cadastrar um mesmo código de produto;

- Permita, caso não exista produto vinculado, a remoção de uma categoria;

*/

Link para o comentário
Compartilhar em outros sites

Ainda não disse onde é a dúvida.

Qual parte do código não está conseguindo implementar?

Acho meio improvável que alguém vá olhar o código inteiro, tentar compilar, corrigir os erros de compilação, tentar compilar de novo, adivinhar onde você estava com dificuldades e depois entregar o código bonitinho.

Mas boa sorte ae... milagres existem.

Link para o comentário
Compartilhar em outros sites

Cara bnao entendi bem a sua duvida e seu codigo e muito longo...terias que especificar a duvida para a gente nao perder tempo analisando coisas desnecessarias...!!!

ahm, pk você nao usa string no lugar do char??? fica menos "baguncado" e claro, muito melhor...!!! e so incluir a bibliotaca

# include <string.h>
Link para o comentário
Compartilhar em outros sites

Ok, minha duvida, preciso fazer duas fuções que varrem cada uma um vetor diferentes,

Assim:

Duas funçoes de cadastro, os registro devem ficar gravados em vetor.

Duas funções que varrem esses dois vetores a procura de uma informação colida do usuario.

E demosntre na tela.

Consegui ser mais claro?!

Link para o comentário
Compartilhar em outros sites

Ok, minha duvida, preciso fazer duas fuções que varrem cada uma um vetor diferentes,

Sua dúvida é se você precisa fazer duas funções?

Ou você tá perguntando como faz essas funções?

Assim:

Duas funçoes de cadastro, os registro devem ficar gravados em vetor.

Por que seriam duas funções de cadastro? Qual a diferença entre elas?

Eu entenderia se você dissesse "Como faço uma função que cadastra dados num vetor?"... Mas o fato de serem duas funções significa que elas fazem coisas diferentes, certo?

Então como a gente vai adivinhar isso?

Ou são duas funções iguais?

Consegui ser mais claro?!

Ainda não...


typedef struct tProduto{
int codproduto;
char nomeproduto [30];
int codcategoria;
float valor;
int qtde;
} produto;

Isso aí em cima é um registro (ou uma estrutura).

produto meusProdutos[50];

Agora você tem 50 Produtos... ou 50 espaços na memória pra cadastrar registros do tipo "produto".


void cadastraUmProduto(produto p[], int indice) {
scanf("%d", &p[indice].codproduto);
scanf("%s", p[indice].nomeproduto);
scanf("%d", &p[indice].codcategoria);
scanf("%f", &p[indice].valor);
scanf("%d", &p[indice].qtde);
}

Agora você tem uma função que cadastra um produto no seu array de produtos, baseado no índice.

Pra cadastrar o primeiro produto, você usa:

cadastraUmProduto(meusProdutos, 0);

Pra cadastrar o segundo:

cadastraUmProduto(meusProdutos, 1);

O terceiro:

cadastraUmProduto(meusProdutos, 2);

etc.


void cadastraUmProdutoDoMesmoJeitoMasDiferente(produto p[], int indice) {
scanf("%f", &p[indice].valor);
scanf("%s", p[indice].nomeproduto);
scanf("%d", &p[indice].codcategoria);
scanf("%d", &p[indice].qtde);
scanf("%d", &p[indice].codproduto);
}

Agora você tem duas funções.

:lol:

Duas funções que varrem esses dois vetores a procura de uma informação colida do usuario.

E demosntre na tela.

Mas que informação?


int procureInformaçãoDesconhecida(produtos p[], int tam, tiposecreto informação_desconhecida) {
int x;

for (x=0; x<tam; x++)
if (p[x].valorsecreto == informação_desconhecida) return x;

return -1; //não encontrou
}

Agora você pode procurar informações desconhecidas no seu array de produtos.


int procureInformaçãoDesconhecidaDeOutroJeito(produtos p[], int tam, tiposecreto informação_desconhecida) {
int x;

for (x = tam; x >= 0; x--)
if (p[x].valorsecreto == informação_desconhecida) return x;

return -1; //não encontrou
}

E agora tem duas funções de buscar informações colhidas pelo usuário! :lol:

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...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!