Toshiro
(usa Outra)
Enviado em 23/05/2013 - 10:56h
Turma da uma ajuda por favor tou com um problema na parte de Alteras produtos, eu consigo cadastralo mostrar o código e a quantidade no estoque certa, mais na hora que eu altero e vou listalo, ele aparece como se fosse o numero da memoria ! por favor me ajudem o mais rapido possivel
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>
#include <ctype.h>
typedef struct cadastro{
char nome[40];
unsigned long int cnpj;
struct cadastro* prox;
}Cliente;
typedef struct produto{
char nomeProd[40];
unsigned long int codigo;
int qtdestoque;
struct produto* prox;
}Prod;
// ============================== Declaração de funções para o cadastro de Clientes ======================================== //
Cliente* inserir_cadastro(Cliente* primeiro);
void listar_cadastro(Cliente* primeiro);
Cliente* excluir_cadastro(Cliente* primeiro);
void alterar_cadastro(Cliente* primeiro);
// ========================================================================================================================= //
// ============================== Declaração de funções para o cadastro de Produtos ======================================== //
Prod* inserir_produto(Prod* primeiroProd);
void listar_produto(Prod* primeiroProd);
Prod* excluir_produto(Prod* primeiroProd);
void alterar_produto(Prod* primeiroProd);
// ========================================================================================================================= //
main()
{ //Declaração de variáveis
Cliente *primeiro= NULL;
Prod *primeiroProd= NULL;
int opcao;
//Artifício para repetir o programa.
while(opcao!=0)
{
//Menu de opcoes
printf(" %c----------------------------------------------------------------------------%c\n",201,187);
printf(" | ");printf("\t\t\t CADASTRO DE RESTAURANTES");printf("\t\t\t |\n");
printf(" %c----------------------------------------------------------------------------%c\n",200,188);
printf("\t %c----------%c\t\t\t\t ",201,187);
printf("\t\t\t | MENU ");printf("|\t\t\t\t \n");
printf(" %c-----------%c----------%c------------%c \n",201,200,188,187);
printf(" | <1> Novo Cadastro |\n");
printf(" |-----------------------------------|\n");
printf(" | <2> Listar Cadastro |\n");
printf(" |-----------------------------------|\n");
printf(" | <3> Excluir Cadastro |\n");
printf(" |-----------------------------------|\n");
printf(" | <4> Alterar Cadastro |\n");
printf(" |-----------------------------------|\n");
printf(" | <5> Novo Produto |\n");
printf(" |-----------------------------------|\n");
printf(" | <6> Listar Produto |\n");
printf(" |-----------------------------------|\n");
printf(" | <7> Excluir Produto |\n");
printf(" |-----------------------------------|\n");
printf(" | <8> Alterar Produto |\n");
printf(" |-----------------------------------|\n");
printf(" | <0> Sair |\n");
printf(" %c-----------------------------------%c",200,188);
printf("\n\n\n\n");
//Lendo a opcao do menu
scanf("%u",&opcao);
fflush(stdin);
//Menu de opcoes
switch(opcao)
{
case 1:
//Inserindo os Cadastros
fflush(stdin);
system("cls");
printf(" %c----------------------------------------------------------------------------%c\n",201,187);
printf(" | ");printf("\t\t\t NOVO CADASTRO ");printf("\t\t\t |\n");
printf(" %c----------------------------------------------------------------------------%c\n",200,188);
primeiro= inserir_cadastro(primeiro);
getch();
system("cls");
break;
case 2:
//Listando os Cadastros.
system ("cls");
printf(" %c----------------------------------------------------------------------------%c\n",201,187);
printf(" | ");printf("\t\t\t RESTAURANTES CADASTRADOS");printf("\t\t\t |\n");
printf(" %c----------------------------------------------------------------------------%c\n",200,188);
listar_cadastro(primeiro);
getch();
system("cls");
break;
case 3:
//Excluindo Cadastro da lista.
system ("cls");
printf(" %c----------------------------------------------------------------------------%c\n",201,187);
printf(" | ");printf("\t\t\t EXCLUIR CADASTROS");printf("\t\t\t |\n");
printf(" %c----------------------------------------------------------------------------%c\n",200,188);
primeiro= excluir_cadastro(primeiro);
getch();
system("cls");
break;
case 4:
//Alterando Cadastro da lista.
system ("cls");
printf(" %c----------------------------------------------------------------------------%c\n",201,187);
printf(" | ");printf("\t\t\t ALTERAR CADASTRADOS");printf("\t\t\t |\n");
printf(" %c----------------------------------------------------------------------------%c\n",200,188);
alterar_cadastro(primeiro);
getch();
system("cls");
break;
case 5:
//Inserindo os Produtos.
fflush(stdin);
system("cls");
printf(" %c----------------------------------------------------------------------------%c\n",201,187);
printf(" | ");printf("\t\t\t NOVO PRODUTO ");printf("\t\t\t |\n");
printf(" %c----------------------------------------------------------------------------%c\n",200,188);
primeiroProd= inserir_produto(primeiroProd);
getch();
system("cls");
break;
case 6:
//Listando os produtos.
system ("cls");
printf(" %c----------------------------------------------------------------------------%c\n",201,187);
printf(" | ");printf("\t\t\t PRODUTOS CADASTRADOS");printf("\t\t\t |\n");
printf(" %c----------------------------------------------------------------------------%c\n",200,188);
listar_produto(primeiroProd);
getch();
system("cls");
break;
case 7:
//Excluindo produtos da lista.
system ("cls");
printf(" %c----------------------------------------------------------------------------%c\n",201,187);
printf(" | ");printf("\t\t\t EXCLUIR PRODUTOS");printf("\t\t\t |\n");
printf(" %c----------------------------------------------------------------------------%c\n",200,188);
primeiroProd= excluir_produto(primeiroProd);
getch();
system("cls");
break;
case 8:
//Alterando Produtos da lista.
system ("cls");
printf(" %c----------------------------------------------------------------------------%c\n",201,187);
printf(" | ");printf("\t\t\t ALTERAR PRODUTOS ");printf("\t\t |");
printf(" %c----------------------------------------------------------------------------%c \n",200,188);
alterar_produto(primeiroProd);
getch();
system("cls");
break;
case 0:
//Se digitar 0 irá fechar o programa
opcao==0;
break;
default:
// Se o usuario digitar algo do teclado nao correspondente a o menu, não irá sair dele!
system("cls");
break;
}
}
}
// +++++++++++++++++++++++++++++++++++++++++ CADASTRO DE CLIENTES ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ //
Cliente* inserir_cadastro (Cliente *primeiro){
Cliente cadastro;
Cliente *atual= primeiro;
int verificador;
char identificador= 'F';
// Ler as informaçoes do cliente
printf(" Nome: ");
fflush(stdin);
fflush (stdin); fgets(cadastro.nome, 40, stdin); printf ("\n");
printf(" CNPJ: ",162);
fflush(stdin);
scanf("%u",&cadastro.cnpj);printf ("\n");
//verifica se o cliente já existe
for(atual=primeiro; atual!=NULL; atual=atual->prox){
if(atual->cnpj==cadastro.cnpj){
identificador= 'V';
break;
}
}
if(identificador!='V' && (strlen(cadastro.nome)!=1) ) {
//Alocando os espaços e guardando as informações do Cadastro.
Cliente* NovoCadastro=(Cliente*) malloc (sizeof(Cliente));
strcpy(NovoCadastro->nome, cadastro.nome);
NovoCadastro->cnpj= cadastro.cnpj;
NovoCadastro->prox= primeiro;
printf(" Cadastro realizado com sucesso.");
printf("\n\n PRESSIONE QUALQUER TECLA PARA VOLTAR AO MENU PRINCIPAL.");
return NovoCadastro;
}else{
printf(" Cadastro invalido.",160);
printf("\n\n PRESSIONE QUALQUER TECLA PARA VOLTAR AO MENU PRINCIPAL.");
return primeiro;
}
}
void listar_cadastro (Cliente* primeiro){
Cliente* atual; //Ponteiro para percorrer a lista sem perder a referência do primeiro da lista.
//Imprime todos os clientes da lista
for(atual= primeiro ; atual!= NULL; atual= atual->prox){
printf("\n NOME: ");
printf("%s", atual->nome);
printf("\n CNPJ: ",162 );
printf("%u", atual->cnpj);
printf("\n\n");
}
if(primeiro==NULL)
printf(" Nenhum cadastrado feito.");
printf("\n\n PRESSIONE QUALQUER TECLA PARA VOLTAR AO MENU PRINCIPAL.");
}
Cliente* excluir_cadastro(Cliente *primeiro){
Cliente *anterior= NULL;//Ponteiro para saber o elemento anterior ao elemento atual da lista.
Cliente *atual= primeiro;//Ponteiro para percorrer a lista sem perder o primeiro elemento da lista.
unsigned long int cnpj=0;
//Ler o Cnpj a ser exlcuido.
printf(" Cnpj do Cadastro a ser exclu%cdo: ", 162,161);
fflush(stdin);
scanf("%u",&cnpj);
//Procurando o cnpj na lista.
while(atual!= NULL && atual->cnpj!=cnpj){
anterior= atual;
atual= atual->prox;
}
//Mensagem de aviso caso o cnpj não exista ou não seja encontrado.
if(atual==NULL){
printf("\n CNPJ nao encontrado.", 198);
printf("\n\n PRESSIONE QUALQUER TECLA PARA VOLTAR AO MENU PRINCIPAL.");
return primeiro;
}
//Serve para exlcuir o primeiro da lista
if(anterior==NULL){
printf("\n Cnpj excluido com sucesso.", 163,161);
primeiro= atual->prox;
//Excluiu o que está no meio da lista .
}else{
printf("\n Cnpj excluido com sucesso.", 163,161);
anterior->prox= atual->prox;
}
//liberando espaço da memoria
free(atual);
printf("\n\n PRESSIONE QUALQUER TECLA PARA VOLTAR AO MENU PRINCIPAL.");
return primeiro;
}
void alterar_cadastro(Cliente* primeiro){
char nome_substituto[40];
int cnpj_substituto;
unsigned long int buscaCnpj;
Cliente* atual=primeiro;
//Requisitando e lendo o código do Cadastro a ser alterado.
printf(" Cnpj do Cadastro a ser alterado: ", 162);
fflush(stdin);
scanf("%u",&buscaCnpj);
//Procurando o Cadastro na lista.
while(atual!= NULL && atual->cnpj!= buscaCnpj){
atual= atual->prox;
}
//Alterando os dados do Cadastro.
if(atual!=NULL){
printf("\n Novo nome: ");
fflush (stdin); fgets(nome_substituto, 40, stdin);
strcpy(atual->nome,nome_substituto);
printf("\n Novo CNPJ ");
scanf("%u",&cnpj_substituto);printf ("\n");
atual->cnpj = cnpj_substituto;
printf(" Dados alterados com sucesso.");
}else{
printf("\n Cadastro nao encontrado.",198);
}
printf("\n\n\n PRESSIONE QUALQUER TECLA PARA VOLTAR AO MENU PRINCIPAL.");
}
// +++++++++++++++++++++++++++++++++++++++++ FIM CADASTRO DE CLIENTES +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ //
// +++++++++++++++++++++++++++++++++++++++++ CADASTRO DE PRODUTOS ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ //
Prod* inserir_produto (Prod *primeiroProd){
Prod produto;
Prod *atual= primeiroProd;
char identificador= 'F';
//Lendo as informações do produto.
printf(" Nome do Produto: ");
fflush(stdin);
fflush (stdin); fgets(produto.nomeProd, 40, stdin); printf ("\n");
printf(" Código do Produto: ",162);
fflush(stdin);
scanf("%u",&produto.codigo);printf ("\n");
printf(" Quantidade do Produto em estoque: ",162);
fflush(stdin);
scanf("%u",&produto.qtdestoque);printf ("\n");
//Verificando se o Produto existe
for(atual=primeiroProd; atual!=NULL; atual=atual->prox){
if(atual->codigo==produto.codigo){
identificador= 'V';
break;
}
}
if(identificador!='V' && (strlen(produto.nomeProd)!=1) && produto.qtdestoque !=1 ) {
//Alocando os espaços e guardando as informações do Produto.
Prod* NovoProduto=(Prod*) malloc (sizeof(Prod));
strcpy(NovoProduto->nomeProd, produto.nomeProd);
NovoProduto->codigo= produto.codigo;
NovoProduto->qtdestoque= produto.qtdestoque;
NovoProduto->prox= primeiroProd;
printf(" Produto cadastrado com sucesso.");
printf("\n\n PRESSIONE QUALQUER TECLA PARA VOLTAR AO MENU PRINCIPAL.");
return NovoProduto;
}else{
printf(" Produto invalido.",160);
printf("\n\n PRESSIONE QUALQUER TECLA PARA VOLTAR AO MENU PRINCIPAL.");
return primeiroProd;
}
}
void listar_produto (Prod* primeiroProd){
Prod* atual;//Ponteiro para percorrer a lista sem perder a referência do primeiro elemento da lista.
for(atual= primeiroProd ; atual!= NULL; atual= atual->prox){//Imprimindo os Produtos da lista, e suas repectivas informações.
printf("\n Nome do Produto: ");
printf("%s", atual->nomeProd);
printf("\n Codigo do Produto: ",162 );
printf("%u", atual->codigo);
printf("\n\n Quant.estoque:",162 );
printf("%u", atual->qtdestoque);
printf("\n\n");
}
if(primeiroProd==NULL)
printf(" Nenhum Produtos no registro ainda feito.");
printf("\n\n PRESSIONE QUALQUER TECLA PARA VOLTAR AO MENU PRINCIPAL.");
}
Prod* excluir_produto(Prod* primeiroProd){
Prod *anterior= NULL;//Ponteiro para saber o elemento anterior ao elemento atual da lista.
Prod *atual= primeiroProd;//Ponteiro para percorrer a lista sem perder o primeiro elemento da lista.
int codigo=0;
//Solicitando e lendo o Codigo do Produto a ser excluído.
printf(" Inserir o Codigo do Produto a ser excluido: ");
fflush(stdin);
scanf("%u",&codigo);
//Procurando o Produto na lista.
while(atual!= NULL && atual->codigo!=codigo){
anterior= atual;
atual= atual->prox;
}
//Mostrará mensagem caso o Produto não seja encontrado.
if(atual==NULL){
printf("\n Codigo nao encontrado.", 198);
printf("\n\n PRESSIONE QUALQUER TECLA PARA VOLTAR AO MENU PRINCIPAL.");
return primeiroProd;
}
//Excluindo o primeiro Produto da lista.
if(anterior==NULL){
printf("\n Codigo excluido com sucesso.", 163,161);
primeiroProd= atual->prox;
//Excluindo o produto do meio da lista.
}else{
printf("\n Codigo excluido com sucesso.", 163,161);
anterior->prox= atual->prox;
}
//liberando o espaço da memória.
free(atual);
printf("\n\n PRESSIONE QUALQUER TECLA PARA VOLTAR AO MENU PRINCIPAL.");
return primeiroProd;
}
//Função para alterar Produto.
void alterar_produto(Prod* primeiroProd){
char nomeProd_substituto[40];
int codigo_substituto;
int qtdestoque_substituto;
unsigned long int buscaCodigo;
Prod* atual=primeiroProd;
//solicitnado e lendo o código do Produto a ser alterado.
printf(" Codigo do produto a ser alterado: ", 162);
fflush(stdin);
scanf("%u",&buscaCodigo);
//Procurando o Produto na lista.
while(atual!= NULL && atual->codigo!=buscaCodigo){
atual= atual->prox;
}
//Alterando os dados do Produto;
if(atual!=NULL){
for(atual= primeiroProd ; atual!= NULL; atual= atual->prox){
printf("\n Nome do Produto: ");
printf("%s", atual->nomeProd);
printf("\n Codigo do Produto: ",162 );
printf("%u", atual->codigo);
printf("\n\n Quant.estoque:",162 );
printf("%u", atual->qtdestoque);
printf("\n\n");
printf("\n\n");
system("pause");
system("cls");
printf("\n Novo nome do produto: ");
fflush (stdin); fgets(nomeProd_substituto, 40, stdin);
strcpy(atual->nomeProd,nomeProd_substituto);
printf("\n Novo Codigo: ");
fflush (stdin);
scanf("%u",&codigo_substituto);
atual->codigo = codigo_substituto;
printf("\n Quantidade atual no estoque: ");
fflush (stdin);
scanf("u%",&qtdestoque_substituto);printf ("\n");
atual->qtdestoque = qtdestoque_substituto;
printf(" Dados alterados com sucesso.");
}}else{
printf("\n Produto nao encontrado.",198);
}
printf("\n\n\n PRESSIONE QUALQUER TECLA PARA VOLTAR AO MENU PRINCIPAL.");
return(main);
}
// +++++++++++++++++++++++++++++++++++++++++ FIM DE PRODUTOS ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ //