• Domingo 22 de Diciembre de 2024, 18:19

Autor Tema:  Passar Programa A Ficheros.  (Leído 2001 veces)

miquel-88

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
Passar Programa A Ficheros.
« en: Miércoles 28 de Mayo de 2008, 23:00 »
0
Hola cracks! Que tal?
Les explico mi problema, estoy estudiando un ciclo formativo superior de Desenvolupador de sistemas informaticos y en la assignatura de programacion c++ nos han mandado un trabajo que trata de hacer una agenda electronica utilitzando ficheros. El caso esque nos hemos quedado sin tiempo y no se ha dado el tema en clase, y me he quedado sin tiempo para aprender a hacerlo tambien ya que la fecha de entrega de tal es el martes y estoy lleno de examenes.

Les adjunto el programa ( "los printf" estan en catalan, he passado todos los comentarios a castellano) y si algun experto me pudiera hacer los arreglos mágicos para que guardara los datos en un archivo lo agradeceria mucho!!

Un saludo y gracias!

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define DIM 20
void introdueix (struct agenda *p);
void esborrar (struct agenda *e);
void mostradora (struct agenda c);
void menu ();
void validar (struct agenda *v);
void pausar ();

   
   struct agenda
   {
      char nom[20];
      char cognom_primer[20];
      char cognom_segon[20];
      long telefon;
      int valid;
   };

int num=0;
int w=-1;
void main ()
{

   int comp, opcio, xivato, i;
   char cadena[20];
   char cadena2[20];
   struct agenda listin[DIM];
   long temp;

   for (i=0; i<20; i++) //Con este for se ponen todos los contactos como validos desde un principio.
      validar( &listin);
   
   do{
   
   menu();   
   scanf("%d",&opcio);//Elijo la opcion del switch
   

   fflush(stdin);
   system("cls");

   switch(opcio)
   {
      case 1:// introducir contactos
         introdueix( &listin[num]);         
      break;
   
      case 2://borrar contactos
         printf("Introdueix el nom del contacte que vols esborrar: ");
         gets(cadena);
         fflush(stdin);
         printf("\nIntrodueix l'apellit del contacte que vols esborrar: ");
         gets(cadena2);
         fflush(stdin);

         xivato=0;
         
         for (i=0; i<w; i++)
         {
            
            if ((strcmp(cadena, listin.nom)==0) && (strcmp(cadena2, listin.cognom_primer)==0))//Compara el nom i cognom introduit amb els de tots els contactes
            {   if (listin.valid==1)
               {
                  esborrar(&listin);
                  printf("\nEl contacte de nom %s  i apellit %s ha sigut esborrat.\n", cadena, cadena2);
               }
               xivato=0;
            }
            else
            xivato=1;
         }
         if (xivato==1) printf("\nNo hi ha cap contacte amb aquest nom.\n");   
         pausar();
      break;
      
      case 3://Mostrar todos los contactos de la agenda
         printf("\n           AGENDA\n");
         for (i=0; i<w; i++)
         {   
            mostradora (listin);
         }
         
         pausar();
      break;

      case 4://Buscar un contacto x el nombre
         printf("Introdueix el nom del contacte que vols buscar: ");
         gets(cadena);
         fflush(stdin);
         
         xivato=0; //Utilizo la variable xivato como "trampilla" para mostrar la frase no hay ningun contacto...
         
         for (i=0; i<w; i++)
         {
            comp=strcmp(cadena, listin.nom);//Compara el nombre introducido con todos los nombres
            if (comp==0)
            {   
               mostradora (listin);
               xivato=0;
            }
            else
            xivato=1;
         }
         if (xivato==1) printf("\nNo hi ha cap contacte amb aquest nom.\n");
         pausar();
      break;
      
      case 5://Busca un contacte por el cognom
         printf("Introdueix el cognom del contacte que vols buscar: ");
         gets(cadena);
         fflush(stdin);
         
         xivato=0;
         
         for (i=0; i<w; i++)
         {
            comp=strcmp(cadena, listin.cognom_primer);//Compara el cognom introducido con todos los cognoms

            if (comp==0)
            {   
               mostradora (listin);
               xivato=0;
            }
            else xivato=1;
         }
         if (xivato==1) printf("\nNo hi ha cap contacte amb aquest cognom.\n");
         pausar();
      break;

      case 6://Busca un contacto por su telefono
         printf("Introdueix el telefon del contacte que vols buscar: ");
         scanf("%ld", &temp);
          fflush(stdin);
         xivato=0;

         for (i=0; i<w; i++)
         {
            if (temp==listin.telefon)//Compara el valor introducido con todos los telefonos
            {
               mostradora (listin);

               xivato=0;
            }
            else xivato=1;
         }
         if (xivato==1) printf("\nNo hi ha cap contacte amb aquest telefon.\n");
         pausar();   
      break;

   }
   }while(opcio!=7);


   printf("\n\n              C0pYriGHt_by_M&k3\n\n\n");

}


void introdueix (struct agenda *p) //Funcion para introducir contactos
{
   if(num<=20)
   {
      printf("\nIntrodueix el nom del contacte:");
      gets(p->nom);
      printf("Introdueix el primer cognom del contacte:");
      gets(p->cognom_primer);
      printf("Introdueix el segon cognom del contacte:");
      gets(p->cognom_segon);
      printf("Introdueix el telefon del contacte:");
      scanf("%ld", &p->telefon);
      fflush(stdin);
      p->valid=1;
      num++;
      w=num;
   }
   pausar();
}

//Funcion para borrar contactos
void esborrar (struct agenda *e)
{
   
   e->valid=0;


}

//Funcion para mostrar los datos de un contacto
void mostradora (struct agenda c)
{
   if (c.valid==1)
   {
      printf("\nNom: %s", c.nom);
      printf("\nCognom: %s", c.cognom_primer);
      printf("\nSegon cognom: %s", c.cognom_segon);
      printf("\nTelefon: %ld\n", c.telefon);
   }
}

// Funcion para mostrar el menu
void menu ()
{
   printf("   *******************************************************");
   printf("\n   *                                                     *");
   printf("\n   *    Si vols entrar un nou contacte prem 1            *");
   printf("\n   *    Si vols esborrar un contacte prem 2              *");
   printf("\n   *    Si vols mostrar tota l'agenda prem 3             *");
   printf("\n   *    Si vols cercar un contacte pel nom prem 4        *");
   printf("\n   *    Si vols cercar un contacte pel cognom prem 5     *");
   printf("\n   *    Si vols cercar un contacte per telefon prem 6    *");
   printf("\n   *    Si vols sortir prem 7.                           *");
   printf("\n   *                                                     *");    
   printf("\n   *******************************************************\n");
   printf("   OPCIO: ");
}

//Funcion para validar un contacto
void validar (struct agenda *v)
{
   v->valid=0;
}

//Funcion para dar una pausa antes de volver a mstrar el menu
void pausar ()
{
   printf("\n\nPrem la tecla ENTER per continuar...");
   system("pause>null");
   system("cls");
}