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 <string.h>

#include <stdio.h>

#include <conio.h>

#include <graphics.h>

#include <stdlib.h>

#include <dos.h>

//модуль RAMKA.c

#include "bib.h"

//-----------------------Построение рамки на экране--------------------------

void ramka()

{

cleardevice();

//------------------------ //Очистка экрана

setfillstyle(1,7);  //Сплошная заливка серым цве-

bar(0,0,640,19); //том боковых граней экрана

bar(630,19,640,480);

bar(0,461,640,480);

bar(0,0,19,480);

setcolor(8);  //Темно-серый цвет линий-рамок

rectangle(20,20,630,460); //создающих эффект трехмернос-

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

rectangle(22,22,628,458);

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

}

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

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

//модуль MENU.c

#include "bib.h"

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

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

{

 ramka();

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

 settextjustify(CENTER_TEXT, CENTER_TEXT); // Их расположение на экране

 settextstyle(0,0,2);

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

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

 setcolor(15); //Цвет пунктов меню и отв.на вопросы

 settextjustify(LEFT_TEXT, RIGHT_TEXT); //Их пложение на экране

 settextstyle(0,0,2);

 outtextxy(265,170,punkt1); //Вывод на экран пунктов меню

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

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

 outtextxy(265,320,punkt4);

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

 int cursor=0;

do

{

int key=0; //Начальное положение курсора

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

{

setfillstyle(SOLID_FILL,16);  //Цвет курсора,когда он не активен

if (i==cursor)

setfillstyle(SOLID_FILL,3); //Цвет курсора,когда он активен

setcolor(16); //Рамка цвета курсора,когда он не активен

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

}

key = getch();

if (key == 72)

cursor--;

if (key == 80)

cursor++;

if (key==27)

return -1;

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

return -1;

if (key==13)

return cursor;

if (cursor==4)

cursor=0;

if (cursor==-1)

cursor=3;

}

while(1);

}

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

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

//модуль ZASTAVKA.c

#include "bib.h"

//-------------------Вывод на экран названия курс. работы--------------------

int zastavka2()

{

ramka();

setcolor(8);

settextstyle(0,0,2);

outtextxy(65,25,"Информационно - обучающая система");

//---------

setcolor(7);  //Смещение текста на два

settextstyle(0,0,2); //пикселя,создающее эффект

outtextxy(63,25,"Информационно - обучающая система"); //трехмерности

//---------

setcolor(8);

settextstyle(0,0,2);

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

//--------- //Смещение текста на два

setcolor(7); //пикселя,создающее эффект

settextstyle(0,0,2); //трехмерности

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

//---------

setcolor(3);

settextstyle(0,0,2);

outtextxy(120,180,"АТОМНО-МОЛЕКУЛЯРНАЯ ТЕОРИЯ.");

outtextxy(105,200,"ДОКАЗАТЕЛЬСТВА СУЩЕСТВОВАНИЯ");

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

setcolor(8);

settextstyle(0,0,1);

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

//---------

setcolor(7); //Смещение текста на два

settextstyle(0,0,1); //пикселя,создающее эффект

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

//---------

setcolor(8);

settextstyle(0,0,1);

outtextxy(65,440,"Нажмите esc для выхода");

//--------- //Смещение текста на два

setcolor(7); //пикселя,создающее эффект

settextstyle(0,0,1); //трехмерности

outtextxy(63,440,"Нажмите esc для выхода");

//---------

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

do //События нажатия клавиш Enter и Esc

{

 int choice;

 choice=getch();

 if (choice==27) return -1; //Если Esc, то выход из программы

 if (choice==13) return 0; //Если Enter, то переход к меню

}

while(1);

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

}

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

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

//модуль POISK.c

#include"bib.h"

//-----------------------------Поиск слова-----------------------------------

char searchstr[30];

int search(FILE *f)

