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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.11.2017, 22:32   #1
Vera101
 
Регистрация: 05.06.2017
Сообщений: 9
По умолчанию Необходима дописать код в Delphi 7

Здравствуйте. Помогите пожалуйста. Имеется код, где производится случайный выбор из базы данных вопросов и требуется ответить на них. Как сделать, чтобы выводилось рандомно только 20 из 60 и можно было бы начислять не только 1 балл, но и более, в зависимости от уровня сложности вопроса. И в итоге должно высвечиваться:
-максимально возможная сумма баллов;
-набранная тестируемым сумма баллов и ее % от максимума;
-правильные ответы на те вопросы, по которым тестируемый дал невер-ный ответ;
-рекомендации по самостоятельному изучению материала с указанием литературных источников вплоть до страниц;
-итоговая оценка за тест.

Код:
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 Ttesti.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)<11 then
  begin
    Vopros(strtoint(Label2.Caption));
    RadioButton1.Checked:=false;
    RadioButton2.Checked:=false;
    RadioButton3.Checked:=false;
    RadioButton4.Checked:=false;

  testi.Caption:='Тестирование.Вопрос'+inttostr(strtoint(Label2.Caption)-1)+' из 20';
  end else
  begin
    if strtoint(Label1.Caption)>8 then
    cena:='5' else
    if strtoint(Label1.Caption)>6 then
    cena:='4' else
    if strtoint(Label1.Caption)>4 then
    cena:='3' else
    cena:='2';

    if MessageDlg('Набрано баллов '+Label1.Caption+'.'+#13+
    'Ваша оценка: '+cena+'!'+ 'Правильных: '+IntToStr(i)+,
  mtConfirmation, [mbYes], 0)=mrYes then
  Form1.Visible:=true;
  testi.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 из 60';

end;

procedure Ttesti.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Form1.Visible:=true;
  Form1.Show;
end;
Vera101 вне форума Ответить с цитированием
Ответ


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

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

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дописать код джава Eko20 Помощь студентам 1 08.12.2013 23:57
помогите код дописать kinash96 Помощь студентам 6 15.11.2013 10:02
Помогите дописать код.. CodeExpert Помощь студентам 3 09.11.2009 09:38
Дописать код в файл! Trol-100 Общие вопросы C/C++ 8 24.10.2009 17:49
Помогите дописать код Черничный Общие вопросы Delphi 2 24.10.2008 00:08