ОПИСАНИЕ ВОЗМОЖНОСТЕЙ РАЗРАБОТАННОЙ ПРОГРАММЫ «ГОТОВИМСЯ К ЕГЭ».
методическая разработка по физике (11 класс) по теме
При составления тестирующих программ основной вопрос, с которой сталкивается программист, является проблема хранения данных. Как было отмечено выше программа «Готовимся к ЕГЭ» разработана школьникам для решения тестовых заданий единого государственного экзамена. Как известно, эти задания содержат в себе: изображения, формулы, таблицы, графики. Следовательно, хранения данных тестовых заданий в базе данных MS Accessможно осуществить лишь с использованием OLE – объектов. Но данный способ «не всегда работает», так как при переносе OLE – объектов из базы данных MS Accessвозникает ряд проблем. Поэтому нами была предпринята идея хранения заданий в документе Microsoft Word с использованием «тегов».
Скачать:
Вложение | Размер |
---|---|
opisanie_vozmozhnostey_razrabotannoy.docx | 28.51 КБ |
Предварительный просмотр:
ОПИСАНИЕ ВОЗМОЖНОСТЕЙ РАЗРАБОТАННОЙ
ПРОГРАММЫ «ГОТОВИМСЯ К ЕГЭ».
При составления тестирующих программ основной вопрос, с которой сталкивается программист, является проблема хранения данных. Как было отмечено выше программа «Готовимся к ЕГЭ» разработана школьникам для решения тестовых заданий единого государственного экзамена. Как известно, эти задания содержат в себе: изображения, формулы, таблицы, графики. Следовательно, хранения данных тестовых заданий в базе данных MS Access можно осуществить лишь с использованием OLE – объектов. Но данный способ «не всегда работает», так как при переносе OLE – объектов из базы данных MS Access возникает ряд проблем. Поэтому нами была предпринята идея хранения заданий в документе Microsoft Word с использованием «тегов».
Приведем фрагмент
0:01:00
<\t>
Лазер излучает свет с длиной волны 600 нм. Свет лазера делят на два пучка, которые затем направляют на экран. Определите оптическую разность хода пучков, при которой на экране наблюдается максимум освещенности.
<\a>
<\d>
<\s>
0:01:00
<\t>
Билет на автобус стоит 15 рублей. Какое максимальное число билетов можно будет купить на 100 рублей после повышения цены билета на 20%?
<\b>
Ответом на задани должно быть целое число или конечная десятичная дробь. Ответ следует записать в бланк ответов №1 справа от номера выполняемого задания, начиная с первой клеточки. Каждую цифру, знак минус и запятую пишите в отдельной клеточке в соответствии с приведенными в бланке образцами. Единицы измерений писать не нужно.
<\d>
Расшифруем обозначение «тегов».
Задается время на отведенное задание
- <\t>
Задается описание вопроса задания
- <\b>
Задается вариант ответа
- <\v>
Ответ на поставленное задание
- <\ans>
Описание требований записи ответа
- <\d>
Описание подробного решения
- <\s>
Начало тестирования
При нажатии кнопки начать тест генерируется следующее событие:
procedure TMainForm.StartBtnClick(Sender: TObject);
var
i:integer;
blob : TAdoBlobStream;
FileName:WideString;
ArchiveItem: TZFArchiveItem;
begin
if StartBtn.Caption = 'Начать тест' then
begin
TegNum:=1;
tegnumprev:=1;
zipForge1.FileName:='test.'+IntToStr(SubjectBox.ItemIndex+1)+'.zip';
zipForge1.Password:='8989';
try
// Открытие архива
ZipForge1.OpenArchive(fmOpenRead);
FileName:=IntToStr(SubjectBox.ItemIndex+1)+'.'+YearBox.Text+'.'+NumberBox.Text+'.doc';
if (ZipForge1.FindFirst(FileName,ArchiveItem,faAnyFile-faDirectory)) then
begin
ZipForge1.ExtractFiles(ArchiveItem.FileName);
fn:=ExtractFilePath(Application.ExeName)+ArchiveItem.FileName;
ZipForge1.CloseArchive();
// Открытие файла Word
WappConnect_Open(Wordapp,false,false,CkRunningOrNew,fn);
TestTime:=TimeShow(WordApp);
MainForm.BorderIcons:= [biMinimize, biMaximize];
time:=Now;
Image.Visible:=false;
SubjectBox.Visible:=false;
YearBox.Visible:=false;
NumberBox.Visible:=false;
MainPnl.Visible:=true;
VisibleLabel.Caption:=SubjectBox.Text+' за '+YearBox.Text+' № '+NumberBox.Text;
//Подсчет вопросов части A
KolA:=UmyWApp.KolTeg(WordApp,'a');
for i := 1 to kolA do
begin
{Create the buttons}
RunTimeButtons[i] := TSpeedButton.Create(Self);
with RunTimeButtons[i] do
begin
parent:=ButtonBox;
Width:=35;
Height:=35;
Caption := 'A' + IntToStr(i);
Left := 8+(i-1) * Width;
Top:=50;
GroupIndex:=1;
AllowAllUp := False;
Tag := i;
Font.Size:=12;
{Assign a OnClick handler}
Visible := True;
OnClick := RunTimeButtonclick;
end;
end;
// Подсчет вопросов части B
KolB:=UmyWApp.KolTeg(WordApp,'b');
for i := kolA+1 to kolB+kolA do
begin
{Create the buttons}
RunTimeButtons[i] := TSpeedButton.Create(Self);
with RunTimeButtons[i] do
begin
parent:=ButtonBox;
Width:=35;
Height:=35;
Caption := 'B' + IntToStr(i-kolA);
Left := 8+(i-1-kolA) * Width;
Top:=50+height;
GroupIndex:=1;
AllowAllUp := False;
Tag := i;
Font.Size:=12;
{Assign a OnClick handler}
Visible := True;
OnClick := RunTimeButtonclick;
end;
end;
// Подсчет вопросов части C
KolC:=UmyWApp.KolTeg(WordApp,'c');
for i := kolA+kolB+1 to kolB+kolA+KolC do
begin
{Create the buttons}
RunTimeButtons[i] := TSpeedButton.Create(Self);
with RunTimeButtons[i] do
begin
parent:=ButtonBox;
Width:=35;
Height:=35;
Caption := 'C' + IntToStr(i-kolA-kolB);
Left := 8+(i-1-kolA-kolB) * Width;
Top:=50+2*height;
GroupIndex:=1;
AllowAllUp := False;
Tag := i;
Font.Size:=12;
{Assign a OnClick handler}
Visible := True;
OnClick := RunTimeButtonclick;
end;
end;
// Удаление всех записей из таблицы
with DataForm.AnswerTable do
begin
First;
while not eof do delete;
insert;
end;
DataForm.AnswerTable.FieldByName('Тест').AsString:=IntToStr(SubjectBox.
ItemIndex+1)+'.'+YearBox.Text+'.'+NumberBox.Text+'.doc';
RunTimeButtons[1].Click;
RunTimeButtons[1].Down:=true;
RunTimeButtons[1].Font.Color:=clRed;
StartBtn.Caption:='Завершить тест';
timer.Enabled:=true;
end
else
MessageDlg('Отсутствует тест в базе',mtInformation, [mbYes], 0);
except
MessageDlg('Отсутствует база с тестами',mtError, [mbYes], 0);
end;
end
else
begin
……………
Завершение работы теста
……………
end;
end.
Опишем ключевые моменты выше указанной процедуры:
1) Открываем архив для чтения, извлекаем из него фаил с названием IntToStr(SubjectBox.ItemIndex+1)+'.'+YearBox.Text+'.'+NumberBox.Text+'.doc';
2) Связываем компонент WordАрр c фаилом тестового задания.
3) Подсчитывая количество вопросов части А, В и С, происходит создание соответствующих кнопок. После чего фаил с тестовым задание приобретает вид (производится номерация тегов):
0:01:00
<\t>
B1
Билет на автобус стоит 15 рублей. Какое максимальное число билетов можно будет купить на 100 рублей после повышения цены билета на 20%?
<\b>
Ответом на задани должно быть целое число или конечная десятичная дробь. Ответ следует записать в бланк ответов №1 справа от номера выполняемого задания, начиная с первой клеточки. Каждую цифру, знак минус и запятую пишите в отдельной клеточке в соответствии с приведенными в бланке образцами. Единицы измерений писать не нужно.
<\d>
Решение
После повышения цены билета на 20% его стоимость составит: рублей. Значит, на 100 рублей можно будет купить 5 билетов, так как .
Ответ: 5.
<\s>
0:01:00
<\t>
Лазер излучает свет с длиной волны 600 нм. Свет лазера делят на два пучка, которые затем направляют на экран. Определите оптическую разность хода пучков, при которой на экране наблюдается максимум освещенности.
<\a>
<v.a1.1>200 нм<\v>
<\d>
<\s>
Процесс тестирования.
В данном пункте опишем процедуру извлечения тестовых вопросов из файла тестовых заданий. При выборе вопроса генерируется следующее событие:
procedure TMainForm.RunTimeButtonClick(Sender: TObject);
begin
SolBtn.Caption := 'Решение';
//Отображается вопрос
QuestionShow(MainForm.WordApp, OleContainer,(Sender as TSpeedButton).Caption);
(Sender as TSpeedButton).Font.Color:=clRed;
//Отображается критерии записи ответа
DescriptionMemo.Text:=DescriptionShow(WordApp,(Sender as TSpeedButton).Caption);
if (Sender as TSpeedButton).Caption[1]='A' then
begin
AnswerDBEdit.Visible:=false;
AnswerGroup.Items.Clear;
AnswerGroup.Items:=AnswerShow(MainForm.WordApp, (Sender as TSpeedButton).Caption);
AnswerGroup.DataField:=(Sender as TSpeedButton).Caption;
TegNum:=(Sender as TSpeedButton).Tag;
AnswerGroup.Visible:=true;
end
else
Begin
AnswerGroup.Visible:=false;
AnswerDBEdit.Visible:=true;
AnswerDBEdit.DataField:=(Sender as TSpeedButton).Caption;
AnswerDBEdit.SetFocus;
TegNum:=(Sender as TSpeedButton).Tag;
end;
if DataForm.AnswerTable.FieldByName(
RunTimeButtons[TegNumPrev].Caption).AsString<>''
then
RunTimeButtons[TegNumPrev].Font.Color:=clGreen
else
RunTimeButtons[TegNumPrev].Font.Color:=clBlack;
tegnumprev:=tegnum;
end;
Чтобы было понятно, опишем ключевые моменты выше указанной процедуры на конкретном примере. Например, при нажатии кнопки с надписью А1 программа:
- отыскивает в файле тестового задания соответствующий тег
и <\a>, в компоненте OleContainer. - Отыскивает теги <v.a1.i> и отображает варианты ответов, которые находятся между тегами <v.a1.1> и <\v>, в компоненте AnswerGroup.
- Связываем компонент AnswerGroup с полем А1 таблицы AnswerTable.(Если мы работаем с частью В, то в таком случае связываем компонент AnswerDBEdit полем В* таблицы AnswerTable.
Завершение тестирования
Для завершения теста нажимаем кнопку «завершить тестирование», после чего генерируется следующее событие:
procedure TMainForm.RunTimeButtonClick(Sender: TObject);
…………….
StartBtn.Caption:='Начать тест';
if DataForm.AnswerTable.Modified then DataForm.AnswerTable.Post
else DataForm.AnswerTable.Cancel;
SubjectBox.Visible:=true;
YearBox.Visible:=true;
NumberBox.Visible:=true;
Timer.Enabled:=false;
VisibleLabel.Caption:='';
MainPnl.Visible:=false;
Image.Visible:=true;
// Отображаем форму ответов
ResultForm.ShowModal;
for i := 1 to kolA+KolB+kolC do
RunTimeButtons[i].Destroy;
QuitWordAppNotSave(WordApp);
deleteFile(fn);
MainForm.BorderIcons:= [biSystemMenu, biMinimize, biMaximize];
end;
end;
Опишем работу выше указанной процедуры:
- Сохраняем изменения в таблице AnswerTable;
- Отображаем окно результатов ResultForm. При активации данного окна возникает следующее событие:
procedure TResultForm.FormActivate(Sender: TObject);
Var
i, right:integer;
begin
StringGrid1.Cells[0,0]:='№ вопроса';
StringGrid1.Cells[1,0]:='Задача';
StringGrid1.Cells[2,0]:='Ваш ответ';
StringGrid1.Cells[3,0]:='Правильный ответ';
StringGrid1.Cells[4,0]:='Бал';
StringGrid1.RowCount:=MainForm.kolA+MainForm.kolB+1;
for i:=1 to MainForm.KolA+MainForm.kolB+MainForm.kolC do
begin
StringGrid1.Cells[0,i]:=IntToStr(i);
StringGrid1.Cells[1,i]:=MainForm.RunTimeButtons[i].Caption;
StringGrid1.Cells[2,i]:=DataForm.AnswerTable.FieldByName(
MainForm.RunTimeButtons[i].Caption).AsString;
StringGrid1.Cells[3,i]:=RightShow(MainForm.WordApp,MainForm.RunTimeButtons[i].Caption);
if StringGrid1.Cells[2,i] = StringGrid1.Cells[3,i]
then
begin
StringGrid1.Cells[4,i]:='1';
right:=right+1;
end
else
StringGrid1.Cells[4,i]:='0';
end;
AnswerLabel.Caption:=IntToStr(right)+' правильных ответов из '
+ IntToStr(MainForm.kolA+MainForm.kolB+MainForm.kolB);
TimeLabel.Caption:='Ваше время : '+ MainForm.TimeNowLbl.Caption;
end;
Опишем кратко выше указанную процедуру:
- Заполняется таблица результатов;
- Подсчитывается количество правильных ответов
3. На заключительном этапе происходит удаление временного файла.
Разработанная программа обеспечивает простую работу при создании тестовых заданий, а также заменяет онлайн тестирование для школьников не имеющих доступ к интернету.
По теме: методические разработки, презентации и конспекты
Бинарный урок "Использование возможностей табличного редактора Excel для построения графиков целых функций. Описание свойств целых функций, заданных графическим способом."
Конспект бинарного урока по алгебре и информатике.. Данный урок позволяет проверить знания учащихся по теме"Функция. График функции. Описание свойств функции, заданной графически". По информатике на у...
Описание работы с готовыми чертежами на уроках геометрии в 7-9 классах
Данную статью можно использовать как рекомендации к работе....
Использование заданий по готовым чертежам для детей с ограниченными возможностями здоровья при изучении темы «Признаки равенства треугольника»
Использование упражнений по готовым чертежам способствует формированию у школьников с ОВЗ полноценных образов геометрических объектов, так как ученики видят различное простр...
ВОЗМОЖНОСТИ ИСПОЛЬЗОВАНИЯ ЭЛЕМЕНТОВ ТАНЦА И СОСТАВЛЕНИИЕ ГОТОВЫХ ТАНЦЕВАЛЬНЫХ КОМПОЗИЦИЙ НА УРОКАХ ФИЗИЧЕСКОЙ КУЛЬТУРЫ
НОМИНАЦИЯ :«Творческий потенциал учителя физической культуры при проведении учебной работы»Автореферат: ВОЗМОЖНОСТИ ИСПОЛЬЗОВАНИЯ ЭЛЕМЕНТОВ ТАНЦА И СОСТАВЛЕНИИЕ ГОТОВЫХ ТАНЦЕВАЛЬНЫХ К...
Лабораторная работа «Изучение клеток растений и животных на готовых микропрепаратах под микроскопом и их описание»
Лабораторная работа...
Урок - практикум "Готовимся к итоговому собеседованию". Технологическая карта урока на тему"Описание как функционально-смысловой тип речи. Описание фотографии. Синтаксические конструкции для создания текста-описания"
Материал для подготовки к устному собеседованию. Данный урок построен по ФГОС и содержит алгоритм создания устного высказывания - описания фотографии...
Готовые фразы для описания фотографий
Готовые фразы для описания фотографий...