Отчет по лабораторной работе Базы данных. 8 Лаба БД. 8 лаб работа Пользовательский интерфейс
![]()
|
Авторизация пользователяЕсли приложением пользуется несколько пользователей, причем они имеют разные права доступа к содержимому БД и разные функции, то нужно разработать форму авторизации, которая позволит после ввода логина и пароля открыть разные главные формы для разных типов пользователей. Если введенного сочетания нет в списке пользователей, то выдается сообщение об ошибке и/или меню не выводится. Рассмотрим один из вариантов авторизации пользователя, требующий минимального программирования. Шаг 1. Сначала необходимо создать 2 таблицы, в которых хранятся данные о пользователях и их типах (рисунок 21): ![]() ![]() Рисунок 21 – структура таблиц users, userType Пример содержания таблиц показан на рисунке 22.
Рисунок 22 – содержание таблиц Типы пользователей кодируются числами: администратор БД имеет тип 0, продавцы – тип 1, менеджер - тип 2. Внесите в таблицу хотя бы одного пользователя с типом 0, который сможет зарегистрировать всех остальных. Только пользователь «админ» имеет доступ к списку пользователей и может добавлять или редактировать в нем данные. Обратите внимание, что в поле frm указаны названия форм и таблицы, которые должны быть открыты после успешной авторизации пользователя. Указанные формы реализуют главное меню для продавцов, менеджеров и администратора БД. При вводе названия объекта БД в поле типа «Гиперссылка» Access автоматически связывает этот объект с содержимым поля. Поэтому при заполнении таблицы UserType Вы уже должны знать имена главных форм для разных типов пользователей. Шаг 2. Создадим пустую форму frmAutor для авторизации пользователя (рисунок 23). ![]() Рисунок 23 - форма авторизации frmAutor Действие кнопки «Вход» опишем на следующем шаге настройки формы. Действие кнопки «Закрыть приложение» выбирается с помощью мастера (макрокоманда «Выйти из Access»). Поле0 и Поле2 служат для ввода логина и пароля. Поле2 должно иметь маску ввода «Пароль», чтобы вводимые символы не отображались. Поле8 предназначено для вывода гиперссылки на меню пользователя, его данные мы определим на следующем шаге, а пока установим свойство «Блокировка» = «Да», чтобы пользователь не мог внести изменения в это поле. Уберем лишние элементы оформления формы. На вкладке «Макет» в окне свойств формы установите значения свойств: Область Выделения - «Нет», Кнопки навигации - «Нет», Полосы прокрутки – отсутствуют, Подпись - Авторизация. Шаг 3. Настройка формы и ее элементов. Создадим источник записей для формы: запрос, который связывает обе таблицы, выводит все их поля и отбирает записи в соответствии с введенными логином и паролем. Для этого найдем свойство формы «Источник записей» и перейдем по кнопке с многоточием в построитель запросов (рисунок 24). ![]() Рисунок 24 – конструирование запроса – источника данных для формы frmAutor После закрытия построителя в свойстве «источник записей» формы окажется SQL-запрос: SELECT users.login, users.parol, userType.frm AS [Открыть меню] FROM userType INNER JOIN users ON userType.type = users.type WHERE (((users.login)=[Формы]![frmAutor]![Поле0]) AND ((users.parol)=[Формы]![frmAutor]![Поле2])); Поле frm переименовано для удобства пользователя. Далее выберите на макете формы элемент Поле8 и в окне свойств определите свойство «Данные» (рисунок 25). ![]() Рисунок 25 – установка источника данных для Поля8 Поскольку при открытии формы в поля логина и пароля пустые, то результат запроса будет NULL, а в Поле 8 также ничего не будет выведено. Шаг 4. Создание макроса «Авторизация» для кнопки «Вход». На ленте Access выберите кнопку Создание / Макрос. Добавьте макрокоманды «Применить фильтр», условную конструкцию «Если» и «Окно сообщения» (рисунок 26). Приведен пример для Access 2016, в более ранних версиях условие макроса определяется в отдельном столбце. ![]() Рисунок 26 – создание макроса «Авторизация» Здесь поля формы сравниваются с полями источника записей формы, эта команда заставит форму еще раз пересчитать условия отбора данных после изменения введенных логина и пароля. Если пользователь ввел корректные данные, то будет обновлено значение Поля8 (ссылка на меню). В противном случае это поле останется пустым, в результате будет выведено окно сообщения об ошибке и звуковой сигнал. Макрос сохраним под именем «Авторизация». Выберите в режиме конструктора на форме авторизации кнопку «Вход», найдите в окне свойств События / Нажатие кнопки, выберите из списка макрос «Авторизация». Теперь кнопка будет запускать этот макрос. Примеры ввода данных приведены на рис.27. ![]() а) форма авторизации после открытия ![]() Б) введены правильные значения ![]() В) введены неправильные значения Рисунок 27 – примеры авторизации пользователя В заключение можно поработать над дизайном: - для поля8 сделать прозрачной заливку и контур, как на рис.27-б и в, - создать главную форму для администратора БД и заменить ею вывод таблицы users, - в настройках свойств базы данных указать форму авторизации как первую загружаемую форму приложения и т.д. Контрольные вопросыКакие элементы управления можно использовать для организации пользовательского меню программы? Что такое «событие» в программе? Какие события вы использовали для управления логикой программы? Какие события обрабатываются формой? Каков алгоритм работы событийно-управляемой программы? Как программируются реакции программы на действия пользователя с элементами экранной формы? Поясните понятие «актер», «прецедент» на use-case-диаграмме. Какие типы связей допускаются на use-case-диаграмме? Почему use-case-диаграмму можно использовать в качестве модели пользовательского интерфейса программы? Сравните модель пользовательского интерфейса в виде иерархической диаграммы с диаграммой прецедентов: найдите их сходства и отличия. Какие существуют способы реализации помощи пользователю? Что такое макрос и чем он отличается от процедуры обработки событий? Приложение А. Макрокоманды AccessТаблица А1 - перечень макрокоманд
Приложение Б |