Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Код, що складається з протестованих модулів.↑ ⇐ ПредыдущаяСтр 3 из 3 Содержание книги
Поиск на нашем сайте
Для реалізації системи СОС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 с.) |