我正在计划一个Java应用程序,它将存储有关我的硬币集合中的项目的信息和图片。例如,每个硬币都有自己的记录页面。在该页面上将显示文本字段,其中将显示用户输入的信息以及该特定硬币的图片。用户可以选择添加,删除和更新此应用程序中的记录。
我的问题是,如何存储所有这些数据?现在,我已经设计了大部分GUI并且正常工作。但我不确定存储和组织每条记录的所有数据和图像的“正确”方法。我是否应该在创建记录时将此数据推送到SQL数据库中,然后在用户浏览该记录时从中拉出数据?或者我应该创建某种目录结构,其中每个记录都有自己的目录,其中包含图像和所有数据字段的文本文件?
另外,我打算将这个应用程序分发给我的一些朋友,所以我想确保一切都能正常运行,而不必安装任何其他软件(除了Java)。
我很擅长编写这些类型的应用程序,因为我通常只编写命令行脚本。任何人都可以提供任何帮助将不胜感激!
谢谢。
答案 0 :(得分:0)
你可以拥有一个像MySql这样的关系数据库,具有以下基本架构。
表:硬币,user_entered_infos,用户
硬币 - Id(PK),name,image_link
用户 - Id(PK),first_name,second_name
user_entered_infos - Id(PK),coin_id(FK),user_id(FK),user_entered_info
通过这种方式,您可以选择每个硬币,您可以从user_entered_infos表中选择所有用户输入的信息并查看它。当用户在硬币页面中添加或删除时,将其从表格中删除。
答案 1 :(得分:0)
数据库可能对您的需求而言过于苛刻,并且本身就是一个完整的学习曲线。使用Java的内置对象序列化,您可能会得到您所拥有的。序列化是将对象保存到文件或将其传递给其他应用程序的简便方法。
请考虑以下代码,以了解如何解决此问题。我确信你有比我要向你展示的更详细的对象,这段代码的目的是让你大致了解如何序列化对象并保存它。
import java.io.*;
import java.util.ArrayList;
public class CoinCollectionApp {
static File collectionFile = new File("path/to/file/coin-collection.obj");
public static void main(String[] args) {
ArrayList<Coin> coins = new ArrayList<>();
Coin lincolnPenny = new Coin("Lincoln penny", 1955, "fine");
coins.add(lincolnPenny);
saveCollection(coins);
}
static void saveCollection(ArrayList<Coin> coinCollection) {
try {
FileOutputStream fout = new FileOutputStream(collectionFile);
ObjectOutputStream oos = new ObjectOutputStream(fout);
oos.writeObject(coinCollection);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
static class Coin implements Serializable {
private static final long serialVersionUID = 1L;
String name;
int year;
String quality;
public Coin(String name, int year, String quality) {
this.name = name;
this.year = year;
this.quality = quality;
}
}
}