Difficoltà implementazione funzione

di il
23 risposte

23 Risposte - Pagina 2

  • Re: Difficoltà implementazione funzione

    Quando avviene l'inserimento del nuovo iscritto viene immesso in input la data dell'iscrizione e il prezzo pagato.
    Qui precisamente
    void inserisci_ingresso()
    {	
    	Ingressi e;
    	Ingressi eTemp;
    	FILE *fIng; //file corso
    	FILE *fInd; //file indice del corso
    	
    	printf("Numero: ");
    	scanf("%d", &e.numero);
    	printf("Nome: ");
    	scanf("%s", &e.nome);
    	printf("Cognome: ");
    	scanf("%s", &e.cognome);
    	printf("Data: ");
    	scanf("%s", &e.data_ingresso);
    	printf("Ora di ingresso(HH:MM): ");
    	scanf("%s", &e.ora_ingresso);
    	printf("Ora di uscita(HH:MM): ");
    	scanf("%s", &e.ora_uscita);
    	e.cancellato = 0;
    	
    	int cont = 0;
    	
    	fIng = fopen(ingressoAperto,"r+b");
    	
    	fread(&eTemp,sizeof(Ingressi),1,fIng);
    	
    	while(eTemp.cancellato != 1)
    	{
    		fread(&eTemp,sizeof(Ingressi),1,fIng);
    		cont++;
    	}
    	
    	int posInIngresso = cont;
    	
    	fseek(fIng,cont * sizeof(Ingressi),0);
    	fwrite(&e,sizeof(Ingressi),1,fIng);
    	fclose(fIng);
    	
    	Indice x;
    	Indice xTemp;
    	
    	strcpy(x.chiave,e.cognome);
    	x.valore = e.numero;
    	
    	fInd = fopen(indiceAperto,"r+b");
    	
    	cont = 0;
    	fread(&xTemp,sizeof(Indice),1,fInd);
    	
    	while(strcmp(xTemp.chiave,"VUOTO") != 0)
    	{
    		fread(&xTemp,sizeof(Indice),1,fInd);
    		cont++;
    	}
    	
    	fseek(fInd,cont * sizeof(Indice),0);
    	fwrite(&x,sizeof(Indice),1,fInd);
    	fclose(fInd);
    	
    	IndiceCodice y;
    	IndiceCodice yTemp;
    	
    	y.chiave = e.numero;
    	y.valore = posInIngresso;
    	
    	fInd = fopen(indiceCodiciAperto,"r+b");
    	
    	cont = 0;
    	fread(&yTemp,sizeof(IndiceCodice),1,fInd);
    	
    	while(yTemp.chiave != -1)
    	{
    		fread(&yTemp,sizeof(IndiceCodice),1,fInd);
    		cont++;
    	}
    	
    	fseek(fInd,cont * sizeof(IndiceCodice),0);
    	fwrite(&y,sizeof(IndiceCodice),1,fInd);
    	fclose(fInd);
    	
    	IndiceCodice ind[max];
    	fInd = fopen(indiceCodiciAperto,"rb");
    	
    	int i;
    	for(i = 0; i < max; i++)
    	{
    		fread(&ind[i],sizeof(IndiceCodice),1,fInd);
    	}
    	
    	fclose(fInd);
    	
    	OrdinaIndiceCodici(ind,max);
    	
    	fInd = fopen(indiceCodiciAperto,"wb");
    	
    	for(i = 0; i < max; i++)
    	{
    		fwrite(&ind[i],sizeof(IndiceCodice),1,fInd);
    	}
    	fclose(fInd);
    	printf("Aggiornamento indici completato.\n");
    }
  • Re: Difficoltà implementazione funzione

    "data dell'iscrizione e il prezzo pagato" ... "Qui precisamente"

    ma dove? ... Nel codice che hai mostrato vengono inseriti i dati di ingresso ...
  • Re: Difficoltà implementazione funzione

    Ah no scusa......deve essere la stanchezza mi sono sbagliato!
    void inserisciIscrizione()
    {
    	Iscrizioni r;
    	Iscrizioni rTemp;
    	FILE *fIsc;
    	FILE *fInd;
    	
    	printf("Cognome: ");
    	scanf("%s", &r.cognome);
    	printf("Codice: ");
    	scanf("%d", &r.codice);
    	printf("Data: ");
    	scanf("%s", &r.data);
    	printf("Prezzo: ");
    	scanf("%d", &r.prezzo);
    	r.cancellato = 0;
    	
    	int cont = 0;
    	
    	fIsc = fopen(IscrizioniAperto,"r+b");
    	
    	fread(&rTemp,sizeof(Iscrizioni),1,fIsc);
    	
    	while(rTemp.cancellato != 1)
    	{
    		fread(&rTemp,sizeof(Iscrizioni),1,fIsc);
    		cont++;
    	}
    	
    	int posInIsc = cont;
    	
    	fseek(fIsc,cont * sizeof(Iscrizioni),0);
    	fwrite(&r,sizeof(Iscrizioni),1,fIsc);
    	fclose(fIsc);
    	
    	Indice_iscrizioni x;
    	Indice_iscrizioni xTemp;
    	
    	strcpy(x.chiave,r.cognome);
    	x.valore = r.codice;
    	
    	fInd = fopen(indiceAperto_iscrizioni,"r+b");
    	
    	cont = 0;
    	fread(&rTemp,sizeof(Indice_iscrizioni),1,fInd);
    	
    	while(strcmp(xTemp.chiave,"VUOTO") != 0)
    	{
    		fread(&xTemp,sizeof(Indice_iscrizioni),1,fInd);
    		cont++;
    	}
    	
    	fseek(fInd,cont * sizeof(Indice_iscrizioni),0);
    	fwrite(&x,sizeof(Indice_iscrizioni),1,fInd);
    	fclose(fInd);
    	
    	IndiceCodice_iscrizioni y;
    	IndiceCodice_iscrizioni yTemp;
    	
    	y.chiave = r.codice;
    	y.valore = posInIsc;
    	
    	fInd = fopen(indiceCodiciAperto_iscrizioni,"r+b");
    	
    	cont = 0;
    	fread(&yTemp,sizeof(IndiceCodice_iscrizioni),1,fInd);
    	
    	while(yTemp.chiave != -1)
    	{
    		fread(&yTemp,sizeof(IndiceCodice_iscrizioni),1,fInd);
    		cont++;
    	}
    	
    	fseek(fInd,cont * sizeof(IndiceCodice_iscrizioni),0);
    	fwrite(&y,sizeof(IndiceCodice_iscrizioni),1,fInd);
    	fclose(fInd);
    	
    	IndiceCodice_iscrizioni ind[max];
    	fInd = fopen(indiceCodiciAperto_iscrizioni,"rb");
    	
    	int i;
    	for(i = 0; i < max; i++)
    	{
    		fread(&ind[i],sizeof(IndiceCodice_iscrizioni),1,fInd);
    	}
    	
    	fclose(fInd);
    	
    	OrdinaIndiceCodici(ind,max);
    	
    	fInd = fopen(indiceCodiciAperto_iscrizioni,"wb");
    	
    	for(i = 0; i < max; i++)
    	{
    		fwrite(&ind[i],sizeof(IndiceCodice_iscrizioni),1,fInd);
    	}
    	fclose(fInd);
    	printf("Aggiornamento indici completato.\n");
    }
  • Re: Difficoltà implementazione funzione

    Ok, quindi nel momento in cui fai un ingresso, ottieni il codice e cerca nel file dei pagamenti. Se trovi l'utente continui con l'ingresso altrimenti dici che si deve ancora pagare l'iscrizione ed esci.
  • Re: Difficoltà implementazione funzione

    Quindi nel concreto come integro la funzione di verifica in quella di inserimento?
  • Re: Difficoltà implementazione funzione

    1) chiedi il codice del cliente

    2) fai la ricerca nei dati dei pagamenti

    3) se trovi il codice del cliente continui al passo 5

    4) indichi che il cliente non ha pagato e termini

    5) continui l'inserimento dei dati dell'ingresso

    Come fare nel concreto e con quale codice, lo saprai tu, dato che il codice l'hai scritto tutto tu non dovresti avere problemi specifici. Sicuramente non posso scrivertelo io ma darti solo queste indicazioni.
  • Re: Difficoltà implementazione funzione

    Ragazzi una domanda ma questa funzione come la posso testare usando CUnit??
    void create_course()
    {
    	system("CLS");
    	FILE *f;
    	char nomeFile[20];
    	char nomeIndice[20];
    	char nomeIndiceCod[20];
    	
    	printf("Inserire il nome del file: ");
    	scanf("%s", &nomeFile);
    	
    	Corso c;
    	
    	strcpy(c.name_course, "VUOTO");
    	strcpy(c.n_resp, "VUOTO");
    	strcpy(c.c_resp, "VUOTO");
    	c.id = -1;
    	c.cancellato = 1;
    	
    	strcpy(nomeIndice, nomeFile);
    	strcat(nomeIndice, ".txt"); //*.txt
    	strcpy(nomeIndiceCod,nomeIndice);
    	strcat(nomeIndiceCod,"c"); //*.txtc
    	
    	strcat(nomeFile, ".dat");
    	
    	f = fopen(nomeFile, "rb");
    	
    	if(f == NULL) //se il file corso non esiste
    	{
    		fclose(f);
    		f = fopen(nomeFile, "wb");
    		int i;
    		for(i=0;i<max;i++)
    		{
    			fwrite(&c,sizeof(Corso),1,f);
    		}
    		fclose(f);
    		printf("File scritto correttamente!\n");
    		
    		FILE *indice;
    		Indice x;
    		
    		strcpy(x.chiave, "VUOTO");
    		
    		indice = fopen(nomeIndice, "wb");
    		for(i=0;i<max;i++)
    		{
    			x.valore = i;
    			fwrite(&x,sizeof(Indice),1,indice);
    		}
    		fclose(indice);
    		printf("File indice del corso scritto correttamente\n");
    		
    		indice = fopen(nomeIndiceCod,"wb");
    		IndiceCodice y;
    		y.chiave = -1;
    		y.valore = -1;
    		for(i=0;i<max;i++)
    		{
    			fwrite(&y,sizeof(IndiceCodice),1,indice);
    		}
    		fclose(indice);
    	}
    	else
    	{
    		char s;
    		printf("File già esistente. Vuoi sovrascriverlo? (s/n): ");
    		scanf("%s", &s);
    		if(s == 's' || s == 'S')
    		{
    			f = fopen(nomeFile, "wb");
    			int i;
    			for(i=0;i<max;i++)
    			{		
    				fwrite(&c,sizeof(Corso),1,f);
    			}
    			fclose(f);
    			printf("File scritto correttamente!\n");
    			
    			FILE *indice;
    			Indice x;
    			
    			strcpy(x.chiave, "VUOTO");
    		
    			indice = fopen(nomeIndice, "wb");
    			for(i=0;i<max;i++)
    			{
    				x.valore = i;
    				fwrite(&x,sizeof(Indice),1,indice);
    			}
    			fclose(indice);
    			printf("File indice del corso scritto correttamente\n");
    			
    			indice = fopen(nomeIndiceCod,"wb");
    			IndiceCodice y;
    			y.chiave = -1;
    			y.valore = -1;
    			for(i=0;i<max;i++)
    			{
    				fwrite(&y,sizeof(IndiceCodice),1,indice);
    			}
    			fclose(indice);
    		}
    	}
    	printf("Operazione completata\n");
    }
  • Re: Difficoltà implementazione funzione

    Hai letto il regolamento? 1 argomento = 1 thread; non puoi infilare in questo thread altre domande.
  • Re: Difficoltà implementazione funzione

    Ah ok scusate......
Devi accedere o registrarti per scrivere nel forum
23 risposte