Gil Posted November 17, 2007 at 06:09 PM Report Share #148115 Posted November 17, 2007 at 06:09 PM fiz um programinha de cadastro de automoveis e tenho que por uma opção para alterar um registro e outra para excluir, só que não faço ideia de como se faz isso. Alguem ai pode me dar uma ajuda, ou uma ideia de como posso fazer??? O código é esse abaixo, mas observe qua a função alterar e excluir esta em branco, pois não sei fazer! /* Programa: Cadastro de Automoveis Data....: 11/11/2007 */ // Includes #include <stdio.h> #include <stdlib.h> #include <string.h> //Estrutura struct automoveis { int codigo; char placa[15]; char estado[3]; char cidade [30]; char modelo [25]; char cor [15]; char fabricante [20]; int ano; int del; }autom; //Protótipos int menu (void); void inserir (void); void alterar (void); void pesquisa (void); void excluir (void); void sobre (void); // Programa principal int main(){ //Variáveis int opcao; do{ system ("cls"); opcao = menu(); switch (opcao) { case 1: inserir(); break; case 2: alterar(); break; case 3: pesquisa(); break; case 4: excluir(); case 5: sobre(); break; case 9: printf ("Saindo....\n"); printf ("Aperte uma tecla para continuar....."); getchar(); exit(0); default: printf ("Opção invalida!!!\n"); printf ("Aperte uma tecla para continuar...."); getchar(); } }while(1); return 0; } //************** // Função Menu * //************** int menu (void){ // Declaração de variáveis int opc; printf ("---------------------------------------------------------\n"); printf (" Sistema para Cadastramento de Automóveis\n"); printf ("---------------------------------------------------------\n\n"); printf (" << MENU PRINCIPAL >>\n\n"); printf (" 1 - Incluir novos registros\n"); printf (" 2 - Alterar um registro existente\n"); printf (" 3 - Pesquisar por código\n"); printf (" 4 - Excluir um registro existente\n"); printf (" 5 - Sobre este sistema\n"); printf (" 9 - Sai do Programa\n\n"); printf ("---------------------------------------------------------\n"); printf ("Sua Opção: "); scanf ("%d", &opc); printf ("---------------------------------------------------------\n"); getchar(); return opc; } //***************** // Função Inserir * //***************** void inserir (void){ //variaveis int voltas; FILE *arquivo; system("cls"); printf ("Entre com os Dados:\n"); printf ("Código...........: "); scanf ("%d", &autom.codigo); fflush (stdin); printf ("Placa do Veículo.: "); gets (autom.placa); printf ("Estado...........: "); gets (autom.estado); printf ("Cidade...........: "); gets (autom.cidade); printf ("Modelo...........: "); gets (autom.modelo); printf ("Cor do Veículo...:"); gets (autom.cor); printf ("Fabricante.......:"); gets (autom.fabricante); printf ("Ano de fabricação:"); scanf ("%d", &autom.ano); autom.del=1; //Tenta abrir o arquivo if ((arquivo=fopen("f:\\cadastro.dat","a+"))==NULL) { printf ("ERRO!!!!\n"); printf ("Aperte uma tecla para continuar....\n"); getchar(); return; } //Grava os dados fwrite(&autom, sizeof(struct automoveis),1,arquivo); //Fecha arquivo fclose(arquivo); } //**************** //Função Alterar * //**************** void alterar (void){ } //****************** // Função Pesquisa * //****************** void pesquisa (void){ FILE *arquivo; int codigo; int achei=0; system ("cls"); printf ("Codigo: "); scanf ("%d", &codigo); getchar(); // Tenta abrir o arquivo if ((arquivo=fopen("f:\\cadastro.dat","r"))==NULL) { printf ("ERRO!!!!\n"); printf ("Aperte uma tecla para continuar....\n"); getchar(); return; } while (1) { fread(&autom,sizeof(struct automoveis),1,arquivo); if (feof(arquivo)) break; if (codigo == autom.codigo) { printf ("%-6s %-30s %-15s\n" ,"Código", "Modelo", "Placa"); printf ("%-6d %-30s %-15s\n\n" ,autom.codigo, autom.modelo, autom.placa); printf ("\nAperte uma tecla para continuar..."); getchar(); achei = 1; break; } } if (!achei) { printf ("Código informado não encontrado!\n"); printf ("Aperte uma tecla para continuar...."); getchar(); } fclose(arquivo); } //************************* //Função Excluir Registro * //************************* void excluir (void){ } //*********************** // Função Sobre Sistema * //*********************** void sobre (void){ system ("cls"); printf ("Integrantes do Grupo:\n\n"); printf ("RA: 0722126 - Giuliano Santos\n"); printf ("RA: 0000000 - Elemento 02\n"); printf ("RA: 0000000 - Elemento 03\n"); printf ("RA: 0000000 - Elemento 04\n"); printf ("RA: 0000000 - Elemento 05\n"); printf ("Aperte uma tecla para voltar ao MENU..."); getchar(); } Link to comment Share on other sites More sharing options...
Rui Carlos Posted November 17, 2007 at 08:15 PM Report Share #148161 Posted November 17, 2007 at 08:15 PM Acho que era melhor guardar os dados em memória em vez de usares ficheiros (usavas ficheiros apenas quando saías do programa). Assim, editar dá um pouco mais de trabalho (embora seja simples de se fazer), mas remover vai ser muito mais complicado. Rui Carlos Gonçalves Link to comment Share on other sites More sharing options...
Gil Posted November 18, 2007 at 01:08 AM Author Report Share #148261 Posted November 18, 2007 at 01:08 AM Sim, seria mais fácil guardar em memórias, mas queria gravar em um arquivo, estou cursando e preciso aprender. Se você poder me passar pelo menos a dica para alterar o registro agradeço, vai me ajudar muito. Link to comment Share on other sites More sharing options...
Rui Carlos Posted November 18, 2007 at 11:43 AM Report Share #148306 Posted November 18, 2007 at 11:43 AM O de alterar pode ser feito de forma semelhante ao de procurar. Só que quando (e se) encontrares o registos, utilizas o fseek, para voltar atrás um registo (porque depois de o leres, o cursor posiciona-se no próximo registo), e escreveres o nome por cima do antigo. O de remover, a sugestão que dou, é ires buscar o último, o escrevê-lo por cima do que queres remover. Rui Carlos Gonçalves Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now