Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсач ОВП.docx
Скачиваний:
2
Добавлен:
03.03.2016
Размер:
1.12 Mб
Скачать

Загальні відомості

Тема курсової роботи - «Використання технологій візуальної розробки додатків при побудові тестово-довідкової системи «Кінологія». Розробником проекту є студент другого курсу спеціальності «системи штучного інтелекту», Шестель Вікторія Олександрівна. Завдання до курсового проекту було видане 6.03.2013 року, кінцевою датою закінчення роботи є 16.06.2013 року. Розробка курсового проекту також включає дати проміжних звітних періодів та відповідних найменувань етапів курсового проекту, що здаються, які наведені у таблиці 1.

Таблиця 1- Дати проміжних звітних періодів за видом роботи

Дата

Найменування етапу

06.03.2013

Вибір теми

13.03.2013

Лист завдання

20.03.2013

Технічне завдання

27.03.2013

Алгоритм

03.04.2013

Проект питань та відповідей

10.04.2013

Проект бази даних

17.04.2013

Затвердження форм

01.05.2013

Варіант програмного коду

08.05.2013

Працюючий макет системи

05.06.2013

Пояснювальна записка

Курсовий проект повинен бути розроблений на підставі таких документів, як: методичні вказівки з оформлення студентських робіт, ДСТУ ГОСТ 7.1:2006.

Призначення і цілі створення програми

Кінологія - наука про собак, виведенні порід собак, дресируванню собак, історії походження собак.

Прогрес людського суспільства завжди був пов'язаний з розвитком різних сфер науки і життєдіяльності, в ряду яких важливе місце завжди займала кінологія. Сучасна кінологія, в першу чергу, соціально-значима, соціально-відповідальна і є одним з факторів, що формують у сучасної людини погляди на ставлення до живої природи. Саме тому основна мотивація кінології - це любов до всього живого, а не утилітарне ставлення або товарно - грошові відносини в їх гіршому прояві. Людство не може штучно розділятися за расовими або конфесійними ознаками, це ж відноситься і до єдиного кінологічному простору. Умовний розподіл на клуби та клубні системи не повинно чинити негативного впливу на досягнення цілей і виконання завдань, які як повітря, яким ми дихаємо, є для всіх нас спільними.

З найдавніших часів, коли людина привчив першу собаку і змусив її полювати і охороняти житло, виникла необхідність у дресурі як способі виховання собак. Однак кінології в той час ще не було. Ця наука з'явилася відносно недавно, в кінці 19-го століття, коли почався облік собачих родоводів. Тоді ж з'явилася і професія кінолог - фахівець, що займається розведенням, дресируванням собак і вивченням історії походження порід. Як і будь-яка інша наука, кінологія є справою, що не терпить дилетантства.

Вимоги до програмного продукту

Вимоги до розробки в цілому полягають в:

  • тестово-довідкова система повинна бути розроблена з використанням візуальних технологій програмування та в діалоговому режимі проводити тестування знань користувача з обраної тематики, оцінювати ці знання і давати рекомендації по подальшій підготовці;

  • тестово-довідкова система повинна підтримувати декілька робочих режимів: ознайомчий, тестування, оцінювання, рекомендації, адміністрування, довідка про систему;

  • тематика підрозділів для тестування повинна відповідати обраному напрямку розробки курсового проекту;

  • наявність тестової бази – не менш 3-х розділів, у кожному – не менш, ніж 10 питань;

  • час для відповіді на запитання має бути обмеженим та змінюватися за бажанням адміністратора тестової системи;

  • інтерфейс програмної розробки повинен бути простим та зрозумілим для користувача;

  • користувач повинен мати можливість самостійно обирати тему для тестування;

  • результати тестування мають бути відображені на екрані користувача та у окремому файлі;

  • згідно з результатами тестування користувачу мають надаватися рекомендації щодо вдосконалення знань з обраної тематики тестування.

Вимоги до режимів та функцій полягають в тому, що:

  • програма повинна реалізовувати основні функції, такі як: тестування, оцінювання, надання рекомендацій, інформаційну;

  • режим адміністрування повинен бути захищеним від звичайного користувача паролем;

  • оцінювання відповідей опитуваного повинно відповідати критеріям оцінювання, що були розроблені заздалегідь;

  • сформовані рекомендації повинні реально відображувати недоліки знань користувача.

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

  • процесор - Intel Pentium III 1 Ghz;

  • оперативна пам’ять - 512 Mb RAM;

  • жорсткий диск - 20 Gb HDD;

  • комп’ютерна миша;

  • клавіатура;

  • монітор.

