Programma Database in C

di Anonimizzato19463 il
95 risposte

95 Risposte - Pagina 6

  • Non posso perché non vedo una struttura dei pagamenti ... come inserisci nel tuo db i dati relativi ai pagamenti per gli iscritti?
  • La struct che gestisce le iscrizioni ed i pagamenti è questa:
    struct Iscrizioni_Pagamenti
             {
                int  numero_tessera[50];
                char datadinascita[50];
                double quota[50];
                char data_pagamento[50];
             };
             typedef struct Iscrizioni_Pagamenti reg_payments;
             reg_payments *r;
  • E dove e come la utilizzi nel tuo programma?
  • /*-------- FUNZIONI GESTIONE ISCRIZIONI --------*/
    int aggiungi_iscrizione(int n)
    {
    	r = (registration *) realloc(r, (n+1) * sizeof(registration));
    
    	printf("Inserire il numero della tessera:\n");
    	if( scanf("%d", (r+n)->numero_tessera) == 1)
    	{
    		printf("%d", (r+n)->numero_tessera);
    	} else {
    		printf("Input FAILED!\n");
    	}
    	printf("Inserire la data di nascita:\n");
    	if( scanf("%s", (r+n)->datadinascita) == 1)
    	{
    		printf("%s", (r+n)->datadinascita);
    	} else {
    		printf("Input FAILED!\n");
    	}
    	printf("Inserire il prezzo dell'iscrizione:\n");
    	if( scanf("%lf", (r+n)->quota) == 1)
    	{
    		printf("%lf", (r+n)->quota);
    	} else {
    		printf("Input FAILED!\n");
    	}
    	printf("Inserire la data del pagamento (formato GG/MM/AAAA:\n");
    	if( scanf("%s", (r+n)->data_pagamento) == 1)
    	{
    		printf("%s", (r+n)->data_pagamento);
    	} else {
    		printf("Input FAILED!\n");
    	}
    	n++;
    
    	return n;
    }
    
    void leggi_iscrizione(int n)
    {
    	int i;
    
    	printf("Numero tessera\tData di nascita\tPagamento\tData del pagamento\n");
    
    	for(i=0;i<n;i++)
    	{
    		printf("%d\t%s\t%f\t%s\n", (r+i)->numero_tessera, (r+i)->datadinascita, (r+i)->quota, (r+i)->data_pagamento);
    		printf("\n");
    	}
    }
    
    void aggiorna_iscrizione(int n)
    {
    	char ricerca[50];
    	int i;
    
    	printf("Numero tessera da cercare:\n");
    	if( scanf("%s", ricerca) == 1)
    	{
    		printf("%s", ricerca);
    	} else {
    		printf("Input FAILED!\n");
    	}
    
    	for(i=0;i<n;i++)
    	{
    		if(strcmp((r+i)->numero_tessera,ricerca)==0)
    		{
    			printf("Nuovo numero di tessera:\n");
    			if( scanf("%d", (r+i)->numero_tessera) == 1)
    			{
    				printf("%d", (r+i)->numero_tessera);
    			} else {
    				printf("Input FAILED!\n");
    			}
    			printf("Nuovo data di nascita:\n");
    			if( scanf("%s", (r+i)->datadinascita) == 1)
    			{
    				printf("%s", (r+i)->datadinascita);
    			} else {
    				printf("Input FAILED!\n");
    			}
    			printf("Nuovo prezzo dell'iscrizione:\n");
    			if( scanf("%f", (r+i)->quota) == 1)
    			{
    				printf("%lf", (r+i)->quota);
    			} else {
    				printf("Input FAILED!\n");
    			}
    			printf("Nuova data del pagamento:\n");
    			if( scanf("%s", (r+i)->data_pagamento) == 1)
    			{
    				printf("%s", (r+i)->data_pagamento);
    			} else {
    				printf("Input FAILED!\n");
    			}
    		}
    	}
    }
    
    int elimina_iscrizione(int n)
    {
    	char ricerca[50];
    	int i;
    	int j=0;
    	int indice;
    	int flag=0;
    	registration *v;
    	v=NULL;
    
    	printf("Numero tessera da eliminare:\n");
    	if( scanf("%s", ricerca) == 1)
    	{
    		printf("%s", ricerca);
    	} else {
    		printf("Input FAILED!\n");
    	}
    
    	for(i=0;i<n;i++)
    	{
    		if(strcmp((r+i)->numero_tessera,ricerca)==0)
    		{
    			flag=1; //trovato=1, non trovato=0
    			indice=i;
    		}
    	}
    	if(flag)
    	{
    		r = (registration *) realloc(r, (n-1) * sizeof(registration));
    		for(i=0;i<n;i++)
    		{
    			if(i != indice)
    			{
    				strcpy((v+j)->numero_tessera, (r+i)->numero_tessera);
    				strcpy((v+j)->datadinascita, (r+i)->datadinascita);
    				strcpy((v+j)->quota, (r+i)->quota);
    				strcpy((v+j)->data_pagamento, (v+j)->data_pagamento);
    				j++;
    			}
    		}
    		free(r);
    		n--;
    		r=v;
    	} else printf("Non trovato");
    
    	return n;
    }
  • Dunque, quando accetti un ingresso, dovrai cercare tra i dati dell'iscrizione (confrontando l'id fornito con gli id registrati) per capire se per quell'id esiste il pagamento. Se lo trovi continui con la richiesta dei dati d'ingresso altrimenti termini dicendo il socio non ha pagato.
  • Eh e proprio questo non sono in grado di farlo.....Mi seguiresti passo per passo?
  • No Andrea ... non ti posso seguire passo per passo perché non ne ho il tempo, questo non è lo scopo del forum e non siamo a scuola.

    Ti ho pure detto che questo thread è durato veramente troppo tanto da sembrare una chat oltre al fatto che il codice presenta mille problemi e che andrebbe rivisto tutto.
  • Almeno potresti dirmi in quale punto preciso di quelle funzioni che ti ho mandato devo metterci questa?
  • Ti ho GIA' DETTO ... "quando accetti un ingresso" ... vedi tra i tuoi menu e le tue funzioni di gestione degli ingressi (add_entrance ...)
  • Ok grazie
  • Ragazzi mi sapreste dire come si fa la funzione che permette di modificare alcune righe di un file di testo?
  • Ma questo è un altro problema ... è proprio inutile dirti di non continuare in questo lunghissimo thread, vero?
  • Non posso più scrivere in questo thread?
  • L'argomento è diverso e sei OT . E' una regola dei forum . Si crea un nuovo thread con un titolo che riguarda il problema.
  • OT? Che significa?
Devi accedere o registrarti per scrivere nel forum
95 risposte