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;
}
}
}
#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]
quod me ordinit me destruit