import java.util.*; /** * En konto har en eier identifisert av en tekst (String) * * @author Stein Gjessing * @version 13. Januar 2011 **/ class Konto { private String navn; private double saldo; /** * Konstrukt?r setter kontoens saldo til 0. * * @param n navn p? kontoens eier */ Konto (String n) { navn = n; saldo =0; } /** * Setter inn et bel?p. * * @param b bel?p */ public void setInn(double b) { saldo += b; } /** * Henter saldoen. * * @return saldo p? konto */ public double hentSaldo() { return saldo; } /** * Henter eier. * * @return navn p? eier */ public String hentEier() { return navn; } } /** * BankData er modellen / dataene i banksystemet. * * Denne klassen inneholder alle metoder som er n?dvendige for * manipulere kontoer. * En ny bank innholder ingen kontoer. * Alle kontoenes eiere m? ha forskjellige navn * * @author Stein Gjessing * @version 13.januar 2011 */ class BankData { private HashMap konti = new HashMap(); /** * Oppretter en ny konto i banken. * * @param kunde navn p? kunden */ public void lagBankKunde(String navn) { konti.put(navn, new Konto (navn)); } /** * Fjerne en konto fra banken. * * @param navn navn p? kunde */ public void fjernBankKunde(String navn) { konti.remove(navn); } /** * Summerer saldoen for alle kontoene i banken. * * @return summen av saldo for alle kontoer */ public double sumAlleKonti() { double sum = 0; for (Konto s: konti.values()) sum+= s.hentSaldo(); return sum; } /** * Setter inn penger p? en konto. * * @param navn navn p? kunde * @param belop bel?pet som settes inn. */ public void settInn (String navn, double belop) { Konto k = konti.get(navn); k.setInn(belop); } } /** * Bank er kontrollklassen for dette banksystemet. * Her ligger ordrel?kken som styrer det hele. * Denne klassen er bindeleddet mellom utsynet og data-modellen. * * @author Stein Gjessing * @version 17. Januar 2011 */ public class Bank { private BankData b; private BankUtsyn u; Bank() { b = new BankData(); u = new BankUtsyn(); } public static void main(String [] args) { Bank bnk = new Bank(); bnk.ordrel?kke(); } /** * Lager en ny konto. */ void lagNyKunde () { String nvn = u.beOmOgHentNavn(); b.lagBankKunde(nvn); } /** * Fjerner en konto. */ void fjernBankKunde () { String nvn = u.beOmOgHentNavn(); b.fjernBankKunde(nvn); } /** * Setter inn penger p? en konto. * N?dvendig informasjon hentes via ustynet. */ void settInn() { u.beOmNavnOgBelop(); String navn = u.hentNavn(); double bel = u.hentBelop(); b.settInn(navn,bel); } /** * Henter summen av saldo fra alle kontoer * og viser resultatet ved hjelp av utsyn */ void sumAlleKonti() { double sum = 0; sum = b.sumAlleKonti(); u.skrivSum(sum); } /** * Ordrel?kken som styrer kommandoene. */ void ordrel?kke () { int valg; valg = u.lesKommando(); while(valg != 0) { switch (valg) { case 1: lagNyKunde(); break; case 2: fjernBankKunde(); break; case 3: settInn(); break; case 4: sumAlleKonti(); break; default: u.skrivFeil("Gi tall mellom 0-4"); } valg = u.lesKommando(); } } // end ordrel?kke } // end class Bank /** * BankUtsyn brukes til innlesing og vising av kundedata. * * @author Stein Gjessing * @version 13. Januar 2011 */ class BankUtsyn { private Scanner tast; // kortvarig oppbevaring av leste data private String navn; private double belop; /** * Konstrukt?r */ BankUtsyn( ) { tast = new Scanner(System.in); } /** * Skriver ut menyen og leser inn kommandovalget. * * @return kommandovalget */ public int lesKommando() { System.out.println("\nMeny: "); System.out.println("0 - avslutt"); System.out.println("1 - Opprett ny kunde "); System.out.println("2 - Fjern kunde"); System.out.println("3 - Sett inn penger"); System.out.println("4 - Finn forvaltningskapital"); System.out.print(" Velg funksjon: "); return (tast.nextInt()); } /** * Ber om navn og bel?p og lagrer dette. */ public void beOmNavnOgBelop() { System.out.print("\nGi navn og bel?p (p? hver sin linje): "); navn = tast.next(); belop = tast.nextDouble(); } /** * Henter navnet som er lest inn. * * @return navnet */ public String hentNavn() { return navn; } /** * Henter bl?pet som er lest inn. * * @return bel?pet */ public double hentBelop() { return belop; } /** * Ber om og henter et navn. * * @return navnet */ public String beOmOgHentNavn() { System.out.print("\nGi navn : "); return tast.next(); } /** * Skriver ut bankens forvaltningskapital. * * @param sum kapitalen som skrives ut */ public void skrivSum(double sum) { System.out.println("\nBankens forvaltningskapital: " + sum); } /** * Skriver ut en feilmelding. * * @param feil feilmeldingen */ public void skrivFeil(String feil) { System.out.println(feil); } } // end BankUtsyn