class Polozka { public double suma; public Polozka dalsi; public Polozka(double suma) { this.suma = suma; } } class Ucet { public String jmeno; private Polozka vklady; private Polozka vybery; public boolean existuje; public Ucet(String jmeno) { this.jmeno = jmeno; this.existuje = true; } public void Vloz(double suma) { if (this.vklady == null) { this.vklady = new Polozka(suma); } else { Polozka x = this.vklady; while(x.dalsi != null) { x = x.dalsi; } x.dalsi = new Polozka(suma); } } public void Vyber(double suma) { if (this.vybery == null) { this.vybery = new Polozka(suma); } else { Polozka x = this.vybery; while(x.dalsi != null) { x = x.dalsi; } x.dalsi = new Polozka(suma); } } public double sectiVklady() { double soucet = 0.; if (this.vklady == null) { return 0; } else { Polozka x = this.vklady; soucet+= x.suma; while(x.dalsi != null) { x = x.dalsi; soucet+= x.suma; } return soucet; } } public double sectiVybery() { double soucet = 0.; if (this.vybery == null) { return 0; } else { Polozka x = this.vybery; soucet+= x.suma; while(x.dalsi != null) { x = x.dalsi; soucet+= x.suma; } return soucet; } } public void vypisVklady() { if (this.vklady != null) { Polozka x = this.vklady; System.out.println(" " + x.suma); while(x.dalsi != null) { x = x.dalsi; System.out.println(" " + x.suma); } } } public void vypisVybery() { if (this.vybery != null) { Polozka x = this.vybery; System.out.println(" " + x.suma); while(x.dalsi != null) { x = x.dalsi; System.out.println(" " + x.suma); } } } public boolean maDebet() { return (this.sectiVklady() - this.sectiVybery() < 0); } } public class Ucty { public static void Tiskni(String line) { System.out.println(line); } public static void Tiskni(String line, boolean newline) { if (newline) { System.out.println(line); } else { System.out.print(line); } } public static void Help() { Tiskni(""); Tiskni("Napoveda"); Tiskni("-------------------------------------------------------------"); Tiskni("* - zalozi ucet a nastavi ho jako aktivni."); Tiskni("/ - smaze ucet a vynuluje aktivni ucet."); Tiskni("+ - vlozi na aktivni ucet castku ."); Tiskni("- - vybere z aktvniho uctu castku ."); Tiskni(" - nastavi jako aktivni ucet ."); Tiskni("= - zobrazi informace o aktivnim uctu."); Tiskni("? - zobrazi tuto napovedu."); Tiskni(". - ukonceni programu."); Tiskni("-------------------------------------------------------------"); Tiskni(""); } public static void main(String[] args) { String Command,Param; int Aktual = -1; int index = -1; char Action; Ucet[] Ucty = new Ucet[100]; // nejaky about + help Tiskni("-------------------------------------------------------------"); Tiskni("Program UCTY\tMartin Sloup, FAV INI-B, A04372"); Tiskni(""); Tiskni("Tato demoverze umi pracovat s maximalne 100 uctama."); Tiskni("-------------------------------------------------------------"); Tiskni(""); Help(); // nekonecny cyklus while(true) { Tiskni("> ", false); Command = VstupData.ctiString(); Action = Command.charAt(0); Param = Command.substring(1); switch(Action) { case '*': index = -1; for(int i=0; i<100; i++) { if (Ucty[i] == null) { index = i; break; } if (Ucty[i].jmeno.equals(Param)) break; } if (index >= 0) { Ucty[index] = new Ucet(Param); Aktual = index; Tiskni("Ucet " + Param + " byl vytvoren."); } else { Tiskni("CHYBA: Ucet " + Param + " nebyl vytvoren (existuje? pocet uctu >= 100?)."); } break; case '/': index = -1; for(int i=0;i<100;i++) { if (Ucty[i] != null && Ucty[i].jmeno.equals(Param)) { Ucty[i] = null; index = i; break; } } if (index >= 0) { Tiskni("Ucet " + Param + " byl smazan."); } else { Tiskni("CHYBA: Ucet " + Param + " nebyl nalezen."); } break; case '+': // zamenime ceskou carku za tecku. jako oddelovac desetineho mista Param = Param.replaceAll(",","."); try { if (Aktual < 0) { Tiskni("CHYBA: Neni vybran ucet."); } else if (Param != "" && Double.parseDouble(Param) <= 0) { Tiskni("CHYBA: Zadej kladne nenulove cislo."); } else { Tiskni("Na ucet byla vlozena castka " + Double.parseDouble(Param) + "."); Ucty[Aktual].Vloz(Double.parseDouble(Param)); } } catch (Exception e) { Tiskni("CHYBA: Zadej kladne nenulove cislo."); } break; case '-': // zamenime ceskou carku za tecku. jako oddelovac desetineho mista Param = Param.replaceAll(",","."); try { if (Aktual < 0) { Tiskni("CHYBA: Neni vybran ucet."); } else if (Param != "" && Double.parseDouble(Param) <= 0) { Tiskni("CHYBA: Zadej zaporne nenulove cislo."); } else { Tiskni("Z uctu byla vybrana castka " +Double.parseDouble(Param) + "."); Ucty[Aktual].Vyber(Double.parseDouble(Param)); } } catch (Exception e) { Tiskni("CHYBA: Zadej zaporne nenulove cislo."); } break; case '=': if (Aktual < 0) { Tiskni("CHYBA: Neni vybran ucet."); } else { Tiskni("Informace u uctu "+Ucty[Aktual].jmeno+":"); Tiskni("-------------------------------------------------------------"); Tiskni(" Vlozeno: " + Math.round(Ucty[Aktual].sectiVklady()*2)/2. + "0"); Tiskni(" Vybrano: " + Math.round(Ucty[Aktual].sectiVybery()*2)/2. + "0"); Tiskni(" Ma Debet: " + ((Ucty[Aktual].maDebet()) ? "ano" : "ne")); Tiskni(""); Tiskni(" Vklady:"); Ucty[Aktual].vypisVklady(); Tiskni(""); Tiskni(" Vybery:"); Ucty[Aktual].vypisVybery(); Tiskni("-------------------------------------------------------------"); Tiskni(""); } break; case '?': Help(); break; case '.': break; default: index = -1; for(int i=0; i<100; i++) { if (Ucty[i]!=null && Ucty[i].jmeno.equals(Command)) { index = i; break; } } if (index >= 0) { Aktual = index; Tiskni("Vybrali jste ucet " + Command + "."); } else { Tiskni("CHYBA: Ucet " + Command + " neexistuje."); } break; } if (Action == '.') break; } Tiskni("Bye, bye..."); Tiskni(""); Tiskni("-------------------------------------------------------------"); Tiskni("Program UCTY\tMartin Sloup, FAV INI-B, A04372"); Tiskni(""); Tiskni("Tato demoverze umi pracovat s maximalne 100 uctama."); Tiskni("-------------------------------------------------------------"); } }