Реферат по предмету "Информатика, программирование"


Разработка информационно-обучающей системы на тему “Атомно-молекулярная теория. Доказательство существования атомов и молекул

РЕФЕРАТ
Данный программныйпродукт, выданный как тема для курсового проекта, представляет собой реализациюинформационно-обучающей системы предназначенной для ознакомления и обученияпользователей атомно–молекулярной теории, которая доказывает существованиеатомов и молекул. В программном продукте реализованы следующие возможности:
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     Цель разработки
Целью разработки данного программногопродукта является создание узкоспециализированной информационно-обучающейсистемы предназначенной для ознакомления и обучения широкого кругапользователей, занимающихся изучением химии, а так же способной эффективнооценивать уровень знаний, полученных пользователями в процессе обучения.
1.2     Функциональныетребования
Поскольку основной задачей данногопрограммного продукта является обучение, то необходимой является его ориентацияименно на пользователей. Необходимо создать условия, при которых эффект отпроцесса обучения был бы максимальным. То есть необходимо создание простого,понятного, функционального и привлекательного пользовательского интерфейса, атак же удобных инструментов, которые позволили бы использовать возможности информационно-обучающейсистемы в полной мере.
С этой точки зрения оптимальнымявляется графический интерфейс. Он удобен и практичен в использовании, а так жеявляется интуитивно-понятным, что в нашем случае является не менее важным.
Управление основными возможностямисистемы должно быть организовано с посредством системы раскрывающихся меню,доступ к которым должен обеспечиваться непосредственным выбором.
Информационно-обучающая системадолжна быть снабжена справочной системой, которая позволит использоватьмаксимум ее возможностей даже не подготовленному пользователю, системойобучения, а так же системой тестирования и оценки знаний, полученныхпользователем в процессе обучения.
Справочная система должна содержатьинформацию о способе навигации в системе, функциональных клавишах, информацию оразработчике программного продукта и основных возможностях которыми располагаетданная система.
Система обучения должна обеспечиватьпростоту доступа пользователя к необходимой ему информации, а это предполагаетналичие в системе обучения, в том числе возможности поиска информации поключевым словам.
Система тестирования и оценки знанийпользователя должна содержать инструменты, позволяющие объективно оценитьуровень знаний, полученных пользователем в процессе обучения. Поэтому, всистеме необходимо наличие простого, понятного и эффективного методаоценивания.

2 ОСНОВНЫЕ МЕТОДЫ И АЛГОРИТМЫ
При создании данного программногопродукта использовался принцип нисходящего программирования, т.е. задачаразбивалась на некоторые подзадачи, каждая из которых в свою очередь сновадетализировалась, пока не достигались, простые задачи. В первую очередь быливыделены и решены следующие четыре основные подзадачи:
–         организацияпользовательского интерфейса;
–         организациясистемы обучения;
–         организациясистемы поиска информации по ключевым словам;
–         организациясистемы тестирования.
Следует отметить, что система былареализована таким образом, что в каждый конкретный момент времени ее состояниемогло измениться только в результате некоторых действий пользователя. Поэтому системаиспользует только так называемый последовательный процесс, при котором вседействия выполняются строго последовательно. На рисунке 2.1 представленалгоритм работы основной программы. Заметим, что основной структурной единицейпроцесса работы программы является процесс обработки команды пользователя. Емупринадлежит основной приоритет.

/>

/>
  Quit_vqriable: =-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 не станет меньше позиции 74*20 – тогда oldpos присвоит себе указатель на начальнуюпозицию файла;
– при нажатии пункта “Далее»” (на страницу вниз), проверяется, является ли текущая позиция в файле меньшечем 540*20 и если является, то oldpos:=74*20+oldpos. Происходит смещение указателя напозицию, хранящуюся в ячейке oldpos,до тех пор, пока oldpos не станетбольше или равна позиции 540*20 – тогда oldpos присвоит себе указатель на конечную позицию файла;
Схема работы функциискроллинга представлена на рисунке 2.3
/> /> /> /> /> /> /> /> /> /> /> /> />

Чтение и вывод на экран с текущей позиции, oldpos:= 74*20+oldpos занесение в oldpos новой текущей позиции.  
oldpos:= -74*20+oldpos
смещение на позицию, указанную в ячейке oldpos чтение с новой позиции.   Нет         да
/>

Рисунок 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 приведенасхема процесса тестирования и оценки уровня знаний пользователя.

/>

k  
Занесение ответа пользователя в  массив user_otvet[k]. Анализ ответа (сравнение с правильным).   да  нет
/>

