Информационная технология мониторинга и анализа стиля учебного поведения в семестре
Формализованное понятие учебного стиля. Методика численного определения стиля. Классификация данных, описывающих успеваемость студентов во времени. Математическая модель анализа учебного процесса. Информационная система, осуществляющая сбор данных.
Рубрика | Педагогика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 08.10.2018 |
Размер файла | 2,1 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Для проведения аппроксимации исходных данных необходимо получить точный вид аппроксимирующей функции. В соответствии с тем, что для выбранной модели данная функция является полиномом, требуется найти её степень. При решение этой задачи необходимо учесть требование - значения выбранной функции на заданном интервале должны быть максимально близки к исходным данным.
Наличии подобного требования сводит задачу к математическому программированию.
Примем за критерий оптимальности стандартное отклонение:
. |
(21) |
Переменной величиной оптимизации является степень аппроксимирующего полинома - .
Полученную задачи математического программирования можно решить эмпирическим. Для этого найдем значения стандартного отклонения для основных, возможных степеней полинома.
Рисунок 9 - Стандартное отклонение для различных степеней
В соответствии с рисунком 9, возможно сделать вывод что, отклонение имеет нелинейную зависимость от параметра степени полинома с локальным минимумом при значении: .
Последующие расчеты с использованием аппроксимации будут проводить при данном значении степени полинома.
4.3.3 Анализ распределения учебных стилей
Рассмотрим кластерную структуру учебных стилей на примере какой-либо реальной учебной группы, рисунок 10.
На данном графике отображен результат работы созданной системы, показывающий общую успеваемость найденных учебных кластеров с перечислением студентов входящих. Ось абсцисс представляет собой недели прошедшие с начала текущего учебного периода. Ось ординат показывает значение комплексного рейтинга успеваемости.
В соответствии с возможными формами отображения введем варианты описания стилей:
1. Возрастающий с усталостью. Для обучаемого характерно положительная успеваемость с последующей её убывание после определенного момента времени;
2. Возрастающий. Для обучаемого характерно положительная успеваемость на протяжении всего периода времени;
3. Убывающий с усталостью. Для обучаемого характерно ухудшающаяся успеваемость с последующей её возрастанием после определенного момента времени;
4. Убывающий. Успеваемость обучающегося ухудшается постоянно.
5. Колеблющийся. В течении временного интервала успеваемость многократно меняется;
С учетом предложенных стилей постараемся выявить закономерности для имеющихся учебных групп факультета ИСТ. Для этого был проведен системный анализ графиков распределения успеваемости для каждой группы. Найдем процентное распределение каждого стиля внутри группы:
Таблица 5 - Распределение стилей для группы ГИП-107
Стиль |
|||||||
Курс |
3 |
3 |
4 |
4 |
5 |
||
Год, полугодие |
2009, осень |
2010, весна |
2010, осень |
2011, весна |
2011, осень |
||
Возр.с усталосью |
23% |
28% |
|
5% |
100% |
||
Возрастающий |
47% |
15% |
|
39% |
|
||
Убыващий |
16% |
|
77% |
|
|
||
Убыв. с усталостью |
14% |
57% |
18% |
56% |
|
||
Колеблющийся |
|
|
5% |
|
|
Таблица 6 - Распределение стилей для группы ГИП-108
Стиль |
||||||||
Курс |
2 |
2 |
3 |
3 |
4 |
4 |
||
Год, полугодие |
2009, осень |
2010, весна |
2010, осень |
2011, весна |
2011, осень |
2012, весна |
||
Возр.с усталосью |
16% |
50% |
35% |
23% |
90% |
58% |
||
Возрастающий |
32% |
|
|
|
5% |
12% |
||
Убыващий |
32% |
|
60% |
|
5% |
30% |
||
Убыв. с усталостью |
20% |
46% |
5% |
77% |
|
|
||
Колеблющийся |
|
4% |
|
|
|
|
Таблица 7 - Распределение стилей для группы ГИП-109
Стиль |
|||||||||
Курс |
1 |
1 |
2 |
2 |
3 |
3 |
4 |
||
Год, полугодие |
2009, осень |
2010, весна |
2010, осень |
2011, весна |
2011, осень |
2012, весна |
2013, весна |
||
Возр.с усталосью |
64% |
|
83% |
76% |
74% |
89% |
26% |
||
Возрастающий |
6% |
8% |
|
|
|
|
43% |
||
Убыващий |
30% |
92% |
17% |
14% |
6% |
|
15% |
||
Убыв. с усталостью |
|
|
|
10% |
20% |
|
|
||
Колеблющийся |
|
|
|
|
|
11% |
16% |
Таблица 8 - Распределение стилей для группы ГИП-110
Стиль |
|||||||
Курс |
1 |
1 |
2 |
2 |
3 |
||
Год, полугодие |
2010, осень |
2011, весна |
2011, осень |
2012, весна |
2013, весна |
||
Возр. с усталосью |
22% |
|
46% |
28% |
33% |
||
Возрастающий |
|
5% |
26% |
4% |
|
||
Убыващий |
59% |
61% |
24% |
39% |
|
||
Убыв. с усталостью |
19% |
34% |
4% |
25% |
29% |
||
Колеблющийся |
|
|
|
11% |
16% |
Поверхностный анализ стилевых распределений, в приведенных выше таблицах, позволяет сделать выводы:
– распределение стилей между группами имеют значительное различие;
– распределение стилей внутри групп, с течением времени, относительно постоянно и колеблется вокруг некоторого среднего значения.
Из данных заключений можно вывести одну из возможных рекомендаций для повышения качества образовательного процесса, как цели работы. Так как учебный стиль стабилен для студента, возможно разбиение студенческих коллективов на подгруппы со сходными стилями учения. Это позволяет использовать индивидуализированные учебные программы и методики чтения материала.
4.4 Выводы по главе
Найдено оптимальная форма аппроксимирующей функции. Выявлены основные учебные стили. Предложена способ формирования рекомендация по составлению учебных групп.
5 ИССЛЕДОВАТЕЛЬСКАЯ И ПЕДАГОГИЧЕСКОЙ ДЕЯТЕЛЬНОСТЬ МАГИСТРАНТА
5.1 Руководство научно-исследовательскими работами
Одним из аспектов научной деятельности на факультете ИСТ является руководство научно-исследовательской работой студентов младших курсов. Мне было поручено курировать работу студента: 3 курса Лентовского Дмитрия факультета ИСТ.
Тема: Анализ динамики учебных результатов и показателей студентов в семестре.
Аннотация: Работа предусматривает сбор данных по ходу ученого процесса, выявление типовых моделей поведения и разработка информационной системы, позволяющей автоматизировать процесс анализа данных.
Задачи:
1. Составить план и график работы на семестр. Проанализировать формат таблиц с исходными данными.
2. Разработать реферат-модель курсовой работы с описание математических алгоритмов.
3. Разработать ИС анализа данных.
Студент выполнил план на 60%. Студентом разработано описание начальное описание математической модели и предложены технические решения импорта исходных данных.
Рейтинг в системе индивидуального руководства - 5, оценка «хорошо».
5.2 Педагогическая деятельность
В процессе обучения в магистратуре требовалось было предъявлено требование прохождения производственной практики в виде преподавательской деятельность в рамах факультета.
Мною был прочитан курс "Перспективные технологии программирования, Технологии разработки игр" для студентов 4 курса факультета ИСТ. Было проведено 18 лекционных занятий и 18 лабораторных работ на основе лекционного материала.
В лекционном материале затрагивались следующие темы:
– основы разработки компьютерных игр. Инструментарий разработчика. Психология компьютерных игр;
– архитектура компьютерных игр. Графические библиотеки;
– работа с устройствами ввода. Основа физических симуляций;
– создание основных графических эффектов. Сознание моделей. Создание анимаций;
– разработка сетевых игр.
В процессе лабораторного практикума студенты научились разрабатывать основные шаблоны приложений компьютерной игры, реализации интерактивных приложений, основам использования графических ускорителей.
Были достигнуты основные цели проведенных лекций: большая часть студентов создали простейшую интерактивную реализацию компьютерной игры с 3х-мерной графикой.
5.3 Выступления и награды работы
Результатами обучения в магистратуре стали статьи в сборниках научных трудов:
1. Студенческая наука. Исследования в области архитектуры, строительства и охраны окружающей среды. Тезисы докладов 30-й межвузовской студенческой научно-технической конференции по итогам научно-исследовательской работы студентов в 2010 году. Самара 2011. 234с., С. 114.
2. 16 международная научная конференция, 50-летию Ю. А. Гагарина посвящается. Системный анализ, управление и навигация. Тезисы докладов. Крым-Евпатория. 3 июля - 10 июля 2011 года. 179 с., С171
3. Информационные системы и технологии. Межвузовском сборнике научных трудов. Самара, 2013 год. (в печати).
После завершения обучения в бакалавриате по основной программе четырех лет подготовки, в 2011 году под руководством доктора технических наук, профессора кафедры «Прикладной математики и вычислительной техники» Пиявского С.А. подготовил и защитил, на оценку «отлично», бакалаврскую выпускную квалификационную работу по теме: «Разработка и исследования оптимизационной модели формирования компетентности студентов».
5.4 Выводы по главе
В процессе магистерской подготовки я занимался исследовательской и педагогической деятельностью, в процессе которой был прочитан курс собственной разработки «Технологии разработки игр». В результате курса студенты группы создали простейщие игровые приложения. Так же на протяжении последних четырех лет осуществлялось руководство малой научной группой подшефных студентов. Это дало возможность разрабатывать малые проекты с напарниками, что позволило получить навыки организации в процессе работы.
ЗАКЛЮЧЕНИЕ
Таким образом в диссертации разработаны:
– формализованное понятие учебного стиля как отражение учебной успеваемости студентов;
– методика числового определения учебного стиля;
– математическая модель определения учебных стилей на основе хронологической истории успеваемости студентов;
– методика и математическая модель поиск учебных групп со сходными стилевыми характеристиками;
– информационная технология выявления и анализа динамики изменения стилей и поиск сходных стилевых групп;
– информационная система, обеспечивающая реализацию данной технологии;
– разработанная информационно-коммуникационная технология внедрена в практическую эксплантацию.
Научные результаты, полученные в ходе выполнения работы:
– формализованное понятие стилевой учебной деятельности;
– математическая модель определения стилей учебной деятельности;
– закономерности изменения стилевой структуры учебного коллектива. Разработанная методика обладает новизной. Технология внедрена на ФИСТ СГАСУ и охватывает 161 студента. В процессе функционирования были получены результаты для 5 студенческих групп. При помощи математической модели произведен расчет учебных стилей, и поиск сходных стилевых групп. Большая хронологическая история успеваемости позволила получить достоверные данные о стилевой структуре большинства студентов факультета.
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
1. Холодная М.А. Когнитивные стили. О природе индивидуального ума. 2-е изд. -- СПб.: Питер, 2004. -- 384 с.
2. Берулава Г. А. Стиль индивидуальности: теория и практика - М.: Педагогическое общество России, 2001 - 106 с.
3. Моросанова В.И. Стилевые особенности саморегулирования личности // Вопр. психол. 1991. № 1. C. 121127.
4. Альфред Адлер. Наука жить. // Университетская книга, 1997. -- 388 с
5. Г. Олпорта. Концепция индивидуальных стилей // Культурно-историческая психология. 2001. №1. - 54 с.
6. Е. Ю. Савин, К. А. Коврова // электронный ресурс: http://www.psyhologtoday.ru/study-40-1.html
7. Меркулов И.П. Научный прогресс: когнитивный и социокультурный аспекты. - М., 1993.- 197 с.
8. Дерябкин В.П, Козлов В.В. « Проектирование информационных систем по методологии UML:методические указания к учебно-лабораторному практикуму»; Самарск. гос. арх.-строит. ун-т.- Самара, 2008. - 42 с.
9. Коннопли Т, Бегг К. , «Базы данных. Проектирование, реализация и сопровождение. Теория и практика»- 3-е изд -М.: Вильямс, 2003.- 1436 с.
10. Питер Пин-Шен Чен. Модель «сущность-связь» -- шаг к единому представлению о данных. Пер. М.Р. Когаловского. 1976. -- Т. 1. -- С. 9-36.
ПРИЛОЖЕНИЕ А
Графическая часть
ПРИЛОЖЕНИЕ Б
Руководство пользователя
Б.1 Введение
Для запуска серверной части необходимо иметь установленный вебсервер с поддержкой технологии CGI и запущенный MySQL server. Также необходимо иметь сетевой доступ к клиентским машинам.
Для использования приложения необходимо открыть браузер, в строке адреса прописать адрес машины с работающим сервером и нажать Enter. После запуска появляется страница авторизации, часть которой представленно на рисунке Б.1.
Рисунок Б.1 - Страница авторизации
Б.2 Необходимые условия применения
Минимальные требования к техническому и программному обеспечению:
– IBM PC - совместимый компьютер с тактовой частотой процессора не ниже 500 МГц;
– манипулятор типа «мышь».
ЭВМ сервера:
– веб-сервер с поддержкой CGI(версии стандарта 1.1 или выше) ;
– СУБД MySQL версии 5.0 или выше;
– OS Windows.
ЭВМ клиента:
– веб-браузер;
– OS Windows, Unix.
Б.3 Описание основных функций системы
Б.3.1 Авторизация
Для работы с приложением необходима авторизация. Форма авторизации является первой формой которое открывается после запуска приложения. Для прохождения данной операции необходимо заполнить поля "Имя пользователя", "Пароль" и нажать кнопку "Войти"
Рисунок Б.2 - Форма авторизации
Если пользователь не зарегистрирован или пароль неверен система выдаст предупреждение (Рисунок Б.3)
Рисунок Б.3 - Ошибка входа
Б.3.2 Просмотр отчетов
После удачной авторизации система откроет форму просмотра отчетов(рисунок Б.4).
Кнопка "Выход" на данной форме необходима для выхода из сеанса текущего пользователя. После выхода система перейдет в свое первоначальное состояние и отобразит окно авторизации.
Рисунок Б.4 - Часть формы просмотра отчетов.
Чтобы просмотреть отчет об успеваемости, необходимо выбрать желаемый период обучения, которому соответствует год и полугодие(рисунок Б.5). После этого произойдет заполнение списка групп актуальными данными для выбранного семестра.
Рисунок Б.5 - Выбор периода обучения
Б.3.2.1 Просмотр отчетов для группы
Если необходим отчет для группы пользователь должен выбрать группа из приведенного списка(рисунок Б.6).
Рисунок Б.5 - Выбор периода обучения
Для формирования отчета необходимо нажать кнопку "Отчет для группы".
После этого система выдаст на экран сформированный график успеваемости(рисунок Б.6).
Рисунок Б.6 - Выбор периода обучения
На данном графике отображены успеваемости студентов в виде комплексного рейтинга полученная с базы данных факультета. По оси абсцисс приведены номер недель с момента начала семестра. По оси ординат отображается комплексный рейтинг студентов.
Для детализации, каждый график может быть выбран в любой точки и будет отображено его точное значение (рисунок Б.7).
Рисунок Б.7 - Выбор периода обучения
Б.3.2.1 Просмотр отчетов для студента
Для просмотра отчета для студента, необходимо выбрать из выпадающего списка интересующего студента(рисунок Б.8).
После чего нажать кнопку "Отчет для студента".
Система выдаст график успеваемости студента по неделям обучения, начиная с начала семестра. На полученном графике успеваемости можно просмотреть реальные данные комплексного рейтинга студента, за имеющиеся периоды обучения. Так же как и остальные графические отчеты, для детализации можно просмотреть конкретное значения, при указании желаемой точки на графике.
Рисунок Б.8 - Выбор студента для формирования отчета
ПРИЛОЖЕНИЕ В
Листинг основного программного модуля
Листинг программного модуля "project.cpp"
#include <vcl.h>
#include <windows.h>
#include <Winsock2.h>
#include <stdio.h>
#include <io.h>
#include <iostreams>
#include <ComObj.hpp>
#include <sqlext.h>
#include <sql.h>
#include <odbcinst.h>
#include <regex>
#include <direct.h>
#pragma hdrstop
#include <tchar.h>
//--------------------------------------------------------------------
SQLHENV henv =SQL_NULL_HENV;
SQLHDBC hdbc = SQL_NULL_HDBC;
SQLHSTMT hstmt=SQL_NULL_HSTMT, hstmt2=SQL_NULL_HSTMT;
struct UserType
{
int id;
SQLCHAR* name;
SQLCHAR* type;
SQLCHAR* pass;
SQLCHAR* ip;
};
struct RatingType
{
int week;
float value;
int userId;
SQLCHAR* userName;
};
struct StudentType
{
int id;
SQLCHAR* name;
};
struct GroupType
{
int id;
SQLCHAR* name;
};
struct TrackType
{
int id;
int year;
int half_year;
};
UserType DaoPutUser(const char * name,const char * pass,const char * type,long studId);
UserType DaoGetUser(const char * name,const char * pass);
int DaoGetGroupList(GroupType ** groupArr);
long DaoGetGroupIdByName(const char * name);
long DaoPutGroup(const char * name);
long DaoGetStudentId(const char * name,long groupId);
long DaoPutStudent(const char * name,long groupId);
int DaoCloseBase();
int DaoOpenBase();
long GetCount(char* query);
long GetCount(char* query)
{
long Count=0,realsize=0;
SQLCloseCursor(hstmt2);
int err=SQLExecDirect(hstmt2,(SQLCHAR*)query,SQL_NTS);
if (err==SQL_ERROR) return -1;
if (SQLFetch(hstmt2)!=SQL_NO_DATA) SQLGetData(hstmt2,1,SQL_INTEGER,&Count, 0,&realsize);
return Count;
}
int DaoGetTrackList(TrackType ** trackArr)
{
char query[2000];
long realsize=0;
long count;
long i;
count=GetCount("SELECT Count(*) FROM Track");
TrackType* g=new TrackType[count];
*trackArr=g;
SQLCloseCursor(hstmt);
sprintf(query,"SELECT id,year,half_year FROM Track");
if(SQLExecDirect(hstmt,(SQLCHAR*)query,SQL_NTS)==SQL_ERROR)
return -1;
i=0;
while(SQLFetch(hstmt)==SQL_SUCCESS)
{
SQLGetData(hstmt,1,SQL_INTEGER,&g[i].id, 0,&realsize);
SQLGetData(hstmt,2,SQL_INTEGER,&g[i].year, 0,&realsize);
SQLGetData(hstmt,3,SQL_INTEGER,&g[i].half_year, 0,&realsize);
i++;
}
return count;
}
/*int DaoGetRatingGroupList(RatingType ** trackArr,long groupId,long trackId)
{
char query[2000];
long realsize=0;
long count;
long i;
sprintf(query,"SELECT Count(*) FROM Rating WHERE id_student=%i AND id_track=%i",studId,trackId);
count=GetCount(query);
RatingType* g=new RatingType[count];
*trackArr=g;
SQLCloseCursor(hstmt);
sprintf(query,"SELECT week,value FROM Rating WHERE id_student=%i AND id_track=%i",studId,trackId);
if(SQLExecDirect(hstmt,(SQLCHAR*)query,SQL_NTS)==SQL_ERROR)
return -1;
i=0;
while(SQLFetch(hstmt)==SQL_SUCCESS)
{
SQLGetData(hstmt,1,SQL_INTEGER,&g[i].week, 0,&realsize);
SQLGetData(hstmt,2,SQL_REAL,&g[i].value, 0,&realsize);
i++;
}
return count;
} */
int DaoGetStudentList(StudentType ** studArr,long groupId)
{
char query[2000];
long realsize=0;
long count;
long i;
sprintf(query,"SELECT Count(*) FROM Students WHERE id_group=%i",groupId);
count=GetCount(query);
StudentType* g=new StudentType[count];
*studArr=g;
SQLCloseCursor(hstmt);
sprintf(query,"SELECT id,fio FROM Students WHERE id_group=%i",groupId);
if(SQLExecDirect(hstmt,(SQLCHAR*)query,SQL_NTS)==SQL_ERROR)
return -1;
i=0;
while(SQLFetch(hstmt)==SQL_SUCCESS)
{
g[i].name=new char[2000];
SQLGetData(hstmt,1,SQL_INTEGER,&g[i].id, 0,&realsize);
SQLGetData(hstmt,2,SQL_CHAR,g[i].name, 2000,&realsize);
i++;
}
return count;
}
UserType DaoGetUser(const char * name,const char * pass)
{
char query[2000];
long realsize=0;
UserType u;
u.id=-1;
SQLCloseCursor(hstmt);
sprintf(query,"SELECT id,userName,password,[type],sessionIp FROM users WHERE userName='%s' AND password='%s'",name,pass);
if(SQLExecDirect(hstmt,(SQLCHAR*)query,SQL_NTS)==SQL_ERROR)
return u;
if(SQLFetch(hstmt)==SQL_SUCCESS)
{
u.type=new char[2000];
u.ip=new char[2000];
u.name=new char[2000];
u.pass=new char[2000];
SQLGetData(hstmt,1,SQL_INTEGER,&u.id, 0,&realsize);
SQLGetData(hstmt,2,SQL_CHAR,u.name, 2000,&realsize);
SQLGetData(hstmt,3,SQL_CHAR,u.pass, 2000,&realsize);
SQLGetData(hstmt,4,SQL_CHAR,u.type, 2000,&realsize);
SQLGetData(hstmt,5,SQL_CHAR,u.ip, 2000,&realsize);
}
return u;
}
long DaoPutGroup(const char * name)
{
char query[2000];
long realsize=0;
long id;
id=DaoGetGroupIdByName(name);
if(id>0) return id;
SQLCloseCursor(hstmt);
sprintf(query,"INSERT INTO [Groups](name) VALUES ('%s')",name);
if(SQLExecDirect(hstmt,(SQLCHAR*)query,SQL_NTS)==SQL_ERROR)
return -1;
return DaoGetGroupIdByName(name);
}
bool DaoGetRating(long studId,long track_id,int week,double * value)
{
char query[2000];
long realsize=0;
SQLCloseCursor(hstmt);
sprintf(query,"SELECT [value] FROM Rating WHERE id_student=%i AND id_track=%i AND week=%i",studId,track_id,week);
if(SQLExecDirect(hstmt,(SQLCHAR*)query,SQL_NTS)==SQL_ERROR) return false;
if(SQLFetch(hstmt)==SQL_SUCCESS)
{
SQLGetData(hstmt,1,SQL_FLOAT,value, 0,&realsize);
return true;
}
return false;
}
bool DaoPutRating(long studId,long track_id,int week, double value)
{
char query[2000];
long realsize=0;
bool result;
result=DaoGetRating(studId,track_id,week,&value);
if(!result)
{
sprintf(query,"INSERT INTO Rating(id_student,id_track,week,[value]) VALUES (%i,%i,%i,%f)",studId,track_id,week,value);
}
else
{
sprintf(query,"UPDATE Rating SET [value]=%f WHERE id_student=%i AND id_track=%i AND week=%i",studId,track_id,week);
}
SQLCloseCursor(hstmt);
if(SQLExecDirect(hstmt,(SQLCHAR*)query,SQL_NTS)==SQL_ERROR)
return false;
return true;
}
long DaoGetTrack(int year,int half_year)
{
char query[2000];
long realsize=0;
long id=-1;
SQLCloseCursor(hstmt);
sprintf(query,"SELECT id FROM Track WHERE year=%i AND half_year=%i",year,half_year);
if(SQLExecDirect(hstmt,(SQLCHAR*)query,SQL_NTS)==SQL_ERROR)
return -1;
if(SQLFetch(hstmt)==SQL_SUCCESS)
{
SQLGetData(hstmt,1,SQL_INTEGER,&id, 0,&realsize);
}
return id;
}
long DaoPutTrack(int year,int half_year)
{
char query[2000];
long realsize=0;
long id=-1;
id=DaoGetTrack(year,half_year);
if(id>0)
return id;
SQLCloseCursor(hstmt);
sprintf(query,"INSERT INTO Track(year,half_year) VALUES (%i,%i)",year,half_year);
if(SQLExecDirect(hstmt,(SQLCHAR*)query,SQL_NTS)==SQL_ERROR)
return -1;
return DaoGetTrack(year,half_year);
}
int DaoCloseBase()
{
SQLCloseCursor( hstmt );
SQLCloseCursor( hstmt2 );
SQLFreeHandle(SQL_HANDLE_STMT,hstmt);
SQLFreeHandle(SQL_HANDLE_STMT,hstmt2);
SQLDisconnect(hdbc);
SQLFreeHandle(SQL_HANDLE_DBC,hdbc);
SQLFreeHandle(SQL_HANDLE_ENV,henv);
return 0;
}
int DaoOpenBase()
{
if (SQLAllocHandle(SQL_HANDLE_ENV, NULL, &henv) == SQL_ERROR) return -1;
SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION,(void*) SQL_OV_ODBC3, SQL_IS_INTEGER);
if (SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc) == SQL_ERROR) return -1;
if (SQLConnect(hdbc, (SQLCHAR*)"db1", SQL_NTS,(SQLCHAR*)"",SQL_NTS,(SQLCHAR*)"",SQL_NTS)==SQL_ERROR)
{
SQLCHAR sqlstate[32];
SQLCHAR message[256];
SQLINTEGER nativeerror=0;
SQLSMALLINT textlen=0;
SQLRETURN r=SQLGetDiagRec(SQL_HANDLE_DBC,hdbc,1,sqlstate, &nativeerror,message,256,&textlen);
printf("%s=%s\n", (SQLCHAR*)sqlstate, (SQLCHAR*)message);
return -1;
}
if (SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt) == SQL_ERROR) return -1;
if (SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt2) == SQL_ERROR) return -1;
return 0;
}
#include "NetUtils.cpp"
#include "Parser.cpp"
char *userIp;
UserType curUser;
const char rusChar[]={"АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдеёжзийклмнопрстуфхцчшщъыьэюя "};
const char uriChar[]={"C0C1C2C3C4C5A8C6C7C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5B8E6E7E8E9EAEBECEDEEEFF0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF20"};
char** ParList=new char*[16536];
unsigned int ParCount=0;
int ShowData()
{
}
int SyncData()
{
printf("1! SyncData<br/>");
int fileArrCount=1;
fileExcelStruct fileArr[1];
getFileList(fileArr);
for(int i=0;i<fileArrCount;i++)
{
char query[2048];
memset((char *)&query, 0, sizeof(query));
sprintf(query,"GET %s HTTP/1.1\r\nHost:sciyouth.ru\r\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\n\r\n",fileArr[i].fileUrl);
char filePath[2000];
LoadFile("85.113.47.54",query,filePath);
if(filePath==NULL)
{
continue;
}
ImportFile(fileArr[i],filePath);
}
printf("Sync complete<br/>");
return 1;
}
int getRatingList()
{
long studId=atoi(ParList[1]);
int trackId=atoi(ParList[2]);
if(studId<=0 || trackId<=0)
{
printf("-1!getRatingList");
return -1;
}
RatingType * ratingArr=NULL;
int count=DaoGetRatingList(&ratingArr,studId,trackId);
printf("1!");
for(int i=0;i<count-1;i++)
{
printf("%i;%f\r",ratingArr[i].week,ratingArr[i].value);
}
printf("%i;%f\r",ratingArr[count-1].week,ratingArr[count-1].value);
return 1;
}
int getRatingGroupList()
{
/* long groupId=atoi(ParList[1]);
int trackId=atoi(ParList[2]);
if(groupId<=0 || trackId<=0)
{
printf("-1!getRatingGroupList");
return -1;
}
RatingType * ratingArr=NULL;
int count=DaoGetRatingGroupList(&ratingArr,groupId,week);
printf("1!");
for(int i=0;i<count-1;i++)
{
printf("%i;%f\r",ratingArr[i].week,ratingArr[i].value);
}
printf("%i;%f\r",ratingArr[count-1].week,ratingArr[count-1].value);
return 1; */
}
int getStudentList()
{
long groupId=atoi(ParList[1]);
if(groupId<=0)
{
printf("-1!getStudList");
return -1;
}
StudentType * studArr=NULL;
int count=DaoGetStudentList(&studArr,groupId);
printf("1!");
for(int i=0;i<count-1;i++)
{
printf("%i;%s\r",studArr[i].id,studArr[i].name);
}
printf("%i;%s",studArr[count-1].id,studArr[count-1].name);
return 1;
}
int getGroupList()
{
GroupType * groupArr=NULL;
int count=DaoGetGroupList(&groupArr);
printf("1!");
for(int i=0;i<count-1;i++)
{
printf("%i;%s\r",groupArr[i].id,groupArr[i].name);
}
printf("%i;%s",groupArr[count-1].id,groupArr[count-1].name);
return 1;
}
int getTrackList()
{
TrackType * trackArr=NULL;
int count=DaoGetTrackList(&trackArr);
printf("1!");
for(int i=0;i<count-1;i++)
{
printf("%i;%i;%i\r",trackArr[i].id,trackArr[i].year,trackArr[i].half_year);
}
printf("%i;%i;%i\r",trackArr[count-1].id,trackArr[count-1].year,trackArr[count-1].half_year);
return 1;
}
int CheckFunc()
{
char * lastChar=ParList[0]+strlen(ParList[0])-1;
if(*lastChar=='=') *lastChar=0;
if (strcmp(ParList[0],"ShowData")==0) return ShowData();
else if (strcmp(ParList[0],"Main")==0) return Main();
else if (strcmp(ParList[0],"SyncData")==0) return SyncData();
else if (strcmp(ParList[0],"Login")==0) return Login();
else if (strcmp(ParList[0],"Reg")==0) return Reg();
else if (strcmp(ParList[0],"Exit")==0) return Exit();
else if (strcmp(ParList[0],"checkSession")==0) return checkSession();
else if (strcmp(ParList[0],"getGroupList")==0) return getGroupList();
else if (strcmp(ParList[0],"getTrackList")==0) return getTrackList();
else if (strcmp(ParList[0],"getStudentList")==0) return getStudentList();
else if (strcmp(ParList[0],"getRatingList")==0) return getRatingList();
else if (strcmp(ParList[0],"getRatingGroupList")==0) return getRatingGroupList();
else printf("-1! Неизвестная функция");
return 0;
}
#pragma argsused
int _tmain(int argc, _TCHAR* argv[])
{
char *ReqM=getenv("REQUEST_METHOD");
char * buf;
unsigned int len;
#ifndef Loc
if(ReqM==NULL) return 0;
if(strcmp(ReqM,"POST")==0)
{
len=atoi(getenv("CONTENT_LENGTH"));
if (len<=0) return 0;
buf=new char[len+1];
if (fread(buf,len,1,stdin)!=1) return 0;
buf[len+1]=0;
} else
if(strcmp(ReqM,"GET")==0)
{
char *temp=getenv("QUERY_STRING");
len=strlen(temp);
buf=new char[len+1];
for (int i=0;i<len;i++) *(buf+i)=*(temp+i);
} /**/
#else
buf=TEMPBUF;
len=strlen(buf); /**/
#endif
unsigned int i=0,st=0,j=0,ii=0; //convert to rus char
char *buf2=new char[len];
for (i=0;i<len;i++)
{
if (*(buf+i)=='%')
for(ii=0;ii<strlen(uriChar);ii=ii+2) if ((*(buf+i+1)==*(uriChar+ii))&&(*(buf+i+2)==*(uriChar+ii+1)))
{
i=i+2;
*(buf+i)=rusChar[ii/2];
break;
}
*(buf2+j)=*(buf+i);
j++;
}
ParCount=0; //parse
i=0;
while(i<len)
{
st=i;
while ((buf2[i]!='&')&&(i<len)) i++;
buf2[i]=0;
if (st==i) continue;
ParList[ParCount]=new char[i-st+3+2]; //"+3" compiler's error; +2 for ''
strcpy(ParList[ParCount],buf2+st);
i++;
ParCount++;
}
#ifdef Loc
userIp="127.0.0.1";
#else
userIp=getenv("REMOTE_ADDR");
#endif
setmode(fileno(stdout),0x8000); //#define O_BINARY 0x8000
printf("Content-Type: text/html; charset=windows-1251\n\n");
int err=DaoOpenBase();
CheckFunc();
DaoCloseBase();
delete[]ParList;
return 0;
}
Размещено на Allbest.ru
Подобные документы
Моделирование учебного процесса на примере темы: "Издержки производства и себестоимость продукции сельхозпредприятий". Методика проведения занитий. Дидактическая эффективность использования ЭВМ в моделировании учебного процесса.
дипломная работа [52,1 K], добавлен 03.03.2003Структура методического анализа. Отбор учебного материала, его методическая редукция, цели, эффективные методы обучения. Анализ содержания учебного материала по теме "Языки программирования баз данных и СУБД". Разработка урока теоретического обучения.
курсовая работа [204,4 K], добавлен 19.06.2011Сложности учебного поведения у учащихся первых классов с расстройствами аутистического спектра. Факторы, затрудняющие его формирование. Возможности использования альтернативной системы коммуникации PECS процессе формирования учебного поведения аутистов.
дипломная работа [406,8 K], добавлен 06.10.2017Анализ и осмысление проблем контроля успеваемости учащихся для повышения качества и эффективности учебного процесса. Реализация компетентностного подхода в определении уровня усвоения учебного материала. Типичные ошибки педагогов в практике оценки знаний.
презентация [6,1 M], добавлен 18.10.2015Внешняя сторона организации учебного процесса. Групповые, индивидуальные, классные, внеклассные, коллективные, аудиторные, фронтальные, внеаудиторные, парные, школьные, внешкольные формы обучения. Основные этапы учебного процесса, нестандартные уроки.
презентация [138,4 K], добавлен 25.08.2013Роль учебника в процессе обучения. Необходимость модернизации учебного пособия. Психодиагностическое тестирование как инструмент активизации познавательный деятельности студентов. Анализ структуры учебного пособия "Безопасность жизнедеятельности".
дипломная работа [94,2 K], добавлен 04.05.2017Информационная технология как упорядоченная совокупность методов переработки, изменения состояния, свойств и качественной формы проявления, тиражирования, распространения и использования информации. Их основные свойства.
статья [33,5 K], добавлен 05.06.2007Подходы к раскрытию понятий "информационная модель", "информационное моделирование". Моделирование знаний в курсе информатики. Требования к знаниям и умениям учащихся по линии формализации и моделирования. Планирование урока информатики в средней школе.
дипломная работа [200,4 K], добавлен 23.05.2008Виды и функции художественной самодеятельности. Состав самодеятельных объединений и его руководство. Особенности учебного процесса в становлении и развитии клубных формирований. Методика развития творческих способностей участников самодеятельности.
курсовая работа [47,9 K], добавлен 18.02.2012Задачи управления учебным процессом, роль учебных планов в системе образования, их виды, структурные и параметрические составляющие. Разработка автоматизированного учебного плана с помощью Microsoft Office Excel с учетом требований Болонского процесса.
дипломная работа [2,2 M], добавлен 11.08.2011