{

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

 int k;

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

 char *tmp; //Переменная tmp,в которую происходит считывание строк из

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

 setfillstyle(SOLID_FILL,7);  //Цвет окна поиска

 settextjustify(CENTER_TEXT, CENTER_TEXT); //Положение строки в полосе поиска

 bar(220,190,420,250); //Окно поиска

 setcolor(7); //Цвет рамки окна поиска

 rectangle(220,190,420,250); //Рамка окна поиска

 setfillstyle(SOLID_FILL,16); //Цвет полосы поиска

 setcolor(15); //Цвет букв меню поиска

 outtextxy(320,225,"Esc - Выход");

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

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

 do

 {

bar(230,200,410,215); //Полоса поиска

setcolor(8); //Цвет рамки трехмерности на полосе поиска

rectangle(231,201,409,214); //Рамка на полосе поиска эффекта трехмерности

setcolor(15); //Цвет вводимого искомого слова

outtextxy(320,210,searchstr); //Набор искомого слова

k=getch();

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

{

 if (k!=8)

 {

in[0]=k;

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

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

 }  //признак окончания строки,иначе

 else //стираем последний знак слова и

 searchstr[strlen(searchstr)-1]='\0';  //все равно дописываем знак окончания

} //строки ('\0')

 } //Заносим искомое слово в переменную

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

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

 fgets(tmp,74,f); //Считываем строки из файда в

//**************************************************** //переменную tmp

 do

 { //Освобождаем занятую па-

 freemem(tmppos); //мять под эту переменную

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

 tmppos = ftell(f);

 fgets(tmp,74,f);

 if (strstr(tmp,searchstr)!=NULL) //Ищем подстроку searchstr в строке tmp,

return tmppos; //и если подстрока существует,

 }  //то возвращаем его позицию (tmppos)

 while(!feof(f)); //на позицию первой строки,ищем пока не дойдем

//**************************************************** //до конца файла

 bar(230,200,410,215);  //Полоса поиска

 setcolor(8); //Цвет рамки трехмерности на полосе поиска

 rectangle(231,201,409,214); //Рамка на полосе поиска эффекта трехмерности

 setcolor(15); //Цвет надписи "Строка не найдена"

 outtextxy(320,210,"Строка не найдена");  //Если слово не найдено

 getch(); //то положение строк на

 return oldpos; //экране не меняется

}

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

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

//модуль FILE_OP.с

#include"bib.h"

//-----------------------Загрузка информации из файла------------------------

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

{

 FILE *f;

 char str[75];

 int oldpos,cur=0;

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

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

 {

 do

 {

 ramka();

 settextstyle(0,0,0);

 int cury = 0; //Приращение на которое сместится

 oldpos=pos; //следующая строка

 fseek(f,pos,SEEK_SET);

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

 do

 { //Выводит на экран строку в 74

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

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

 setcolor(15); //Цвет текста(Белый)

 settextjustify(LEFT_TEXT,LEFT_TEXT);

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

 cury+=12; //Увеличение счетчика смещения

 }

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

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

 pos=ftell(f);

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

 setcolor(7);

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

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

 setcolor(8);

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

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

 int k;

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

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

 do

 {

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

 { //месте его цвет серый,иначе

 if (i==cur) setcolor(7);  //в других местах-черный

 else setcolor (16);

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

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

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

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

 }

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

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

 { //месте его цвет темносерый,иначе

 if (i==cur) setcolor(8); //в других местах-черный

 else setcolor (16);

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

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

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

 }

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

 settextjustify(CENTER_TEXT,LEFT_TEXT);

 setcolor(8);

 settextstyle(0,0,1);

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

 outtextxy(241,440,"Поиск"); //действий в меню обучения

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

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

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

 setcolor(7);

 outtextxy(79,440,"Выход"); //Кнопки выбора действий

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

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

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

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

 k=getch();

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

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

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

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

 if (k==27) return -1; //Если ESC,то выход из меню "Теория"

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

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

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

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

 {

 fseek(f,oldpos,SEEK_SET);

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

 } //поиска слова

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

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

 {

 if (oldpos>(74*20)) //Скролинг экрана вверх

 {

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

 fgets(str,74,f);

 pos=ftell(f);

 } else pos=0;

 }

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

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

 {

 if (oldpos<(540*20)) //Скролинг экрана вниз

 {

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

 fgets(str,74,f);

 pos=ftell(f);

 } else pos=oldpos; //Если конец текста,то не куда не

 } //двигаемся

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

 }

 while(k!=13);

 }

 while(pos!=-1);

 fclose(f);

 }

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

}

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

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

