Realizzazione di un agenda

Giacomo Gargiulo

Nuovo Utente
19 Mag 2015
1
0
0
Ciao Ragazzi sto creando un agenda personale, in c, ora sono ad un buon punto, solo che ho ancora delle problematiche, che vorrei mi aiutaste a risolvere, pian pianino, la prima problematica e che se avvitate il codice, vi permetterà di inserire più utenti, ma solo uno può accedere alle funzioni dell' agenda, vorrei appunto che tutti gli utenti iscritti vi possano accedere, eccovi il codice

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 è 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();

int main()
{
	
	char cosa_fare;
	int flag=0;
	srand(time(NULL));
	
	while(flag == 0)
	{
		crea_agenda();
		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("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')
    	{
    		inizializza();    
   		}	 
    	if(cosa_fare == 'D' || cosa_fare == 'd')
    	{
    		disdire();	
    	}             
    	if(cosa_fare == 'S' || cosa_fare == 's')
    	{
        	printf("Ciao e' stato un piacere esserti utile\n");
        	flag=1;
    	}
	}
    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);
		
		printf("Definire il numero di impegni:\t");
		do
		{
			loop=1;
			scanf("%d",&utente[agenda.indice[i]].num_impegni);
			fflush(stdin);
			if(utente[agenda.indice[i]].num_impegni > MAX_IMPEGNI)
			{
				printf("Troppi impegni, Rischi di collassare! Ridefinire impegni:\a\t");
				loop=0;
			}
		}while(loop == 0);
		
		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]);
		    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()
{
	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]))
		{
			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");
					system("cls");
				}
			}
			break;
		}
	}		
}

void disdire()
{
	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]))
		{
			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;
		}
	}
}

Come posso fare???
 
