Розробка інформаційно-навчальної системи на тему Атомно-молекулярна теорія Доказ

[ виправити ] текст може містити помилки, будь ласка перевіряйте перш ніж використовувати.

скачати

РЕФЕРАТ

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

1) Навчання атомно-молекулярної теорії;

2) можливість пошуку інформації за ключовими словами;

3) надання довідки по роботі з програмою;

4) надання довідки про розробників системи;

5) можливість посторінкового скролінгу інформації.

Ця програма зручна у використанні, так як має простий і інтуїтивно-зрозумілий графічний інтерфейс.

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

ІНФОРМАЦІЙНО-ОБУЧАБЩАЯ СИСТЕМА, скролінгу, ПОШУК, ЕКСПЕРИМЕНТ, МОДЕЛЬ, ПЕРЕДБАЧЕННЯ, ТЕОРІЯ, ТЕСТУВАННЯ, КОРИСТУВАЧ

Прізвище Підпис Дата

Розробив

Розробка інформаційно навчальної системи на тему: "Атомно-молекулярна теорія. Доказ існування атомів і молекул ". Літера Аркуш Аркушів

Рук. проекту

Н. Контр.

Зав. Каф. Бєлозерський Л.А.

ЗМІСТ

Введення

1. Постановка завдання

Мета розробки

Функціональні вимоги

2. Основні методи та алгоритми

Реалізація управління системою

Реалізація графічних елементів

Реалізація функції скролінгу

Реалізація функції пошуку за ключовими словами

Реалізація процесу тестування та оцінки рівня знань

3. Обгрунтування вибору мови програмування

4. Опис програмного продукту

Вхідні дані

Контроль вхідних даних

Вихідні дані

Модульна структура програмного продукту

4.4.1 Перелік модулів

4.4.2 Схема зв'язку модулів

Функціональна структура програмного продукту

4.5.1 Перелік основних функцій

4.5.2 Функціональна схема

5. Комплект поставки і порядок інсталяції

Комплект поставки

Порядок інсталяції

Запуск програмного продукту

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

Реакція на коректні дані

Реакція на некоректні дані

Аналіз ефективності

6.3.1 Позитивні риси програмного продукту

6.3.2 Негативні риси програмного продукту

6.3.3 Шляхи поліпшення програмного продукту

Висновки

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

Додаток А Технічне завдання

Додаток Б Керівництво користувача

Додаток В Екранні форми

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

Розробив Прізвище Підпис Дата Лист

ВСТУП

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

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

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

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

1 ПОСТАНОВКА ЗАВДАННЯ

    1. Мета розробки

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

    1. Функціональні вимоги

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

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

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

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

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

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

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

2 ОСНОВНІ МЕТОДИ І АЛГОРИТМИ

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

  • організація користувальницького інтерфейсу;

  • організація системи навчання;

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

  • організація системи тестування.

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









немає


та

Рисунок 2.1 - Алгоритм роботи програми

2.1 Реалізація управління системою

Користувач реалізує управління системою через клавіатуру.

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

  • вертикальне меню;

  • активний один з пунктів системи;

  • активно пошукове вікно.

Кожне з наведених вище станів обробляється власними функціями.

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

На малюнку 2.2 приведений спосіб організації інтерфейсу, реалізований в даному програмному продукті.









Малюнок 2.2 - Схема інтерфейсу

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

- Вікно запиту.

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

- Поле інформації;

- Меню вікна діалогу.

У вікні запиту натискання клавіші ENTER означає вибір активного пункту діалогового меню; клавіші ESCAPE - вихід з діалогового вікна.

2.2 Реалізація графічних елементів

У процесі розробки була реалізована графічна бібліотека, призначення якої полягає в наступному:

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

  • промальовування діалогових вікон з подальшим їх приховуванням;

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

  • промальовування заставки.

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

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

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

2.3 Реалізація функції скролінгу

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

- В змінну oldpos заноситься позиція покажчика у файлі, звідки буде проводитися читання;

- З цієї позиції з файлу читається, і одночасно виводитися на екран перші двадцять рядків, oldpos: = 74 * 20, oldpos присвоюється значення нової позиції покажчика;

- Система чекає команди користувача;

- При натисканні пункту "« Назад "(на сторінку вгору), перевіряється, чи є позиція у файлі більше ніж 74 * 20 і якщо є, то oldpos: = -74 * 20 + oldpos. Відбувається зсув вказівника на позицію, що зберігається в комірці oldpos, до ​​тих пір, поки oldpos не стане менше позиції 1974 * 20 - тоді oldpos присвоїть собі покажчик на початкову позицію файлу;

- При натисканні пункту "Далі» "(на сторінку вниз), перевіряється, чи є позиція у файлі менше ніж 540 * 20 і якщо є, то oldpos: = 74 * 20 + oldpos. Відбувається зсув вказівника на позицію, що зберігається в комірці oldpos, до ​​тих пір, поки oldpos не стане більше або дорівнює позиції 540 * 20 - тоді oldpos присвоїть собі покажчик на кінцеву позицію файлу;

Схема роботи функції скролінгу представлена ​​на малюнку 2.3









Ні так


Малюнок 2.3 - Схема роботи функції скролінгу

2.4 Реалізація функції пошуку інформації за ключовими словами

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

  • отримання від користувача шуканої лексеми, занесення її в змінну searchstr;

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

  • читання рядки з файлу в змінну tmp;

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

  • пошук підрядка searchstr в рядку tmp;

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

Нижче на малюнку 2.4 приведена схема роботи функції пошуку інформації за ключовими словами.











Рисунок 2.4 - Схема роботи функції пошуку за ключовими словами

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

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

2.5 Реалізація процесу тестування та оцінки рівня знань

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

  • задається питання;

  • користувач дає відповідь;

  • відповідь користувача порівнюється із правильною відповіддю;

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

  • повертаємося на пункт 1.

