Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

[Zadatak] Struktura Aviokompanija

[es] :: C/C++ programiranje :: C/C++ za početnike :: [Zadatak] Struktura Aviokompanija

[ Pregleda: 2237 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

AcidAngel
Mostar

Član broj: 94251
Poruke: 11
*.ali.dlp500.bih.net.ba.



Profil

icon [Zadatak] Struktura Aviokompanija08.05.2007. u 17:05 - pre 206 meseci
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]
quod me ordinit me destruit
 
Odgovor na temu

karas

Član broj: 5574
Poruke: 482
*.routotelecom.com.



+1 Profil

icon Re: [Zadatak] Struktura Aviokompanija09.05.2007. u 13:14 - pre 206 meseci
let::provjera() vraća -1, pogledaj petlju u njoj radi li kako treba.
Uzgred, umesto zaglavlja <iostream.h>, <string.h> koristi <iostream>, <string>, umesto <stdlib.h> koristi <cstdlib> i koristi std namespace. main() mora da vraća int, ne sme void.
Rekao bih da koristiš neki stari Borlandov kompajler, uzmi neki noviji u skladu sa standardom. Nema potrebe za <conio.h> i getch().
Sveti Avgustin: "Dobar hrišćanin treba da se kloni matematičara i svih onih koji daju lažna proročanstva. Postoji opasnost da su matematičari već sklopili pakt sa Đavolom, da pomrače čovekov um i da ga okuju okovima pakla."
 
Odgovor na temu

AcidAngel
Mostar

Član broj: 94251
Poruke: 11
*.ali.dlp54.bih.net.ba.



Profil

icon Re: [Zadatak] Struktura Aviokompanija09.05.2007. u 14:26 - pre 206 meseci
Trenutno sam u fazi preseljenja tako da nemam svoj racunar nego koristim posudjen laptop koji ima tu stariju verziju borlanda tako da ce sve .h morati ostati za sada. Ukoliko dobijem racunar na vrijeme svakako sam ga planirala 'preraditi',a ako ne poslat cu source kod.
quod me ordinit me destruit
 
Odgovor na temu

[es] :: C/C++ programiranje :: C/C++ za početnike :: [Zadatak] Struktura Aviokompanija

[ Pregleda: 2237 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.