Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 01.12.2017, 17:26
anima777 anima777 вне форума
Прохожий
 
Регистрация: 13.11.2017
Сообщения: 2
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию Необходима дописать код в Delphi 7

Здравствуйте, имеется программа тест с базой данных. Скажите пожалуйста, как сделать, чтобы не только шли рандомно вопросы, но и ответы. А также, чтобы выводились баллы не 1 и 0, а в процентном соотношение.
Код:
procedure FillArray(var A: array of Integer);
var
  I, S, R: Integer;
begin
  for I := 0 to High(A) do
    A[i] := I;
  for i := High(A) downto 0 do
  begin
    R := Random(I);
    S := A[R];
    A[R] := A[i];
    A[i] := S;
  end;
end;
 
procedure Ttest.Vopros(nomer:integer);
begin
DataModule2.Vopros.Locate('Номер',mass[nomer],[]);
//варианты ответов
DataModule2.Variant.First;
RadioButton1.Caption:=DataModule2.Variant.FieldValues['Ответ'];
if DataModule2.Variant.FieldValues['Правильный']=true then
RadioButton1.Tag:=1 else RadioButton1.Tag:=0;
 
DataModule2.Variant.Next;
RadioButton2.Caption:=DataModule2.Variant.FieldValues['Ответ'];
if DataModule2.Variant.FieldValues['Правильный']=true then
RadioButton2.Tag:=1 else RadioButton2.Tag:=0;
 
DataModule2.Variant.Next;
RadioButton3.Caption:=DataModule2.Variant.FieldValues['Ответ'];
if DataModule2.Variant.FieldValues['Правильный']=true then
RadioButton3.Tag:=1 else RadioButton3.Tag:=0;
 
DataModule2.Variant.Next;
RadioButton4.Caption:=DataModule2.Variant.FieldValues['Ответ'];
if DataModule2.Variant.FieldValues['Правильный']=true then
RadioButton4.Tag:=1 else RadioButton4.Tag:=0;
Label2.Caption:=inttostr(strtoint(Label2.Caption)+1);
end;
 
procedure Ttest.Button1Click(Sender: TObject);
var i:integer;
    RB:TRadioButton;
    cena:string;
begin
  if ((RadioButton1.Checked=true) or
  (RadioButton2.Checked=true) or
  (RadioButton3.Checked=true) or
  (RadioButton4.Checked=true) )
 
  then
  begin
  for i := 0 to GroupBox1.ControlCount-1 do
  begin
    RB:=TRadioButton(GroupBox1.Controls[i]);
    if RB.Checked=true then
    Label1.Caption:=inttostr(strtoint(Label1.Caption)+RB.Tag);
  end;
 
 
 
  if strtoint(Label2.Caption)<16 then
  begin
    Vopros(strtoint(Label2.Caption));
    RadioButton1.Checked:=false;
    RadioButton2.Checked:=false;
    RadioButton3.Checked:=false;
    RadioButton4.Checked:=false;
 
  test.Caption:='Тестирование.Вопрос'+inttostr(strtoint(Label2.Caption)-1)+' из 15';
  end else
  begin
    if strtoint(Label1.Caption)>8 then
   ocen:='5' else
    if strtoint(Label1.Caption)>6 then
   ocen:='4' else
    if strtoint(Label1.Caption)>4 then
    ocen:='3' else
    ocen:='2';
 
    if MessageDlg('Набрано баллов '+Label1.Caption+'.'+#13+
    'Ваша оценка: '+ocen+'!'+ 'Правильных: '+IntToStr(i)+,
  mtConfirmation, [mbYes], 0)=mrYes then
  Form1.Visible:=true;
  test.Close;
  Label2.Caption:='1';
  Label1.Caption:='0';
  RadioButton1.Checked:=false;
  RadioButton2.Checked:=false;
  RadioButton3.Checked:=false;
  RadioButton4.Checked:=false;
 
  end;
  end else
  showmessage('Вы не выбрали вариант ответа!');
end;
 
procedure Ttesti.Button2Click(Sender: TObject);
var i,kol:integer;
begin
For i:=1 to DataModule2.Vopros.RecordCount do
begin
  DataModule2.Vopros.Edit;
  DataModule2.Vopros.FieldValues['Номер']:=i;
  DataModule2.Vopros.Post;
  DataModule2.Vopros.Next;
end;
DataModule2.Vopros.Last;
kol:=DataModule2.Vopros.FieldValues['id'];
 
  Randomize;
 
  SetLength(mass,kol);
  FillArray(mass);
 
Vopros(strtoint(Label2.Caption));
testi.Caption:='Тестирование. Вопрос 1 из 50';
 
end;
Ответить с цитированием
  #2  
Старый 02.12.2017, 01:18
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,004
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Что за БД?
А то простое решение - просто в запросе получения самих вопросов и ответов к вопросу добавить в конце 'ORDER BY random'.
Ответить с цитированием
  #3  
Старый 02.12.2017, 19:04
anima777 anima777 вне форума
Прохожий
 
Регистрация: 13.11.2017
Сообщения: 2
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

База данных Access
Ответить с цитированием
  #4  
Старый 02.12.2017, 20:20
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,004
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Ну так и добавь в запросы выборки вопросов и ответов по сл. образцу:
Код:
SELECT questionID from questions ORDER BY rnd(questionID)
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 09:28.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter