package pl.edu.agh; import java.util.Scanner; public class Automat implements ElektronicznyKasjer, MagazynProduktow, InputUzytkownika, OutputUzytkownika { Moneta gr10=new Moneta(0,10); Moneta gr20=new Moneta(0,20); Moneta gr50=new Moneta(0,50); Moneta zloty=new Moneta(0,100); Moneta zloty2=new Moneta(0,200); Moneta zloty5=new Moneta(0,500); Moneta[] kredyt= {gr10,gr20,gr50,zloty,zloty2,zloty5}; int liczKredyt() { int tmp=0; for (int i=0;i<6;i++) tmp+=kredyt[i].wartoscMonety*kredyt[i].iloscMonet; return tmp; } Produkt[] tablica; Moneta[] skarbiec; Automat (Produkt[] _tablica, Moneta[] _skarbiec) { tablica=_tablica; skarbiec=_skarbiec; } Scanner odczyt = new Scanner (System.in); public void dodajProdukt() {} public void wyswietlProdukty() { System.out.println("Dostepne napoje : n"); int i=0; while (i liczKredyt() ) return false; else return true; } public void wydajProdukt (int nrNapoju) { if (sprawdzProdukt(nrNapoju) ){ System.out.println("Wydawanie napoju..."); int reszta=liczKredyt()-tablica[nrNapoju-1].cena; if (reszta!=0) zwrocReszte(reszta); wplacDoSkarbca(); tablica[nrNapoju-1].ilosc--; } else { System.out.println("Nie mozna wydac napoju"); zwrocPieniadze(); } } public void zwrocReszte (int reszta) { if (sprawdzReszte(reszta)) { System.out.println("Zwracam reszte : " + reszta); for (int i=0;i<6;i++) kredyt[i].iloscMonet=0; System.out.println("Kredyt : " + liczKredyt()); } else { zwrocPieniadze(); } } public boolean sprawdzReszte (int reszta) { int zwracana=0; int tmp=reszta; int i=5; while (i>-1 && tmp!=0) { if ((double)tmp/skarbiec[i].wartoscMonety < 1 || skarbiec[i].iloscMonet==0 || (double)tmp/kredyt[i].wartoscMonety < 1) { i--; } else{ if((double)tmp/skarbiec[i].wartoscMonety >= 1 && skarbiec[i].iloscMonet>0) { zwracana+=skarbiec[i].wartoscMonety; tmp-=skarbiec[i].wartoscMonety; } else { zwracana+=kredyt[i].wartoscMonety; tmp-=kredyt[i].wartoscMonety; } } } tmp=reszta; i=5; if (zwracana==reszta) { while (i>-1) { if ((double)tmp/skarbiec[i].wartoscMonety < 1 || skarbiec[i].iloscMonet==0 || (double)tmp/kredyt[i].wartoscMonety < 1) { i--; } else{ if((double)tmp/skarbiec[i].wartoscMonety >= 1 && skarbiec[i].iloscMonet>0) { skarbiec[i].iloscMonet--; tmp-=skarbiec[i].wartoscMonety; } else { kredyt[i].iloscMonet--; tmp-=skarbiec[i].wartoscMonety; } } } return true; } return false; } public void wplacDoSkarbca () { for (int i=0;i<6;i++) skarbiec[i].iloscMonet+=kredyt[i].iloscMonet; } public void zwrocPieniadze () { System.out.println("Nie przeprowadzono zakupu, zwracam : " + liczKredyt()); for (int i=0;i<6;i++) kredyt[i].iloscMonet=0; } public void zarzadajZwrotuPieniedzy () { zwrocPieniadze (); } }