Indice del forum Olimpo Informatico
I Forum di Zeus News
Leggi la newsletter gratuita - Attiva il Menu compatto
 
 FAQFAQ   CercaCerca   Lista utentiLista utenti   GruppiGruppi   RegistratiRegistrati 
 ProfiloProfilo   Messaggi privatiMessaggi privati   Log inLog in 

    Newsletter RSS Facebook Twitter Contatti Ricerca
Problema di identificazione attraverso password
Nuovo argomento   Rispondi    Indice del forum -> Programmazione
Precedente :: Successivo  
Autore Messaggio
GG4Core
Mortale devoto
Mortale devoto


Registrato: 02/07/15 16:11
Messaggi: 11

MessaggioInviato: 10 Lug 2015 10:21    Oggetto: Problema di identificazione attraverso password Rispondi

ciao ragazzi, vorrei identificare l' utente attraverso nome cognome e password, dove password, la uso per identificare univocamente l' utente, ho creaato
un LOGIN struttura con nome utente e cognome ('+ ora e data)
ma mi manca da fare:

· Fare in una vasta gamma di X => modo da poter memorizzare il X ultimi utenti che hanno utilizzato il programma

· Ogni volta che utente è login in (entrando password) stiamo aggiungendo l'utente alla matrice LOGIN

· Aggiungi una nuova funzione al menu per stampare X ultimi accessi => stampa matrice LOGIN

mi date una mano?? ecco il codice prodotto:
Codice:

/*
  Name: Agenda Elettronica
  Copyright: 0124000773
  Author: Giacomo Gargiulo
  Description: Gestione di un agenda elettronica

Si vuole simulare la gestione di un’agenda elettronica contenente appuntamenti.
L’agenda e suddivisa in giorni, per 12 mesi complessivi. Ogni giorno e identificato
da 24 ore. Dato un mese, un giorno e un’ora permettere all’utente di:
• Inserire un appuntamento
• Disdire un appuntamento
Inoltre permettere all’utente di
• Data un’ora visualizzare tutti gli appuntamenti in un mese
*/
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<time.h>
#include<ctype.h>
#include<stdbool.h>

#define DEBUGGER 1

#define MAX_STRLEN 50
#define NUM_DAY 31
#define NUM_MONTH 12
#define NUM_HOUR 23
#define MIN_YEAR 2000
#define MAX_YEAR 2050
#define NUM_YEAR (MAX_YEAR-MIN_YEAR+1)

#define NUM_APPOINTMENT 5
#define NUM_USERS 10

#if DEBUGGER
#  define DEBUG_INT(i) printf(#i " = %d\n", i)
#  define DEBUG_STR(s) printf(#s " = %s\n", s)
#else
#  define DEBUG_INT(i)
#  define DEBUG_STR(s)
#endif

typedef struct
{
   bool used = false;
   char description[MAX_STRLEN];
}
APPOINTMENT;
typedef struct { APPOINTMENT  appointment [NUM_APPOINTMENT];} HOUR;
typedef struct { HOUR  hour [NUM_HOUR];}  DAY;
typedef struct { DAY   day[NUM_DAY];}     MONTH;
typedef struct { MONTH month[NUM_MONTH];} YEAR;
typedef struct  { YEAR  year[NUM_YEAR];}   DIARY;
typedef struct
{
   bool used = false;
   char firstname[MAX_STRLEN];
   char surname[MAX_STRLEN];
   char password[MAX_STRLEN];   
   DIARY diary;
}
USER;
typedef struct
{
   LOG_IN password [NUM_APPOINTMENT];
   char firstname[MAX_STRLEN];
   char surname[MAX_STRLEN];
} PASSWORD;

bool add_appointment(DIARY *diary, int iYear, int iMonth, int iDay, int iHour, char sDescription[]);
int controllo_password( char buffer[NUM_APPOINTMENT]);
bool delete_appointment(DIARY *diary, int iYear, int iMonth, int iDay, int iHour, int iAppointment);
USER m_user[NUM_USERS];


bool add_appointment(DIARY *diary, int iYear, int iMonth, int iDay, int iHour, char sDescription[])
{
   int y, m, d, a;
   
   y = iYear-MIN_YEAR;
   m = iMonth-1;
   d = iDay -1;

   //`search for sorted add in position
   for (a=0; a<NUM_APPOINTMENT; a++)
   {
      if (diary->year[y].month[m].day[d].hour[iHour].appointment[a].used == false)
      {
         strcpy(diary->year[y].month[m].day[d].hour[iHour].appointment[a].description,sDescription);                     
         diary->year[y].month[m].day[d].hour[iHour].appointment[a].used = true;
         return (true);
      }
   }
   return (false);
}   
   
bool delete_appointment(DIARY *diary, int iYear, int iMonth, int iDay, int iHour, int iAppointment)
{
   int y, m, d;
   
   y = iYear-MIN_YEAR;
   m = iMonth-1;
   d = iDay -1;

   if(diary->year[y].month[m].day[d].hour[iHour].appointment[iAppointment].used == true)
   {
      strcpy(diary->year[y].month[m].day[d].hour[iHour].appointment[iAppointment].description,"" );
       diary->year[y].month[m].day[d].hour[iHour].appointment[iAppointment].used = false;
       return true;
   }
   else
   {
      return false;
   }
}
   
void display_appointments(DIARY *diary, int iYear, int iMonth, int iHour)
{
   int y, m, d, a;
   int iFound = 0;

   y = iYear-MIN_YEAR;
   m = iMonth-1;

   for (d=0; d<NUM_DAY; d++)
   {
      for (a=0; a<NUM_APPOINTMENT; a++)
      {
         if (diary->year[y].month[m].day[d].hour[iHour].appointment[a].used)
         {   
            iFound++;
            printf("Appointment #%d on %04d\.%02d\.%02d %02d:00 %s\n", iFound, iYear, iMonth, d+1, iHour, diary->year[y].month[m].day[d].hour[iHour].appointment[a].description);
         }
      }
   }
}   
   
void test()
{
   USER *user;

   user = &m_user[0];
   
   user->used = true;
   strcpy(user->firstname, "Mario");
   strcpy(user->surname,    "Rossi");
   strcpy(user->password, "pw");
   add_appointment(&(user->diary), 2015, 1, 1, 8, "Meeting with Thomas2");
   add_appointment(&(user->diary), 2015, 8, 8, 8, "Meeting with Thomas3");
   add_appointment(&(user->diary), 2015, 8, 8, 8, "Meeting with Giacomo");
   add_appointment(&(user->diary), 2015, 12, 31, 8, "Meeting with Thomas");
   add_appointment(&(user->diary), 2015, 8, 8, 8, "Meeting with Thomas");
   add_appointment(&(user->diary), 2015, 8, 8, 8, "Meeting with Thomas");
   add_appointment(&(user->diary), 2015, 8, 8, 8, "Meeting with Thomas1");
   printf("Stampa appuntamenti\n");
   display_appointments(&(user->diary),2015,8,8);
   system("PAUSE");
   printf("Distruzione di un appuntamento\n");
   delete_appointment(&(user->diary),2015,8,8,8,1);
   system("PAUSE");
   printf("Stampa appuntamenti\n");
   display_appointments(&(user->diary),2015,8,8);
}
   
void crea_agenda()
{
   int n_utente=0;
   int loop;
   int i,j;

   printf("Inserisci il numero di utenti da registrare:\t");
   do
   {
      loop=1;
      scanf("%d",&n_utente);
      fflush(stdin);
      if(n_utente > NUM_USERS)
      {
         printf("Non posso gestire tutti questi utenti! Ridefinire numeri di utenti:\a\t");
         loop=0;
      }
   }while(loop==0);

   for(i=0;i<n_utente;i++)
   {
      printf("Inserire il proprio nome:\t");
      scanf("%s",m_user[i].firstname);
      printf("Inserire il proprio cognome:\t");
      scanf("%s",m_user[i].surname);
     
      do
      {
         printf("Inserire Password di almeno 4 caratteri:\t");
         scanf("%s",m_user[i].password);
      }while(strlen(m_user[i].password)>=NUM_APPOINTMENT || controllo_password(m_user[i].password)==1); // richiamo a controllo_password e strlen
      j=0;
      do
      {
          j=rand()%NUM_USERS; //GESTIONE RANDOM DELLA POSIZIONE DEGLI UTENTI
          system("PAUSE");
      }while(m_user[j++].used!=false);

      system("cls");
   }
}

int controllo_password( char buffer[NUM_APPOINTMENT]) //Passaimo il primo indirizzo dell' array mia_password
{
   int i;
   int count=0;
   for(i=0;i < NUM_USERS ;i++ )
   {
      if(!strcmp(buffer,m_user[i].password))
      {
         count++;
         if(count>1)
         {
            return 1;
         }
      }
   }
   return 0;
}
void visualizza()
{
   char mia_password[MAX_STRLEN];
   int i,j;

   printf("Inserire Password:\t");
   scanf("%s",&mia_password);
   for(i=0;i<NUM_USERS;i++)
   {
        if(m_user[i].used)
        {
      
           if(!strcmp(mia_password,m_user[i].password))
           {
              int mia_ora,mio_mese,mio_anno;
              do
           {
                 printf("Inserisci il anno dove cercare:\t");
              scanf("%d",&mio_anno);
           }while(mio_anno > MIN_YEAR && mio_anno < MAX_YEAR);
           do
           {
                 printf("Inserisci il mese dda inserire:\t");
                 scanf("%d",&mio_mese);
           }while(mio_mese < 0 && mio_mese > NUM_MONTH);
           do
           {
              printf("Inserci l' ora degli appuntamenti :\t");
                 scanf("%d",&mia_ora);
           }while(mia_ora < 0  && mia_ora > NUM_HOUR);
                        
              display_appointments(&(m_user[i].diary),mio_anno,mio_mese,mia_ora); // richiamo a  display_appointments
         }
      }
   }
}

void disdire()
{
   
   bool succes=false;   
   int i,j;
   char mia_password[MAX_STRLEN];
   printf("Inserire Password:\t");
   scanf("%s",&mia_password);

   for(i=0; i<NUM_USERS; i++)
   { 
      if(m_user[i].used)
      {
    
          if(!strcmp(mia_password,m_user[i].password))
          {
               int mia_ora,mio_giorno,mio_mese,mio_anno,mio_appuntamento;
             
              do
           {
                 printf("Inserisci il anno dove cercare:\t");
              scanf("%d",&mio_anno);
           }while(mio_anno > MIN_YEAR && mio_anno < MAX_YEAR);
           do
           {
                 printf("Inserisci il mese dda inserire:\t");
                 scanf("%d",&mio_mese);
           }while(mio_mese < 0 && mio_mese > NUM_MONTH);
           do
           {
                 printf("Inserci il giorno degli appuntamenti :\t");
                 scanf("%d",&mio_giorno);
           }while(mio_giorno < 0 && mio_giorno > NUM_DAY);
           do
           {
              printf("Inserci l' ora degli appuntamenti :\t");
                 scanf("%d",&mia_ora);
           }while(mia_ora < 0  && mia_ora > NUM_HOUR);
           do
           {
                 printf("Inserci il numero dell' appuntamenti :\t");
                 scanf("%d",&mio_appuntamento);
           }while(mio_appuntamento < 0 && mio_appuntamento > NUM_APPOINTMENT );
             
              succes=delete_appointment(&(m_user[i].diary),mio_anno,mio_mese,mio_giorno,mia_ora,mio_appuntamento-1); // richiamo a delete_appointment
        }
      }
   }
   printf("L' appuntamento e' stato disdetto e ha valore: %d\n",succes);
}

void aggiorna()
{

   int i,j;
   char mia_password[MAX_STRLEN];
   printf("Inserire Password:\t");
   scanf("%s",&mia_password);
   
   for(i=0; i<NUM_USERS; i++)
   { 
      if(m_user[i].used)
      {
    
          if(!strcmp(mia_password,m_user[i].password))
          {
               int mia_ora,mio_giorno,mio_mese,mio_anno;
               char descrizione[MAX_STRLEN];
              do
           {
                 printf("Inserisci il anno dove cercare:\t");
              scanf("%d",&mio_anno);
           }while(mio_anno > MIN_YEAR && mio_anno < MAX_YEAR);
           do
           {
                 printf("Inserisci il mese dda inserire:\t");
                 scanf("%d",&mio_mese);
           }while(mio_mese < 0 && mio_mese > NUM_MONTH);
           do
           {
                 printf("Inserci il giorno degli appuntamenti :\t");
                 scanf("%d",&mio_giorno);
           }while(mio_giorno < 0 && mio_giorno > NUM_DAY);
           do
           {
              printf("Inserci l' ora degli appuntamenti :\t");
                 scanf("%d",&mia_ora);
           }while(mia_ora < 0  && mia_ora > NUM_HOUR);
           do
           {
                 printf("\nInserisci la descrizione del tuo impegno:\t");
                 scanf("%s",descrizione);
           }while(descrizione!='\0' );
              add_appointment(&(m_user[i].diary),mio_anno,mio_mese,mio_giorno,mia_ora,descrizione); // richiamo a add_appointment
        }
      }
   }
}

int main()
{
   srand(time(NULL)); // richiamo a time e srand   
   char cosa_fare;
   bool bExit = false;
   int i=0;
   crea_agenda(); // richiamo a crea_agenda
   while(bExit == false)
   {
      printf("***********************************************\n");
      printf("* Benvenuto/a nella proria agenda elettronica *\n");
      printf("***********************************************\n");
      printf("Digitare la propria scelta\n");
      printf("'V' per Visualizzare un appuntamento\n");
      printf("'I' per Inserire un appuntamento\n");
      printf("'D' per Disdire un appuntamento\n");
      printf("'S' per Uscire dall'agenda elettronica\n");
      printf("'T' per vedere un Test\n");
      printf("Inserire la propria scelta:\t");

       cosa_fare= getchar();//Uso la funzione getchar per inserire i caratteri per la scelta dell'operazione da eseguire
       fflush(stdin);
       system("cls");
      
       switch (toupper(cosa_fare))  //Utilizzo il costrutto di controllo if per gestire i vari casi di inseriemnto da parte dell' utente
      {
         case 'V': 
            visualizza(); // richiamo a visualizza
         break;
         case 'I':
            aggiorna();  // richiamo a aggiorna
         break;
         case 'D':
            disdire(); // richiamo a disdire
         break;
         case 'S':
               printf("Ciao %d\t%d e' stato un piacere esserti stato utile\n");
            bExit = true;
         break;
         case 'T':
            test(); //richiamo a test
         break;
      }
   system("pause");
   }
   return 0;
}
Top
Profilo Invia messaggio privato
Mostra prima i messaggi di:   
Nuovo argomento   Rispondi    Indice del forum -> Programmazione Tutti i fusi orari sono GMT + 1 ora
Pagina 1 di 1

 
Vai a:  
Non puoi inserire nuovi argomenti
Non puoi rispondere a nessun argomento
Non puoi modificare i tuoi messaggi
Non puoi cancellare i tuoi messaggi
Non puoi votare nei sondaggi