Mini - agenda

Publicado por Thiago Brito 20/02/2006

[ Hits: 6.981 ]

Download lista4_q1.c




É uma mini agenda toda feita em C.
Possui alguns defeitos mas é open source rsrsrsrs qualquer um que tiver um pouco de conhecimento pode consertar.

  



Esconder código-fonte

#include <stdio.h>
#include <stdlib.h>

/*Program agenda*/

typedef struct agenda compromisso;

void criar_lista (void);
void cadastro(void);
void remover (void);
void mostrar (void);
void flush_in (void);

/*Delclaração das variáveis principais*/
struct agenda
{ 
  int dia;
  int mes;
  int ano;
  int hora;
  int min;
  char reuniao[100];
  compromisso *prox;
  };
  
compromisso *ultimo;
compromisso *lista;
  
/*Função principal*/
int main(){
int num;

  do
    {
         printf ("\nMenu\n");
      printf ("1) Para inserir compromisso digite 1.\n");
      printf ("2) Para excluir compromisso digite 2.\n");
      printf ("3) Para mostrar compromisso digite 3.\n");
      printf ("4) Para sair da agenda digite 4.\n");
      printf ("Digite a opcao desejada\n");
      scanf ("%d", &num);
    
    switch (num)
    {
        case 1: cadastro ();break;
      case 2: remover();break;
      case 3: mostrar();break;
      case 4: break;
   }
   }while (num!=4);
   
return(0);
}

/*Função para criar lista*/
void criar_lista()
{
   ultimo = (compromisso*)malloc(sizeof(compromisso));
   lista = (compromisso*)malloc(sizeof(compromisso));
   
   ultimo = lista;
   lista->prox = NULL;
}

/*Função para cadastro*/
void cadastro (void)
{
    compromisso* aux;
   compromisso* old;
   compromisso* new;
        
    aux=(compromisso*)malloc(sizeof(compromisso));
    
    if (aux)
    {
     refaz:
        printf ("Insira a data do compromisso  Exemplo: dd.mm.aaaa\n");
        scanf ("%d.%d.%d",&aux->dia,&aux->mes,&aux->ano);
        printf ("Insira a hora do compromisso Exemplo: hh:mm\n");
        scanf ("%d:%d",&aux->hora,&aux->min);
       flush_in();
        printf ("Qual o compromisso desse dia?\n");
        gets (aux->reuniao);
        
   if (aux->dia<1||aux->dia>31||aux->mes<1||aux->mes>12||aux->hora<0||aux->hora>23||aux->min<0||aux->min>59)
      {printf("Voce digitou algo errado. Tente de novo\n"); goto refaz;}
      new=lista;
      
        if (!ultimo)
        {
            lista=aux;
            ultimo=aux;
            aux->prox=NULL;
         return;
      }
      
      old=NULL;
      
      if (new->ano!=aux->ano)
      {
         while (new)
         {
            if (new->ano<aux->ano)
            {
               old=new;
               new=new->prox;
            }
            else
            {
               if (old)//caso o novo aux fique no meio
               {
                  old->prox=aux;
                  aux->prox=new;
                  return;
               }
               aux->prox=new;
               lista=aux;
               return;
            }
         }
         ultimo->prox=aux;
         aux->prox=NULL;
         ultimo=aux;
         return;
      }
      else if (new->mes!=aux->mes)
         {
            while (new)
            {
               if (new->mes<aux->mes)
               {
                  old=new;
                  new=new->prox;
               }
               else
               {
                  if (old)//caso o novo aux fique no meio
                  {
                     old->prox=aux;
                     aux->prox=new;
                     return;
                  }
                  aux->prox=new;
                  lista=aux;
                  return;
               }
            }
            ultimo->prox=aux;
            aux->prox=NULL;
            ultimo=aux;
            return;
         }
         else if (new->dia!=aux->dia)
            {
               while (new)
               {
                  if (new->dia<aux->dia)
                  {
                     old=new;
                     new=new->prox;
                  }
                  else
                  {
                     if (old)//caso o novo aux fique no meio
                     {
                        old->prox=aux;
                        aux->prox=new;
                        return;
                     }
                     aux->prox=new;
                     lista=aux;
                     return;
                  }
               }
               ultimo->prox=aux;
               aux->prox=NULL;
               ultimo=aux;
               return;
            }
            else if (new->hora!=aux->hora)
               {
                  while (new)
                  {
                     if (new->hora<aux->hora)
                     {
                     old=new;
                     new=new->prox;
                     }
                     else
                     {
                        if (old)//caso o novo aux fique no meio
                        {
                           old->prox=aux;
                           aux->prox=new;
                           return;
                        }
                        aux->prox=new;
                        lista=aux;
                        return;
                     }
                  }
                  ultimo->prox=aux;
                  aux->prox=NULL;
                  ultimo=aux;
                  return;
               }
               else if (new->min!=aux->min)
                  {
                     while (new)
                     {
                        if (new->min<aux->min)
                        {
                           old=new;
                           new=new->prox;
                        }
                        else
                        {
                           if (old)//caso o novo aux fique no meio
                           {
                              old->prox=aux;
                              aux->prox=new;
                              return;
                           }
                           aux->prox=new;
                           lista=aux;
                           return;
                        }
                     }
                     ultimo->prox=aux;
                     aux->prox=NULL;
                     ultimo=aux;
                     return;
                  }else printf("Ja existe compromisso nesse horario\n");
               
         
        
    }    
        else printf ("\n\nNao e possivel marcar compromisso");
}


