Che materia stai cercando?

Programmazione C , Esercizio: Rubrica in C, Calcolatori

Esercitazione di Calcolatori elettronici per l'esame del professor Seidita. Gli argomenti trattati sono i seguenti: Semplice rubrica generata dinamicamente con riferimento a un file formato .txt con nome (rubrica.txt), // Struttura di un nodo-contatto.

Esame di Calcolatori elettronici docente Prof. V. Seidita

Anteprima

ESTRATTO DOCUMENTO

printf("\n*****_____RUBRICA EASY_____*****\n\n");

stampa(rubrica);

// MENU

printf("\n\nCosa vuoi fare?\n");

printf("1. Visualizza dettagli\n");

printf("2. Aggiungi\n");

printf("3. Modifica\n");

printf("4. Elimina\n");

printf("5. Esci\n");

scanf("%d",&scelta);

if ( scelta == 5) return 0;

do { fflush(stdin);

if( scelta < 1 || scelta > 5 ) printf("\n************Scelta

non valida*****************\n");

switch (scelta){

case 1:

printf("\nQuale contatto vuoi visualizzare?

(inserisci 0 per visualizzarli tutti) ");

scanf("%d",&risp);

if ( risp == 0 ) stampa_dettagli(rubrica);

else stampa_contatto(rubrica,risp);

break;

case 2:

rubrica = aggiungi(rubrica);

printf("\n...elemento aggiunto!\n");

break;

case 3:

rubrica = modifica(rubrica);

printf("\n...contatto modificato!");

break;

case 4:

rubrica = elimina(rubrica);

printf("\n...contatto eliminato!");

break;

}

stampa(rubrica);

printf("\n\nCosa vuoi fare?\n");

printf("1. Visualizza dettagli\n");

printf("2. Aggiungi\n");

printf("3. Modifica\n");

printf("4. Elimina\n");

printf("5. Esci\n");

scanf("%d",&scelta);

if( scelta < 1 || scelta > 5 ) printf("\n************Scelta

non valida*****************\n");

} while( scelta != 5 );

// Alla chiusura, il programma aggiorna il file rubrica.txt

aggiorna(rubrica);

return 0;

}

/* DEFINIZIONE FUNZIONI */

/*

* Stampa la rubrica ( solo nome e cognome )

* @param p puntatore alla testa della lista

* @return void

*/

void stampa(struct contact *p) {

fflush(stdin);

p = ordina(p);

ptr = p;

i=0;

if ( p == NULL )

printf("\nNessun contatto presente.");

else {

printf("\nContatti:");

while ( ptr != NULL ) {

printf("\n%d. ",i+1);

if ( strcmp(ptr->nome," ") != 0 )

printf("%s ",ptr->nome);

if ( strcmp(ptr->cognome," ") != 0 )

printf("%s",ptr->cognome);

ptr = ptr->next;

i++;

}

}

}

/*

* Stampa la rubrica con i dettagli dei contatti.

* @param p puntatore alla testa della lista

* @return void

*/

void stampa_dettagli(struct contact *p) {

fflush(stdin);

ptr = p;

printf("\n");

if ( p == NULL )

printf("\nNessun contatto presente.");

else while ( ptr != NULL ) {

printf("\n");

if ( strcmp(ptr->nome," ") != 0 )

printf("%s ",ptr->nome);

if ( strcmp(ptr->cognome," ") != 0 )

printf("%s",ptr->cognome);

printf("\n");

if ( strcmp(ptr->tel," ") != 0 )

printf("%s",ptr->tel);

printf("\n");

ptr = ptr->next;

}

}

/*

* Stampa i dettagli di un singolo contatto

* @param p puntatore alla testa della lista

* @param n nodo da visualizzare

* @return void

*/

void stampa_contatto(struct contact *p,int n) {

fflush(stdin);

ptr = p;

for ( i=1; i<n; i++)

ptr = ptr->next;

printf("\n");

if ( strcmp(ptr->nome," ") != 0 )

printf("%s ",ptr->nome);

if ( strcmp(ptr->cognome," ") != 0 )

printf("%s",ptr->cognome);

printf("\n");

if ( strcmp(ptr->tel," ") != 0 )

printf("%s",ptr->tel);

printf("\n");

}

/*

* Inizializza la lista concatenata a partire dal file rubrica.txt

* @param void

* @return p La lista appena creata

*/

struct contact *inizializza() {

fflush(stdin);

struct contact *p;

char c;

if( (pf = fopen("rubrica.txt","r")) == NULL ){

printf("\nErrore apertura file");

fclose(pf);

return NULL;

}

if( (c=fgetc(pf)) == EOF ) {

fclose(pf);

return NULL; // Se il file e' vuoto restituisco NULL

}

// Creo primo elemento

p = (struct contact *)malloc(sizeof(struct contact));

// Leggo NOME

for( i=0; (c=fgetc(pf)) != '-'; i++)

bNome[i] = c;

bNome[i] = '\0';

strcpy(p->nome,bNome);

// Leggo COGNOME

for( i=0; (c=fgetc(pf)) != '-'; i++)

bCognome[i] = c;

bCognome[i] = '\0';

strcpy(p->cognome,bCognome);

// Leggo TELEFONO

for( i=0; (c=fgetc(pf)) != '\n'; i++)

bTel[i] = c;


PAGINE

8

PESO

50.06 KB

AUTORE

wdv94

PUBBLICATO

+1 anno fa


DETTAGLI
Corso di laurea: Corso di laurea in ingegneria informatica e delle telecomunicazioni
SSD:
Università: Palermo - Unipa
A.A.: 2015-2016

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher wdv94 di informazioni apprese con la frequenza delle lezioni di Calcolatori elettronici e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Palermo - Unipa o del prof Seidita Valeria.

Acquista con carta o conto PayPal

Scarica il file tutte le volte che vuoi

Paga con un conto PayPal per usufruire della garanzia Soddisfatto o rimborsato

Recensioni
Ti è piaciuto questo appunto? Valutalo!

Altri appunti di Corso di laurea in ingegneria informatica e delle telecomunicazioni

Elettrotecnica - formulario
Appunto