Java :: Aufgabe #156 :: Lösung #2

2 Lösungen Lösungen öffentlich
#156

Programmiere ein kleines Banksystem

Anfänger - Java von Allocortex - 17.02.2017 um 11:01 Uhr
Programmiere ein kleines Banksystem!

GUI nicht notwendig. Aber:

Biete mehrere Auswahlmöglichkeiten bezüglich der Erstellung eines neuen Kontos, dem bearbeiten eines existierenden Kontos, dem Löschens eines bestehenden Kontos und dem Ausgeben aller Konten in sortierter Reihenfolge (nach Realgeld, siehe weiter unten)

Konten sollen einen Inhaber samt Namen (ggf. Alter) , einen Kontostand, einen Möglichen Kreditrahmen, eine laufende Kreditsumme und das Realgeld besitzen (Realgeld entspricht Kontostand abzüglich des durch Kredit vorhandenen Geldes).
Verwende Private Variablen, Getter und Setter

Nicht alle Konten dürfen einen Kredit besitzen (erst ab 18!)

Bezüglich der Auswahlmöglichkeiten: Diese sollen per Texteingabe oder Button auswählbar sein, und bei Auswahl vertiefende Fragen stellen (vertierendere Auswahlmöglichkeiten bieten) .. z.B. bei bearbeiten eines Kontos "Welches Konto", dann noch tiefer "Welche Eigenschaft", "Welcher Wert".

