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

Программный продукт для обучения и ознакомления пользователя с таким разделом химии как "Атомно-молекулярная теория. Доказательства существования атомов и молекул". Реализации удобного, простого в обращении и интуитивно понятного графического интерфейса.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 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);

}

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


Подобные документы

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.