Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Задворнов_текст КР.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
380.42 Кб
Скачать

2.4. Тестування програмного продукту

На етапі тестування визначаються споживчі властивості програмного продукту. Успішне проведення повномасштабного тестування програмного продукту є запорукою його якості та ефективного використання під час експлуатації.

План тестування програмного продукту складено з наступних міркувань:

  • визначення повноти реалізації всіх функціональних вимог;

  • перевірка виконання критеріїв безпеки;

  • доведення його працездатності, стійкого виконання та коректного завершення всіх операцій незалежно від дій користувача.

Тестування прововодилося в три етапи для різних вхідних даних.

  1. Кількість команд – 16, кількість груп – 4. Результати представлені на рис.8-10 п.2.3.

  2. Кількість команд – 15, кількість груп – 3. Кінцевий результат представлений на рис.11.

  3. Кількість команд – 12, кількість груп – 2. Кінцевий результат представлений на рис.12.

Р ис.11. Реультати другого етапу тестування

Р ис.12. Реультати третього етапу тестування

Висновки

Програмний продукт «Електронне жеребкування» розроблено на основі індивідуального завдання до курсової роботи. Він здійснює автоматизацію процесу розподілу команд на групи шляхом проведеннякомпютерного жеребкування з використанням генератора псевдовипадкових чисел.

Програмний продукт розроблено з використанням в якості інструментального засобу візуального інтерактивного об’єктно-орієнтованого середовище програмування Delphi 7, що відповідає сучасним тенденціям розвитку технологій розробки програмного забезпечення.

Випробування програмного продукту продемонстрували його працездатність та відповідність заданим функціональним та кваліфікаційним вимогам.

Перелік використаних джерел та літератури

  1. Митчелл К.Керман. Программирование и отладка в Delphi. Учебный курс. Москва – Санки-Петербург – Киев, 2003, - 669с.

  2. Орлов С.А. Технологии разработки программного обеспечения. Учебник для ВУЗов. Москва-… 2002, - 623с.

  3. Проектування інформаційних систем. Посібник під ред.. Д.е.н., професора В.С.Пономаренка. – К., ВЦ «Академія», 2002, - 542с.

  4. Фленов. М. Библия Delphi. Санкт-Петербург, 2005, - 865с.

ДОДАТОК

Програмний код

unit UnitMain;

//Електронне жеребкування - головний модуль

interface

uses

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

Dialogs, Menus, AdvMenus, StdCtrls, Mask, AdvSpin, AdvGlowButton;

type

TFormMain = class(TForm)

EditK: TAdvSpinEdit;

EditG: TAdvSpinEdit;

AdvMainMenu1: TAdvMainMenu;

NK: TMenuItem;

NG: TMenuItem;

NV: TMenuItem;

ButtonU: TAdvGlowButton;

function grup(kil: integer): string;

procedure IntefaceControl;

procedure FormActivate(Sender: TObject);

procedure ButtonUClick(Sender: TObject);

procedure NKClick(Sender: TObject);

procedure NGClick(Sender: TObject);

procedure NVClick(Sender: TObject);

end;

var FormMain: TFormMain;

y: boolean;

implementation

uses UnitK, UnitG;

{$R *.dfm}

//Відмінювання слова "групи" згідно з їх кількістю

function TFormMain.grup(kil: integer): string;

//kil - кількість груп

//grup - слово "групи" у відміну, відповідному їх кількості

var s: string; //рядкове представлення кількості груп

c: char; //остання цифра кількості груп

begin

if (kil>10) and (kil<20)

then grup:=' груп'

else begin

s:=inttostr(kil);

c:=s[length(s)];

case c of

'1' : grup:=' група';

'2'..'4': grup:=' групи';

else grup:=' груп';

end;

end;

end;

//Керування параметрами інтерфейсу головного вікна

procedure TFormMain.IntefaceControl;

begin

NK.Enabled:=y;

NG.Enabled:=(y) and (FormK.ListK.Count=FormMain.EditK.Value);

end;

//Встановлення початкових значень параметрів інтерфейсу головного вікна

procedure TFormMain.FormActivate(Sender: TObject);