Вимоги до програмного забезпечення:

  • тестово-довідкова система «Кінологія» повинна бути реалізована у середовищі програмного забезпечення Borland C++ Builder;

  • тестова система повинна бути реалізована з використанням мови програмування С++;

  • база даних тестово-довідкової системи має бути розроблена за допомогою програмного середовища MS Access.

Вимоги до організаційного забезпечення:

  • програмна документація має налічувати наступні документи: пояснювальна записка; технічне завдання, керівництво користувача, екранні форми, тексти програм, результати роботи;

  • для вдалого функціонування програмної розробки необхідно скопіювати файл з розширенням *.exe на комп’ютер на якому буде проводитися тестування користувачів;

  • програмний продукт з розробленою тестово-довідковою системою «Кінологія» може постачатися на будь-якому електронному носії інформації: дискеті, лазерному диску, флеш-накопичувачі.

ДОДАТОК Б.

ІНСТРУКЦІЯ КОРИСТУВАЧЕВІ

Дана програма виконує тест на знання предметної області «Кіно».

В ній міститься деяка кількість форм з різними компонентами. На основній формі містяться кнопки «Опрос» - перехід до форми з тестом, «Настройки» - виклик форми адміністрування, «Справка» - викликає форму з необхідною довідкою про програму та її розробника, і також кнопка «Вихід» - вихід з програми.

На формі з тестом є деякі кнопки які активуються лише після вибору теми. За допомогою ComboBox-а вибирається тема питань, кнопка «Поїхали» - починає тест(тільки після вибору теми). Кнопка «Далі» - перехід до наступного питання, кнопка «Зупинити тест» - зупиняє тест та при підтвердженні виходить з тесту до головної форми. Після складання тесту виходить форма з результатами та переліком необхідних джерел.

На формі адміністратора є три таблиці відповідні до таблиць баз даних. За допомогою панелі кнопок можна додавати, видаляти або міняти дані у таблицях. Також є три кнопки які відповідають за кількість питань, кількість балів та розмір часу на питання відповідно. З форми адміністратора також можна вивести форму зі списком джерел.

ДОДАТОК В.

ЕРАННІ ФОРМИ.

Малюнок В.1

Зображення головної форми програми.

Малюнок В.2

Режим тестування (не вибрана тема).

Малюнок В.3

Режим тестування за вибраною темою «Породи собак».

Малюнок В.4

Форма з посиланнями на довідкові джерела результатами пройденого теста.

Малюнок В.6

Виклик форми з паролем при натисненні на кнопку «Настройки».

Малюнок В.7

При введені вірного пароля викликається форма адміністратора

ДОДАТОК Г.

ЛІСТИНГ ПРОГРАМНИХ МОДУЛІВ

UNIT 1.CPP

#include <vcl.h>

#pragma hdrstop

#include "Unit1.h"

#include "Unit2.h"

#include "Unit5.h"

#include "Unit3.h"

#include "Unit6.h"

#include "Unit7.h"

#include "Unit8.h"

#include "Unit10.h"

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

#pragma package(smart_init)

#pragma resource "*.dfm"

TTest *Test;

int bal=10;

int questn=1; //номер по счету отвечаемого вопроса

int col=5; //кол-во вопросов для ответа всего

int delay=11; //время на вопрос в секундах

int tt=delay; //таймер

int right=0;

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

__fastcall TTest::TTest(TComponent* Owner)

: TForm(Owner)

{

}

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

void __fastcall TTest::quest()

{

//вывод вопроса

Label1->Caption= ADOQuery1->Fields->Fields[0]->AsString;

//очистка списка ответов

RadioGroup1->Items->Clear();

//вывод вариантов ответа

for (int i=1; i<=5; i++)

{

// ShowMessage(ADOQuery1->Fields->Fields[i]->AsString) ;

RadioGroup1->Items->Add(ADOQuery1->Fields->Fields[i]->AsString) ;

}

}

void __fastcall TTest::Button1Click(TObject *Sender)

