2016-11-27 3 views
1

Ich mache eine College-Aufgabe für meine Datenstrukturen Programmierklasse. Wir arbeiten in Gruppen für diese Aufgabe, also arbeite ich gerade an einem meiner Teamkollegen-Projekte. Ich habe lokalen READ/WRITE-Code hinzugefügt, damit ich die Arraylist in einer lokalen .dat-Datei speichern kann. Für zusätzliche Markierungen kann ich jedoch erweiterte Dateibearbeitung durchführen.ArrayList zu einer SQL-Datenbank hinzufügen? (FILE MANAGEMENT)

Ich habe mich für einen MySQL-Ansatz entschieden.

Das Programm ist ein CRUD-System für Basketballspieler, wo Sie einen Spieler hinzufügen können, welches Team sie sind, Adresse, Name und Nummer.

Ich habe 5 Klassen. Eine Trainerklasse (die momentan nichts tut), eine Spielerklasse und eine Teamklasse. Diese Klassen haben nur Methoden set, get und toString.

Die letzten 2 Klassen ist die BasketBallSystem Klasse, die alle die GUI hat, Methoden, Menüs usw.

package ie.wit.basketball; 

import java.util.ArrayList; 
import java.util.Iterator; 
import java.util.List; 

import javax.swing.JButton; 
import javax.swing.JComboBox; 
import javax.swing.JLabel; 
import javax.swing.JOptionPane; 
import javax.swing.JTextField; 

