繁体   English   中英

构建我的Java应用程序

[英]Structuring My Java Application

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

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

另外,我计划将该应用程序分发给我的一些朋友,因此我想确保一切对他们来说都可以正常运行,而无需安装任何其他软件(除Java外)。

我通常只是编写命令行脚本,因此对编写这类应用程序很陌生。 任何人都可以提供的任何帮助将不胜感激!

谢谢。

您可以在下面的基本架构下建立像MySql这样的关系数据库。

表:硬币,user_entered_infos,用户

硬币-ID(PK),名称,图像链接

用户-ID(PK),名字,名字

user_entered_infos-ID(PK),coin_id(FK),user_id(FK),user_entered_info

这样,您可以为每种硬币选择,可以从user_entered_infos表中选择所有用户输入的信息并进行查看。 并且当用户从硬币页面添加或删除时,将其从表格中删除。

数据库可能无法满足您的需求,并且本身就是一个完整的学习曲线。 通过某些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;
        }
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM