Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.06.2013, 22:31   #1
MishanyaZWER
Пользователь
 
Аватар для MishanyaZWER
 
Регистрация: 18.04.2010
Сообщений: 12
По умолчанию делфи, тестовыя програмка

Доброго времени суток, прошу помощи в написании проекта. Суть в том, что нужно создать программу для прохождения тестов. Вот то-что у меня получилось. Не могу сделать проверку правильности ответа.
Код:
unit Test;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Menus;

  const
     put_k_data_base='database';
     rasshirenie_file_data_base='.txt';

type
       tstudents=record
             name,familiya,group,resultat:string;
            end;
  TForm1 = class(TForm)
    MainMenu1: TMainMenu;
    N1: TMenuItem;
    N2: TMenuItem;
    N3: TMenuItem;
    F11: TMenuItem;
    F12: TMenuItem;
    otvet: TEdit;
    GoTest: TButton;
    Prinyat_otvet: TButton;
    vihod: TButton;
    Memo: TMemo;
    OpenDialog1: TOpenDialog;
    vopros: TMemo;
    nomer_voprosa: TLabel;
    otveti: TMemo;
    name_test: TLabel;
    pravilo: TMemo;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    N4: TMenuItem;
    procedure NachaloClick(Sender: TObject);
    function proverka:boolean;
    procedure zapis_v_data_base;
    procedure CancelClick(Sender: TObject);
    procedure vivod_voprosa;
    procedure wait_flag(var flag:Boolean);
    procedure Prinyat_otvetClick(Sender: TObject);
    procedure N4Click(Sender: TObject);
  private
    var    flg:Boolean;
    { Private declarations }
   // tek_vopros,nomer:integer;
  public
    { Public declarations }
    student:tstudents;
   students:array[1..200] of tstudents;
  end;

var
  Form1: TForm1;

implementation

uses Dannie, Unit3;

{$R *.dfm}

procedure tform1.wait_flag(var flag:Boolean);
 begin
  while not flag do Application.ProcessMessages;
  flag:=False;
end;

function tform1.proverka:boolean;
var file_db:textfile;
    n,vsego_proshli:integer;
    str:string;
begin
 if not fileexists(put_k_data_base+rasshirenie_file_data_base)then
  begin
   proverka:=false;
   exit;
  end;
 assignfile(file_db,put_k_data_base+rasshirenie_file_data_base);
 reset(file_db);
 if ioresult=0 then
  begin {n 103}
    n:=0;
    while not(eof(file_db))do
    begin {n 101}
     n:=n+1;
     readln(file_db,students[n].name);
     delete(students[n].name,1,4);
     readln(file_db,students[n].familiya);
     delete(students[n].familiya,1,8);
     readln(file_db,str);
     readln(file_db,str);
     readln(file_db,str);
     readln(file_db,str);
    end;  {k 101}
    vsego_proshli:=n;
    for n:=1 to vsego_proshli do
     begin  {n 102}
      {if (students[n].name=student.name) and
          (students[n].familiya=student.familiya) then
          begin
           messagedlg('Извините, вы уже проходили этот тест отойдите пожалуйста от компьютера',mtinformation,[mbok],0);
           proverka:=true;
           exit;
          end;     }
     end;   {k 102}
  end    {k 103}
   else  proverka:=false;
   closefile(file_db);

end;

procedure tform1.zapis_v_data_base;
 var file_db:textfile;
  begin
   if fileexists(put_k_data_base+rasshirenie_file_data_base) then
    begin
     assignfile(file_db,put_k_data_base+rasshirenie_file_data_base);
     append(file_db);
    end  else
     begin
      assignfile(file_db,put_k_data_base+rasshirenie_file_data_base);
      rewrite(file_db);
     end;

 writeln(file_db,'Имя '+student.name);
 writeln(file_db,'Фамилия '+student.familiya);
 writeln(file_db,'Группа '+student.group);
 writeln(file_db,'Дата '+datetostr(date));
 writeln(file_db,'Время '+timetostr(time));
 writeln(file_db,'Результат '+student.resultat);
 writeln(file_db,'        ');

 closefile(file_db);