public class BasketballSystem { 

public ArrayList<Team> getTeams() { 
    return teams; 
} 

private ArrayList<Team> teams = new ArrayList<>(); 

public BasketballSystem() throws Exception { 
    teams=BasketballFile.ArrayListFromFile(); 
    if (teams.size() == 0) 
    {  Team t = new Team("Golden State Warriors", 10); 
    teams.add(t); 

    t.getPlayers().add(new Player("Donna Kinsella", 666)); 
    t.getPlayers().add(new Player("Tommy White", 21)); 

    t.setTheCoach(new Coach("Tom Jones")); 

    for (Player p : t.getPlayers()) { 
     System.out.println(p.getPlayerName()); 
    } 

    t = new Team("Florida Falcons", 10); 
    t.getPlayers().add(new Player("Don Keating", 76)); 
    t.getPlayers().add(new Player("Tom Green", 22)); 
    teams.add(t); 
    } 

} 

public int menuMain() { 

    JLabel addPlayer = new JLabel("1. Add a Player"); 
    JLabel listPlayers = new JLabel("2. List all Players"); 
    JLabel updateDetails = new JLabel("3. Update Players Details"); 
    JLabel deletePlayers = new JLabel("4. Delete a player"); 
    JLabel exitSys = new JLabel("5. Exit"); 
    JTextField optionField = new JTextField(); 

    Object[] message = new Object[6]; 

    message[0] = addPlayer; 
    message[1] = listPlayers; 
    message[2] = updateDetails; 
    message[3] = deletePlayers; 
    message[4] = exitSys; 
    message[5] = optionField; 

    JOptionPane.showMessageDialog(null, message); 
    try{ 
    return Integer.parseInt(optionField.getText()); 
    } 
    catch(NumberFormatException e) 
    { 
     return 5; 
    } 
} 

public static void main(String[] args) throws Exception { 
    // TODO Auto-generated method stub 
    // new BasketballSystem(); 

    int choice; 

    BasketballSystem b = new BasketballSystem(); 

    do { 

     choice = b.menuMain(); 

     switch (choice) { 
     case 1: 
      b.addPlayer(); 
      break; 
     case 2: 
      b.listPlayers(); 
      break; 
     case 3: 
      b.updatePlayersDetails(); 
      break; 
     case 4: 
      b.removePlayer(); 
      break; 
     case 5: 
      JOptionPane.showMessageDialog(null, "Thank you for using this system."); 
      BasketballFile.ArrayListToFile(b.getTeams()); 
      break; 
     default: 
      JOptionPane.showMessageDialog(null, "Invalid Entry, Please try again."); 
     } 
    } while (choice != 5); 

} 

private void updatePlayersDetails() { 
    // TODO Auto-generated method stub 

    String playerNumber = new String("Player Number"); 
    JTextField number = new JTextField(""); 
    String playerName = new String("Player Name"); 
    JTextField name = new JTextField(""); 
    String playerAddress = new String("Player Address"); 
    JTextField address = new JTextField(""); 

    String[] teamnames = new String[teams.size()]; 
    for (int i = 0; i < teams.size(); i++) 
     teamnames[i] = teams.get(i).getTeamName(); 
    JComboBox<String> teamnamescombo = new JComboBox<String>(teamnames); 

    Object message[] = new Object[6]; 

    message[0] = playerNumber; 
    message[1] = number; 
    message[2] = playerName; 
    message[3] = name; 
    message[4] = playerAddress; 
    message[5] = address; 

    int response = JOptionPane.showConfirmDialog(null, message, "Player Details Update", 
      JOptionPane.OK_CANCEL_OPTION); 

    if (response == JOptionPane.OK_OPTION) { 
     try { 
      int pnum = Integer.parseInt(number.getText()); 
      List<Player> players = teams.get(teamnamescombo.getSelectedIndex()).getPlayers(); 
      Iterator<Player> it = players.iterator(); 

      while (it.hasNext()) { 
       Player p = it.next(); 
       if (p.getPlayerNumber() == pnum) { 
        p.setPlayerName(playerName); 
        p.setPlayerNumber(playerNumber); 
        p.setPlayerName(playerName); 
       } 
       // if (p.getPlayerAddress()==pAdd){ 
       JOptionPane.showMessageDialog(null, "Player's address has been successfully updated"); 
      } 
     } catch (Exception e) { 
      JOptionPane.showMessageDialog(null, "Error: Player number invalid"); 
     } 
    } 
} 

private void removePlayer() { 
    // TODO Auto-generated method stub 

    String playerNumber = new String("Player Number"); 
    JTextField number = new JTextField(""); 

    String[] teamnames = new String[teams.size()]; 
    for (int i = 0; i < teams.size(); i++) 
     teamnames[i] = teams.get(i).getTeamName(); 
    JComboBox<String> teamnamescombo = new JComboBox<String>(teamnames); 

    Object message[] = new Object[3]; 

    message[0] = playerNumber; 
    message[1] = number; 
    message[2] = teamnamescombo; 

    int response = JOptionPane.showConfirmDialog(null, message, "Player Removal", JOptionPane.OK_CANCEL_OPTION); 

    if (response == JOptionPane.OK_OPTION) { 

     int pnum = Integer.parseInt(number.getText()); 
     List<Player> players = teams.get(teamnamescombo.getSelectedIndex()).getPlayers(); 
     Iterator<Player> it = players.iterator(); 

     while (it.hasNext()) { 
      Player p = it.next(); 
      if (p.getPlayerNumber() == pnum) { 
       it.remove(); 
       JOptionPane.showMessageDialog(null, "Player has been successfully removed"); 
      } 
     } 
    } 

} 

private void listPlayers() { 
    // TODO Auto-generated method stub 
    // String 

    for (Team t : teams) // for all teams 
    { 

     System.out.println("Team: " + t.getTeamName()); 
     for (Player p : t.getPlayers()) // for all player 
     { 
      System.out.println(
        "Player: " + p.getPlayerName() + " " + p.getPlayerNumber() + " " + p.getPlayerAddress()); 

     } 
    } 
} 

private void addPlayer() { 
    // TODO Auto-generated method stub 
    // String teamName 
    String playerName = new String("Player name"); 
    String playerNumber = new String("Player Number"); 
    String playerAddress = new String("Player Address"); 
    JTextField name = new JTextField(""); 
    JTextField number = new JTextField(""); 
    JTextField address = new JTextField(""); 

    String[] teamnames = new String[teams.size()]; 
    for (int i = 0; i < teams.size(); i++) 
     teamnames[i] = teams.get(i).getTeamName(); 
    JComboBox<String> teamnamescombo = new JComboBox<String>(teamnames); 

    Object message[] = new Object[7]; 

    message[0] = playerName; 
    message[1] = name; 
    message[2] = playerNumber; 
    message[3] = number; 
    message[4] = playerAddress; 
    message[5] = address; 
    message[6] = teamnamescombo; 

    int response = JOptionPane.showConfirmDialog(null, message, "Player Entry", JOptionPane.OK_CANCEL_OPTION); 

    if (response == JOptionPane.OK_OPTION) { 


     int pnum = Integer.parseInt(number.getText()); 
     Player newPlay = new Player(name.getText(), pnum); 
     teams.get(teamnamescombo.getSelectedIndex()).getPlayers().add(newPlay); 
     JOptionPane.showMessageDialog(null, "Player has been successfully Added"); 
    } 
     { 

     } 
     } 



} 

