Perfavore è urgentissimo!!!
MAIN
#define _CRT_SECURE_NO_WARNINGS
#include "menu.h"
#include "persona.h"
#include "utente.h"
#include<stdio.h>
#include<iostream>
using namespace std;
#define COSTANTE 5
int individua_utenti(); //La seguente funzione serve per individuare il numero di utenti!
int controllo_posti(int);
void carica_dati_su_file(utente *,int); //overload funzione. Questa funzione carica su file i dati degli utenti.
void main()
{
utente uten[COSTANTE];
menu ogg;
int ute; //ele=elementi presenti in biblioteca, ut=utenti.
ute=individua_utenti(); // Utenti presenti sul file!
FILE *fp;
fp=fopen("Utenti.txt","rb");
if(fp!=NULL)
{
fread(uten,sizeof(class utente),ute,fp);
fclose(fp);
}
else
fclose(fp);
int sc;
do
{
sc=ogg.richiama_menu();
switch(sc)
{
case 1:
persona *pers[COSTANTE]; //Vettore di puntatori ad oggetto di tipo persona(classe base)!
int num1;
utente *ut;
ute=individua_utenti();
num1=controllo_posti(ute);
ut=new utente[num1]; //Vado ad allocare un vettore di oggetti in memoria heap!
for(int i=0;i<num1;i++)
{
pers[i]=&ut[i];
pers[i]->carica();
uten[ute+i]=ut[i];
}
carica_dati_su_file(ut,num1);
delete ut;
break;
case 2:
persona *p[COSTANTE];
ute=individua_utenti();
if(ute==0)
cout<<"In archivio non sono presenti utenti!"<<endl;
else
{
for(int i=0;i<ute;i++)
{
p[i]=&uten[i];
p[i]->visualizza();
}
}
break;
}
}
while(sc!=0);
}
int individua_utenti()
{
int dim,p;
FILE *fp;
if((fp=fopen("Utenti.txt","rb"))!=NULL)
{
fseek(fp,0,2);
dim=ftell(fp);
p=(int)(dim/sizeof(class utente));
fclose(fp);
return p;
}
else
return 0;
}
int controllo_posti(int a)
{
int posti;
posti=COSTANTE-a;
cout<<"Resoconto: "<<endl;
cout<<"Posti totali: "<<COSTANTE<<endl;
cout<<"Posti disponibili: "<<posti<<endl;
int num;
if(posti==0)
{
cout<<"Tutto esaurito!"<<endl;
return 0;
}
else
{
do
{
do
{
cout<<"Digitare numero di elementi da inserire in base ai posti disponibili e\nmassimo 3 per volta: ";
cin>>num;
}
while(num>3);
if((posti-num)<0)
cout<<"Controllare il numero di posti disponibili!"<<endl;
}
while((posti-num)<0);
return num;
}
}
void carica_dati_su_file(utente *a,int b)
{
FILE *fp;
fp=fopen("Utenti.txt","ab");
fwrite(a,sizeof(class utente),b,fp);
fclose(fp);
}
#ifndef PERSONA_H
#define PERSONA_H
class persona //Classe astratta
{
protected:
char nome_utente[20];
char cognome_utente[20];
int eta;
public:
virtual void carica()=0; //Funzione virtuale pura.
virtual void visualizza()=0;
};
#endif
#ifndef UTENTE_H
#define UTENTE_H
#include "persona.h"
#include <iostream>
using namespace std;
class utente:public persona
{
protected:
int codice_utente;
long long recapito_telefonico;
char citta_residenza[30];
public:
char* get_name();
char* get_surname();
int get_code();
long long get_recapito();
char* get_city();
void carica() //Definizioni funzioni virtuali carica e visualizza.
{
cout<<"Inserire dati utente: "<<endl;
cout<<"Nome: ";
cin>>nome_utente;
cout<<"Cognome: ";
cin>>cognome_utente;
cout<<"Eta': ";
cin>>eta;
cout<<"Codice utente: ";
cin>>codice_utente;
cout<<"Recapito telefonico: ";
cin>>recapito_telefonico;
cout<<"Citta' di residenza: ";
cin>>citta_residenza;
}
void visualizza()
{
cout<<"Nome: "<<nome_utente<<endl;
cout<<"Cognome: "<<cognome_utente<<endl;
cout<<"Eta': "<<eta<<endl;
cout<<"Codice utente: "<<codice_utente<<endl;
cout<<"Recapito telefonico: "<<recapito_telefonico<<endl;
cout<<"Citta' di residenza: "<<citta_residenza;
cout<<endl;
}
};
#endif
#include "utente.h"
#include<iostream>
using namespace std;
int utente::get_code()
{
return codice_utente;
}
char* utente::get_name()
{
return nome_utente;
}
char* utente::get_surname()
{
return cognome_utente;
}
long long utente::get_recapito()
{
return recapito_telefonico;
}
char* utente::get_city()
{
return citta_residenza;
}
#ifndef MENU_H
#define MENU_H
class menu
{
int scelta;
public:
menu();
int richiama_menu();
~menu();
};
#endif
#include "menu.h"
#include<iostream>
using namespace std;
menu::menu() //Costruttore
{
scelta=-1;
cout<<" *****************************"<<endl;
cout<<" **********BENVENUTI**********"<<endl;
cout<<" *****************************"<<endl<<endl;
}
int menu::richiama_menu()
{
cout<<" MENU': "<<endl;
cout<<"1)Caricare utenti."<<endl;
cout<<"2)Visualizzare dati utenti."<<endl;
cout<<"0)Esci."<<endl;
cout<<"Scelta: ";
cin>>scelta;
return scelta;
}
menu::~menu()
{
cout<<"Grazie per aver utilizzato il nostro programma!\nArrivederci!"<<endl;
system("PAUSE");
}