Отчет по лабораторной работе Базы данных. 8 Лаба БД. 8 лаб работа Пользовательский интерфейс
Скачать 3.03 Mb.
|
Авторизация пользователяЕсли приложением пользуется несколько пользователей, причем они имеют разные права доступа к содержимому БД и разные функции, то нужно разработать форму авторизации, которая позволит после ввода логина и пароля открыть разные главные формы для разных типов пользователей. Если введенного сочетания нет в списке пользователей, то выдается сообщение об ошибке и/или меню не выводится. Рассмотрим один из вариантов авторизации пользователя, требующий минимального программирования. Шаг 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 - перечень макрокоманд
Приложение Б |