Ir para conteúdo

Arquivado

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

samueksan001

c/c++

Recommended Posts

//Analise este programa e me ajudem a corrigir o erro que se encontra na opção de listar!

//Também preciso de criar uma opção de listar, gostaria quem me ajudasse, pois estou sem tempo, muitos trabalho de faculdade.

 

 

#include<stdio.h>

#include<stdlib.h>

#include<conio.h>

#include<string.h>

 

//-- estrutura produto ------------------

 

struct funcionarios{

int ex; //esta variável ex serve para saber se o cadastro está excluído ou não. se for 1 está excluído se for 0 não está.

char nome[30], sit[10], cargo[15];

long int cpf;

float salario;

};

 

//-- variáveis globais -----------

 

FILE *cadastro;

struct funcionarios cad;

 

//-- declaração das funções ------------

 

void abre_arquivo(){ // função que abre o arquivo de produtos

 

cadastro=fopen("cadastro.txt","rb+"); // tenta abrir o arquivo (rb+)

if(cadastro == NULL) // se ele ainda não existe

cadastro=fopen("cadastro.txt","wb+");// então criamos ele (wb+)

if(cadastro == NULL) // se a criação também não funcionar

printf("\nErro ao abrir/criar arquivo de cadastros"); // então uma mensagem de erro é mostrada

}

 

//------ PESQUISA DE PRODUTOS--------------------------------

 

char pesquisa_cad(char nome[30]){

 

 

rewind(cadastro);// coloca o ponteiro no inicio do arquivo para pesquisar desde o começo

 

while(feof(cadastro) == 0){// enquanto não chega no fim do arquivo...

fread(&cad, sizeof(struct funcionarios), 1, cadastro);// lê uma struct produto do arquivo e copia ela para a variável global prod

if(strcmp(cad.nome,nome) && cad.ex == 0)return 1;// se o nome do produto que eu acabei de ler (cad.nome) é igual ao código que passei pra função (nome) E o produto não foi excluído...

} // então encerro a função retornando uma resposta positiva (1)

return 0;// se o while terminou sem passar pelo "return 1" então o código não existe. Neste caso retorno uma resposta negativa (0)

}

 

//------- CADASTRO DE PRODUTOS -------------------------------

 

void cad_cad(){

int pos;

struct funcionarios aux;

system("cls");

printf("-- NOVO CADASTRO --");

printf("\n\nNome: ");

fflush(stdin);

gets(aux.nome);//assim que recebo o nome digitado pelo usuário

 

if(strcmp(aux.nome,cad.nome) == 1){ // chamo a pesquisa pra saber se já existe. Se não existir (== 0) então...

printf("\nCargo: ");// ...continuo o cadastro

fflush(stdin);gets(aux.cargo);

printf("\nSituacao: ");

fflush(stdin); gets(aux.sit);

printf("\nPreco de salario: ");

fflush(stdin);scanf("%f", &aux.salario);

 

aux.ex=0; // indica que o cadastro não está excluído

fseek(cadastro, 0, SEEK_END);// posiciono o ponteiro no final do arquivo

fwrite(&aux, sizeof(struct funcionarios), 1, cadastro);// e gravo a variável aux que eu acabei de preencher

system("cls");

printf("CADASTRO EFETUADO COM SUCESSO !!");

getch();

}

else {

printf("\n\nCadastro ja existente.");// se a pesquisa retornar o valor 1 e que o cadastro já existe

getch();

}

}

 

//--------- ALTERAÇÃO DE PRODUTOS ---------------------------------------------------------------------

 

