if Ca = Answer then
inc(Scores)
else
inc(Wrong);
Оператор Inc увеличивает значение указанной переменной на 1. Если да то +1 к правильным если нет, то +1 к неправильным.
3.1 Процедура работы таймера времени
procedure TForm2.Timer1Timer(Sender: TObject);
begin
Count:=Count+1;
TimeLabel.Caption:=ss2nn(Count);
end;
Начальное значение переменной Count – 0, с каждой секундой значение переменной увеличивается на 1, затем функцией ss2nn значение переводится в секунды + минуты (если нужно) и результат выводится на TimeLabel. На рисунке 2 приведена иллюстрация, демонстрирующая работу программы.
Рисунок 2 – Внешний вид программы
3.2 Форма с результатами тестирования (Form3/Unit3)
После того как программа закончила тестирование, она подсчитывает результаты, создает и показывает форму с результатами тестирования. Вид формы для результатов тестирования в дизайнере форм Delphi приведен на рисунке 3.
Рисунок 3 - Вид формы для результатов тестирования в дизайнере форм Delphi
Кнопка “Ok” на Form3 закрывает программу.
Процедуры.
Процедура – обработчик создания формы с результатами тестирования описана в предыдущем модуле (Unit2). Рассмотрим работу таймера, который собственно выставляет оценку.
procedure TForm3.Timer1Timer(Sender: TObject);
if (Gauge1.Progress < 40) then label7.Caption:='2';
if (Gauge1.Progress >= 40 )and (Gauge1.Progress <60) then label7.Caption:='3';
if (Gauge1.Progress >=60) and (Gauge1.Progress <=90)
then label7.Caption:='4'; if Gauge1.Progress >90 then label7.Caption:='5'; end;
В настоящее время в нашу жизнь широко внедряются информационные технологии. На сегодняшний день, наверное, не осталось такой области, где бы они ни применялись. Данная программа может применяться для оценки уровня знаний по русскому языку в школах, ВУЗах, техникумах или для оценки собственных познаний в культуре правописания.Её пользовательский интерфейс делает её простой, понятной и доступной.
1. Бобровский С.И. Delphi 5 – М.: Питер, 2002.
2. Гаевский A. Разработка программных приложений на Delphi 6 – М.: Киев, 2000.
3. Зуев В. A. Turbo Pascal 6.0, 7.0. М.: Москва, 1998.
4. Коцюбинский А.О., Грошев С.В. Язык программирования Delphi 5 – М.: Москва, 1999.
5. Леонтьев В.И. Delphi 5 – М.: Москва, 1999.
6. Моисеев А.С. Object Pascal – М.: Москва, 2000.
7. Немнюгин С.А. Программирование – М.: Питер, 2000.
8. Ремизов Н. C. Delphi – М.: Питер, 2000.
Приложение А
Модуль формы с вопросами.
program Project1;
uses
Forms,
Unit2 in 'Unit2.pas' {Form2},
Unit3 in 'Unit3.pas' {Form3};
{$R *.res}
Application.Initialize;
Application.CreateForm(TForm2, Form2);
Application.Run;
end.
unit Unit2; // модуль главной формы
interface
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, Buttons, IniFiles, XPMan;
type
TForm2 = class(TForm)
Panel1: TPanel;
Label1: TLabel;
BitBtn1: TBitBtn;
Panel2: TPanel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
Label9: TLabel;
Button1: TButton;
Panel3: TPanel;
Label2: TLabel;
RadioButton1: TRadioButton;
Label3: TLabel;
RadioButton2: TRadioButton;
Label4: TLabel;
RadioButton3: TRadioButton;
RadioButton4: TRadioButton;
Label11: TLabel;
Timer1: TTimer;
Label10: TLabel;
TimeLabel: TLabel;
XPManifest1: TXPManifest;
procedure FormCreate(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
{Обьявляем необходимые переменные}
QuestNum: Integer;
QuestCount: Integer;
Scores: Integer;
Wrong: Integer;
ProgPath : string;
public
res : Integer;
{Функция для перевода секунд в минуты + секунды}
function ss2nn(Seconds: Integer): String;
procedure ShowQuestion; {!!!Главная процедура для загрузки и показа
вопросов и ответов}
var
Form2: TForm2;
Ini: TIniFile;
Count : integer;
implementation
uses Unit3;
{$R *.dfm}
{ TForm2 }
function TForm2.ss2nn(Seconds: Integer): String;
nMin, nSec: Integer;
{Проверяем, меньше чем 1/Min}
if Seconds < 60 then Result := '0 минут ' + IntToStr(Seconds) + ' секунд'
else begin
{Определяем минуты}
nMin := Seconds div 60;
{Определяем секунды}
nSec := Seconds - (nMin * 60);
{Возвращаем результат}
Result := IntToStr(nMin) + ' минут ' + IntToStr(nSec) + ' секунд';
procedure TForm2.ShowQuestion;
Count, i: Integer;
if (QuestNum > QuestCount) and (QuestNum > 0) then
{если кол-во вопросов больше чем уже показанных и кол-во вопросов
>0 то выполняем следушее....}
Form3 := TForm3.Create(self);//создаем форму с результатами тестирования
res := (Scores * 100) div QuestCount;// узнаем кол-во правильных ответов
Form3.Gauge1.Progress := res; // выводим правильные ответы на графике в %
Form3.Gauge2.Progress := 100-res; //выводим кол-во неправильных ответов
//сколько всего вопросов....
Form3.Label5.Caption := 'Вопросов в тесте: '+IntToStr(QuestCount);
//пишем на label кол-во правильных ответов
Form3.Label3.Caption := IntToStr(Scores);
//тоже самое, только неправильные
Form3.Label4.Caption := IntToStr(Wrong);
Timer1.Enabled:=False; //выключаем таймер времени
Form3.TimeLabel.Caption:=TimeLabel.Caption; //выводим время на label времени
Form3.ShowModal;// наконец показываем форму с результатами
Form2.close; //закрываем форму с вопросами
//загружаем текст вопроса
Label1.Caption := Ini.ReadString('Вопрос №' + inttostr(QuestNum), 'Текст вопроса', 'Вопрос отсутствует');
//загружаем варианты ответов
RadioButton1.Caption := Ini.ReadString('Вопрос №' + inttostr(QuestNum), 'Текст кнопки 1', 'ERROR');
Страницы: 1, 2, 3, 4