begin

y:=false;

IntefaceControl;

end;

//Контроль коректності визначення умов жеребкування

procedure TFormMain.ButtonUClick(Sender: TObject);

begin

if EditK.Value mod EditG.Value<>0

then showmessage('Неможливо поділити порівну '+inttostr(EditK.Value)+

' команд на '+inttostr(EditG.Value)+ grup(EditG.Value));

if EditK.Value <= EditG.Value

then showmessage('Кількість команд не може бути менше або дорівнювати кількості груп');

y:=(EditK.Value mod EditG.Value=0) and (EditK.Value>EditG.Value);

IntefaceControl;

end;

//Команди

procedure TFormMain.NKClick(Sender: TObject);

begin

FormK.ShowModal;

end;

//Групи

procedure TFormMain.NGClick(Sender: TObject);

begin

FormG.ShowModal;

end;

//Вихід

procedure TFormMain.NVClick(Sender: TObject);

begin

close;

end;

end.

unit UnitK;

//Електронне жеребкування - модуль формування списку команд

interface

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

Dialogs, StdCtrls, editlist, Menus, AdvMenus;

type

TFormK = class(TForm)

AdvMainMenu1: TAdvMainMenu;

NLoadFile: TMenuItem;

NSaveFile: TMenuItem;

NClose: TMenuItem;

ListK: TEditListBox;

NList: TMenuItem;

NFile: TMenuItem;

NNewItem: TMenuItem;

NEditItem: TMenuItem;

NDeleteItem: TMenuItem;

NClearList: TMenuItem;

procedure IntefaceControl;

procedure FormActivate(Sender: TObject);

procedure NLoadFileClick(Sender: TObject);

procedure NSaveFileClick(Sender: TObject);

procedure NNewItemClick(Sender: TObject);

procedure NEditItemClick(Sender: TObject);

procedure NDeleteItemClick(Sender: TObject);

procedure NClearListClick(Sender: TObject);

procedure NCloseClick(Sender: TObject);

procedure FormClose(Sender: TObject; var Action: TCloseAction);

end;

var FormK: TFormK;

implementation

uses UnitMain;

{$R *.dfm}

//Керування параметрами інтерфейсу вікна "Команди"

procedure TFormK.IntefaceControl;

begin

NNewItem.Enabled:=ListK.Items.Count<FormMain.EditK.Value;

NSaveFile.Enabled:=ListK.Count>0;

NEditItem.Enabled:=ListK.Count>0;

NDeleteItem.Enabled:=ListK.Count>0;

NClearList.Enabled:=ListK.Count>0;

end;

//Встановлення початкових значень параметрів інтерфейсу вікна "Команди"

procedure TFormK.FormActivate(Sender: TObject);

begin

IntefaceControl;

end;

//Завантажити з файлу

procedure TFormK.NLoadFileClick(Sender: TObject);

begin

if not fileexists('Команди.txt')

then showmessage('Файл списку команд відсутній')

else begin

ListK.Items.LoadFromFile('Команди.txt');

if ListK.Items.Count>FormMain.EditK.Value then

while ListK.Items.Count>FormMain.EditK.Value do

ListK.Items.Delete(ListK.Items.Count-1);

IntefaceControl;

end;

end;

//Зберегти в файлі

procedure TFormK.NSaveFileClick(Sender: TObject);

begin

ListK.Items.SaveToFile('Команди.txt')

end;

//Нова команда

procedure TFormK.NNewItemClick(Sender: TObject);

var Str:String;

begin

Str:='';

if InputQuery('Нова команда', '', Str) and (Str<>'')

then begin

ListK.Items.Add(str);

IntefaceControl;

end;

end;

//Редагування назви команди

procedure TFormK.NEditItemClick(Sender: TObject);

var Str:String;

begin

if ListK.ItemIndex<0

then showmessage('Оберіть команду')

else begin

Str:=ListK.Items[ListK.ItemIndex];

if InputQuery('Нова нава команди', '', Str) and (Str<>'')

then ListK.Items[ListK.ItemIndex]:=str;

end;

end;

//Видалення команди

