Sothian

MPK

Jun 17th, 2018
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 9.89 KB | None | 0 0
  1. /////////////////////////////////////// BILETOMAT //////////////////////////////////////////////////////
  2.  
  3. //////////////////////////////////////// MAIN ///////////////////////////////////////////////
  4.  
  5. public class Main {
  6.  
  7.     public static void main(String[] args) {
  8.         // TODO Auto-generated method stub
  9.        
  10.         String rodzaje[] ={"Jednoprzejazdowy", "20minutowy", "40miutowy", "60minutowy"};
  11.         double ceny[] = {1.80, 1.40, 2.50, 4.00};
  12.        
  13.         /*
  14.          * (Zapisy te widoczne sa rowniez w klasach ktorych dotycza)
  15.          * W projekcie wystepuja nastepujace przypadki kompozycji i dziedziczeni:
  16.          * W klasie Biletomat wystepuje kompozycja : utworzono obiekt klasy Bilet oraz obiekt klasy Transakcja w klasie Biletomat
  17.          * W klasach: USA, EUR, PLN wystepuje dziedziczenie: wszystkie dziedzicza po plasie pieniadz
  18.          */
  19.        
  20.        
  21.         Biletomat MPK = new Biletomat(rodzaje, ceny, "Krakรณw", 13);
  22.        
  23.         MPK.pokazDostepneBilety();
  24.         System.out.println(" ");
  25.        
  26.        
  27.         MPK.sprzedajBilet("60minutowy", 5, new EUR(4));         // Dla sprawdzenia czy wykrywa brak pieniedzy
  28.         MPK.sprzedajBilet("Inny", 1, new PLN(4));               // Dla sprawdzenia czy niewlasciwy rodzaj
  29.         MPK.sprzedajBilet("20minutowy", 15, new USD(10));      
  30.         MPK.sprzedajBilet("40miutowy", 4, new EUR(20));
  31.         MPK.sprzedajBilet("Jednoprzejazdowy", 2, new EUR(3));
  32.         MPK.sprzedajBilet("60minutowy", 4, new PLN(11));        // Dla sprawdzenia czy wykrywa brak pieniedzy
  33.         MPK.sprzedajBilet("20minutowy", 4, new PLN(50));
  34.         MPK.sprzedajBilet("20minutowy", 4, new USD(210));
  35.        
  36.         System.out.println(" ");
  37.         System.out.println(MPK);
  38.        
  39.     }
  40.  
  41. }
  42.  
  43. //////////////////////////////////////// PIENIADZ ///////////////////////////////////////////////
  44.  
  45. public class Pieniadz {
  46.     private double kwota;
  47.    
  48.     /**
  49.      * Konstruktor pieniadza
  50.      * @param kwota kwota
  51.      */
  52.     public Pieniadz(double kwota){
  53.         this.kwota = kwota;
  54.     }
  55.  
  56.     /**
  57.      * Pozyskuje kwote
  58.      * @return kwota
  59.      */
  60.     public double getKwota() {
  61.         return kwota;
  62.     }
  63.  
  64.     /**
  65.      * Ustawia kwote
  66.      * @param kwota kwota
  67.      */
  68.     public void setKwota(double kwota) {
  69.         this.kwota = kwota;
  70.     }
  71. }
  72.  
  73. //////////////////////////////////////// TRANSAKCJA ///////////////////////////////////////////////
  74.  
  75. import java.time.LocalDate;
  76.  
  77. public class Transakcja {
  78.    
  79.     private LocalDate data;
  80.     private String rodzaj;
  81.     private double dochod;
  82.     private int ilosc;
  83.    
  84.     /**
  85.      * Konstruktor klasy transakcja
  86.      * @param rodzaj rodzaj transakcji
  87.      * @param ilosc ilosc biletow do kupienia
  88.      */
  89.     public Transakcja(String rodzaj, int ilosc)
  90.     {
  91.         this.rodzaj = rodzaj;
  92.         this.ilosc = ilosc;
  93.         data = LocalDate.now();
  94.     }
  95.    
  96.     /**
  97.      * toString
  98.      */
  99.     public String toString() {
  100.         return "Transakcja: rodzaj - " + rodzaj + ", ilosc - " + ilosc + ", dochod - " + dochod;
  101.     }
  102.  
  103.     /**
  104.      * Pozyskuje dochod transakcji
  105.      * @return dochod
  106.      */
  107.     public double getDochod() {
  108.         return dochod;
  109.     }
  110.  
  111.     /**
  112.      * Ustawia dochod z transakcji
  113.      * @param dochod dochod
  114.      */
  115.     public void setDochod(double dochod) {
  116.         this.dochod = dochod;
  117.     }
  118.  
  119.     /**
  120.      * Pozyskuje date
  121.      * @return data
  122.      */
  123.     public LocalDate getData() {
  124.         return data;
  125.     }
  126.  
  127.     /**
  128.      * Ustawia date
  129.      * @param data data
  130.      */
  131.     public void setData(LocalDate data) {
  132.         this.data = data;
  133.     }
  134.  
  135.     /**
  136.      * Pozyskuje rodzaj
  137.      * @return rodzaj
  138.      */
  139.     public String getRodzaj() {
  140.         return rodzaj;
  141.     }
  142.  
  143.     /**
  144.      * Ustawia rodzaj
  145.      * @param rodzaj rodzaj
  146.      */
  147.     public void setRodzaj(String rodzaj) {
  148.         this.rodzaj = rodzaj;
  149.     }
  150.  
  151.     /**
  152.      * Pozyskuje ilosc
  153.      * @return ilosc
  154.      */
  155.     public int getIlosc() {
  156.         return ilosc;
  157.     }
  158.  
  159.     /**
  160.      * Ustawia ilosc
  161.      * @param ilosc ilosc
  162.      */
  163.     public void setIlosc(int ilosc) {
  164.         this.ilosc = ilosc;
  165.     }
  166.    
  167. }
  168. //////////////////////////////////////// BILETOMAT ///////////////////////////////////////////////
  169.  
  170. public class Biletomat
  171. {
  172.     private String lokalizacja;
  173.     private double saldo = 100.00;
  174.     private Transakcja[] zapisTransakcji;               // Przypadek kompozycji - utworzono obiekt klasy Transakcja w klasie Biletomat
  175.     private Bilet[] rodzajeBiletow;                     // Przypadek kompozycji - utworzono obiekt klasy Bilet w klasie Biletomat
  176.     private int index = -1;
  177.    
  178.     /**
  179.      * Konstruktor klasy Biletomat
  180.      * @param rodzaje rodzaje
  181.      * @param ceny ceny
  182.      * @param lokalizacja lokalizacja
  183.      * @param maksymalnaLiczbaTransakcji maksymalnaLiczbaTransakcji
  184.      */
  185.     public Biletomat(String rodzaje[], double ceny[], String lokalizacja, int maksymalnaLiczbaTransakcji)
  186.     {
  187.         this.lokalizacja = lokalizacja;
  188.         this.zapisTransakcji = new Transakcja[maksymalnaLiczbaTransakcji];
  189.         this.rodzajeBiletow = new Bilet[rodzaje.length];
  190.        
  191.         for(int i=0;i<rodzaje.length;i++)
  192.         {
  193.             rodzajeBiletow[i] = new Bilet(rodzaje[i], ceny[i]);
  194.         }
  195.     }
  196.    
  197.     /**
  198.      * toString
  199.      */
  200.     public String toString()
  201.     {
  202.         String wynik="";
  203.         System.out.println("Wszystkie transakcje: ");
  204.        
  205.         for(int i=0;i<=index;i++) {
  206.             wynik += zapisTransakcji[i]+"  \n";
  207.         }
  208.  
  209.         return wynik;
  210.     }
  211.    
  212.     /**
  213.      * Metoda wyswietlajaca bilety
  214.      */
  215.     public void pokazDostepneBilety()
  216.     {
  217.         System.out.println("Dostepne bilety: ");
  218.        
  219.         for(int i =0; i<rodzajeBiletow.length;i++)
  220.         {
  221.             System.out.println(rodzajeBiletow[i]);
  222.         }
  223.     }
  224.    
  225.     /**
  226.      * Dodaje transakcje
  227.      * @param transakcja transakcja
  228.      * @param dochod dochod
  229.      */
  230.     private void dodajTransakcje(Transakcja transakcja, double dochod)
  231.     {
  232.         if(index + 1 < zapisTransakcji.length)
  233.         {
  234.             zapisTransakcji[++index] = transakcja;
  235.             zapisTransakcji[index].setDochod(dochod);
  236.         }
  237.     }
  238.    
  239.     /**
  240.      * Wsywietla transakcje
  241.      */
  242.     public void wyswietlTransakcje()
  243.     {
  244.         System.out.println("Wszystkie transakcje:");
  245.        
  246.         for(int i=0;i<=index;i++)
  247.         {
  248.             System.out.println(zapisTransakcji[index]);
  249.         }
  250.     }
  251.    
  252.     /**
  253.      * Wyswietla transakcje z danego dnia
  254.      * @param data
  255.      */
  256.     public void wydrukujTransakcje(String data)
  257.     {
  258.         System.out.println("Transakcje na dzien "+ data);
  259.        
  260.         for(int i=0;i<=index;i++)
  261.         {
  262.             if(zapisTransakcji[index].getData().equals(data))
  263.             {
  264.                 System.out.println(zapisTransakcji[index]);
  265.             }
  266.         }
  267.        
  268.         System.out.println(" ");
  269.     }
  270.    
  271.     /**
  272.      * Funkcja sprzedajaca bilety
  273.      * @param rodzaj rodzaj
  274.      * @param ilosc ilsoc
  275.      * @param kwota wybrany typ platnosci oraz ilosc, np USD(10)
  276.      */
  277.     public void sprzedajBilet(String rodzaj, int ilosc, Pieniadz kwota)
  278.     {
  279.         boolean czyTakiIstnieje = false;
  280.        
  281.         for(int i=0;i<rodzajeBiletow.length;i++)
  282.         {
  283.             if(rodzajeBiletow[i].getRodzaj() == rodzaj)
  284.             {
  285.                 czyTakiIstnieje = true;
  286.                
  287.                 if(kwota.getKwota()==ilosc*rodzajeBiletow[i].getCena())
  288.                 {
  289.                     saldo += ilosc*rodzajeBiletow[i].getCena();
  290.                     System.out.println("Zaplacono rรณwnฤ… kwotฤ…, bilet zostal sprzedany");
  291.                     dodajTransakcje(new Transakcja(rodzaj,ilosc),ilosc*rodzajeBiletow[i].getCena() );
  292.                 }
  293.                 else if(kwota.getKwota()>ilosc*rodzajeBiletow[i].getCena())
  294.                 {
  295.                     saldo+=ilosc*rodzajeBiletow[i].getCena();
  296.                     System.out.println("Sprzedano bilet, wydaje reszte " + (kwota.getKwota() - ilosc*rodzajeBiletow[i].getCena()));
  297.                     dodajTransakcje(new Transakcja(rodzaj, ilosc), ilosc*rodzajeBiletow[i].getCena() );
  298.                 }
  299.                 else {
  300.                     System.out.println("Nie mozna sprzedac biletu, za malo pieniedzy");
  301.                     break;
  302.                 }
  303.             }
  304.            
  305.             if(czyTakiIstnieje == true)
  306.             {
  307.                 break;
  308.             }
  309.         }
  310.         if(czyTakiIstnieje == false)
  311.         {
  312.             System.out.println("Brak tego rodzaju biletu");
  313.         }
  314.     }
  315.  
  316. }
  317. //////////////////////////////////////// BILET ///////////////////////////////////////////////
  318.  
  319. public class Bilet {
  320.     private String rodzaj;
  321.     private double cena;
  322.    
  323.     /**
  324.      * Konstruktor Biletu
  325.      * @param rodzaj rodzaj biletu
  326.      * @param cena cena biletu
  327.      */
  328.     public Bilet(String rodzaj, double cena) {
  329.         this.cena = cena;
  330.         this.rodzaj = rodzaj;
  331.     }
  332.    
  333.     /**
  334.      * toString
  335.      */
  336.     public String toString() {
  337.         return "Bilet "+ rodzaj + " kosztuje " + cena + " zlotych";
  338.     }
  339.  
  340.     /**
  341.      * Pozyskuje rodzaj biletu
  342.      * @return rodzaj biletu
  343.      */
  344.     public String getRodzaj() {
  345.         return rodzaj;
  346.     }
  347.  
  348.     /**
  349.      * Ustawia rodzaj biletu
  350.      * @param rodzaj rodzaj biletu
  351.      */
  352.     public void setRodzaj(String rodzaj) {
  353.         this.rodzaj = rodzaj;
  354.     }
  355.  
  356.     /**
  357.      * Pozyskuje cene biletu
  358.      * @return cena biletu
  359.      */
  360.     public double getCena() {
  361.         return cena;
  362.     }
  363.  
  364.     /**
  365.      * Ustawia cene biletu
  366.      * @param cena cena biletu
  367.      */
  368.     public void setCena(double cena) {
  369.         this.cena = cena;
  370.     }
  371.  
  372. }
  373.  
  374. //////////////////////////////////////// PLN ///////////////////////////////////////////////
  375. // PLN dziedziczy z klasy Pieniadz, rozszerzajac go o typ jakim jest
  376. public class PLN extends Pieniadz{     
  377.     private String typ;
  378.    
  379.     /**
  380.      * Konstruktor PLN
  381.      * @param rodzaj nominal
  382.      */
  383.     public PLN(int rodzaj) {
  384.         super(rodzaj);
  385.         this.typ = "PLN";
  386.     }
  387. }
  388.  
  389. //////////////////////////////////////// USD ///////////////////////////////////////////////
  390. // USD dziedziczy z klasy Pieniadz, rozszerzajac go o typ jakim jest
  391. public class USD extends Pieniadz{     
  392.     private String typ;
  393.    
  394.     /**
  395.      * Konstruktor USD
  396.      * @param rodzaj nominal
  397.      */
  398.     public USD(int rodzaj) {
  399.         super(rodzaj*3.5);                  // Przyjmuje ze 1USD = 3.5PLN
  400.         this.typ = "USD";
  401.     }
  402. }
  403.  
  404. //////////////////////////////////////// EUR ///////////////////////////////////////////////
  405. // EUR dziedziczy z klasy Pieniadz, rozszerzajac go o typ jakim jest
  406. public class EUR extends Pieniadz{     
  407.     private String typ;
  408.    
  409.     /**
  410.      * Konstruktor EUR
  411.      * @param rodzaj nominal
  412.      */
  413.     public EUR(int rodzaj) {
  414.         super(rodzaj*4);                // Przyjmuje ze 1EUR = 4PLN
  415.         this.typ = "EUR";
  416.     }
  417. }
Add Comment
Please, Sign In to add comment