[ AcidAngel @ 08.05.2007. 17:05 ] @
Kao odbranu za usmeni rad iz programiranja dobila sam zadatak da isprogramiram aviokompaniju. Osim klasicnih funkcija koje treba da sadrzi pod 'must' je navedeno da funkcija sadrzi: -Ponudu aviokompanija i destinacija(znaci da se ne unose sa tastature); -Da unesenom putniku automatski dodjeljuje broj prvog slobodnog mjesta: -Da se podaci o korinisku mogu mijenjati; -Da se moze vrsiti pretrazivanje korisnika po destinacijama; -------------------------------------------------------- * Edit: Prepravila sam prvobitni kod, mislim da je sada citljivije dosta, ali kada sam mu poslala vratio ga je i rekao da dodam jos i -mogucnost da korinik odabere broj letova i broj sjedista; -Te da umjesto inicijalizacije letova u mainu tamo stavim opciju „dodaj let“ koja bi bila zasticena odgovarajucim PIN-om(kojem bi pristup imao samo „administrator“).Svaki put kada se stvori mogucnost da se dodaju nove informacije o letu, postojala bi mogucnost da se ta opcija pokrene. Nakon toga, korisnici bi mogli rezervisatati samo one letove koji su dostupni... Hmmm, pokusala sam da br_mjesta ostavim kao globalnu varijablu i da u main-u korisnik vrsi inicijalizaciju medjutim kada zatrazim rezervaciju (opcija a) on mi dopusti odabir aviokompanije i destinacije i onda preskoci unos podataka te me odmah vrati na glavni izbornik. O cemu se radi? Hvala unaprijed -------------------------------------------------------- *edit: Mislim da sam ipak uspjela odraditi to ! Novi kod: Code: #include<iostream.h> #include<string.h> #include<stdlib.h> #include<conio.h> int apass=54321; char crt[]={"\n ----------------------------------\n"}; char izbor; const int MAX=100; struct putnik{ int id; char* ime; char* prezime; char* grad; int unos(int sifra_leta); void promjeni(); void info(); }; struct let{ int sifra; char* destinacija; char* aviokompanija; int putnici[MAX]; int br_mjesta; int provjera(); void inicijalizacijaPutnika(); void listaPutnika(); void dodaj(); }; let letovi[MAX]; int trenutniLet=0; putnik sviPutnici[MAX]; int trenutniPutnik=0; char aviokompanije[MAX][50]; int trenutnaKompanija=0; char destinacije[MAX][50]; int trenutnaDestinacija=0; int izabirKompanija(){ int komp; if(trenutnaKompanija==0){ cout<<"Nema unesenih kompanija"<<endl; return -1; } cout<<"Izaberite kompaniju:\n"; for(int i=0;i<trenutnaKompanija;i++){ cout<<(i+1)<<") "<<aviokompanije[i]<<endl; } while(komp<1 || komp>trenutnaKompanija){ cin>>komp; } cin.ignore(); return komp-1; } int izabirDestinacija(){ int dest; if(trenutnaDestinacija==0){ cout<<"Nema unesenih destinacija"<<endl; return -1; } cout<<"Izaberite destinaciju:\n"; for(int i=0;i<trenutnaDestinacija;i++){ cout<<(i+1)<<") "<<destinacije[i]<<endl; } while(dest<1 || dest>trenutnaDestinacija){ cin>>dest; } cin.ignore(); return dest-1; } int putnik::unos(int sifra_leta){ int novo_mjesto=-1; int l; for(l=0;l<trenutniLet;l++){ if(letovi[l].sifra==sifra_leta){ novo_mjesto=letovi[l].provjera(); if(novo_mjesto==-1){ cout<<"Ovaj let nema slobodnih mjesta"<<endl; return 0; }else{ break; //izlaz iz for petlje } } } if(novo_mjesto==-1){ cout<<"Nije definisan takav let"<<endl; return 0; } //unos podataka za putnika:ime,prezime,grad cin.ignore(); cout<<"Ime: "; ime=new char[21]; cin.getline(ime,20,'\n'); cout<<"Prezime: "; prezime=new char[21]; cin.getline(prezime,20,'\n'); cout<<"Grad: "; grad=new char[21]; cin.getline(grad,20,'\n'); id=random(1000); letovi[l].putnici[novo_mjesto]=id; return 1; } void putnik::info(){ cout<<crt<<"\t ..::PUTNIK["<<id<<"]::.."<<crt; cout<<"Id: "<<id<<endl; cout<<"Ime: "<<ime<<endl; cout<<"Prezime: "<<prezime<<endl; cout<<"Grad: "<<grad; cout<<crt; } void putnik::promjeni(){ char *novo_ime; char *novo_prezime; char *novo_grad; cout<<"Ime: "; novo_ime=new char[21]; cin.getline(novo_ime,20,'\n'); cin.getline(novo_ime,20,'\n'); if(strcmp(novo_ime,"")!=0){ ime=new char[21]; ime=novo_ime; } cout<<"Prezime: "; novo_prezime=new char[21]; cin.getline(novo_prezime,20,'\n'); if(strcmp(novo_prezime,"")!=0){ prezime=new char[21]; prezime=novo_prezime; } cout<<"Grad: "; novo_grad=new char[21]; cin.getline(novo_grad,20,'\n'); if(strcmp(novo_grad,"")!=0){ grad=new char[21]; grad=novo_grad; } } int let::provjera(){ for(int i=0;i<br_mjesta;i++){ if(putnici[i]==-1) return i; } return -1; } void let::inicijalizacijaPutnika(){ for(int i=0;i<MAX;i++){ putnici[i]=-1; } } void let::listaPutnika(){ int id; for(int i=0;i<MAX;i++){ id=putnici[i]; if(id!=-1){ for(int j=0;j<MAX;j++){ if(sviPutnici[j].id==id){ sviPutnici[j].info(); getch(); break; } } } } } void let::dodaj(){ int meni; meni=izabirKompanija(); aviokompanija=aviokompanije[meni]; meni=izabirDestinacija(); destinacija=destinacije[meni]; cout<<"Unesite broj mjesta:\n"; while(br_mjesta<1 || br_mjesta>MAX){ cin>>br_mjesta; } cin.ignore(); sifra=random(1000); inicijalizacijaPutnika(); } int rezervacija(){ int let; if(trenutniLet==0){ cout<<"Nema definisanih letova"<<endl; return -1; } cout<<crt<<"\t ..::REZERVACIJA::.."<<crt; cout<<"Izaberite let"<<endl; for(int i=0;i<trenutniLet;i++){ cout<<letovi[i].sifra<<"\t"<<letovi[i].aviokompanija<<","<<letovi[i].destinacija<<endl; } /* komp=izabirKompanija(); if(komp==-1) return -1; dest=izabirDestinacija(); if(dest==-1) return -1; */ cin>>let; for(i=0;i<trenutniLet;i++){ if(letovi[i].sifra==let) return let; } cout<<"Taj let ne postoji"<<endl; return -1; } void prikaziPutnike(){ int sifra_leta; sifra_leta=rezervacija(); if(sifra_leta!=-1){ for(int l=0;l<trenutniLet;l++){ if(letovi[l].sifra==sifra_leta){ letovi[l].listaPutnika(); } } } } void otkazi() { int idKL; cout<< "Unesite id putnika: " ; cin>>idKL; for(int i=0;i<trenutniLet;i++) { for(int j=0;j<letovi[i].br_mjesta;j++) { if(letovi[i].putnici[j]==idKL) letovi[i].putnici[j]=-1; } } cin.ignore(); } void promjena() { int idKL; cout<< "Unesite id putnika: " ; cin>>idKL; for(int i=0;i<40;i++){ if(sviPutnici[i].id==idKL){ sviPutnici[i].promjeni(); return; } } cin.ignore(); } void novaAvioKompanija(){ int ppass; cout<<"Unesite admin password: "; cin>>ppass; if(ppass!=apass) cout<<"Pogresan unos\n Povratak u meni\n"; else{ cout<<"Unesite novu kompaniju: "; cin.ignore(); cin.getline(aviokompanije[trenutnaKompanija++],49,'\n'); } } void novaDestinacija(){ int ppass; cout<<"Unesite admin password: "; cin>>ppass; if(ppass!=apass) cout<<"Pogresan unos\n Povratak u meni\n"; else{ cout<<"Unesite novu destinaciju: "; cin.ignore(); cin.getline(destinacije[trenutnaDestinacija++],49,'\n'); } } void noviLet(){ int ppass; cout<<"Unesite admin password: "; cin>>ppass; if(ppass!=apass) cout<<"Pogresan unos\n Povratak u meni\n"; else { letovi[trenutniLet++].dodaj(); } } void main(){ int check; /*letovi[0].sifra=1; letovi[0].destinacija="Amsterdam"; letovi[0].aviokompanija="Air Bosna"; letovi[0].inicijalizacijaPutnika(); letovi[1].sifra=2; letovi[1].destinacija="Prag"; letovi[1].aviokompanija="Air Bosna"; letovi[1].inicijalizacijaPutnika(); letovi[2].sifra=3; letovi[2].destinacija="Amsterdam"; letovi[2].aviokompanija="LUFTHANSA"; letovi[2].inicijalizacijaPutnika(); letovi[3].sifra=4; letovi[3].destinacija="Prag"; letovi[3].aviokompanija="LUFTHANSA"; letovi[3].inicijalizacijaPutnika();*/ cout<<crt<<"\t ..::PROGRAM ZA REZERVACIJU KARATA::.."<<crt; while(izbor!='h'){ cout<<"Za izbor operacije unesite odgovarajuce slovo\n"; cout<<" a) Rezerviraj sjediste\n"; cout<<" b) Otkazi rezervaciju\n"; cout<<" c) Prikazi putnike\n"; cout<<" d) Promjena podataka\n"; cout<<" e) Dodavanje aviokompanija\n"; cout<<" f) Dodavanje destinacija\n"; cout<<" g) Dodavanje letova\n"; cout<<" h) Izlaz\n"; cout<<"IZBOR: "; while(1){ izbor=(char)getch(); if(izbor=='a' || izbor=='b' || izbor=='c' || izbor=='d' || izbor=='e' || izbor=='f' || izbor=='g' || izbor=='h') break; } cout<<crt; switch(izbor){ case 'a': { int sifra_leta=rezervacija(); if(sifra_leta!=-1){ if(sviPutnici[trenutniPutnik].unos(sifra_leta)==1){ trenutniPutnik++; } } } break; case 'b': otkazi(); break; case 'c': prikaziPutnike(); break; case 'd': promjena(); break; case 'e': novaAvioKompanija(); break; case 'f': novaDestinacija(); break; case 'g': noviLet(); break; case 'h': break; } } } [Ovu poruku je menjao AcidAngel dana 09.05.2007. u 11:26 GMT+1] [Ovu poruku je menjao AcidAngel dana 11.05.2007. u 11:05 GMT+1] |