Розробка програми для проходження різноманітних тестів

Електронні тести, історія їх виникнення, поняття та види тестів. Розробка програми та компоненти що використовуються у написанні програми. Розробка тестів, обґрунтування вибору мови програмування, алгоритм реалізації проекту та файл питань тесту.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык украинский
Дата добавления 20.10.2008
Размер файла 387,2 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

23

ЗМІСТ

Вступ

Розділ 1. Основи тесту .............................................................................................. .3

1.1 Історична довідка ................................................................................................. 3

1.2 Що таке тест ......................................................................................................... 4

1.3 Види електронних тестів ..................................................................................... 5

1.4. Компоненти, що використовуються в програмі ............................................... 6

Розділ 2. Розробка тесту ............................................................................................ 8

2.1. Постановка задачі ............................................................................................... 8

2.2. Обґрунтовування вибору, мови програмування, що використовується ....... 9

2.3. Функціональна і логічна структура ................................................................. 12

2.4 Алгоритм реалізації проекту ............................................................................. 14

2.4.1.Файл питань тесту ........................................................................................... 14

2.4.2. Завантаження файлу питань тесту ................................................................ 17

2.4.3. Опис призначеного для користувача інтерфейсу ........................................ 19

2.5 Принцип побудови комплексу технічних засобів ......................................... 24

Висновок

Список літератури

Додаток 1

Додаток 2

Вступ

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

Ідея навчання за допомогою комп'ютера народилася давно. Зв'язана вона була з видимістю людиноподібної поведінки комп'ютера, його здібності вести осмислений діалог з людиною. В цьому проекті розглядається програма, що дозволяє автоматизувати процес навчання - це електронний тест, призначений для перевірки знань.

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

Розділ 1. ОСНОВИ ТЕСТУ

1.1. Історична довідка

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

Крім того, перевірялося уміння розбиратися в тканинах, металах, рослинах і ін. В Давньому Єгипті тільки той навчався мистецтву жерця, хто був здатний витримати систему певних випробувань. Спочатку кандидат в жерці проходив співбесіду, в процесі якої з'ясовувалися його біографічні дані, рівень утвореної; крім того, оцінювалися зовнішність, уміння вести бесіду. Потім слідували перевірки уміння трудитися, слухати і мовчати, випробування вогнем, водою, страхом подолання похмурих підземель в повній самотності і ін.

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

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

1.2. Що таке тест

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

В даний час вже створена безліч засобів навчання за допомогою комп'ютера. Їх можна кваліфікувати таким чином: комп'ютерні підручники, наочно-орієнтовані середовища (мікросвіти, що моделюють програми, учбові пакети), лабораторні практикуми, тренажери, контролюючі програми.

Тестування - це процес оцінки відповідності особової і педагогічної моделей знань. Головна мета тестування - виявлення взаємної невідповідності цих моделей і оцінка рівня їх невідповідності. Тестування проводиться за допомогою спеціальних тестів, що складаються з певного набору рівня невідповідності. Тестове завдання - це чітке і ясне завдання по конкретній наочній області, що вимагає однозначної визначуваної відповіді або виконання певного алгоритму дій.

Тест - набір взаємозв'язаних тестових завдань, що дозволяють оцінити відповідність знань учня, експертної моделі знань наочної області.

Клас еквівалентності - безліч тестових завдань, таких, що виконання що вчиться з них гарантує виконання інших.

Тестовий простір - безліч різних тестових завдань по всіх модулях моделі знань.

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

Ефективний тест - оптимальний за об'ємом і часу повний тест.

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

Побудову комп'ютерних тестів можна здійснити по наступних послідовних кроках:

1) Формалізація експертної цільової моделі знань;

2) Низхідне проектування тестового простору;

3) Формування і наповнення тестових завдань;

4) Формування повного комп'ютерного тесту;

5) Тестовий експеримент;

6) Вибір ефективного тесту;

7) Аналіз, коректування і доведення тесту до виду експлуатації.

1.3. Види електронних тестів

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

Інструментальні програми, що дозволяють розробляти комп'ютерні тести, можна розділити на два класи: універсальні і спеціалізовані.

Універсальні програми містять тестову оболонку як складову частину. Серед них можна назвати системи «адоніс» (Москва), «Фея» (Томськ), «Linkway». Спеціалізовані тестові оболонки призначені виключно для формування тестів. Це «Лелека», «Тестум», і ін.

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

Іншою важливою властивістю тестових оболонок винне бути наявність можливості передачі результатів і протоколу тестування якому-небудь статистичному пакету для подальшої обробки, що в існуючих тестових оболонках представлено не повно.

Видно, для вирішення цих і інших проблем створення ефективних тестів доцільно розробляти інтегровані програмні середовища, що включають пакети з різними інструментальними засобами. Так, наприклад, для створення математичних тестів була розроблено інтегроване середовище, в якому зв'язані система комп'ютерної алгебри (СЬКА) і інтерактивна система Link Way.

1.4. Компоненти, що використовуються в програмі

Для реалізації програми були використані наступні компоненти:

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

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

- також там розміщена робоча піктограма програми.

Розділ 2. РОЗРОБКА ТЕСТУ

2.1. Постановка задачі

Технічне завдання даної роботи вимагає розробити програму для тестування студентів в інтегрованому середовищі Visual C++.

