Hallo,
Ich habe momentan Ferien und deswegen viel Zeit also habe ich mir gestern ein kleines Vokabelprogramm zusammengebastelt....
Bisher funktioniert auch alles so wie ich es mir vorgestellt habe.
Doch jetzt wollte ich eine Option einbauen womit man die möglichkeit hat bereits vorhande Vokabeln einzuspeichern. Mein Programm funktioniert momentan so :
Ich habe 4 Klassen :
-Die Main Klasse
-Eine Klasse wo die Gui iniatialisiert/Definiert wird und die ganzen Aktionen für die Gui rein gepackt sind (Eintragen & Abfragen der Vokabeln)
-Eine "Vokabel_Eintrag" Klasse wo die ganzen Daten eingetragen werden und Abgefragt werden können.
-Und ein Hilfe Fenster..Da habe ich aber noch nichts gemacht.
Momentan funktioniert das Eintragen so :
bildupload.sro.at/p/398034.html
(Bild ist auch im Anhang,Mit List meine ich ArrayList)
Hier nochmal ein UML Diagramm:
[Blockierte Grafik: http://www10.pic-upload.de/thumb/29.07.12/uhtosgt6ck8l.png]
Also stellt sich die Frage wie bekomme ich es hin einen Array dauerhaft zu Speichern ?
Ich würde jetzt einfach sagen das ein Filewriter den ganzen Inhalt eines Arrays in ein Textfile schreibt und das dann später wieder herausgelesen wird..Aber das erscheint mir irgendwie..komisch.
was mache ich wenn ich mehrere Lektionen habe ? Wie kriege ich das hin , das der User da wählen kann ? oder Anderes gibt es eine Möglichkeit Objekte zu speichern.
btw. In meinem Code überschreibt er immer das vorhande Objekt was die Vokabeln speichert.Weil ich nicht weiß wie ich das hinbekomme das er immer wieder ein neues individuelles Objekt erzeugt was im ganzen code verwendet werden kann
(Ich arbeite in meinem Code mit Globalen Variablen , in diesem Fall ein Globales "Vokabeleintrag Objekt"
Ich erwarte nicht das sich jemand den ganzen Code daunten durchließt aber es wäre echt Toll wenn mir jemand verbesserungschläge geben könnte ( Wie kann ich das mit dem Speichern lösen ? , Wie bekomme ich das hin das beim jeden "Eintragen" ein neues Individueles Objekt erstellt was man dann in der ganzen Klasse verwenden kann ?
Fragen die ich mir auch noch stelle sind..:Ist mein Code überhaupt Objektorientert ?
Allgemeine Verbesserungsvorschläge sind natürlich auch erwünscht, z.b Der Still oder der Gesamte Lösungsweg.
Der Code :
Main Klasse :
Alles anzeigen
Vokabelprogramm Klasse:
Alles anzeigen
Die Vokabeleintrag Klasse:
Alles anzeigen
Mit freundlichen Grüßen
Philip
Ich habe momentan Ferien und deswegen viel Zeit also habe ich mir gestern ein kleines Vokabelprogramm zusammengebastelt....
Bisher funktioniert auch alles so wie ich es mir vorgestellt habe.
Doch jetzt wollte ich eine Option einbauen womit man die möglichkeit hat bereits vorhande Vokabeln einzuspeichern. Mein Programm funktioniert momentan so :
Ich habe 4 Klassen :
-Die Main Klasse
-Eine Klasse wo die Gui iniatialisiert/Definiert wird und die ganzen Aktionen für die Gui rein gepackt sind (Eintragen & Abfragen der Vokabeln)
-Eine "Vokabel_Eintrag" Klasse wo die ganzen Daten eingetragen werden und Abgefragt werden können.
-Und ein Hilfe Fenster..Da habe ich aber noch nichts gemacht.
Momentan funktioniert das Eintragen so :
bildupload.sro.at/p/398034.html
(Bild ist auch im Anhang,Mit List meine ich ArrayList)
Hier nochmal ein UML Diagramm:
[Blockierte Grafik: http://www10.pic-upload.de/thumb/29.07.12/uhtosgt6ck8l.png]
Also stellt sich die Frage wie bekomme ich es hin einen Array dauerhaft zu Speichern ?
Ich würde jetzt einfach sagen das ein Filewriter den ganzen Inhalt eines Arrays in ein Textfile schreibt und das dann später wieder herausgelesen wird..Aber das erscheint mir irgendwie..komisch.
was mache ich wenn ich mehrere Lektionen habe ? Wie kriege ich das hin , das der User da wählen kann ? oder Anderes gibt es eine Möglichkeit Objekte zu speichern.
btw. In meinem Code überschreibt er immer das vorhande Objekt was die Vokabeln speichert.Weil ich nicht weiß wie ich das hinbekomme das er immer wieder ein neues individuelles Objekt erzeugt was im ganzen code verwendet werden kann
(Ich arbeite in meinem Code mit Globalen Variablen , in diesem Fall ein Globales "Vokabeleintrag Objekt"
Ich erwarte nicht das sich jemand den ganzen Code daunten durchließt aber es wäre echt Toll wenn mir jemand verbesserungschläge geben könnte ( Wie kann ich das mit dem Speichern lösen ? , Wie bekomme ich das hin das beim jeden "Eintragen" ein neues Individueles Objekt erstellt was man dann in der ganzen Klasse verwenden kann ?
Fragen die ich mir auch noch stelle sind..:Ist mein Code überhaupt Objektorientert ?
Allgemeine Verbesserungsvorschläge sind natürlich auch erwünscht, z.b Der Still oder der Gesamte Lösungsweg.
Der Code :
Main Klasse :
Quellcode
Vokabelprogramm Klasse:
Quellcode
- import java.awt.Font;
- import java.awt.GridLayout;
- import java.awt.List;
- import java.awt.event.ActionEvent;
- import java.awt.event.ActionListener;
- import java.io.FileInputStream;
- import java.io.FileOutputStream;
- import java.io.ObjectInputStream;
- import java.io.ObjectOutput;
- import java.io.ObjectOutputStream;
- import java.util.ArrayList;
- import javax.swing.JButton;
- import javax.swing.JFrame;
- import javax.swing.JLabel;
- import javax.swing.JMenu;
- import javax.swing.JMenuBar;
- import javax.swing.JMenuItem;
- import javax.swing.JOptionPane;
- import javax.swing.JPanel;
- public class Vokabelprogramm extends JFrame {
- JPanel InfoPanel;
- JPanel ButtonsPanel;
- JPanel AnzahlPanel;
- JPanel KontrollePanel;
- JPanel ProzentausgabePanel;
- JLabel AnzahlLabel;
- JLabel ÜberschriftLabel;
- JLabel LetztevokabelLabel;
- JLabel Prozentlabel;
- JMenuBar Menu;
- JMenu Datei;
- JMenuItem Neu;
- JMenuItem Speichern;
- JMenuItem Laden;
- JMenu Hilfe;
- JMenuItem HilfeItem;
- JButton MündlichAbfragenButton;
- JButton SchriftlichAbfragenButton;
- String LetzteDeutscheVokabel;
- String LetzteFremdspracheVokabel;
- String Deutsch;
- String Fremd;
- int vokabelzahl;
- float Richtige_Vokabeln;
- float Falsche_Vokabeln;
- float floatProzent;
- private float floatvokabel;
- Boolean abfragend;
- String[] Deutscherarray;
- String[] Fremderarray;
- Vokabel_Eintrag Aktuelle;
- public void IniatizeComponents(){
- Menu = new JMenuBar();
- Datei = new JMenu("Datei");
- Speichern = new JMenuItem("Speichern");
- Laden=new JMenuItem("Laden");
- Hilfe = new JMenu("Hilfe");
- HilfeItem=new JMenuItem("Hilfe");
- Neu = new JMenuItem("Neu");
- Menu.add(Datei);
- Menu.add(Hilfe);
- Datei.add(Neu);
- Datei.add(Speichern);
- Datei.add(Laden);
- Hilfe.add(HilfeItem);
- LetzteDeutscheVokabel="Deutsch";
- LetzteFremdspracheVokabel="Fremdsprache";
- this.setBounds(300, 200, 700, 400);
- this.setLayout(null);
- ÜberschriftLabel=new JLabel("Voci Boci");
- AnzahlLabel=new JLabel("Gespeicherte Vokabeln : " + vokabelzahl);
- Prozentlabel=new JLabel("Prozentausgabe: 100 %" );
- Prozentlabel.setFont(new Font("Monospaced",Font.BOLD,12));
- MündlichAbfragenButton=new JButton("Mündlich Abfragen");
- SchriftlichAbfragenButton=new JButton("Schriftlich Abfragen");
- LetztevokabelLabel =new JLabel("Letzte Vokabel:"+LetzteDeutscheVokabel + "/" + LetzteFremdspracheVokabel);
- InfoPanel = new JPanel();
- ÜberschriftLabel.setFont(new Font("Monospaced", Font.BOLD, 36));
- InfoPanel.add(ÜberschriftLabel);
- AnzahlPanel = new JPanel();
- AnzahlPanel.add(AnzahlLabel);
- ButtonsPanel=new JPanel();
- ButtonsPanel.add(MündlichAbfragenButton);
- ButtonsPanel.add(SchriftlichAbfragenButton);
- KontrollePanel =new JPanel();
- KontrollePanel.add(LetztevokabelLabel);
- LetztevokabelLabel.setFont(new Font("Monospaced",Font.ITALIC,28));
- ProzentausgabePanel = new JPanel();
- ProzentausgabePanel.add(Prozentlabel);
- this.setJMenuBar( Menu );
- this.add(InfoPanel);
- InfoPanel.setBounds(0, 0, 700, 50);
- this.add(ButtonsPanel);
- ButtonsPanel.setBounds(50, 75, 600, 100);
- ButtonsPanel.setLayout( new GridLayout(1,1));
- this.add(KontrollePanel);
- KontrollePanel.setBounds(0, 200, 700, 70);
- this.add(AnzahlLabel);
- AnzahlLabel.setBounds(500, 275, 200, 50);
- this.setVisible(true);
- this.add(ProzentausgabePanel);
- ProzentausgabePanel.setBounds(0, 283, 200, 50);
- }
- public void Starten() {
- Neu.addActionListener(new ActionListener() {
- @Override
- public void actionPerformed(ActionEvent e) {
- eintragen();
- }
- });
- SchriftlichAbfragenButton.addActionListener(new ActionListener() {
- @Override
- public void actionPerformed(ActionEvent e) {
- SchriftlichAbfragen();
- }
- });
- MündlichAbfragenButton.addActionListener(new ActionListener() {
- @Override
- public void actionPerformed(ActionEvent e) {
- MündlichAbfragen();
- }
- });
- HilfeItem.addActionListener(new ActionListener() {
- @Override
- public void actionPerformed(ActionEvent e) {
- new Hilfe();
- }
- });
- Speichern.addActionListener(new ActionListener() {
- @Override
- public void actionPerformed(ActionEvent e) {
- Speichern();
- }
- });
- Laden.addActionListener(new ActionListener() {
- @Override
- public void actionPerformed(ActionEvent e) {
- laden();
- }
- });
- }
- public void eintragen() {
- abfragend = true;
- ArrayList Deutsche = new ArrayList();
- ArrayList Fremde = new ArrayList();
- /* //Reseten
- if (Aktuelle!=null) {
- Aktuelle=null;
- vokabelzahl=0;
- Deutsche=new ArrayList();
- Fremde=new ArrayList();
- }
- */
- while(abfragend) {
- Deutsch =JOptionPane.showInputDialog("Deutsche Vokabel ?("+vokabelzahl+")");
- if(check(Deutsch) == true) {
- //Vorübergehenden Array
- Deutscherarray = new String[vokabelzahl];
- Fremderarray = new String[vokabelzahl];
- //Konvertieren von List zu String
- Deutsche.toArray(Deutscherarray);
- Fremde.toArray(Fremderarray);
- //Label Aktualieren
- AnzahlLabel.setText("Gespeicherte Vokabeln : " + vokabelzahl);
- //Instanz von Globaler Varibalen erzeugen
- Aktuelle = new Vokabel_Eintrag();
- //Variablen zu weißen
- Aktuelle.SetDeutscheVokabeln(Deutscherarray);
- Aktuelle.SetFremdsprachigeVokabeln(Fremderarray);
- break;
- }
- Fremd=JOptionPane.showInputDialog("Fremdsprachige Vokabel ? ("+vokabelzahl+")");
- if(check(Fremd) == false) {
- //Vorübergehenden Array
- Deutscherarray = new String[vokabelzahl];
- Fremderarray = new String[vokabelzahl];
- //Konvertieren von List zu String
- Deutsche.toArray(Deutscherarray);
- Fremde.toArray(Fremderarray);
- //Instanz von Globaler Varibalen erzeugen
- Aktuelle = new Vokabel_Eintrag();
- //Variablen zu weißen
- Aktuelle.SetDeutscheVokabeln(Deutscherarray);
- Aktuelle.SetFremdsprachigeVokabeln(Fremderarray);
- }
- Deutsche.add(Deutsch);
- Fremde.add(Fremd);
- LetztevokabelLabel.setText("Letzte Vokabel:"+Deutsch + "/" + Fremd);
- vokabelzahl++;
- }
- }
- private boolean check(String ZuÜberprüfenderString) {
- boolean fertig = false;
- if(ZuÜberprüfenderString==null) {
- fertig=true;
- }
- return fertig;
- }
- public float GetProzentsatz() {
- floatvokabel = vokabelzahl;
- float EinProzent=floatvokabel/100;
- System.out.println("Ein Prozent :"+EinProzent);
- floatProzent=Richtige_Vokabeln/EinProzent;
- this.setVisible(true);
- return floatProzent;
- }
- private void SchriftlichAbfragen() {
- if (Aktuelle!=null) {
- String[] Deutscherarray = Aktuelle.GetDeutscheVokabeln();
- String[] Fremderarray = Aktuelle.GetFremdsprachigeVokabeln();
- System.out.println(Deutscherarray.length);
- Richtige_Vokabeln=0;
- for (int i = 0; i < Deutscherarray.length; i++) {
- String Eingabe = JOptionPane.showInputDialog(Deutscherarray[i]);
- String Antwort=Fremderarray[i];
- if(check(Eingabe)==true) {
- System.out.print("Check == False ");
- Richtige_Vokabeln=0;
- break;
- }
- if(Eingabe.equals(Antwort)) {
- Richtige_Vokabeln++;
- }
- else {
- JOptionPane.showMessageDialog(null, "Falsch ! Richtig wäre : " + Fremderarray[i]);
- }
- }
- floatProzent=GetProzentsatz();
- floatProzent= Math.round(floatProzent);
- System.out.println("FloatProzent: "+floatProzent);
- Prozentlabel.setText("Status: " + floatProzent + "%");
- }
- else {
- JOptionPane.showMessageDialog(null, "Keine Vokabeln Vorhanden");
- }
- }
- public void Speichern(){
- if (Aktuelle!=null){
- try {
- String DateiName=JOptionPane.showInputDialog("Name der Lektion ? (Speichername)");
- FileOutputStream f = new FileOutputStream(DateiName);
- ObjectOutput s = new ObjectOutputStream(f);
- s.writeObject(Aktuelle);
- s.flush();
- } catch (Exception e) {
- System.out.println("Klappt nicht");
- }
- }
- else {
- JOptionPane.showMessageDialog(null, "Keine Vokabeln Vorhanden");
- }
- }
- public void MündlichAbfragen() {
- if (Aktuelle!=null) {
- String[] Deutscherarray = Aktuelle.GetDeutscheVokabeln();
- String[] Fremderarray = Aktuelle.GetFremdsprachigeVokabeln();
- Richtige_Vokabeln=0;
- for (int i = 0; i < Deutscherarray.length; i++) {
- JOptionPane.showMessageDialog(null,"Was bedeutet " + Deutscherarray[i] + "?");
- String Antwort=Fremderarray[i];
- int eingabe = JOptionPane.showConfirmDialog(null,"Die Antwort war " + Fremderarray[i] + " , Hast du du es gewusst","Einverständnis",JOptionPane.YES_NO_CANCEL_OPTION);
- System.out.println(eingabe);
- if( eingabe==0) {
- Richtige_Vokabeln++;
- }
- if (eingabe==1) {
- JOptionPane.showMessageDialog(null, "Richtig wäre " + Fremderarray[i] + " Gewesen");
- }
- if (eingabe==2) {
- Richtige_Vokabeln=0;
- break;
- }
- }
- floatProzent=GetProzentsatz();
- floatProzent= Math.round(floatProzent);
- System.out.println("FloatProzent: "+floatProzent);
- Prozentlabel.setText("Status: " + floatProzent + "%");
- }
- else {
- JOptionPane.showMessageDialog(null, "Keine Vokabeln Vorhanden");
- }
- }
- public void laden(){
- try {
- String ladener = JOptionPane.showInputDialog("Welche Lektion soll geladen werden ?");
- FileInputStream in = new FileInputStream(ladener);
- ObjectInputStream s = new ObjectInputStream(in);
- Aktuelle = (Vokabel_Eintrag)s.readObject();
- JOptionPane.showMessageDialog(null, ladener +".datei wurde geladen");
- } catch (Exception e) {
- JOptionPane.showMessageDialog(null,"konnte nicht geladen werden");
- }
- }
- }
Die Vokabeleintrag Klasse:
Quellcode
- import java.io.Serializable;
- public class Vokabel_Eintrag implements Serializable
- {
- String[] DeutscheVokabeln;
- String[] FremdsprachigeVokabeln;
- String Lektionname;
- public void SetDeutscheVokabeln(String[] DeutscheVokabeln) {
- this.DeutscheVokabeln=DeutscheVokabeln;
- }
- public String[] GetDeutscheVokabeln() {
- return DeutscheVokabeln;
- }
- public void SetFremdsprachigeVokabeln(String[] FremdsprachigeVokabeln) {
- this.FremdsprachigeVokabeln=FremdsprachigeVokabeln;
- }
- public String[] GetFremdsprachigeVokabeln() {
- return FremdsprachigeVokabeln;
- }
- public void SetLektionname(String Lektionname) {
- this.Lektionname=Lektionname;
- }
- public String GetLektionname() {
- return Lektionname;
- }
- }
Mit freundlichen Grüßen
Philip
Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von philip2007 ()