Discussioni simili
Autore Titolo Forum Risposte Data
Rikk73 [Vendo/Offro] Realizzazione applicazioni web e/o API rest Offerte e Richieste di Lavoro e/o Collaborazione 0
P Editor per la realizzazione di siti HTML e CSS 2
L Realizzazione sito php Offerte e Richieste di Lavoro e/o Collaborazione 7
E [Offro] Realizzazione di siti web e ottimizzazione SEO per raggiungere il primo posto su Google Offerte e Richieste di Lavoro e/o Collaborazione 0
P [OFFRO] Realizzazione siti web in PHP/MYSQL, responsive e Ottimizzati SEO Offerte e Richieste di Lavoro e/o Collaborazione 0
C [ OFFRO ] Realizzazione Sito Web Responsive design e Ottimizzato Offerte e Richieste di Lavoro e/o Collaborazione 1
G [VENDO] Realizzazione Siti Web *Sconti Natale* Offerte e Richieste di Lavoro e/o Collaborazione 0
K [CERCO -RETRIBUITO] Realizzazione logo , banner, video copertina pagina FB Offerte e Richieste di Lavoro e/o Collaborazione 0
K [ASP.Net] Realizzazione menu a tendina dipendenti ASP.NET 1
Andrea_Ventura [HTML] Realizzazione di un layout dinamico di immagini HTML e CSS 4
A Primo lavoro realizzazione sito Leggi, Normative e Fisco 0
L [VENDO] realizzazione loghi - copertine - locandine a 10 euro Offerte e Richieste di Lavoro e/o Collaborazione 0
G Realizzazione siti e app Offerte e Richieste di Lavoro e/o Collaborazione 0
jonnino2004 cerco socio per realizzazione siti-web Offerte e Richieste di Lavoro e/o Collaborazione 7
elpirata [CERCO][GRATUITO] Cercasi Web Designer per realizzazione front end gestionale Offerte e Richieste di Lavoro e/o Collaborazione 3
T [OFFRO] Realizzazione Siti Web / SEO / Negozio Online / Social a partire da 50€ Offerte e Richieste di Lavoro e/o Collaborazione 1
webseocreative [OFFRO] Realizzazione siti web - Web Seo Creative (WSC) Offerte e Richieste di Lavoro e/o Collaborazione 2
elpirata [Cerco][Gratuito]Cerco collaboratori per realizzazione piccolo gestionale Mysqli+Php Offerte e Richieste di Lavoro e/o Collaborazione 6
xone [Offro] Realizzazione landing page da collegare a Facebook ads Offerte e Richieste di Lavoro e/o Collaborazione 2
S Costo realizzazione sito Offerte e Richieste di Lavoro e/o Collaborazione 2
C Realizzazione Database Offerte e Richieste di Lavoro e/o Collaborazione 9
P [cerco]realizzazione sito web Offerte e Richieste di Lavoro e/o Collaborazione 4
xone [Offro] Realizzazione template html5 css3 creati da zero Offerte e Richieste di Lavoro e/o Collaborazione 0
K REALIZZAZIONE SITO E ACQUISTO SPAZIO WEB Programmazione 1
ElBebo [Gratuito][Cerco] Realizzazione sito per videogioco Offerte e Richieste di Lavoro e/o Collaborazione 3
S Realizzazione Channel Manager e OTA Programmazione 0
F [Offro][Retribuito] Realizzazione e-commerce Offerte e Richieste di Lavoro e/o Collaborazione 0
F [OFFRO - VENDO] Realizzazione SITI WEB statici responsive e non a prezzi imbattibili Offerte e Richieste di Lavoro e/o Collaborazione 0
R [OFFRO] Realizzazione siti web statici e dinamici con posizionamento su Google e Social Network Offerte e Richieste di Lavoro e/o Collaborazione 0
R [OFFRO] Realizzazione siti web aziendali / ecommerce Offerte e Richieste di Lavoro e/o Collaborazione 0
M Aiuto realizzazione form dinamico. jQuery 1
R [OFFRO] Realizzazione Siti Web Responsive Offerte e Richieste di Lavoro e/o Collaborazione 0
B [vendo] BepperacWEB: Realizzazione siti web responsive, ottimizzazione seo. Offerte e Richieste di Lavoro e/o Collaborazione 0
F [OFFRO - VENDO] Realizzazione Loghi Offerte e Richieste di Lavoro e/o Collaborazione 2
E [offro] realizzazione siti web statici e dinamici Offerte e Richieste di Lavoro e/o Collaborazione 2
F [OFFRO - A PAGAMENTO]Realizzazione loghi Offerte e Richieste di Lavoro e/o Collaborazione 0
G [VENDO/OFFRO]Realizzazione Applicazioni Mobile e Web Offerte e Richieste di Lavoro e/o Collaborazione 0
S [OFFRO] Realizzazione Siti Web HTML/Wordpress/Joomla Offerte e Richieste di Lavoro e/o Collaborazione 0
L Realizzazione script prenotazione posti: consigli PHP 3
A [OFFRO COLLABORAZIONE][RETRIBUITO] Realizzazione siti web e software personalizzati Offerte e Richieste di Lavoro e/o Collaborazione 0
C [OFFRO] Realizzazione tube adult automatico Offerte e Richieste di Lavoro e/o Collaborazione 0
felino [Wordpress] Realizzazione contest fotografico WordPress 3
G Realizzazione siti web responsive con css e html HTML e CSS 3
T Cercasi team per la realizzazione di un sito web dinamico (previsto compenso) Offerte e Richieste di Lavoro e/o Collaborazione 1
W Realizzazione di una App collegata ad un sito che sia visibile sia su android che su ios Sviluppo app per Android 4
Z [Compro] Realizzazione app per IOS e Android Offerte e Richieste di Lavoro e/o Collaborazione 0
V [Retribuito] Ricerca grafico/sviluppatore per realizzazione sito web aziendale Offerte e Richieste di Lavoro e/o Collaborazione 0
0 [Vendo] Realizzazione low cost sito professionale Wordpress o sola installazione Offerte e Richieste di Lavoro e/o Collaborazione 0
felino [Offro Lavoro][Retribuito] Realizzazione theme Wordpress Offerte e Richieste di Lavoro e/o Collaborazione 2
Frank10 [Retribuito] Realizzazione sito web + forum Offerte e Richieste di Lavoro e/o Collaborazione 5

Discussioni simili