- •Разработка программного средства по развитию наглядно-образного мышления на основе игры «обобщённый танграм» Дипломный проект
- •Оглавление
- •1.2Постановка задачи 7
- •7.1. Обучение 34
- •Введение
- •1.1.3 Танграм
- •1.Постановка задачи
- •1.1Описание предметной области.
- •1.1.1Наглядно-образное мышление.
- •1.1.2 Определение креативности.
- •1.2Постановка задачи
- •1.2.1Функциональные требования
- •1.2.2 Общие требования
- •1.2.3 Требования качества и надежности
- •1.3 Аналоги
- •1.4 Характеристика выбранных программных сред и средств
- •2.Описание Базы данных
- •3.1.1 Исследование.
- •3.1.2 Формирование требований к диагностической части.
- •3.1.3 Программное выполнение поставленных подзадач.
- •3.2 Обучение
- •4. Схема функционирования пс или птс
- •5. Данные пс
- •Администрирование
- •Раздел «Администратор»
- •Создание урока
- •Работа с пс
- •Обучение
- •Начало работы. Раздел «Ученик»
- •Начало занятий
- •Режим «Обучение»
- •Режим «Диагностика»
- •Аварийные ситуации
- •Заключение
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;
