存储重新启动后应用程序会记住的输入数据的最佳选择

时间:2019-01-11 22:09:12

标签: java database file project

我正在创建一个应用程序,学生可以在其中检查其成绩,科目和日历。他们将能够添加未来的新成绩,主题和事件。现在我还不知道。存储该日期的最佳方法是什么,因为重新启动后程序的成绩列表会记住该数据?

保存文件方法对初学者来说足够好吗? :)

这是我的代码示例(您如何看待我将数据保存在对象中以及列表中的对象中)

Classbook.java

Map<String, Subject> subjects = new HashMap<>();

public void addSubject(String name, String lecturer, String room) {
    Subject subject = new Subject(name, lecturer, room);
    subjects.put(name, subject);
}

public void addGrade(String SubjectName, double grade, String forWhat, String type) {
    subjects.get(SubjectName).addGrade(grade, forWhat, type);
}

Subject.java

Map<String, Grade> grades = new HashMap<>();

public void addGrade(double grade, String forWhat, String name) {
    Grade newGrade = new Grade(grade, forWhat);
    grades.put(name, newGrade);
}

Grade.java

public class Grade extends Subject {

double grade = 0;
String forWhat = "";

Grade(double grade, String forWhat) {
    setForWhat(forWhat);
    setGrade(grade);
}

public double getGrade() {
    return grade;
}

public void setGrade(double grade) {
    this.grade = grade;
}

public String getForWhat() {
    return forWhat;
}

public void setForWhat(String forWhat) {
    this.forWhat = forWhat;
}

}

1 个答案:

答案 0 :(得分:2)

最简单的方法是将表示所有应用程序数据的对象转换为可以从文件系统写入和读取的内容。

建议不要使用本机Java序列化,而应使用JSON。您可以使用Gson库。这将需要做一点点的工作,但是一旦将数据保存为JSON即可读取,您就可以直观地检查数据。

public class State {
  private Map<String, Grade> grades = new HashMap<>();
  private Map<String, Subject> subjects = new HashMap<>();
  ...
}

State st. = new State();
st.addGrade(...);
String json = new Gson().toJson(st);

如果您想尝试更具挑战性的方法,请尝试H2 database,但这需要了解SQL或ORM才能将关系映射到对象中。