PDA

View Full Version : [C++]aiuto su classi e liste


Alexxio
29-06-2003, 09:55
ho bisogno di fare questo programma per la gestione ordini, ma ho bisogno di un aiuto umano
questo è il codice che sono riuscito a fare da solo:P :


code:--------------------------------------------------------------------------------
#include <iostream>
#include <cstdio>
#include <cstdlib>
using namespace std;
int codice_auto_increment=0;
struct indirizzo{
char via[80];
char tel[80];
char n_civico[80];
char citta[80];
};
class clienti{
char nome_cog[80];
indirizzo recapito;
char note[80];
};



class articoli{
public:
int codice;
char descrizione;
char prezzo;
bool disponibility;
crea_articoli();
show();
};
struct listadiarticoli {
articoli articolocreato;
struct listadiarticoli *puntalis;
};
listadiarticoli *puntallalista;
typedef listadiarticoli *tipochepunta;
typedef tipochepunta* puntapunt;
listadiarticoli *p;
puntapunt inizio=&p;
void crealista(puntapunt);
main (){
int a;
while(a)
{
cout << "Scegli cosa vuoi fare\n" << "1)Gestione articoli\t\t2)Gestione clienti\t\t3)Make Order\t\t4)Vedi clienti\t\t5)Vedi Articoli\t\t0)QUIT\n";
cin >> a;
switch(a){
case 0: break;
case 1: cout <<"Gestione articoli attivata\n";
crealista(&p);
break;
case 2: cout <<"Gestione clienti attivata\n"; break;
case 3: cout <<"Attivazione Ordine\n"; break;
case 4: cout <<"Vedi clienti\n"; break;
case 5: cout <<"Vedi articoli\n"; p->articolocreato.show(); break;
}
}
cout << "\n\nGrazie per aver usato la gay macchina dei desideri per ordini di \n Alexxio\n";

return 0;

}

//Creazione del database
articoli::crea_articoli(){
char desc;
char price;
bool ceononce;
cout << "codice articolo:" << codice_auto_increment;
cout << "\nInserici descrizione\n";
cin >>desc;
cout << "\nInserisci il prezzo\n";
cin >>price;
cout << "Disponibile Si-no (0oppure1)\n";
cin >> ceononce;
codice=codice_auto_increment;
descrizione=desc;
prezzo=price;
disponibility=ceononce;
cout <<"\nArticolo creato\n";
codice_auto_increment++;

}

articoli::show(){ //mostra gli articoli
tipochepunta mario;
mario=*inizio;
if (mario==NULL) cout << "Non è stato creato nessun articolo\n";
else {
cout << "ecco cosa sta dentro\n";
cout << "Codice articolo:";
cout << mario->articolocreato.codice;
cout << "\nDescrizione:" << mario->articolocreato.descrizione;
cout << "\nDisponibilità:" << mario->articolocreato.disponibility;
cout << "\nPrezzo:" << mario->articolocreato.prezzo << "\n";
cout << "\ngrazie\n";
}
}

void crealista(puntapunt gay){
listadiarticoli *gianni;
gianni=new listadiarticoli;
gianni->articolocreato.crea_articoli();
gianni->puntalis=*gay;
*gay=gianni;

}
--------------------------------------------------------------------------------


Il problema sta nel fatto che voglio creare una lista unidirezionale per gli articoli che ci metto...ma non riesco a memorizzare più di un articolo, o meglio non riesco a concatenare i vari articoli!!!! Non posso usare i comandi list del c++, devo riuscire a farla con i puntatori e con la creazione dinamica!!
Si può fare? Se non con le liste come altro posso fare? Con un array di oggetti?

cionci
29-06-2003, 10:16
Prova così:

void crealista(puntapunt &p)

e magari usa nomi di variabili un po' meno fantasiosi...

Alexxio
29-06-2003, 11:44
nn mi è molto di aiuto....dimmi qualcosa in più sennò non capisco cosa vuoi dire :) :muro:

cionci
29-06-2003, 15:46
Vuol dire che in crealista il puntatore lo devi passare per riferimento (con la &) altrimenti il valore che gli assegni non diventa valido nel punto in cui chiami crealista...

Marco28
01-07-2003, 11:43
perdonami, ma per quello che devi fare penso che ti sia più facile utilizzare Access...il problema è che però non è portabile...nel senso che se crei un'applicazione in Access, per utilizzarla su un altro pc devi necessariamente averlo installato.
Un'altra soluzione sarebbe quella di creare tabelle relative agli ordini in Access e poi accedere ad esse tramite un applicazione realizzata in Builder C++ oppure in Java. In tal caso devi studiare un pò di SQL.

Alexxio
01-07-2003, 17:35
già conosco sql e access...
nn voglio usare altre applicazioni che non siano c/c++...

verloc
02-07-2003, 14:46
Così a occhio:

-mancano i costruttori di default e di copia
-dovresti overlodare gli operatori == > che ti servirebbero ad ordinare
i record a seconda del cognome ,del prodotto etc

-i dati devono essere private ed accessibili solo tramite metodi Getxxx()
Setxxx()

-usare la classe string della STL al posto degli array di caratteri

-una gestione + sofisticata del caricamento e ouput dei dati su file

-ripensare tutto in fuzione dei container STL standard: list,vector,map,etc

tutto questo è impossibile spiegartelo, purtroppo devi studiartelo :(

Lo so che ti ho dato una brutta notizia: in bocca al lupo :)

Alexxio
02-07-2003, 18:01
Originally posted by "verloc"

Così a occhio:

-mancano i costruttori di default e di copia
-dovresti overlodare gli operatori == > che ti servirebbero ad ordinare
i record a seconda del cognome ,del prodotto etc

-i dati devono essere private ed accessibili solo tramite metodi Getxxx()
Setxxx()

-usare la classe string della STL al posto degli array di caratteri

-una gestione + sofisticata del caricamento e ouput dei dati su file

-ripensare tutto in fuzione dei container STL standard: list,vector,map,etc

tutto questo è impossibile spiegartelo, purtroppo devi studiartelo :(

Lo so che ti ho dato una brutta notizia: in bocca al lupo :)

Finalmente una risposta decente! :)

Ho da chiarirti un po' di cose pero:
Non posso usare i comandi della STL come list,vector,map,etc...
Per gli altri punti che hai scritto, penso siano cose che vengano dopo il completamento del prog (se non proprio di tutto, beh almeno della parte principale, quella che non riesco a fare...)..quindi sono cose che dovrei far dopo, come ad esempio i costruttori di copia (che per ora non so neanke perchè servirebbero, cmq se me l'hai detto forse hai ragione, sono troppo niubbo)..
Hai visto dove mi sono ingrippato? Nella costruzione della lista...è lì che mi serve un aiuto...cosa posso fare per questa parte???

cionci
02-07-2003, 19:13
Ti ho già detto che devi passare il puntatore per riferimento !!! Altrimenti il valore che gli assegni per dentro a crealista viene assegnato ad una copia locale del parametro che gli passi !!! Se non è decente questa risposta !!!

Alexxio
03-07-2003, 19:37
ok vi sono grato ma se postasse un "pezzettino" leggero leggero di codice per farmi vedere mica mi arrabbio!! :muro: :D :cry:
Dai vi prego nn riesco ad andare avanti!!