//модуль TEST.c

#include"bib.h"

//-------------------------------Тестирование--------------------------------

char *otvet; //Правильный ответ

char *user_otvet;

void test()

{

FILE *fansw;

FILE *test_file;

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

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

fread(&len, 1, 1, fansw); //считываем

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

user_otvet = (char *)malloc(len+1); //данные переменные

memset(otvet, 0, len+1);

memset(user_otvet, 0, len+1);

fread(otvet, len, 1, fansw); //считываем

fclose(fansw); //Закрытие файла

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

{

char otv1[50];

char otv2[50];

char otv3[50];

char otv4[50];

char vopr[50];

char tmp[50];

int good=0, bad=0;

i = 0;

while (!feof(test_file)) {

memset(vopr, 0, 50);

memset(otv1, 0, 50);

memset(otv2, 0, 50);

memset(otv3, 0, 50);

memset(otv4, 0, 50);

fgets(vopr,50,test_file); //Выводим вопрос на

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

fgets(otv1,50,test_file); //четыре вопроса и

*(otv1+strlen(otv1)-1)='\0'; //дописываем в конец

fgets(otv2,50,test_file); //каждой строки

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

fgets(otv3,50,test_file); //строки"

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

fgets(otv4,50,test_file);

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

int k;

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

if (k==-1) return;

user_otvet[i] = k+1; //ответ пользователя

i++; //увеличивается

}

ramka(); //Прорисовка рамки

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

{

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

good++;

else bad++;

}

memset(tmp,0,50);

itoa(good,tmp,10);

outtextxy(30,50,"Правильных ответов: "); //Подсчет результата

outtextxy(350,50,tmp); //ответов пользователя

memset(tmp,0,50); //и вывод соответствую-

itoa(bad,tmp,10); //щего сообщения с ре-

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

outtextxy(380,80,tmp);

outtextxy(30,400,"Ваша оценка знаний: ");

settextstyle(1,0,2);

outtextxy(30,440,"Нажмите ESC для возврата в предыдущее меню");

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

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

{ //тестирования

memset(tmp,0,50); //Выделение памяти под переменную tmp

strcpy(tmp," Плохо ");  //Копирует строку "Плохо"

}  //в строку tmp

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

{

memset(tmp,0,50);

strcpy(tmp,"Удовлетворительно"); //Копирует строку "Удовлетворительно"

}  //в строку tmp

if (good > 6)

{

memset(tmp,0,50);

strcpy(tmp, "Хорошо");  //Копирует строку "Хорошо"

} //в строку tmp

if (good == 10)

{

memset(tmp,0,50);

strcpy(tmp, " Отлично!!! "); //Копирует строку "Отлично"

} //в строку tmp

outtextxy(340,400,tmp); //В зависимости от набранных

 } //баллов выводит результат

do  //События нажатия клавиш Enter и Esc

{

int choice;

choice=getch();

if (choice==27) return ;  //Если Esc, то выход из программы

}

while(1);

}

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

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

//модуль HELP.c

#include "bib.h"

//----------------------------------Помощь-----------------------------------

int help(int autor)

{

 FILE *f;

 int cury = 0;

 char str[75];

 char filename[12];

 if (autor)

 strcpy(filename,"autor.txt");

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

 ramka();

 setcolor (15);

 settextstyle(0,0,0);

 if (autor)

 outtextxy(260,440,"г. ДОНЕЦК 2006 год");

 else

 outtextxy(40,440,"Нажмите ESC для возврата в предыдущее меню");

 settextstyle(0,0,0);

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

 {

 while(!feof(f))

 {

 fgets(str,74,f);

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

 setcolor(15);

 settextjustify(LEFT_TEXT,LEFT_TEXT);

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

 cury+=8;

 }

 }

 do //События нажатия клавиш Enter и Esc

 {

 int choice;

 choice=getch();

 if (choice==27) return 0; //Если Esc, то выход из программы

 }

 while(1);

}

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

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

