Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пояснительная записка Шолмова 2012.06.13.doc
Скачиваний:
2
Добавлен:
01.05.2025
Размер:
1 Мб
Скачать
☆

3.2 Обучение

Основной задачей данного дипломного проекта было внедрение в режим «Обучение» полнофункционального создания и прохождения уроков. Уроки – это последовательность силуэтов, объединенная по критериям сложности. Собрав первый силуэт или истратив 5 попыток сборки – программа автоматически переводит ученика на следующее задание, запоминая результат предыдущей фигуры. Когда ученик завершает работу над последним силуэтом – на экран выводится результат. Этот результат представляется в виде оценки, высчитываемой из количества собранных фигур, а так же времени потраченному на выполнение урока. Уроки – эффективнее одиночных силуэтов, так как ребенок не теряет концентрацию на взаимодействие с интерфейсом. Плюс уроков заключается так же и в масштабности – из-за количества фигур необходимые навыки развиваются быстрее.

Раздел «Обучение» содержал в себе только список силуэтов, из которых ученику предлагалось выбирать. Было принято решение построить на этом принципе и уроки. Со стороны ученика - можно выбрать один урок, и начать его прохождение. Все силуэты задаются при создании урока Администратором. Очень важными моментами реализованного ПС являются:

• Неограниченность в количестве силуэтов в уроке (в рамках стандартной базы) – позволяет создавать уроки различной трудности, регулируя число силуэтов в уроке. Так как общая оценка напрямую зависит от количества силуэтов, то цена одной фигуры с увеличением их общего числа – снижается. Таким образом, чтобы получить хорошую оценку, нужно собрать большое количество фигур правильно, а в этом и заключается основная сложность.

• Отдельные настройки для каждой фигуры урока – для каждой фигуры можно задавать количество подсказок, тип подсказки и время показа подсказки, что так же даёт мобильность при создании уроков различной сложности.

Для работы с уроками была скопирована и существенно доработана форма uStudy. В получившейся форме uLessonsStudy были изменены почти все начальные функции, увеличен объем обмена данных с БД, добавлено автоматическое переключение на следующий силуэт, а так же был усовершенствован вывод результатов.

Формы отвечающие за создание уроков были написаны в соответствии с требованиями, ниже приведены фрагменты их программного кода.

Проверка на вход из под Администраторов, если пользователь – Администратор, то становятся доступными кнопки создания уроков, а если простой ученик – то доступно, лишь «пройти урок».

if User.UserName='admin' then

begin

button1.Visible:=true;

button4.Visible:=true;

end

else button4.Visible:=true;

Добавление фигур с настройками в урок(создание списка доступных силуэтов):

procedure TfrmaddFigLessons.CreateTree;

var

i: Integer;

begin

with DM.qSelectSiluets do

begin

Close;

SQL.Clear;

SQL.Add('SELECT siId, siName FROM Siluets');

SQL.Add('WHERE siTag = ' + QuotedStr('Study'));

Open;

if RecordCount < 1 then

begin

MessageDlg('В базе даннных не найдено#13ни одного силуэта',

mtError, [mbOk], 0);

Self.Close;

end;

for i := 1 to RecordCount do

begin

TV.Items.Add(nil, FieldByName('siName').AsString);

Next;

end;

Close;

SQL.Clear;

SQL.Add('SELECT srSiluet, srTime, siName, siId');

SQL.Add('FROM SilResults, Siluets');

SQL.Add('WHERE (srSiluet = siId) and (srUser = ' +

IntToStr(User.UserId) + ')');

Open;

if RecordCount < 1 then

begin

Close;

Exit;

end;

First;

for i := 1 to RecordCount do

begin

FCompletedSiluets.Add(FieldByName('siName').AsString);

Next;

end;

Close;

end;

end;

Добавление фигур с настройками в урок (сохранение в БД):

with DM.tbLesFigures do

begin

Open;

Insert;

FieldByName('leName').AsString:=LeName;

FieldByName('leFigName').AsString:=TV.Selected.Text;

FieldByName('leTypeHelp').AsString:=HelpofType;

FieldByName('leHelpGrid').AsInteger:=LeGrid;

FieldByName('leTimeHelp').AsInteger:=LeTime;

Post;

Close;

end;

//End of

frmAddlessons.kolFig:= frmAddlessons.kolFig+1;

frmAddlessons.Edit1.Text:=frmAddlessons.Edit1.Text+Tv.Selected.Text+',';

if not Assigned(frmaddLessons) then

frmaddLessons := TfrmaddLessons.Create(Application);

frmaddLessons.Show;

frmAddFigLessons.Hide;

Сохранение Урока

procedure TfrmAddLessons.Button2Click(Sender: TObject);

begin

with DM.tbLessons do

begin

Open;

Insert;

FieldByName('lesName').AsString:=Edit2.Text;

FieldByName('leKolFig').AsInteger:=KolFig;

Post;

Close;

end;

if MessageDlg('Урок Сохранён!', mtInformation,

[mbYes], 0) = mrYes then ;

BitBtn1Click(self) ;

End;

Проверка собранности силуэта, переход к следующему, переход к результатам:

procedure TfrmLessonsStudy.btnCheckClick(Sender: TObject);

var

i: Integer;

ShiftFigures: array of TFigure;

ShiftX, ShiftY: Double;

begin

ShiftSiluet(Figures, ShiftX, ShiftY);

SetLength(ShiftFigures, Length(Figures));

for i := 0 to High(Figures) do

ShiftFigures[i] := TFigure.Create(Figures[i].X - ShiftX,

Figures[i].Y - ShiftY, Figures[i].R, Figures[i].hlpR,

Figures[i].Grad, Figures[i].Idnt);

if CompOneSiluet(Siluet.SiluetId, ShiftFigures) then

begin

// Siluet.Save;

if MessageDlg('Поздравляем, Вы справились с этим заданием!'#13 +

'Для продолжения нажми те Да', mtInformation,

[mbYes, mbNo], 0) = mrYes then

begin

//FAfterClose := cResult;

with DM.qLesFigures do

begin

SQL.Clear;

SQL.Add('SELECT leFigName, leTypeHelp, leHelpGrid, leTimeHelp');

SQL.Add('FROM LesFigures');

Sql.Add('WHERE (leName = "'+lesson+'")' );

Open;

first;

for i := 0 to nomles do

next;

nextlesson:=FieldByName('leFigName').AsString;

end;

if (nomles+1)=kolfig then

begin fAfterClose := cLesResult;

uLesResult.Result:=Res;

uLesResult.kolfig:=kolfig;

uLesResult.lesson:=lesson;

uLesResult.timer:=Time-startTime;

Close; end else

begin

finish:=finish+1;

Nomles:=nomles+1;

CreateSiluetByName(nextlesson);

SetLength(Figures, 7);

InitFigures(Figures, '4');

FCurFigure := High(Figures) + 1;

btnExampleClick(self);

btnPromptingClick(self);

label1.Caption:=lesson+' '+'Задание №'+IntToStr(Nomles+1)+' '+Siluet.SiluetName;

end;

end;

end

else MessageDlg('Вы не правильно собрали этот силуэт,'#13 +

'попробуйте ещё раз', mtError, [mbOk], 0)

end;