rubrica con C++
esci con
altro.htm

 

 

/* schema3 */
/* struttura pag 152 */
/* archivio dati anagrafici */
/* nome file prefissato in stringa per salvare o richiamare*/
/* possibile inserire aggiungere stampare visualizzare */
/* campi attuali n=5 con nomi da assegnare a s1 s2 s3 s4 s5 */
/* numero record massimo =20 modificabile */

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

char nomefile[20]; /* per assegnare nome a file */

char *s1,*s2,*s3,*s4,*s5; /* per assegnare nomi ai campi*/

/* definisce struttura di nome generica e dichiara variabile x */
struct generica{
char c1[30];
char c2[30];
char c3[30];
char c4[5];
char c5[5];
} x[MASSIMO];

/*dichiarazione procedure da usare */
void inserire(),inizializza(),stampa(),salva(),carica(),aggiunge(),lista();
void stampare(),stampavideo(),vistampare();
main()
{
char scelta;
inizializza();
clrscr();
strcpy(nomefile,"a:museo1"); /* assegna nome a file */
s1="nome della roccia........."; /* assegna nomi a campi */
s2="tipo della roccia.........";
s3="regione ritrovamento......";
s4="numero esemplari..........";
s5="codice roccia.............";
for (;;)
{ scelta=menu();
switch(scelta)
{
case 'i':inserire();break;
case 'e':stampa();break;
case 'n':stampare();break;
case 'b':stampavideo();break;
case 'd':vistampare();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<MASSIMO;t++) *x[t].c1='\0';
}

menu()
{
char s[80];
clrscr();
do
{
printf("I=inserire record:solo prima apertura file\n");
printf("A=aggiunge record:per successive aperture file\n");
printf("E=stampa elenco con diciture+++++++++++++++\n");
printf("N=stampa elenco senza diciture-------------\n");
printf("B=stampa con dicitura e mostra su video++++\n");
printf("D=stampa senza diciture e mostra su video--\n");
printf("L=lista elenco su video++++++++++++++++++++\n");
printf("C=carica da disco:prima di leggere o stampare\n");
printf("S=salva su disco\n");
printf("U=fine operazione\n\n");
printf("seleziona opzione:");
gets(s);
}
while(!strrchr("ienbdlcsau",tolower(*s)));
return tolower(*s);
}

void inserire()
{
register int i;
clrscr();
for (i=0;i<MASSIMO;i++)
if(!*x[i].c1) break;
if(i==MASSIMO)
{
printf("lista completa\n"); delay(2000);
return;
}
printf("record n.%d su %d\n",i+1,MASSIMO);
printf("%s",s1);
gets(x[i].c1);
printf("%s",s2);
gets(x[i].c2);
printf("%s",s3);
gets(x[i].c3);
printf("%s",s4);
gets(x[i].c4);
printf("%s",s5);
gets(x[i].c5);
puts("---------------------");
}

void aggiunge()
{
FILE *pfile;
register int i;
if ((pfile=fopen(nomefile,"ab"))==NULL)
{
printf("non possibile aprire file \n");
delay(3000);
return;
}
for (i=0;i<MASSIMO;i++)
if(!*x[i].c1) break;
if(i==MASSIMO)
{
printf("lista completa\n"); delay(2000);
return;
}
printf("record n.%d su %d\n",i+1,MASSIMO);
printf("%s",s1);
gets(x[i].c1);
printf("%s",s2);
gets(x[i].c2);
printf("%s",s3);
gets(x[i].c3);
printf("%s",s4);
gets(x[i].c4);
printf("%s",s5);
gets(x[i].c5);
puts("---------------------");
}

void stampa()
{
register int t;
clrscr();
fprintf(stdprn,"file in fase di stampa %s\n\r",nomefile);
for (t=0;t<MASSIMO;t++)
{
if(!*x[t].c1)
{
puts("fine lettura");
break;
}
if(*x[t].c1)
{

fprintf(stdprn,"record n.%d su %d\n\r",t+1,MASSIMO);
fprintf(stdprn,"%s %s\n\r",s1,x[t].c1);
fprintf(stdprn,"%s %s\n\r",s2,x[t].c2);
fprintf(stdprn,"%s %s\n\r",s3,x[t].c3);
fprintf(stdprn,"%s %s\n\r",s4,x[t].c4);
fprintf(stdprn,"%s %s\n\r",s5,x[t].c5);
printf("record n.%d su %d\n",t+1,MASSIMO);
fprintf(stdprn,"%s\n\r","-------------------------");
puts("----premi return prego----");
}
getch();
}
}

void stampavideo()
{
register int t;
clrscr();
fprintf(stdprn,"file in fase di stampa %s\n\r",nomefile);
for (t=0;t<MASSIMO;t++)
{
if(!*x[t].c1)
{
puts("fine lettura");
break;
}
if(*x[t].c1)
{

fprintf(stdprn,"record n.%d su %d\n\r",t+1,MASSIMO);
fprintf(stdprn,"%s %s\n\r",s1,x[t].c1);
fprintf(stdprn,"%s %s\n\r",s2,x[t].c2);
fprintf(stdprn,"%s %s\n\r",s3,x[t].c3);
fprintf(stdprn,"%s %s\n\r",s4,x[t].c4);
fprintf(stdprn,"%s %s\n\r",s5,x[t].c5);
printf("record n.%d su %d\n",t+1,MASSIMO);
printf("%s %s\n",s1,x[t].c1);
printf("%s %s\n",s2,x[t].c2);
printf("%s %s\n",s3,x[t].c3);
printf("%s %s\n",s4,x[t].c4);
printf("%s %s\n",s5,x[t].c5);
fprintf(stdprn,"%s\n\r","-------------------------");
puts("----premi return prego----");
}
getch();
}
}


void vistampare()
{
register int t;
clrscr();
fprintf(stdprn,"file in fase di stampa %s\n\r",nomefile);
for (t=0;t<MASSIMO;t++)
{
if(!*x[t].c1)
{
puts("fine lettura");
break;
}
if(*x[t].c1)

{
fprintf(stdprn,"%s\n\r",x[t].c1);
fprintf(stdprn,"%s\n\r",x[t].c2);
fprintf(stdprn,"%s\n\r",x[t].c3);
fprintf(stdprn,"%s\n\r",x[t].c4);
fprintf(stdprn,"%s\n\r",x[t].c5);
printf("record n.%d su %d\n",t+1,MASSIMO);
printf("%s\n",x[t].c1);
printf("%s\n",x[t].c2);
printf("%s\n",x[t].c3);
printf("%s\n",x[t].c4);
printf("%s\n",x[t].c5);
fprintf(stdprn,"%s\n\r","-------------------------");
puts("----premi return prego----");
}
getch();
}
}
void stampare()
{
register int t;
clrscr();
fprintf(stdprn,"file in fase di stampa %s\n\r",nomefile);
for (t=0;t<MASSIMO;t++)
{
if(!*x[t].c1)
{
puts("fine lettura");
break;
}
if(*x[t].c1)

{
fprintf(stdprn,"%s\n\r",x[t].c1);
fprintf(stdprn,"%s\n\r",x[t].c2);
fprintf(stdprn,"%s\n\r",x[t].c3);
fprintf(stdprn,"%s\n\r",x[t].c4);
fprintf(stdprn,"%s\n\r",x[t].c5);
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<MASSIMO;t++)
{
if(!*x[t].c1)
{
puts("fine lettura");
break;
}
if(*x[t].c1)
{
printf("record n.%d su %d\n",t+1,MASSIMO);
printf("%s %s\n",s1,x[t].c1);
printf("%s %s\n",s2,x[t].c2);
printf("%s %s\n",s3,x[t].c3);
printf("%s %s\n",s4,x[t].c4);
printf("%s %s\n",s5,x[t].c5);
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<MASSIMO;i++)
if(*x[i].c1)
if(fwrite(&x[i],sizeof(struct generica),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<MASSIMO;i++)
if(fread(&x[i],sizeof(struct generica),1,pfile)!=1)
{
if(feof(pfile))
{
fclose(pfile);
return;
}
printf("errore lettura del file\n");delay(2000);
}
}