/*Remove elementos da lista*/
void remover()
{
   compromisso *aux;   
   compromisso *aux2;   
   int dia,mes,ano,hora,min;
   
   printf("\nExcluir\n");      
   if (lista)
   {
      refaz2:
      printf("\nEntre com o dia, mes, ano e hora\t Exemplo dd.mm.aaaa hh:mm\n");
      scanf("%d.%d.%d %d:%d",&dia,&mes,&ano,&hora,&min);

      if (dia<1||dia>31||mes<1||mes>12||hora<0||hora>23||min<0||min>59)
      {printf("Voce digitou algo errado. Tente de novo\n"); goto refaz2;}
      
      if (dia==lista->dia&&mes==lista->mes&&ano==lista->ano&&hora==lista->hora&&min==lista->min)
      {
         aux=lista;         
         lista=lista->prox;
         free(aux);
         
         
      }else for(aux=lista;aux->prox;aux=aux->prox)
           {
            if (dia==(aux->prox)->dia&&mes==(aux->prox)->mes&&ano==(aux->prox)->ano&&hora==(aux->prox) ->hora&&min==(aux->prox)->min)
              {
                    aux2=aux->prox;
                    if (aux2==ultimo) 
                    ultimo=aux;
                  aux->prox=aux->prox->prox;
                  free(aux2);
                  break;
               }
            }                        
   }else printf("\nNao ha elementos na lista.\n");   
}

/*Mostrar os elementos da lista*/
void mostrar()
{ 
  int achou=0;
  compromisso *aux;
  compromisso *aux2;
  int dia,mes,ano;
refaz3:
  printf("Qual o dia do compromisso?  dd.mm.aaaa\n");
  scanf("%d.%d.%d",&dia,&mes,&ano);

   if (dia<1||dia>31||mes<1||mes>12)
      {printf("Voce digitou algo errado. Tente de novo\n"); goto refaz3;}

   if (lista==NULL) printf("Não existem compromissos na agenda\n");

   for (aux=lista;aux!=NULL;aux=aux->prox)
   {
    if (dia==aux->dia&&mes==aux->mes&&ano==aux->ano)
     {
      
        printf("Dia\tMes\tAno\tHora\tCompromisso\n");
        printf("%d\t%d\t%d\t%d:%d\t%s\n",aux->dia, aux->mes, aux->ano, aux->hora, aux->min,aux->reuniao);
        achou=1;
        }
   }
   if (achou==0)
   printf("Não exite compromisso nesse horário\n");
}

void flush_in()
{
   int ch;

   while( (ch = fgetc(stdin)) != EOF && ch != '\n' ){}
}

Scripts recomendados

Verificar intervalo de números

Utilizando arrays, funções e arquivos de texto

EXPRESSÕES ARITMÉTICAS - PARTE 1

Cálculo de média ponderada

Pares com stdlib


  

Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts