База учетных записей пользователей

Torinoe

Здравствуйте!Я новичок в программировании на С++, но возникла необходимость написать программу со следующим минимальным набором команд: 1)изменение своего пароля, 2)добавление нового пользователя, 3)удаление пользователя, 4)изменение учетной записи пользователя (изменение логина, дополнительных полей учетной записи (может быть пол, увлечения т.е. любые доп. данные о пользователе)), 5)просмотр информации о текущем пользователе, 6)просмотр разрешенной информации о существующих в системе (в базе) пользователей, 7) несколько нейтральных команд (дата, время, список доступных команд системы и т.п.)минимальная функциональность состоит из: 1) пароль не должен быть виден на экране (то есть символы в поле ввода пароля должны выглядеть так ***), 2) в системе всегда присутствует хотя бы один суперпользователь, 3) обыкновенный пользователь ограничен в действиях, 4) добавлением новых пользователей (а также удалением существующих) занимается только суперпользователь (админ), 5) админ может изменять пароли всех пользователей, 6) при изменении/добавлении пароля запрашивается его подтверждение, 7) имена пользователей в системе попарно различны (не повторяются), 8) возможность зайти под другим пользователем, не закрывая приложение, 9) работать в системе может пользователь успешно прошедший аутентификацию. Метод аутентификации: простой пароль + ограничение на время регистрации. На регистрацию / аутентификацию отводится от 30 сек до 1 мин (по выбору).Заранее благодарю!
12 ответов

Torinoe

возникла необходимость написать программу
Кликните здесь для просмотра всего текста
Да.. писать программы хорошо..


Torinoe

Torinoe, уважаемый, вы хотите предложить свой продукт какой-то фирме? или, пардон, тренировка в программировании? и сразу в хард? а где же " HELLO WORLD!" 1: 1) сначала надо представить как будет визуально выглядеть сама форма - расположение на ней вводимых полей и кнопок. 2) сколько будет форм. 3) как программа должна понять где пользователь а где админ. 4) где и как должна сохранятся вводимая информация. 5) а надо ли предусмотреть взлом программы хакерами? когда уже ясная картина, можно продолжать на следующий этап. 2: 1) начни с первого пункта - дойди до его конца. 2) продолжай со следующим , и так до конца последнего пункта. 3) потом слепи все в одно целое , и вуаля радуйся на свое дитя. А здесь только могут помочь с решением в коде.для начинающего прогера это может занять от месяца до многих лет работы до полного полирования и получения желаемого результата. 3: самый простой метод получения желаемого результата - заплатить разработчикам профессионалам. (а это исключает сам смысл "Я новичок в программировании на С++"). 4: а если серьёзно
возникла необходимость написать программу
так, начни с формы, и расположением на ней визуальных компонентов, в последствии добавляя им функции. 5: и самое главное - если на этом форуме помогут с целым кодом ( что станет обще-доступным для всех и в том числе и хакерам) то сам смысл программы.......?


Torinoe

а где же " HELLO WORLD!"
lifeforce, не все так сурово... На самом деле это обычная учебная задача, чуть-чуть посложнее этого самого "Hello, World" Torinoe, как я понимаю, вопрос "что сделано самостоятельно?" задавать бессмысленно... Поэтому уточню один момент: обычно такие задачи предусматривают внешнее хранение данных. Как правило таким хранилищем выступает БД. Как у Вас с этим делом? Есть хоть какие-то минимальные знания? Если использовать БД нельзя, сообщайте, что тогда можно...


Torinoe

Спасибо за ответы. D1973. Можно использовать любую базу данных. А так Вы правы задание не такое сложное, но когда имеешь отдаленное представления о предмете даже относительно простые задания вызывают затруднения. Я не ожидаю, что Кто-то здесь решиться написать данную программу полностью и за бесплатно, но также и Сам пробую её написать, но пока увы мало что получается...


Torinoe

Torinoe, ну и еще бы Вашу версию Билдера знать...


Torinoe

Enterprise Suite 6.0


Torinoe

Блин, так и знал... Тогда ждите, нет сейчас такого Билдера на руках...


Torinoe

Уж не знаю, актуально еще или нет, но Вот что придумалось...
Что она делает?
Ничего! Т.е. ничего хорошего и полезного, но соответствует представленному ТЗ Для входа в программу необходимо ввести логин и пароль. Как и требовалось в ТЗ, время на ввод этих данных ограничено (я поставил 45 сек.) Программа состоит из 10-ти подсистем, в которых (якобы) пользователи работают нужную и важную работу работу. Каждому пользователю открывается доступ только в нужные ему для работы подсистемы, т.е. разные пользователи будут иметь разные наборы доступных подсистем... Еще раз повторю: все эти подсистемы - просто заглушки, никаких действий в них выполнить нельзя, кроме как вызвать на свет божий, а потом закрыть... Все эти подсистемы доступны в главном меню. Кроме "прикладных подсистем" присутствует общая подсистема, которая доступна всем пользователям, кроме администратора. В ней каждый пользователь может ознакомиться со своими учетными данными (только ознакомиться, т.к. все действия по изменению этих данных производит Администратор) и изменить свой пароль входа в систему. Кроме этого, в общей подсистеме можно вызвать на экран калькулятор и календарь. Еще одна подсистема - Администрирование, куда доступ имеет только пользователь с логином ADMIN. Собственно, он больше никуда доступа и не имеет, только в Админку... Это, в принципе, единственная подсистема, в которой можно что-то сделать, а именно 1. Добавить пользователя 2. Изменить данные пользователя (у пользователя ADMIN - лишь частично) 3. Удалить пользователя (нельзя удалить ADMIN-а) 4. Сбросить пароль любого пользователя. Именно так: сбросить, т.е. установить пароль по умолчанию DefPsw, а не поменять силком. При входе пользователя с изначальным паролем он сразу будет перенаправлен в свой "личный кабинет", где самостоятельно придумает и поменяет пароль. Вот, собственно, и все...
Как оно работает
При самом первом входе, когда БД пользователей еще пуста, Вам будет предложено завести нового администратора системы. Это предложение из разряда тех, от которых невозможно отказаться, поэтому соглашаемся. Админ заведен, нас перекидывает в его "личный кабинет", где производится смена пароля на постоянный, после чего от нас требуется войти в систему с логином Admin и только что установленным паролем. Логин, в отличие от пароля, при вводе нечувствителен к регистру, поэтому неважно, как Вы его наберете: Admin, admin или AdMiN. Но вот с паролем такая фишка не прокатит - там регистр важен! Ну а далее - заводим пользователей (вводим ФИО, логин, назначаем права на подсистемы) и завершаем работу Администратора. Можно заходить и "работать" под именем пользователя.


Torinoe

Благодарю Вас! Тема актуальна, Сам продолжаю разбираться.


Torinoe

D1973 Ваш вариант решения задачи, был принят с большим успехом. Хотя есть и другие варианты и вопросы, которые хотелось бы задать лично. Только к сожалению в связи с ограничениями на форуме не могу написать Вам Лс. Могли бы Вы дать Свои контакты (через ЛС), чтобы Я к Вам мог обратиться напрямую? Естественно не бесплатно.


Torinoe

Доработка
Что нового
Добавлена возможность блокировки пользователя. После троекратной попытки войти в программу, вводя неверный пароль, пользователь будет заблокирован и войти в программу не получится даже при верном вводе пароля. Разблокировать пользователя может только ADMIN. Он же может вручную заблокировать любого пользователя системы. История неверных вводов паролей сохраняется, т.е. если пользователь ввел неверный пароль и отказался от входа в программу, ему при следующем запуске программы и попытке входа останется только 2 попытки, неважно сколько времени прошло между этими двумя стартами программы. При корректном входе счетчик неудачных попыток обнуляется. Пользователь ADMIN не блокируется никаким способом. Введены следующие ограничения на пароль пользователя: 1. Новый пароль не менее 6-ти символов 2. Новый пароль должен состоять из букв и цифр. Не допускается пароль только из символов или только из цифр 3. Новый пароль не должен повторять текущий 4. Новый пароль не должен дублировать логин Реализована визуальная индикация разрешенной длины пароля: при вводе нового пароля до тех пор, пока его длина меньше разрешенной, звездочки отображаются красным, далее - зеленым


Torinoe

D1973, мне понравилось решение! и если это учебная задача, хотелось бы посмотреть на глаза препода.