Java投票系统

时间:2010-10-25 15:37:23

标签: java database voting-system

我必须用java创建学校投票系统,该系统将用于投票电影。它会让所有用户和电影事先由某人设置。

它是一个控制台应用程序,它将在多台计算机上运行。 我对此有些疑问是:

  1. 我的老师希望我们使用文本文件来维护所有数据这是一个问题吗?切换到像MySQL这样的数据库会更好吗?

  2. 当用户输入他们的登录信息时,程序(a)是否只需在文本文件中查找该人的凭据,然后为该人重新创建该对象,或者(b)是否应重新创建该对象然后所有用户只需检查用户的阵列列表并检查密码?

  3. 或者#2会有更好的方法吗?

4 个答案:

答案 0 :(得分:2)

因为这是一个学校作业/项目,你应该按照教师的指示&规格(获得更好的标记)。如果这是你自己的项目,那么我的建议是将避免文本文件完全作为数据库。

在现实世界中,

  • 如果您想将密码存储在数据库中,我建议使用良好的哈希算法对密码进行哈希处理,例如SHA-512(SHA-2系列的一部分)。此外,如果您决定不将其作为Web应用程序,您将使用HTTPS等安全协议向/从您的应用程序/服务器发送机密信息。

答案 1 :(得分:1)

#2。如果您一次只需要知道一个用户,那么将所有用户加载到内存中就没有任何好处。我这样做的方法是解析用户名,在文件中找到它,然后检查解析的密码是否与为该用户记录的密码相匹配。如果是,请创建对象。您应该在每个阶段检查并发现错误(例如,提供的用户名不合适,用户不存在等)

存储和传输明文密码总是一个坏主意。这可能不是此任务的要求,但在保存之前请考虑hashing密码。然后,不是查找提供的实际密码文本,而是哈希并将其与保存的哈希值进行比较。

答案 2 :(得分:0)

我建议使用XStream,这是一种非常快速且容易将数据保存到磁盘的方法。 XStream只是将您的POJO转换为XML,并允许编组/解组。 XStream的优势在于您的数据仍然可供人阅读,这在您学习编程和进行调试时非常有用。

在这变成性能瓶颈之前你需要拥有大量数据,因为它是功课,我怀疑你会有那么多。我不知道你知道多少编程,但添加一个合适的关系数据库会给你的系统带来很多复杂性。我的建议是你在这里一步一步。数据库充足的时间:))

答案 3 :(得分:0)

  1. 数据库通常具有内置功能,可在多用户方案中保持数据完整性。在您的应用程序中考虑如果两个用户在两台不同的计算机上完全同时投票,文本文件会发生什么。除非您有一个处理文本文件更新的“服务器”进程,否则您需要以某种方式在两个用户之间进行协调,以确保文本文件永远不会被破坏并且两个投票都被计算在内。它可以完成(可能通过使用“锁定”文件),甚至可能是值得的,因为引入数据库需要额外的复杂性。

  2. 目前还不是很清楚你在问什么,但是如果你可以“扫描/搜索”你感兴趣的用户(名字)的文本文件,那么第一眼看上去会更有效率而不是构建每个用户对象只是为了检查匹配的密码。