构建我的Java应用程序

时间:2017-07-19 19:31:43

标签: java swing

我正在计划一个Java应用程序,它将存储有关我的硬币集合中的项目的信息和图片。例如,每个硬币都有自己的记录页面。在该页面上将显示文本字段,其中将显示用户输入的信息以及该特定硬币的图片。用户可以选择添加,删除和更新此应用程序中的记录。

我的问题是,如何存储所有这些数据?现在,我已经设计了大部分GUI并且正常工作。但我不确定存储和组织每条记录的所有数据和图像的“正确”方法。我是否应该在创建记录时将此数据推送到SQL数据库中,然后在用户浏览该记录时从中拉出数据?或者我应该创建某种目录结构,其中每个记录都有自己的目录,其中包含图像和所有数据字段的文本文件?

另外,我打算将这个应用程序分发给我的一些朋友,所以我想确保一切都能正常运行,而不必安装任何其他软件(除了Java)。

我很擅长编写这些类型的应用程序,因为我通常只编写命令行脚本。任何人都可以提供任何帮助将不胜感激!

谢谢。

2 个答案:

答案 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;
        }
    }
}