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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.12.2014, 20:12   #1
nomad512
Пользователь
 
Регистрация: 20.11.2014
Сообщений: 16
По умолчанию Поставить оценку в тесте

Пожалуйста помогите. Как сделать так чтобы тест выставлял оценку?
Код:
unit Unit4;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ExtCtrls, Data.DB,
  Data.Win.ADODB, JPEG;

type
  TForm4 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Panel1: TPanel;
    Label1: TLabel;
    RadioGroup1: TRadioGroup;
    Label2: TLabel;
    Label3: TLabel;
    Button3: TButton;
    Q1: TADOQuery;
    Image1: TImage;
    Button4: TButton;
    procedure Button2Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure RadioGroup1Click(Sender: TObject);
  private { Private declarations }
    sConnect : string;
    qCurrent, qCount, oVerno, nOtvet : integer;
    procedure DoSQL(_sql : string; Mode : integer);
    procedure FullPanel(nq : integer);
    function Check : boolean;
    function Obrabotka(q, a : integer) : integer;
  public
    { Public declarations }
  end;

var
  Form4: TForm4;

implementation

{$R *.dfm}

procedure TForm4.Button1Click(Sender: TObject);
begin
 Panel1.Visible:=true;
 Image1.Visible:=true;
 FullPanel(qCurrent);
end;

procedure TForm4.Button2Click(Sender: TObject);
begin
 Close;
end;

procedure TForm4.Button3Click(Sender: TObject);
begin
 if (not Check)
  then begin
        ShowMessage('Не выбран ни один вариант ответа. Повторите ввод!');
        Exit;
       end;
 inc(qCurrent);
 oVerno:=oVerno+Obrabotka(qCurrent-1,nOtvet);
 Label3.Caption:=Format('Отвечено на %d вопросов; правильных ответов - %d',[qCurrent-1,oVerno]);
 if qCurrent = qCount then Button3.Caption:='Готово';
 if qCurrent <= qCount
  then FullPanel(qCurrent)
  else begin
        ShowMessage(Format('Отвечено на %d вопросов; правильных ответов - %d',[qCurrent-1,oVerno]));
        Close;
       end;
       if qCount < 3  then showmessage('4')

end;

function TForm4.Check: boolean;
begin
 if RadioGroup1.ItemIndex = -1 then Result:=false else Result:=true;
end;

procedure TForm4.DoSQL(_sql: string; Mode: integer);
begin
 Q1.Close;
 Q1.SQL.Clear;
 Q1.SQL.Add(_sql);
 if Mode = 0 then Q1.Open else Q1.ExecSQL;
end;

procedure TForm4.FormCreate(Sender: TObject);
begin
 sConnect:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' +
           ExtractFilePath(Application.ExeName) + 'DB.mdb' +
           ';Persist Security Info=False';
 DoSQL('SELECT * FROM DB.Question',0);
 Q1.Last;
 qCount:=Q1['ID'];
 qCurrent:=1;
 oVerno:=0;
 Label3.Caption:='';
 Image1.Picture:=nil;
end;

procedure TForm4.FullPanel(nq : integer);
var i : integer;
begin
 RadioGroup1.ItemIndex:=-1;
 Label1.Caption:='Вопрос № '+IntToStr(qCurrent);
 DoSQL('SELECT * FROM DB.Question WHERE ID = ' + IntToStr(qCurrent),0);
 Label2.Caption:=Q1['Texts'];
 DoSQL('SELECT * FROM DB.Otvets WHERE QID = ' + IntToStr(qCurrent), 0);
 Q1.First;
 for i := 0 to Q1.RecordCount-1 do
   begin
    RadioGroup1.Items.Strings[i] := Q1['Texts'];
    Q1.Next;
   end;

end;

function TForm4.Obrabotka(q, a: integer): integer;
var _s : string;
begin
 _s:=Format('SELECT * FROM DB.Otvets WHERE ((QID = %d) AND (OID = %d))',[q,a]);
 DoSQL(_s,0);
 Result:=Q1['Verno'];

 if not Result =3 then  showmessage ('5');
end;

procedure TForm4.RadioGroup1Click(Sender: TObject);
var s : string;
begin
 nOtvet:=RadioGroup1.ItemIndex;
 DoSQL(Format('SELECT * FROM DB.Otvets WHERE ((QID = %d) AND (OID = %d))',[qCurrent,nOtvet]),0);
 s:=ExtractFilePath(Application.ExeName)+Q1['Images'];
 Image1.Picture.LoadFromFile(s);
end;

end.
nomad512 вне форума Ответить с цитированием
Старый 03.12.2014, 22:58   #2
itishnik
Новичок
Джуниор
 
Аватар для itishnik
 
Регистрация: 03.12.2014
Сообщений: 1
По умолчанию

сложная задачка, сейчас посмотрю
Упражнение для большой спины - тяга верхнего блока http://zhimlezha.ru/tyga-verhnego-bloka.php
itishnik вне форума Ответить с цитированием
Старый 03.12.2014, 23:06   #3
nomad512
Пользователь
 
Регистрация: 20.11.2014
Сообщений: 16
По умолчанию

Хорошо)))))
nomad512 вне форума Ответить с цитированием
Старый 04.12.2014, 08:08   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Выставлял куда?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поставьте оценку ---FISHER--- Свободное общение 24 16.08.2009 14:26
Посчитать среднюю оценку. Паскаль. Паскалька^^ Помощь студентам 2 20.12.2008 20:14
работа на оценку! посоветуйте. Iceman Свободное общение 18 19.09.2007 22:19
Задача на оценку эффективности стрельбы Борзов Помощь студентам 3 23.05.2007 06:54