Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Код, що складається з протестованих модулів.

Поиск

Для реалізації системи СОСtrial було обрано середовище швидкої розробки програм для Windows Code Gear RAD Studio 2009, оскільки, є воно зручним у використанні і включає в себе великий набір стандартник компонент, які значно спрощують і пришвидшують процес розробки. Також в цьому середовищі досить легко будувати зручний інтерфейс.

Дане середовище програмування дає змогу швидко створювати програми мовою Delphi. Синтаксис мови Delphi є дуже простим і зрозумілим на відміну від інших мов програмування. Delphi-код легко читати і тестувати, що є дуже актуальним у випадку розробки великих систем, таких як ‘COCtrial’. Мова Delphi добре пристосована до створення Desktop-аплікацій і широко використовується при створенні різноманітних програм під Windows. Також мова Delphi включає в себе набір бібліотек, таких як ADODB, призначених для реалізації систем типу клієнт-сервер і систем які ваємодіють з базами даних.

Клієнт 1

FmMain. Це модуль який відповідає за інтерфейс клієнта 1.

Класи TMain, TAMFrame, TPassDlg, TRBFrame, TSBFrame, що він в себе включає, є класами інтерфейсу тобто класами-формами, які містять методи обробки стандартних подій та методи необхідні для функціонування інтерфейсу.

{ -------- Стандартні бліотеки використані в даному модулі -------- }

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, ComCtrls, sTreeView, acShellCtrls, Menus, StdCtrls,

ImgList, ToolWin, Grids, DBGrids,

ActnList, ExtCtrls, Buttons, ADODB, DBCtrls, Mask, FmAccManager;

{ -------- Підключення модулі розробленого модуля DataModule -------- }

uses

DataModule, AccountManagerDAL, FmOKCANCL, FmPassWord;

· TMain – клас-форма, що включає в себе головне меню, а також фрейми менеджера користувачів (TAMFrame), будівника звітів (TRBFrame) і будівника тестувань та опитувань (TSBFrame).


Форма:

Код:

type

TMain = class(TForm)

ActionList1: TActionList;

Help: TAction;

ImageList1: TImageList;

SignIn: TAction;

SignOut: TAction;

Exit: TAction;

Splitter1: TSplitter;

Settings: TAction;

PopupMenu1: TPopupMenu;

DataBase1: TMenuItem;

DataBase: TAction;

PageControl1: TPageControl;

TabSheet1: TTabSheet;

TabSheet2: TTabSheet;

TabSheet3: TTabSheet;

StatusBar1: TStatusBar;

Frame11: TFrame1;

Splitter2: TSplitter;

CoolBar1: TCoolBar;

ToolBar1: TToolBar;

BitBtn4: TBitBtn;

BitBtn3: TBitBtn;

BitBtn2: TBitBtn;

ToolButton1: TToolButton;

BitBtn5: TBitBtn;

ToolButton2: TToolButton;

BitBtn1: TBitBtn;

procedure HelpExecute(Sender: TObject);

procedure ExitExecute(Sender: TObject);

procedure DataBaseExecute(Sender: TObject);

procedure SignInExecute(Sender: TObject);

procedure SignOutExecute(Sender: TObject);

procedure AboutExecute(Sender: TObject);

procedure SettingsExecute(Sender: TObject);

