Jump to content
Sign in to follow this  
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);
}
}

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Similar Content

    • By VCastilho
      Boa Tarde
      Estou tentando desenvolver um Filtro Inteligente, no qual funcionaria da seguinte forma:

      Filtro 1         Filtro 2          Filtro 3          Filtro 4 
      Opção 1
      Opção 2
      Opção 3


      Ao selecionar a Opção 1 do Filtro 1 liberaria as opções do filtro 2

      Filtro 1         Filtro 2              Filtro 3          Filtro 4 
      Opção 1      Opção 1 - a     
                           Opção 1 -b
                           Opção 1 -c

      Assim escolhendo a opção do filtro 2 liberaria as opções do Filtro 3 e assim por diante
      Ao escolher a Opção 2 do Filtro 1 liberaria outras opções

      No caso preciso aplicar na plataforma da Tray, que é o de menos porém não consigo chegar ao código certo
      Estou tentando utilizar o HTML e o JQuery em conjunto para isso, conseguem me ajudar? Realmente estou perdido na situação

      Atenciosamente Vinicius Castilho
    • By Salvatore
      Olá estou alguém poderia me ajudar a criar um botão no painel onde eu apago um conteúdo da .txt
       
      Código Abaixo
       
      Painel
      <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="icon" type="imagem/png" href="img/icon.png" /> <script language=javascript> senha = 'plsfodas'; senhadig = prompt("Digite a senha","") if (senha != senhadig){ alert('Acesso negado!'); top.location.href='index.php'; } </script> <title>Painel De Controle</title> <link href="css/bootstrap.min.css" rel="stylesheet"> <link href="http://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet"> <script> $(function() { var wbbOpt = { buttons: "bold,italic,underline,|,img,link,|,code,quote" } $("#link").wysibb(wbbOpt); }) </script> </head> <body> <div class="container"> <div class="row"> <header class="col-sm-12"> <h1>Painel de Controle</h1> <p><a href="index.php" class="btn btn-info"><i class="fa fa-arrow-left"></i> Plugins</a></p><br/> </header> <div id="content-form" class="col-sm-12"> <?php if(isset($_POST['plugin']) && isset($_POST['valor']) && isset($_POST['link']) && isset($_POST['version'])) { $plugin = $_POST['plugin']; $valor = $_POST['valor']; $link = $_POST['link']; $version = $_POST['version']; $news = unserialize(file_get_contents('news.txt')); $news[] = array('plugin' => $plugin, 'version' => $version, 'valor' => $valor, 'link' => $link); file_put_contents('news.txt', serialize($news)); echo '<div class="alert alert-dismissible alert-success"><h4><i class="fa fa-check"></i> Concluido</h4><p>Informações adicionadas'; echo '<br/>'; echo '<a href="index.php" class="alert-link">Visualizar</a></p></div>'; } else { ?> <form action="" class="form-horizontal" method="post"> <div class="form-group"> <label class="col-sm-2 control-label" for="plugin">Nome do Plugin</label> <div class="col-sm-10"> <input class="form-control" type="text" name="plugin" id="plugin" placeholder="Plugin" autofocus required> </div> </div> <div class="form-group"> <label class="col-sm-2 control-label" for="version">Versão</label> <div class="col-sm-10"> <input class="form-control" type="text" name="version" id="version" placeholder="Version" autofocus required> </div> </div> <div class="form-group"> <label class="col-sm-2 control-label" for="valor">Valor</label> <div class="col-sm-10"> <input class="form-control" type="text" name="valor" id="valor" placeholder="valor" autofocus required> </div> </div> <div class="form-group"> <label class="col-sm-2 control-label" for="link">Link</label> <div class="col-sm-10"> <input class="form-control" type="text" name="link" id="link" placeholder="Link" autofocus required> </div> </div> <button class="btn btn-primary pull-right" type="submit"><i class="fa fa-plus"></i>Adicionar</button> </form> </div> <footer class="col-sm-12"> <p><i class="fa fa-copyright"></i> <a</p> </footer> </div> </div> </body> </html>  
      o meu arquivo txt fica assim, ai quando eu colocasse o id no input e clica no botão apaga apagasse 
      a:1:{i:0;a:4:{s:6:"plugin";s:4:"1212";s:7:"version";s:3:"121";s:5:"valor";s:1:"1";s:4:"link";s:3:"212";}}
       
    • By cauai
      Olá,
      Eu estou tentando criar uma lista de vendedores que irão receber o contato de clientes através do meu site. É uma plataforma wordpress, porém tenho completo acesso ao código php.
      Até agora, só achei maneiras de enviar para múltiplos e-mails, como cópia, ou separando por departamento à escolha do cliente, utilizando o Contact Form 7, o que não é meu desejo.
      Quero algo como isso:
       
      Não sei se o Contact Form 7 me permitiria algo desse tipo, ou se teria mesmo que fazer pelo php. Mas aceito ajuda para ambos os casos.
    • By luannsr12
      Olá pessoal, parece que o meu Photoshop atualizou aqui, pois apareceu algumas ferramentas que eu não tinha visto, e também sumiu o ponteiro do seletor , alguém pode me ajudar
    • By Marcosvn
      Eu preciso criar uma funcao que pegue todas as tags <h2> dentro da sessao <article> 
       
      Basicamente oq eu quero fazer eh gerar um índice de links ancoras dinamicamente para deixar logo no inicio da pagina e, assim o usuario acessar diretamente o topico de interesse.
       
      Porem eu nao faço ideia por onde comecar essa função. Alguem pode me dar a direcao ??
       
      imagino que devo pegar cada tag H2 e armazenar numa variavel. Porem nao sei como faço isso
       
      Outro problema eh q vou precisar inserir a atributo id="#<h2>"  tbm dinamicamente
       
      nao sei se estou pensando certo ou se existe outras alternativas pra chegar nesse resultado. Mas qualquer esclarecimento ja ajuda
       
      vlw
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.