При створенні тестів важливо враховувати багато обставин, наприклад особа тестованого, вид контролю, методику використовування тестів в учбовому процесі і т.п.

Хорошим вважається тест, коли він:

· Чутливий до вгадування тестованого.

· Сприйнятливий до неуважності і помилкових дій тестованого.

· Позитивно впливає на тестованого і педагога, який використовує тест.

При цьому тест використовується для навчання (тренажер, самоперевірка) і контролю. Для вчителя ж тест служить:

· Засобом коректування учбового процесу.

· Допоміжним засобом для поточного контролю, дидактичним засобом для навчання.

· Для дистанційного навчання.

Все вище перераховані властивості тестів зібрані по вибору в одному електронному тесті, можуть вирішити силу-силенну питань пов'язаних з оцінкою знань, коректуванням освітнього процесу і т.д.

В результаті аналізу різних тестів можна сформулювати наступні вимоги до програми:

1. Програма повинна забезпечити роботу з тестом довільної довжини, тобто

не повинно бути обмеження на кількість питань в тесті.

2. Для кожного питання може бути представлено до чотирьох можливих

варіантів відповіді з своєю оцінкою в балах.

3. Результат тестування повинен бути віднесений до одного з чотирьох рівнів, наприклад, "відмінно", "добре", "задовільно" або "погано".

4. Питання тесту повинні знаходитися в текстовому файлі.

5. Програма повинна бути інваріантна до різних тестів, тобто зміни в тесті не повинні викликати вимогу зміни програми.

6. Якщо питання запропоновано, то на нього повинен бути дана відповідь.

2.2. Обґрунтовування вибору, мови програмування, що використовується

VC++ - мова і середовище програмування, що відноситься до класу RAD- (Rapid Application Development _ “Засіб швидкої розробки додатків”) засобів CASE - технології. VC++ зробила розробку могутніх додатків Windows швидким процесом, що доставляє вам задоволення. Додатки Windows, для створення яких була потрібна велика кількість людських зусиль наприклад в С++, тепер можуть бути написані однією людиною, використовуючим VC++.

Інтерфейс Windows забезпечує повне перенесення CASE-технологій в інтегровану систему підтримки робіт із створення прикладної системи на всіх фазах життєвого циклу роботи і проектування системи.

Delphi володіє широким набором можливостей, починаючи від проектувальника форм і кінчаючи підтримкою всіх форматів популярних баз даних. Середовище усуває необхідність програмувати такі компоненти Windows загального призначення, як влучні, піктограми і навіть діалогові панелі. Працюючи в Windows, можна бачити однакові “об'єкти” в багатьох різноманітних додатках. Діалогові панелі (наприклад Choose File і Save File) є прикладами компонентів, вбудованих безпосередньо в VC++, що багато разів використовуються, який дозволяє пристосувати ці компоненти до є задачі, щоб вони працювали саме так, як вимагається створюваному додатку. Також тут є заздалегідь певні візуальні і невізуальні об'єкти, включаючи кнопки, об'єкти з даними, меню і вже побудовані діалогові панелі. За допомогою цих об'єктів можна, наприклад, забезпечити введення даних просто декількома натисненнями кнопок миші, не вдаючись до програмування. Це наочна реалізація вживань CASE-технологій в сучасному програмуванні додатків. Та частина, яка безпосередньо пов'язана з програмуванням інтерфейсу користувача системою, одержала назву візуальне програмування

Вигоди від проектування в середовищі Windows за допомогою VC++:

1) Усувається необхідність в повторному введенні даних;

2) Забезпечується узгодженість проекту і його реалізації;

3) Збільшується продуктивність розробки і переносимість програм.

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

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

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

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

Використовування типових рішень, модульного принципу проектування систем відображення і обробки інформації придбаває все більш широкі масштаби, що, втім, цілком природно.

Особливий упор при упровадженні даних задач слідує, звичайно, додавати сучасним CASE-засобам розробки програм, оскільки вони найбільш оптимально дозволяють проектувати рішення, в основі яких лежать, в першу чергу, вимоги до злагодженого призначеного для користувача інтерфейсу, яким і є інтерфейс Windows. Ніякі продукти інших фірм, доступні сьогодні, не забезпечують одночасну простоту використовування, продуктивність і гнучкість в такому ступені, як VC++. Ця мова заповнила пролом між мовами 3-го і 4-го поколінь, з'єднавши їх сильні сторони і створивши могутнє і продуктивне середовище розробки.

2.3. Функціональна і логічна структура

При запуску, програма чекає наступних дій користувача. Оскільки наша тестова програма майже досконала то вона має на меті розробку будь - якого тесту при правильному компонуванні питань. В головному робочому вікні програми виконано падаюче меню Файл в якому ми маємо можливість вибрати файл для тесту тобто в нашому випадку ми створимо два тестових файли з психологічною оцінкою людини. Для початку роботи завантажуємо тип тесту який нам потрібно пройти тобто файл Тип_тесту*.qsz Якщо файл питань є, тоді програма з нього завантажує введення, тобто частина, в якій дається назва тесту, а потім питання, з варіантами відповідей, при виборі варіанту відповіді програма запам'ятовує її і переходить до наступного питання. В кінці програми підраховуються кількість правильних відповідей і виводяться в окремому вінкі результати прізвища та імена та ті на які ми невідповіли. Наочне уявлення про роботу програми можна одержати з Рис. 2.

