ValeLL
17-09-2015, 16:42
Salve a tutti, dovrei fare questo programma :
Siano date le seguenti due classi per la gestione di un settore pubblico di un generico ente (es. comune di Roma):
1) classe Settore, caratterizzata dai dati membri: nome del settore (codSettore: string); numero reparti (NRep: int); costruttore; metodi di accesso ai dati;
2) classe Ufficio derivata pubblica da Settore, caratterizzata dai dati membri: nome ufficio (codUfficio: string); numero impiegati (num_imp: int); numero pratiche assegnate (num_pratiche: int); costruttori; metodi di accesso ai dati.
A. Si implementino i dati membro, ed in particolare i metodi, delle classi Settore e Ufficio.
B. Sviluppare un main in cui vi sia un’opportuna struttura dati Ente degli elementi trattati, contenente tutte le informazioni sui relativi settori e uffici corrispondenti. Si organizzi un menu (loop) che consenta le seguenti operazioni:
1. Inserimento dei dati per settore e ufficio;
2. Visualizzare tutti gli uffici, e il relativo settore di appartenenza, in cui il numero delle pratiche assegnate superi di tre volte il numero degli impiegati;
3. Visualizzazione di tutti gli uffici, e relative informazioni, di un dato settore preso in input.
Ho dei problemi con la stampa.Non so da dove iniziare con il punto 2 e 3. potete aiutarmi ?
#include<iostream>
#include<cstring>
using namespace std;
class Settore{
private:
string CodSett;
int NRep;
public:
Settore();
Settore(string, int);
void setCodSett(string);
void setNRep(int);
string getCodSett();
int getNRep();
void Stampa();
};
Settore::Settore(string cod, int nr){
this->CodSett=cod;
this->NRep=nr;
}
string Settore::getCodSett(){
return this->CodSett;
}
int Settore::getNRep(){
return this->NRep;
}
void Settore::setCodSett(string cod_sett){
this->CodSett=cod_sett;
}
void Settore::setNRep(int n_rep){
this->NRep=n_rep;
}
void Settore::Stampa(){
cout<<"Settore di appartenenza: "<<this->getCodSett()<<endl;
cout<<"Numero reparti: "<<this->getNRep()<<endl<<endl;
}
class Ufficio: public Settore{
private:
string CodUff;
int Num_imp;
int Num_pratiche;
public:
Ufficio();
Ufficio(string, int, string, int, int);
void setCodUff(string);
void setNum_imp(int);
void setNum_pratiche(int);
string getCodUff();
int getNum_imp();
int getNum_pratiche();
void Stampa();
};
Ufficio::Ufficio(string cods, int nr, string codu, int nd, int np): Settore(cods,nr){
this->CodUff=codu;
this->Num_imp=nd;
this->Num_pratiche=np;
}
void Ufficio::setCodUff(string cod_uff){
this->CodUff=cod_uff;
}
void Ufficio::setNum_imp(int num_imp){
this->Num_imp=num_imp;
}
void Ufficio::setNum_pratiche(int num_pratiche){
this->Num_pratiche=num_pratiche;
}
string Ufficio::getCodUff(){
return this->CodUff;
}
int Ufficio::getNum_imp(){
return this->Num_imp;
}
int Ufficio::getNum_pratiche(){
return this->Num_pratiche;
}
void Ufficio::Stampa(){
cout<<"Codice ufficio: "<<this->getCodUff()<<endl;
cout<<"Numero impiegati: "<<this->getNum_imp()<<endl;
cout<<"Numero pratiche: "<<this->getNum_pratiche()<<endl<<endl;;
}
class NodoUfficio{
public:
NodoUfficio *next;
Ufficio *info;
NodoUfficio(Ufficio*);
};
NodoUfficio::NodoUfficio(Ufficio *u){
this->info=u;
this->next=NULL;
}
class ListaEnte{
public:
NodoUfficio *start;
ListaEnte();
void Add(Ufficio*);
void Stampa();
};
ListaEnte::ListaEnte(){
this->start=NULL;
}
void ListaEnte::Add(Ufficio *u){
NodoUfficio *walker = this->start;
if(this->start == NULL)
{
start=new NodoUfficio(u);
}
else
{
while(walker->next != NULL)
{
walker=walker->next;
}
walker->next=new NodoUfficio(u);
}
}
void ListaEnte::Stampa(){
NodoUfficio *walker= this->start;
while(walker != NULL)
{
walker->info->Stampa();
walker=walker->next;
}
}
int main(){
ListaEnte *lista = new ListaEnte();
Ufficio *uff=NULL;
string cod_uff;
string cod_sett;
int n_rep;
int n_dip;
int n_pratiche;
bool esci=false;
int input;
string CodSett_cercato;
do{
cout<<"**MENU'**"<<endl;
cout<<"1-Inserimento dei dati per settore e ufficio"<<endl;
cout<<"2-Visualizzare tutti gli uffici, e il relativo settore di appartenenza, in cui il numero delle pratiche assegnate superi di tre volte il numero degli impiegati;"<<endl;
cout<<"3-Visualizzazione di tutti gli uffici, e relative informazioni, di un dato settore preso in input"<<endl;
cout<<"4-Esci"<<endl;
cin>>input;
switch(input){
case 1:
cout<<"Inserisci i dati "<<endl<<endl;
cout<<"Inserisci codice settore: ";
cin>>cod_sett;
cout<<endl;
cout<<"Inserisci numero reparti: ";
cin>>n_rep;
cout<<endl;
cout<<"Inserisci codice ufficio: ";
cin>>cod_uff;
cout<<endl;
cout<<"Inserisci numero dipendenti:";
cin>>n_dip;
cout<<endl;
cout<<"Inserisci numero pratiche:";
cin>>n_pratiche;
cout<<endl;
uff=new Ufficio(cod_sett,n_rep,cod_uff,n_dip,n_pratiche);
lista->Add(uff);
break;
case 2:
break;
case 3:
break;
case 4:
esci=true;
break;
default:
cout<<"**Selzione errata**"<<endl;
break;
}
}while(!esci);
}
Siano date le seguenti due classi per la gestione di un settore pubblico di un generico ente (es. comune di Roma):
1) classe Settore, caratterizzata dai dati membri: nome del settore (codSettore: string); numero reparti (NRep: int); costruttore; metodi di accesso ai dati;
2) classe Ufficio derivata pubblica da Settore, caratterizzata dai dati membri: nome ufficio (codUfficio: string); numero impiegati (num_imp: int); numero pratiche assegnate (num_pratiche: int); costruttori; metodi di accesso ai dati.
A. Si implementino i dati membro, ed in particolare i metodi, delle classi Settore e Ufficio.
B. Sviluppare un main in cui vi sia un’opportuna struttura dati Ente degli elementi trattati, contenente tutte le informazioni sui relativi settori e uffici corrispondenti. Si organizzi un menu (loop) che consenta le seguenti operazioni:
1. Inserimento dei dati per settore e ufficio;
2. Visualizzare tutti gli uffici, e il relativo settore di appartenenza, in cui il numero delle pratiche assegnate superi di tre volte il numero degli impiegati;
3. Visualizzazione di tutti gli uffici, e relative informazioni, di un dato settore preso in input.
Ho dei problemi con la stampa.Non so da dove iniziare con il punto 2 e 3. potete aiutarmi ?
#include<iostream>
#include<cstring>
using namespace std;
class Settore{
private:
string CodSett;
int NRep;
public:
Settore();
Settore(string, int);
void setCodSett(string);
void setNRep(int);
string getCodSett();
int getNRep();
void Stampa();
};
Settore::Settore(string cod, int nr){
this->CodSett=cod;
this->NRep=nr;
}
string Settore::getCodSett(){
return this->CodSett;
}
int Settore::getNRep(){
return this->NRep;
}
void Settore::setCodSett(string cod_sett){
this->CodSett=cod_sett;
}
void Settore::setNRep(int n_rep){
this->NRep=n_rep;
}
void Settore::Stampa(){
cout<<"Settore di appartenenza: "<<this->getCodSett()<<endl;
cout<<"Numero reparti: "<<this->getNRep()<<endl<<endl;
}
class Ufficio: public Settore{
private:
string CodUff;
int Num_imp;
int Num_pratiche;
public:
Ufficio();
Ufficio(string, int, string, int, int);
void setCodUff(string);
void setNum_imp(int);
void setNum_pratiche(int);
string getCodUff();
int getNum_imp();
int getNum_pratiche();
void Stampa();
};
Ufficio::Ufficio(string cods, int nr, string codu, int nd, int np): Settore(cods,nr){
this->CodUff=codu;
this->Num_imp=nd;
this->Num_pratiche=np;
}
void Ufficio::setCodUff(string cod_uff){
this->CodUff=cod_uff;
}
void Ufficio::setNum_imp(int num_imp){
this->Num_imp=num_imp;
}
void Ufficio::setNum_pratiche(int num_pratiche){
this->Num_pratiche=num_pratiche;
}
string Ufficio::getCodUff(){
return this->CodUff;
}
int Ufficio::getNum_imp(){
return this->Num_imp;
}
int Ufficio::getNum_pratiche(){
return this->Num_pratiche;
}
void Ufficio::Stampa(){
cout<<"Codice ufficio: "<<this->getCodUff()<<endl;
cout<<"Numero impiegati: "<<this->getNum_imp()<<endl;
cout<<"Numero pratiche: "<<this->getNum_pratiche()<<endl<<endl;;
}
class NodoUfficio{
public:
NodoUfficio *next;
Ufficio *info;
NodoUfficio(Ufficio*);
};
NodoUfficio::NodoUfficio(Ufficio *u){
this->info=u;
this->next=NULL;
}
class ListaEnte{
public:
NodoUfficio *start;
ListaEnte();
void Add(Ufficio*);
void Stampa();
};
ListaEnte::ListaEnte(){
this->start=NULL;
}
void ListaEnte::Add(Ufficio *u){
NodoUfficio *walker = this->start;
if(this->start == NULL)
{
start=new NodoUfficio(u);
}
else
{
while(walker->next != NULL)
{
walker=walker->next;
}
walker->next=new NodoUfficio(u);
}
}
void ListaEnte::Stampa(){
NodoUfficio *walker= this->start;
while(walker != NULL)
{
walker->info->Stampa();
walker=walker->next;
}
}
int main(){
ListaEnte *lista = new ListaEnte();
Ufficio *uff=NULL;
string cod_uff;
string cod_sett;
int n_rep;
int n_dip;
int n_pratiche;
bool esci=false;
int input;
string CodSett_cercato;
do{
cout<<"**MENU'**"<<endl;
cout<<"1-Inserimento dei dati per settore e ufficio"<<endl;
cout<<"2-Visualizzare tutti gli uffici, e il relativo settore di appartenenza, in cui il numero delle pratiche assegnate superi di tre volte il numero degli impiegati;"<<endl;
cout<<"3-Visualizzazione di tutti gli uffici, e relative informazioni, di un dato settore preso in input"<<endl;
cout<<"4-Esci"<<endl;
cin>>input;
switch(input){
case 1:
cout<<"Inserisci i dati "<<endl<<endl;
cout<<"Inserisci codice settore: ";
cin>>cod_sett;
cout<<endl;
cout<<"Inserisci numero reparti: ";
cin>>n_rep;
cout<<endl;
cout<<"Inserisci codice ufficio: ";
cin>>cod_uff;
cout<<endl;
cout<<"Inserisci numero dipendenti:";
cin>>n_dip;
cout<<endl;
cout<<"Inserisci numero pratiche:";
cin>>n_pratiche;
cout<<endl;
uff=new Ufficio(cod_sett,n_rep,cod_uff,n_dip,n_pratiche);
lista->Add(uff);
break;
case 2:
break;
case 3:
break;
case 4:
esci=true;
break;
default:
cout<<"**Selzione errata**"<<endl;
break;
}
}while(!esci);
}