Java :: Aufgabe #156

2 Lösungen Lösungen öffentlich

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.

Lösungen:

1x
vote_ok
von Allocortex (350 Punkte) - 22.02.2017 um 16:02 Uhr
Quellcode ausblenden Java-Code
import Prog1Tools.IOTools;
public class Test {

public static void main(String[] args){
	
	System.out.println("Willkommen!");
	System.out.println("");
	
	boolean abbruchbedingung = true;
	while(abbruchbedingung == true){
		char c = IOTools.readChar("-n- Zum Hinzufügen neuer Kontos; -l- Zum ausgeben der Sortierten Kontenliste; -v- Zum vergleichen zweier Konten; -b- Zum abbruch");
		System.out.println("");
		switch(c){
		case 'n': Kontos.neuesKonto();
					break;
		case 'l': Kontos.ausgeben();
					System.out.println("");
					System.out.println("Wollen Sie ein Konto modifizieren?");
					char c2 = IOTools.readChar(("-j- Ja? / -n- Nein?"));
					System.out.println("");
					switch(c2){
					case 'j': int c3 = IOTools.readInt("Welches Konto wollen Sie modifizieren?");
					System.out.println("");
					System.out.println("Welchen Teil des Kontos wollen sie modifizieren?");		
					System.out.println("");
					char c4 = IOTools.readChar("-k- Kontostand; -c- Kredit; -n- Namen");
					System.out.println("");
					switch(c4){
					case 'k': System.out.println("Alter Kontostand: " + Kontos.kontoliste[c3-1].getKontostand());
								Kontos.kontoliste[c3-1].setKontostand(IOTools.readDouble("neuer Kontostand: "));
								System.out.println("");
								break;
					case 'c': System.out.println("Alter Kredit: " + Kontos.kontoliste[c3-1].getKredit());
								Kontos.kontoliste[c3-1].setKredit(IOTools.readDouble("neuer Kredit: "));
								System.out.println("");
								break;
					case 'n': System.out.println("Alter Name: " + Kontos.kontoliste[c3-1].getName());
								Kontos.kontoliste[c3-1].setName(IOTools.readString("neuer Name: "));
								System.out.println("");
								break;
					default: System.out.println("Korrekten buchstaben angeben!");
					System.out.println("");
					}
					
					case 'n': break;
					default: System.out.println("Korrekten buchstaben angeben!");
					System.out.println("");
					}
					break;
		case 'v': System.out.println("Welche Konten wollen Sie vergleichen?");
					int tempa = IOTools.readInt("Konto A: ");
					int tempb = IOTools.readInt("Konto B: ");
					boolean tempbool = Kontos.istReicherAls(tempa,tempb);
					if(tempbool){
						System.out.println("Besitzer von Konto \"A\" IST reicher als Besitzer von Konto \"B\"");
						System.out.println("Konto A hält - \" +" + (Kontos.kontoliste[tempa-1].getRealgeld() - Kontos.kontoliste[tempb-1].getRealgeld()) + "\" - MEHR Geld!");
					}
					else{
						System.out.println("Besitzer von Konto \"A\" ist NICHT reicher als Besitzer von Konto \"B\"");
						System.out.println("Konto A hält - \" " + (Kontos.kontoliste[tempb-1].getRealgeld() - Kontos.kontoliste[tempa-1].getRealgeld()) + "\" - WENIGER Geld!");
					}
					break;
		case 'b': abbruchbedingung = false;
					break;
		default: System.out.println("Korrekten buchstaben angeben!");	
		System.out.println("");
		}
	}
	System.out.println("Auf Wiedersehen!");

	}
}
public class Konto {
	private String name;
	private double kontostand, kredit;
	private double realgeld;
	
	public static Konto erstelleKonto(String name){
		Konto temp = new Konto(name);
		return temp;
	}
	public static Konto erstelleKonto(String name, double kontostand){
		Konto temp = new Konto(name, kontostand);
		return temp;
	}
	public static Konto erstelleKonto(String name, double kontostand, double kredit){
		Konto temp = new Konto(name, kontostand, kredit);
		return temp;
	}
	public Konto(String name){
		this.name = name;
		this.realgeld = kontostand - kredit;
	}
	public Konto(String name, double kontostand){
		this.name = name;
		this.kontostand = kontostand;
		this.realgeld = kontostand - kredit;

	}
	public Konto(String name, double kontostand, double kredit){
		this.name = name;
		this.kontostand = kontostand;
		this.kredit = kredit;
		this.realgeld = kontostand - kredit;
	}
	public String getName(){
		return name;
	}
	public double getKontostand(){
		return kontostand;
	}
	public double getKredit(){
		return kredit;
	}
	public double getRealgeld(){
		return realgeld;
	}
	public void setName(String name){
		this.realgeld = kontostand - kredit;
		this.name = name;
	}
	public void setKontostand(double kontostand){
		this.kontostand = kontostand;
		this.realgeld = kontostand - kredit;
	}
	public void setKredit(double kredit){
		this.kredit = kredit;
		this.realgeld = kontostand - kredit;
	}
	public void setRealgeld(double realgeld){
		this.realgeld = realgeld;
	}
}
public class Kontos {
	public static Konto[] kontoliste = new Konto[0];
	public static void neuesKonto(){
		System.out.println("Daten des hinzuzufügenden Kontos angeben: ");
		Konto[] temp = new Konto[kontoliste.length + 1];
		temp[0] = Konto.erstelleKonto(IOTools.readString("Name: "),
									IOTools.readDouble("Kontostand: "),
									IOTools.readDouble("Kreditsumme: "));
		for(int i = 0; i < kontoliste.length; i++){
			temp[i+1] = kontoliste[i];
		}
			
		kontoliste = temp;
	}
	public static void sortieren(){
		for(int i = 0; i < kontoliste.length -1; i++){
			int maxKontostand = i;
			for(int j = i + 1; j < kontoliste.length; j++){
				if (kontoliste[j].getKontostand() < kontoliste[maxKontostand].getKontostand()){
					maxKontostand = j;
				}
			}
			if(i != maxKontostand){
				Konto temp = kontoliste[i];
				kontoliste[i] = kontoliste[maxKontostand];
				kontoliste[maxKontostand] = temp;
			}
		}

	}
	public static void ausgeben(){
		sortieren();
		for(int i = 0; i < kontoliste.length; i++){
			System.out.println("Konto °" + (i+1) + " :");
			System.out.println("Name: " + kontoliste[i].getName());
			System.out.println("Kontostand: " + kontoliste[i].getKontostand());
			System.out.println("Kredit: " + kontoliste[i].getKredit());
			System.out.println("Realgeld: " + kontoliste[i].getRealgeld());
			System.out.println("");
		}
	}
	public static boolean istReicherAls(int a, int b){
		if(kontoliste[a-1].getRealgeld() > kontoliste[b-1].getRealgeld()){
			return true;
		}
		else{
			return false;
			
		}
	}
}

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());
			}
		}

	}
}






























2100990

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.