Разработка информационно-обучающей системы на тему “Атомно-молекулярная теория. Доказательство существования атомов и молекул
Программный продукт для обучения и ознакомления пользователя с таким разделом химии как "Атомно-молекулярная теория. Доказательства существования атомов и молекул". Реализации удобного, простого в обращении и интуитивно понятного графического интерфейса.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 29.01.2009 |
Размер файла | 231,2 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
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);
}
//////////////////////////////////////////////////////////////////////////////
Подобные документы
Эффективное хранение необходимой пользователю информацию, осуществление быстрой навигации по накопленному в базе материалу. Необходимость создания простого, понятного, функционального и привлекательного пользовательского интерфейса и удобных инструментов.
курсовая работа [175,6 K], добавлен 29.01.2009Атом - уникальное 16-разрядное значение, связанное со строковой константой. Значение атомов для обмена данными программ. Применение атомов в приложениях ради экономии памяти. Функции управления глобальными таблицами атомов. Понятие целочисленных атомов.
контрольная работа [18,4 K], добавлен 09.10.2010Методика и основные этапы разработки концептуальной модели и базовой архитектуры программно-аппаратного комплекса. Выбор программно-аппаратной платформы и среды. Обеспечение интуитивно-понятного пользовательского интерфейса. Создание системы управления.
курсовая работа [916,7 K], добавлен 06.12.2012Проектирование алгоритмов и программных кодов для различных элементов пользовательских форм информационно-аналитической системы. Исследование структуры базы данных. Связь между таблицами. Разработка графического интерфейса программы и справочной системы.
курсовая работа [2,4 M], добавлен 10.01.2015Понятие электронных курсов. Описание программных и языковых средств разработки. Технология создания компьютерной обучающей системы, пакета вопросов в редакторе Excel. Разработка интерфейса ЭС. Организация диалога пользователя с экспертной системой.
дипломная работа [10,8 M], добавлен 20.06.2014Разработка информационно-справочной системы на тему "Наука и техника. Средства передвижения". Характеристика программного продукта. Анализ существующих аналогов. Выбор языка программирования Turbo Pascal версии 7.0. Метод и алгоритм решения задачи.
курсовая работа [262,5 K], добавлен 29.01.2009Особенности создания ряда игровых приложений, логической игры. Программное обеспечение простейшего калькулятора, генератора функций. Разработка элементов интерфейса простейшего графического редактора, электронной записной книжки, текстового редактора.
методичка [788,7 K], добавлен 24.10.2012Программный комплекс автоматизации телефонных соединений. Разработка графического интерфейса пользователя, технологической инструкции для пользователя программы, контроля и аттестации программ. Расчет затрат при автоматизации телефонных соединений.
дипломная работа [4,7 M], добавлен 15.10.2013Интерфейс системы онлайн-мониторинга стационарного аппарата. Интерфейс автоматизированного рабочего места мониторинга АПБ Московского метрополитена. Архитектура системы ProView, основные сферы применения. Структура графического интерфейса пользователя.
курсовая работа [1,8 M], добавлен 21.03.2016Понятие и эволюция игр, анализ их различных жанров и существующих аналогов. Выбор программных средств для реализации игры, написание сюжета и выбор среды разработки игры. Алгоритмы для придания гибкости обучающей игре. Описание программных модулей.
дипломная работа [2,7 M], добавлен 27.10.2017