Ir ao conteúdo
  • Cadastre-se

Lista/Imprimir


samucaur

Posts recomendados

Preciso gerar um relatório .txt dos produtos cadastrados em produtos ativos, inativos, falta implementar a parte de vendas do MENU PRINCIPAL. Tô apanhando muito em ponteiros sem alguém puder me ajudar ficaria muito grato, wlw galera.

 

#include<iostream>
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<windows.h>
#include <locale.h>
#include <sstream>
#include <string> // ler e escrever um arquivo de texto
#include <fstream> // ler e escrever um arquivo de texto


using namespace std;

struct cadastro{
char nome[50];
int ID;
int quantidade;
float preco;
bool ativo;
cadastro *prox;
};


cadastro * inserir(cadastro *inicio, cadastro *novo){
cadastro *encontrar = NULL;
cadastro * aux = inicio;
if(inicio == NULL){
inicio = novo;
}else if(novo->ID > inicio->ID && inicio->prox==NULL){
inicio->prox = novo;
}else if(novo->ID < inicio->ID){
novo->prox = inicio;//novo aponta pro prox que é o inicio ate então, o prox=inicio é um cara só
inicio = novo;//inicio agora é o novo
}else{
while(aux->prox->ID < novo->ID && aux->prox->prox != NULL){//enquanto o novo for maior que o anterior
aux=aux->prox;//aux é o ultimo que aponta para prox
}
//inserir o novo depois do aux
//se for menor que o ultimo (saiu por causa do primeiro criterio)
if(aux->prox->ID > novo->ID ){
novo->prox = aux->prox; //aponta pro mesmo proximo do aux, ja que ele sera inserido depois do aux
aux->prox = novo;
}else{ //preciso inserir na ultima posicao
//o aux esta na penultima posicao, tenho que me mover para a ultima
aux = aux->prox;

//depois de chegar na ultima posicao, insiro o novo elemento no final (prox)
aux->prox = novo;
}
return inicio;
}
}



cadastro * alterar (cadastro *inicio, int ID, int quantidade){
cadastro * aux = inicio;

if(inicio == NULL){
cout << "NENHUM PRODUTO CADASTRADO" <<endl;
}else{
while(aux != NULL){
if(aux->ID == ID)
break;

aux = aux->prox;//aux é o que recebe o prox
}

if(aux != NULL){
//o produto que querem alterar e o AUX
aux->quantidade = quantidade;
}else{
cout << "PRODUTO NAO CADASTRADO" << endl;
}
}
return inicio;
}

cadastro * listar_produtos (cadastro *inicio, int ID){
cadastro * aux = inicio;
if(inicio == NULL){
cout << "NENHUM PRODUTO CADASTRADO" <<endl;
}else{
while(aux != NULL){
if(aux->ID == ID)
break;

aux = aux->prox;//aux é o que recebe o prox
}

if(aux != NULL){
if(aux->ativo == true){
cout << "PRODUTO ATIVO - SERA INATIVADO" <<endl;
aux->ativo = false;
}else{
cout << "PRODUTO INATIVO - SERA ATIVADO" <<endl;
aux->ativo = true;
}
//o produto que querem alterar e o AUX

}else{
cout << "NENHUM PRODUTO CADASTRADO" <<endl;
}
}
return inicio;
}

cadastro * ativo_inativo (cadastro *inicio, int ID){
cadastro * aux = inicio;

if(inicio == NULL){
cout << "NENHUM PRODUTO CADASTRADO" <<endl;
}else{
while(aux != NULL){
if(aux->ID == ID)
break;

aux = aux->prox;//aux é o que recebe o prox
}

if(aux != NULL){
if(aux->ativo == true){
cout << "PRODUTO ATIVO - SERA INATIVADO" <<endl;
aux->ativo = false;
}else{
cout << "PRODUTO INATIVO - SERA ATIVADO" <<endl;
aux->ativo = true;
}
//o produto que querem alterar e o AUX

}else{
cout << "NENHUM PRODUTO CADASTRADO" <<endl;
}
}
return inicio;
}

void MenuPrincipal(){
cout << "#---------------------#" << endl;
cout << "# MENU PRINCIPAL #" << endl;
cout << "#---------------------#" << endl;
cout << "[1] - GERENCIAR ESTOQUE" << endl;
cout << "[2] - COMPRAS" << endl;
cout << "[3] - SAIR DO PROGRAMA" << endl;
cout << "OPCAO: ";
}


void MenuEstoque(){
cout << "#--------------------------------------#" << endl;
cout << "# MENU ESTOQUE #" << endl;
cout << "#--------------------------------------#" << endl;
cout << "[1] CADASTRAR PRODUTO" << endl;
cout << "[2] ALTERAR QUANTIDADE" << endl;
cout << "[3] ATIVAR OU INATIVAR PRODUTO" << endl;
cout << "[4] LISTAR TODOS OS PRODUTOS" << endl;
cout << "[5] LISTAR PRODUTOS ATIVOS" << endl;
cout << "[6] LISTAR PRODUTOS INATIVOS" << endl;
cout << "[7] VOLTAR AO MENU PRINCIPAL" << endl;
cout << "OPCAO: ";
}


void MenuCompras(){
cout << "----------------------------------" << endl;
cout << "[1]. PEDIDOS" << endl;
cout << "[2]. LISTAR" << endl;
cout << "[3]. SAIR" << endl;
cout << "OPCAO: ";
}



void carregar_arquivo(){//EXEMPLO DE COMO IMPRIMIR A LISTA
string line;
ifstream myfile ; // ifstream = padrão ios:in para fazer o implot do arquivo
}

//TESTANDO
void escreve_arquivo(){
int x = 2 , y = 2, soma = 0;
ofstream Saida;
Saida.open("saida.txt");
soma = x + y;
Saida << "A soma é: " << soma << endl;
Saida.close();

}

int main(){
cadastro *inicio= NULL;//ponteiro, vazio de inicio
cadastro *fim= NULL;
cadastro *aux= NULL;//possui um endereço de memoria(um ponteiro vai armazenar um endereco de memória)
int ID, QTDE;

SetConsoleOutputCP(1252);
system ("color F1");

int op_Menu_Principal = -1;

while(op_Menu_Principal != 3){
MenuPrincipal();
cin >> op_Menu_Principal; //Captura de variável do menu principal

switch(op_Menu_Principal){

case 1:
int op_Menu_Estoque = -1;

//while(op_Menu_Estoque){

while( op_Menu_Estoque!= 7){
MenuEstoque();
cin >> op_Menu_Estoque;

switch(op_Menu_Estoque){
case 1:
aux = (cadastro *) malloc(sizeof(cadastro));//nao é vetor pois nao tem nenhum numero multiplicando o tamanho do ponteiro, sizeof

cout << "-------------------------------------------" << endl;
cout <<"INFORME o ID: ";
cin >> aux->ID;
cout <<"INFORME O NOME DO PRODUTO: ";
cin >> aux->nome;
cout <<"INFORME QUANTIDADE DO PRODUTO: ";
cin >> aux->quantidade;

cout << "INFORME O PREÇO DO PRODUTO: ";
cin >> aux->preco;

while(aux->quantidade < 6 || aux->quantidade < 0)
{
cout << "DIGITE A QUANTIDADE CORRETA: ";
cin >> aux->quantidade;
}
aux->ativo = true;
aux->prox = NULL;
inicio = inserir(inicio, aux);
cout << "-------------------------------------------" << endl;
break;

case 2:
cout << "-------------------------------------------" << endl;
cout << "INFORME O ID: ";
cin >> ID;
cout << "INFORME A NOVA QUANTIDADE: ";
cin >> QTDE;
inicio = alterar(inicio, ID, QTDE);
cout << "-------------------------------------------" << endl;
break;

case 3:
cout << "-------------------------------------------" << endl;
cout << "INFORME O ID: ";
cin >> ID;
inicio = ativo_inativo(inicio, ID);
cout << "-------------------------------------------" << endl;
break;

case 4:
aux = inicio;//aux vai ser impresso, então sera o primeiro
cout << "-------------------------------------------" << endl;
cout << "RELATÓRIO DOS PRODUTOS CADASTRADOS" << endl;
while(aux != NULL){//se aux for diferente de null, tem algo nele o while vai contar
cout <<"ID: " << aux->ID << endl;
cout << "PRODUTO: " << aux->nome << endl;
cout << "QUANTIDADE: " << aux->quantidade << endl;
aux = aux->prox;
}
break;

case 5:
cout << "-------------------------------------------" << endl;
cout << "RELATÓRIO DOS PRODUTOS CADASTRADOS ATIVADOS" << endl;
aux = inicio;//aux vai ser impresso, então sera o primeiro
while(aux != NULL && aux->ativo == true){//se aux for diferente de null, tem algo nele o while vai contar
cout <<"ID: " << aux->ID << endl;
cout << "PRODUTO: " << aux->nome << endl;
cout << "QUANTIDADE: " << aux->quantidade << endl;
aux = aux->prox;
}
cout << "-------------------------------------------" << endl;
break;

case 6:
cout << "-------------------------------------------" << endl;
cout << "RELATÓRIO DOS PRODUTOS CADASTRADOS DESATIVADOS" << endl;
aux = inicio;//aux vai ser impresso, então sera o primeiro
while(aux != NULL && aux->ativo == false){//se aux for diferente de null, tem algo nele o while vai contar
cout <<"ID: " << aux->ID << endl;
cout << "PRODUTO: " << aux->nome << endl;
cout << "QUANTIDADE: " << aux->quantidade << endl;
aux = aux->prox;
}
cout << "-------------------------------------------" << endl;
break;

}
}
}
}


int WINAPI WinMain (HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCdmShow);
{
MessageBox (NULL, "OBRIGADO POR USAR NOSSO SISTEMA!!","SVT SYSTEM", MB_OK | MB_ICONINFORMATION);
}
}

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber 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...