2016-11-27 4 views
1

私は私のデータ構造プログラミングクラスのために大学の割り当てをしています。私たちはこの任務のためにグループで作業しているので、私は現在、チームメイトのプロジェクトの一つを取り組んでいます。 arraylistをローカルの.datファイルに保存できるように、ローカルのREAD/WRITEコードを追加しました。しかし、余分なマークのために、私は高度なファイル操作を行うことができます。ArrayListをSQLデータベースに追加しますか? (FILE MANAGEMENT)

私はMySQLのアプローチを行うことに決めました。

このプログラムはバスケットボール選手のCRUDシステムで、プレーヤー、チーム、アドレス、名前、番号を追加できます。

私は5つのクラスを持っています。コーチクラス(現在何もしていない)、プレーヤークラス、チームクラス。これらのクラスには、set、get、toStringメソッドしかありません。

最後の2つのクラスは、等すべてのGUIを有するBasketBallSystemクラス、メソッド、メニュー、

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クラスです。

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; 

} 


} 

私はあなたにそれを行う方法を正確に教えてくれると期待していません。私はちょうどどこから始めるべきか分かりません。私はすでにこれをグーグルで試してみましたが、チュートリアルの検索を試みましたが、試したすべてがうまくいきませんでした。私のJavaの知識は非常に基本的なものなので、もしあなたが全く助けてくれれば、それは素晴らしいことです。ありがとうございました。

申し訳ありませんが、私はこのフォーマットを正しく取得できませんでした。このウェブサイトを初めて使用しました。ありがとうございました!

+0

あなたが何を求めているのかは不明です。答えは非常に広いと思われます。投稿したコードに特定の問題がある場合は、どこを具体的にすることができますか?あなたがこれについてどうやって行くかについての助けをどこで見つけるべきかについてのポインタを探しているのであれば、それは通常SOのトピックではないと考えられます。「ここで」(http: /stackoverflow.com/help/on-topic)。質問の詳細は、[here](http://stackoverflow.com/help/asking)のリンクを参照してください。 – daphtdazz

答えて

0

Javaのデータベース管理の鍵はJava Persistence APIです。これは非常に大きな話題ですが、個人的にはJava EEのコンテキストからしかわかりませんが、it also works with Java SEです。

基本的なJavaの知識だけでは、これは大きな飛躍である可能性があります。多分、ORMの素晴らしい世界に飛び込む前に、リレーショナルデータベースの使い方や使い方を理解する必要があります。大学の割り当ての余分なマークのために、私はたぶんファイル全体にリストをシリアライズするのではなく、ランダムなファイルへのアクセスを読み書きすることになるでしょう。 (これも簡単ではありませんが、新しい概念を学ぶ必要はありません)

関連する問題