Отчет по практике вид практики


Структурная схема приложения



бет4/6
Дата12.03.2023
өлшемі2.79 Mb.
#470661
түріОтчет
1   2   3   4   5   6
16091401 (и) - Информатика

1.4 Структурная схема приложения


Структурная схема приложения представлена на рисунке 1.

Рисунок 1 – Структурная схема приложения


1.5 Макет экранных форм


Начальная заставка приложения (zastavka) в режиме конструирования показана на рисунке 2.

Рисунок 2 – Форма начальной заставки (zastavka) в режиме конструирования
Форма непосредственного тестирования, вывода вопроса, вариантов ответов и выбора правильного (Form1) показана на рисунке 3.

Рисунок 3 – Форма непосредственного тестирования, вывода вопроса, вариантов ответов и выбора правильного (Form1)
Форма для вывода результатов тестирования (ResultForm) показана на рисунке 4.

Рисунок 4 – Форма для вывода результатов тестирования (ResultForm)


1.6 Руководство программиста


Подробное описание процесса разработки тестирующей программы в выбранной среде разработки
Описание основных элементов каждой из имеющихся форм приведено в таблицах 2–4.
Таблица 2 – Описание основных элементов формы заставки (zastavka)

Имя элемента

Тип

Назначение в программе

Image1

TImage

Область вывода картинки

Label1

TLabel

Вывод текста «Тест по истории»

Label3

TLabel

Вывод текста «Для перехода к следующему вопросу необходимо нажимать»

Label41

TLabel

Вывод текста «кнопку Далее>>»

Timer1

TTimer

Таймер закрытия формы заставки

Таблица 3 – Описание основных элементов формы непосредственного тестирования, вывода вопроса, вариантов ответов и выбора правильного (Form1)



Имя элемента

Тип

Назначение в программе

MainMenu1

TMainMenu

Главное меню приложения

Panel1

TPanel

Панель группировки элементов

Button1

TButton

Кнопка перехода к следующему вопросу

Label1

TLabel

Вывод текста вопроса

RadioOtvet1

TRadioButton

Переключатель выбора первого варианта ответа

RadioOtvet2

TRadioButton

Переключатель выбора второго варианта ответа

RadioOtvet3

TRadioButton

Переключатель выбора третьего варианта ответа

RadioOtvet4

TRadioButton

Переключатель выбора четвертого варианта ответа

TextVoprosa

TLabel

Вывод текста вопроса

StatusBar1

TStatusBar

Нижняя панель для вывода ФИО, номера текущего вопроса и общего количества

Таблица 4 – Описание основных элементов формы вывода результатов тестирования (ResultForm)



Имя элемента

Тип

Назначение в программе

Button1

TButton

Кнопка завершения работы с программой

Image1

TImage

Область вывода картинки

Label1

TLabel

Вывод текста «Результаты тестирования»

Label2

TLabel

Вывод текста «Всего:»

Ocenka_Label

TLabel

Вывод количества верных ответов

Procent_Labell

TLabel

Вывод процента верных ответов

SG

TStringGrid

Таблица для вывода результатов каждого вопроса

vernih_label

TLabel

Вывод количества верных ответов

voprosov_label

TLabel

Вывод общего количества вопросов

