Cos’è un Articolo
Composizione testuale composta da un numero di caratteri
compreso tra un minimo di 500 ed un massimo di 1000.
Caratteristiche della classe Articolo:
1.
Inserimento/Visualizzazione/Aggiornamento
Articolo
a.
Numero Articolo
b.
Titolo
c.
Testo
2.
Controllo numero di caratteri inseriti per
Articolo
Implementare la classe Articolo e una struttura per la gestione all'interno della classe Main():
Implementare la classe Articolo e una struttura per la gestione all'interno della classe Main():
# include <iostream>
# include <string.h>
# include <stdio.h>
# include <stdlib.h>
# include <conio.h>
using namespace std;
class Articolo
{
public:
Articolo();
char titolo[31];
int numeroArticolo;
char testo[1001];
bool controllo;
void InserimentoArticolo();
void InserimentoTitolo();
void InserimentoNumero();
void InserimentoTesto();
void Aggiornamento();
void Visualizza();
bool controlloLunghezza();
};
Articolo::Articolo()
{
strcpy(titolo,""); //inizzializzo la
variabile titolo
numeroArticolo=0; //inizzializzo la
variabile numeroArticolo
strcpy(testo,""); //inizzializzo la
variabile testo
controllo=false; //inizzializzo la
variabile controllo
}
void
Articolo::InserimentoArticolo() //METODO PER INSERIMENTO COMPLETO DI UN NUOVO ARTICOLO
{
InserimentoTitolo(); //chiamata al
metodo INSERIMENTOTITOLO()
InserimentoNumero(); //chiamata al
metodo INSERIMENTONUMERO()
InserimentoTesto(); //chiamata al
metodo INSERIMENTOTESTO()
}
void
Articolo::InserimentoTitolo() //METODO PER INSERIMENTO TITOLO ARTICOLO
{
char c;
//variabile di acquisizione tasto premuto DA
UTENTE da tastiera
int i;
//variabile contatore per inserimento carattere
in vettore array TITOLO e TESTO
//INPUT TITOLO ARTICOLO
cout<<endl<<"\tInserire il
'TITOLO' dell'articolo: "<<endl;
i=0;
//azzero contatore 'i'
do{
if(i<31) //controllo su
massima dimensione array
{
c=getch();
putchar(c);
if((c!=13)&&(c!=127)) //se diverso da
INVIO
{
titolo[i]=c; //inserisco in
posizione 'i' all'interno dell'array testo il carattere acquisito da tastiera
'c'
i++; //incremento il
contatore 'i'
}
else //altrimenti
{
if((c!=13)&&(c==127)&&(i>0)) //se utente preme
tasto BACK per cancellare input
titolo[i]=' '; //cancello
contenuto in relativa posizione 'i'
i--; //decremento
contatore 'i' per sovrascrivere posizione array
}
}
else
{
cout<<endl<<endl<<"Hai superato la dimensione
massima del TITOLO! (max 30 battute)"<<endl;
i=0;
}
}while(c!=13);
i++;
//incremento contatore 'i' per chiusura array
titolo[i]='\0'; //inserisco fine
stringa
}
void
Articolo::InserimentoNumero() //METODO PER INSERIMENTO NUMERO ARTICOLO
{
//INPUT NUMERO ARTICOLO
cout<<endl<<"\tInserire il
'NUMERO' dell'articolo: "<<endl;
cin>>numeroArticolo;
}
void
Articolo::InserimentoTesto() //METODO PER INSERIMENTO TESTO ARTICOLO
{
//INPUT TESTO ARTICOLO
cout<<endl<<"\tInserire il
'TESTO' dell'articolo: "<<endl;
int i=0;
char c;
do{
if(i<1001) //controllo su massima dimensione array
{
c=getch();
putchar(c);
if((c!=13)&&(c!=127)) //se diverso da
INVIO
{
testo[i]=c; //inserisco in posizione 'i' all'interno
dell'array testo il carattere acquisito da tastiera 'c'
i++; //incremento il contatore 'i'
}
else //altrimenti
{
if((c!=13)&&(c==127)&&(i>0)) //se utente preme
tasto BACK per cancellare input
testo[i]=' '; //cancello
contenuto in relativa posizione 'i'
i--; //decremento
contatore 'i' per sovrascrivere posizione array
}
}
else
{
cout<<endl<<endl<<"Hai superato la dimensione
massima del TESTO! (max 1000 battute)"<<endl;
i=0;
}
}while(c!=13);
i++;
//incremento contatore 'i' per chiusura array
testo[i]='\0'; //inserisco fine
stringa
cout<<endl<<endl;
}
void
Articolo::Aggiornamento() //METODO AGGIORNAMENTO CAMPI DELL'ARTICOLO
{
int menu,i; //variabile per
scelta menu e contatore
char c;
//variabile per input char utente da tastiera
cout<<endl<<"Quale campo
vuoi aggiornare? 1)Titolo - 2)Numero Articolo - 3)Testo -
0)Annulla"<<endl;
cin>>menu;
do{
switch(menu)
{
case 1: InserimentoTitolo(); //chiamata al
metodo INSERIMENTOTITOLO()
break;
case 2: InserimentoNumero(); //chiamata al
metodo INSERIMENTONUMERO()
break;
case 3: InserimentoTesto(); //chiamata al
metodo INSERIMENTOTESTO()
break;
case 0:
cout<<endl<<"Aggiornamento annullato"<<endl;
break;
default:
cout<<endl<<"Scelta non consentita"<<endl;
}
}while(menu!=0);
}
void Articolo::Visualizza()
{
cout<<endl<<"\tIl 'TITOLO'
dell'articolo e': "<<endl;
cout<<titolo;
cout<<endl<<"\tIl 'NUMERO'
dell'articolo e': "<<endl;
cout<<numeroArticolo;
cout<<endl<<"\tIl 'TESTO'
dell'articolo e': "<<endl;
cout<<testo;
}
bool
Articolo::controlloLunghezza() //METODO PER VERIFICA REQUISITI LUNGHEZZA
{
int i=0, lunghezza=0; //variabile
contatore 'i' e variabile contatore 'lunghezza' inizzializzate a 0
bool verifica=false; //variabile
riscontro esito inizializzata a 'false'
cout<<endl<<"\tControllo
Lunghezza minima dell'Articolo: "<<endl;
do{
if (testo[i]!='\0') //se l'elemento
dell'array preso in esame non è quello di fine stringa
{
lunghezza++; //incremento
contatore 'lunghezza'
i++; //incremento
contatore 'i'
}
}while(testo[i]!='\0'); //continuo mentre elemento dell'array e'
diverso da fine stringa
cout<<endl<<"Il testo
contiene "<<lunghezza<<" caratteri"<<endl;
if(lunghezza>499) //se il contatore
lunghezza conta almeno 500 caratteri
verifica=true;
return verifica; //restituisco il
valore della variabile 'verifica'
}
main()
{
int menu;
bool requisiti=false;
Articolo obj1;
do
{
cout<<"MENU:\n1)Inserimento
nuovo Articolo\n2)Visualizza Articolo\n3)Aggiorna Articolo\n4)Verifica
requisiti Articolo\n0)Esci"<<endl;
cin>>menu;
switch (menu)
{
case 1: obj1.InserimentoArticolo();
break;
case 2:
obj1.Visualizza();
break;
case 3: obj1.Aggiornamento();
break;
case 4: requisiti=obj1.controlloLunghezza();
if(requisiti)
cout<<endl<<"Requisiti
raggiunti"<<endl;
else
cout<<endl<<"L'aritcolo non raggiunge la lunghezza
minima di testo (550 battute) "<<endl;
break;
case 0: cout<<endl<<"Arrivederci"<<endl;
break;
default: cout<<"Scelta
non valida"<<endl<<endl;
}
}while(menu!=0);
}