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

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

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.06.2015, 17:01   #1
KaNa21
 
Регистрация: 07.06.2015
Сообщений: 3
Вопрос тест в Delphi c помощью БД

как создать тест в Delphi с помощью БД, чтобы выбирал вопросы из БД random-no по 15 вопросов с помощью компонента radio button
KaNa21 вне форума Ответить с цитированием
Старый 07.06.2015, 17:53   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

http://www.programmersforum.ru/showt...E4%E5%EB%F4%E8
http://www.programmersforum.ru/showthread.php?t=56718
http://www.programmersforum.ru/showp...3&postcount=12
http://phomm.narod.ru/programs/testsystem.htm

Для начала пойдет?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 07.06.2015, 18:10   #3
KaNa21
 
Регистрация: 07.06.2015
Сообщений: 3
По умолчанию

для начала да пойдет. Но там нету исходника с использованием БД
KaNa21 вне форума Ответить с цитированием
Старый 07.06.2015, 18:21   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Так тебе нужно понимание, того как тесты делаются или уже готовая программа?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 07.06.2015, 18:56   #5
KaNa21
 
Регистрация: 07.06.2015
Сообщений: 3
По умолчанию

понимание как делается тест с помощью бд. мне нужен код программы чтобы я понял как его делать. использовать тест в своей программе
KaNa21 вне форума Ответить с цитированием
Старый 07.06.2015, 19:57   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
мне нужен код программы чтобы я понял как его делать.
Интересно детки пляшут...
Ладно. вод код:
Код:
unit Unit1;

{$mode objfpc}{$H+}

interface

uses
                  Classes, SysUtils, sqldb, FileUtil, Forms, Controls, Graphics,
		  Dialogs, ComCtrls, StdCtrls, ExtCtrls;

type

{ TForm1 }

TForm1 = class(TForm)
		  Button1: TButton;
		  Button2: TButton;
		  CheckGroup1: TCheckGroup;
		  Memo1: TMemo;
		  Panel1: TPanel;
		  Query: TSQLQuery;
		  procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);

private
                  procedure step(Direct:Integer);
                  { private declarations }
public
                  { public declarations }
end;

var
                  Form1: TForm1;

implementation

{$R *.lfm}

{ TForm1 }

procedure TForm1.FormCreate(Sender: TObject);
begin
  Panel1.Align:=alBottom;
  Button1.Align:=alLeft; Button1.Caption:='Назад';
  Button2.Align:=alRight;Button2.Caption:='Вперед';
  Memo1.Align:=alLeft;
  CheckGroup1.Align:=alClient;

  with Query do begin
    SQL.Text:='select * from [Тесты]';
    open;
    step(0);
  end;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  step(1); //Идем на следующий вопрос
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 step(-1); //Идем на предидущий вопрос
end;



procedure TForm1.step(Direct: Integer);
var i:integer; s:string;
begin

  if Direct<>0 then begin
  //Анализ ответа на текущий вопрос
  s:=FieldByName('Варианты ответа').AsString;
  with CheckGroup1 do
   for i:=0 to Items.Count-1 do begin
     if
       (Checked[i] and (pos(s,IntToStr(i)+',')=0))
     or(not Checked[i] and (pos(s,IntToStr(i)+',')<>0))
      then begin
      ShowMessage('Аблом. Ответы не верные'); exit;
     end;
   end;
  end;

  //Проход по тесту
  if Direct>0 then begin
    if not Query.FindNext then begin
      ShowMessage('Тест подошел к концу. Аста ла виста'); exit;
    end;
  end else
  if Direct<0 then begin
    if not Query.FindPrior then begin
      ShowMessage('Вы в начале теста. Удачи.');
    end;
  end;


  //Наполнение формы вопросом и ответами
  with Query do begin
    Memo1.Lines.Text:=FieldByName('Вопрос').AsString;
    CheckGroup1.Items.Clear;
    for i:=0 to FieldCount-1 do begin
      if pos('Вариант',Fields[i].FieldName)<>0 then
       CheckGroup1.Items.Append(Fields[i].AsString);
    end;
  end;

end;

end.
Код с потолка.

Для него нужна следующая база.
Таблица "Тесты", в которой есть поля "Вопрос", "Варианты ответа" и поля в имени которых есть слово "Вариант", например Вариант01, Вариант02 и т.д.
В поле "Варианты ответа" проставляются правильные номера ответов через запятую.

Подключение к БД сделаешь сам.

Удачного изучения )
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Тест в Delphi 7 Ербулат Общие вопросы Delphi 3 13.06.2012 13:32
тест на delphi vladddd Общие вопросы Delphi 4 25.05.2012 20:40
тест на Delphi Джонни Помощь студентам 3 11.03.2010 00:11
тест в delphi nenuphar Помощь студентам 4 27.11.2009 17:57
Программа-тест в Delphi) скиньте))а то програмку здавать преподу надо,и самой хочется понять Delphi Верчик Помощь студентам 9 02.03.2009 17:46