Рисунок 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г. – 896c.
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-совместимый монитор с поддержкойразрешения 640x480 при 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 февраля 2006г. 2 Разработка и согласование технического задания 1 неделя 27 февраля 2006г. 3 Подбор методического и справочного материала 1 неделя 5 марта 2006г. 4 Разработка графического интерфейса 2 недели 13 марта 2006г. 5 Разработка основных алгоритмов 2 недели 27 марта 2006г. 6 Реализация основных алгоритмов, дополнительных возможностей 2 недели 11 апреля 2006г. 7 Реализация справочной системы, окончательная стыковка модулей 1 неделя 24 апреля 2006г. 8 Тестирование и отладка программы 2 недели 1 мая 2006г. 9 Написание пояснительной записки 2 недели 12 мая 2006г. 10 Защита курсового проекта 30 мая 2006г.

Приложение Б
РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ
Б.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-режим с разрешением 640x480.
–         «Не найден файлтеории». Данная ошибка может возникнуть при отсутствии файла теории 1.txt в каталоге программы. Проверьте егоналичие.
–         «Не найден файлтестов». Данная ошибка может возникнуть при отсутствии файла тестовых заданий вкаталоге, из которого запускалась программа. Проверьте его наличие и в случае необходимостипроведите установку.
–         «Не найден файлправильных ответов». Ошибка происходит, если в каталоге отсутствует требуемыйфайл answer.dat. Проверьте его наличие.

Приложение В
ЭКРАННЫЕ ФОРМЫ
/>
Рисунок В.1 – Общий видзаставки
/>
Рисунок В.2 – Общий видокна программы

/>
Рисунок В.3 – Окнопрограммы в режиме теория
/>
Рисунок В.4 – Окнопрограммы в режиме справки

/>
Рисунок В.5 – Окно теориив режиме поиска
/>
Рисунок В.6 – Поиск недал результатов.

/>
Рисунок В.7 – Окнопрограммы в режиме тестирования
/>
Рисунок В.8 – Окнорезультатов тестирования

/>
Рисунок В.9 – Общий вид окнаинформации о разработчике

Приложение Г
ЛИСТИНГ ПРОГРАММЫ
//модуль BIB.с
#include
#include
#include
#include
#include
#include
//модуль 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(charzaglavie[50], char punkt1[50], char punkt2[50], char punkt3[50], charpunkt4[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
         {
          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)
          returncursor;
  if(cursor==4)
          cursor=0;
  if(cursor==-1)
          cursor=3;
  }
  while(1);
}
/////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////
//модуль ZASTAVKA.c
#include«bib.h»
//-------------------Выводна экран названия курс. работы--------------------
intzastavka2()
{
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»
//-----------------------------Поиск слова-----------------------------------
charsearchstr[30];
intsearch(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)
  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»
//-----------------------Загрузка информации из файла------------------------
intshow_file(char filename[12], int pos)
{
 FILE *f;
 char str[75];
 intoldpos,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
//****************************************************
 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
 {        //месте егоцвет серый, иначе
 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
 {       //месте его цветтемносерый, иначе
 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
 {
 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;
         chari = 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)
         {
                   charotv1[50];
                   charotv2[50];
                   charotv3[50];
                   charotv4[50];
                   charvopr[50];
                   chartmp[50];
                   intgood=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';
                            intk;
                            k= menu(vopr,otv1,otv2,otv3,otv4);
                            if(k==-1) return;
                            user_otvet[i]= k+1;   //ответ пользователя
                            i++;     //увеличивается
                   }
                   ramka();     //Прорисовка рамки
                   for(k=0;k
                    {
                    if(otvet[k] == user_otvet[k])
                    good++;
                    elsebad++;
                    }
                   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
                    {      //тестирования
                            memset(tmp,0,50);  //Выделение памяти под переменную tmp
                            strcpy(tmp,"Плохо ");   //Копирует строку «Плохо»
                    }       //в строку tmp
                   if(good>3 && good
                    {
                            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
          {
          intchoice;
          choice=getch();
          if(choice==27) return ;     //ЕслиEsc, то выход из программы
          }
         while(1);
}
/////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////
//модуль HELP.c
#include«bib.h»
//----------------------------------Помощь-----------------------------------
int help(intautor)
{
 FILE *f;
 int cury = 0;
 char str[75];
 charfilename[12];
 if (autor)
 strcpy(filename,«autor.txt»);
 elsestrcpy(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);
}
//////////////////////////////////////////////////////////////////////////////


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

Поделись с друзьями, за репост + 100 мильонов к студенческой карме :

Пишем реферат самостоятельно:
! Как писать рефераты
Практические рекомендации по написанию студенческих рефератов.
! План реферата Краткий список разделов, отражающий структура и порядок работы над будующим рефератом.
! Введение реферата Вводная часть работы, в которой отражается цель и обозначается список задач.
! Заключение реферата В заключении подводятся итоги, описывается была ли достигнута поставленная цель, каковы результаты.
! Оформление рефератов Методические рекомендации по грамотному оформлению работы по ГОСТ.

Читайте также:
Виды рефератов Какими бывают рефераты по своему назначению и структуре.