ПОСТАНОВКА ЗАВДАННЯ
1.1 Мета розробки
Метою даної курсової роботи є створення інформаційно-навчальної системи за темою «ПДР». Програма повинна надавати користувачеві теоретичний матеріал з даної теми, а також містити систему тестування для оцінки рівня знань користувача в даній галузі науки.
1.2 Постановка завдання
Необхідно розробити ПП із зручним призначеним для користувача інтерфейсом і системою пошуку. Крім того, необхідно розробити тести для оцінки рівня знань, отриманих користувачем.
1.3 Функціональні вимоги до навчальної системі
Навчальна система повинна забезпечити користувачеві простоту отримання інформації з предметної області. Для пошуку слова в тексті підручника повинна існувати система пошуку. Для зручності поводження з програмою повинна існувати статусний рядок, що є підказкою, і містить можливі комбінації клавіш у тому чи іншому випадку.
1.4 Вхідні дані
Текстові файли (у форматі. Txt), що містять теоретичну інформацію про ПДР. Вхідні дані зберігаються в даних текстових файлах. Також вхідні дані вводяться з клавіатури (варіанти відповідей в тесті і слова для пошуку).
1.5 Вихідні дані
Вихідні дані є: результат тестування користувача, теоретичний матеріал з даної предметної області, результат пошуку за ключовим словом. Всі вихідні дані виводяться на екран монітора.
1.6 Схема інформаційних потоків
Існує головна програма. У неї надходять Вхідні дані, що вводяться користувачем з клавіатури (варіанти відповідей в тесті і слова для пошуку), а також із зовнішніх текстових файлів (теорія про ПДР). У відповідь на дані, що вводяться головна програма виводить на екран монітора Вихідні дані - теоретичний матеріал, довідку, результати пошуку та тестування. Схематично робота програми зображена на малюнку 1.6.
Малюнок 1.1 Схема інформаційних потоків.
2 ВИБІР МОВИ ПРОГРАМУВАННЯ
Сі - універсальна мова програмування. Він тісно пов'язаний із системою UNIX, так як був розроблений спеціально для цієї системи.
Мова програмування Сі забезпечує різноманітність типів даних. Базовими типами є літери, а також цілі і плаваючі числа різних розмірів. Крім того, є можливість отримувати цілу ієрархію виведених типів даних з покажчиків, масивів, структур та об'єднань. Вирази формуються з операторів і операндів. Будь-яке вираження, включаючи присвоювання і виклик функції, може бути інструкцією. Покажчики забезпечують машинно-незалежну адресну арифметику.
Сі відноситься до мов середнього рівня, оскільки в ньому керуючі структури мов високого рівня поєднуються із здатністю маніпулювати бітами, байтами і покажчиками (адресами). Таким чином, Сі надає програмісту можливість практично повністю управляти комп'ютером.
Мова Паскаль - це мова програмування, порівняно, досить ясний і логічний. Паскаль гнучкий і розвинутий у відношенні типів даних. Привабливі його рекурсивні можливості, а також підтримка технології об'єктно-орієнтованого програмування.
Мова Паскаль став «спадкоємцем» Алгола. Алгоритмічна мова Алгол був розроблений в 1950-60-х роках. Його розробником був швейцарський учений Ніклаус Вірт, який збирався використовувати цю мову для навчання своїх студентів методом розробки компілятором. Час народження мови Паскаль - початок 70-х років.
Але на практиці мова Сі показує себе більш зручним у використанні і гнучким.
Тому даний ПП написаний на мові C, компілятор Borland C + + 3.1
3 ФУНКЦІОНАЛЬНО-ЛОГІЧНА СХЕМА ПРОГРАМИ
Малюнок 3.1
Робота програми починається із завантаження головного меню програми. Він складається з рядка меню, статусного рядка, двох вікон виводу. Рядок меню складається з шести пунктів. Користувач вибирає потрібний йому пункт меню. Призначення пунктів рядка меню наступне:
теорія - виводить на екран теоретичну інформацію з текстових файлів за правилами дорожнього руху;
тест - запускає вікно для тестування знань користувача;
пошук - запускає пошукову систему введеного користувачем з клавіатури слова;
допомога - виводить на екран з текстового файлу довідку;
про програму - виводить на екран коротку інформацію про програму та її автора;
вихід - закінчує роботу алгоритму.
У меню «Теорія» можна вибрати основні глави правил дорожнього руху; програма видасть теоретичну інформацію.
У режимі тестування користувач відповідає на запитання, використовуючи цифрові клавіші (1, 2 або 3). Тестування завершується, коли користувач відповість на десять питань. Після завершення тестування виводиться інформація про результати тестування і оцінка, яку отримав користувач.
У режимі пошуку програма очікує введення слова або фрази, а потім робить пошук у текстових файлах, які містять теорію. Якщо слово чи фраза знайдена, програма повертається в режим перегляду теорії і виводить на екран теоретичний матеріал, починаючи з рядка, у якій є введене слово.
Перегляд меню «Довідка» аналогічний перегляду теоретичного матеріалу.
Меню «Про програму» виводить коротку інформацію про автора та програмі.
Меню «Вихід» виконує звільнення використовуваної пам'яті, закриття використовуваних файлів і завершення роботи алгоритму.
Схематично робота програми представлена на малюнку 3.1.
4 КОМПЛЕКТ ПОСТАВКИ, ПОРЯДОК ІНСТАЛЯЦІЇ І ЗАПУСКУ
У комплект поставки ПП входить Ар SYSTEMX. RAR. При розпакуванні даного архіву в заданій користувачем директорії встановиться папка SYSTEMX містить:
- 7 текстових файлів з теоретичної інформацією (1. Txt, 2. Txt, 3. Txt, 4. Txt, 5. Txt, 6. Txt, 10. Txt);
- Файл EGAVGA. BGI - графічні драйвера;
- Файл KEYRUS. COM - русифікатор;
- Файл START. BAT - пакетний файл MS - DOS запуску програми (запуск русифікатора, а потім самої програми);
- Файл PROEKT 2. EXE - файл запуску програми без русифікатора;
- Файл PROEKT 2. CPP - текстовий файл із вихідним кодом програми.
Для запуску програми необхідно запустити пакетний файл MS - DOS START. BAT. Даний файл запустить русифікатор (KEYRUS. COM), а потім саму програму. Ви можете також запустити русифікатор або саму програму (PROEKT. EXE) окремо, але при цьому правильне функціонування програми не гарантується. Також не рекомендується видаляти, переміщати або перейменовувати будь-які файли і папки директорії SYSTEMX. В іншому випадку правильне функціонування програми не гарантується.
5 ОПИС ПРОЦЕДУР І ФУНКЦІЙ
Структура взаємодії процедур і функцій представлена в ієрархічному вигляді.
На самому верхньому рівні коштує процедура VOID MAIN (VOID) - ядро всієї програми, вона взаємодіє з усіма основними процедурами і функціями:
функцію openf (), яка виводить теоретичний матеріал з файлу на екран;
процедуру menu (...), за допомогою якої відбувається малювання меню теорії;
процедуру TEST (), що реалізує тестування користувача;
процедуру interfice (...), за допомогою якої відбувається малювання основного вікна програми.
5.1 Схема потоків даних
Схема потоків даних представлена на малюнку 5.1.1.
Вхідні дані розділяються на два потоки: введення даних з клавіатури, зчитування даних із зовнішнього файлу, що зберігає інформацію по предметній області (навчальний матеріал).
Потім потоки обробляються програмою, і результат обробки надається користувачеві на екран.
ВИСНОВКИ
У результаті проведеної роботи було отримано ПП, який надає користувачеві інформацію про ручне вогнепальну зброю. Програма має зручний і інтуїтивно зрозумілий користувальницький інтерфейс, систему пошуку фрагмента тексту, довідкову систему і тестування користувача по десяти питань зазначеної теми.
Характерними плюсами даної програми є красиве оформлення, простота навігації по програмі, присутність рядки підказки, довідки та пошуку. Програма не вимагає великих ресурсів комп'ютера для повноцінної функціональності. Також зручно і те, що для установки програми необхідно просто запустити інсталяційний пакет, а потім розпакували пакетний файл. Також позитивною рисою програми є і те, що вона може працювати як під операційною системою MS - DOS (версії не нижче 5.22), так і під ОС MS Windows 95 і вище.
Однак у даного ПП є і свої мінуси. На сьогоднішній день, в порівнянні з іншими ПП, програма є досить примітивною, має всього лише 16-кольорову гаму проти 16 - і навіть 32-бітових кольорових гам більшості сучасних програм. Також даний ПП є дуже «вередливим» - будь-яке, навіть найменше, зміна в робочих файлах програми призведе до її повної або часткової нефункціональність.
СПИСОК ВИКОРИСТОВУЮТЬСЯ ДЖЕРЕЛ
1. С. Стівен Прата. Мова програмування / / Москва-Київ: 2002. - 837с.
2. Михайлов А. П., Дорожній П. Р. Правила дорожнього руху / / Київ: 2004. - 340С.
Додаток А
ТЕХНІЧНЕ ЗАВДАННЯ
А.1 Загальні відомості
Повна назва програмного продукту: «Довідково-інформаційна система. Правила дорожнього руху. Даний програмний продукт виконаний студентом 1-го курсу Донецького державного інституту штучного інтелекту (ДонДІШІ), факультету СКІТ, групи ІС-04б Клімовим В'ячеславом Олексійовичем.
Програма розробляється за завданням, виданим кафедрою поїсом.
Плановий термін початку роботи зі створення ПП: 11.02.2005, термін закінчення: 23.05.05.
Курсова робота повинна виконуватися згідно з графіком, наведеним у таблиці А.1
Таблиця А.1 - Стадії та етапи розробки ПП
Етапи розробки ПП | Терміни виконання |
1. Постановка завдання | 1-2 |
2. Складання технічного завдання | 2-3 |
3. Технічне проектування. Розробка методу розв'язання задачі. Визначення структури програми, виділення модулів, організація їх взаємозв'язку | 3-4 |
4. Розробка основних алгоритмів функціонування програми, складання специфікаційних модулів. | 5 |
5. Робоче проектування. Визначення структур вхідних і вихідних даних, алгоритмів роботи модулів. Опис вхідних та вихідних даних | 6-7 |
6. Написання програми | 7-10 |
7. Налагодження і тестування програми | 11 |
8. Написання пояснювальної записки | 11-14 |
9. Захист курсового проекту | 23 травня 2005 |
А.2 Призначення і цілі створення ПП
Даний ПП призначений для надання довідкової інформації про ПДР, з можливістю зробити пошук необхідного слова чи фрази, визначити рівень підготовки користувача за допомогою тестування; при цьому застосовується зручний і зрозумілий інтерфейс з довідкою з навігації і системою підказок.
А.3 Вимоги до програмного продукту
А.3.1 Вимоги до програмного продукту в цілому
У цілому до ПП пред'являються наступні вимоги:
а) контроль введених даних;
б) діалог з користувачем, реалізований за допомогою меню;
в) інтуїтивно зрозумілий інтерфейс;
г) організація тестування;
д) надання довідкового матеріалу;
е) зберігання довідкового матеріалу в файлі на диску;
А.3.2 Вимоги до завдань і функцій, виконуваних програмою
У процесі роботи необхідно забезпечити виконання таких функцій:
а) виведення тексту на екран;
б) скролінг тексту;
в) пошук фрагмента тексту;
г) надання довідки по даній темі і по навігації в програмі.
А.3.3 Вимоги до видів забезпечення
А.3.3.1 Вимоги до технічного забезпечення
Для коректної роботи програми необхідна наявність комп'ютера з наступною конфігурацією:
відеокарта з підтримкою режиму 640 x 480, 16 кольорів;
процесор 80386 і вище;
VGA монітор;
1Mb оперативної пам'яті;
клавіатура;
- Дисковод гнучких дисків.
А.3.3.2 Вимоги до програмного забезпечення
Даний ПП реалізований для ОС MS-DOS версії не нижче 5.22.
А.3.3.3 Вимоги до організаційного забезпечення
У програмну документацію повинні входити:
пояснювальна записка;
програми:
а) технічне завдання;
б) керівництво користувача;
в) екранні форми;
г) лістинг програми.
Додаток Б
КЕРІВНИЦТВО КОРИСТУВАЧА
Щоб встановити програму, необхідно запустити Ар system. Rar, вказати адресу інсталяції програми, потім, щоб запустити програму, необхідно запустити файл system \ start. Bat. Після запуску програми на екрані з'явиться головне вікно програми (див. Форма 1).
При виборі кнопки «Меню» відкриється підменю з підтемами (див. Форма 2). При виборі однієї з підтем в головне вікно виведення виведеться теоретична інформація з обраної теми (див. Форма 3). Повернутися в підменю з підтемами можна, натиснувши клавішу Esc.
Друге меню - «Тест». При виборі цього меню з'являється віконце з першим питанням тесту (див. Форма 4). Тепер необхідно відповісти на 10 запитань. Вийти з тіста можна, натиснувши клавішу Esc при виводі результату тестування.
Меню - «Допомога». При натисканні клавіші Enter у головне вікно виведення буде виведена довідкова інформація про навігацію по програмі (див. Форма 5). Вийти з меню допомоги в головне меню - Esc.
П'яте, меню - «Про програму». Виводиться віконце з короткою інформацією про програму та її автора (див. Форма 6). Вийти у головне меню - Esc.
І, нарешті, останнє меню - «Вихід». При натисненні Enter програма закінчить свою роботу.
Додаток В
ЕКРАННІ ФОРМИ
Форма 1-Головне вікно
Форма 2 - Меню
Форма 3 - Теорія
Форма 4 - Тести
Форма 5 - Допомога
Форма 6 - Про програму
Додаток В
Лістинг програм
# Include <stdio.h>
# Include <conio.h>
# Include <graphics.h>
# Include <alloc.h>
# Include <dos.h>
# Include <string.h>
# Include <stdlib.h>
int a, b, d = 0, i, k = 0, l = 0, x = 0, z = 0, p = 1, r = 0;
int mode = VGAHI;
int driver = VGA;
FILE * in;
char ch, cd [50], * str, c, s, cf [50], cb;
void * buf, * buf1, * buf2;
openf (char s [20])
{
setfillstyle (SOLID_FILL, 0);
bar (23,445,615,470);
setcolor (4);
outtextxy (25,450, "Прокручування тексту посторінково клавішами <page up>, <page down>");
outtextxy (25,460, "Прокручування тексту порядково клавішами <вгору>, <вниз>");
putimage (23,43, buf, 0);
setcolor (15);
line (23,43,112,43);
z = 0;
k = 0;
in = fopen (s, "r");
do
{
setviewport (24,61,412,435,0);
rewind (in);
while (fgets (cd, 47, in)! = NULL)
{
a = strlen (cd);
if (cd [a-1] == '\ n')
cd [a-1] = '';
if (k> z)
{
setcolor (7);
outtextxy (15,10 + x, cd);
x + = 10;
}
k + +;
if (k> 35 + z)
break;
}
ch = getch ();
if (ch! = 27)
ch = getch ();
if (ch == 80)
{Z + +;}
if (ch == 72)
{Z -;}
if (ch == 81)
{Z + = 35;}
if (ch == 73)
{Z-= 35;}
if (z <0)
z = 0;
k = 0;
x = 0;
clearviewport ();
} While (ch! = 27);
setviewport (0,0,639,479,0);
fclose (in);
setfillstyle (SOLID_FILL, 0);
bar (23,445,615,470);
setcolor (4);
outtextxy (25,450, "Переміщення по меню кнопками <вліво", "вправо>; вибір меню клавішею <enter>");
outtextxy (25,460, "Вихід з меню - <esc>;");
return (0);
}
test ()
{
setfillstyle (SOLID_FILL, 7);
bar (56,101,380,395);
setcolor (15);
line (55,100,55,396);
line (55,100,381,100);
line (377,130,377,391);
line (60,391,377,391);
setcolor (8);
line (55,396,381,396);
line (381,100,381,396);
line (60,130,60,391);
line (60,130,377,130);
setfillstyle (SOLID_FILL, 0);
bar (61,131,376,390);
while (a! = 27)
{
if ((p == 1) & & (a == 51)) r + +;
if ((p == 2) & & (a == 49)) r + +;
if ((p == 3) & & (a == 49)) r + +;
if ((p == 4) & & (a == 51)) r + +;
if ((p == 5) & & (a == 50)) r + +;
if ((p == 6) & & (a == 50)) r + +;
if ((p == 7) & & (a == 49)) r + +;
if ((p == 8) & & (a == 51)) r + +;
if ((p == 9) & & (a == 50)) r + +;
if ((p == 10) & & (a == 50)) r + +;
if ((a == 49) | | (a == 50) | | (a == 51)) p + +;
setfillstyle (SOLID_FILL, 0);
bar (61,131,376,390);
setfillstyle (SOLID_FILL, 7);
bar (56,101,380,129);
setcolor (4);
if (p == 1)
{
outtextxy (150,110, "Питання номер 1 ");
outtextxy (65,140, "Назвіть перша дія при посадці");
outtextxy (65,150, "в автомобіль?");
outtextxy (65,170, "1. прийняти зручне положення;");
outtextxy (65,180, "2. включити зчеплення;");
outtextxy (65,190, "3. застебнуть ремені безпеки;");
}
if (p == 2)
{
outtextxy (150,110, "Питання номер 2");
outtextxy (65,140, "Яка найбільш загальна причина аварій?");
outtextxy (65,170, "1. помилка водія;");
outtextxy (65,180, "2. наркотики;");
outtextxy (65,190, "3. аварій не буває;");
}
if (p == 3)
{
outtextxy (150,110, "Питання номер 3");
outtextxy (65,140, "Ця передача нормальна для водіння");
outtextxy (65,150, "в місті і на шосе?");
outtextxy (65,170, "1. водіння [d ];");
outtextxy (65,180, "2. нейтарльная [n ];");
outtextxy (65,190, "3. парковка [p ];");
}
if (p == 4)
{
outtextxy (150,110, "Питання номер 4");
outtextxy (65,140, "Ця передача використовується для");
outtextxy (65,150, "руху задом.");
outtextxy (65,170, "1. водіння [d ];");
outtextxy (65,180, "2. парковка [p ];");
outtextxy (65,190, "3. зворотна [r ];");
}
if (p == 5)
{
outtextxy (150,110, "Питання номер 5");
outtextxy (65,140, "Для управління автомобілем завжди");
outtextxy (65,150, "майте з собою ...");
outtextxy (65,170, "1. аптечку;");
outtextxy (65,180, "2. посвідчення;");
outtextxy (65,190, "3. запаску");
}
if (p == 6)
{
outtextxy (150,110, "Питання номер 6");
outtextxy (65,140, "В яких місцях заборонена стоянка?");
outtextxy (65,170, "1. на узбіччі;");
outtextxy (65,180, "2. на мостах;");
outtextxy (65,190, "3. на стоянці;");
}
if (p == 7)
{
outtextxy (150,110, "Питання номер 7");
outtextxy (65,140, "Коли потрібно зупинятися перед");
outtextxy (65,150, "залізничними шляхами?");
outtextxy (65,170, "1. завжди;");
outtextxy (65,180, "2. якщо є дорожні знаки;");
outtextxy (65,190, "3. на розсуд водія;");
}
if (p == 8)
{
outtextxy (150,110, "Питання номер 8");
outtextxy (65,140, "Як правильно виїжджати на");
outtextxy (65,150, "автостраду?");
outtextxy (65,170, "1. ви повинні сповільнитися;");
outtextxy (65,180, "2. вам повинні дати дорогу;");
outtextxy (65,190, "3. ви повинні поступитися дорогу;");
}
if (p == 9)
{
outtextxy (150,110, "Питання номер 9");
outtextxy (65,140, "На дорозі повністю покритою снігом,");
outtextxy (65,150, "що забезпечує найкращу тягу?");
outtextxy (65,170, "1. дощові покришки;");
outtextxy (65,180, "2. покришки із залізними ланцюгами;");
outtextxy (65,190, "3. лисі покришки;");
}
if (p == 10)
{
outtextxy (150,110, "Питання номер 10");
outtextxy (65,140, "Ваш автомобіль рухається швидше ...");
outtextxy (65,170, "1. на підйомі;");
outtextxy (65,180, "2. на спуску;");
outtextxy (65,190, "3. на повороті;");
}
if (p == 11)
{
p = 0;
outtextxy (170,110, "Результат");
if (r <5)
{
outtextxy (65,170, "Дуже погано !!!");
r = 0;
}
if ((r <8) & & (r> 5))
{
outtextxy (65,170, "Добре !!!");
r = 0;
}
if ((r <10) & & (r> 8))
{
outtextxy (65,170, "Здорово !!!");
r = 0;
}
if (r == 10)
{R = 0;
outtextxy (65,170, "Дуже добре, Ви пройшли тест !!!");
a = getch ();
return (0);
}
}
a = getch ();
}
return (0);
}
menu ()
{Do
{
setfillstyle (SOLID_FILL, 7);
setcolor (8);
line (23,43,23,254);
line (23,43,112,43);
setcolor (15);
line (112,43,112,254);
line (23,254,112,254);
bar (24,44,111,253);
for (i = 0; i <= 150; i + = 30)
{
setcolor (15);
line (24,44,111,44);
line (30,74 + i, 100,74 + i);
setcolor (8);
line (30,73 + i, 100,73 + i);
}
setcolor (8);
outtextxy (38,54, "Глава 1");
outtextxy (38,84, "Глава 2");
outtextxy (38,114, "Глава 3");
outtextxy (38,144, "Глава 4");
outtextxy (38,174, "Глава 5");
outtextxy (38,204, "Глава 6");
outtextxy (30,234, "Доповнення");
b = getch ();
if ((b == 80) | | (b == 72))
{
if (b == 80) k + +;
if (b == 72) k -;
if (k> 7) k = 1;
if (k <1) k = 7;
if ((k == 1))
{
setcolor (4);
outtextxy (38,54, "Глава 1");
b = getch ();
if (b == 13)
{
openf ("e: \ \ 1 \ \ 1.txt");
}
}
if ((k == 2))
{
setcolor (4);
outtextxy (38,84, "Глава 2");
b = getch ();
if (b == 13)
{
openf ("e: \ \ 1 \ \ 2.txt");
}
}
if ((k == 3))
{
setcolor (4);
outtextxy (38,114, "Глава 3");
b = getch ();
if (b == 13)
{
openf ("e: \ \ 1 \ \ 3.txt");
}
}
if ((k == 4))
{
setcolor (4);
outtextxy (38,144, "Глава 4");
b = getch ();
if (b == 13)
{
openf ("e: \ \ 1 \ \ 4.txt");
}
}
if ((k == 5))
{
setcolor (4);
outtextxy (38,174, "Глава 5");
b = getch ();
if (b == 13)
{
openf ("e: \ \ 1 \ \ 5.txt");
}
}
if ((k == 6))
{
setcolor (4);
outtextxy (38,204, "Глава 6");
b = getch ();
if (b == 13)
{
openf ("e: \ \ 1 \ \ 6.txt");
}
}
if ((k == 7))
{
setcolor (4);
outtextxy (30,234, "Доповнення");
b = getch ();
if (b == 13)
{
openf ("e: \ \ 1 \ \ 10.txt");
}
}
}
} While (b! = 27);
return (0);
}
interfice (void)
{
setfillstyle (SOLID_FILL, 7);
setcolor (15);
line (0,0,0,479);
line (0,0,639,0);
setcolor (8);
line (639,0,639,479);
line (0,479,639,479);
bar (1,1,638,478);
setfillstyle (SOLID_FILL, 16);
bar (24,61,413,436);
setcolor (8);
line (23,60,23,438);
line (23,60,414,60);
setcolor (15);
line (414,60,414,438);
line (23,438,413,438);
bar (425,61,614,436);
setcolor (8);
line (424,60,424,438);
line (424,60,615,60);
setcolor (15);
line (615,60,615,438);
line (424,438,615,438);
bar (23,445,615,470);
setcolor (8);
line (23,445,23,470);
line (23,445,615,445);
setcolor (15);
line (615,445,615,470);
line (23,470,615,470);
setcolor (12);
outtextxy (25,450, "Переміщення по меню кнопками <вліво", "вправо>; вибір меню клавішею <enter>");
outtextxy (25,460, "Вихід з меню - <esc>;");
buf = malloc (imagesize (23,43,113,254));
getimage (23,43,113,254, buf);
buf1 = malloc (imagesize (100,130,340,350));
getimage (100,130,340,350, buf1);
buf2 = malloc (imagesize (24,15,612,43));
getimage (24,15,612,43, buf2);
do
{
setcolor (11);
for (i = 0; i <6; i + +)
{
setfillstyle (SOLID_FILL, 7);
bar (24 + i * 100,15,112 + i * 100,43);
setcolor (15);
line (23 + i * 100,14,23 + i * 100,44);
line (23 + i * 100,14,112 + i * 100,14);
setcolor (8);
line (23 + i * 100,44,112 + i * 100,44);
line (112 + i * 100,14,112 + i * 100,44);
}
setcolor (4);
outtextxy (48,25, "МЕНЮ");
outtextxy (145,25, "ТЕСТИ");
outtextxy (245,25, "ПОШУК");
outtextxy (346,25, "ДОПОМОГА");
outtextxy (425,25, "Про ПРОГРАМІ ");
outtextxy (550,25, "ВИХІД");
a = getch ();
if ((a == 77) | | (a == 75))
{
if (a == 77) d + +;
if (a == 75) d -;
if (d> 6) d = 1;
if (d <1) d = 6;
if (d == 1)
{
setcolor (8);
line (23,14,23,44);
line (23,14,112,14);
setcolor (15);
line (23,44,112,44);
line (112,14,112,44);
a = getch ();
if (a == 13)
{
menu ();
}
putimage (23,43, buf, 0);
}
if ((d == 2))
{
setcolor (8);
line (123,14,123,44);
line (123,14,212,14);
setcolor (15);
line (123,44,212,44);
line (212,14,212,44);
a = getch ();
if (a == 13)
{
test ();
}
setfillstyle (SOLID_FILL, 0);
bar (55,100,381,396);
}
if ((d == 3))
{
setcolor (8);
line (223,14,223,44);
line (223,14,312,14);
setcolor (15);
line (223,44,312,44);
line (312,14,312,44);
a = getch ();
}
if ((d == 4))
{
setcolor (8);
line (323,14,323,44);
line (323,14,412,14);
setcolor (15);
line (323,44,412,44);
line (412,14,412,44);
a = getch ();
}
if ((d == 5))
{
setcolor (8);
line (423,14,423,44);
line (423,14,512,14);
setcolor (15);
line (423,44,512,44);
line (512,14,512,44);
a = getch ();
if (a == 13)
{
setcolor (7);
rectangle (100,130,340,350);
outtextxy (110,140, "Правила дорожнього руху");
outtextxy (110,150, "(електронний підручник)");
setcolor (4);
outtextxy (100,180, "Даний програмний продукт");
outtextxy (100,190, "захищений законом");
outtextxy (100,200, "про авторські права!");
setcolor (7);
outtextxy (110,260, "Виконав ст. гр. ІС-04б");
outtextxy (110,270, "Клімов В'ячеслав Олексійович");
a = getch ();
}
putimage (100,130, buf1, 0);
}
if ((d == 6))
{
setcolor (8);
line (523,14,523,44);
line (523,14,612,14);
setcolor (15);
line (523,44,612,44);
line (612,14,612,44);
a = getch ();
}
}
} While ((a! = 13) | | (d! = 6));
free (buf);
free (buf1);
free (buf2);
return 0;
}
void main (void)
{
initgraph (& driver, & mode, "e: \ \ bc31 \ \ bin");
interfice ();
closegraph ();
}