Рис 2 а) Головне вікно програми

Рис 2 б) Початок завантаження файлу з тестом

Рис 2 в) Кінець роботи з тестом.

На рис 3 зображено алгоритм роботи програми при якому вона реалізована.

Рис 3. Алгоритм роботи програми

2.4. Алгоритм реалізації проекту

2.4.1. Файл тесту

Тест є послідовністю питань, на які випробовуваний повинен відповісти шляхом вибору правильної відповіді з декількох запропонованих варіантів. Є одна особливість даного тесту для його правильного функціонування файли з питаннями повинні знаходитися в папці DATA!!!

Файл тесту складається з трьох розділів:

розділ заголовка;

постановка питання;

варіант відповіді на питання

Формат файлу Назва_тесту*.qsz в яку містяться тестові питання які можуть бути відредактовані як викладачем так і будь - ким іншим фахівцем в галузі тестування.

Першим рядком у файлі має бути назва тесту

потім ідуть питання

"#"питання

//потім 4 варіанта відповідей

перед правильною відповдю "+"

Приклад:

ТЕСТ З Психологій

#Скільки буде 2+2?

+4

6

3

5

#Хто був перший президент України ?

+М.Грушевський

Л.Кравчук

Л.Кучма

В. Янукович

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

2.4.3. Завантаження файлу тесту

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

Наприклад, для настройки програми тестування, значок запуску якої знаходиться на робочому столі, на роботу з файлом тесту ххх.txt, необхідно клацнути правою кнопкою миші на значку програми, з контекстного меню, що з'явилося, вибрати команду Властивості і в полі Об'єкт, після імені файлу програми (test1.exe), ввести ім'я файлу тесту (*.qsz), уклавши його в подвійні лапки (мал. 3). Текст, що знаходиться в полі Об'єкт вкладки Ярлик діалогового вікна Властивості, називається командним рядком.

2.5. Опис призначеного для користувача інтерфейсу

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

========================================================

MICROSOFT FOUNDATION CLASS LIBRARY : Тест

========================================================

Майстром AppWizard був створений Тест.

Ця тестова програма являється не тільки демонстрацією основи використання Microsoft Foundation classes а також являється стартовою точкою для написання складних додатків.

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

test1.dsp

Це проектний файл вміщує інформацію про рівень проектування і використовується для створення єдиного проекту. Інші користувачі можуть використовувати project (.dsp) file, але вони повинні розмістити створені файли локально.

test1.h

Цей файл є головним заглавним файлом для нашої програми. Він включає інші специфічні проектні заголовні файли (including Resource.h) і оголошує Ctest1App application class.

test1.cpp

Це є головний прикладний ресурсовий файл який вміщує додаток class CTest1App.

test1.rc

Це є перелік всіх Microsoft Windows resources які використовуються нашою програмою. Вони включають іконкі, растрові рисунки, і курсори які зберігаються в RES subdirectory. Цей файл при бажанні можна відредагувати в Microsoft Visual C++. В цьому файлі розміщений код та проектна побудова взаємозвязків інтерфейсу та принцип зміни іконок при побудові графічного вікна та при переході програми до наступного питання.

test1.clw

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

res\test1.ico

Це файл іконка яка використовується в програмі, вона підєднана головним resource file test1.rc. Саме завдяки їй ми бачимо піктограмку програми в ехе - файлі

res\test1.rc2

Цей файл містить ресурси які не редагуються Microsoft Visual C++. Тому я розмістив тут нередактуємі ресурси програми в цьому файлі. Саме в цьому ї його особливість адже тут можна розмістити ту частьину коду програми яку не бажаю відкривати іншим. Тобто дотримання авторських прав на програмний продукт .

/////////////////////////////////////////////////////////////////////////////

AppWizard було створено наступний клас:

test1Dlg.h, test1Dlg.cpp - ці файли вміщують CTest1Dlg class. Цей клас визначає поведінку нашого головного вікна програми. Заготовка нашого вікна містяться в test1.rc, який може біти відредагований Microsoft Visual C++.

/////////////////////////////////////////////////////////////////////////////

Інші стандартні файли:

StdAfx.h, StdAfx.cpp

Ці файли використовуються для побудови прекомпільного заголовного файлу (PCH) file з назвою test1.pch і прекомпільного типу файлів з назвою StdAfx.obj.

Resource.h

Це стандартний заголовний файл, який визначає нові ресурсні IDs. Microsoft Visual C++ читає і обновляє ці файли при компілінгу.

/////////////////////////////////////////////////////////////////////////////

Вагомі зауваження:

AppWizard використовує "TODO:" для ідентифікації частини коду який мені потрібно додати для організації. Оскільки гнаш додаток використовує MFC in a shared DLL, і твій додаток написаний на мові (використовує не ту яка в віндовс), тоді необхідно скопіювати слідуючий файл MFC42XXX.DLL з Microsoft Visual C++ CD-ROM до папки system or system32, і перейменувати його на MFCLOC.DLL. ("XXX" замість трьох символів вказати абривіатуру мови ОС).

/////////////////////////////////////////////////////////////////////////////

