Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- struct data{
- int dia;
- int mes;
- int ano;
- };
- typedef struct data data;
- struct endereco{
- char rua[100];
- char cidade[30];
- char estado[30];
- int numero;
- };
- typedef struct endereco endereco;
- struct cliente{
- int cpf;
- int telefone;
- char nome[100];
- struct endereco;
- struct data;
- struct cliente *ant;
- struct cliente *prox;
- };
- typedef struct cliente cliente;
- struct produto{
- int codigo;
- char descricao;
- int quant_est;
- double preco_und;
- struct produto *ante;
- struct produto *proxi;
- };
- typedef struct produto produto;
- struct venda {
- int qtd_compra;
- int c;
- int co;
- struct venda *antes;
- struct venda *proxim;
- };
- typedef struct venda venda;
- cliente *inicializar_cliente(int x){
- cliente *novo =(cliente*) malloc(sizeof(cliente));
- novo->cpf = x;
- printf("digite o nome do cliente: ");
- gets(novo->nome);
- printf("digite o telefone do cliente: ");
- scanf("%d", &novo->telefone);
- printf("digite a data de aniversario do cliente dd/mm/aaaa: ");
- scanf("%d/%d/%d", &novo->data->dia, &novo->data->mes, &novo->data->ano);
- printf("digitar o estado do cliente: ");
- gets(novo->endereco->estado);
- printf("digitar a cidade do cliente: ");
- gets(novo->endereco->cidade);
- printf("digitar a rua do cliente: ");
- gets(novo->endereco->rua);
- printf("digitar o numero do cliente: ");
- gets(novo->endereco->numero);
- novo->prox = NULL;
- novo->ant = NULL;
- return novo;
- }
- produto *inicializar_produto(int x){
- produto *novo =(produto*) malloc(sizeof(produto));
- novo->codigo = x;
- printf("digite a descricao do produto: ");
- gets(novo->descricao);
- printf("digite a quantidade de estoque: ");
- scanf("%d", &novo->quant_est);
- printf("digite o preco da unidade: ");
- scanf("%lf", novo->preco_und);
- novo->proxi = NULL;
- novo->ante = NULL;
- return novo;
- }
- void inclusao_cliente(cliente *lista, int cpf){
- int z = 0;
- if(lista->prox == NULL){
- cliente *novo = inicializar(cpf);
- lista->prox = novo;
- novo->ant = lista;
- }
- else {
- cliente *aux = lista;
- while(aux->prox != NULL){
- if(aux->cpf == cpf){
- z = 1;
- }
- aux = aux->prox;
- }
- if(z == 0){
- cliente *novo = inicializar_cliente(cpf);
- aux->prox = novo;
- novo->ant = aux;
- }
- }
- return;
- }
- void alteracao_cliente(cliente *lista, int cpf){
- int z = 0;
- cliente *aux= lista;
- while(aux->prox != NULL){
- if(aux->cpf == cpf){
- inicializar_cliente(cpf);
- z = 1;
- }
- aux = aux->prox;
- }
- if(z == 0)
- printf("cliente nao encontrado\n");
- return;
- }
- void consulta_cliente(cliente *lista, int cpf){
- int z = 0;
- cliente *aux= lista;
- while(aux->prox != NULL){
- if(aux->cpf == cpf){
- printf("cpf: %d\n", aux->cpf);
- printf("nome: %s\n", aux->nome);
- printf("telefone: %d\n", aux->telefone);
- printf("estado: %s\n", aux->endereco->estado);
- printf("cidade: %s\n", aux->endereco->cidade);
- printf("rua: %s\n", aux->endereco->rua);
- printf("numero: %d\n", aux->endereco->numero);
- z = 1;
- }
- aux = aux->prox;
- }
- if(z == 0)
- printf("cliente nao encontrado\n");
- return;
- }
- void deletar_cliente(cliente *lista, venda *lista1, int cpf){
- int x = 0;
- venda *aux = lista1;
- while(aux->proxim != NULL){
- if(aux->c == cpf){
- x = 1;
- }
- aux = aux->proxim;
- }
- if(x == 0){
- cliente *aux1 = lista;
- cliente *aux2 = lista->prox;
- while(aux2 != NULL){
- if(aux2->cpf == cpf){
- aux2 = aux2->prox;
- aux1->prox = aux2;
- aux2->ant = aux1;
- }
- aux1 = aux1->prox;
- aux2 = aux2->prox;
- }
- }
- else{
- printf("cliente cadastrado em venda\n");
- }
- return;
- }
- void inclusao_produto(produto *lista, int codigo){
- int z = 0;
- if(lista->proxi == NULL){
- produto *novo = inicializar_produto(codigo);
- lista->proxi = novo;
- novo->ante = lista;
- }
- else {
- produto *aux = lista;
- while(aux->proxi != NULL){
- if(aux->codigo == codigo){
- z = 1;
- }
- aux = aux->prox;
- }
- if(z == 0){
- produto *novo = inicializar_produto(codigo);
- aux->proxi = novo;
- novo->ante = aux;
- }
- }
- return;
- }
- void alteracao_produto(produto *lista, int codigo){
- int z = 0;
- produto *aux= lista;
- while(aux->proxi != NULL){
- if(aux->codigo == codigo){
- inicializar_produto(codigo);
- z = 1;
- }
- aux = aux->proxi;
- }
- if(z == 0)
- printf("cliente nao encontrado\n");
- return;
- }
- void consulta_produto(produto *lista, int codigo){
- int z = 0;
- produto *aux= lista;
- while(aux->proxi != NULL){
- if(aux->codigo == codigo){
- printf("codigo: %d\n", aux->codigo);
- printf("descricao: %s\n", aux->descricao);
- printf("quantidade em estoque: %d\n", aux->quant_est);
- printf("preco unitario: %lf\n", aux->preco_und);
- z = 1;
- }
- aux = aux->proxi;
- }
- if(z == 0)
- printf("cliente nao encontrado\n");
- return;
- }
- void deletar_produto(produto *lista, int codigo){
- int x = 0;
- venda *aux = lista1;
- while(aux->proxim != NULL){
- if(aux->co == codigo){
- x = 1;
- }
- aux = aux->proxim;
- }
- if(x == 0){
- produto *aux1 = lista;
- produto *aux2 = lista->proxi;
- while(aux2 != NULL){
- if(aux2->codigo == codigo){
- aux2 = aux2->proxi;
- aux1->proxi = aux2;
- aux2->ante = aux1;
- }
- aux1 = aux1->proxi;
- aux2 = aux2->proxi;
- }
- }
- else{
- printf("produto cadastrado em venda\n");
- }
- return;
- }
- void inclusao_venda(venda *lista, cliente *lista1, produto *lista2, int codigo, int cpf, int qtd){
- produto *aux = lista2;
- cliente *aux1 = lista1;
- int z = 0, y = 0, x = 0;
- while(aux->proxi != NULL){
- if(aux->codigo == codigo){
- z = 1;
- if(aux->quant_est >= qtd){
- x = 1;
- }
- }
- aux = aux->prox;
- }
- while(aux1->prox !=NULL){
- if(aux1->cpf == cpf){
- y = 1;
- }
- aux1 = aux1->prox;
- }
- if(x == 1 && y == 1 && z == 1){
- if(lista->proxim == NULL){
- venda* novo = (venda*) malloc(sizeof(venda));
- venda->proxim = NULL;
- venda->antes = NULL;
- venda->qtd_compra = qtd;
- venda->c = cpf;
- venda->co = codigo;
- lista->proxim = novo;
- novo->antes = lista;
- }
- else{
- venda *aux2 = lista;
- while(aux2->proxim, != NULL){
- aux2 = aux2->proxim;
- }
- venda* novo = (venda*) malloc(sizeof(venda));
- venda->proxim = NULL;
- venda->antes = NULL;
- venda->qtd_compra = qtd;
- venda->c = cpf;
- venda->co = codigo;
- aux2->proxim = novo;
- novo->antes = aux;
- }
- }
- if(x == 1 && y == 0){
- printf("produto nao encontrado\n");
- }
- else if (x == 1 && y == 1 && z == 0 ){
- printf("quantidade de estoque menor\n");
- }
- else
- printf("cliente nao encontrado\n");
- return;
- }
- void alteracao_venda(venda *lista, int codigo, int cpf){
- venda *aux = lista;
- while(aux->proxim != NULL){
- if(aux->c == cpf && aux->co == codigo){
- printf("digite o novo cpf: ");
- scanf("%d", &aux->c);
- printf("digite o novo codigo: ");
- scanf("%d", &aux->co);
- printf("digite a nova quantidade: ");
- scanf("%d", &aux->qtd_compra);
- }
- aux = aux->proxim;
- }
- return;
- }
- void consulta_venda(venda *lista, int codigo, int cpf){
- venda *aux = lista;
- while(aux->proxim != NULL){
- if(aux->c == cpf && aux->co == codigo){
- printf("o cpf eh: %d\n", aux->c);
- printf("o codigo eh: %d\n", aux->co);
- printf("a quantidade eh: %d\n", aux->qtd_compra);
- }
- aux = aux->proxim;
- }
- return;
- }
- void deletar_venda(venda *lista, int codigo, int cpf){
- int x = 0;
- venda *aux1 = lista;
- venda *aux2 = lista->proxim;
- while(aux2 != NULL){
- if(aux2->co == codigo && aux2->c == cpf){
- aux2 = aux2->proxim;
- aux1->proxim = aux2;
- aux2->antes = aux1;
- x = 1;
- }
- aux1 = aux1->proxim;
- aux2 = aux2->proxim;
- }
- if(x == 0)
- printf("venda nao encontrada:\n");
- return;
- }
- int main (){
- int x, y, cp, cod, qtd;
- cliente lista;
- lista.prox = NULL;
- lista.ant = NULL;
- produto lista1;
- lista1.ante = NULL;
- lista1.proxi = NULL;
- venda lista2;
- lista2.antes = NULL;
- lista2.proxim = NULL;
- do{
- printf("1.Cliente\n2.Produto\n3.Vendas");
- scanf("%d",&x);
- switch(x){
- case 1:
- printf("1.Adicionar\n2.Alterar\n3.Consultar\n4.Deletar\n");
- scanf("%d", &y);
- switch(y){
- case 1:
- printf("digite o cpf do cliente: ");
- scanf("%d", &cp);
- inclusao_cliente(&lista, cp);
- break;
- case 2:
- printf("digite o cpf do cliente: ");
- scanf("%d", &cp);
- alteracao_cliente(&lista, cp);
- break;
- case 3:
- printf("digite o cpf do cliente: ");
- scanf("%d", &cp);
- consulta_cliente(&lista, cp);
- break;
- case 4:
- printf("digite o cpf do cliente: ");
- scanf("%d", &cp);
- deletar_cliente(&lista, &lista2, cp);
- break;
- default:
- printf("valor invalido, tente novamente\n");
- }
- case 2:
- printf("1.Adicionar\n2.Alterar\n3.Consultar\n4.Deletar\n");
- scanf("%d", &y);
- switch(y){
- case 1:
- printf("digite o codigo do produto: ");
- scanf("%d", &cod);
- inclusao_cliente(&lista1, cod);
- break;
- case 2:
- printf("digite o codigo do produto: ");
- scanf("%d", &cod);
- alteracao_produto(&lista1, cod);
- break;
- case 3:
- printf("digite o codigo do produto: ");
- scanf("%d", &cod);
- consulta_produto(&lista1, cod);
- break;
- case 4:
- printf("digite o codigo do produto: ");
- scanf("%d", &cod);
- deletar_produto(&lista1, cod);
- break;
- default:
- printf("valor invalido, tente novamente\n");
- case 3:
- printf("1.Adicionar\n2.Alterar\n3.Consultar\n4.Deletar\n");
- scanf("%d", &y);
- switch(y){
- case 1:
- printf("digite o codigo do produto e o cpf do cliente e a quantidade a ser vendida: ");
- scanf("%d %d %d", &cod, &cp, &qtd);
- inclusao_venda(&lista2, &lista, &lista1, cod, cp, qtd);
- break;
- case 2:
- printf("digite o codigo do produto e o cpf do cliente: ");
- scanf("%d %d", &cod, &cp);
- alteracao_venda(&lista2, cod, cp);
- break;
- case 3:
- printf("digite o codigo do produto e o cpf do cliente: ");
- scanf("%d", &cod, &cp);
- consulta_venda(&lista2, cod, cp);
- break;
- case 4:
- printf("digite o codigo do produto e o cpf do cliente: ");
- scanf("%d %d", &cod, &cp);
- deletar_produto(&lista2, cod, cp);
- break;
- default:
- printf("valor invalido, tente novamente\n");
- }
- }
- }
- }while (x!= 0);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement