Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

samucaur

Gerar relatório em .txt de uma lista

Recommended Posts

Preciso gerar um relatório .txt dos produtos cadastrados separados em produtos ativos, inativos, falta implementar a parte de vendas no 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);
}
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por luigiferrari
      Gostaria de fazer um programa onde o usuário digitaria o tamanho de conjuntos e quantas linhas possui os conjuntos, exemplo:

      Seguindo, o programa perguntaria qual conjunto o usuário quer adicionar o valor, e então o valor seria adicionado nas linhas, e qnd cheio, seria o FIFO.
      Mas minhas principais duvidas seriam:
      1- Como eu crio um vetor dentro de outro (não necessariamente precisa ser um vetor, aceito sugestões de como fazer isso)
      2- Caso eu faça com o vetor, teria que gerar x vetores, por exemplo, caso o usuário colocasse em "qts conjuntos: 5" teria que criar 5 conjuntos(vetores) diferentes. Como faço isso?!
      Lembrando aceito qualquer sugestão, estou fazendo em C# mas tbm entendo de Python e PHP caso tenha alguma ideia.
    • Por joaoluizbt
      Eu tenho um campo com vários itens separados por vírgula,

      Qtd
      UM
      Descrição
                     1,2                                 
                 caneta,papel          
      mas preciso que eles sejam exibidos no formulário um embaixo do outro.

      Qtd
      UM
      Descrição
           1 2                                 
      caneta
      papel          
      Existe alguma forma de fazer isso só com html?
       
      o meu código apenas aponta para o campo e a informação já vem assim separada com vírgula. Como alterar?
       
      <td style="width: 10.58%; padding: .75pt .75pt .75pt .75pt;" width="10%">
      <p class="MsoNormal">            {{db.field123}}           </p>
      </td>
       
    • Por Hulkstar
      Opa pessoal,tudo bem,estou tentado emitir uma lista de usuários conectados pelo socketio,porém eu até consegui,porém consegui apenas passando um object,que no caso seria o id do usuário,eu queria passar o id e o nickname do usuário,já fiz algumas tentativas,porém sem sucesso,se alguém poder me dar uma ajuda nessa parte,é a unica coisa que está faltando para meu projeto ficar pronto.
      var users = []; io.on("connection", function(socket){ console.log("User connected: ", socket.id); socket.on("user_connected", function(username){ socket.username = username; users[username] = socket.id; io.sockets.emit("user_connected", Object.keys(users)); }); }); function enterName(){ io.emit("user_connected", idUser); return false; } io.on("user_connected", function(users){ $("#lista_usuarios").empty(); $.each(users, function(indice){ opcao_usuario = ""+users[indice]+"<br />"; $("#lista_usuarios").append(opcao_usuario); }); }); Obrigado!
    • Por helkton
      oi galera, como criar uma listagem de mesas disponíveis ou produtos cadastrados pra uma lanchonete e restaurante
       
      tipo esta imagem abaixo no caso é de um hotel, mais o esquema seria o mesmo, só mudando o ramo de atividade rsss
       

    • Por joaquim_bezzera
      Estou fazendo um trabalho para a faculdade criando uma estrutura de cadastro de uma corrida. Já consegui fazer grande parte mas não consigo resolver esses pontos. Alguém saberia resolver?

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.