2.6. Принцип побудови комплексу технічних засобів

Для запуску основної частини програми, це файл Test1.exe системні вимоги не високі:

- процесор I486;

- 16 Мб оперативної пам'яті;

- 1 Мб або менше відео пам'яті;

- Об'єм дискового простору не більше 5 Мб;

Операційна система Windows 9x;

А для компіляції і відладки самого програмного коду системні вимоги зростають, оскільки необхідно буде встановлювати Microsoft Visual C++, для запуску якого вимагається:

Процесор Pentium 166 і вище;

32 Мб оперативної пам'яті і вище;

4 Мб відео пам'яті;

Об'єм дискового простору, залежно від установки від 300 і більш;

Windows 98

Для повноцінної роботи програми необхідно, щоб файли з тестовими файлами (файли в яких зберігаються прототипи тестів) містились в папці DATA в каталозі де міститься головна програма.

Висновок

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

В даній курсовій роботі я поставив перед собою за мету створити програму для проведення психологычного тестування та написати її якісно, тобто щоб текст програми не був занадто складним для розуміння, програма не має на меті вимагати якісь ресурси або щось інше. Всі настройки з завданням кількості питань та їх змістом для зручності було винесено в *.qwz файл, який можливо редагувати та збільшувати чи зменшувати кількість запитань тощо. Було вибрано певну кількість клавіш які описані стандартними функціями та проведено в циклі вилучення правильної відповіді яку також можна задати в створеному тестовому файлі.

Ця програма набагато краще, ніж інші аналогічні програми, завдяки можливості власноручного редагування і додавання файлу питань, що дає певну перевагу в порівнянні з іншими програмами тестування, при використовуванні як нових, так і застарілих ПК, файл питань можна написати в текстовому редакторі, набагато швидше, ніж встановити Microsoft Visual C++ і редагувати сам програмний код.

Список літератури

1. Архангельский А.Я. Програмування в Microsoft Visual C++. - М.: Нолідж, 2000

2. Архангельский А.Я. Довідковий посібник з Microsoft Visual C++. - М.: Нолідж, 2000.

3. В Баас Р. і інші. Microsoft Visual C++. Для користувача. - Київ, 2000.

4. Бобровский В.А. Microsoft Visual C++. Початковий курс. - СПб., 1998.

5. Бобровский В.А. Microsoft Visual C++. Учбовий курс. - СПб., 2000.

6. Пачок Ксавье. Програмування в Microsoft Visual C++. Керівництво розробника. - М.: Нолідж, 2000.

7. Свірідов З. і інші. Створення мультимедійних додатків. - М.: Нолідж, 2000.

8. Фаранов В.В. Навчальний посібник з Microsoft Visual C++. - Київ., 2001.

9. Ебнер Міхаель. Microsoft Visual C++. Керівництво розробника. - Київ, 2000.

Додаток 1. Лістинг програми

Resourse.h

//{{NO_DEPENDENCIES}}

// Microsoft Developer Studio generated include file.

// Used by test1.rc

//#define IDM_ABOUTBOX 0x0010

#define IDD_ABOUTBOX 100

#define IDS_ABOUTBOX 101

#define IDD_TEST1_DIALOG 102

#define IDR_MAINFRAME 128

#define IDB_BITMAP1 129

#define IDB_BITMAP2 130

#define IDR_MENU1 131

#define IDC_QUESTION 1000

#define IDC_QUEST1 1001

#define IDC_QUEST2 1002

#define IDC_QUEST3 1003

#define IDC_QUEST4 1004

#define IDC_NEXT 1005

#define IDC_Q1 1006

#define IDC_Q2 1007

#define IDC_Q4 1008

#define IDC_Q3 1009

#define ID_FILE_EXIT 32772

// Next default values for new objects

//

#ifdef APSTUDIO_INVOKED

#ifndef APSTUDIO_READONLY_SYMBOLS

#define _APS_NEXT_RESOURCE_VALUE 136

#define _APS_NEXT_COMMAND_VALUE 32773

#define _APS_NEXT_CONTROL_VALUE 1012

#define _APS_NEXT_SYMED_VALUE 101

#endif

#endif

// stdafx.h : include file for standard system include files,

// or roject specific include files that are used frequently, but

// are changed infrequently

//

#ifdefined(AFX_STDAFX_H__D99DE72D_CFAA_4448_94F4_38844FC03E7A__INCLUDED_)

#define AFX_STDAFX_H__D99DE72D_CFAA_4448_94F4_38844FC03E7A__INCLUDED_

#if _MSC_VER > 1000

#pragma once

#endif // _MSC_VER > 1000

#define VC_EXTRALEAN // Exclude rarely-used stuff from Windows headers

#include <afxwin.h> // MFC core and standard components

#include <afxext.h> // MFC extensions

#include <afxdisp.h> // MFC Automation classes

#include <afxdtctl.h> // MFC support for Internet Explorer 4 Common Controls

#ifndef _AFX_NO_AFXCMN_SUPPORT

#include <afxcmn.h> // MFC support for Windows Common Controls

#endif // _AFX_NO_AFXCMN_SUPPORT

Stdafx.h

//{{AFX_INSERT_LOCATION}}

// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_STDAFX_H__D99DE72D_CFAA_4448_94F4_38844FC03E7A__INCLUDED_)