procedure TFormK.NDeleteItemClick(Sender: TObject);

begin

if ListK.ItemIndex<0

then showmessage('Оберіть команду')

else if Application.MessageBox('Підтвердіть необхідність або скасуйте видалення команди!','Увага!',MB_YESNO)=6

then begin

ListK.Items.Delete(ListK.ItemIndex);

IntefaceControl;

end

else showmessage('Операцію скасовано користувачем');

end;

//Очищення списку

procedure TFormK.NClearListClick(Sender: TObject);

begin

ListK.Items.Clear;

IntefaceControl;

end;

//Закрити вікно

procedure TFormK.NCloseClick(Sender: TObject);

begin

close;

end;

//Автоматичне збереження списку команд у файлі під час закриття вікна

procedure TFormK.FormClose(Sender: TObject; var Action: TCloseAction);

begin

if ListK.Count>0 then ListK.Items.SaveToFile('tmp.txt');

FormMain.IntefaceControl;

end;

end.

unit UnitG;

//Електронне жеребкування - модуль розподілу команд по групах шляхом жеребкування

interface

uses

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

Dialogs, ExtCtrls, Shader, AdvCircularProgress, AdvGlowButton, StdCtrls,

editlist, Grids, AdvObj, BaseGrid, AdvGrid;

type

TFormG = class(TForm)

Panel2: TPanel;

ButtonBegin: TAdvGlowButton;

Panel3: TPanel;

Circular: TAdvCircularProgress;

Panel1: TPanel;

Grup: TShader;

ListK: TEditListBox;

Grid: TAdvStringGrid;

TimerG: TTimer;

TimerK: TTimer;

procedure FormActivate(Sender: TObject);

procedure ButtonBeginClick(Sender: TObject);

procedure TimerGTimer(Sender: TObject);

procedure TimerKTimer(Sender: TObject);

end;

var FormG: TFormG;

k,kk, g: integer;

implementation

uses UnitK, UnitMain;

{$R *.dfm}

//Встановлення початкових значень параметрів інтерфейсу вікна "Розподіл команд по групах шляхом жеребкування"

procedure TFormG.FormActivate(Sender: TObject);

var i: integer;

begin

ListK.Items:=FormK.ListK.Items;

Grid.ColCount:=FormMain.EditG.Value+1;

kk:=FormMain.EditK.Value div FormMain.EditG.Value;

Grid.RowCount:=kk+1;

ButtonBegin.Caption:='Розпочати жеребкування';

Grup.caption:='';

Grup.Visible:=false;

ButtonBegin.Enabled:=true;

Grid.Rows[0].Clear;

For i:=1 to Grid.RowCount-1 do

begin

Grid.Rows[i].Clear;

Grid.Cells[0,i]:=inttostr(i);

end;

end;

//Розпочати жеребкування

procedure TFormG.ButtonBeginClick(Sender: TObject);

begin

ButtonBegin.Caption:='Відбувається жеребкування';

ButtonBegin.Enabled:=false;

Grup.Visible:=true;

g:=0;

randomize;

TimerG.Enabled:=true;

end;

//Перехід до формування наступної групи

procedure TFormG.TimerGTimer(Sender: TObject);

begin

inc(g);

if g<=FormMain.EditG.Value

then begin

Grup.Caption:=inttostr(g)+' група';

Grid.Cells[g,0]:=Grup.Caption;

circular.Position:=1;

circular.Enabled:=true;

TimerK.Enabled:=true;

k:=0;

end;

if g>FormMain.EditG.Value then

begin

ButtonBegin.Caption:='Жеребкування завершено';

Grup.Visible:=false;

end;

TimerG.Enabled:=false;

end;

//Вибір наступної команди групи

procedure TFormG.TimerKTimer(Sender: TObject);

var x: integer;

begin

inc(k);

if k<=kk then begin

x:=random(ListK.Count-1);

Grid.Cells[g,k]:=ListK.Items[x];

ListK.Items.Delete(x);

end;

if k=kk then begin

TimerK.Enabled:=false;

circular.Enabled:=false;

TimerG.Enabled:=true;

end;

end;

end.