{

Label3->Caption="";

int Answer=RadioGroup1->ItemIndex;

Answer++;

if ( Answer==ADOQuery1->Fields->Fields[6]->AsString ) //ответ правильный

{

tt=delay; // сброс таймера

ADOQuery1->Next(); //переход на след вопрос

questn++;

quest(); //вывод вопроса

right++;

}

else

{

// ShowMessage("Неправильно");

tt=delay;

ADOQuery1->Next();

questn++;

quest();

Timer1->Enabled=-Timer1->Enabled;

}

if (questn==col+1 )

{

Timer1->Enabled=false;

questn=1;

Close();

Rezult->Label2->Caption="Тест пройден, правильных ответов: "+IntToStr(right)+ "/"+IntToStr(col);

Rezult->Label3->Caption="Ваша оценка равна : "+IntToStr(right*bal)+" баллов";

Rezult->Show();

if( right!=col)

Literature->Show();

right=0;

}

Label2->Caption="Вопрос: "+ IntToStr(questn)+ "/"+IntToStr(col) ;

}

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

void __fastcall TTest::Button2Click(TObject *Sender)

{

Button2->Enabled=false;

Test->RadioGroup1->Visible=true;

Test->Label1->Visible=true;

Test->Label2->Visible=true;

ADOQuery1->Active=false;

ADOQuery1->Active=true;

quest();

// Label2->Caption="Вопрос: "+ IntToStr(questn)+ "/"+ADOQuery2->Fields->Fields[0]->AsString;

Label2->Caption="Вопрос: "+ IntToStr(questn)+ "/"+IntToStr(col) ;

Timer1->Enabled=true;

}

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

void __fastcall TTest::Timer1Timer(TObject *Sender)

{

tt--;

Label3->Caption=IntToStr(tt);

if (tt==0)

{

RadioGroup1->ItemIndex=5;

Button1->Click();

}

}

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

void __fastcall TTest::FormCloseQuery(TObject *Sender, bool &CanClose)

{

// CanClose=false;

}

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

void __fastcall TTest::ComboBox1Change(TObject *Sender)

{

Button3->Click();

}

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

void __fastcall TTest::Button3Click(TObject *Sender)

{

AnsiString query;

switch(ComboBox1->ItemIndex)

{

case 0: query="SELECT * FROM Питання WHERE код_теми=1";Button2->Enabled=true;Button1->Enabled=true;Rezult->Label5->Visible=true;; break;

case 1: query="SELECT * FROM Питання WHERE код_теми=2";Button2->Enabled=true;Button1->Enabled=true;Rezult->Label6->Visible=true; break;

case 2: query="SELECT * FROM Питання;Button2->Enabled=true;Button1->Enabled=true; break;

}}

ADOQuery1->SQL->Clear();

ADOQuery1->SQL->Add(query);

ADOConnection1->Open();

if(ComboBox1->ItemIndex==0)

ShowMessage("Выбрані питання по темі породи");

if(ComboBox1->ItemIndex==1)

ShowMessage("Выбрані загальні питання з кінології");

if(ComboBox1->ItemIndex==2)

ShowMessage("Выбраны вопросы из обеих тем");

}

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

void __fastcall TTest::Button4Click(TObject *Sender)

{

if (MessageDlg("Вы уверены что хотите прервать тест?\n", mtConfirmation,

TMsgDlgButtons() << mbYes << mbNo,0) == mrYes)

{

Test->Close();

}

}

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

void __fastcall TTest::FormCreate(TObject *Sender)

{

Button2->Enabled=false;

Button1->Enabled=false;

}

UNIT 2.CPP

#include <vcl.h>

#pragma hdrstop

#include "Unit2.h"

#include "Unit1.h"

#include "Unit3.h"

#include "Unit4.h"

#include "Unit5.h"

#include "Unit9.h"

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

#pragma package(smart_init)

#pragma resource "*.dfm"

TMain *Main;

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

__fastcall TMain::TMain(TComponent* Owner)

: TForm(Owner)

{

}

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

void __fastcall TMain::Button3Click(TObject *Sender)

{

Close();

}

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

void __fastcall TMain::Button1Click(TObject *Sender)

{

Password->Show();

}

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

void __fastcall TMain::Button2Click(TObject *Sender)

{

Test->RadioGroup1->Visible=false;

Test->Label1->Visible=false;

Test->Label2->Visible=false;

Test->ShowModal();

}

void __fastcall TMain::Button4Click(TObject *Sender)

{

About->ShowModal();

}

UNIT 3.CPP

#include <vcl.h>

#pragma hdrstop

#include "oleauto.hpp"

#include "Unit3.h"

#include "Unit2.h"

#include "Unit1.h"

#include "Unit5.h"

#include "Unit6.h"

#include "Unit7.h"

