2016-11-27 27 views
1

我正在爲我的數據結構編程類做一個大學作業。我們正在爲這項任務進行小組工作,所以我目前正在處理我的一個隊友項目。我添加了本地READ/WRITE代碼,因此我可以將arraylist保存到本地.dat文件中。但是,對於額外的標記,我可以進行高級文件處理。將ArrayList添加到SQL數據庫? (文件管理)

我決定做一個MySQL方法。

該計劃是一個籃球運動員CRUD系統,您可以在其中添加球員,他們在哪個球隊,地址,姓名和號碼。

我有5個班。一個教練課(目前什麼都不做),一個球員課和一個球隊課。這些類只有set,get和toString方法。

最後2類是具有所有的GUI,方法,菜單等

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"); 
    } 
     { 

     } 
     } 



} 

最後一類是BasketBallFile類,它處理文件管理BasketBallSystem類。

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; 

} 


} 

我不指望你告訴我究竟該怎麼做,我只是不知道從哪裏開始。我試着用google搜索,我試着搜索教程,但是我試過的一切都不起作用。我的Java知識是非常基礎的,所以如果你能夠提供幫助,那會很棒。謝謝。

對不起,如果我沒有得到格式化的權利,我第一次使用這個網站。謝謝!

+0

目前還不清楚你在問什麼,看起來答案會非常廣泛。如果您發佈的代碼存在特定問題,您可以更具體地瞭解在哪裏?如果您只是在尋找有關如何解決此問題的幫助的指示信息,那麼通常將其視爲非SO主題,請參閱[這裏]中的「有問題要求我們推薦或找到一本書」(http:///stackoverflow.com/help/on-topic)。有關詢問的更多幫助可以在[此處]的鏈接中找到(http://stackoverflow.com/help/asking)。 – daphtdazz

回答

0

Java中數據庫管理的關鍵是Java Persistence API。這是一個相當大的話題,並且我個人只從Java EE的上下文知道它,但是it also works with Java SE

只有基本的Java知識,這可能是一個巨大的飛躍,也許您應該深入瞭解關係數據庫以及如何在跳入ORM的美妙世界之前使用它們。對於大學任務中的額外標記,我可能會將讀/寫變爲隨機文件訪問,而不是將整個列表序列化到文件中。 (這也不容易,但它並不需要你學習新的概念。)