Розробка програми-додатку Психологічний тест

2



Зміст



Вступ	2

Опис компонентів Delphi, використаних при розробці проекту	5

Опис програми-додатку	9

	Список дій користувача	9

Алгоритм роботи програми	10

Структура програми-додатку (форма та їх ієрархія)	12

Опис графічного інтерфейсу	13

Додатки	15

	Програмний код програми-додатку	15

	Вигляд форм програми додатку	21

	Вигляд форм програми-додатку (виконавчої)	27

	Вигляд форм програми-додатку (виконавчої)	28

	
Вступ



Інтерес до програмування з кожним днем росте. Це пов’язане з розвитком і внесенням в повсякденне життя інформаційних технологій. Якщо людина має роботу пов’язану з комп’ютером, то рано чи пізно в неї виникає бажання, а іноді і необхідність навчитися програмувати.

Серед користувачів персональним комп’ютером в наш час найбільш популярним є сімейство операційних систем Windows, яка була розроблена Borland C++ for Windows, явно орієнтований для професіоналів, які мають серйозні знання і досвід.

Бурхливий розвиток обчислювальної техніки і потрібність в ефективних середовищах розробки програмного забезпечення привели до появи системи програмування, орієнтованих на так названому «швидку розробку», серед яких можна виділити Borland Delphi і Microsoft Visual Basic. В основі системи швидкої розробки лежить технологія візуального проектування і програмування, суть якого заклечається в тому, що середовище розробки бере на себе більшу частину генерації коду програми залишаючи програмісту роботу по конструювання діалогових вікон і функцій обробки подій.

Delphi – це середовище візуального програмування. Програма, створена користувачем у Delphі, називається проектом.

Після запуску середовища (Windows Пуск / Програми; клацніть на піктограмі Borland Delphi ).

Після завантаження ІСР Delphi появляється загальне вікно, в якому містяться наступні вікна та панелі:

	Панель з назвою програми та проекту;

	Панель головного меню;

	 2 інструментальні панелі:

