Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Тухтаров 08-ВИЭ-1.doc
Скачиваний:
7
Добавлен:
02.05.2019
Размер:
9.7 Mб
Скачать

3.4 Реализация программных модулей подсистемы

Модифицировав структуру базы данных (пункт 3.2), выбрав язык программирования (пункт 3.3), спроектировав интерфейс пользователя (пункт 2.3) приступим к написанию кода программы.

Рассмотрим реализацию некоторых программных модулей т.е. «Вход в систему», «Заставка», «Группы», «Об авторе».

Исходный код подсистемы предоставляется вместе с пояснительной запиской вместе со скомпилиолванным exe-файлом.

3.4.1 Реализация программного модуля «Вход в систему»

Интерфейс представлен на рис. 2.13. На форме располагаются:

  • 2 компонента типа Button;

  • 2 компонента типа Label;

  • 2 компонента типа edit.

Приложение А: Блок-схемы работы программного модуля «Вход в систему».

Код программного модуля «Вход в систему»

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, DB, ADODB;

type

TForm1 = class(TForm)

LoginEdit: TEdit;

passwordEdit: TEdit;

Button1: TButton;

ADOConnection1: TADOConnection;

UserQuery: TADOQuery;

Label1: TLabel;

Label2: TLabel;

Button2: TButton;

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure FormActivate(Sender: TObject);

procedure passwordEditKeyPress(Sender: TObject; var Key: Char);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

Login: string;

Dostp: boolean;

implementation

uses Unit2, UnitKomnata, UnitGruppa;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);

begin

If (LoginEdit.Text<>'') and (PasswordEdit.Text<>'') then //поля не пустые

begin

UserQuery.Active:=false;

UserQuery.Parameters.ParamByName('log').Value:=LoginEdit.Text;

UserQuery.Active:=true;

If UserQuery.RecordCount<>0 then

begin

If UserQuery.FieldByName('Пароль').AsString=PasswordEdit.Text then begin

login:=LowerCase(LoginEdit.Text);

If UserQuery.FieldByName('Доступ').AsString='Да' then Dostp:=true;

If UserQuery.FieldByName('Доступ').AsString='Нет' then Dostp:=false;

form1.Hide;

form2.Show;

end

else

Showmessage('Пароль неверный!');

end;

end

else ShowMessage('Введите имя пользователя и пароль!');//пустые поля

end;

procedure TForm1.Button2Click(Sender: TObject);

begin

application.Terminate;

end;

procedure TForm1.FormActivate(Sender: TObject);

begin

if not DirectoryExists(ExtractFilePath(Application.ExeName)+'Rezerv') then

MkDir(ExtractFilePath(Application.ExeName)+'Rezerv');

CopyFile(PChar(ExtractFilePath(Application.ExeName)+'Base.mdb'), PChar(ExtractFilePath(Application.ExeName)+'Rezerv\Base_'+DateToStr(Now)+'.mdb'), True);

end;

procedure TForm1.passwordEditKeyPress(Sender: TObject; var Key: Char);

begin

//Key - символ, соответствующий нажатой клавише

case Key of

#13: button1.SetFocus; // Клавиша <Enter>

end;

end;

end.