void alt_cad(){

struct funcionarios aux;

int resp, flag=1, pos;

 

system("cls");

printf("-- ALTERACAO DE PRODUTOS --");

printf("\n\nNome: ");

fflush(stdin);

gets(aux.nome);

 

if(strcmp(aux.nome,cad.nome) == 0){

printf("\nProduto Inexistente !!");

getch();

}

else{

fseek(cadastro, -sizeof(struct funcionarios), SEEK_CUR); // se o produto existe então posiciono o ponteiro para o inicio dele

fread(&aux, sizeof(struct funcionarios), 1, cadastro); // assim eu posso fazer a leitura no arquivo e colocar os dados na variável aux

printf("\nNome: %s", aux.nome); //

printf("\nCargo: %s", aux.cargo);

printf("\nSituacao: %s", aux.sit);

printf("\nSalario: R$ %.2f", aux.salario); // mostro os dados do produto e pergunto se

// o usuário quer mesmo alterá-los

printf("\n\nAlterar? 1- sim 0- nao "); //

scanf("%d", &resp); //

do{

switch(resp){

case 0:

flag=0;

break;

case 1: // se a resposta for sim (1)...

printf("\nNOVOS DADOS\n");

printf("\nNome: "); //

fflush(stdin);gets(aux.nome); //

printf("\nCargo: ");

fflush(stdin);gets(aux.cargo);

printf("\nSituacao: ");

fflush(stdin);gets(aux.sit);

// ...então eu obtenho os novos dados

printf("\nSalario: "); //

fflush(stdin);scanf("%f", &aux.salario);//

//

fseek(cadastro, -sizeof(struct funcionarios), SEEK_CUR); // volto o ponteiro para o início da ficha

fwrite(&aux, sizeof(struct funcionarios), 1, cadastro); //e gravo os novos dados que o usuário acabou de digitar

system("cls");

printf("ALTERACAO EFETUADA COM SUCESSO !!");

getch();

flag=0;

break;

default:

printf("\nopcao invalida. Digite novamente.");

scanf("%d", &resp);

}

}while(flag);

}

}

 

//------ BUSCA DE PRODUTOS --------------------------------

 

void mostra_cad(){

int pos;

struct funcionarios aux;

system("cls");

printf("-- PESQUISA DE PRODUTOS --");

printf("\n\nNome: ");

fflush(stdin);

gets(aux.nome);

 

if(strcmp(aux.nome,cad.nome) == 0){

printf("\nProduto Inexistente !!");

getch();

}

else {

fseek(cadastro, -sizeof(struct funcionarios), SEEK_CUR); // se o produto existe eu volto o ponteiro para o início da ficha

fread(&aux, sizeof(struct funcionarios), 1, cadastro);

printf("\nNome: %s", aux.nome); //

printf("\nCargo: %s", aux.cargo);

printf("\nSituacao: %s", aux.sit);

// e mostro os dados

printf("\nSalario: R$ %.2f", aux.salario); //

//

getch();

}

}

 

 

 

//--------------------------------------

 

void exc_cad(){

 

struct funcionarios aux;

int resp, flag=1, pos;

 

system("cls");

printf("-- EXCLUSAO DE FUNCIONARIOS --");

printf("\n\nNome: ");

fflush(stdin);

gets(aux.nome);

 

if(strcmp(aux.nome,cad.nome) == 1){

printf("\nFuncionario Inexistente !!");

getch();

}

else {

fseek(cadastro, -sizeof(struct funcionarios), SEEK_CUR); // se o produto existe então posiciono o ponteiro para o inicio dele

fread(&aux, sizeof(struct funcionarios), 1, cadastro); // assim eu posso fazer a leitura no arquivo e colocar os dados na variável aux

printf("\nNome: %s", aux.nome); //

printf("\nCargo: %s", aux.cargo);

printf("\nSituacao: %s", aux.sit);

printf("\nSalario: R$ %.2f", aux.salario);// mostro os dados do produto e pergunto se

// o usuário quer mesmo excluí-los

printf("\n\nExcluir? 1- sim 0- nao\n\t");

scanf("%d", &resp);

do{

switch(resp){

case 0:

flag=0;

break;

case 1: // se a resposta for sim (1)...

aux.ex=1; // altero o campo ex para 1

fseek(cadastro, -sizeof(struct funcionarios), SEEK_CUR);// ponho o ponteiro no início da ficha

fwrite(&aux, sizeof(struct funcionarios), 1, cadastro); // e a gravo novamente mas agora com o campo ex valendo 1, o que faz com que a pesquisa não o encontre

system("cls");

printf("EXCLUSAO EFETUADA COM SUCESSO !!");

getch();

flag=0;

break;

default:

printf("\nOpcao invalida. Digite novamente.");

scanf("%i", &resp);

}

}while(flag);

}

}

 

//--------------------------------------

 

