10 3 8 7 4 9 1 7 10 5 9 4 8 3
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
{ 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;
TSurveyAnswers– клас, який містить методи для збереження відповідей на питання тестувань та опитувань у вигляді об’єкта (екземпляра даного класу), такі як:CreateSurveyAnswers(створити об’єкт відповідей на тестування / опитування),AddAnswer(додати відповіді на запинання до об’єкта відповідей на тестування / опитування).
TSurveyAnswr = class (TObject)
procedure CreateSurveyAnswer;
procedure AddAnswers(Answers: TStringList);
end;
{--------------------------------------------------------------------------------------------------------}
{ метод для створення об’єкта відповідей на тестування / опитування }
procedure TSurvey .CreateSurveyAnswers;
begin
{ some code }
end;
{ метод для додавання відповіді на запинання до об’єкта відповідей на тестування / опитування }
procedure AddAnswers(Answers: TStringList);
begin
{ some code }
end;
DataModule.Цей модуль призначений для організації зв’язку з базою даних, включає в себе клас TDataModule.
{ -------- Стандартні бліотеки використані в даному модулі -------- }
uses
SysUtils, Classes, DB, ADODB;
TDataModule– клас, що включє в себе набір стандартних компонент (TADOConnection, TdataSource та TADOStoredProc) необхідних для взаємодії з базою даних.
Форма: