Система голосования Java - PullRequest
       13

Система голосования Java

5 голосов
/ 25 октября 2010

Я должен создать систему голосования для школы с Java, система будет использоваться для голосования за фильмы. Все пользователи и фильмы будут настроены кем-то заранее.

Это консольное приложение, которое будет работать на нескольких компьютерах. Вот некоторые из вопросов, которые у меня есть по этому поводу:

  1. Мой учитель хочет, чтобы мы использовали текстовый файл для хранения всех данных, это будет проблемой? Было бы лучше переключиться на базу данных, такую ​​как MySQL и почему?

  2. Когда пользователь вводит свою регистрационную информацию, должна ли программа (а) просто просмотреть учетные данные человека в текстовом файле и затем заново создать объект для человека или (б) если он воссоздает тогда все пользователи просто проверяют список массивов для пользователя и проверяют пароль?

Или для # 2 Есть ли лучший способ сделать это?

Ответы [ 4 ]

2 голосов
/ 25 октября 2010

Поскольку это школьное задание / проект, вы должны следовать инструкциям и спецификациям учителя (чтобы получить более высокие оценки). Если бы это был ваш собственный проект, то я бы предложил избегать текстового файла в качестве базы данных полностью.

В сценарии реального мира,

  • Если вы хотите хранить пароли в базе данных, я предлагаю хешировать пароль с помощью хороших алгоритмов хеширования, таких как SHA-512 (входит в семейство SHA-2 ). Кроме того, если вы решили не делать это веб-приложением, вы бы отправили конфиденциальную информацию на ваше приложение / сервер по защищенному протоколу, например HTTPS.
1 голос
/ 26 октября 2010

Для № 2. Если вам нужно знать только об одном пользователе за раз, тогда не будет никакой выгоды загружать всех пользователей в память. Мой подход к чему-то подобному: проанализировать имя пользователя, найти его в файле, а затем проверить, совпадает ли проанализированный пароль с паролем, записанным для этого пользователя. Если это так, создайте объект. Вы должны проверять и обнаруживать ошибки на каждом этапе (например, указано неправильное имя пользователя, пользователь не существует и т. Д.)

Хранение и передача незашифрованных паролей - это всегда плохая идея. Это может быть необязательным требованием для этого назначения, но перед сохранением рассмотрите хэширование паролей. Затем вместо того, чтобы искать текст предоставленного фактического пароля, хешируйте его и сравните с сохраненным хешем.

0 голосов
/ 25 октября 2010
  1. База данных обычно имеет встроенные функции для сохранения целостности данных в многопользовательском сценарии. Рассмотрите в своем приложении, что произойдет с текстовым файлом, если два пользователя проголосуют в одно и то же время с двух разных компьютеров. Если у вас нет единого «серверного» процесса, обрабатывающего обновления текстового файла, вам нужно будет каким-то образом координировать действия между двумя пользователями, чтобы убедиться, что текстовый файл никогда не будет поврежден и что оба голоса подсчитаны. Это может быть сделано (возможно, с помощью файла «блокировки») и даже может быть целесообразным, учитывая дополнительную сложность, которая требуется для введения базы данных.

  2. Не очень понятно, о чем вы спрашиваете, но если вы можете «сканировать / искать» текстовый файл для пользователя (имя), который вас интересует, то это будет более эффективным с первого взгляда чем создание каждого пользовательского объекта просто для проверки на соответствующий пароль.

0 голосов
/ 25 октября 2010

Я предлагаю использовать XStream , который является действительно быстрым и простым способом сохранения ваших данных на диске.XStream просто конвертирует ваши POJO в XML и допускает как маршалинг, так и демаршаллинг.Преимущество XStream состоит в том, что ваши данные будут по-прежнему читаться людьми, что может быть полезно, когда вы учитесь программировать и выполняете отладку.

Вам нужно иметь большие объемы данных, прежде чем это превратится в узкое место производительности итак как это домашняя работа, я сомневаюсь, что у тебя будет так много.Я не знаю, сколько вы знаете программирования, но добавление правильной реляционной базы данных добавляет ОЧЕНЬ сложности к вашей системе.Мой совет, что вы делаете один шаг за раз здесь.Много времени для баз данных:)

...