Виникає питання: "Яким чином система оцінює правильність відповіді користувача?" У даній інформаційно-навчальної системи використовувалися тестові файли з наступного структурою:

  • текст питання;

  • текст відповідей (усі варіанти відповідей на запитання пронумеровані);

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

Таким чином, варіанти правильних відповідей зчитуються заздалегідь і заносяться в масив otvet [k], а вже потім читаються і виводяться на екран тексти питання і варіантів відповідей. Вибір кожного з варіантів відповідей інтерпретується системою, як деяка цифра, що відповідає номеру обраного варіанта, яка також зберігається в масиві user _ otvet [k]. Порівнюючи вибраний користувачем варіант відповіді, з варіантом відповіді, прочитаним з файлу система, може оцінити правильності даної відповіді.

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

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

На малюнку 2.5 приведена схема процесу тестування та оцінки рівня знань користувача.










так ні





Рисунок 2.5 - схема системи тестування та оцінки знань

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

  • користувач набрав менше 3 балів - рівень підготовки «Погано»;

  • від 3 до 6 балів - рівень підготовки «Задовільно»;

  • більше 6 балів - рівень знань «Добре»;

  • 10 балів - «добре».

3. ОБГРУНТУВАННЯ ВИБОРУ МОВИ ПРОГРАМУВАННЯ

Перша версія мови С була розроблена в 1972 р. співробітником фірми Bell Laboratories Денисом Рітчі, коли він і Кен Томпсон займалися створенням операційної системи UNIX. Важливим моментом є те, що мова С був створений в якості інструменту для програмістів - практиків, тому головна мета розробки цієї мови полягала в тому, щоб зробити його корисним при створенні різних прикладних програм.

За минулі три десятиліття З перетворився на один з найбільш важливих і популярних мов програмування. Правда протягом останнього десятиліття багато програмісти перейшли на більш популярний сьогодні С + +. Однак З по - раніше залишається важливим мовою програмування і як сам по собі, і як проміжна ступінь при переході на С + +. З володіє безліччю переваг. Він є сучасною мовою програмування, що включає в себе керуючі структури, наявність яких у мові вважається бажаним з точки зору теорії і практики програмування. Ця мова побудований так, що дозволяє природним чином застосовувати планування зверху - вниз, структурний підхід до програмування, модульне проектування програм. У результаті на С виходять більш надійні і "прозорі програми".

Для мови З характерна досить висока ефективність. Тут сповна застосовуються можливості сучасних комп'ютерів. Програми на С виходять компактними і швидко виконуваними.

Мові З притаманна висока ступінь переносимості. Це означає, що програми на мові С, написані для однієї операційної системи, можуть виконуватися в інших системах з невеликими змінами. Крім того мова С є досить потужним і гнучким. На ньому написана більша частина операційної системи UNIX.

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

Мова С забезпечує програмістові більший ступінь свободи, але і накладає більшу відповідальність.

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

4 ОПИС ПРОГРАМНОГО ПРОДУКТУ

4.1 Вхідні дані

Вхідними даними є: дані довідкового матеріалу (вводяться з файлу довідки), дані теорії (вводяться з файлу теорії), тестові дані (вводяться з тестових файлів).

Файли довідки та теорії - це два текстових файла, довжина рядків яких не перевищує шістдесяти - сімдесяти чотирьох символів. Файли організовані так, що кожні двадцять рядків складають одну сторінку. Для таких файлів використовується розширення «*. txt».

Файли тестів - це текстові файли, що містять тестові завдання, призначені для тестування та оцінки рівня знань, отриманих користувачем у процесі навчання. Довжина рядків цих файлів не перевищує тридцяти - сорока символів. Для таких файлів так само використовується розширення «*. txt». Для файлу правильних відповідей використовується розширення «*. dat».

4.2 Контроль вхідних даних

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

4.3 Вихідні дані

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

4.4 Модульна структура програмного продукту

4.4.1 Перелік модулів

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

  • BIB. C - основний модуль, що викликає всі стандартні модулі мови С, такі як: STRING. H, STDIO. H, CONIO. H, GRAPHICS. H, STDLIB. H.

  • RAMKA. C - модуль, який займається промальовуванням графічного інтерфейсу (рамки по бічних краях екрану).

  • MENU. C - графічний модуль. Відповідає за промальовування основних графічних елементів системи (головне меню, тестове меню, курсор, пересування курсору по меню), а так само за виведення заставки при запуску програми і промальовування активної підказки.

  • ZASTAVKA. C - модуль, що відповідає за вивід на екран заставки при запуску програми.

  • модуль, що відповідає за вивід на екран текстів теорії та довідки, а також за можливість їх посторінкового скроллінгом.

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

  • FILE _ OP. C - модуль, що відповідає за можливість відкриття файлів теорії, висновок теорії на екран, скролінг, промальовування меню пункту «Теорія», навігація з цього меню.

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

  • HELP. C - модуль, що відповідає за можливість відкриття файлів довідки, висновок довідки на екран.

  • EXIT. C - модуль, що відповідає за можливість виходу з програми, при виході виводить реквізити розробника.

  • OSHIBKA. C - Модуль, який здійснює перевірку наявності необхідних файлів системи, виводить відповідне повідомлення про помилку при відсутності цих файлів.

  • MODULI. C - Основний модуль програми, який містить у собі всі перераховані вище модулі.

4.4.2 Схема зв'язку модулів

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











Малюнок 4.1 - Схема зв'язків основних модулів системи

4.5 Функціональна структура програмного продукту

4.5.1 Перелік основних функцій

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

Нижче наводиться короткий опис основних з них:

Функції модуля BIB. C:

  • Даний модуль містить тільки стандартні модулі мови С.

Функції модуля RAMKA. C:

- Ramka (). Дана функція займається промальовуванням рамки по бічних краях екрану.

Функції модуля MENU. C

  • menu (). Функція, що займається промальовуванням головного меню, курсору в головному меню, його навігацію.

- Ramka (). Дана функція займається промальовуванням рамки по бічних краях екрану.

Функції модуля ZASTAVKA. C:

  • zastavka (). Функція, яка здійснює виведення заставки перед появою головного меню.