#include "Unit8.h"

#include "Unit4.h"

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

#pragma package(smart_init)

#pragma resource "*.dfm"

TAdmin *Admin;

extern int col;

extern int bal;

extern int delay;

extern int tt;

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

__fastcall TAdmin::TAdmin(TComponent* Owner)

: TForm(Owner)

{

}

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

void __fastcall TAdmin::Button4Click(TObject *Sender)

{

Close();

}

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

void __fastcall TAdmin::FormActivate(TObject *Sender)

{

try

{

ADOConnection1->Open();

ADODataSet1->Active = true;

ADODataSet2->Active = true;

ADODataSet3->Active = true;

}

// добавить директиву #include <oleauto.hpp>

catch (Oleauto::EOleException &e) {

MessageDlg("Ошибка доступа к базе данных.\n" + e.Message,

mtError, TMsgDlgButtons()<<mbOK,0);

}

}

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

void __fastcall TAdmin::Button3Click(TObject *Sender)

{

Form8->ShowModal();

}

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

void __fastcall TAdmin::Button1Click(TObject *Sender)

{

Form6->ShowModal();}

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

void __fastcall TAdmin::Button2Click(TObject *Sender)

{

Form7->ShowModal();

}

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

void __fastcall TAdmin::Button6Click(TObject *Sender)

{

ADOTable1->Edit();

ADOTable1->Fields->Fields[0]->Value=Edit1->Text;

ADOTable1->Post();

Password->ADOQuery1->Active=false;

Password->ADOQuery1->Active=true;

Edit1->Text="";

}

UNIT 4.CPP

#include <vcl.h>

#pragma hdrstop

#include "Unit4.h"

#include "Unit3.h"

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

#pragma package(smart_init)

#pragma resource "*.dfm"

TPassword *Password;

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

__fastcall TPassword::TPassword(TComponent* Owner)

: TForm(Owner)

{

}

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

void __fastcall TPassword::Edit1Click(TObject *Sender)

{

Edit1->Text="";

Edit1->PasswordChar='*';

}

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

void __fastcall TPassword::Button1Click(TObject *Sender)

{

if(Edit1->Text==ADOQuery1->Fields->Fields[0]->AsString)

{Admin->Show();

Password->Close();

Edit1->PasswordChar= 0;

Edit1->Text="Введите пароль...";

}

else

ShowMessage("Wrong Password");

}

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

void __fastcall TPassword::FormCreate(TObject *Sender)

{

ADOQuery1->Active=false;

ADOQuery1->Active=true;

}

UNITE 5.CPP

#include <vcl.h>

#pragma hdrstop

#include "Unit5.h"

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

#pragma package(smart_init)

#pragma resource "*.dfm"

TLiterature *Literature;

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

__fastcall TLiterature::TLiterature(TComponent* Owner)

: TForm(Owner)

{

}

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

void __fastcall TLiterature::BitBtn1Click(TObject *Sender)

{

ShellExecute(Handle, "open","Actors.docx",NULL,NULL,SW_RESTORE);

}

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

void __fastcall TLiterature::BitBtn2Click(TObject *Sender)

{

ShellExecute(Handle, "open","Movies.docx",NULL,NULL,SW_RESTORE);

}

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

void __fastcall TLiterature::BitBtn3Click(TObject *Sender)

{

ShellExecute(Handle, "open","Movies.htm",NULL,NULL,SW_RESTORE);

}

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

void __fastcall TLiterature::BitBtn4Click(TObject *Sender)

{

ShellExecute(Handle, "open","Actors.htm",NULL,NULL,SW_RESTORE);

}//---------------------------------------------------------------------------

void __fastcall TLiterature::FormClose(TObject *Sender,

TCloseAction &Action)

{

BitBtn1->Visible=true;

BitBtn2->Visible=true;

BitBtn3->Visible=true;

BitBtn4->Visible=true;

}

UNITE 6.CPP

#include <vcl.h>

#pragma hdrstop

#include "Unit9.h"

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

#pragma package(smart_init)

#pragma resource "*.dfm"

TAbout *About;

int i=0;

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

__fastcall TAbout::TAbout(TComponent* Owner)

: TForm(Owner)

{

}

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

void __fastcall TAbout::Timer1Timer(TObject *Sender)

{

Memo1->Lines->Delete(0);

i++;}

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

void __fastcall TAbout::Memo1Enter(TObject *Sender)

{

HideCaret(Memo1->Handle);

}