Test1.cpp

// test1.cpp : Defines the class behaviors for the application.

//

#include "stdafx.h"

#include "test1.h"

#include "test1Dlg.h"

#ifdef _DEBUG

#define new DEBUG_NEW

#undef THIS_FILE

static char THIS_FILE[] = __FILE__;

#endif

/////////////////////////////////////////////////////////////////////////////

// CTest1App

BEGIN_MESSAGE_MAP(CTest1App, CWinApp)

//{{AFX_MSG_MAP(CTest1App)

// NOTE - the ClassWizard will add and remove mapping macros here.

// DO NOT EDIT what you see in these blocks of generated code!

//}}AFX_MSG

N_COMMAND(ID_HELP, CWinApp::OnHelp)

END_MESSAGE_MAP()

////////////////////////////////////////////////////////////////////////////

// CTest1App construction

CTest1App::CTest1App()

{

// TODO: add construction code here,

// Place all significant initialization in InitInstance

}

/////////////////////////////////////////////////////////////////////////////

// The one and only CTest1App object

CTest1App theApp;

/////////////////////////////////////////////////////////////////////////////

// CTest1App initialization

BOOL CTest1App::InitInstance()

{

AfxEnableControlContainer();

// Standard initialization

// If you are not using these features and wish to reduce the size

// of your final executable, you should remove from the following

// the specific initialization routines you do not need.

#ifdef _AFXDLL

Enable3dControls(); // Call this when using MFC in a shared DLL

#else

Enable3dControlsStatic(); // Call this when linking to MFC statically

#endif

CTes1Dlg dlg;

m_pMainWnd = &dlg;

int nResponse = dlg.DoModal();

if (nResponse == IDOK)

{

// TODO: Place code here to handle when the dialog is

// dismissed with OK

}

else if (nResponse == IDCANCEL)

{

// TODO: Place code here to handle when the dialog is

// dismissed with Cancel

}

// Since the dialog has been closed, return FALSE so that we exit the

// application, rather than start the application's message pump.

return FALSE;

}

Test1dlg.cpp

// test1Dlg.cpp : implementation file

//

#include "stdafx.h"

#include "test1.h"

#include "test1Dlg.h"

#ifdef _DEBUG

#define new DEBUG_NEW

#undef THIS_FILE

static char THIS_FILE[] = __FILE__;

#endif

/////////////////////////////////////////////////////////////////////////////

// CAboutDlg dialog used for App About

class CAboutDlg : public CDialog

{

public:

CAboutDlg();

// Dialog Data

//{{AFX_DATA(CAboutDlg)

enum { IDD = IDD_ABOUTBOX };

//}}AFX_DATA

// ClassWizard generated virtual function overrides

//{{AFX_VIRTUAL(CAboutDlg)

protected:

virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support

//}}AFX_VIRTUAL

// Implementation

protected:

//{{AFX_MSG(CAboutDlg)

//}}AFX_MSG

DECLARE_MESSAGE_MAP()

};

CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)

{

//{{AFX_DATA_INIT(CAboutDlg)

//}}AFX_DATA_INIT

}

void CAboutDlg::DoDataExchange(CDataExchange* pDX)

{

CDialog::DoDataExchange(pDX);

//{{AFX_DATA_MAP(CAboutDlg)

//}}AFX_DATA_MAP

}

BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)

//{{AFX_MSG_MAP(CAboutDlg)

// No message handlers

//}}FX_MSG_MAP

END_MESSAGE_MAP()

////////////////////////////////////////////////////////////////////////////

// CTest1Dlg dialog

CTest1Dlg::CTest1Dlg(CWnd* pParent /*=NULL*/)

: CDialog(CTest1Dlg::IDD, pParent)

{

//{{AFX_DATA_INIT(CTest1Dlg)

// NOTE: the ClassWizard will add member initialization here

//}}AFX_DATA_INIT

// Note that LoadIcon does not require a subsequent DestroyIcon in Win32

m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);

for(int i=0;i<100;i++)

for(int j=0;j<5;j++)

{

vidpovidi[i][j]=false;

us_vid[i][j]=false;

}

QuestCont=0;

count=2;

Ball=0;

I=1;

m_bm.LoadBitmap(IDB_BITMAP1);

m_bm2.LoadBitmap(IDB_BITMAP2);

}

void CTest1Dlg::DoDataExchange(CDataExchange* pDX)

{

CDialog::DoDataExchange(pDX);

//{{AFX_DATA_MAP(CTest1Dlg)

// NOTE: the ClassWizard will add DDX and DDV calls here

//}}AFX_DATA_MAP

}

BEGIN_MESSAGE_MAP(CTest1Dlg, CDialog)

//{{AFX_MSG_MAP(CTest1Dlg)

ON_WM_SYSCOMMAND()

ON_WM_PAINT()

ON_WM_QUERYDRAGICON()

ON_BN_CLICKED(IDC_NEXT, OnNext)

ON_BN_CLICKED(IDC_Q1, OnQ1)

ON_BN_CLICKED(IDC_Q2, OnQ2)

ON_BN_CLICKED(IDC_Q3, OnQ3)

ON_BN_CLICKED(IDC_Q4, OnQ4)

ON_BN_CLICKED(IDC_QUEST1, OnQuest1)