void menu_principal(){

 

int op;

 

do{

system("cls");

printf(" --- MENU PRINCIPAL ---");

printf("\n\n1. CADASTRAR\n2. PESQUISAR\n3. ALTERAR\n4. LISTAR\n5. EXCLUIR\n0. SAIR\n\n\n\n\t");

fflush(stdin);

scanf("\t%d", &op);

switch(op){

case 1:

cad_cad();

break;

case 2:

mostra_cad();

break;

case 3:

alt_cad();

break;

/*case 4:

list_cad();

break;*/

case 5:

exc_cad();

break;

case 0:

break;

default:

printf("\n\nopção invalida !!\n\n");

getch();

}

}while(op);

}

 

//-- programa ------------------------

 

int main(){

abre_arquivo();

menu_principal();

fclose(cadastro);

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por Kefatif
      Prezados, boa tarde.
       
      Utilizo um banco de dados Mysql + Programação PHP e HTML.
       
      Preciso que no filtro do sql ele não me traga o estoque do CNES "0000000", como eu poderia ta excluindo ele do filtro?
       
       
      $sqlestoque = "select A.ID_ESTOQUE, D.CNES, D.NOME_UNIDADE, B.COBERTURA, A.QTD, C.DATA_REGISTRO FROM lesao_rel_estoque_coberturas A INNER JOIN lesao_coberturas B ON A.ID_COBERTURA = B.ID_COBERTURA INNER JOIN lesao_estoque C ON A.ID_ESTOQUE = C.ID_ESTOQUE INNER JOIN unidades D ON C.CNES = D.CNES WHERE C.ID_ESTOQUE = (SELECT MAX(E.ID_ESTOQUE) FROM lesao_estoque E WHERE E.CNES = C.CNES) ORDER BY A.ID_ESTOQUE DESC";  
      Agradeço a ajuda desde já.
       
      Muito obrigado!
    • Por fideles
      Caros,
       
      Venho por uma duvida que esta cruel comigo. Explico-lhes.
       
      Tenho um banco de dados contendo exatas 4 colunas (id, codigo, descricao, quantidade) e criei um relatorio no excel que me separa os codigos, neste caso seria 3 abas pq tenho somente 3 codigos internos (S = Solicitar, F = Forneceder, B = Baixado) e criei uma select com GROUP By codigo
       
      Ai no banco eu posso ter 30 codigos com S, 10 com F e 15 com B,
      SELECT * FROM solicitacoes WHERE n_solicitacao = '".$n_solicitacao."' GROUP BY codigo Acontece que essa instrução acima, lista somente a primeira linha de cada codigo, como que eu faço neste caso para ele listar todos codigos? Exibir no caso os 30 codigos com S, os 10 com F e os 15 com B ? 
       
      Estou comendo algo ou meu raciociono esta totalmente equivocado ?
       
    • Por biakelly
      Olá,
       
      Tenho o seguinte comando funcionando perfeitamente, mas o problema é que ele exclui após clicar no link "Excluir alunos", tem como adaptar ele para perguntar antes se o usuário quer excluir o aluno? Estou tendo problemas com a pessoa que administra o colégio e esta excluindo "sem querer" os alunos.
       
      <span style="cursor: pointer;" onclick="excluirAluno('<?php echo $row['id_aluno']; ?>')"> Excluir alunos</span>  
       
      Tenho essa função que avisa sobre a exclusão:
       
      function excluirAluno(id_aluno) { $.ajax({ url: './excluirAluno.php', type: 'POST', data: { id_aluno: id_aluno }, success:function(response){ if(response=="success"){ alert("Aluno excluído."); location.reload(); } else{ alert(response); } } }) }  
    • Por jefinhocps
      Pessoal boa noite, beleza com vocês?
      estou tentando listar os PEDIDOS e seus respectivos itens no php, mas como não conheço muito estou enfrentando esse problema.
       
      Eu pretendo colocar esses dados dentro de um card bootstrap.
      estou conseguindo imprimir os dados, mas esta mostrando em card diferente...
      Ex: pedido 1 eu tenho dois itens,
      e esta sendo mostrado:
       
      pedido 1
      item 1
       
      pedido 1
      item 2
       
      queria deixar tudo agrupado...
       
      pedido 1
      item 1
      item 2
       
      pedido 2
      item 1
      item 2
      item 3
      item 4
       
      Alguém consegue me ajudar?
       
       
    • Por tiago8204
      O
       
×

Informação importante

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