- Ramka (). Дана функція займається промальовуванням рамки по бічних краях екрану.

Функції модуля POISK. C:

  • search (). Функція, яка здійснює пошук шуканого слова, промальовування пошукового вікна.

Функції модуля FILE _ OP. C:

  • search (). Функція, яка здійснює пошук шуканого слова, промальовування пошукового вікна.

- Ramka (). Дана функція займається промальовуванням рамки по бічних краях екрану.

  • show _ file (). Функція, яка займається відкриттям файлів теорії, виведенням інформації на екран скролінгом, промальовуванням меню «Теорії», навігацією з цього меню.

Функції модуля TEST. C:

  • menu (). Функція, що займається промальовуванням головного меню, курсору в головному меню, його навігацію.

- Ramka (). Дана функція займається промальовуванням рамки по бічних краях екрану.

  • test (). Здійснює відкриття файлів з ​​правильними відповідями, з тестовими питаннями, здійснює виведення цих питань на екран, підводить підсумок набраних користувачем балам, виводить на екран результат тестування.

Основні функції модуля HELP. C:

  • help (). Відкриває файл з довідковою інформацією. Відображає оперативну підказку.

- Ramka (). Дана функція займається промальовуванням рамки по бічних краях екрану.

Основні функції модуля EXIT. C:

  • help (). Відкриває файл з довідковою інформацією. Відображає оперативну підказку.

  • exit (). Здійснює завершення програми (вихід), при виході виводить реквізити розробника.

Основні функції модуля OSHIBKA. C:

  • oshibka (). Здійснює перевірку наявності необхідних файлів системи, виводить відповідне повідомлення про помилку при відсутності цих файлів.

  • exit (). Здійснює завершення програми (вихід), при виході виводить реквізити розробника.

Основні функції модуля MODULI. C:

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

4.5.2 Функціональна схема

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










Малюнок 4.2 - Зв'язок між основними функціями програмного продукту

5 КОМПЛЕКТ ПОСТАВКИ І ПОРЯДОК ІНСТАЛЯЦІЇ

5.1 Комплект поставки

Програмний продукт поставляється на дискеті 3,5 ". У кореневому каталозі дискети знаходиться каталог RusKrabota, що містить наступні файли:

Kproekt. Exe - головний виконуваний файл;

Egavga. Bgi - драйвер відеоадаптера;

Keyrus. Com - драйвер клавіатури;

help. txt - файл з довідковими відомостями по роботі з програмою;

1. Txt - файл, що містить навчальний матеріал, пропонований системою;

test. txt - файл, що містить тестове завдання;

answer. dat - файл, що містить правильні відповіді до тестового завдання;

5.2 Порядок інсталяції

Процедура інсталяції полягає в наступному:

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

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

5.3 Запуск програмного продукту

Для запуску програмного продукту для початку необхідно виконати файл Keyrus. Com, а після запустити файл Kproekt. Exe. У разі відсутності деяких файлів, система видасть відповідне попередження, і якщо ці файли були критично важливими, припинить роботу.

6 ТЕСТУВАННЯ ПРОГРАМНОГО ПРОДУКТУ

6.1 Реакція на коректні дані

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

6.2 Реакція на некоректні дані

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

6.3 Аналіз ефективності

6.3.1 Позитивні риси програмного продукту

Створений програмний продукт має простий у зверненні, зручним і інтуїтивно-зрозумілим графічним інтерфейсом.

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

6.3.2 Негативні риси програмного продукту

У ході тестування були виявлені і деякі негативні риси.

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

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

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

Недоліком реалізації системи є також те, що за відсутності файлу, що містить тестові завдання функція тестування в інформаційно-навчальній системі не реалізується.

6.3.3 Можливості поліпшення програмного продукту

Виходячи з вищесказаного, можна вказати такі способи поліпшення програмного продукту:

  • поліпшення функції скролінгу (можливість прокручування тексту як великими, так і дрібними кроками), додавання смуг прокрутки;

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

  • введення в систему додаткових можливостей, таких, як можливість моделювання;

  • оптимізація процесу пошуку по контексту;

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

  • оптимізація процесу подання результатів тестування, розширення бази варіантів тестових завдань;

  • додавання можливості управління програмним продуктом за допомогою так званих «гарячих» клавіш;

  • додавання звукових ефектів, які супроводжують дії користувача;

  • внесення можливості завантаження графічного файлу в «*. bmp» форматі.

ВИСНОВКИ

Метою роботи даного програмного продукту є навчання та ознайомлення користувача з таким розділом хімії як «Атомно - молекулярна теорія. Докази існування атомів і молекул ». Тому основна увага приділяється реалізації зручного, простого в обігу і інтуїтивно зрозумілого графічного інтерфейсу, який дозволив би користувачеві працювати з системою з максимальною зручністю, а так само реалізації ефективного методу тестування та оцінювання. Програма має як позитивні, так і негативні риси. До позитивних рис можна віднести зручний інтерфейс, невисокі апаратні вимоги.

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

ПЕРЕЛІК ВИКОРИСТАНИХ ДЖЕРЕЛ

  1. Герберт Шілдт Довідник програміста по C / С + +, 2-е видання - М.: Вільямс, 2001 - 700 с.

  2. Прата Стівен «Мова програмування С. Лекції і вправи» - Санкт Петербург, ТОВ «ДіаСофтЮП», 2002р. - 896 c.

  3. Ніглаус Вірт Алгоритми та структури даних: пров. з англ. - 2-е вид., Испр. - СПб.: Невський Діалект, 2001. - 352 с.: Іл.

  4. Ахо, Альфред, В., Хопкрофта, Джон, Ульман, Джеффрі, Д. Структури даних і алгоритми.: Пров. з англ.: М. Видавничий дім "Вільямс", 2001. - 384 с.: Іл.

  5. Подбельський В.В., Фомін С.С. Програмування на мові С: Учеб. Посібник. - 2-е доп. вид. - М.: Фінанси і статистика, 2002. - 600 с. мул.

  6. Кузьменко Н. Є., Єрьомін В. В., Попков В. А. К89 Почала хімії. Сучасний курс для вступників у вузи. Т. 1 / М. Є. Кузьменко та ін - 7-е вид., Перераб. і доп. - М.: Іспит, 2002 - 384 с.