ON_BN_CLICKED(IDC_QUEST2, OnQuest2)

ON_BN_CLICKED(IDC_QUEST3, OnQuest3)

ON_BN_CLICKED(IDC_QUEST4, OnQuest4)

ON_COMMAND(ID_FILE_OPEN, OnFileOpen)

ON_COMMAND(ID_FILE_EXIT, OnFileExit)

ON_BN_DOUBLECLICKED(IDC_QUEST1, OnDoubleclickedQuest1)

ON_EN_CHANGE(IDC_QUESTION, OnChangeQuestion)

//}}AFX_MSG_MAP

END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////

// CTest1Dlg message handlers

BOOL CTest1Dlg::OnInitDialog()

{

CDialog::OnInitDialog();

CEdit* p=(CEdit*)GetDlgItem(IDC_QUESTION);

p->HideCaret();

// Add "About..." menu item to system menu.

// IDM_ABOUTBOX must be in the system command range.

ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);

ASSERT(IDM_ABOUTBOX < 0xF000);

CMenu* pSysMenu = GetSystemMenu(FALSE);

if (pSysMenu != NULL)

{

CString strAboutMenu;

strAboutMenu.LoadString(IDS_ABOUTBOX);

if (!strAboutMenu.IsEmpty())

{

pSysMenu->AppendMenu(MF_SEPARATOR);

pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);

}

}

// Set the icon for this dialog. The framework does this automatically

// when the application's main window is not a dialog

SetIcon(m_hIcon, TRUE); // Set big icon

SetIcon(m_hIcon, FALSE); // Set small icon

// TODO: Add extra initialization here

return TRUE; // return TRUE unless you set the focus to a control

}

void CTest1Dlg::OnSysCommand(UINT nID, LPARAM lParam)

{

if ((nID & 0xFFF0) == IDM_ABOUTBOX)

{

CAboutDlg dlgAbout;

dlgAbout.DoModal();

}

else

{

CDialog::OnSysCommand(nID, lParam);

}

}

// If you add a minimize button to your dialog, you will need the code below

// to draw the icon. For MFC applications using the document/view model,

// this is automatically done for you by the framework.

void CTest1Dlg::OnPaint()

{

//***************************************************

/* CPaintDC dc(this);

CRect rect;

GetClientRect(rect);

CFont font;

LOGFONT lf = {

32, 0, 0, 0, FW_NORMAL, 0, 0, 0, DEFAULT_CHARSET,

OUT_TT_ONLY_PRECIS, CLIP_DEFAULT_PRECIS, PROOF_QUALITY,

VARIABLE_PITCH | FF_DONTCARE, NULL

};

dc.SetBkMode(TRANSPARENT);

font.CreateFontIndirect(&lf);

// назначаем текущим ранее подготовленный шрифт

CFont *pFont = dc.SelectObject(&font);

dc.TextOut(0,0,

questions[1][0]);

dc.SelectObject(pFont);

font.DeleteObject();*/

//***************************************************

if (IsIconic())

{

CPaintDC dc(this); // device context for painting

SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);

// Center icon in client rectangle

int cxIcon = GetSystemMetrics(SM_CXICON);

int cyIcon = GetSystemMetrics(SM_CYICON);

CRect rect;

GetClientRect(&rect);

int x = (rect.Width() - cxIcon + 1) / 2;

int y = (rect.Height() - cyIcon + 1) / 2;

// Draw the icon

dc.DrawIcon(x, y, m_hIcon);

}

else

{

CDialog::OnPaint();

}

}

// The system calls this to obtain the cursor to display while the user drags

// the minimized window.

HCURSOR CTest1Dlg::OnQueryDragIcon()

{

return (HCURSOR) m_hIcon;

}

void CTest1Dlg::OnNext()

{

Reset();

if(ount>QuestCont)

Stat();

CStatic *q=(CStatic*)GetDlgItem(IDC_QUESTION);

CStatic *q1=(CStatic*)GetDlgItem(IDC_QUEST1);

CStatic *q2=(CStatic*)GetDlgItem(IDC_QUEST2);

CStatic *q3=(CStatic*)GetDlgItem(IDC_QUEST3);

CStatic *q4=(CStatic*)GetDlgItem(IDC_QUEST4);

q->SetWindowText(questions[count][0]);

q1->SetWindowText(questions[count][1]);

q2->SetWindowText(questions[count][2]);

q3->SetWindowText(questions[count][3]);

q4->SetWindowText(questions[count][4]);

count++;

I++;

CStatic *p1=(CStatic*)GetDlgItem(IDC_QUEST1);

CStatic *p2=(CStatic*)GetDlgItem(IDC_QUEST2);

CStatic *p3=(CStatic*)GetDlgItem(IDC_QUEST3);

CStatic *p4=(CStatic*)GetDlgItem(IDC_QUEST4);

}

void CTest1Dlg::OnQ1()

{

CStatic* bmpStatic=(CStatic*)GetDlgItem(IDC_Q1);

if(flag)

{

bmpStatic->SetBitmap(m_bm2);

flag=false;

us_vid[I][1]=true;

}

else

{

bmpStatic->SetBitmap(m_bm);

flag=true;

}

}

void CTest1Dlg::OnQ2()

