È quello di cui sopra;
questo è tutto il programma
/*
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 è suddivisa in giorni, per 12 mesi complessivi. Ogni giorno è 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>
#define MAX_ORA 23
#define MAX_LUNGHEZZA_STRINGA 50
#define MAX_GIORNI 31
#define MAX_MESE 12
#define MAX_IMPEGNI 5
#define MAX_UTENTE 20
#define MAX_ANNO 2015
#define g_31 31
#define g_28 28
#define g_29 29
#define g_30 30
struct
{
char Nome[MAX_UTENTE][MAX_LUNGHEZZA_STRINGA];
char Cognome[MAX_UTENTE][MAX_LUNGHEZZA_STRINGA];
int indice[MAX_UTENTE];
int num_utenti;
char Password[MAX_UTENTE][MAX_IMPEGNI];
}agenda;
struct
{
int libero;
int num_impegni;
char description[MAX_IMPEGNI][MAX_LUNGHEZZA_STRINGA];
int ora[MAX_IMPEGNI];
int mese[MAX_IMPEGNI];
int giorno[MAX_IMPEGNI];
int anno[MAX_IMPEGNI];
}utente[MAX_UTENTE]; //facciamo un array di struct per ogni persona
void crea_agenda();
void inizializza();
int controllo_password(char [MAX_IMPEGNI]); // Riferimento per indirizzo del primo elemento dell' array che puo' essere visto come un puntatore
void visualizza();
void disdire();
void inserire();
int password();
int main()
{
char cosa_fare;
int flag=0;
srand(time(NULL));
crea_agenda();
inizializza();
password();
while(flag == 0)
{
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 Servire un prossimo utente\n");
printf("'U' per Uscire dall'agenda elettronica\n");
printf("Inserire la propria scelta:\t");
fflush(stdin);
cosa_fare= getchar();//Uso la funzione getchar per inserire i caratteri per la scelta dell'operazione da eseguire
if(cosa_fare == 'v' || cosa_fare == 'V') //Utilizzo il costrutto di controllo if per gestire i vari casi di inseriemnto da parte dell' utente
{
visualizza();
}
if(cosa_fare == 'i' || cosa_fare == 'I')
{
inserire();
}
if(cosa_fare == 'D' || cosa_fare == 'd')
{
disdire();
}
if(cosa_fare == 'U' || cosa_fare == 'u')
{
printf("Ciao e' stato un piacere esserti utile\n");
flag=1;
}
if(cosa_fare == 'S' || cosa_fare == 's')
{
password();
flag=0; // Se sono stati inseriti piu utenti, illudo l' utente a cedere il posto al prrossimo, se è un utente singolo mette in loop la scermata delle scelte
}
}
system("pause");
return 0;
}
void inizializza()
{
int i;
agenda.num_utenti=0;
for(i=0;i<MAX_UTENTE;i++)
{
utente[i].libero=1;
}
agenda.num_utenti=0;
}
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+agenda.num_utenti > MAX_UTENTE)
{
printf("Non posso gestire tutti questi utenti! Ridefinire numeri di utenti:\a\t");
loop=0;
}
}while(loop==0);
agenda.num_utenti=agenda.num_utenti+n_utente;
for(i=agenda.num_utenti-n_utente;i<agenda.num_utenti;i++)
{
printf("Inserire il proprio nome:\t");
scanf("%s",&agenda.Nome[i]);
printf("Inserire il proprio cognome:\t");
scanf("%s",&agenda.Cognome[i]);
do
{
loop=1;
printf("Inserire Password di almeno 4 caratteri:\t");
scanf("%s",&agenda.Password[i]);
}while(strlen(agenda.Password[i])>=MAX_IMPEGNI || controllo_password(agenda.Password[i])==1);
do
{
agenda.indice[i]=rand()%MAX_UTENTE; //GESTIONE DELLA POSIZIONE DEGLI UTENTI
}while(utente[agenda.indice[i]].libero!=0);
system("cls");
}
}
int controllo_password( char buffer[MAX_IMPEGNI])
{
int i;
int count=0;
for(i=0;i < agenda.num_utenti ;i++ )
{
if(!strcmp(buffer,agenda.Password[i]))
{
count++;
if(count>1)
{
return 1;
}
}
}
return 0;
}
void visualizza()
{
printf("Visualizzo il tuo appuntamento......\n");
int i;
for(i=0;i<agenda.num_utenti;i++)
{
if((password())==0)
{
int mia_ora,j,mio_mese;
printf("Inserci l' ora degli appuntamenti :\t");
scanf("%d",&mia_ora);
printf("Inserisci il mese dove cercare:\t");
scanf("%d",&mio_mese);
for(j=0;j<utente[agenda.indice[i]].num_impegni;j++)
{
if(mia_ora==utente[agenda.indice[i]].ora[j] && mio_mese==utente[agenda.indice[i]].mese[j])
{
printf("Gli appuntamenti delle ore %d del mese %d del giorno %d sono:\n",mia_ora,mio_mese,utente[agenda.indice[i]].giorno[j]);
printf("Impegno %d Descrizione:\n%s\n",j+1,utente[agenda.indice[i]].description[j]);
system("PAUSE");
}
}
break;
}
}
}
void disdire()
{
printf("Disdico il tuo appuntamento......\n");
int i;
for(i=0;i<agenda.num_utenti;i++)
{
if(password()==1)
{
int mia_ora,j,mio_mese,mio_giorno,mio_anno;
printf("Inserci l' ora dell' appuntamento da disdire :\t");
scanf("%d",&mia_ora);
printf("Inserire il giorno dell' appuntamento da disdire:\t");
scanf("%d",&mio_giorno);
printf("Inserisci il mese dove cercare:\t");
scanf("%d",&mio_mese);
printf("Inserisci l' anno:\t");
scanf("%d",&mio_anno);
for(j=0;j<utente[agenda.indice[i]].num_impegni;j++)
{
if(mia_ora==utente[agenda.indice[i]].ora[j]&&mio_mese==utente[agenda.indice[i]].mese[j]&&mio_anno==utente[agenda.indice[i]].anno[j]&&mio_giorno==utente[agenda.indice[i]].giorno[j])
{
strcpy(utente[agenda.indice[i]].description[j],"DELETED");
printf("%s",utente[agenda.indice[i]].description[j]);
break;
}
}
break;
}
}
}
void inserire()
{
printf("Inserisco il tuo appuntamento......\n");
int j,i;
for(i=0;i<agenda.num_utenti;i++)
{
printf("Inserisci la descrizione del tuo impegno:\t");
for(j=0;j<utente[agenda.indice[i]].num_impegni;j++)
{
printf("Definire impegno %d.\n",j+1);
do
{
printf("Inserisci l' ora in cui vuoi inserire l' impegno:\t");
scanf("%d",&utente[agenda.indice[i]].ora[j]);
fflush(stdin);
}while(utente[agenda.indice[i]].mese[j] > MAX_GIORNI || utente[agenda.indice[i]].ora[j] < 0);
do
{
printf("\nInserisci il giorno in cui vuoi inserire l' impegno:\t");
scanf("%d",&utente[agenda.indice[i]].giorno[j]);
fflush(stdin);
}while((utente[agenda.indice[i]].giorno[j] > MAX_GIORNI) || (utente[agenda.indice[i]].giorno[j] <= 0));
do
{
printf("\nInserisci il mese in cui vuoi inserire l' impegno:\t");
scanf("%d",&utente[agenda.indice[i]].mese[j]);
fflush(stdin);
}while(utente[agenda.indice[i]].mese[j] > MAX_MESE || utente[agenda.indice[i]].mese[j] <= 0);
do
{
printf("\nInserisci l' anno in cui vuoi inserire l' impegno:\t");
scanf("%d",&utente[agenda.indice[i]].anno[j]);
fflush(stdin);
}while(utente[agenda.indice[i]].anno[j] < MAX_ANNO);
printf("\nInserisci la descrizione del tuo impegno %d:\t",j+1);
scanf("%s",&utente[agenda.indice[i]].description[j]);
}
}
}
int password()
{
char mia_password[MAX_IMPEGNI];
int i;
printf("Inserire Password:\t");
scanf("%s",&mia_password);
for(i=0;i<agenda.num_utenti;i++)
{
if(!strcmp(mia_password,agenda.Password[i]))
{
return 1;
}
else
{
return 1;
}
}
}
questa è una function generale:
void inserire()
{
printf("Inserisco il tuo appuntamento......\n");
int j,i;
for(i=0;i<agenda.num_utenti;i++)
{
printf("Inserisci la descrizione del tuo impegno:\t");
for(j=0;j<utente[agenda.indice[i]].num_impegni;j++)
{
printf("Definire impegno %d.\n",j+1);
do
{
printf("Inserisci l' ora in cui vuoi inserire l' impegno:\t");
scanf("%d",&utente[agenda.indice[i]].ora[j]);
fflush(stdin);
}while(utente[agenda.indice[i]].mese[j] > MAX_GIORNI || utente[agenda.indice[i]].ora[j] < 0);
do
{
printf("\nInserisci il giorno in cui vuoi inserire l' impegno:\t");
scanf("%d",&utente[agenda.indice[i]].giorno[j]);
fflush(stdin);
}while((utente[agenda.indice[i]].giorno[j] > MAX_GIORNI) || (utente[agenda.indice[i]].giorno[j] <= 0));
do
{
printf("\nInserisci il mese in cui vuoi inserire l' impegno:\t");
scanf("%d",&utente[agenda.indice[i]].mese[j]);
fflush(stdin);
}while(utente[agenda.indice[i]].mese[j] > MAX_MESE || utente[agenda.indice[i]].mese[j] <= 0);
do
{
printf("\nInserisci l' anno in cui vuoi inserire l' impegno:\t");
scanf("%d",&utente[agenda.indice[i]].anno[j]);
fflush(stdin);
}while(utente[agenda.indice[i]].anno[j] < MAX_ANNO);
printf("\nInserisci la descrizione del tuo impegno %d:\t",j+1);
scanf("%s",&utente[agenda.indice[i]].description[j]);
}
}
}