Додаток А

ТЕХНІЧНЕ ЗАВДАННЯ

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

Завдання: Розробка інформаційно-навчальної системи на тему "Інформатика. Структури даних. Списки ".

Дата отримання завдання: 20.02.2006.

Плановий термін завершення роботи: 30.05.2006.

А.2 Підстави для розробки

Підставою для розробки програмного продукту, є завдання на курсовий проект з дисципліни "Основи програмування та алгоритмічні мови" видане кафедри програмного забезпечення інтелектуальних систем студенту групи ІС-05Б Чубатову Руслану Євгеновичу.

А.3 Мета роботи

Мета розробки - створення програмного продукту, що дозволяє навчати користувача такого розділу хімії як «Атомно - молекулярна теорія. Докази існування атомів і молекул », а так само ефективно оцінювати рівень отриманих ним у процесі навчання знань.

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

А.4.1 Загальні вимоги

Програмний продукт має відповідати наступним вимогам:

  • зручний графічний інтерфейс;

  • наявність системи допомоги по навігації в системі;

  • наявність довідки про розробника;

  • наявність довідкового матеріалу по розділу хімії: «Атомно - молекулярна теорія.

Докази існування атомів і молекул ».

  • наявність системи пошуку ключовими словами;

  • наявність системи тестування і оцінки рівня знань користувача.

А.4.2 Вимоги до апаратного забезпечення

Програмний продукт повинен нормально функціонувати на комп'ютері з наступними характеристиками:

  • CPU - IBM 80486 або вище;

  • ОЗУ - 350 Kb і вище;

  • близько 200 кілобайт вільного дискового простору;

  • VGA-сумісний монітор з підтримкою дозволу 640 x 480 при 16-ти кольорах;

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

А.4.3 Організаційні вимоги

Програмний продукт повинен:

  • бути написаний на мові C (сумісному з компілятором Borland C + + 3.1);

  • функціонувати під операційною системою MS - DOS 5.0 і вище;

  • бути забезпечений пояснювальною запискою не менше 30 сторінок і керівництвом користувача.

Вся документація повинна бути оформлена відповідно до вимог ДСТУ 3008 95 "Документація. Звіти у сфері науки і техніки. Структура і правила оформлення".

Інсталяційна копія продукту разом з технічною документацією у форматі Microsoft Word і вихідним кодом повинна поставлятися на дискеті 3,5 ". Інсталяційна копія повинна міститися в каталозі RusKrabota, технічна документація - в ​​каталозі DOCUM, вихідний код - в каталозі KOD. Запускаємо файл повинен бути пакетний файл Kproekt. exe, розташований в каталозі RusKrabota.

А.5 Етапи розробки та терміни виконання

Терміни виконання наведені в таблиці А.1.

Таблиця А.1 Терміни виконання роботи

Вид роботи

Тривалість етапу

Дата завершення етапу

1

Отримання завдання на розробку


20 лютого 200 6 р.

2

Розробка та узгодження технічного завдання

1 тиждень

2 7 лютого 200 6 р.

3

Підбір методичного та довідкового матеріалу

1 тиждень

5 березня 200 6 р.

4

Розробка графічного інтерфейсу

2 тижні

13 березня 200 6 р.

5

Розробка основних алгоритмів

2 тижні

27 березня 200 6 р.

6

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

2 тижні

1 січня 200 квітня 6 м.

7

Реалізація довідкової системи, остаточна стикування модулів

1 тиждень

2 квітня квітня 200 6 м.

8

Тестування та налагодження програми

2 тижні

1 травня 200 6 р.

9

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

2 тижні

1 лютому травня 200 6 м.

10

Захист курсового проекту


30 травня 200 6 р.

Додаток Б

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

Б.1 Установка і запуск програмного продукту

Установка і запуск програмного продукту на ваш ПК не вимагає спеціальної процедури інсталяції. Досить просто скопіювати файли з інсталяційної дискети на ваш жорсткий диск і запустити пакетний файл Kproekt. Exe. Система готова до роботи.

Б.2 Управління можливостями системи

Після запуску програми на екран буде виведена заставка, наведена на рисунку В.1. Для входу в систему натисніть клавішу ENTER і на екрані з'явитися основне вікно програми з головним меню (воно представлено рисунку В.2).

Основне меню складається з наступних чотирьох пунктів:

  • теорія;

  • тести;

  • допомога;

  • вихід.

Вибір одного з пунктів меню призведе або до розкриття відповідного них (пункти "Теорія", "Допомога" основного меню), або до запуску одного з інструментів системи (пункт меню "Тести").

Переміщення по системі підменю здійснюється за допомогою клавіш горизонтальних стрілок; вибір пункту - натиснення клавіші ENTER; вихід з підменю - натискання клавіші ESCAPE або відповідного пункту підменю.

При виході з системи на екрані з'являється інформація про розробника програми (малюнок В.9). Повторне натискання клавіші ESCAPE призведе до повного виходу з програми.

Б.3 Опис основних можливостей системи

Основне меню дозволяє отримати доступ до основних навчальним можливостям, які має система.

Пункт меню "Теорія" містить інформацію по темі: "Атомно-молекулярна теорія. Доказ існування атомів і молекул "і складається з підпункту:

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

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

Пункт меню "Допомога" містить інформацію по навігації в системі.

Пункт меню "Вихід" призначений для завершення роботи і виходу з системи.

Б.4 Використання довідки

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

Додаткова інформація про розробника системи знаходиться в пункті меню "Вихід" і виводиться на екран перед завершенням програми (малюнок В.9).

Б.5 Використання теорії