procedure ToolBar1MouseDown(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

procedure FormShow(Sender: TObject);

end;

 

{ глобальні змінні }

var

P: boolean;

UsersDAL1: UsersDAL;

GroupsDAL1: GroupsDAL;

 

{метод що відображає вікно допомоги}

procedure TMain.AboutExecute(Sender: TObject);

begin

ShowMessage('Developed by Mo3oK:)');

end;

 

{метод що відображає діалогове вікно налаштевання зв’язку з базою}

procedure TMain.DataBaseExecute(Sender: TObject);

begin

DataModule1.Connection.Connected:= false;

DataModule1.UsersStoredProc.Active:= false;

DataModule1.GroupsStoredProc.Active:= false;

DataModule1.Connection.ConnectionString:= ADODB.PromptDataSource(Self.Handle,'');

DataModule1.GroupsStoredProc.Active:= true;

DataModule1.UsersStoredProc.Active:= true;

DataModule1.Connection.Connected:= true;

end;

 

{ метод що відображає діалогове вікно закриття клієнта }

procedure TMain.ExitExecute(Sender: TObject);

begin

OKRightDlg.Label1.Caption:= 'Do you realy want to exit?';

OKRightDlg.ShowModal;

if OKRightDlg.rez = true then

Close

else

OKRightDlg.Close;

end;

 

procedure TMain.FormShow(Sender: TObject);

begin

ShowMessage(inttostr(PasswordDlg.ShowModal));

UsersDAL1:= UsersDAL.Create;

GroupsDAL1:= GroupsDAL.Create;

end;

 

procedure TMain.HelpExecute(Sender: TObject);

begin

ShowMessage('Developed by Mo3oK:)');

end;

 

procedure TMain.SettingsExecute(Sender: TObject);

begin

if P = false then begin

PopupMenu1.Popup(Form1.Left + 186, Form1.Top + 84);

P:= true

end else

P:= false;

end;

 

{метод що проводить логування}

procedure TMain.SignInExecute(Sender: TObject);

begin

ShowMessage('Sing In!');

end;

 

{метод що проводить вихід з системи}

procedure TMain.SignOutExecute(Sender: TObject);

begin

ShowMessage('Sign Out!');

end;

 

procedure TMain.ToolBar1MouseDown(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

begin

P:= false;

end;

· TAMFrame – клас-фрейм менеджера користувачів.

Форма:

Код:

type

TFrame1 = class(TFrame)

PageControl2: TPageControl;

TabSheet4: TTabSheet;

GroupBox2: TGroupBox;

Label3: TLabel;

Label4: TLabel;

Label5: TLabel;

Label6: TLabel;

Label7: TLabel;

ComboBox2: TComboBox;

Panel2: TPanel;

BitBtn6: TBitBtn;

BitBtn7: TBitBtn;

GroupBox1: TGroupBox;

Label1: TLabel;

Label2: TLabel;

Edit1: TEdit;

RadioGroup1: TRadioGroup;

ComboBox1: TComboBox;

Panel1: TPanel;

TabSheet5: TTabSheet;

GroupBox5: TGroupBox;

Labe11: TLabel;

Label13: TLabel;

SpeedButton1: TSpeedButton;

BitBtn12: TBitBtn;

Panel4: TPanel;

GroupBox4: TGroupBox;

Label10: TLabel;

Label12: TLabel;

Label9: TLabel;

BitBtn9: TBitBtn;

Panel3: TPanel;

BitBtn10: TBitBtn;

BitBtn11: TBitBtn;

GroupBox3: TGroupBox;

Label8: TLabel;

Edit2: TEdit;

RadioGroup2: TRadioGroup;

DBGrid2: TDBGrid;

DBGrid1: TDBGrid;

Panel6: TPanel;

Splitter1: TSplitter;

SpeedButton2: TSpeedButton;

Edit4: TEdit;

Edit5: TEdit;

Edit6: TEdit;

Edit7: TEdit;

Edit8: TEdit;

Edit9: TEdit;

Edit3: TEdit;

Edit10: TEdit;

Edit11: TEdit;

SpeedButton3: TSpeedButton;

BitBtn1: TBitBtn;

Panel5: TPanel;

procedure ToolBar1MouseDown(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

procedure RadioGroup1Click(Sender: TObject);

procedure RadioGroup1Enter(Sender: TObject);

procedure ComboBox1Change(Sender: TObject);

procedure Edit1Change(Sender: TObject);

procedure DBGrid1CellClick(Column: TColumn);

procedure TabSheet5Show(Sender: TObject);

procedure TabSheet4Show(Sender: TObject);

procedure DBGrid1KeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);

procedure DBGrid2CellClick(Column: TColumn);

procedure DBGrid2KeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);

procedure SpeedButton1Click(Sender: TObject);

procedure Edit2Change(Sender: TObject);

procedure RadioGroup2Click(Sender: TObject);

procedure DBGrid1TitleClick(Column: TColumn);

procedure DBGrid2TitleClick(Column: TColumn);

procedure DBGrid2StartDock(Sender: TObject;

var DragObject: TDragDockObject);

procedure BitBtn6Click(Sender: TObject);

procedure SpeedButton2Click(Sender: TObject);

procedure BitBtn7Click(Sender: TObject);

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

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

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

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

procedure SpeedButton3Click(Sender: TObject);

procedure BitBtn9Click(Sender: TObject);

procedure BitBtn11Click(Sender: TObject);

procedure BitBtn12Click(Sender: TObject);

procedure BitBtn1Click(Sender: TObject);

public

procedure RefreshUsers;

procedure RefreshGroups;

procedure FillFildsUsers;

procedure FillFildsGroups;

end;

 

var

P: boolean;

UsersDAL1: UsersDAL;

GroupsDAL1: GroupsDAL;

sort: string;

 

procedure TFrame1.DBGrid1CellClick(Column: TColumn);

begin

if PageControl2.ActivePage = TabSheet4 then

GroupsDAL1.GetGroupsByUserId(DBGrid1.Fields[0].AsInteger)

else

FillFildsGroups;

FillFildsUsers;

end;

 

procedure TFrame1.DBGrid1KeyUp(Sender: TObject; var Key: Word;

Shift: TShiftState);

begin

if PageControl2.ActivePage = TabSheet4 then

GroupsDAL1.GetGroupsByUserId(DBGrid1.Fields[0].AsInteger)

else

FillFildsGroups;

FillFildsUsers;

end;

 

 

procedure TFrame1.DBGrid2CellClick(Column: TColumn);

begin

if (PageControl2.ActivePage = TabSheet5) and (SpeedButton1.Down = false) then

Edit3.Text:= IntToStr(UsersDAL1.GetUsersByGroupId(DBGrid2.Fields[0].AsInteger));

FillFildsGroups;

end;

 

procedure TFrame1.DBGrid2KeyUp(Sender: TObject; var Key: Word;

Shift: TShiftState);

begin

if (PageControl2.ActivePage = TabSheet5) and (SpeedButton1.Down = false) then

Edit3.Text:= IntToStr(UsersDAL1.GetUsersByGroupId(DBGrid2.Fields[0].AsInteger));

FillFildsGroups;

end;

//------------ методи для сортування списків ---------------

procedure TFrame1.DBGrid1TitleClick(Column: TColumn);

{$J+}

const PreviousColumnIndex: integer = 0;

{$J-}

begin

if DBGrid1.DataSource.DataSet is TADOStoredProc then

with TADOStoredProc(DBGrid1.DataSource.DataSet) do

begin

if (Pos(string(Column.Field.FieldName), string(Sort)) = 1)

and (Pos(string(' DESC'), string(Sort))= 0) then

Sort:= Column.Field.FieldName + ' DESC'

else

Sort:= Column.Field.FieldName + ' ASC';

end;

end;

 

procedure TFrame1.DBGrid2TitleClick(Column: TColumn);

{$J+}

const PreviousColumnIndex: integer = 0;

{$J-}

begin

if DBGrid2.DataSource.DataSet is TADOStoredProc then

with TADOStoredProc(DBGrid2.DataSource.DataSet) do

begin

if (Pos(string(Column.Field.FieldName), string(Sort)) = 1)

and (Pos(string(' DESC'), string(Sort))= 0) then

Sort:= Column.Field.FieldName + ' DESC'

else

Sort:= Column.Field.FieldName + ' ASC';

end;

end;

//------------------------------------

procedure TFrame1.Edit1Change(Sender: TObject);

begin

RefreshUsers;

end;

procedure TFrame1.Edit1KeyPress(Sender: TObject; var Key: Char);

begin

if ((RadioGroup1.ItemIndex = 0) and not (Key in ['0'..'9',#8])) or

((Length(Edit2.Text) = 9) and (Key <> #8)) then

Key:= #0;

end;

 

procedure TFrame1.Edit2Change(Sender: TObject);

begin

RefreshGroups;

FillFildsGroups;

end;

 

procedure TFrame1.Edit2KeyPress(Sender: TObject; var Key: Char);

begin

if ((RadioGroup2.ItemIndex = 0) and not (Key in ['0'..'9',#8])) or

((Length(Edit2.Text) = 9) and (Key <> #8)) then

Key:= #0;

end;

 

procedure TFrame1.Edit4KeyPress(Sender: TObject; var Key: Char);

begin

if ((RadioGroup1.ItemIndex = 0) and not (Key in ['0'..'9',#8])) or

((Length(Edit4.Text) = 9) and (Key <> #8)) then

Key:= #0;

end;

 

procedure TFrame1.Edit8KeyPress(Sender: TObject; var Key: Char);

begin

if ((RadioGroup2.ItemIndex = 0) and not (Key in ['0'..'9',#8])) or

((Length(Edit8.Text) = 9) and (Key <> #8)) then

Key:= #0;

end;

 

procedure TFrame1.SpeedButton1Click(Sender: TObject);

begin

if SpeedButton1.Down = true then

UsersDAL1.GetUsersByRoleId(3)

else

UsersDAL1.GetUsersByGroupId(DBGrid2.Fields[0].AsInteger);

end;

 

procedure TFrame1.SpeedButton2Click(Sender: TObject);

begin

Edit4.Text:= IntToStr(UsersDAL1.GetFreeUserId);

end;

 

procedure TFrame1.SpeedButton3Click(Sender: TObject);

begin

Edit8.Text:= IntToStr(GroupsDAL1.GetFreeGroupId);

end;

 

procedure TFrame1.TabSheet4Show(Sender: TObject);

begin

DBGrid1.Align:= alNone;

DBGrid2.Align:= alNone;

Splitter1.Align:= alNone;

DBGrid1.Left:= 0;

DBGrid2.Left:= 723;

DBGrid1.Align:= alLeft;

Splitter1.Align:= alLeft;

DBGrid2.Align:= alClient;

RefreshUsers;

FillFildsUsers;

end;

 

procedure TFrame1.TabSheet5Show(Sender: TObject);

begin

DBGrid1.Align:= alNone;

DBGrid2.Align:= alNone;

Splitter1.Align:= alNone;

DBGrid1.Left:= 174;

DBGrid2.Left:= 0;

DBGrid2.Align:= alLeft;

Splitter1.Align:= alLeft;

DBGrid1.Align:= alClient;

RefreshGroups;

FillFildsGroups;

end;

 

procedure TFrame1.ToolBar1MouseDown(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

begin

P:= false;

end;

 

//----------------- Account Manager -> Users -------------------

procedure TFrame1.FillFildsGroups;

begin

Edit8.Text:= IntToStr(DBGrid2.Fields[0].AsInteger);

Edit9.Text:= DBGrid2.Fields[1].AsString;

Edit10.Text:= DBGrid1.Fields[1].AsString;

Edit11.Text:= DBGrid2.Fields[1].AsString;

end;

 

procedure TFrame1.FillFildsUsers;

begin

Edit4.Text:= IntToStr(DBGrid1.Fields[0].AsInteger);

Edit5.Text:= DBGrid1.Fields[1].AsString;

Edit6.Text:= DBGrid1.Fields[2].AsString;

Edit7.Text:= DBGrid1.Fields[3].AsString;

if DBGrid1.Fields[4].AsString = 'Administrator' then ComboBox2.ItemIndex:= 0;

if DBGrid1.Fields[4].AsString = 'Teacher' then ComboBox2.ItemIndex:= 1;

if DBGrid1.Fields[4].AsString = 'Student' then ComboBox2.ItemIndex:= 2;

end;

 

procedure TFrame1.RefreshUsers;

begin

if Edit1.Text = '' then

UsersDAL1.GetUsersByRoleId(ComboBox1.ItemIndex)

else

case RadioGroup1.ItemIndex of

0: UsersDAL1.GetUsersById(StrToInt(Edit1.Text), ComboBox1.ItemIndex);

1: UsersDAL1.GetUsersByName(Edit1.Text, ComboBox1.ItemIndex);

2: UsersDAL1.GetUsersByLogin(Edit1.Text, ComboBox1.ItemIndex);

3: UsersDAL1.GetUsersByPassword(Edit1.Text, ComboBox1.ItemIndex);

end;

GroupsDAL1.GetGroupsByUserId(DBGrid1.Fields[0].AsInteger);

end;

 

procedure TFrame1.RefreshGroups;

begin

if Edit2.Text = '' then

GroupsDAL1.GetGroupsByName

else

case RadioGroup2.ItemIndex of

0: GroupsDAL1.GetGroupsById(StrToInt(Edit2.Text));

1: GroupsDAL1.GetGroupsByName(Edit2.Text);

end;

Edit3.Text:= IntToStr(UsersDAL1.GetUsersByGroupId(DBGrid2.Fields[0].AsInteger));

end;

{- filter -}

procedure TFrame1.BitBtn11Click(Sender: TObject);

begin

OKRightDlg.Label1.Caption:= ' Are you sure?';

OKRightDlg.ShowModal;

if OKRightDlg.rez = true then begin

with GroupsDAL1 do begin

if ((IsInName(Edit9.Text) = 1) and (IsInGroupId(StrToInt(Edit8.Text)) = 1)) or

(IsInName(Edit9.Text) = 1) then

ShowMessage(' This user already exists!')

else begin

if (IsInGroupId(StrToInt(Edit8.Text)) = 1) then

UpdateGroup(StrToInt(Edit8.Text), Edit9.Text)

else

AddGroup(StrToInt(Edit8.Text), Edit9.Text);

RefreshUsers;

end;

end;

end else

OKRightDlg.Close;

end;

 

procedure TFrame1.BitBtn1Click(Sender: TObject);

begin

GroupsDAL1.AddUserToGroup(DBGrid1.Fields[0].AsInteger,DBGrid2.Fields[0].AsInteger);

RefreshUsers;

RefreshGroups;

end;

 

procedure TFrame1.BitBtn12Click(Sender: TObject);

begin

GroupsDAL1.DeleteUserFromGroup(DBGrid1.Fields[0].AsInteger,DBGrid2.Fields[0].AsInteger);

RefreshUsers;

RefreshGroups;

end;

 

procedure TFrame1.BitBtn6Click(Sender: TObject);

begin

OKRightDlg.Label1.Caption:= ' Are you sure?';

OKRightDlg.ShowModal;

if OKRightDlg.rez = true then begin

with UsersDAL1 do begin

if ((IsInLogin(Edit6.Text) = 1) and (IsInUserId(StrToInt(Edit4.Text)) = 1)) or

(IsInLogin(Edit6.Text) = 1) then

ShowMessage(' This user already exists!')

else begin

if (IsInUserId(StrToInt(Edit4.Text)) = 1) then

UpdateUser(StrToInt(Edit4.Text), Edit5.Text, Edit6.Text, Edit7.Text, ComboBox2.ItemIndex + 1)

else

AddUser(StrToInt(Edit4.Text), Edit5.Text, Edit6.Text, Edit7.Text, ComboBox2.ItemIndex + 1);

RefreshUsers;

end;

end;

end else

OKRightDlg.Close;

end;

 

procedure TFrame1.BitBtn7Click(Sender: TObject);

begin

OKRightDlg.Label1.Caption:= ' Are you sure?';

OKRightDlg.ShowModal;

if OKRightDlg.rez = true then begin

UsersDAL1.DeleteUser(StrToInt(Edit4.Text));

RefreshUsers

end else

OKRightDlg.Close;

end;

 

procedure TFrame1.BitBtn9Click(Sender: TObject);

begin

OKRightDlg.Label1.Caption:= ' Are you sure?';

OKRightDlg.ShowModal;

if OKRightDlg.rez = true then begin

GroupsDAL1.DeleteGroup(StrToInt(Edit8.Text));

RefreshUsers

end else

OKRightDlg.Close;

end;

 

 

procedure TFrame1.ComboBox1Change(Sender: TObject);

begin

Edit1.Text:= '';

UsersDAL1.GetUsersByRoleId(ComboBox1.ItemIndex);

end;

{---------}

procedure TFrame1.RadioGroup1Click(Sender: TObject);

begin

Edit1.Text:= '';

Edit1.SetFocus;

end;

 

procedure TFrame1.RadioGroup1Enter(Sender: TObject);

begin

P:= false;

end;

 

procedure TFrame1.RadioGroup2Click(Sender: TObject);

begin

Edit2.Text:= '';

Edit2.SetFocus;

end;

 

TSBFrame – клас-фрейм будівника тестувань та опитувань;

 

TRBFrame – клас-фрейм будівника звітів;

 

TPassDlg – клас-форма логування.


Форма:

Код:

type

TPasswordDlg = class(TForm)

Panel1: TPanel;

GroupBox1: TGroupBox;

Label1: TLabel;

Edit1: TEdit;

Label2: TLabel;

CancelBtn: TButton;

OKBtn: TButton;

Edit2: TEdit;

procedure OKBtnClick(Sender: TObject);

function ShowModal: integer; override;

private

{ Private declarations }

public

{ Public declarations }

end;

 

{глобальні змінні}

var

PasswordDlg: TPasswordDlg, Role_Id: integer;

{метод обробки події натиснення кнопки Enter}

procedure TPasswordDlg.OKBtnClick(Sender: TObject);

var

UsersDAL1: UsersDAL;

begin

UsersDAL1:= UsersDAL.Create;

Role_Id:= UsersDAL1.GetRoleId(Edit1.Text, Edit2.Text);

UsersDAL1.Destroy;

end;

 

function TPasswordDlg.ShowModal: integer;

begin

inherited ShowModal;

ShowModal:= Role_Id;

end;

AccountManagerDAL: Модуль, який відповідає за логування користувачів та адміністрування системи. Він включає в себе два класи: TUsersDAL, TGroupsDAL.

{ -------- Стандартні бліотеки використані в даному модулі -------- }

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls;

{ -------- Підключення модулі розробленого модуля DataModule -------- }

uses

DataModule;

· UsersDAL – клас, що містить методи для роботи з користувацькими записами системи, такі як: GetRoleId (отримати роль користувача), GetFreeUserId (отримати вільне ID користувача), IsInLogin (перевірка, за логіном, наявності запису користувача в базі), IsInUserId (перевірка, за ID, наявності запису користувача в базі), AddUser (добавити користувача), UpdateUser (обновити запис користувача), DeleteUser (видалити запис користувача), GetUsers (отримати список користувачів), GetUsersById (отримати список користувачів за ID), GetUsersByName (отримати список користувачів за іменем), GetUsersByLogin (отримати список користувачів за логіном), GetUsersByPassword (отримати список користувачів за паролем), GetUsersByRoleId (отримати список користувачів за ролю), GetUsersByGroupId (отримати список користувачів за ID групи).

TUsersDAL = class (TObject)

function GetRoleId(Login,Password: string): integer;

function GetFreeUserId: integer;

function IsInLogin(Login: string): integer;

function IsInUserId(UserId: integer): integer;

//------- actions ---------

procedure AddUser(UserId: integer; FullName: string; Login: string; Password: string; RoleId: integer);

procedure UpdateUser(UserId: integer; FullName: string; Login: string; Password: string; RoleId: integer);

procedure DeleteUser(UserId: integer);

//------- view --------

procedure GetUsers;

procedure GetUsersById(UserId: integer; RoleId: integer = 0);

procedure GetUsersByName(Name: string; RoleId: integer = 0);

procedure GetUsersByLogin(Login: string; RoleId: integer = 0);

procedure GetUsersByPassword(Password: string; RoleId: integer = 0);

procedure GetUsersByRoleId(RoleId: integer = 0);

function GetUsersByGroupId(GroupId: integer): integer;

end;

{----------------------------------------------------------------------------------------------------}

{ метод для перевірки, за логіном, наявності запису користувача в базі }

function TUsersDAL.IsInLogin(Login: string): integer;

begin

DataModule1.ActionStoredProc.ProcedureName:= 'IsInLogin';

DataModule1.ActionStoredProc.Parameters.Refresh;

DataModule1.ActionStoredProc.Parameters[1].Value:= Login;

DataModule1.ActionStoredProc.ExecProc;

IsInLogin:= DataModule1.ActionStoredProc.Parameters[0].Value;

end;

 

{ метод для перевірки, за ID, наявності запису користувача в базі }

function TUsersDAL.IsInUserId(UserId: integer): integer;

begin

DataModule1.ActionStoredProc.ProcedureName:= 'IsInUserId';

DataModule1.ActionStoredProc.Parameters.Refresh;

DataModule1.ActionStoredProc.Parameters[1].Value:= UserId;

DataModule1.ActionStoredProc.ExecProc;

IsInUserId:= DataModule1.ActionStoredProc.Parameters[0].Value;

end;

 

{ метод для отримання ролі користувача }

function TUsersDAL.GetRoleId(Login, Password: string): integer;

begin

DataModule1.ActionStoredProc.ProcedureName:= 'GetRoleId';

DataModule1.ActionStoredProc.Parameters.Refresh;

DataModule1.ActionStoredProc.Parameters[1].Value:= 0;

DataModule1.ActionStoredProc.Parameters[2].Value:= Login;

DataModule1.ActionStoredProc.Parameters[3].Value:= Password;

DataModule1.ActionStoredProc.ExecProc;

GetRoleId:= DataModule1.ActionStoredProc.Parameters[1].Value;

end;

 

{ метод для отримання вільного ID користувача }

function TUsersDAL.GetFreeUserId: integer;

begin

DataModule1.ActionStoredProc.ProcedureName:= 'GetFreeUserId';

DataModule1.ActionStoredProc.Parameters.Refresh;

DataModule1.ActionStoredProc.ExecProc;

GetFreeUserId:= DataModule1.ActionStoredProc.Parameters[0].Value;

end;

//----- add --------

 

{ метод для добавлення користувача в базу }

procedure TUsersDAL.AddUser(UserId: integer; FullName: string; Login: string; Password: string; RoleId: integer);

begin

DataModule1.ActionStoredProc.ProcedureName:= 'AddUser';

DataModule1.ActionStoredProc.Parameters.Refresh;

DataModule1.ActionStoredProc.Parameters[1].Value:= UserId;

DataModule1.ActionStoredProc.Parameters[2].Value:= FullName;

DataModule1.ActionStoredProc.Parameters[3].Value:= Login;

DataModule1.ActionStoredProc.Parameters[4].Value:= Password;

DataModule1.ActionStoredProc.Parameters[5].Value:= RoleId;

DataModule1.ActionStoredProc.ExecProc;

end;

 

{ метод для обновлення запису користувача }

procedure TUsersDAL.UpdateUser(UserId: integer; FullName: string; Login: string; Password: string; RoleId: integer);

begin

DataModule1.ActionStoredProc.ProcedureName:= 'UpdateUser';

DataModule1.ActionStoredProc.Parameters.Refresh;

DataModule1.ActionStoredProc.Parameters[1].Value:= UserId;

DataModule1.ActionStoredProc.Parameters[2].Value:= FullName;

DataModule1.ActionStoredProc.Parameters[3].Value:= Login;

DataModule1.ActionStoredProc.Parameters[4].Value:= Password;

DataModule1.ActionStoredProc.Parameters[5].Value:= RoleId;

DataModule1.ActionStoredProc.ExecProc;

end;

 

{ метод для видалення запису користувача з бази }

procedure TUsersDAL.DeleteUser(UserId: integer);

begin

DataModule1.ActionStoredProc.ProcedureName:= 'DeleteUser';

DataModule1.ActionStoredProc.Parameters.Refresh;

DataModule1.ActionStoredProc.Parameters[1].Value:= UserId;

DataModule1.ActionStoredProc.ExecProc;

end;

 

//----- view -------

{ метод для отримання списку користувачів }

procedure TUsersDAL.GetUsers;

begin

DataModule1.UsersStoredProc.Active:= false;

DataModule1.UsersStoredProc.ProcedureName:= 'GetUsers';

DataModule1.UsersStoredProc.Active:= true;

end;

 

{ метод для фільтрації списку користувачів за ID }

procedure TUsersDAL.GetUsersById(UserId: integer; RoleId: integer =0);

begin

DataModule1.UsersStoredProc.Active:= false;

DataModule1.UsersStoredProc.Parameters.Clear;

DataModule1.UsersStoredProc.ProcedureName:= 'GetUsersById';

DataModule1.UsersStoredProc.Parameters.AddParameter.Value:= UserId;

DataModule1.UsersStoredProc.Parameters.AddParameter.Value:= RoleId;

DataModule1.UsersStoredProc.Active:= true;

end;

 

{ метод для фільтрації списку користувачів за іменем }

procedure TUsersDAL.GetUsersByName(Name: string; RoleId: integer = 0);

begin

DataModule1.UsersStoredProc.Active:= false;

DataModule1.UsersStoredProc.Parameters.Clear;

DataModule1.UsersStoredProc.ProcedureName:= 'GetUsersByName';

DataModule1.UsersStoredProc.Parameters.AddParameter.Value:= Name;

DataModule1.UsersStoredProc.Parameters.AddParameter.Value:= RoleId;

DataModule1.UsersStoredProc.Active:= true;

end;

 

{ метод для фільтрації списку користувачів за логіном }

procedure TUsersDAL.GetUsersByLogin(Login: string; RoleId: integer = 0);

begin

DataModule1.UsersStoredProc.Active:= false;

DataModule1.UsersStoredProc.Parameters.Clear;

DataModule1.UsersStoredProc.ProcedureName:= 'GetUsersByLogin';

DataModule1.UsersStoredProc.Parameters.AddParameter.Value:= Login;

DataModule1.UsersStoredProc.Parameters.AddParameter.Value:= RoleId;

DataModule1.UsersStoredProc.Active:= true;

end;

 

{ метод для фільтрації списку користувачів за паролем }

procedure TUsersDAL.GetUsersByPassword(Password: string; RoleId: integer = 0);

begin

DataModule1.UsersStoredProc.Active:= false;

DataModule1.UsersStoredProc.Parameters.Clear;

DataModule1.UsersStoredProc.ProcedureName:= 'GetUsersByPassword';

DataModule1.UsersStoredProc.Parameters.AddParameter.Value:= Password;

DataModule1.UsersStoredProc.Parameters.AddParameter.Value:= RoleId;

DataModule1.UsersStoredProc.Active:= true;

end;

 

{ метод для фільтрації списку користувачів за роллю }

procedure TUsersDAL.GetUsersByRoleId(RoleId: integer = 0);

begin

DataModule1.UsersStoredProc.Active:= false;

DataModule1.UsersStoredProc.Parameters.Clear;

DataModule1.UsersStoredProc.ProcedureName:= 'GetUsersByRoleId';

DataModule1.UsersStoredProc.Parameters.AddParameter.Value:= RoleId;

DataModule1.UsersStoredProc.Active:= true;

end;

 

{ метод для фільтрації списку користувачів за ID групи }

function TUsersDAL.GetUsersByGroupId(GroupId: Integer): Integer;

begin

DataModule1.UsersStoredProc.Active:= false;

DataModule1.UsersStoredProc.Parameters.Clear;

DataModule1.UsersStoredProc.ProcedureName:= 'GetUsersByGroupId';

DataModule1.UsersStoredProc.Parameters.AddParameter.Value:= GroupId;

DataModule1.UsersStoredProc.Active:= true;

Result:= DataModule1.UsersStoredProc.RecordCount;

end;

· TGroupsDAL – клас, який містить методи якого необхідні для роботи з групами користувачів системи, такі як: GetFreeGroupId (отримати вільне ID групи), IsInGroupId (перевірити, за ID, наявність групи), IsInName (перевірити, за назвою, наявність групи); AddGroup (добавити групу), UpdateGroup (обновити інформації про групу); DeleteGroup (видалити групу), AddUserToGroup (добавити студента в групу); DeleteUserFromGroup (видалити студента з групи), GetGroupsByName (отримати список груп за назвою), GetGroupsByUserId (оримати список груп за ID студента), GetGroupsById (отримати список груп за ID групи).

TGroupsDAL = class (TObject)

function GetFreeGroupId: integer;

function IsInGroupId(GroupId: integer): integer;

Function IsInName(Name: string): integer;

//------- actions ---------

procedure AddGroup(GroupId: integer; Name: string);

procedure UpdateGroup(GroupId: integer; Name: string);

procedure DeleteGroup(GroupId: integer);

procedure AddUserToGroup(UserId: integer; GroupId: integer);

procedure DeleteUserFromGroup(UserId: integer; GroupId: integer);

//------- view ---------

procedure GetGroupsByName(Name: string = '');

procedure GetGroupsByUserId(UserId: integer);

procedure GetGroupsById(GroupId: integer);

end;

{--------------------------------------------------------------------------------------------------------}

 

{ метод для отримання вільного ID групи }

function TGroupsDAL.GetFreeGroupId: integer;

begin

DataModule1.ActionStoredProc.ProcedureName:= 'GetFreeGroupId';

DataModule1.ActionStoredProc.Parameters.Refresh;

DataModule1.ActionStoredProc.ExecProc;

GetFreeGroupId:= DataModule1.ActionStoredProc.Parameters[0].Value;

end;

 

{ метод для перевірки, за ID, наявності групи в базі }

function TGroupsDAL.IsInGroupId(GroupId: integer): integer;

begin

DataModule1.ActionStoredProc.ProcedureName:= 'IsInGroupId';

DataModule1.ActionStoredProc.Parameters.Refresh;

DataModule1.ActionStoredProc.Parameters[1].Value:= GroupId;

DataModule1.ActionStoredProc.ExecProc;

IsInGroupId:= DataModule1.ActionStoredProc.Parameters[0].Value;

end;

 

{ метод для перевірки, за назвою, наявності групи в базі }

function TGroupsDAL.IsInName(Name: string): integer;

begin

DataModule1.ActionStoredProc.ProcedureName:= 'IsInName';

DataModule1.ActionStoredProc.Parameters.Refresh;

DataModule1.ActionStoredProc.Parameters[1].Value:= Name;

DataModule1.ActionStoredProc.ExecProc;

IsInName:= DataModule1.ActionStoredProc.Parameters[0].Value;

end;

 

//------- actions ---------

{ метод для добавлення груп в базу }

procedure TGroupsDAL.AddGroup(GroupId: integer; Name: string);

begin

DataModule1.ActionStoredProc.ProcedureName:= 'AddGroup';

DataModule1.ActionStoredProc.Parameters.Refresh;

DataModule1.ActionStoredProc.Parameters[1].Value:= GroupId;

DataModule1.ActionStoredProc.Parameters[2].Value:= Name;

DataModule1.ActionStoredProc.ExecProc;

end;

 

{ метод для видалення групи }

procedure TGroupsDAL.DeleteGroup(GroupId: integer);

begin

DataModule1.ActionStoredProc.ProcedureName:= 'DeleteGroup';

DataModule1.ActionStoredProc.Parameters.Refresh;

DataModule1.ActionStoredProc.Parameters[1].Value:= GroupId;

DataModule1.ActionStoredProc.ExecProc;

end;

 

{ метод для добавлення студента в групу }

procedure TGroupsDAL.AddUserToGroup(UserId: integer; GroupId: integer);

begin

DataModule1.ActionStoredProc.ProcedureName:= 'AddUserToGroup';

DataModule1.ActionStoredProc.Parameters.Refresh;

DataModule1.ActionStoredProc.Parameters[1].Value:= UserId;

DataModule1.ActionStoredProc.Parameters[2].Value:= GroupId;

DataModule1.ActionStoredProc.ExecProc;

end;

 

{ метод для видалення студента з групи }

procedure TGroupsDAL.DeleteUserFromGroup(UserId: integer; GroupId: integer);

begin

DataModule1.ActionStoredProc.ProcedureName:= 'DeleteUserFromGroup';

DataModule1.ActionStoredProc.Parameters.Refresh;

DataModule1.ActionStoredProc.Parameters[1].Value:= UserId;

DataModule1.ActionStoredProc.Parameters[2].Value:= GroupId;

DataModule1.ActionStoredProc.ExecProc;

end;

 

{ метод для обновлення інформації про групу }

procedure TGroupsDAL.UpdateGroup(GroupId: integer; Name: string);

begin

DataModule1.ActionStoredProc.ProcedureName:= 'UpdateGroup';

DataModule1.ActionStoredProc.Parameters.Refresh;

DataModule1.ActionStoredProc.Parameters[1].Value:= GroupId;

DataModule1.ActionStoredProc.Parameters[2].Value:= Name;

DataModule1.ActionStoredProc.ExecProc;

end;

 

// ----------- view ----------------

{ метод для фільтрації груп за назвою }

procedure TGroupsDAL.GetGroupsByName(Name: string = '');

begin

DataModule1.GroupsStoredProc.Active:= false;

DataModule1.GroupsStoredProc.Parameters.Clear;

DataModule1.GroupsStoredProc.ProcedureName:= 'GetGroups';

DataModule1.GroupsStoredProc.Parameters.AddParameter.Value:= Name;

DataModule1.GroupsStoredProc.Active:= true;

end;

 

{ метод для фільтрації груп за ID студента }

procedure TGroupsDAL.GetGroupsByUserId(UserId: integer);

begin

DataModule1.GroupsStoredProc.Active:= false;

DataModule1.GroupsStoredProc.Parameters.Clear;

DataModule1.GroupsStoredProc.ProcedureName:= 'GetGroupsByUserId';

DataModule1.GroupsStoredProc.Parameters.AddParameter.Value:= UserId;

DataModule1.GroupsStoredProc.Active:= true;

end;

 

{ метод для фільтрації груп за ID групи }

procedure TGroupsDAL.GetGroupsById(GroupId: integer);

begin

DataModule1.GroupsStoredProc.Active:= false;

DataModule1.GroupsStoredProc.Parameters.Clear;

DataModule1.GroupsStoredProc.ProcedureName:= 'GetGroupsById';

DataModule1.GroupsStoredProc.Parameters.AddParameter.Value:= GroupId;

DataModule1.GroupsStoredProc.Active:= true;

end;

ReportBuilderDAL: Модуль, призначений для створення звітів успішності студентів, а також результатів опитувань. Він включає в себе клас TReportDAL.

{ -------- Стандартні бліотеки використані в даному модулі -------- }

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, RaveReports;

{ -------- Підключення модулі розробленого модуля DataModule -------- }

uses

DataModule;

TReportDAL – клас, який містить методи необхідні для роботи зі звітами системи, такі як: CreateSurveyReport (створити звіт за іменем опитування), CreateTestReport (створити звіт за іменем тестування), GetUserTestResults (отримати результат тесту окремого користувача).

TReportDAL = class (TObject)

procedure TReportDAL.CreateSurveyReport (SurveyName: string);

procedure TReportDAL.CreateTestReport (TestName: string);

function TReportDAL.GetUserTestResults (User_Id: integer): TStrings;

end;

{--------------------------------------------------------------------------------------------------------}

{ метод для створення звіту за іменем опитування }

procedure TReportDAL.CreateSurveyReport (SurveyName: string);

begin

{ some code }

end;

 

{ метод для створення звіту за іменем тестування }

procedure TReportDAL.CreateTestReport (TestName: string);

begin

{ some code }

end;

 

{ метод для отримання результатів тесту окремого користувача }

function TReportDAL.GetUserTestResults (User_Id: integer): TStrings;

begin

{ some code }

end;

SurveyBuilderDAL: Модуль, який відповідає за створення тестувань та опитувань. Даний модуль включає в себе два класи: TSurveyDAL, TSurvey.

{ -------- Стандартні бліотеки використані в даному модулі -------- }

uses

Windows, Messages, SysUtils, Variants, Classes, Controls;

{ -------- Підключення модулі розробленого модуля DataModule -------- }

uses

DataModule;

· TSurveyDAL – клас, який включає методи призначені для завантаження, видалення та відтворення списків тестувань та опитувань, такі як: IsInName (перевірка за назвою, наявності тестування / опитування), LoadSurvey (завантажити тестування / опитування), SaveSurvey (заберегти тестування / опитування), UpdateSurvey (обновити тестування / опитування), DeleteSurvey (видалити тестування / опитування), GetSurveysByUserId (отримати список тестувань / опитувань доступних конкретному користувач), GetSurveysByGroupId (отримати список тестувань / опитувань доступних конкретній групі).

TSurveyDAL = class (TObject)

function IsInName(Name: string): integer;

function LoadSurvey(Survey_Id: integer):TSurvey;

procedure SaveSurvey(Survey: TSurvey);

procedure UpdateSurvey(Survey: TSurvey);

procedure DeleteSurvey(Survey_Id: integer);

function GetSurveysByUserId(User_Id: integer):TStringList;

function GetSurveysByGroupId(Group_Id: integer):TStringList;

end;

{--------------------------------------------------------------------------------------------------------}

{ метод для перевірки, за назвою, наявності тестування / опитування в базі даних }

function TSurveyDAL.IsInName(Name: string): integer;

begin

{ some code }

end;

 

{ метод для завантаження тестування / опитування з бази }

function TSurveyDAL.LoadSurvey(Survey_Id: integer):TSurvey;

begin

{ some code }

end;

 

{ метод для забереження тестування / опитування в базу }

procedure TSurveyDAL.SaveSurvey(Survey: TSurvey);

begin

{ some code }

end;

 

{ метод для обновлення тестування / опитування }

procedure TSurveyDAL.UpdateSurvey(Survey: TSurvey);

begin

{ some code }

end;

 

{ метод для видалення тестування / опитування }

procedure TSurveyDAL.DeleteSurvey(Survey_Id: integer);

begin

{ some code }

end;

 

{ метод для отримання списку тестувань / опитувань доступних конкретному користувачу }

function TSurveyDAL.GetSurveysByUserId(User_Id: integer):TStringList;

begin

{ some code }

end;

 

{ метод для отримання списку тестувань / опитувань доступних конкретній групі }

function TSurveyDAL.GetSurveysByGroupId(Group_Id: integer):TStringList;

begin

{ some code }

end;

· TSurvey – клас для створення тестувань та опитувань та їх збереження у вигляді об’єкта (екземпляра даного класу). Містить методи такі як: CreateSurvey (створити тестування / опитування), AddQuestion (додати запинання до тестування / опитування), GetQuestions (відтворити запитання тестування / опитування), DeleteQuestion (видалити запинання з тестування / опитування).

TSurvey = class (TObject)

procedure CreateSurvey;

procedure AddQuestion(Questions: TStringList);

function GetQuestions: TStringList;

procedure DeleteQuestion(Question_Id: integer);

end;

{--------------------------------------------------------------------------------------------------------}

 

{ метод для створення тестування / опитування }

procedure TSurvey.CreateSurvey;

begin

{ some code }

end;

{ метод для додавання запинання до тестування / опитування }

procedure TSurvey.AddQuestion(Questions: TStringList);

begin

{ some code }

end;

 

{ метод для відтворення запинань тестування / опитування }

function TSurvey.GetQuestions: TStringList;

begin

{ some code }

end;

 

{ метод для видалення запинання з тестування / опитування }

procedure TSurvey.DeleteQuestion(Question_Id: integer);

begin

{ some code }

end;

DataModule. Цей модуль призначений для організації зв’язку з базою даних, включає в себе клас TDataModule.

{ -------- Стандартні бліотеки використані в даному модулі -------- }

uses

SysUtils, Classes, DB, ADODB;

TDataModule – клас, що включає в себе компоненти необхідні для зв’язку та роботи з базою.


 

 
Форма:

 

 
 
 
 
 
 
 

1. Connection (компонента типу TADOConnection призначена для встановлення зв’язку з базою даних;

2. UsersDataSource – компонента типу TDataSource, яка виконує роль джерела даних про користувачів;

3. GroupsDataSource – компонента типу TDataSource, яка виконує роль джерела даних про групи користувачів;

4. SurveysDataSource – компонента типу TDataSource, яка виконує роль джерела даних тестувань та опитувань думки;

5. ResultsDataSource – компонента типу TDataSource, яка виконує роль джерела даних результатів тестувань та опитувань;

6. UsersStoredProc – компонента типу TADOStoredProc, призначена для виклику збережуваних процидур орієнтованих на завантаження даних про користувачів з бази;

7. GroupsStoredProc – компонента типу TADOStoredProc, призначена для виклику збережуваних процидур орієнтованих на завантаження даних про групи користувачів з бази;

8. SurveysStoredProc – компонента типу TADOStoredProc, призначена для виклику збережуваних процидур орієнтованих на завантаження тестувань та опитувань з бази;

9. ResultsStoredProc – компонента типу TADOStoredProc, призначена для виклику збережуваних процидур орієнтованих на завантаження результатів тестувань та опитувань з бази;

10. ActionStoredProc – компонента типу TADOStoredProc, призначена для виклику збережуваних процидур орієнтованих на додавання, редагування та видалення даних з бази.

 

Код:

type

TDataModule1 = class(TDataModule)

Connection: TADOConnection;

UsersDataSource: TDataSource;

GroupsDataSource: TDataSource;

UsersStoredProc: TADOStoredProc;

ActionStoredProc: TADOStoredProc;

GroupsStoredProc: TADOStoredProc;

SurveysStoredProc: TADOStoredProc;

SurveysDataSource: TDataSource;

ResultsStoredProc: TADOStoredProc;

ResultsDataSource: TDataSource;

private

{ Private declarations }

public

{ Public declarations }

end;

Клієнт 2

FmMain. Це модуль який відповідає за інтерфейс клієнта 2.

Класи TMain, TPassDlg, TTestProc, що він в себе включає, є класами інтерфейсу тобто класами-формами, які містять методи обробки стандартних подій та методи необхідні для функціонування інтерфейсу.

{ -------- Стандартні бліотеки використані в даному модулі -------- }

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, ComCtrls, StdCtrls, Buttons, ToolWin, Menus, ActnList, ImgList,

ExtCtrls, ADODB;

{ -------- Підключення модулі розробленого модуля DataModule -------- }

uses

DataModule;

· TMain – клас-форма головного мено клієнта.


 

Форма:

 

Код:

type

TMain = class(TForm)

ActionList1: TActionList;

Help: TAction;

ImageList1: TImageList;

SignIn: TAction;

SignOut: TAction;

Exit: TAction;

Splitter1: TSplitter;

Settings: TAction;

PopupMenu1: TPopupMenu;

DataBase1: TMenuItem;

DataBase: TAction;

PageControl1: TPageControl;

TabSheet1: TTabSheet;

TabSheet2: TTabSheet;

TabSheet3: TTabSheet;

StatusBar1: TStatusBar;

Frame11: TFrame1;

Splitter2: TSplitter;

CoolBar1: TCoolBar;

ToolBar1: TToolBar;

BitBtn4: TBitBtn;

BitBtn3: TBitBtn;

BitBtn2: TBitBtn;

ToolButton1: TToolButton;

BitBtn5: TBitBtn;

ToolButton2: TToolButton;

BitBtn1: TBitBtn;

procedure HelpExecute(Sender: TObject);

procedure ExitExecute(Sender: TObject);

procedure DataBaseExecute(Sender: TObject);

procedure SignInExecute(Sender: TObject);

procedure SignOutExecute(Sender: TObject);

procedure AboutExecute(Sender: TObject);

procedure SettingsExecute(Sender: TObject);

procedure ToolBar1MouseDown(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

procedure FormShow(Sender: TObject);

end;

 

{ глобальні змінні }

var

P: boolean;

UsersDAL1: UsersDAL;

GroupsDAL1: GroupsDAL;

 

{метод що відображає вікно допомоги}

procedure TMain.AboutExecute(Sender: TObject);

begin

ShowMessage('Developed by Mo3oK:)');

end;

 

{метод що відображає діалогове вікно налаштевання зв’язку з базою}

procedure TMain.DataBaseExecute(Sender: TObject);

begin

DataModule1.Connection.Connected:= false;

DataModule1.UsersStoredProc.Active:= false;

DataModule1.GroupsStoredProc.Active:= false;

DataModule1.Connection.ConnectionString:= ADODB.PromptDataSource(Self.Handle,'');

DataModule1.GroupsStoredProc.Active:= true;

DataModule1.UsersStoredProc.Active:= true;

DataModule1.Connection.Connected:= true;

end;

 

{ метод що відображає діалогове вікно закриття клієнта }

procedure TMain.ExitExecute(Sender: TObject);

begin

OKRightDlg.Label1.Caption:= 'Do you realy want to exit?';

OKRightDlg.ShowModal;

if OKRightDlg.rez = true then

Close

else

OKRightDlg.Close;

end;

procedure TMain.FormShow(Sender: TObject);

begin

ShowMessage(inttostr(PasswordDlg.ShowModal));

UsersDAL1:= UsersDAL.Create;

GroupsDAL1:= GroupsDAL.Create;

end;

 

procedure TMain.HelpExecute(Sender: TObject);

begin

ShowMessage('Developed by Mo3oK:)');

end;

 

procedure TMain.SettingsExecute(Sender: TObject);

begin

if P = false then begin

PopupMenu1.Popup(Form1.Left + 186, Form1.Top + 84);

P:= true

end else

P:= false;

end;

 

{метод що проводить логування}

procedure TMain.SignInExecute(Sender: TObject);

begin

ShowMessage('Sing In!');

end;

 

{метод що проводить вихід з системи}

procedure TMain.SignOutExecute(Sender: TObject);

begin

ShowMessage('Sign Out!');

end;

 

procedure TMain.ToolBar1MouseDown(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

begin

P:= false;

end;

 

TPassDlg – клас-форма для логування.


Форма:

Код:

type

TPasswordDlg = class(TForm)

Panel1: TPanel;

GroupBox1: TGroupBox;

Label1: TLabel;

Edit1: TEdit;

Label2: TLabel;

CancelBtn: TButton;

OKBtn: TButton;

Edit2: TEdit;

procedure OKBtnClick(Sender: TObject);

function ShowModal: integer; override;

private

{ Private declarations }

public

{ Public declarations }

end;

 

{глобальні змінні}

var

PasswordDlg: TPasswordDlg, Role_Id: integer;

{метод обробки події натиснення кнопки Enter}

procedure TPasswordDlg.OKBtnClick(Sender: TObject);

var

UsersDAL1: UsersDAL;

begin

UsersDAL1:= UsersDAL.Create;

Role_Id:= UsersDAL1.GetRoleId(Edit1.Text, Edit2.Text);

UsersDAL1.Destroy;

end;

 

function TPasswordDlg.ShowModal: integer;

begin

inherited ShowModal;

ShowModal:= Role_Id;

end;

· TTestProc – клас, що включає в себе компоненти необхідні для зв’язку та роботи з базою.

Форма:

Код:

type

TForm2 = class(TForm)

Shape1: TShape;

Shape2: TShape;

Image1: TImage;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Image2: TImage;

RadioGroup1: TRadioGroup;

SpeedButton1: TSpeedButton;

SpeedButton2: TSpeedButton;

private

{ Private declarations }

public

{ Public declarations }

end;

SurveyDAL: Цей модуль забезпечує проходження тестувань та опитувань думки. Він включає в себе наступні класи: TSurveyDAL, TSurvey, TSurveyAnswers.

{ -------- Стандартні бліотеки використані в даному модулі -------- }

uses

Windows, Messages, SysUtils, Variants, Classes, Controls;

{ -------- Підключення модулі розробленого модуля DataModule -------- }

uses

DataModule;

· TSurveyDAL – клас, який містить методи призначені для завантаження та відтворення списків тестувань та опитувань, такі як: LoadSurvey (завантаження тестування / опитування), SaveSurveyAnswers (збереження відповідей на тестування / опитування), GetSurveysByUserId (отримати список тестувань / опитувань доступних конкретному користувачу), GetSurveysByGroupId (отримати список тестувань / опитувань доступних конкретній групі),

TSurveyDAL = class (TObject)

function LoadSurvey(Survey_Id: integer):TSurvey;

procedure SaveSurveyAnswer(SurveyAnswer: TSurveyAnswer);

function GetSurveysByUserId(User_Id: integer):TStringList;

function GetSurveysByGroupId(Group_Id: integer):TStringList;

end;

{--------------------------------------------------------------------------------------------------------}

 

{ метод для завантаження тестування / опитування з бази }

function TSurveyDAL.LoadSurvey(Survey_Id: integer):TSurvey;

begin

{ some code }

end;

 

{ метод для забереження відповідей тестування / опитування в базу }

procedure TSurveyDAL.SaveSurveyAnswer(SurveyAnswer: TSurveyAnswer);

begin



Поделиться:


Последнее изменение этой страницы: 2016-04-26; просмотров: 199; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.14.253.202 (0.015 с.)