Пояснительная записка на 39 листах
Вид материала | Пояснительная записка |
СодержаниеII. Практическая часть – программа проведения тестов Головная форма (Intro) и модуль Unit1. Блок тестирования (Process) и модуль Unit2 Рисунок 1 - Модуль тестирования |
- Пояснительная записка на стр. Графическая часть на листах, 69.51kb.
- Расчетно-пояснительная записка содержит: 111 страниц, 12 таблиц, 16 рисунков, 58 источников., 10.29kb.
- Правила оформления курсового проекта Правила оформления текста, рисунков и таблиц, 128.91kb.
- Пояснительная записка изложена на 191 листах машинописного текста, содержит 51 таблицу,, 67.94kb.
- Н. П. Огарёва факультет светотехнический Кафедра экономики и управления на предприятии, 529.21kb.
- Пояснительная записка к Комплексной (Сводной) программе повышения безопасности энергоблоков, 3999.98kb.
- Пояснительная записка к бухгалтерской отчетности за 2011 год пояснительная записка, 457.03kb.
- Ефимов Сергей Николаевич, 2000 г пояснительная записка, 29.34kb.
- Пояснительная записка 4 Примерный план подготовки 5 Содержание программы 8 Квалификационные, 469.64kb.
- Государственная Академия Управления имени С. Орджоникидзе Институт национальной и мировой, 399.35kb.
II. Практическая часть – программа проведения тестов
Программа организована в виде трех форм и четырех модулей:
Модули:
Имя модуля | Назначение |
Unit1 | Модуль с обработчиками для головной формы (ввод Фамилии, Имени и Реакция пользователя, при готовности к началу тестирования) |
Unit2 | Модуль с непосредственной реализацией тестировани |
Unit3 | Модуль вывода результатов |
GlobalEmb | Дополнительные переменные и функции общего пользования |
- ^
Головная форма (Intro) и модуль Unit1.
Здесь тестируемый должен ввести имя и фамилию.
Листинг программы имеет следующий вид:
unit Unit1; //Приглашение к работе
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Unit2, Unit3, GlobalEmb;
type
TIntro = class(TForm) //Сама форма
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
EntSur: TEdit;
EntName: TEdit;
StartTest: TButton;
procedure StartTestClick(Sender: TObject);
procedure Terminate(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Intro: TIntro;
Implementation
{$R *.dfm}
procedure TIntro.StartTestClick(Sender: TObject); //Передаем данные для дальнейшего использования
begin
StName:=EntName.Text; //Имя
StSurName:=EntSur.Text; //И фамилию
Counter:=0; //Изначально, вопросов не задано
Rights:=0; //Правильных ответов тоже нет
Intro.Hide; //Скрываем форму
Process.Show; //Открываем новую
end;
procedure TIntro.Terminate(Sender: TObject; var Action: TCloseAction); //Если пользователь закрыл приложение
begin
System.Halt;
end;
end.
- ^
Блок тестирования (Process) и модуль Unit2;
При нажатии на кнопку «Начать тест!!!» происходит считывание вопросов текстового файла «\test.txt». Блок реализует сам процесс тестирования. Файл с вопросами и ответами имеет имя ‘test.txt’(как уже было указано выше) и должен располагаться в том же каталоге, из которого вызывается программа.Правильным считается первый ответ.
^ Рисунок 1 - Модуль тестирования
Тест состоит из 80 вопросов, которые можно изменять или удалять. Каждый вопрос имеет только один правильный ответ. Если тестируемый не ответил на вопрос и нажал «Далее», то вопрос считается неверным.
Листинг программы:
unit Unit2; // сам тест
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, Unit3, GlobalEmb;
type
TVector=array [1..3] of String; //Перетасовка вопросов
TProcess = class(TForm)
QuestTitle: TLabel;
Vars: TRadioGroup;
Var1: TRadioButton;
var2: TRadioButton;
var3: TRadioButton;
Button1: TButton;
Button2: TButton;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Terminate(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Process: TProcess;
c1:byte;
implementation
{$R *.dfm}
procedure TProcess.FormCreate(Sender: TObject); //Подготовка условий
var
S:String; //Временная строка
St:TVector; //Список вариантов
i:byte; //Счетчик
begin
Process.Caption:='Добро пожаловать, '+StName+#32+StSurName; //Формирование заголовка окна с учетом фамилии и имени
reset(Questions); //Открыли файл для чтения
Button1.Caption:='Далее>>'; //Задали подпись для кнопки
Wrong:=nil; //Неверных ответов пока нет
randomize; //Инициализация генератора случайных чисел для перетасовки ответов
if not SeekEof(Questions) then //Файл непуст
begin
system.Readln(Questions,S); //Считываем заголовок
QuestTitle.Caption:=S; //Выводим его
for i:=1 to 3 do //Считываем варианты ответов
System.Readln(Questions,St[i]);
c1:=random(3)+1; //Находим, ч каким номером поменять ответ, при этом сохранить код верного ответа (c1)
S:=St[1]; //Меняем варианты местами
St[1]:=St[c1];
St[c1]:=S;
Var1.Caption:=St[1]; //Вывод вариантов ответов - код правильного ответа в c1
Var2.Caption:=St[2];
Var3.Caption:=St[3];
Var1.Checked:=False; //Еще ни один ответ не выбран
Var2.Checked:=False;
Var3.Checked:=False;
end
end;
procedure TProcess.Button1Click(Sender: TObject);
var
i:byte;
S:String;
St:TVector;
begin
inc(Counter); //Количество вопросов увеличилось на единицу
case c1 of //Устанавливаем верность ответа, если неверен - добавляем номер вопроса в список
1:if Process.Var1.Checked then inc(rights) //(не используем массив, чтобы не ограничивать количество вопросов
else AddList(Wrong,Counter);
2:if Process.Var2.Checked then inc(rights)
else AddList(Wrong,Counter);
3:if Process.Var3.Checked then inc(rights)
else AddList(Wrong,Counter);
end;
if not SeekEof(Questions) then //Вопросы еще остались???
begin
system.Readln(Questions,S);
QuestTitle.Caption:=S;
for i:=1 to 3 do
System.Readln(Questions,St[i]);
c1:=random(3)+1;
S:=St[1];
St[1]:=St[c1];
St[c1]:=S;
Var1.Caption:=St[1];
Var2.Caption:=St[2];
Var3.Caption:=St[3];
Var1.Checked:=False;
Var2.Checked:=False;
Var3.Checked:=False;
end
else
begin //Если нет - откроем формулу с результатами и спрячем предыдущую
Process.Hide;
ShowRes.Show;
end;
end;
procedure TProcess.Button2Click(Sender: TObject); //На прерывание теста
begin
System.Halt;
end;
procedure TProcess.Terminate(Sender: TObject; var Action: TCloseAction); //На закрытие формы
begin
System.Halt;
end;
end.