Доступ до можливості системи під назвою "Теорія", здійснюється шляхом вибору відповідного підпункту в підменю пункту "Теорія". Після цього на екрані з'явитися вікно цього пункту меню (воно показано на малюнку В.3). Переміщення по сторінках здійснюється за допомогою вибору клавіш підменю «Назад (на сторінку вгору), а потім Далі» (на сторінку вниз).

Б.6 Використання функції пошуку

Доступ до функції пошуку за допомогою вибору відповідного підпункту в підменю "Теорія". Після здійснення вибору на екрані з'явитися віконце, в якому вам буде запропоновано ввести шуканий термін (малюнок В.5). Довжина терміна не повинна перевищувати 9 символів.

Введіть термін і натисніть клавішу ENTER. Введене слово буде виведено на верхню позицію (буде знаходиться в самому верхньому рядку).

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

ESCAPE - вихід з режиму пошуку.

Б.7 Використання функції тестування

Після запуску процесу тестування, за допомогою вибору відповідного пункту меню, на екрані з'явиться вікно тестування з тестовими питаннями (малюнок В.7).

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

Шкала оцінювання одного тестового завдання виглядає наступним чином:

- Користувач набрав менше 3 балів - рівень підготовки «Погано»;

- Від 3 до 6 балів - рівень підготовки «Задовільно»;

- Більше 6 балів - рівень знань «Добре»;

- 10 балів - «добре».

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

Натискання клавіші ESCAPE так само означає завершення процесу тестування.

Б.8 ​​Можливі неполадки та їх усунення

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

  • «Не знайдений файл довідки». Це означає, що файл довідки help. txt і autor. txt просто відсутній в каталозі, з якого запускалася програма. Перевірте наявність даного файлу і в разі необхідності встановіть його.

  • «Неможливо встановити відеорежим». Ця проблема може виникнути при пошкодженні або відсутності драйвера відеоадаптера (файлу Egavga. Bgi). Перевірте його цілісність і наявність. Переконайтеся також, що ваш монітор підтримує 16-кольоровий VGA-режим з роздільною здатністю 640 x 480.

  • «Не знайдений файл теорії». Ця проблема може виникнути при відсутності файлу теорії 1. Txt в каталозі програми. Перевірте його наявність.

  • «Не знайдений файл тестів». Ця проблема може виникнути при відсутності файлу тестових завдань в каталозі, з якого запускалася програма. Перевірте його наявність і в разі необхідності проведіть установку.

  • «Не знайдений файл правильних відповідей». Помилка відбувається, якщо в каталозі відсутній необхідний файл answer. Dat. Перевірте його наявність.

Додаток В

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


Рисунок В.1 - Загальний вигляд заставки


Рисунок В.2 - Загальний вид вікна програми


Малюнок В.3 - Вікно програми в режимі теорія


Рисунок В.4 - Вікно програми в режимі довідки


Рисунок В.5 - Вікно теорії в режимі пошуку


Малюнок В.6 - Пошук не дав результатів.


Малюнок В.7 - Вікно програми в режимі тестування


Малюнок В.8 - Вікно результатів тестування


Малюнок В.9 - Загальний вигляд вікна інформації про розробника

Додаток Г

Лістинг програм

/ / Модуль BIB. З

# Include <string.h>

# Include <stdio.h>

# Include <conio.h>

# Include <graphics.h>

# Include <stdlib.h>

# Include <dos.h>

/ / Модуль RAMKA.c

# Include "bib.h"

//----------------------- Побудова рамки на екрані --------------------- -----

void ramka ()

{

cleardevice ();

//------------------------ / / Очищення екрану

setfillstyle (1,7); / / Суцільна заливка сірим кольором-

bar (0,0,640,19); / / тому бічних граней екрану

bar (630,19,640,480);

bar (0,461,640,480);

bar (0,0,19,480);

setcolor (8); / / Темно-сірий колір ліній-рамок

rectangle (20,20,630,460); / / створюють ефект трехмернос-

rectangle (21,21,629,459); / / ти

rectangle (22,22,628,458);

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

}

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

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

/ / Модуль MENU.c

# Include "bib.h"

//------------------------ Меню програми, її пункти ---------------------------

int menu (char zaglavie [50], char punkt1 [50], char punkt2 [50], char punkt3 [50], char punkt4 [50])

{

ramka ();

setcolor (6); / / Колір написи питання і "Головне меню"

settextjustify (CENTER_TEXT, CENTER_TEXT); / / Їх розташування на екрані

settextstyle (0,0,2);

outtextxy (320,80, zaglavie); / / Вивід на екран написи питання і "Головне меню"

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

setcolor (15); / / Колір пунктів меню і отв.на питання

settextjustify (LEFT_TEXT, RIGHT_TEXT); / / Їх пложения на екрані

settextstyle (0,0,2);

outtextxy (265,170, punkt1); / / Висновок на екран пунктів меню

outtextxy (265,220, punkt2); / / і варіантів відповідей на пи-

outtextxy (265,270, punkt3); / / роси

outtextxy (265,320, punkt4);

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

int cursor = 0;

do

{

int key = 0; / / Початкове положення курсору

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

{

setfillstyle (SOLID_FILL, 16); / / Колір курсору, коли він НЕ активний

if (i == cursor)

setfillstyle (SOLID_FILL, 3); / / Колір курсору, коли він активний

setcolor (16); / / Рамка кольору курсору, коли він не активний

fillellipse (240,175 + (i * 50), 10,10); / / Промальовування закрашеного курсору

}

key = getch ();

if (key == 72)

cursor -;

if (key == 80)

cursor + +;

if (key == 27)

return -1;

if ((cursor == 4) & & (key == 13))

return -1;

if (key == 13)

return cursor;

if (cursor == 4)

cursor = 0;

if (cursor ==- 1)

cursor = 3;

}

while (1);

}

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

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

/ / Модуль ZASTAVKA.c

# Include "bib.h"

//------------------- Висновок на екран назви курс. роботи --------------------

int zastavka2 ()

