Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #pragma once
- #include <iostream>
- #include <fstream>
- #include <string>
- #include <iomanip>
- #include <stdio.h>
- using namespace std;
- class lotnisko {
- public:
- static int ilosc_lotnisk;
- string nazwa;
- string nazwa_kraju;
- lotnisko * next;
- lotnisko():next(NULL){}
- lotnisko(int x) {
- next = NULL;
- ++ilosc_lotnisk;
- cout << "Podaj nazwe kraju w ktorym znajduje sie lotnisko" << endl;
- cin >> nazwa_kraju;
- cout << "Podaj nazwe lotniska" << endl;
- cin >> nazwa;
- }
- void wypisz(lotnisko *head_lotnisko) {
- lotnisko *wypisz;
- int j = 1;
- for (wypisz = head_lotnisko; wypisz != NULL; wypisz = wypisz->next, j++)
- {
- cout << j << "." << wypisz->nazwa_kraju << ", " << wypisz->nazwa << endl;
- }
- }
- };
- class lot{
- protected:
- double godzina_odlotu;
- double minuta_odlotu;
- double czas_trwania_lotu_godzina;
- double czas_trwania_lotu_minuta;
- public:
- lotnisko poczatkowe;
- lotnisko docelowe;
- static int ilosc_lotow;
- lot * next;
- string get_poczatkowe_kraj() {
- return poczatkowe.nazwa_kraju;
- }
- string get_poczatkowe_nazwa_lotniska() {
- return poczatkowe.nazwa;
- }
- string get_docelowe_kraj() {
- return docelowe.nazwa_kraju;
- }
- string get_docelowe_nazwa_lotniska() {
- return docelowe.nazwa_kraju;
- }
- double get_godzina_odlotu() {
- return godzina_odlotu;
- }
- double get_minuta_odlotu() {
- return minuta_odlotu;
- }
- double get_czas_godzina_lotu() {
- return czas_trwania_lotu_godzina;
- }
- double get_czas_minuta_lotu() {
- return minuta_odlotu;
- }
- void set_odlot_godzina(double godzina_odlotu_test) {
- while (godzina_odlotu_test < 0 || godzina_odlotu_test>23) {
- cout << "Nieprawidlowa wartosc" << endl;
- cin.clear();
- cin.ignore(9999, '\n');
- cin >> godzina_odlotu_test;
- }
- godzina_odlotu = godzina_odlotu_test;
- }
- void set_odlot_minuta(double minuta_odlotu_test) {
- while (minuta_odlotu_test < 0 || minuta_odlotu_test>59) {
- cout << "Nieprawidlowa wartosc\n" << endl;
- cin.clear();
- cin.ignore(9999, '\n');
- cin >> minuta_odlotu_test;
- }
- minuta_odlotu = minuta_odlotu_test;
- }
- void set_czas_godzina(double czas_trwania_lotu_godzina_test) {
- while (czas_trwania_lotu_godzina_test < 0) {
- cout << "Nieprawidlowa wartosc\n" << endl;
- cin.clear();
- cin.ignore(9999, '\n');
- cin >> czas_trwania_lotu_godzina_test;
- }
- czas_trwania_lotu_godzina = czas_trwania_lotu_godzina_test;
- }
- void set_czas_minuta(double czas_trwania_lotu_minuta_test) {
- while (czas_trwania_lotu_minuta_test < 0 || czas_trwania_lotu_minuta_test>59) {
- cout << "Nieprawidlowa wartosc\n" << endl;
- cin.clear();
- cin.ignore(9999, '\n');
- cin >> czas_trwania_lotu_minuta_test;
- }
- czas_trwania_lotu_minuta = czas_trwania_lotu_minuta_test;
- }
- void zapisz(lot *head) {
- ofstream plik("baza.txt", std::ios::app | std::ios::ate);
- plik.seekp(0, std::ios_base::end);
- for (; head != NULL; head = head->next) {
- plik << "Wylot z: " << get_poczatkowe_kraj() << "," << get_poczatkowe_nazwa_lotniska() << "\nPrzylot do: " << get_docelowe_kraj() << "," << get_docelowe_nazwa_lotniska() << "\nGodzina odlotu: " << get_godzina_odlotu() << ":" << get_minuta_odlotu() << "\nDlugosc lotu: " << get_czas_godzina_lotu() << ":" << get_czas_minuta_lotu() << "\n" << endl;
- }
- plik.close();
- }
- void wypisz(lot *head_lot) {
- lot *wypisz;
- int j = 1;
- for (wypisz = head_lot; wypisz != NULL; wypisz = wypisz->next, j++)
- {
- cout << j << "." << "Wylot z: " << wypisz->get_poczatkowe_kraj() << "," << wypisz->get_poczatkowe_nazwa_lotniska() << "\nPrzylot do: " << wypisz->get_docelowe_kraj() << "," << wypisz->get_docelowe_nazwa_lotniska() << "\nGodzina odlotu: " << wypisz->get_godzina_odlotu() << ":" << wypisz->get_minuta_odlotu() << "\nDlugosc lotu: " << wypisz->get_czas_godzina_lotu() << ":" << wypisz->get_czas_minuta_lotu() << endl << endl;
- }
- }
- lot():next(NULL) {
- {
- double godzina_odlotu_test, minuta_odlotu_test, czas_trwania_lotu_godzina_test, czas_trwania_lotu_minuta_test;
- ++ilosc_lotow;
- //// TO NIZEJ KONSTRUKTOREM KOPIUJACYM
- //cout << "Podaj nazwe kraju z jakiego samolot odlatuje" << endl;
- //cin >> poczatkowe.nazwa_kraju;
- //cout << "Podaj nazwe lotniska poczatkowego" << endl;
- //cin >> poczatkowe.nazwa; //najpierw pyta o nazwe kraju a pozniej wypisuje wszystkie lotniska z danego kraju
- //cout << "Podaj nazwe kraju docelowego" << endl;
- //cin >> docelowe.nazwa_kraju;
- //cout << "Podaj nazwe lotniska docelowego" << endl;
- //cin >> docelowe.nazwa;
- //najpierw wpisujemy kraj a pozniej wypisuje wszystkie dostepne tam lotniska, pozniej sprawdza czy wszystko
- //sie zgadza (string=string) i dopiero zapisujemy dalej
- cout << "Podaj godzine odlotu" << endl;
- cin >> godzina_odlotu_test;
- set_odlot_godzina(godzina_odlotu_test);
- cout << "Podaj minute odlotu" << endl;
- cin >> minuta_odlotu_test;
- set_odlot_minuta(minuta_odlotu_test);
- cout << "Podaj godziny trwania lotu" << endl;
- cin >> czas_trwania_lotu_godzina_test;
- set_czas_godzina(czas_trwania_lotu_godzina_test);
- cout << "Podaj minuty trwania lotu" << endl;
- cin >> czas_trwania_lotu_minuta_test;
- set_czas_minuta(czas_trwania_lotu_minuta_test);
- };
- }
- ~lot() {};
- };
- class lot_osobowy : public lot {
- protected:
- double cena, max_waga;
- public:
- void set_cena() {
- int cena_test;
- cout << "Podaj cene za bilet" << endl;
- cin >> cena_test;
- while (cena_test < 0) {
- cout << "Nieprawidlowa wartosc\n" << endl;
- cin.clear();
- cin.ignore(9999, '\n');
- cin >> cena_test;
- }
- cena = cena_test;
- }
- void set_max_waga() {
- int max_waga_test;
- cout << "Podaj maksymalna wage bagazu" << endl;
- cin >> max_waga_test;
- while (max_waga_test < 0) {
- cout << "Nieprawidlowa wartosc\n" << endl;
- cin.clear();
- cin.ignore(9999, '\n');
- cin >> max_waga_test;
- }
- max_waga = max_waga_test;
- }
- lot_osobowy() {
- set_cena();
- set_max_waga();
- };
- };
- class lot_towarowy : public lot {
- protected:
- double oplata_stala, oplata_za_kg;
- public:
- void set_oplata_stala() {
- int oplata_stala_test;
- cout << "Podaj oplate stala: \n" << endl;
- cin >> oplata_stala_test;
- while (oplata_stala_test < 0) {
- cout << "Nieprawidlowa wartosc\n" << endl;
- cin.clear();
- cin.ignore(9999, '\n');
- cin >> oplata_stala_test;
- }
- oplata_stala = oplata_stala_test;
- }
- void set_oplata_za_kg() {
- int oplata_za_kg_test;
- cout << "Podaj oplate za kg" << endl;
- cin >> oplata_za_kg_test;
- while (oplata_za_kg_test < 0) {
- cout << "Nieprawidlowa wartosc\n" << endl;
- cin.clear();
- cin.ignore(9999, '\n');
- cin >> oplata_za_kg_test;
- }
- oplata_za_kg = oplata_za_kg_test;
- }
- lot_towarowy() {
- set_oplata_stala();
- set_oplata_za_kg();
- };
- };
- int lot::ilosc_lotow = 0;
- int lotnisko::ilosc_lotnisk = 0;
- int main() {
- lot *wsk_lot = NULL, *head_lot = NULL;
- lotnisko *wsk_lotnisko = NULL, *head_lotnisko = NULL;
- FILE * baza;
- baza = fopen("baza.txt", "r");
- if (baza == NULL) {
- printf("plik nie istnieje.\n");
- }
- else {
- printf("Prawidlowo otworzono plik.\n");
- }
- while (1) {
- int wybor = 0;
- int i;
- printf("Co chcesz zrobic: \n");
- printf("1. wypisanie wszystkich lotnisk posortowanych wg. krajow\n");
- printf("2. wypisanie calej bazy posortowanej wg lotnisk poczatkowych\n");
- printf("3. wypisanie wszystkich lotow z podanego przez uzytkownika lotniska poczatkowego posortowanych wg godzin odlotu\n");
- printf("4. wypisanie wszystkich lotow do podanego przez uztkownika lotniska koncowego posortowanych wg godzin przylotu\n");
- printf("5. dodanie / usuniecie lotniska\n");
- printf("6. dodanie / usuniecie lotu\n");
- printf("7. wypisanie polaczenia z minimalna liczba przesiadek pomiedzy dwoma lotniskami\n");
- printf("8. koniec programu\n");
- cin >> wybor;
- switch (wybor)
- {
- case 1:
- break;
- case 2:
- //jakiś kod
- break;
- case 3:
- //jakiś kod
- break;
- case 4:
- //jakiś kod
- break;
- case 5:
- cout << "Co chcesz zrobic?" << endl;
- cout << "1.Dodaj lotnisko" << endl;
- cout << "2.Usun lotnisko" << endl;
- cin >> i;
- while (!cin || i<0 || i>2) {
- cout << "Nieprawidlowa wartosc" << endl;
- cout << "Co chcesz zrobic?" << endl;
- cout << "1.Dodaj lotnisko" << endl;
- cout << "2.Usun lotnisko" << endl;
- cin.clear();
- cin.ignore(9999, '\n');
- cin >> i;
- }
- if (i % 2 == 1) {
- if (head_lotnisko == NULL) {
- head_lotnisko = wsk_lotnisko = new lotnisko(1);
- break;
- }
- else {
- wsk_lotnisko->next = new lotnisko(1);
- wsk_lotnisko = wsk_lotnisko->next;
- }
- break;
- }
- else {
- int k,l=1;
- cout << "Ktore lotnisko chcesz usunac?" << endl;
- wsk_lotnisko->wypisz(head_lotnisko);
- cin >> k;
- while (!cin || k<0 || k>lotnisko::ilosc_lotnisk) {
- cout << "W bazie nie istnieje taka ilosc lotnisk" << endl;
- cout << "Podaj ktore lotnisko chcesz usunac?" << endl;
- wsk_lotnisko->wypisz(head_lotnisko);
- cin.clear();
- cin.ignore(9999, '\n');
- cin >> k;
- }
- lotnisko *usuwanie;
- for (usuwanie = head_lotnisko;usuwanie!=NULL; l++,usuwanie = usuwanie->next) {
- if (l == 1) {
- head_lotnisko = head_lotnisko->next;
- delete usuwanie;
- }
- if (l == k && l!=1) {
- //if (wsk->nast != NULL) { // znaleziono!
- // usuw = wsk->nast;
- // wsk->nast = wsk->nast->nast;
- // free(usuw);
- //};
- }
- }
- //tu usuwanie lotniska
- }
- case 6:
- /* if (head_lotnisko == NULL) {
- cout << "nie mozna wprowadzic lotu poniewaz baza lotnisk jest pusta" << endl;
- break;
- }*/
- cout << "Co chcesz zrobic?" << endl;
- cout << "1. Dodac lot" << endl;
- cout << "2. Usunac lot" << endl;
- cin >> i;
- while (!cin || i<0 || i>2) {
- cout << "Nieprawidlowa wartosc\n" << endl;
- printf("Jaki typ lotu chcesz dodac?\n");
- printf("1. osobowy\n");
- printf("2. towarowy\n");
- cin.clear();
- cin.ignore(9999, '\n');
- cin >> i;
- }
- if (i % 2 == 1) {
- printf("Jaki typ lotu chcesz dodac?\n");
- printf("1. osobowy\n");
- printf("2. towarowy\n");
- cin >> i;
- while (!cin || i < 0 || i>2) {
- cout << "Nieprawidlowa wartosc\n" << endl;
- printf("Jaki typ lotu chcesz dodac?\n");
- printf("1. osobowy\n");
- printf("2. towarowy\n");
- cin.clear();
- cin.ignore(9999, '\n');
- cin >> i;
- }
- if (i % 2 == 1) {
- if (head_lot == NULL) {
- lotnisko *wybrane_poczatkowe, *wybrane_docelowe;
- cout << "Lista dostepnych lotnisk" << endl;
- wsk_lotnisko->wypisz(head_lotnisko);
- head_lot = wsk_lot = new lot_osobowy();
- wsk_lot->poczatkowe.nazwa = wybrane_poczatkowe->nazwa;
- wsk_lot->poczatkowe.nazwa_kraju = wybrane_poczatkowe->nazwa_kraju;
- wsk_lot->docelowe.nazwa = wybrane_docelowe->nazwa;
- wsk_lot->poczatkowe.nazwa_kraju = wybrane_docelowe->nazwa_kraju;
- break;
- }
- else {
- cout << "Lista dostepnych lotnisk" << endl;
- wsk_lotnisko->wypisz(head_lotnisko);
- wsk_lot->next = new lot_osobowy();
- wsk_lot = wsk_lot->next;
- break;
- }
- break;
- }
- else {
- if (head_lot == NULL) {
- head_lot = wsk_lot = new lot_towarowy();
- break;
- }
- else {
- wsk_lot->next = new lot_towarowy();
- wsk_lot = wsk_lot->next;
- break;
- }
- break;
- }
- }
- else {
- int k, l = 1;
- cout << "Ktory lot chcesz usunac?" << endl;
- wsk_lot->wypisz(head_lot);
- cin >> k;
- while (!cin || k<0 || k>lot::ilosc_lotow) {
- cout << "W bazie nie istnieje taka ilosc lotow" << endl;
- cout << "Podaj ktory lot chcesz usunac?" << endl;
- wsk_lot->wypisz(head_lot);
- cin.clear();
- cin.ignore(9999, '\n');
- cin >> k;
- }
- //TU USUWANKO ELEMENTU
- }
- break;
- case 7:
- //jakiś kod
- break;
- case 8:
- head_lot->zapisz(head_lot);
- exit(0);
- break;
- default:
- cout << "nieprawidlowa wartosc" << endl;
- cin.clear();
- cin.ignore(9999, '\n');
- break;
- }
- }
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement