Разработка информационно-обучающей системы на тему Правила дорожного движения

ПОСТАНОВКА ЗАДАЧИ



	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 ФУНКЦИОНАЛЬНО-ЛОГИЧЕСКАЯ СХЕМА ПРОГРАММЫ





Начало

Выбор пункта меню

Теория

Тест

Помощь

Поиск

Выход

1

2

3

Выход

Тест

Поиск	

Просмотр информации о программе

Просмотр теории

Помощь

О программе

4

5

6

7

Рисунок 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 запуска программы (запуск русификатора, а затем самой программы);

– файл PROEKT2.EXE – файл запуска программы без русификатора;

– файл PROEKT2.CPP – текстовый файл с исходным кодом программы.

Для запуска программы необходимо запустить пакетный файл MS-DOS START.BAT. Данный файл запустит русификатор (KEYRUS.COM), а затем саму программу. Вы можете также запустить русификатор или саму программу (PROEKT.EXE) отдельно, но при этом правильное функционирование программы не гарантируется. Также не рекомендуется удалять, перемещать или переименовывать любые файлы и папки директории SYSTEMX. В противном случае правильное функционирование программы не гарантируется.


5 ОПИСАНИЕ ПРОЦЕДУР И ФУНКЦИЙ

		

		Структура взаимодействия процедур и функций представлена в иерархическом виде.

		На самом верхнем уровне стоит процедура VOID MAIN(VOID) – ядро всей программы, она взаимодействует со всеми основными процедурами и функциями:

				функцию openf(), которая выводит теоретический материал из файла на экран;

				процедуру menu(…),с помощью которой происходит рисование меню теории;

				процедуру TEST(), реализующую тестирование пользователя;

				процедуру interfice(…), с помощью которой происходит рисование основного окна программы.

	

	5.1 Схема потоков данных

	

	Схема потоков данных представлена на рисунке 5.1.1.

	

	

Рисунок 4.2 – Схема потоков данных

		

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

		Затем потоки обрабатываются программой, и результат обработки предоставляется пользователю на экран.


ВЫВОДЫ



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

Характерными плюсами данной программы являются красивое оформления, простота навигации по программе, присутствие строки подсказки, справки и поиска. Программа не требует больших ресурсов компьютера для полноценной функциональности. Также удобно и то, что для установки программы необходимо просто запустить инсталляционный пакет, а затем распаковавшийся пакетный файл. Также положительной чертой программы является и то, что она может работать как под операционной системой 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 Требования к техническому обеспечению

Для корректной работы программы необходимо наличие компьютера со следующей конфигурацией:

видеокарта с поддержкой режима 640x480, 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();

}