{

CStatic* bmpStatic=(CStatic*)GetDlgItem(IDC_Q2);

if(flag)

{

bmpStatic->SetBitmap(m_bm2);

flag=false;

us_vid[I][2]=true;

}

else

{

bmpStatic->SetBitmap(m_bm);

flag=true;

}

}

void CTest1Dlg::OnQ3()

{

CStatic* bmpStatic=(CStatic*)GetDlgItem(IDC_Q3);

if(flag)

{

bmpStatic->SetBitmap(m_bm2);

flag=false;

us_vid[I][3]=true;

}else

{

bmpStatic->SetBitmap(m_bm);

flag=true;

}

}

void CTest1Dlg::OnQ4()

{

CStatic* bmpStatic=(CStatic*)GetDlgItem(IDC_Q4);

if(flag)

{

bmpStatic->SetBitmap(m_bm2);

flag=false;

us_vid[I][4]=true;

}

else

{

bmpStatic->SetBitmap(m_bm);

flag=true;

}

}

void CTest1Dlg::Reset()

{

CStatic* bmpStatic=(CStatic*)GetDlgItem(IDC_Q1);

bmpStatic->SetBitmap(m_bm);

CStatic* bmpStatic1=(CStatic*)GetDlgItem(IDC_Q2);

bmpStatic1->SetBitmap(m_bm);

CStatic* bmpStatic2=(CStatic*)GetDlgItem(IDC_Q3);

bmpStatic2->SetBitmap(m_bm);

CStatic* bmpStatic3=(CStatic*)GetDlgItem(IDC_Q4);

bmpStatic3->SetBitmap(m_bm);

}

void CTest1Dlg::Stat()

{

CString str;

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

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

{

if(us_vid[i][j]&&vidpovidi[i][j])

Ball++;

}

str.Format("З %d питань\nПривильно %d ",QuestCont,Ball);

MessageBox(str,"Результат",MB_OK |MB_ICONINFORMATION );

CButton*d=(CButton*)GetDlgItem(IDC_NEXT);

d->EnableWindow(false);

SetWindowText("Тестувальна програма");

;

}

void CTest1Dlg::OnQuest1()

{

CStatic* bmpStatic=(CStatic*)GetDlgItem(IDC_Q1);

if(flag)

{

bmpStatic->SetBitmap(m_bm2);

flag=false;

us_vid[I][1]=true;

}

else

{

bmpStatic->SetBitmap(m_bm);

flag=true;

}

}

vid CTest1Dlg::OnQuest2()

{

CStatic* bmpStatic=(CStatic*)GetDlgItem(IDC_Q2);

if(flag)

{

bmpStatic->SetBitmap(m_bm2);

flag=false;

us_vid[I][2]=true;

}

else

{

bmpStatic->SetBitmap(m_bm);

flag=true;

}

}

void CTest1Dlg::OnQuest3()

{

CStatic* bmpStatic=(CStatic*)GetDlgItem(IDC_Q3);

if(flag)

{

bmpStatic->SetBitmap(m_bm2);

flag=false;

us_vid[I][3]=true;

}

else

{

bmpStatic->SetBitmap(m_bm);

flag=true;

}

}

void CTest1Dlg::OnQuest4()

{

CStatic* bmpStatic=(CStatic*)GetDlgItem(IDC_Q4);

if(flag)

{

bmpStatic->SetBitmap(m_bm2);

flag=false;

us_vid[I][4]=true;

}

else

{

bmpStatic->SetBitmap(m_bm);

flag=true;

}

}

void CTest1Dlg::OnFileOpen()