Das ganze soll dann wieder zum Ursprung springen und die selben Möglichkeiten bieten --> Solange, bis der Benutzer das Programm durch einen bestimmten Text, ein Zeichen, oder einen Button im GUI beendet.
#2
1x
vote_ok
von PC-principal (1340 Punkte) - 03.03.2017 um 11:47 Uhr
Quellcode ausblenden Java-Code
public class Inhaber {
private String name,vorname;
private int alter;

public Inhaber(String name,String vorname,int alter){
	this.name=name;
	this.vorname=vorname;
	this.alter=alter;
}

public Inhaber(){
	this.name="";
	this.vorname="";
	this.alter=-1;
}

public String getName() {
	return name;
}
public void setName(String name) {
	this.name = name;
}
public String getVorname() {
	return vorname;
}
public void setVorname(String vorname) {
	this.vorname = vorname;
}
public int getAlter() {
	return alter;
}
public void setAlter(int alter) {
	this.alter = alter;
}

public String toString(){
	return "Name:"+name+"  Vorname:"+vorname+"  Alter:"+alter+"  ";


public class Konto {
	private int kreditrahmen, kreditsumme, realgeld, kontostand;
	private Inhaber inhaber;

	public Konto(int ks,int kr,int krs, Inhaber inhaber) throws Exception {
		this.inhaber = inhaber;
		this.setKontostand(ks);
		this.setKreditrahmen(kr);
		this.setKreditsumme(krs);
		this.realgeld=this.kontostand-this.kreditsumme;
	}
	
	public Konto(){
		inhaber=new Inhaber();
	}
	
	public int getKreditrahmen() {
		return kreditrahmen;
	}

	public void setKreditrahmen(int kreditrahmen)throws Exception {
		if(kreditrahmen>=0){
		this.kreditrahmen = kreditrahmen;
	}else{
		throw new Exception("negativer Kreditrahmen");	
	}
	}
	
	public int getKreditsumme() {
		return kreditsumme;
	}

	public void setKreditsumme(int kreditsumme)throws Exception {
		if(this.getInhaber().getAlter()>=18||kreditrahmen==0){
		if(kreditsumme<=kreditrahmen){
		this.kreditsumme = kreditsumme;
		}else{
		throw new Exception("Kreditsumme darf nicht größer wie Kreditrahmen sein"); 
		}}else{throw new Exception("Der Inhaber muss mindestens 18 Jahre alt sein");
		
		}
		}

	public Inhaber getInhaber() {
		return inhaber;
	}

	public void setInhaber(Inhaber inhaber) {
		this.inhaber = inhaber;
	}

	public int getKontostand() {
		return kontostand;
	}

	public void setKontostand(int ks) {
		kontostand = ks;
	}
	
	public int getRealgeld(){
		return kontostand-kreditsumme;
	}
	
	public String toString() {
		return this.inhaber.toString()+"Kreditrahmen: "+kreditrahmen+"  Kreditsumme: "
               +kreditsumme+"  Konstostand: "+kontostand+ " Realgeld: "+realgeld;
	}
}


import java.util.Scanner;

public class Kontoverwaltung {

	public static int findeFreienPlatz(Konto... k) {
		int i = -1;
		for (i = 0; i < k.length; i++) {
			if ((k[i].getInhaber().getName()) == "") {
				return i;
			}
		}
		return i;
	}

	public static void bubbleSort(Konto... k) {
		int i = 0;
		while (i + 1 < k.length) {
			if (k[i].getRealgeld() <= k[i + 1].getRealgeld()) {
				i++;
			} else {
				Konto tmp = k[i];
				k[i] = k[i + 1];
				k[i + 1] = tmp;
				if (i > 0) {
					i--;
				} else {
					i++;
				}
			}
		}
	}

	public static void print(Konto... k) {
		for (Konto konto : k) {
			if (!(konto.getInhaber().getName().equals(""))) {
				System.out.println(konto.toString());
			}
		}
	}

//Besser wäre es die Konten mit Kontonummern zu suchen, aber dieses Attribut war nicht vorgegeben
	static int findeKonto(String name, String vorname, Konto... k) throws Exception {
		int i = -1;
		boolean kontoGefunden = false;
		for (i = 0; i < k.length; i++) {
			if (k[i].getInhaber().getName().equals(name) && k[i].getInhaber().getVorname().equals(vorname)) {
				kontoGefunden = true;
				return i;
			}
		}
		if (!(kontoGefunden)) {
			throw new Exception("Konto nicht gefunden");
		}
		return i;
	}

	public static void main(String[] args) {

		Konto[] konten = new Konto[10];
		for (int i = 0; i < konten.length; i++) {
			konten[i] = new Konto();
		}

		System.out.println("Was wollen sie tun?");
		boolean t = true;
		while (t) {
			try {

				System.out.println("Konto anlegen(ka) , Konto loeschen(kl) , Konto bearbeiten(kb) , Kontoliste ausgeben(print) , Ende(e) ?");
				Scanner scan = new Scanner(System.in);
				String s = scan.nextLine();

				if (s.equals("print")) {
					bubbleSort(konten);
					print(konten);
				}

				else if (s.equals("ka")) {
					String name, vorname;
					int kreditrahmen, kreditsumme, kontostand, alter;

					System.out.println("Name?");
					name = scan.nextLine();

					System.out.println("Vorname?");
					vorname = scan.nextLine();

					System.out.println("Alter");
					alter = Integer.parseInt(scan.nextLine());

					Inhaber inhaber = new Inhaber(name, vorname, alter);

					System.out.println("Kreditrahmen?(0 für keinen Rahmen)");
					kreditrahmen = Integer.parseInt(scan.nextLine());

					System.out.println("Kreditsumme?");
					kreditsumme = Integer.parseInt(scan.nextLine());

					System.out.println("Kontostand?");
					kontostand = Integer.parseInt(scan.nextLine());

					konten[findeFreienPlatz(konten)] = new Konto(kontostand, kreditrahmen, kreditsumme, inhaber);
				}

				else if (s.equals("kl")) {
					String name, vorname;

					System.out.println("Name des Kontobesitzers");
					name = scan.nextLine();

					System.out.println("Vorname des Kontobesitzers");
					vorname = scan.nextLine();

					int i = findeKonto(name, vorname, konten);
					konten[i] = new Konto();
				}

				else if (s.equals("kb")) {
					boolean o = true;
					while (o) {
						String name, vorname;

						System.out.println("Name des Kontobesitzers");
						name = scan.nextLine();

						System.out.println("Vorname des Kontobesitzers");
						vorname = scan.nextLine();

						int i = findeKonto(name, vorname, konten);

						System.out.println("Was möchten sie bearbeiten?");
						boolean h = true;
						while (h) {
							try {
								System.out.println(
										"Name(n) , Vorname (vn) , Alter(a) , Kreditrahmen(kr) ,
                                              Kreditsumme(ks) , Kontostand(kos)\n Konto wechseln(kw) , Ende Bearbeitung(eb) ");
								s = scan.nextLine();
								System.out.println("warte auf Eingabe...");
								switch (s) {
								case "n":
									s = scan.nextLine();
									konten[i].getInhaber().setName(s);
									break;
								case "vn":
									s = scan.nextLine();
									konten[i].getInhaber().setVorname(s);
									break;
								case "a":
									s = scan.nextLine();
									konten[i].getInhaber().setAlter(Integer.parseInt(s));
									break;
								case "kr":
									s = scan.nextLine();
									konten[i].setKreditrahmen(Integer.parseInt(s));
									break;
								case "ks":
									s = scan.nextLine();
									konten[i].setKreditsumme(Integer.parseInt(s));
									break;
								case "kos":
									s = scan.nextLine();
									konten[i].setKontostand(Integer.parseInt(s));
									break;
								case "kw":
									h = false;
									break;
								default:
									h = false;
									o = false;
									break;
								}
							} catch (Exception e) {
								System.out.println(e.getMessage());
							}
						}
					}
				}
				else if (s.equals("e")) {
					t=false;
				}
			} catch (Exception e) {
				System.out.println(e.getMessage());
			}
		}

	}
}






























Kommentare:

Für diese Lösung gibt es noch keinen Kommentar

Bitte melden Sie sich an um eine Kommentar zu schreiben.
Kommentar schreiben
2100517

Du scheinst einen AdBlocker zu nutzen. Ich würde mich freuen, wenn du ihn auf dieser Seite deaktivierst und dich davon überzeugst, dass die Werbung hier nicht störend ist.