//модуль EXIT.c

#include"bib.h"

//----------------------------------Выход------------------------------------

void exit()

{

 help(1);  //При выходе выводит информацию о пользователе

}

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

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

//модуль OSHIBKA.c

#include"bib.h"

//--------------------------Вывод сообщения ошибки---------------------------

void oshibka(char *fn)

{

 textcolor(LIGHTRED);

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

 exit(-1);

}

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

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

//модуль MODULI.c

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

#include "bib.h"

#include "ramka.h"

#include "menu.h"

#include"zastavka.h"

#include"poisk.h"

#include"file_op.h"

#include"test.h"

#include"help.h"

#include"exit.h"

#include"oshibka.h"

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

//сама программа

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

#include "moduli.h"

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

void main()

{

 FILE *F1;

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

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

 oshibka("1.txt");

 fclose(F1);

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

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

 oshibka("autor.txt");

 fclose(F1);

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

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

 oshibka("help.txt");

 fclose(F1);

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

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

 oshibka("test.txt");

 fclose(F1);

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

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

 oshibka("answer.dat");

 fclose(F1);

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

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

 oshibka("egavga.bgi");

 fclose(F1);

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

 int gdriver = DETECT, gmode, errorcode;

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

 if (zastavka2()==-1)

 {

 exit();

 return;

 }

 do

 {

 int k=0;

 k=menu("ГЛАВНОЕ МЕНЮ","Теория","Тесты","Помощь","Выход");

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

 if (k==-1)

 {

 exit();

 return;

 }

 if (k==1) test();

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

 if (k==3)

 {

 exit();

 return;

 }

 if (k==0)

 do

 {

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

 }

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

 }

 while(1);

}

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


Информация о работе «Разработка информационно-обучающей системы на тему “Атомно-молекулярная теория. Доказательство существования атомов и молекул»
Раздел: Информатика, программирование
Количество знаков с пробелами: 60246
Количество таблиц: 3
Количество изображений: 18

Похожие работы

Скачать
53333
0
4

... , в ходе которых происходит первичное знакомство учащихся с образами и/или моделями изучаемых объектов, их изображениями, символами и т.п. Например, при формировании понятия о «химическом элементе» как определенном виде атома; определенного порядка расположения частиц в веществе и др. При изучении темы «Простые и сложные вещества» учитель не только формулировал определения этих понятий, но и ...

Скачать
413442
0
0

... мере, синергетическим стилем мышления может быть некой платформой для открытого творческого диалога между учеными, мыслителями, деятелями искусства, имеющими различные творческие установки и взгляды на мир. 2. Некоторые парадоксальные следствия синергетики Множество новых парадоксальных идей, образов и представлений возникает в синергетике. Кроме того, с точки зрения синергетики может быть ...

Скачать
137816
8
9

... Просвещение, 1976. 35.       Третьяков Ю.Д., Зайцев О.С. Программное пособие по общей и неорганической химии. М.: Юнити, 2005. 36.       Фаязов Д.Ф. Формирование умений учащихся пользоваться химическим языком // Химия в школе. 1983. № 2. 37.       Фигуровский Н.А. Открытие элементов и происхождение их названий. М.: Наука, 1970. 38.       Цветков Л.А. Преподавание органической химии в средней ...

Скачать
625688
0
0

... , символисты). ЭТА ИНФОРМАЦИЯ МОЖЕТ БЫТЬ ПОЛЕЗНОЙ ДЛЯ ВАС!Вашему вниманию представляется набор фалов, которые сосредотачивают в себе порядка 99% ответов на экзаменационные вопросы в разных редакциях по философии на вступительный экзамен в аспирантуру НТУУ «КПИ» (Киевский Политех.) по программе 2001-2002гг. (может быть эта программа была и раньше, может сохранится и в будущем, но на эти годы ...

0 комментариев


Наверх