{

ramka ();

setcolor (8);

settextstyle (0,0,2);

outtextxy (65,25, "Інформаційно - навчальна система");

//---------

setcolor (7); / / Зсув тексту на два

settextstyle (0,0,2); / / пікселя, що створює ефект

outtextxy (63,25, "Інформаційно - навчальна система"); / / тривимірності

//---------

setcolor (8);

settextstyle (0,0,2);

outtextxy (65,45, "на тему: ");

//--------- / / Зсув тексту на два

setcolor (7); / / пікселя, що створює ефект

settextstyle (0,0,2); / / тривимірності

outtextxy (63,45, "на тему:");

//---------

setcolor (3);

settextstyle (0,0,2);

outtextxy (120,180, "атомно-молекулярної теорії.");

outtextxy (105,200, "ДОКАЗИ ІСНУВАННЯ");

outtextxy (185,220, "АТОМІВ І МОЛЕКУЛ");

setcolor (8);

settextstyle (0,0,1);

outtextxy (65,430, "Натисніть ENTER для продовження");

//---------

setcolor (7); / / Зсув тексту на два

settextstyle (0,0,1); / / пікселя, що створює ефект

outtextxy (63,430, "Натисніть ENTER для продовження"); / / тривимірності

//---------

setcolor (8);

settextstyle (0,0,1);

outtextxy (65,440, "Натисніть esc для виходу");

//--------- / / Зсув тексту на два

setcolor (7); / / пікселя, що створює ефект

settextstyle (0,0,1); / / тривимірності

outtextxy (63,440, "Натисніть esc для виходу");

//---------

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

do / / Події натиснення клавіш Enter і Esc

{

int choice;

choice = getch ();

if (choice == 27) return -1; / / Якщо Esc, то вихід з програми

if (choice == 13) return 0; / / Якщо Enter, то перехід до меню

}

while (1);

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

}

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

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

/ / Модуль POISK.c

# Include "bib.h"

//----------------------------- Пошук слова -----------------------------------

char searchstr [30];

int search (FILE * f)

{

char in [2] = {'', '\ 0'};

int k;

int tmppos, oldpos; / / Позиція рядки у змінній tmp і поточна позиція слів

char * tmp; / / Змінна tmp, в яку відбувається зчитування рядків з

oldpos = ftell (f); / / файлу

setfillstyle (SOLID _ FILL, 7); / / Колір вікна пошуку

settextjustify (CENTER _ TEXT, CENTER _ TEXT); / / Положення рядки в смузі пошуку

bar (220,190,420,250); / / Вікно пошуку

setcolor (7); / / Колір рамки вікна пошуку

rectangle (220,190,420,250); / / Рамка вікна пошуку

setfillstyle (SOLID_FILL, 16); / / Колір смуги пошуку

setcolor (15); / / Колір букв меню пошуку

outtextxy (320,225, "Esc - Вихід");

outtextxy (320,240, "Enter - Далі");

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

do

{

bar (230,200,410,215); / / Смуга пошуку

setcolor (8); / / Колір рамки тривимірності на смузі пошуку

rectangle (231,201,409,214); / / Рамка на смузі пошуку ефекту тривимірності

setcolor (15); / / Колір вводиться шуканого слова

outtextxy (320,210, searchstr); / / Набір шуканого слова

k = getch ();

if ((k! = 13) & & (k! = 27))

{

if (k! = 8)

{

in [0] = k;

if (strlen (searchstr) <9) / / Якщо слово менше 9 - ти знаків

strcat (searchstr, in); / / дописуємо в кінець слова

} / / Ознака закінчення рядка, інакше

else / / стираємо останній знак слова і

searchstr [strlen (searchstr) -1] = '\ 0', / / все одно дописуємо знак закінчення

} / / Рядки ('\ 0')

} / / Заносимо шукане слово в змінну

while ((k! = 13) & & (k! = 27)); / / searchstr

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

fgets (tmp, 74, f); / / Прочитуємо рядки з Файда в

//************************************************ **** / / змінну tmp

do

{/ / Звільняємо зайняту па-

freemem (tmppos); / / м'яти під цю змінну

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

tmppos = ftell (f);

fgets (tmp, 74, f);

if (strstr (tmp, searchstr)! = NULL) / / Шукаємо підрядок searchstr в рядку tmp,

return tmppos; / / і якщо підрядок існує,

} / / То повертаємо його позицію (tmppos)

while (! feof (f)); / / на позицію першого рядка, шукаємо поки не дійдемо

//************************************************ **** / / до кінця файлу

bar (230,200,410,215); / / Смуга пошуку

setcolor (8); / / Колір рамки тривимірності на смузі пошуку

rectangle (231,201,409,214); / / Рамка на смузі пошуку ефекту тривимірності

setcolor (15); / / Колір напису "Рядок не знайдено"

outtextxy (320,210, "Рядок не знайдено"); / / Якщо слово не знайдено

getch (); / / то положення рядків на

return oldpos; / / екрані не змінюється

}

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

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

/ / Модуль FILE_OP. З

# Include "bib.h"

//----------------------- Завантаження інформації з файлу ------------------------

int show_file (char filename [12], int pos)

