agenda indirizzi

esci altro.htm

/* stra11.mar */

/* archivio dati anagrafici */
/* nome file prefissato in stringa per salvare o richiamare*/
/* possibile inserire aggiungere stampare visualizzare */

#include "stdio.h"
#include "stdlib.h"
#include "ctype.h"
#define DIM 20

char nomefile[20];

/* definisce struttura rubrica e dichiara variabile x */
struct rubrica{
char nome[30];
char via[40];
unsigned long int cap;
char citta[20];
char provincia[5];
} x[DIM];

/*dichiarazione procedure da usare */
void inserire(),inizializza(),stampa(),salva(),carica(),aggiunge(),lista();

main()
{
char scelta;
inizializza();
clrscr();
strcpy(nomefile,"a:archivio");
for (;;)
{ scelta=menu();
switch(scelta)
{
case 'i':inserire();break;
case 'e':stampa();break;
case 'l':lista();break;
case 'c':carica();break;
case 's':salva();break;
case 'a':aggiunge();break;
case 'u':exit(1);
}
}
}
void inizializza()
{
register int t;
for (t=0;t<DIM;t++) *x[t].nome='\0';
}

menu()
{
char s[80];
clrscr();
do
{
printf("I=inserire record\n");
printf("A=aggiunge record\n");
printf("E=stampa elenco\n");
printf("L=lista elenco su video\n");
printf("C=carica da disco\n");
printf("S=salva su disco\n");
printf("U=fine operazione\n\n");
printf("seleziona opzione:");
gets(s);
}
while(!strrchr("ielcsau",tolower(*s)));
return tolower(*s);
}

void inserire()
{
register int i;
char cella[6];
clrscr();
for (i=0;i<DIM;i++)
if(!*x[i].nome) break;
if(i==DIM)
{
printf("lista completa\n"); delay(2000);
return;
}
printf("record n.%d su %d\n",i+1,DIM);
printf("nome...........");
gets(x[i].nome);
printf("via............");
gets(x[i].via);
printf("cap............");
gets(cella);
x[i].cap=atol(cella);
printf("citta..........");
gets(x[i].citta);
printf("provincia......");
gets(x[i].provincia);
puts("---------------------");
}

void aggiunge()
{
FILE *pfile;
register int i;
char cella[6];
if ((pfile=fopen(nomefile,"ab"))==NULL)
{
printf("non possibile aprire file \n");
delay(3000);
return;
}
for (i=0;i<DIM;i++)
if(!*x[i].nome) break;
if(i==DIM)
{
printf("lista completa\n"); delay(2000);
return;
}
printf("record n.%d su %d\n",i+1,DIM);
printf("nome...........");
gets(x[i].nome);
printf("via............");
gets(x[i].via);
printf("cap............");
gets(cella);
x[i].cap=atol(cella);
printf("citta..........");
gets(x[i].citta);
printf("provincia......");
gets(x[i].provincia);
puts("---------------------");
}

void stampa()
{
register int t;
clrscr();
printf("file in fase di stampa %s\n",nomefile);
for (t=0;t<DIM;t++)
{
if(!*x[t].nome)
{
puts("fine lettura");
break;
}
if(*x[t].nome)
{
fprintf(stdprn,"record n.%d su %d\n\r",t+1,DIM);
fprintf(stdprn,"nominativo....%s\n\r",x[t].nome);
fprintf(stdprn,"indirizzo.....%s\n\r",x[t].via);
fprintf(stdprn,"cap...........%d\n\r",x[t].cap);
fprintf(stdprn,"citta.........%s\n\r",x[t].citta);
fprintf(stdprn,"provincia.....%s\n\r",x[t].provincia);
fprintf(stdprn,"%s\n\r","-------------------------");
puts("----premi return prego----");
}
getch();
}
}

void lista()
{
register int t;
clrscr();
printf("file in fase di stampa %s\n",nomefile);
for (t=0;t<DIM;t++)
{
if(!*x[t].nome)
{
puts("fine lettura");
break;
}
if(*x[t].nome)
{
printf("record n.%d su %d\n",t+1,DIM);
printf("nominativo.....%s\n",x[t].nome);
printf("indirizzo......%s\n",x[t].via);
printf("cap............%d\n",x[t].cap);
printf("citta..........%s\n",x[t].citta);
printf("provincia......%s\n",x[t].provincia);
puts("----premi return prego----");
}
getch();
}
}

void salva()
{
FILE *pfile;
register int i;
if ((pfile=fopen(nomefile,"wb"))==NULL)
{
printf("non possibile aprire file indicato\n");
delay(2000);
return;
}
for (i=0;i<DIM;i++)
if(*x[i].nome)
if(fwrite(&x[i],sizeof(struct rubrica),1,pfile)!=1)
printf("errore scrittura del file\n");delay(2000);
fclose(pfile);
}

void carica()
{
FILE *pfile;
register int i;
if ((pfile=fopen(nomefile,"rb"))==NULL)
{
printf("non possibile aprire file indicato\n");
delay(2000);
return;
}

inizializza();
for (i=0;i<DIM;i++)
if(fread(&x[i],sizeof(struct rubrica),1,pfile)!=1)
{
if(feof(pfile))
{
fclose(pfile);
return;
}
printf("errore lettura del file\n");delay(2000);
}
}