Die letzte Klasse ist die BasketBallFile Klasse, die die Dateiverwaltung behandelt.

package ie.wit.basketball; 

import java.io.File; 
import java.io.FileInputStream; 
import java.io.FileOutputStream; 
import java.io.ObjectInputStream; 
import java.io.ObjectOutputStream; 
import java.util.ArrayList; 

public class BasketballFile { 

public static void ArrayListToFile(ArrayList<Team> al) throws Exception { 


    try{ 
     File f=new File("mydata.dat"); 
     FileOutputStream fos=new FileOutputStream(f); 
     ObjectOutputStream oos = new ObjectOutputStream(fos); 
     oos.writeObject(al); 

     System.out.println("Written to file!"); 
     oos.close(); 
     fos.close(); 

    }catch(Exception e) { 
     System.out.println("Error: "+e.getMessage()); 
     throw e; 
    } 


} 

public static ArrayList<Team> ArrayListFromFile() throws Exception { 
    ArrayList<Team> al=new ArrayList<Team>(); 

    try{ 
     File f=new File("mydata.dat"); 
     FileInputStream fis=new FileInputStream(f); 
     ObjectInputStream ois = new ObjectInputStream(fis); 
     al=(ArrayList<Team>)ois.readObject(); 

     System.out.println("Read from file!"); 
     ois.close(); 
     fis.close(); 

    }catch(Exception e) { 
     System.out.println("Error: "+e.getMessage()); 

    } 

    return al; 

} 


} 

Ich erwarte, dass nicht du mir genau sagen, wie es zu tun, ich weiß nur nicht, wo ich anfangen soll. Ich habe schon versucht, das zu googeln, und ich habe versucht, Tutorials zu suchen, aber alles, was ich versucht habe, hat nicht funktioniert. Mein Java-Wissen ist sehr einfach, also wenn Sie überhaupt helfen können, wäre das großartig. Vielen Dank.

Entschuldigung, wenn ich die Formatierung nicht richtig gemacht habe, ist es das erste Mal, dass ich diese Webseite benutze. Danke!

+0

Es ist unklar, was Sie fragen, und es scheint eine Antwort wäre sehr breit. Wenn Sie ein bestimmtes Problem mit dem von Ihnen geposteten Code haben, können Sie genauer angeben, wo? Wenn Sie nur nach Hinweisen suchen, wo Sie Hilfe dazu finden können, dann wird dies normalerweise als Thema für SO betrachtet, siehe "Fragen, die uns bitten, ein Buch zu empfehlen oder zu finden" in [hier] (http://stackoverflow.com/help/on-topic). Weitere Hilfe zum Fragen finden Sie in den Links [hier] (http://stackoverflow.com/help/asking). – daphtdazz

Antwort

0

Der Schlüssel zur Datenbankverwaltung in Java ist Java Persistence API. Es ist ein ziemlich großes Thema und persönlich kenne ich es nur aus dem Kontext von Java EE, aber it also works with Java SE.

Mit nur einem grundlegenden Java-Wissen könnte dies ein großer Sprung sein, vielleicht sollten Sie ein gutes Verständnis von relationalen Datenbanken und wie man sie verwendet, bevor Sie in die wunderbare Welt von ORM springen. Für zusätzliche Markierungen in einer College-Zuweisung würde ich wahrscheinlich das Lesen/Schreiben in zufälligen Dateizugriff umwandeln, anstatt die gesamte Liste zusammen in die Datei zu serialisieren. (Was auch nicht einfach ist, aber Sie müssen nicht neue Konzepte lernen.)

Verwandte Themen