Facebook
From Mucha, 8 Years ago, written in Java.
Embed
Download Paste or View Raw
Hits: 283
  1. package pl.edu.agh;
  2.  
  3. import java.util.Scanner;
  4.  
  5. public class Automat implements ElektronicznyKasjer, MagazynProduktow, InputUzytkownika, OutputUzytkownika {
  6.        
  7.         Moneta gr10=new Moneta(0,10);
  8.         Moneta gr20=new Moneta(0,20);
  9.         Moneta gr50=new Moneta(0,50);
  10.         Moneta zloty=new Moneta(0,100);
  11.         Moneta zloty2=new Moneta(0,200);
  12.         Moneta zloty5=new Moneta(0,500);
  13.         Moneta[] kredyt= {gr10,gr20,gr50,zloty,zloty2,zloty5};
  14.        
  15.         int liczKredyt() {
  16.                 int tmp=0;
  17.                 for (int i=0;i<6;i++)
  18.                         tmp+=kredyt[i].wartoscMonety*kredyt[i].iloscMonet;
  19.                 return tmp;
  20.         }
  21.        
  22.         Produkt[] tablica;
  23.         Moneta[] skarbiec;
  24.        
  25.         Automat (Produkt[] _tablica, Moneta[] _skarbiec) {
  26.                 tablica=_tablica;
  27.                 skarbiec=_skarbiec;
  28.         }
  29.        
  30.         Scanner odczyt = new Scanner (System.in);
  31.        
  32.         public void dodajProdukt() {}
  33.        
  34.         public void wyswietlProdukty() {
  35.                 System.out.println("Dostepne napoje : n");
  36.                 int i=0;
  37.                 while (i<tablica.length) {
  38.                         System.out.println(tablica[i].nazwa + " | Cena : " + tablica[i].cena + "gr "
  39.                         + " | Ilość : " + tablica[i].ilosc + " | Wybierz :  " + ++i +" n");
  40.                 }
  41.  
  42.         }
  43.        
  44.         public void wyswietlKredyt () {
  45.                 System.out.println("Kredyt = " + liczKredyt());
  46.         }
  47.        
  48.         public void wrzucMonete () {
  49.                 System.out.println("Wrzuc pieniadze : ");
  50.                 int ilosc=odczyt.nextInt();
  51.                 przyjmijPieniadze(ilosc);
  52.         }
  53.        
  54.         public void przyjmijPieniadze (int ilosc) {
  55.                
  56.                 switch (ilosc) {
  57.                 case 10:
  58.                         kredyt[0].iloscMonet++; break;
  59.                 case 20:
  60.                         kredyt[1].iloscMonet++; break;
  61.                 case 50:
  62.                         kredyt[2].iloscMonet++; break;
  63.                 case 100:
  64.                         kredyt[3].iloscMonet++; break;
  65.                 case 200:
  66.                         kredyt[4].iloscMonet++; break;
  67.                 case 500:
  68.                         kredyt[5].iloscMonet++; break;
  69.                 default :
  70.                         System.out.println("Niezgodna waluta lub wartosc monety");
  71.                         zwrocPieniadze();
  72.                 }
  73.                
  74.         }      
  75.        
  76.         public void wprowadzNrProduktu () {
  77.                 System.out.println("Proszę wybrac napój : ");
  78.                 int nrNapoju = odczyt.nextInt();
  79.                 wydajProdukt(nrNapoju);
  80.         }
  81.        
  82.         public boolean sprawdzProdukt (int nrNapoju) {
  83.                 if (nrNapoju < 0 || tablica.length < nrNapoju )
  84.                         return false;
  85.                 else if (tablica[nrNapoju-1].ilosc==0)
  86.                         return false;
  87.                 else if (tablica[nrNapoju-1].cena > liczKredyt() )
  88.                         return false;
  89.                 else
  90.                         return true;
  91.                
  92.         }
  93.        
  94.         public void wydajProdukt (int nrNapoju) {
  95.                 if (sprawdzProdukt(nrNapoju) ){
  96.                         System.out.println("Wydawanie napoju...");
  97.                         int reszta=liczKredyt()-tablica[nrNapoju-1].cena;
  98.                         if (reszta!=0)
  99.                                 zwrocReszte(reszta);
  100.                         wplacDoSkarbca();
  101.                         tablica[nrNapoju-1].ilosc--;
  102.                 }
  103.                 else {
  104.                         System.out.println("Nie mozna wydac napoju");
  105.                         zwrocPieniadze();
  106.                 }
  107.         }
  108.        
  109.        
  110.         public void zwrocReszte (int reszta) {
  111.                 if (sprawdzReszte(reszta)) {
  112.                         System.out.println("Zwracam reszte : " + reszta);              
  113.                         for (int i=0;i<6;i++)
  114.                                 kredyt[i].iloscMonet=0;        
  115.                         System.out.println("Kredyt : " + liczKredyt());
  116.                 }
  117.                 else {
  118.                         zwrocPieniadze();
  119.                 }
  120.         }
  121.        
  122.         public boolean sprawdzReszte (int reszta) {
  123.                 int zwracana=0;
  124.                 int tmp=reszta;
  125.                 int i=5;
  126.                 while (i>-1 && tmp!=0) {
  127.                         if ((double)tmp/skarbiec[i].wartoscMonety < 1 || skarbiec[i].iloscMonet==0
  128.                                         || (double)tmp/kredyt[i].wartoscMonety < 1) {
  129.                                 i--;
  130.                         }
  131.                         else{
  132.                                 if((double)tmp/skarbiec[i].wartoscMonety >= 1 && skarbiec[i].iloscMonet>0) {
  133.                                         zwracana+=skarbiec[i].wartoscMonety;
  134.                                         tmp-=skarbiec[i].wartoscMonety;
  135.                                 }
  136.                                 else {
  137.                                         zwracana+=kredyt[i].wartoscMonety;
  138.                                         tmp-=kredyt[i].wartoscMonety;
  139.                                 }
  140.                         }
  141.                 }
  142.                 tmp=reszta;
  143.                 i=5;
  144.                 if (zwracana==reszta) {
  145.                         while (i>-1) {
  146.                                 if ((double)tmp/skarbiec[i].wartoscMonety < 1 || skarbiec[i].iloscMonet==0
  147.                                                 || (double)tmp/kredyt[i].wartoscMonety < 1) {
  148.                                         i--;
  149.                                 }
  150.                                 else{
  151.                                         if((double)tmp/skarbiec[i].wartoscMonety >= 1 && skarbiec[i].iloscMonet>0) {
  152.                                                 skarbiec[i].iloscMonet--;
  153.                                                 tmp-=skarbiec[i].wartoscMonety;
  154.                                         }
  155.                                         else {
  156.                                                 kredyt[i].iloscMonet--;
  157.                                                 tmp-=skarbiec[i].wartoscMonety;
  158.                                         }
  159.                                 }
  160.                         }
  161.                         return true;
  162.                 }
  163.                 return false;
  164.         }
  165.        
  166.         public void wplacDoSkarbca () {
  167.                 for (int i=0;i<6;i++)
  168.                         skarbiec[i].iloscMonet+=kredyt[i].iloscMonet;
  169.         }
  170.        
  171.         public void zwrocPieniadze () {
  172.                 System.out.println("Nie przeprowadzono zakupu, zwracam : " + liczKredyt());
  173.                 for (int i=0;i<6;i++)
  174.                         kredyt[i].iloscMonet=0;
  175.         }
  176.        
  177.         public void zarzadajZwrotuPieniedzy () {
  178.                 zwrocPieniadze ();             
  179.         }
  180. }