我正在爲我的數據結構編程類做一個大學作業。我們正在爲這項任務進行小組工作,所以我目前正在處理我的一個隊友項目。我添加了本地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知識是非常基礎的,所以如果你能夠提供幫助,那會很棒。謝謝。
對不起,如果我沒有得到格式化的權利,我第一次使用這個網站。謝謝!
目前還不清楚你在問什麼,看起來答案會非常廣泛。如果您發佈的代碼存在特定問題,您可以更具體地瞭解在哪裏?如果您只是在尋找有關如何解決此問題的幫助的指示信息,那麼通常將其視爲非SO主題,請參閱[這裏]中的「有問題要求我們推薦或找到一本書」(http:///stackoverflow.com/help/on-topic)。有關詢問的更多幫助可以在[此處]的鏈接中找到(http://stackoverflow.com/help/asking)。 – daphtdazz