{

Reset();

CButton*d=(CButton*)GetDlgItem(IDC_NEXT);

CString FilePathName;

CFileDialog fd(true, "qsz", NULL, OFN_PATHMUSTEXIST, "Super Test File (*.qsz)|*.qsz|");

if(fd.DoModal() == IDOK)

{

d->EnableWindow();

Ball=0;

count=2;

QuestCont=0;

I=1;

for(int h=0;h<100;h++)

for(int u=0;u<5;u++)

questions[h][u]="";

for(int w=0;w<100;w++)

for(int l=0;l<5;l++)

{

vidpovidi[w][l]=false;

us_vid[w][l]=false;

}

FilePathName = fd.GetPathName();

file.open(FilePathName );

char buffer[256];

char buff[256];

int i0;

int j=0;

file.getline(buffer,256);

nametest=(CString)buffer;

SetWindowText(nametest);

while(!file.eof())

{

file.getline(buffer,256);

if(buffer[0]=='#')

{

++j;

i=0;

}

strcpy(buff,buffer);

if(buffer[0]=='+'||buffer[0]=='#')

buff[0]=' ';

questions[j][i]=(CString)buff;

if(buffer[0]=='+')

{

vidpovidi[j][i]=true;

/*char buf[20];

itoa(j,buf,10);

MessageBox((CString)buf);

itoa(i,buf,10);

MessageBox((CString)buf);

*/

}

++i;

}

file.close();

QuestCont=j;

CStatic *q=(CStatic*)GetDlgItem(IDC_QUESTION);

CStatic *q1=(CStatic*)GetDlgItem(IDC_QUEST1);

CStatic *q2=(CStatic*)GetDlgItem(IDC_QUEST2);

CStatic *q3=(CStatic*)GetDlgItem(IDC_QUEST3);

CStatic *q4=(CStatic*)GetDlgItem(IDC_QUEST4);

/* CPaintDC dc(this);

CFont font;

LOGFONT lf = {

32, 0, 0, 0, FW_NORMAL, 0, 0, 0, DEFAULT_CHARSET,

OUT_TT_ONLY_PRECIS, CLIP_DEFAULT_PRECIS, PROOF_QUALITY,

VARIABLE_PITCH | FF_DONTCARE, NULL

};

dc.SetBkMode(TRANSPARENT);

font.CreateFontIndirect(&lf);

// назначаем текущим ранее подготовленный шрифт

*/

/*CFont *pFont;

pFont->CreateFont(

12, // nHeight

0, // nWidth

0, // nEscapement

0, // nOrientation

FW_NORMAL, // nWeight

FALSE, // bItalic

FALSE, // bUnderline

0, // cStrikeOut

ANSI_CHARSET, // nCharSet

OUT_DEFAULT_PRECIS, // nOutPrecision

CLIP_DEFAULT_PRECIS, // nClipPrecision

DEFAULT_QUALITY, // nQuality

DEFAULT_PITCH | FF_SWISS, // nPitchAndFamily

"Arial"); // lpszFacename

q->SetFont(pFont);

*/

q->SetWindowText(questions[1][0]);

q1->SetWindowText(questions[1][1]);

q2->SetWindowText(questions[1][2]);

q3->SetWindowText(questions[1][3]);

q4->SetWindowText(questions[1][4]);

void CTest1Dlg::OnFileExit()

{SendMessage(WM_CLOSE);}

void CTest1Dlg::OnDoubleclickedQuest1()

{CStatic* bmpStatic=(CStatic*)GetDlgItem(IDC_Q1);

if(flag)

{bmpStatic->SetBitmap(m_bm2);

flag=false;

us_vid[I][1]=true;}

else

{bmpStatic->SetBitmap(m_bm);

flag=true;}}

void CTest1Dlg::OnChangeQuestion()

{CWnd* p=(CWnd*)GetDlgItem(IDC_QUESTION);}


Подобные документы

  • Проектування архітектури гри "Тетріс". Аналіз вимог до неї. Вивчення особливостей реалізації, кодування та тестування програми. Алгоритм побудови робочого поля. Вибір мови програмування. Розробка і налагодження тексту програми. Інструкції з експлуатації.

    курсовая работа [460,9 K], добавлен 04.03.2014

  • Загальний алгоритм програми. Алгоритм проходження тесту. Алгоритм загрузки тесту в пам'ять програми. Програма "Тестер" на мові програмування TurboPascal в середовищі Borland Delphi 7. Інтерфейс програми "Тестер". Зовнішній вигляд вікна результату.

    контрольная работа [177,0 K], добавлен 26.02.2010

  • Призначення менеджеру пристроїв. Обґрунтування вибору мови програмування. Розробка структурної схеми і опис діалогового інтерфейсу програми. Блок-схема програмного додатку, основні функції і алгоритм його роботи. Методики і інструкція його тестування.

    курсовая работа [3,4 M], добавлен 17.11.2014

  • Розробка ефективних засобів навчання. Виявлення системи, способів, що сприяють підвищенню активності учнів. Призначення та область використання програми електронний довідник. Розробка алгоритму програми. Обґрунтування вибору мови і системи програмування.

    курсовая работа [161,7 K], добавлен 02.06.2014

  • Характеристика програмної взаємодії людини з комп'ютером. Визначення функціональних та експлуатаційних потреб при голосовому управлінні. Реалізація програмного забезпечення. Розробка тестів та тестування системи. Аналіз ефективності даної програми.

    курсовая работа [2,8 M], добавлен 15.10.2014

  • Розробка програми для вирішення графічної задачі. При вирішенні задачі необхідно cтворювати програму у середовищі програмування Turbo Pascal. Розробка алгоритму функціонування програми і надання блок-схеми алгоритму. Демонстрація роботи програми.

    курсовая работа [1,3 M], добавлен 23.06.2010

  • Програма на мові програмування С++. Аналіз стану технологій програмування та обґрунтування теми. Розробка програми виконання завдання, методу вирішення задачі. Робота з файлами, обробка числової інформації і робота з графікою. Розробка програми меню.

    курсовая работа [41,0 K], добавлен 17.02.2009

  • Багатоплановість проблеми тестування, види тестів, схема взаємодії тестуючого з тестувальником. Огляд і можливості деяких сучасних програмних засобів для створення тестів. Технологія створення тестів на прикладі програмного забезпечення MyTestX.

    дипломная работа [1,8 M], добавлен 15.06.2014

  • Розробка та схема алгоритму проектованої гри. Особливості мови програмування та середовища "Microsoft Visual Studio C++ 2008 Express Edition". Лістинг програми та загальний опис її роботи, аналіз отриманих результатів та оцінка практичної ефективності.

    курсовая работа [762,8 K], добавлен 03.05.2015

  • Вибір стратегії розв`язування задачі. Загальна характеристика середовища програмування Lazarus. Робота з текстовими файлами для збереження навчального матеріалу і результатів тестування. Авторизація викладача. Підпрограми редагування навчання та тестів.

    курсовая работа [1,6 M], добавлен 10.09.2012

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.