Swing Orderbook programmieren

  • Themenstarter Themenstarter cmay7
  • Beginndatum Beginndatum
C

cmay7

Gast
Hallo,
möchte gerne eine Demoversion für ein Orderbook programmieren, bin jedoch noch ziemlich unerfahren in Java. Das Orderbook(Erklärung hier: Order book) gibt Menge und Preis von zum Verkauf bzw Kauf zur Verfügung stehenden Aktien an. Zum Anfang des Programms soll der Anfangsbestand ausgegeben werden, der kann ja in einem Array stehen.Wie kann der dann ausgelesen werden? Dann soll der Benutzer einen Auftrag eingeben, bestehend aus Kauf/Verkauf, Menge und Limit/kein Limit. Das würde ich mit JOptionPane machen. Am Schluss soll das Orderbook aktualisiert werden, den abgeschlossenen Kauf/Verkauf berücksichtigend. Dabei sollen die jeweiligen Kauf-/Verkaufsmengen in Balken angezeigt werden. Das ist auch eines meiner Probleme: Wie kann ich die Mengen prozentual in Balken anzeigen lassen? Ich meine zuerst brauche ich ein JFrame, nur wie bekomme ich die Balken da rein? Und wie kann ich die Balken nach dem Benutzerauftrag aktualisieren?
Wäre sehr dankbar für eure Hilfe.
Beste Grüße
Christian
 
das habe ich bisher:
Java:
import javax.swing.JOptionPane;
import javax.swing.JFrame;

public class Admin {

	private static double [][] bookBuy= {{10000, 99}, {14000, 98}, {5500, 95}, {3000, 90}, {5000, 80}};
	private static double [][] bookSell= {{15000, 102}, {9000, 105}, {3500, 106}, {4000, 110}, {3000, 115}};
	public static void main(String[] args) {
		System.out.println("\t" +"Buy-Orders"+ "\t" + "\t" + "Sell-Order");
		System.out.println("Stock"+"\t" +"Quantity" + "\t" + "Price" + "\t" + "Quantity" + "\t" + "Price");
		for(int i=0;i<bookBuy.length; i++){
			System.out.println(i+1 +"\t" +bookBuy[i][0]+ "\t" + "\t" + bookBuy[i][1]+  "\t"
					+ bookSell[i][0] + "\t" + "\t" + bookSell[i][1]);
		}
		String decision = JOptionPane.showInputDialog("Bitte geben Sie kauf oder verkauf ein:");
		String stock = JOptionPane.showInputDialog("Bitte geben Sie die Aktiennummer an:");
		String amount = JOptionPane.showInputDialog("Bitte geben Sie die Menge der Aktien an, die Sie kaufen bzw. verkaufen möchten:");
		String limit = JOptionPane.showInputDialog("Möchten Sie ein Limit setzen? Falls ja, geben Sie das Limit an, ansonsten tipen Sie no limit ein:");
		
	}

}

d.h. das mit dem Auslesen der matrix hab ich gelöst, ist ja auch nicht schwierig. 🙂
 
mit abändern meinte ich die arrayeinträge erhöhen bzw vermindern, z.B. so:
Java:
 bookBuy[n - 1][0] -= m;
	  bookBuy[n - 1][1]++;
aber habe schon rausgefunden dass das geht.
Zurück zu meiner Ursprungsfrage: Wie kann ich die Daten, die in den Arrays stehen, grafisch mit Balken darstellen?
 
habe bisher diesen Code:
Java:
import javax.swing.JOptionPane;
import javax.swing.JFrame;


public class Admin {

	private static double[][] bookBuy = { { 10000, 99 }, { 14000, 98 },
			{ 5500, 95 }, { 3000, 90 }, { 5000, 80 } };
	private static double[][] bookSell = { { 15000, 102 }, { 9000, 105 },
			{ 3500, 106 }, { 4000, 110 }, { 3000, 115 } };

	public static void main(String[] args) {

		System.out.println("\t" + "Buy-Orders" + "\t" + "\t" + "Sell-Order");
		System.out.println("Stock" + "\t" + "Quantity" + "\t" + "Price" + "\t"
				+ "Quantity" + "\t" + "Price");

		for (int i = 0; i < bookBuy.length; i++) {
			System.out.println(i + 1 + "\t" + bookBuy[i][0] + "\t" + "\t"
					+ bookBuy[i][1] + "\t" + bookSell[i][0] + "\t" + "\t"
					+ bookSell[i][1]);
		}
		String begin = JOptionPane
				.showInputDialog("Möchten Sie eine Aktie kaufen?");
		boolean yes = false; // boolean zum Abfragen weiterer Transaktionen
		int j = 0; // Zähler für Anzahl der Transaktionen
		if (begin.equals("ja")) {
			do {
				j++;
				try {
					String decision = JOptionPane
							.showInputDialog("Bitte geben Sie kauf oder verkauf ein:");
					if (!decision.equals("kauf") && !decision.equals("verkauf")) {
						JOptionPane
						.showInputDialog("Falsche Eingabe! Bitte erneut starten!");
					} else {
						String stock = JOptionPane
								.showInputDialog("Bitte geben Sie die Aktiennummer an:");
						int n = Integer.parseInt(stock);

						String amount = JOptionPane
								.showInputDialog("Bitte geben Sie die Menge der Aktien an, die Sie kaufen bzw. verkaufen möchten:");
						double m = Double.parseDouble(amount);

						String limit = JOptionPane
								.showInputDialog("Hier können Sie ein Limit eingeben; falls Sie kein Limit möchten, geben Sie 0 ein.");
						double o = Double.parseDouble(limit);

						if (decision.equals("kauf")) {
							bookBuy[n - 1][0] -= m;
							bookBuy[n - 1][1]++;
							bookSell[n - 1][0] += m;
							bookSell[n - 1][1]--;
						}
						if (decision.equals("verkauf")) {
							bookSell[n - 1][0] -= m;
							bookSell[n - 1][1]++;
							bookBuy[n - 1][0] += m;
							bookBuy[n - 1][1]--;
						}

						System.out.println();
						System.out.println("Aktualisiertes Orderbook nach " + j
								+ "ter Transaktion:");
						System.out.println("\t" + "Buy-Orders" + "\t" + "\t"
								+ "Sell-Order");
						System.out.println("Stock" + "\t" + "Quantity" + "\t"
								+ "Price" + "\t" + "Quantity" + "\t" + "Price");

						for (int i = 0; i < bookBuy.length; i++) {
							System.out.println(i + 1 + "\t" + bookBuy[i][0]
									+ "\t" + "\t" + bookBuy[i][1] + "\t"
									+ bookSell[i][0] + "\t" + "\t"
									+ bookSell[i][1]);
						}
						String goOn = JOptionPane
								.showInputDialog("Möchten Sie eine weitere Aktie kaufen?");
						yes = (goOn.equals("ja"));
					}

				} catch (Exception e) {
					JOptionPane
							.showInputDialog("Falsche Eingabe! Bitte erneut starten!");
				}
			} while (yes);
		}
	}

}
Ich suche jetzt nach einem Mittel, die ausgeführten Transaktionen mit Aktiennummer, Menge, Preis und Limit zu speichern, um nachher wieder darauf zu greifen zu können. was benutze ich da am Besten um diese 4 Eigenschaften zu speichern?
beste grüße
christian
 

Zurück
Oben