GG4Core Mortale devoto
Registrato: 02/07/15 16:11 Messaggi: 11
|
Inviato: 10 Lug 2015 10:21 Oggetto: Problema di identificazione attraverso password |
|
|
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;
}
|
|
|