- •Методические указания к выполнению лабораторных работ по дисциплине
- •1. При проектировании используйте примеры программного кода непосредственно из исходных текстов программ, а не из методических описаний (*.Doc файла)
- •2. Имена отдельным модулям лучше давать по их функциональности, а не оставлять так как они даются по умолчанию (Unit1.Pas, Unit2.Pas и т.Д.)
- •3. При возникновении каких-либо ошибок в процессе выполнения работы проверьте по исходному примеру, все ли модули подключены в разделах interface и implementation, подразделе uses.
- •Теоретическое введение
- •Создание структуры таблиц бд
- •3.3 Синтез иконки прикладного приложения
- •3.4 Размеры экранных форм и их положение на экране
- •3.5 Разработка подчинённых форм
- •Создание формы
- •Размеры и положение
- •Работа приложения с бд
- •Доступ к таблицам бд. Компоненты доступа к данным. Приложение
- •AdoDataSet (Набор данных) или adoQuery (Запрос)
- •Сохранение пути к бд
- •Работа с данными
- •Обработка данных
- •Сортировка
- •Отчёты и обработки
- •Запросы, содержащие вычисления на выделенных записях таблицы (по столбцам)
- •В обработке события OnClick кнопки Button необходимо прописать следующее:
- •Разграничение прав доступа для различных пользователей
- •Организация многопользовательского режима
Разграничение прав доступа для различных пользователей
Разграничение прав доступа подразумевает доступность различных функций ИС тем или иным пользователям. Идентификация и аутентификация пользователей производится по его имени («логин») и паролю.
Для организации разграничения прав доступа следует создать новую таблицу PWDTBL в базе данных, которая содержит три поля: USER_ID (код пользователя) USER (Имя пользователя), PASS (Пароль).
Рисунок 36 – Таблица пользователей
Далее следует создать новую форму. Форму MainForm необходимо в опциях проекта (Project → Options… или нажать Shift + Ctrl + F11), на вкладке Forms переместить из списка автоматически создаваемых в список доступных. Получится, что автоматически создаются только 2 формы DM и форма входа.
Добавим модуль данных ещё один компонент ADOQuery с вкладки ADO и компонент DataSource с вкладки Data Access. В свойстве DataSet компонента DataSource1 из выпадающего списка выберем ADOQuery1, в свойстве Connection компонента ADOQuery1 из выпадающего списка выберем ADOConnection1. В свойство SQL компонента ADOQuery1 внесём: SELECT * FROM PWDTBL.
Установим свойство формы BorderStyle в значение bsNone, стобы у формы не было границ.
Поместим на форму компоненты DBLookupComboBox , Edit (ввести в свойство PasswordChar, например,*, чтобы при вводе пароля вводимые знаки были скрыты этим символом) и две кнопки BitBtn или просто Button, по вкусу. В результате должно получиться примерно то, что показано на рисунке 37. Установим свойства компонента DBLookupComboBox1:
KeyField: USER_ID
ListSource: DM.DataSource1
ListField: USER
Рисунок 37 – Форма входа
По событию показа формы onShow необходимо подключится к базе, считав из неё список пользователей с помощью запроса в ADOQuery1. Таким образом, список пользователей отобразится в DBLookupComboBox1.
Процедура сверки пароля осуществляется следующим образом: после выбора пользователя из выпадающего списка DBLookupComboBox1 осуществляется запрос на выборку из таблицы PWDTBL записи с указанным пользователем. Далее сохраняется пароль указанный в выбранной записи. После ввода и подтверждения (кнопка «Войти») пароля введённый пароль сравнивается с сохранённым. Если пароль совпадает, то устанавливаются ограничения в виде деактивации пунктов главного меню в соответствии с выбранным пользователем. Если пароль не совпадает, то нужно выдать соответствующее сообщение.
Организация смены пароля
Создадим новую форму PassChange для организации смены пароля. В опциях проекта (Project → Options… или нажать Shift + Ctrl + F11), на вкладке Forms ее необходимо переместить из списка автоматически создаваемых в список доступных.
Поместим на форму компоненты DBLookupComboBox , Edit1, Edit2, Edit3 (ввести в свойство PasswordChar, например,*, чтобы при вводе пароля вводимые знаки были скрыты этим символом) и две кнопки BitBtn . В результате должно получиться примерно то, что показано на рисунке 38. Установим свойства компонента DBLookupComboBox1:
KeyField: USER_ID
ListSource: DM.DataSource1
ListField: USER
Рисунок 38 – смена пароля
При выборе пункта меню “Смена пароля” на главной форме необходимо прописать следующее (при этом добавить модуль Unit_PassChange в раздел Uses).
procedure TMainForm.ChPassNClick(Sender: TObject); // Пункт меню "Смена пароля" begin PassChange:=TPassChange.Create(self); PassChange.ShowModal; end; |
По событию показа формы onShow необходимо подключится к базе, считав из неё список пользователей с помощью запроса в ADOQuery1. Таким образом, список пользователей отобразится в DBLookupComboBox1.
Процедура сверки пароля осуществляется таким же образом, как и при входе. Плюс к этому еще происходит процедура сверки ввода нового пароля и его повтора.