Sistema Registro de Autores

0 respostas
L

Boa noite to com trabalho e to tendo dificuldade

Cadastre autores: código, nome, sobrenome;

Remover autores pelo código;

Consultar um autor pelo código;

Listar todos os autores;

O problema que ao remover os autores acaba remove todos

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <strings.h>
#include <locale.h>

/<em>Fazer um sistema que:

Cadastre autores: codigo, nome, sobrenome;

Remover autores pelo codigo;

Consultar um autor pelo cC3digo;

Listar todos os autores;</em>/

int i, j, posicao = 0;

struct Autor

{

int codigo;

char nome[20];

char sobrenome[40];

};

struct Autor a[70]; // ???

// Printa o menu na tela

int

exibeMenu ()

{

system (cls);

printf ("* SISTEMA DE REGISTRO DE AUTORES *\n\n") /

printf (1 - Cadastrar autor\n);

printf (2 - Detalhar autor\n);

printf (3 - Listar todos os autores\n);

printf (4 - Remover autor\n);

printf (5 - Sair\n\n);

printf ("Informe a opcaoo: ");

return 0;

}
// Cadastrar autores | posicao substitui o 'for’

int

cadastroAutores (int posicao)

{

system (“cls”);
printf ("[Cadastramento de autor]\n\n");

// Codigo cadastrado automaticamente
a[posicao].codigo = posicao + 1;

printf (Nome do autor: );

setbuf (stdin, NULL);		// Limpa a memC3ria

scanf (%s, &a[posicao].nome);
printf (Sobrenome do autor: );

setbuf (stdin, NULL);		// Limpa a memC3ria

scanf (%s, &a[posicao].sobrenome);
system (cls);

printf (Autor: %s | CC3digo: %d\n\n, a[posicao].nome, a[posicao].codigo);

printf (Pressione enter para continuar…”);

getchar ();

getchar ();

return 0;

}
// Pesquisa o autor pelo codigo

int

detalharAutor (int tamanho_struct)

{

int codigo, posicao, busca = 0;

system (“cls”);

if (tamanho_struct == 0)

{

printf (Nenhum autor registrado ainda <img src="//https://cdn.jsdelivr.net/gh/twitter/twemoji@14/assets/72x72/f.pngrowning.png?v=5" title=":frowning:" class="emoji" alt=":frowning:"> \n\n”);

}

else

{
printf ("[Dados do autor]\n\n");

  printf ("Informe o cC3digo do autor: ");
  scanf ("%d", &codigo);

  for (i = 0; i < tamanho_struct; i++)
{
  if (codigo == a[i].codigo)
    {
      posicao = i;
      busca = 1;
    }
}

  system ("cls");
  if (busca == 0)
{
  printf ("codigo informado estC! incorreto");
}
  else
{
  printf ("O código %d corresponde ao autor '%s %s'\n",
	  a[posicao].codigo, a[posicao].nome, a[posicao].sobrenome);
}
}
printf (Pressione enter para continuar…”);

getchar ();

getchar ();

return 0;

}

// Exibe todos os autores

int

listarAutores (int tamanho_struct)

{

system (cls);
if (tamanho_struct == 0)

{

printf (Nenhum autor registrado ainda <img src="//https://cdn.jsdelivr.net/gh/twitter/twemoji@14/assets/72x72/f.pngrowning.png?v=5" title=":frowning:" class="emoji" alt=":frowning:"> \n\n”);
}

else
{

printf ("* Lista dos autores cadastrados *\n\n");
  for (i = 0; i < tamanho_struct; i++)
{
  printf ("Cod: %d\t| Nome: %s\t| Sobrenome: %s\t|\n", a[i].codigo,
	  a[i].nome, a[i].sobrenome);
}
}
printf (Pressione enter para continuar…”);

getchar ();

getchar ();

return 0;

}
// Remover autor

int

Remover (int tamanho_struct)

{

int codigo,busca, j;
system (cls);

printf (autores cadastrados:\n);

int listarAutores (int tamanho_struct);
printf (digite o código do autor para excluir:\n);

scanf ("%d", &codigo);

for (i = 0; i < tamanho_struct; i++)

{

if (codigo == a[i].codigo){

posicao = i;

busca = 1;
for (j = i; j < tamanho_struct - 1; j++)
    a[j].codigo = a[j + 1].codigo;
  tamanho_struct--;
}
  printf ("codigo = %d\n", a[i].codigo);
}
getchar ();

getchar ();

}
int

main ()

{

setlocale (LC_ALL, portuguese);

int opcao = 0;

int tamanho_struct = posicao;

exibeMenu ();

do

{

scanf ("%d", &opcao);
switch (opcao)
{
case 1:		//Cadastrar
  cadastroAutores (posicao);
  posicao++;
  return main ();
  break;

case 2:		//Detalhar autor
  detalharAutor (tamanho_struct);
  return main ();
  break;

case 3:		//Listar todos os autores
  listarAutores (tamanho_struct);
  return main ();
  break;

case 4:		// Remover autor
  Remover (posicao);
  return main ();
  break;

case 5:		//Sair do programa
  system ("cls");
  printf ("* Obrigado por utilizar nosso sistema *\n\n");
  return 0;
  break;

default:
  system ("cls");
  printf ("OpC'C#o invC!lida, tente novamente.\n\n");
  printf ("Pressione enter para continuar...");
  getchar ();
  getchar ();
  return main ();
}

}
while (opcao != 5);

return 0;

}
Criado 3 de dezembro de 2018
Respostas 0
Participantes 1