При первоначальном открытии главной формы выполняется обработчик:
procedure TForm1.FormCreate(Sender: TObject);
// Создание формы
var
k:integer; // Номер позиции последнего символа \ в имени файла
i: integer; // Переменная цикла
begin
exename:=Application.ExeName; // Полное имя приложения
lenpath:=length(exename); // Длина полного имени
k:=0; // Обнуление позиции последнего / в полном именни
for i:=lenpath downto 1 do // Цикл по длине пути
if ((copy(exename,i,1)='\') and (k=0)) then begin
exepath:=copy(exename,1,i);
k:=i;
end;
ini:=TIniFile.Create(exepath+'NASTROY.INI'); // Определение INI-файла

end;
Затем выполняется обработчик открытия формы-заставки:


procedure TForm1.FormShow(Sender: TObject);
begin
zastavka.ShowModal; // Отображжение заставки
end;

При выборе пункта меню Тестирование → Начать тестирование по истории выполняется обработчик:


procedure TForm1.N2Click(Sender: TObject);
// Начать тестирование
var
i,j: integer; // Переменная цикла
koltest: integer; // Количество тестов
vr: string; // Временная переменная для сортировки
begin
KolVern:=0; // Обнуление счетчика верных ответов
Test_Name:='История России_Тест';// RegistrForm.Test.Text+'_Тест';}
Kol_voprosov:=ini.ReadInteger(Test_Name,'Всего',0);
StatusBar1.Panels[3].text:='Всего вопросов: '+inttostr(Kol_voprosov);
NomerVoprosa:=1; // Начать с первого вопроса
// Вывод первоог вопроса и ваииантов ответов
voprosi[NomerVoprosa].vopros:=ini.ReadString(Test_Name,'Вопрос'+inttostr(NomerVoprosa),'');
voprosi[NomerVoprosa].Otvet1:=ini.ReadString(Test_Name,'Ответ'+inttostr(NomerVoprosa)+'_1','');
voprosi[NomerVoprosa].Otvet2:=ini.ReadString(Test_Name,'Ответ'+inttostr(NomerVoprosa)+'_2','');
voprosi[NomerVoprosa].Otvet3:=ini.ReadString(Test_Name,'Ответ'+inttostr(NomerVoprosa)+'_3','');
voprosi[NomerVoprosa].Otvet4:=ini.ReadString(Test_Name,'Ответ'+inttostr(NomerVoprosa)+'_4','');
voprosi[NomerVoprosa].vern:=StrToInt(ini.ReadString(Test_Name,'Верный'+inttostr(NomerVoprosa),''));
TextVoprosa.Caption:=voprosi[NomerVoprosa].vopros; // Вывод текста вопроса
RadioOtvet1.Caption:=voprosi[NomerVoprosa].Otvet1; // Вывод 1-го варианта ответа
RadioOtvet2.Caption:=voprosi[NomerVoprosa].Otvet2; // Вывод 2-го варианта ответа
RadioOtvet3.Caption:=voprosi[NomerVoprosa].Otvet3; // Вывод 3-го варианта ответа
RadioOtvet4.Caption:=voprosi[NomerVoprosa].Otvet4; // Вывод 4-го варианта ответа
Label1.Caption:='Вопрос № '+inttostr(NomerVoprosa); // Вывод номера вопроса
RadioOtvet1.Checked:=true; // Выбор певого ответа
TextVoprosa.Visible:=true; // Отображениее теста вопроса
Panel1.Visible:=true; // Вывод панели с вариантамии ответов
end;
При нажатии кнопки перехода к следующему вопросу (Далее >>) выполняется обработчик:
procedure TForm1.Button1Click(Sender: TObject);
// Кнопка перехода к следующему вопросу
var
i:integer; // Переменная цикла
procent: real; // Процент правильных ответов
begin
if NomerVoprosabegin
if RadioOtvet1.Checked then vibor[NomerVoprosa]:=1;
if RadioOtvet2.Checked then vibor[NomerVoprosa]:=2;
if RadioOtvet3.Checked then vibor[NomerVoprosa]:=3;
if RadioOtvet4.Checked then vibor[NomerVoprosa]:=4;
NomerVoprosa:=NomerVoprosa+1; // Переход к следующему вопросу
voprosi[NomerVoprosa].vopros:=ini.ReadString(Test_Name,'Вопрос'+inttostr(NomerVoprosa),'');
voprosi[NomerVoprosa].Otvet1:=ini.ReadString(Test_Name,'Ответ'+inttostr(NomerVoprosa)+'_1','');
voprosi[NomerVoprosa].Otvet2:=ini.ReadString(Test_Name,'Ответ'+inttostr(NomerVoprosa)+'_2','');
voprosi[NomerVoprosa].Otvet3:=ini.ReadString(Test_Name,'Ответ'+inttostr(NomerVoprosa)+'_3','');
voprosi[NomerVoprosa].Otvet4:=ini.ReadString(Test_Name,'Ответ'+inttostr(NomerVoprosa)+'_4','');
voprosi[NomerVoprosa].vern:=StrToInt(ini.ReadString(Test_Name,'Верный'+inttostr(NomerVoprosa),''));
TextVoprosa.Caption:=voprosi[NomerVoprosa].vopros; // Вывод текста вопроса
RadioOtvet1.Caption:=voprosi[NomerVoprosa].Otvet1; // Вывод 1-го варианта ответа
RadioOtvet2.Caption:=voprosi[NomerVoprosa].Otvet2; // Вывод 2-го варианта ответа
RadioOtvet3.Caption:=voprosi[NomerVoprosa].Otvet3; // Вывод 3-го варианта ответа
RadioOtvet4.Caption:=voprosi[NomerVoprosa].Otvet4; // Вывод 4-го варианта ответа
Label1.Caption:='Вопрос № '+inttostr(NomerVoprosa);
RadioOtvet1.Checked:=true;
end
else // Номер вопроса равен наиболльшему
begin
// Определение выбранного ответа
if RadioOtvet1.Checked then vibor[NomerVoprosa]:=1;
if RadioOtvet2.Checked then vibor[NomerVoprosa]:=2;
if RadioOtvet3.Checked then vibor[NomerVoprosa]:=3;
if RadioOtvet4.Checked then vibor[NomerVoprosa]:=4;
ResultForm.SG.RowCount:=Kol_voprosov+1; // Число строк таблицы результатов
// Заголовки столбцов таблицы ррезультатов
ResultForm.SG.Cells[0,0]:='Номер вопроса';
ResultForm.SG.Cells[1,0]:='Результат';
// Цикл вывода результатов всех вопросов
for i := 1 to Kol_voprosov do
begin
ResultForm.SG.Cells[0,i]:=inttostr(i); // Ввывод номера вопроса
if (vibor[i]=voprosi[i].vern) then begin // Если ответ аерен
KolVern:=KolVern+1;
ResultForm.SG.Cells[0,i]:=inttostr(i);
ResultForm.SG.Cells[1,i]:='правильно';
end
else begin // Если ответ неверен
ResultForm.SG.Cells[0,i]:=inttostr(i);
ResultForm.SG.Cells[1,i]:='неправильно';
end;
end;
procent:=KolVern/Kol_voprosov*100; // Определение процента веных ответов
// Вывод общего числа вопросов, колличества и процента ошибок
ResultForm.voprosov_label.Caption:='- вопросов: '+inttostr(Kol_voprosov);
ResultForm.vernih_label.Caption:='- верных ответов: '+inttostr(KolVern);
ResultForm.procent_label.Caption:='- процент верных ответов: '+copy(floattostr(procent),1,5);
// Определение оценки в зависимости от процента ошибок
if (procent<=50) then ResultForm.Oceqnka_Label.Caption:='неудовлетворительно';
if ((procent>50) and (procent<=70)) then
ResultForm.Oceqnka_Label.Caption:='удовлетворительно';
if ((procent>70) and (procent<=90)) then ResultForm.Oceqnka_Label.Caption:='хорошо';
if (procent>90) then ResultForm.Oceqnka_Label.Caption:='отлично';
ResultForm.ShowModal; // Показ формы выода результатов
end;
end;
При выборе пункта меню Тестирование → Выход выполняются 2 обработчика:
procedure TForm1.N4Click(Sender: TObject);
// Пункт мен Тестирование - Выход
begin
close;
end;

procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);


// Подтверждение завершения работы
begin
if MessageDlg('Вы действительно хотите завершить работу?', mtConfirmation,
[mbOk, mbCancel], 0) = mrCancel then CanClose := False;
end;




Достарыңызбен бөлісу:
1   2   3   4   5   6




©dereksiz.org 2024
әкімшілігінің қараңыз

    Басты бет