зліва – 2 рядки швидких кнопок ( дубль команд головного меню;

справа – палітра компонентів бібліотека візуальних компонентів;

 основне поле вікна:

зліва – вікна Object Tree View ( Дерево Об’єктів – зображає зв'язок між об’єктами) та вікно Object Inspector ( Інспектор Об’єктів – інструмент для задання властивостей і обробників подій );

справа – вікно пустої форми (зверху) т вікно редакторів кодів (знизу).

Головне меню вміщає великий набір команд для доступу до функцій Delphi.

Панель інструментів знаходиться під головним меню в лівій частині вікна і вміщає п'ятнадцять кнопок для виклику головного меню.

Панель компонентів знаходиться під головним меню в правій частині головного вікна і вміщає багато компонентів, розміщених формах. До числа основних закладок палітри компонентів можна віднести такі:

	Standard

	Additional

	Win32

	System

	DataAccess

	Dialogs

	Samples

Компоненти вставляють у форму методом клацання мишею спочатку на його піктограмі, а потім у точці вставляння на формі. Потрібні властивості компонентів надають за допомогою інспектора об’єктів або шляхом програмування.

Мовою програмування в Delphi є обєктно-орієнтована мова Pascal. Деякі задачі, що потребують аналізу чи перетворення даних, можна розв’язати без застосування програмування, але у загальному випадку без складання програми не обійтися. Програма має вигляд набору програм-процедур, які об’єднані у модуль користувача з назвою unit1.pas. Коли конструювання розв’зку закінчено, Delphi-проект запускають на виконання командою Run і отримують на екрані створену користувачем форму, на якій відображаються результати. Закривши вікно форми, знову переходять у режим конструювання розв’язку. Після виходу з середовища на диск будуть записані два основні файли: Unit.pas та Project.dpr, а також декілька допоміжних файлів.

Отже суть візуального програмування програмування полягає в конструюванні розв’язку поставленої задачі методом встановлення компонентів (візуальних заготовок) у форму, наданні їм відповідних властивостей і в застосуванні їм відповідних властивостей і в застосуванні чи створенні потрібних для розвязку задачі методів.

Основний принцип – це принцип візуального конструювання розвязку за допомогою компонент. Світ можна моделювати реальний світ за допомогою об’єктів. Об’єкти (компоненти) характеризуються властивостями, які можуть набувати певних значень, і методами, що застосовують до них.

Об’єкти описуються структурою даних типу запису. Вхідні дані у візуальному програмуванні прийнято опрацьовувати не відразу, як це було після запуску на виконання традиційних паскаль-програм, а лише після натискання на відповідну піктограму. Натиснення на кнопку – це подія. Реакція на подію полягає у виконанні деякої процедури (методу), яку складає користувач. Тому кажуть, що об’єкт-кнопка володіє певним методом, який активізується у результаті натискання події.


Опис компонентів Delphi, використаних при розробці проекту



Форма (Form) володіє властивостями вікна Windows. На формі розташовують усі нші компоненти ( елементи керування ), такі як кнопки, текстові поля, малюнки, списки. Форма має власний набір властивостей: заголовок(Caption), назву (Name), колір (Color), розміри (Height - висота, Widht - ширина), відступ від лівої межі екрана до форми (Left), відступ від верхньої межі (Top), шруфт (Font). BorderStyle – можливість змінювати чи не змінювати розмір вікна форми на етапі виконання програми. Розміри компонента і відступи задаються пікселями. 

TBitBtn (знаходиться на закладці Additional) – ця кнопка крім звичайного тексту може мати ще й зображення. Компонент TBitBtn добре підходить там, де потрібні Glyph. Зображення під час проектування завантажується в Glyph за допомогою редактора, викликуваного з Інспектора Об'єктів. Число піктограм у зображенні відображається автоматично у властивості NumGlyphs. Властивість компонетту TBitBtn - Kind визначає тип кнопки. За замовчуванням значення цієї властивості дорівнює bkCustom - замовлена. Властивість Default, якщо її встановити в true, визначає, що натискання користувачем клавіші вводу Enter буде еквівалентно натисканню на дану кнопку, навіть якщо дана кнопка в цей момент не перебуває у фокусі. Правда, якщо в момент натискання Enter у фокусі перебуває інша кнопка, то все-таки спрацює саме кнопка у фокусі. З методів, властивих кнопкам, дуже важливим є Click. Виконання цього методу рівне клацанню на кнопці на кнопці, тобто викликається подія кнопки OnClick.

TImage (знаходиться на закладці Additional): відображає на формі графічне зображення. типу. Властивість Canvas дозволяє створювати й редагувати зображення.

Щоб створити на формі або модулі даних зображення, яким управляють інші елементи, треба використати не TImage, а TImageList. Компонент Image має такі основні властивості: AutoSize - вказує, чи змінюється автоматично розмір компонента; Center - вказує, чи зображення розміщене по центрі; Picture - визначає відображуваний графічний об'єкт.

TImageList (знаходиться на закладці Win32) – цей компонент появився для централізованого управління картинками. Він представляє собою оболонку для створення і використання колекцій однакових за розмірами і властивостями зображень.

Компонент TimageList має дві властивості Images і ImageIndex. Перша вказує на список, а друга на конкретний малюнок в цьому списку. Найпростіше заповнити список за допомогою вміщеного редактора, для цого потрібно двічі клацнути на компоненті або вибрати пункт Image List Editor в його контекстному меню. Користуватися редакторо дуже просто, але потрібно звернути увагу на одну тонкість. Щойно вибраний малюнок можна відредагувати, якщо змінити його положення відносно відведеного йому прямокутника: Crop (розміщення починається з точки (0;0)), Stretch (маштабування) і Center (центровка). Крім того можна змінити безколірність (Transparent Color).

TToolBar (знаходиться на закладці Win32) – це стандартний елемент управління, який дав початок розвитку панелі інструментів. Компонент ToolBar об’єднав розміщені на нім кнопки і інші елементи управління і централізовано керує ними. Всі кнопки (клас TToolButton) на панелі інструментів мають однаковий розмір і властивості. На кожній кнопці можуть відображатися жва її атрибути – текст заголовок кнопки (властивість Caption) і малюнок. Текст і малюнки на кнопках можуть бути розміщені оди відносно одного двома способами, в залежності від значення властивості List. Якщо властивість List має значення false (установлене по замовчуванню), то малюнок розміщується зверху, текст знизу. В протилежному випадку ви побачите текст справа від картинки. Якщо в деякій ситуації одна ябо декілька кнопок повинні стати недоступними, для цого можна встановити властивість Enabled в значенні false. Компонент TToolBar може стати повноцінною заміною головного меню.

TStatusBar (знаходиться на закладці Win32) – роль цього компонента заключається в відображенні різного роду довідкової інформації. Панель стану інкапсульвана в StatusBar. Зазвичай панель стану розміщується в нихній частині вікна. В зв’язку з цим при переносі на форму властивість Align завжди має значення alBottom. Панель стану можна розділити на різне число самостійних частин. Кожна частина описується об’єктом Tstatus. Колекція всіх таких об’єктів знаходиться в властивості: property Panels: TStatusBar. Загалом панель стану можна зробити суцільною. Для цого властивість SimplePanel повинна мати значення true. В даному випадку текст панелі повинен мати властивість SimpleText.

TDRadioGroup (знаходиться на закладці Standart) – компонент представляє собою стандартну групу переключателів, стан яких залежить від значення поля звязаного набору даних. В полі можна передавати фіксовані значення зв’язані з самостійними переключателями в групі. Якщо значення зв’язаного поля відповідає значенню зв’язаного якого небуть переключателя то він включається. Якщо користувач включає інший переключатель, то зв’язане з переключателем значення заноситься вполе. Можливі значення, на які повинні реагувати переключателі в групі, заносяться в властивість Values за допомогою спеціфльного редактора в Інспекторі об’єктів ябо програно за допомогою методів класу Tstrings. Кожному елементу властивості Values відповідає один переключатель. Властивість Items містить список пояснюючих надписів для переключателів групи. Якщо для якого небуть переключателя нема заданого значення, але пояснюючий текст, то такий переключатель включається при співпадінні значеня зв’язаного поля з пояснюючим текстом. Таке значення зв’язаного поля є в полі Value.

TMainMenu (знаходиться на закладці Standard) - дозволяє конструювати і створювати на формі смугу головного меню. Компонент TMainMenu відображає на формі головне меню. Проектування меню виробляється за допомогою конструктора меню, викликуваного подвійним щигликом на цьому компоненті.

Властивість Caption позначає напис розділу, властивість Name - ім'я об'єкта розділу, властивість ShortCut визначає клавіші швидкого доступу до розділу. Властивість Default визначає, чи є даний розділ розділом за замовчуванням свого підміню. Для кожного розділу можуть бути встановлені під час проектування або програмно під час виконання властивості Enabled (доступний) і Visible (видимий).

TDBMemo (знаходиться на закладці Standard) – компонент представляє собою звичайне поле редагування з типом даних Memo або BLOB. Основне його багатство – можливістьодночасно переглядати і редагувати декілька рядків змінної довжини. Компонент може відображати тільки рядки, які цілі видно по висоті. 

В компоненті можна використовувати буфер обміну при допомозі стандартних властивостей операційної системи.

Для прискорення навігації по наборі даних при відображенні поля типу BLOB можна використовувати властивість AutoDispley. При значенні true будь-яке значення поля автоматично відображується в компоненті. При значенні false нове значення появляється після подвійного клацання на компоненті або натискання клавіші <ENTER> при активному компоненті. 

Метод LoadMemo використовується автоматично при загрузці значення поля, якщо властивість AutoDispiay = false.

Поведінка компонента при роботі з досить довгими рядками можна управляти за допомогою властивості WardWrap. При значенні true досить довгий рядок зміщується вліво при переміщенні текстового курсора за праву границю компонента. При значенні false остаток довгого рядка переноситься на новий рядок, при цьому реально новий рядок в даних не створюється.

TDBRichEdit (знаходиться на закладці Win32) – компонент має можливості повноцінного текстового редактора для перегляду і зміни текстових даних, які збережені в зв’язаному наборі даних. Поле повинно містити інформацію про форматування тексту. Зовнішньо компонент нічим не відрізняється від поля редагування, в зв’язку з цим про реалізацію доступу до білбш багатих властивостей редактора через інтерфейс користувача повинен попіклуватися розробник. Для цього можна використати додаткові елементи управління.



Опис програми-додатку

Список дій користувача



За допомогою програми-додатку «Психологічний тест» користувач може:

	Відповісти на запитання, які є актуальними для студентів (учнів).

	Дізнатися про більше про себе та про свою студентську групу (клас).

	Переглянувши інформацію «Про програму» можна дізнатися про програму-додаток та її розробника.

	Переглянувши інформацію «Допомога» можна навчитися користуватися програмою.

	Клацнувши правою кнопкою миші вибрати один з пунктів контекстного меню, що дублює кнопки головного меню.




Алгоритм роботи програми



 

60<Сума балів<190



 Вивід відповідей



 Вивід заставки



Завантаження програми

Вивід інформації про індивідуальний тип

Вивід інформації про колективний тип



14<Сума балів<60



Виведення інформації про індивідуальний тип

 



190<Сума балів<280

Виведення інформації про індивідуальний тип

Виведення інформації про прагматичний тип

Структура програми-додатку (форма та їх ієрархія)






Опис графічного інтерфейсу





2

4

	

	1 – MainMenu (закладка Standart) – це головне меню, згенероване цим компонентом, місце розташування якого на формі є стандартним для програм-додатків для Windows. На цьому компоненті розташовані меню Про програму і Допомога.

	2 – ToolBar (закладка Win32) – це інструментальна панель, на якій розташовані дві кнопки. Перша кнопка викликає форму Допомога, друга викликає форму Про программу.

	3 – RadioGroup (закладка Standart) – це компонент призначений для виводу запитань і відповідей психологічного тесту моєї програми-додатку.

	4 – Memo (закладка Standart) - це багаторядкове вікно редагування для виводу текстової інформації, яка запрошує користувача до роботи.

	5 – Image (закладка Additianol) – це вікно призначене для відображення інформації у вигляді малюнка.

	6 – BitBtn (закладка Additianol) - це керуюча кнопка, на поверхні якої розташовувані зображення (піктограми). Кнопка призначена для виводу результату виконання психологічного тесту.

	7 - StatusBar (закладка Win32) – панель стану, на яку виводиться ім’я розробника програми та назва програми.




Додатки

	

Програмний код програми-додатку

	

	Заставка

	procedure TFZastavka.Timer1Timer(Sender: TObject); // процедура для створення заставки, яка розсувається по формі.

	begin

	if Im1.Top >20 then

	begin

	Im1.Top := Im1.Top -1;

	Im1.Height := Im1.Height +2;

	Im1.Left := Im1.Left -1;

	Im1.Width := Im1.Width +2;

	end;

	end;

	

	procedure TFZastavka.BitBtn1Click(Sender: TObject); \\ закриття форми Zastavka і відкриття форми Test

	begin

	FTest.Show;

	FZastavka.Hide;

	end;

	end.

	

	Тест

	type z=record \\ створення типу даних для виведення відповідей і обрахунку кількості балів. 

	zaput:string[50];

	v1,v2,v3:string [50];

	B:array [1..3] of integer;

	end;

	

	var Ole:TextFile; \\ створення текстового документу для виведення запитань

	i:integer=0;

	n:integer;

	ZList:array [1..30] of z;

	s:string;

	Suma:integer=0;

	

	procedure TFTest.N1Click(Sender: TObject); \\ процедура для створення відкриття і закриття модальної форми Про програму;

	var 	F: TFAbout;

	begin

		Application. CreateForm(TFAbout, F);

		F. ShowModal;

		F. Free;

	end;

	

	procedure TFTest.N3Click(Sender: TObject); \\ процедура для створення, відкриття і закритя модальної форми Допомога

	var 	F: TFDopomoga;

	begin

		Application. CreateForm(TFDopomoga, F);

	F. ShowModal;

	F. Free;

	end;

	

	
procedure TFTest.FormCreate(Sender: TObject); \\ процедура для зчитування запитань з текстового файла Ole 

	begin

	AssignFile(Ole,'f.txt');

	Reset (Ole);

	while not Eof (Ole) do

	begin

	inc(i);

	readln (Ole,s);

	ZList[i].zaput:=s;

	readln (Ole,s);

	ZList [i].v1:=s;

	readln (Ole,s);

	ZList [i].v2:=s;

	readln (Ole,s);

	ZList [i].v3:=s;

	readln(OLe,zList[i].b[1],zList[i].b[2],zList[i].b[3]);

	end;

	n:=i;

	end;

	

	procedure TFTest.FormShow(Sender: TObject); \\ процедура для виведення запитання з текстового файла Ole в RadioGroup

	var j:integer;

	begin

	Zap.Items.Clear;

	for j:=1 to n do

	Zap.Items.Add(ZList[j].zaput);

	Zap.ItemIndex:=-1;

	end;

	
procedure TFTest.ZapClick(Sender: TObject); процедура для виведення відповідів з масиву ZList в RadioGroup

	var j:integer;

	begin

	j:=Zap.ItemIndex;

	Vid.Items.Clear;

	Vid.Items.Add(ZList[j+1].v1);

	Vid.Items.Add(ZList[j+1].v2);

	Vid.Items.Add(ZList[j+1].v3);

	Vid.ItemIndex:=-1;

	end;

	

	procedure TFTest.VidClick(Sender: TObject); // знаходження суми отриманих балів

	var k:integer;

	begin

	k:=vid.ItemIndex +1;

	Suma:=Suma+ZList[zap.ItemIndex +1].b[k];

	end;

	

	procedure TFTest.BitBtn1Click(Sender: TObject); \\ перевірка кількості балів і виведення результату на модальні форми

	var 	F:Tinduv ;

	L:TKolekt;

	S:TPragmat;

	begin

	if (Suma>60) and (Suma<190) then

	begin

	Application. CreateForm(Tinduv, F);

	F. ShowModal;

	F. Free;

	end else

	if (Suma>190) and (Suma<280) then

	begin

	Application. CreateForm(TKolekt,L);

	L. ShowModal;

	L. Free;

	end else

	if (Suma>14) and (Suma<60) then

	begin

	Application. CreateForm(TPragmat,S);

	S. ShowModal;

	S. Free;

	end else Showmessage('Âè ìàáóòü íå â³äïîâ³ëè íà óñ³ çàïèòàííÿ...');

	suma:=0;

	end;

	

	procedure TFTest.ToolButton1Click(Sender: TObject); \\ виведення інформації допомога з інструментальної програми на модальну форму Допомога

	var 	F: TFDopomoga;

	begin

	Application. CreateForm(TFDopomoga, F);

	F. ShowModal;

	F. Free;

	end;

	

	procedure TFTest.ToolButton3Click(Sender: TObject); \\ виведення інформації допомога з інструментальної програми на модальну форму Про програму

	var 	F: TFAbout;

	begin

	Application. CreateForm(TFAbout, F);

	F. ShowModal;

	F. Free;

	end;

	

	procedure TFTest.FormClose(Sender: TObject; var Action: TCloseAction); \\ процедура для завершення програми

	begin

	Application.Terminate;

	end;

	end.


Вигляд форм програми додатку

	

	Головна форма (Zastavka)

	

	

	
Форма тест ( FTest )

	

	

	
Модальна форма Про програму (FAbout)

	

	

	
Модальна форма Допомога (FDopomoga)

	

	

	
Модальна форма Індивідуальний тип (Induvid)

	

	

	
Модальна форма Колективний тип ( Kolekt )

	

	

	
Модальна форма Прагматичний тип ( Pragmat)

	

	
Перелік використаної літератури

		

	Петро Дарахвелідзе «Програмування в Delphi7», Санкт-Петербург 2003.

	Я. М. Глинський «Алгоритмізація і програмування», Львів 2001.

	М. А. Парижский «Delphi в примерах»

2