Применение Borland Delphi для разработки интерфейса

№70-1,

физико-математические науки

В данной рассмотрена разработка программного приложения автоматизированного рабочего места менеджера по продаже автомобилей, организующего доступ к базе данных по работе с клиентами автомобильного салона. Приложение реализовано в современной и перспективной среде разработки Delphi, связь которого с базой данных Access осуществляется с использованием компонент Ado.

Похожие материалы

В данной работе был спроектирован и реализован проект автоматизированного рабочего места менеджера по продаже автомобилей, которое представляет собой программное приложение, организующее доступ к базе данных по работе с клиентами автомобильного салона.

Взаимодействие пользователя с системой осуществляется в диалоговом режиме [1-4]. При запуске программы выводится следующее окно, предлагающее пройти авторизацию и аутентификацию для начала работы (Рис. 1)

О программе
Рисунок 1. О программе

Механизм авторизации и аутентификации реализован следующим образом.

procedure Tfrmlogin.BitBtn1Click(Sender: TObject);
var salt,pass:shortString;
begin
   with dmMain do begin
     Q1.Sql.Clear;
     Q1.Sql.Add('SELECT * FROM `user` WHERE login= :Plogin');
     Q1.Parameters.ParamByName('Plogin').Value:=edtLogin.Text;
     Q1.Open;
     If Q1.RecordCount=0 then
          MessageDlg('Неверное имя пользователя',mtError,[mbOk],0)
     else
     begin
       salt:=Q1.FieldValues['salt'];
       pass:=copy(salt,1,5)+edtPassword.text+copy(salt,6,5);
          if md5string(pass)<>Q1.FieldValues['pass'] then
          MessageDlg('Неверный пароль',mtError,[mbOk],0)
       else
       begin
         if not q1.FieldValues['active'] then
           MessageDlg('Ваша учетная запись отключена!!!'#10#13'Обратитесь к директору салона',mtError,[mbOk],0)
         else
         begin
         userid:=Q1.FieldValues['id'];
         UserName:=Q1.FieldValues['fio'];
         UserLogin:=Q1.FieldValues['login'];
         Userpost:=Q1.FieldValues['post'];
         Autorizationneeded:=false;
         Q2.SQL.Clear;
         Q2.SQL.Add(SQLUpdate([Variant(Now)],'user',['doll'],'`id`='+IntTostr(userid)));
         Q2.ExecSQL;
          frmLogin.ModalResult:=mrOk;
           end;
        end;
     end;
     edtPassword.Clear;
     Q1.Close;
   end;
end;

Сначала составляется запрос на поиск в таблице пользователей записи с заданным логином. Если результат запроса пустой, то значит логин введен неверно, в противном случае извлекает значение поля salt (соль) и password (хэш пароля). Из введенного пользователем пароля и соли строится новая строка, от которой затем берется хэш-функция md5 и результат сравнивается с тем, что был сохранен. Соль для пароля генерируется для каждого пользователя в виде случайной десятисимвольной строки и служит для защиты от «слабых» паролей и «радужных» таблиц.

Главная форма приложения имеет следующий вид:

Главная форма приложения
Рисунок 2. Главная форма приложения

Пункт «Пользователи» (Рис. 2) позволяет управлять пользователями системы (для администратора) или сменить пароль для входа в систему для текущего пользователя (для менеджера по продажам). Управление пользователями состоит в добавлении, редактировании, временном отключении учетных записей пользователей. (Рис. 3).

Менеджер пользователей
Рисунок 3. Менеджер пользователей

Процедура смены пароля для выбранного пользователя:

procedure TfrmUserList.btnPassClick(Sender: TObject);
var pass,cpass, salt,cmdStr:string;
begin
   pass:='';cpass:='';
   if InputQuery('Смена пароля','Введите новый пароль', pass) then
     if pass='' then MessageDlg('Пароль не может быть пустым',mtError,[mbcancel],0)
       else
     if InputQuery('Смена пароля','Повторите пароль пароль', cpass) then
     if pass<>cpass then MessageDlg('Пароли не совпадают',mtError,[mbcancel],0)
     else
     begin
       salt:=generatesalt(10);
       pass:=md5string(copy(salt,1,5)+pass+copy(salt,6,5));
cmdStr:=SQLUpdate([pass,salt],'user',['pass','salt'],'`id`='+inttostr(dmMain.Q1.FieldValues['id']));
       with dmMain do
       begin
         Q2.Close;
         Q2.SQL.Clear;
         Q2.SQL.Add(cmdStr);
         Q2.ExecSQL;
       end;
       MessageDlg('Пароль успешно изменен',mtInformation,[mbOk],0);
     end;
end;

Пункт «Процесс продаж» (Рис. 2). При выборе данного пункта на экране появляется форма, которая позволит просматривать ход продаж за текущий день: плановое время события, менеджер, клиент, к какой стадии и рабочему листу принадлежит это событие, а также сведения о выполнении данного события (Рис. 4).

Просмотр информации о процессе продаж
Рисунок 4. Просмотр информации о процессе продаж

Кнопка «Рабочие листы» (Рис. 2) позволит просмотреть информацию о рабочих листах, стадиях и событиях, привязанных к этому листу (Рис. 5). В режиме администратора можно видеть информацию по всем менеджерам, а в режиме менеджера — только свои листы.

Просмотр информации о рабочих листах
Рисунок 5. Просмотр информации о рабочих листах

Кнопка «Отчеты» (Рис. 2) позволит просмотреть статистические данные по результатам работы каждого менеджера и центра в целом (Рис. 6). Причем можно выбирать период отчета: сегодня, вчера, за неделю, за месяц, кварта, год иди за все время.

Статистические данные по менеджерам и центру в целом
Рисунок 6. Статистические данные по менеджерам и центру в целом

Кнопка «Клиенты» (Рис. 2) позволят управлять данными о клиентах дилерского центра (Рис. 7). Данные можно добавлять, редактировать, фильтровать по заданным критериям. Удаление данных запрещено по причине ограничения на ссылочную целостность.

Клиенты дилерского центра
Рисунок 7. Клиенты дилерского центра

Таком образом, проект реализован в современной и перспективной среде разработки Delphi, связь которого с базой данных Access осуществляется с использованием компонент Ado. Подобный подход позволил использовать данное приложение на большинстве компьютеров без установки дополнительного программного обеспечения. В проекте разработан удобный, интуитивно понятный интерфейс, не требующий дополнительного обучения для работы с ним.

Список литературы

  1. Айнуров К.И. Использование информационных технологий в обучении. – Магнитогорск.: МГПУ, 2014. – 85 с.
  2. Викторов С.У. Развитие информационных технологий.– Пермь: ЛНА, 2011. – 74 с.
  3. Хусаинов И.Г., Рахимова Р.А. Роль интерактивных технологий на уроках информатики в развитии этического воспитания учащихся // Современные проблемы науки и образования. – 2015. – № 3. – С. 488.
  4. Хусаинова Г.Я. Исследование температурных полей при стационарном течении аномальных жидкостей // Автоматизация. Современные технологии. 2016. № 7. С. 13-16.