end;

procedure TForm1.vivod_voprosa;
  var
   l,i,j,k:byte;  c,s:string;
begin
  l:=0;
  j:=3;
  k:=12;
  for i := 1 to 3 do  begin
    c:=floattostr(i);
    vopros.clear;
    otveti.clear;
    pravilo.clear;
    otvet.Clear;
    nomer_voprosa.Caption:=('Вопрос №' + c);
    vopros.Lines[0]:=(memo.lines[j]);
    otveti.Lines[0]:=(memo.lines[2+j]+' '+memo.lines[3+j]+' '+memo.lines[4+j]+' ' +memo.lines[5+j]);
    {otveti.Lines[1]:=(memo.lines[3+j]);
    otveti.Lines[2]:=(memo.lines[4+j]);
    otveti.Lines[3]:=(memo.lines[5+j]);}
    pravilo.Lines[0]:=(memo.lines[7+j]);
    wait_flag(flg);
    if otvet.Text = memo.Lines[k] then begin
      l:=l+1;
      otvet.SetFocus;
     ShowMessage ('ответ правельный');    end else
     ShowMessage ('ответ неправильный');
    j:=j+14;
    k:=k+13;
  end;

end;
MishanyaZWER вне форума Ответить с цитированием
Старый 16.06.2013, 22:32   #2
MishanyaZWER
Пользователь
 
Аватар для MishanyaZWER
 
Регистрация: 18.04.2010
Сообщений: 12
По умолчанию

продолжение
Код:
procedure TForm1.N4Click(Sender: TObject);
begin
form3.memo.text:=memo.text;
    form3.ShowModal;
end;

procedure TForm1.NachaloClick(Sender: TObject);
 var i:integer;
begin
 OpenDialog1.InitialDir:=ExtractFilePath(Application.ExeName);
  if OpenDialog1.Execute then
    Memo.Lines.LoadFromFile(OpenDialog1.FileName);
   if memo.Lines.Count > 0 then
   begin
  form2.ShowModal;
  if not(form2.vvedenie_imeni) then exit
                              else
                               begin
         student.name:=form2.name.Text;
         student.familiya:=form2.Familiya.Text;
         student.group:=form2.klass.Text;

                               end;
 name_test.Caption:=(Memo.Lines[0]);
 Form1.vivod_voprosa;
end else
     ShowMessage ('База вопросов не выбрана. Пожалуйста выберете базу вопросов.');
end;

procedure TForm1.Prinyat_otvetClick(Sender: TObject);
 begin
  flg:=True;
end;

procedure TForm1.CancelClick(Sender: TObject);
begin
 close;
end;

end.
MishanyaZWER вне форума Ответить с цитированием
Старый 16.06.2013, 22:33   #3
MishanyaZWER
Пользователь
 
Аватар для MishanyaZWER
 
Регистрация: 18.04.2010
Сообщений: 12
По умолчанию

вот структура файла с которого идет чтение вопроса и собственно самого ответа
Код:
Поэзия

vopros_1
как звали чехова?
varianti_otveta_1
а) Антон
б) Сергей
в) Евгений
г) Александр
vvod otveta
Введите букву правильного ответа
otvet
а
end

vopros_2
Кто написал война и мир?
varianti_otveta_2
а) Пушкин
б) Толстой
в) Лермонтов
г) Блок
vvod otveta
Введите букву правельного ответа
otvet
б
MishanyaZWER вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Програмка lol111 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 15.09.2012 14:08
програмка..( Нешарю Помощь студентам 0 23.11.2011 13:34
Си програмка Nebojitel Общие вопросы C/C++ 8 15.07.2011 20:54
Програмка Spiderik Паскаль, Turbo Pascal, PascalABC.NET 1 17.04.2010 09:12
програмка на Делфи FCSM Помощь студентам 6 29.10.2009 21:56