{

FILE * f;

char str [75];

int oldpos, cur = 0;

//====================================

if ((f = fopen (filename, "r "))!= NULL)

{

do

{

ramka ();

settextstyle (0,0,0);

int cury = 0; / / Приріст на яке зміститься

oldpos = pos; / / наступна рядок

fseek (f, pos, SEEK_SET);

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

do

{/ / Виводить на екран рядок у 74

fgets (str, 74, f); / / символу

str [strlen (str) -1] = '\ 0';

setcolor (15); / / Колір тексту (Білий)

settextjustify (LEFT_TEXT, LEFT_TEXT);

if (! feof (f)) outtextxy (40,35 + cury, str);

cury + = 12; / / Збільшення лічильника зміщення

}

while ((! feof (f ))&&( cury <370));

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

pos = ftell (f);

if (feof (f)) pos =- 1;

setcolor (7);

line (35,409,615,409); / / Дві прямі над кнопками

line (35,414,615,414); / / вибору в меню навчання

setcolor (8);

line (35,410,615,410); / / Тіні двох прямих над кнопками

line (35,415,615,415); / / вибору в меню навчання

int k;

//===================================

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

do

{

for (int i = 0; i <4; i + +) / / Поки курсор знаходиться в потрібному

{/ / Місці його колір сірий, інакше

if (i == cur) setcolor (7); / / в інших місцях-чорний

else setcolor (16);

rectangle (42 +160 * i, 422,118 +160 * i, 448); / / Прямокутник вибору з пріраще-

rectangle (41 +160 * i, 421,119 +160 * i, 449); / / ням лічильника i (потрібно для пе-

rectangle (40 +160 * i, 420,120 +160 * i, 450); / / редвіженія рамки вибору по екрану

rectangle (39 +160 * i, 419,121 +160 * i, 451);

}

//++++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++++++++

for (i = 0; i <4; i + +) / / Поки курсор знаходиться в потрібному

{/ / Місці його колір темно-сірий, інакше

if (i == cur) setcolor (8); / / в інших місцях-чорний

else setcolor (16);

rectangle (42 +160 * i, 422,118 +160 * i, 448); / / Тінь п для рямоугольнік вибору з пріраще-

rectangle (41 +160 * i, 421,119 +160 * i, 449); / / ням лічильника i (потрібно для пе-

/ / Редвіженія рамки вибору по екрану

}

//++++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++++++++

settextjustify (CENTER_TEXT, LEFT_TEXT);

setcolor (8);

settextstyle (0,0,1);

outtextxy (81,440, "Вихід"); / / Тіні для кнопок вибору

outtextxy (241,440, "Пошук"); / / дій в меню навчання

outtextxy (401,440, "<<Назад");

outtextxy (561,440, "Далі >>");

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

setcolor (7);

outtextxy (79,440, "Вихід"); / / Кнопки вибору дій

outtextxy (239,440, "Пошук"); / / у меню навчання

outtextxy (399,440, "<<Назад");

outtextxy (559,440, "Далі >>");

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

k = getch ();

if (k == 77) cur + +; / / Пердвіженіе курсору вправо

if (k == 75) cur -; / / Пердвіженіе курсор ліворуч

if (cur ==- 1) cur = 3; / / Перехід на крайній правий пункт

if (cur == 4) cur = 0; / / Перехід на крайній лівий пункт

if (k == 27) return -1; / / Якщо ESC, то вихід з меню "Теорія"

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

if ((k == 13) & & (cur == 0)) return -1; / / Вихід з меню "Теорія"

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

if ((k == 13) & & (cur == 1)) / / Пошук слова, фрази

{

fseek (f, oldpos, SEEK_SET);

pos = search (f); / / Привласнення позиції функції

} / / Пошуку слова

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

if ((k == 13) & & (cur == 2))

{

if (oldpos> (74 * 20)) / / скролінгом екрану вгору

{

fseek (f, -74 * 20 + oldpos, SEEK_SET);

fgets (str, 74, f);

pos = ftell (f);

} Else pos = 0;

}

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

if ((k == 13) & & (cur == 3))

{

if (oldpos <(540 * 20)) / / скролінгу екрану вниз

{

fseek (f, 74 * 20 + oldpos, SEEK_SET);

fgets (str, 74, f);

pos = ftell (f);

} Else pos = oldpos; / / Якщо кінець тексту, то не куди не

} / / Рухаємося

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

}

while (k! = 13);

}

while (pos! =- 1);

fclose (f);

}

return pos; / / Функція повертає позицію

}

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

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

/ / Модуль TEST.c

# Include "bib.h"

//------------------------------- Тестування ---------------- ----------------

char * otvet; / / Правильна відповідь

char * user _ otvet;

void test ()

{

FILE * fansw;

FILE * test_file;

char i = 0, k = 0, len = 0;

fansw = fopen ("answer.dat", "rb");

fread (& len, 1, 1, fansw); / / зчитуємо

otvet = (char *) malloc (len +1); / / резервуючи пам'ять під

user_otvet = (char *) malloc (len +1); / / дані змінні

memset (otvet, 0, len +1);

memset (user_otvet, 0, len +1);

fread (otvet, len, 1, fansw); / / зчитуємо

fclose (fansw); / / Закриття файлу

if ((test_file = fopen ("test.txt", "rt "))!= NULL)

{

char otv1 [50];

char otv2 [50];

char otv3 [50];

char otv4 [50];

char vopr [50];

char tmp [50];

int good = 0, bad = 0;

i = 0;

while (! feof (test_file)) {

memset (vopr, 0, 50);

memset (otv1, 0, 50);

memset (otv2, 0, 50);

memset (otv3, 0, 50);

memset (otv4, 0, 50);

fgets (vopr, 50, test_file); / / Виводимо питання на

* (Vopr + strlen (vopr) -1) = '\ 0', / / екран, а також всі

fgets (otv1, 50, test_file); / / чотири питання і

* (Otv1 + strlen (otv1) -1) = '\ 0', / / дописуємо в кінець

fgets (otv2, 50, test_file); / / кожній рядки

* (Otv2 + strlen (otv2) -1) = '\ 0', / / символ "окнчанія

fgets (otv3, 50, test_file); / / рядки "

* (Otv3 + strlen (otv3) -1) = '\ 0';

fgets (otv4, 50, test_file);

* (Otv4 + strlen (otv4) -1) = '\ 0';

int k;

k = menu (vopr, otv1, otv2, otv3, otv4);

if (k ==- 1) return;

user_otvet [i] = k +1; / / відповідь користувача

i + +; / / збільшується

}

ramka (); / / Промальовування рамки

for (k = 0; k <i; k + +)

{

if (otvet [k] == user_otvet [k])

good + +;

else bad + +;

}

memset (tmp, 0,50);

itoa (good, tmp, 10);

outtextxy (30,50, "Правильних відповідей:"); / / Підрахунок результату

outtextxy (350,50, tmp); / / відповідей користувача

memset (tmp, 0,50); / / і висновок відповідних

itoa (bad, tmp, 10); / / щего повідомлення з ре-

outtextxy (30,80, "Неправильних відповідей:"); / / тами

outtextxy (380,80, tmp);

outtextxy (30,400, "Ваша оцінка знань:");

settextstyle (1,0,2);

outtextxy (30,440, "Натисніть ESC для повернення до попереднього меню");

settextstyle (0,0,2); / / Характеристики тексту

if (good <= 3) / / слова результатів

{/ / Тестування

memset (tmp, 0,50); / / Виділення пам'яті під змінну tmp

strcpy (tmp, "Погано"); / / Копіює рядок "Погано"

} / / В рядок tmp

if (good> 3 & & good <= 6)

{

memset (tmp, 0,50);

strcpy (tmp, "Задовільно"); / / Копіює рядок "Задовільно"

} / / В рядок tmp

if (good> 6)

{

memset (tmp, 0,50);

strcpy (tmp, "Добре"); / / Копіює рядок "Добре"

} / / В рядок tmp

if (good == 10)

{

memset (tmp, 0,50);

strcpy (tmp, "Відмінно!"); / / Копіює рядок "Відмінно"

} / / В рядок tmp

outtextxy (340,400, tmp); / / В залежності від набраних

} / / Балів виводить результат

do / / Події натиснення клавіш Enter і Esc

{

int choice;

choice = getch ();

if (choice == 27) return; / / Якщо Esc, то вихід з програми

}

while (1);

}

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

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

/ / Модуль HELP.c

# Include "bib.h"

//---------------------------------- Допомога ------------- ----------------------

int help (int autor)

{

FILE * f;

int cury = 0;

char str [75];

char filename [12];

if (autor)

strcpy (filename, "autor.txt");

else strcpy (filename, "help.txt");

ramka ();

setcolor (15);

settextstyle (0,0,0);

if (autor)

outtextxy (260,440, "м. ДОНЕЦЬК 2006 рік");

else

outtextxy (40,440, "Натисніть ESC для повернення до попереднього меню");

settextstyle (0,0,0);

if ((f = fopen (filename, "r"))! = NULL)

{

while (! feof (f))

{

fgets (str, 74, f);

str [strlen (str) -1] = '\ 0';

setcolor (15);

settextjustify (LEFT_TEXT, LEFT_TEXT);

if (! feof (f)) outtextxy (40,35 + cury, str);

cury + = 8;

}

}

do / / Події натискання клавіш Enter і Esc

{

int choice;

choice = getch ();

if (choice == 27) return 0; / / Якщо Esc, то вихід з програми

}

while (1);

}

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

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

/ / Модуль EXIT.c

# Include "bib.h"

//---------------------------------- Вихід ------------- -----------------------

void exit ()

{

help (1); / / При виході виводить інформацію про користувача

}

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

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

/ / Модуль OSHIBKA.c

# Include "bib.h"

//-------------------------- Висновок повідомлення помилки ------------------- --------

void oshibka (char * fn)

{

textcolor (LIGHTRED);

cprintf ("Критична помилка - не знайдений файл:% s Програма перервана.", fn);

exit (-1);

}

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

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

/ / Модуль MODULI. C

//---------------------------- Модулі програми ------------------ -------------

# Include "bib.h"

# Include "ramka.h"

# Include "menu.h"

# Include "zastavka.h"

# Include "poisk.h"

# Include "file_op.h"

# Include "test.h"

# Include "help.h"

# Include "exit.h"

# Include "oshibka.h"

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

/ / Сама програма

//------------------------------- Бібліотеки ---------------- ------------------

# Include "moduli.h"

//------------------------------- Сама програма ------------------------------

void main ()

{

FILE * F1;

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

if ((F1 = fopen ("1.txt", "r")) == NULL)

oshibka ("1.txt");

fclose (F1);

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

if ((F1 = fopen ("autor.txt", "r")) == NULL)

oshibka ("autor.txt");

fclose (F1);

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

if ((F1 = fopen ("help.txt", "r")) == NULL)

oshibka ("help.txt");

fclose (F1);

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

if ((F1 = fopen ("test.txt", "r")) == NULL)

oshibka ("test.txt");

fclose (F1);

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

if ((F1 = fopen ("answer.dat", "r")) == NULL)

oshibka ("answer.dat");

fclose (F1);

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

if ((F1 = fopen ("egavga.bgi", "r")) == NULL)

oshibka ("egavga.bgi");

fclose (F1);

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

int gdriver = DETECT, gmode, errorcode;

initgraph (& gdriver, & gmode, "");

if (zastavka2 ()==- 1)

{

exit ();

return;

}

do

{

int k = 0;

k = menu ("ГОЛОВНЕ МЕНЮ", "Теорія", "Тести", "Допомога", "Вихід");

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

if (k ==- 1)

{

exit ();

return;

}

if (k == 1) test ();

if (k == 2) help (0);

if (k == 3)

{

exit ();

return;

}

if (k == 0)

do

{

show_file ("1.txt", 0); break;

}

while ((k! =- 1) & & (k! = 3));

}

while (1);

}

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

Додати в блог або на сайт

Цей текст може містити помилки.

Програмування, комп'ютери, інформатика і кібернетика | Курсова
217.2кб. | скачати


Схожі роботи:
Розробка інформаційно-навчальної системи на тему Правила дорожнього руху
Розробка об`єктно-орієнтованої моделі інформаційної системи навчальної бібліотеки
Розробка інформаційно довідкової системи Пристрій персонального комп`ютера
Розробка інформаційно-довідкової системи Пристрій персонального комп`ютера
Розробка інформаційно довідкової системи з обліку вагонів на під`їзній колії підприємства
Методична розробка навчальної лекції
Розробка робочої програми навчальної дисципліни
Курсове проектування з навчальної дисципліни Розробка управлінського рішення
Розробка складних інформаційно-пошукових систем
© Усі права захищені
написати до нас