They gave me a painful laboratory work at the university ((The task is this: write your own database on the subject of "Basketball Team" with the basic functions of the database (delete by ID, insert new records, modify records, etc.).

Now it’s just stuck on deleting information on the ID. Therefore, I ask for help. Yes, and in general I would like some tips on universal writing, database logic, and the like, because for me it is horror.

I will explain my logic to the code imposed below. I write everything in a text document, I created a class for the team and the player, where I prescribe all the functionality. First, using the createTeam () method, I create a certain template in the file, on which I plan to work on. When writing the deleteById () method I encountered the problem that I don’t know how to delete exactly the line that needs to be rewritten into a new file (for comparison, before and after), so that in the end the whole “DB” is not recorded in one long line.

C code, Chicago Bulls command class: import java.io. *;

public class ChicagoBulls {

static class Player{ private int Id; private int Age; private String Name; private String Surname; private int Height; private int Salary; private String KPI; private String Shoes; private int Goals; Player(int id, int age, String name, String surname, int height, int salary, String kpi, String shoes, int goals) { Goals = goals; Id = id; Age = age; Name = name; Surname = surname; Height = height; Salary = salary; KPI = kpi; Shoes = shoes; } public String getShoes() { return Shoes; } public void setShoes(String shoes) { Shoes = shoes; } public int getSalary() { return Salary; } public void setSalary(int salary) { Salary = salary; } public String getKPI() { return KPI; } public void setKPI(String KPI) { this.KPI = KPI; } public int getHeight() { return Height; } public void setHeight(int height) { Height = height; } public String getName() { return Name; } public void setName(String name) { Name = name; } public String getSurname() { return Surname; } public void setSurname(String surname) { Surname = surname; } public int getAge() { return Age; } public void setAge(int age) { Age = age; } public int getId() { return Id; } public void setId(int id) { Id = id; } public int getGoals() { return Goals; } public void setGoals(int goals) { Goals = goals; } } public void createTeam(int quantity) throws Exception { File newFile = new File("NewFile.txt"); FileWriter newFileReader = new FileWriter(newFile); BufferedWriter bufferedWriter = new BufferedWriter(newFileReader); bufferedWriter.write("|ID|\t" + "| AGE |\t" + "| NAME |\t" + "| SURNAME |\t" + "| HEIGHT |\t" + "| SALARY |\t" + "| KPI |\t" + "| SHOES |\t" + "| Goals |\t\n"); int counter = quantity; for (int i = 0; i <= quantity; i++) { Player defaultPlayer = new Player(i, 19, "DefName", "DefSurname", 180, 6000, "Good", "Nike", 0); if (defaultPlayer.getId()<=9) { bufferedWriter.write("|0" + defaultPlayer.getId() + "|\t"); bufferedWriter.write("|" + defaultPlayer.getAge() + " |\t"); bufferedWriter.write("|" + defaultPlayer.getName() + " |\t"); bufferedWriter.write("|" + defaultPlayer.getSurname() + " |\t"); bufferedWriter.write("|" + defaultPlayer.getHeight() + " |\t"); bufferedWriter.write("|" + defaultPlayer.getSalary() + " |\t"); bufferedWriter.write( "|" + defaultPlayer.getKPI() + " |\t"); bufferedWriter.write( "|" + defaultPlayer.getShoes() + " |\t"); bufferedWriter.write( "|" + defaultPlayer.getGoals() + " |\t"); }else{ bufferedWriter.write("|" + defaultPlayer.getId() + "|\t"); bufferedWriter.write("|" + defaultPlayer.getAge() + " |\t"); bufferedWriter.write("|" + defaultPlayer.getName() + " |\t"); bufferedWriter.write("|" + defaultPlayer.getSurname() + " |\t"); bufferedWriter.write("|" + defaultPlayer.getHeight() + " |\t"); bufferedWriter.write("|" + defaultPlayer.getSalary() + " |\t"); bufferedWriter.write( "|" + defaultPlayer.getKPI() + " |\t"); bufferedWriter.write( "|" + defaultPlayer.getShoes() + " |\t"); bufferedWriter.write( "|" + defaultPlayer.getGoals() + " |\t"); } bufferedWriter.newLine(); } bufferedWriter.close(); newFileReader.close(); } public void deleteByID(int id) throws Exception { FileReader file = new FileReader("NewFile.txt"); BufferedReader bufferedReader = new BufferedReader(file); String idLine = bufferedReader.readLine(); int idIndex = idLine.indexOf(id); int nextIdIndex = idLine.indexOf(id + 1); } 

}

Well, the Main public class Main {

 public static void main(String[] args) throws Exception { ChicagoBulls team = new ChicagoBulls(); team.createTeam(30); } 

}

  • Why do not you use any subd? - danilshik
  • Not called this obd, which is much more complicated. - Roman C

1 answer 1

There are a couple of options:

write / read file line by line. For example, line number == id ....

well, or you can read all the lines in a row and look in each of them for the necessary id in order to make some manipulations with this piece of data

You can do another thing. Organize data storage via List and then just serialize / deserialize this list entirely

Below is a very simplified but valid code.

class Player implements Serialable {

 private int Id; private int Age; private String Name; private String Surname; private int Height; private int Salary; private String KPI; private String Shoes; private int Goals; Player(int age, String name, String surname, int height, int salary, String kpi, String shoes, int goals) { Goals = goals; Age = age; Name = name; Surname = surname; Height = height; Salary = salary; KPI = kpi; Shoes = shoes; } public String getShoes() { return Shoes; } public int getSalary() { return Salary; } public String getKPI() { return KPI; } public int getHeight() { return Height; } public String getSurname() { return Surname; } public String getName() { return Name; } public int getAge() { return Age; } public int getId() { return Id; } public int getGoals() { return Goals; } public void setShoes (String shoes) { Shoes = shoes; } public void setSalary (int salary) { Salary = salary; } public void setKPI (String KPI) { this.KPI = KPI; } public void setHeight (int height) { Height = height; } public void setName (String name) { Name = name; } public void setSurname (String surname) { Surname = surname; } public void setAge (int age) { Age = age; } public void setId (int id) { Id = id; } public void setGoals (int goals) { Goals = goals; } 

}

public class DBofPlayers {

 private String file = "players.save"; private List<Player> players = new ArrayList<>(); public void add (Player player) { player.setId( players.size() ); players.add(player); } public void delete (int id) { players.removeIf(player -> player.getId()==id); } public Player get (int id) { return players.get(id); } public int size () { return players.size(); } public void save() { try (ObjectOutputStream bOS = new ObjectOutputStream(new FileOutputStream( file ))) { bOS.writeObject(players); } catch (Exception e) { System.out.println("Ошибка сохранения данных на жесткий диск: " + e.getMessage() ); } } public void load() { try (ObjectInputStream ois = new ObjectInputStream(new FileInputStream(file))) { players = (List<Player>) ois.readObject(); } catch (Exception e) { System.out.println("Ошибка чтения данных с жесткого диска: " + e.getMessage() ); } } 

}

public class Main {public static void main (String [] args) {Player defaultPlayer = new Player (19, "DefName", "DefSurname", 180, 6000, "Good", "Nike", 0);

 DBofPlayers db1 = new DBofPlayers(); db1.add( defaultPlayer ); db1.save(); DBofPlayers db2 = new DBofPlayers(); db2.load(); if (db1.size() == db2.size()) System.out.println("Load data successful"); else System.out.println("Load data wrong!"); System.out.println( db1.get(0) ); db2.delete(0); if (db2.size() == 0) System.out.println("Delete by id successful"); else System.out.println("Delete by id wrong!"); } 

}

  • one
    I'm for option 2! - Olexiy Morenets