📄 cs_test.~pas
字号:
unit cs_test;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, ComCtrls, StdCtrls, CheckLst, Buttons, MPlayer, Menus;
type
Ttest = class(TForm)
Animate1: TAnimate;
Timer1: TTimer;
Label1: TLabel;
GroupBox1: TGroupBox;
GroupBox2: TGroupBox;
GroupBox3: TGroupBox;
GroupBox4: TGroupBox;
sim_sel: TRadioGroup;
multi_sel: TCheckListBox;
Button1: TButton;
Button2: TButton;
Button3: TButton;
GroupBox5: TGroupBox;
ques: TMemo;
ans: TMemo;
Image1: TImage;
Button5: TButton;
Button6: TButton;
Edit1: TEdit;
Label2: TLabel;
Label3: TLabel;
UpDown1: TUpDown;
Button7: TButton;
Memo3: TMemo;
Label4: TLabel;
ks_cmb: TComboBox;
Label5: TLabel;
Label6: TLabel;
BitBtn1: TBitBtn;
MediaPlayer1: TMediaPlayer;
Label7: TLabel;
PopupMenu1: TPopupMenu;
N1: TMenuItem;
N2: TMenuItem;
ColorDialog1: TColorDialog;
BitBtn2: TBitBtn;
procedure FormShow(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure ks_cmbChange(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button6Click(Sender: TObject);
procedure Button7Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure multi_selClick(Sender: TObject);
procedure sim_selClick(Sender: TObject);
procedure insert_ans;
procedure N1Click(Sender: TObject);
procedure N2Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
test: Ttest;
mnt:integer;
snd:integer=0;
cur_tx:string;
auto_mf:boolean=false;
cur_sjid,cur_stid:integer;
implementation
{$R *.dfm}
uses submain,main,P_ks_check,login;
procedure Ttest.insert_ans;
var
s:string;
//ii:Integer;
begin
s:='select * from 答卷表 where 用户id='+inttostr(login.myid)+
' and 试卷id='+inttostr(cur_sjid)+ ' and 题号='+inttostr(cur_stid);
with main.DataModule2 do
begin
aq2.Close;
aq2.SQL.Clear;
aq2.SQL.Add(s);
aq2.Open;
if not aq2.Eof then
begin
aq4.SQL.Clear;
aq4.Close;
aq4.SQL.Add('select * from 答卷表');
aq4.Open;
aq4.Insert;
aq4.FieldByName('用户答案').AsString:=cs_test.test.ans.Text;
aq4.FieldByName('试卷id').Asinteger:=cs_test.test.cur_sjid;
aq4.FieldByName('用户id').AsInteger :=login.myid;
aq4.FieldByName('题号').AsInteger :=cs_test.test.cur_stid;
aq4.Post
end
else
begin
aq2.Edit;
aq2.FieldByName('用户答案').AsString:=ans.Text;
aq2.Post
end;
end;
end;
procedure Ttest.FormShow(Sender: TObject);
begin
if (submain.min = '' ) then
begin
messagebox(handle,'请先到主窗口中设置好考试时间','错误',MB_OK);
test.Close
end
else
mnt:=strtoint(submain.min);
//mnt:=60*cur_hour+cur_min;
with main.DataModule2 do
begin
aq1.SQL.Clear;
aq1.Close;
aq1.sql.Add('select distinct 试卷名称 from 试卷表');
aq1.Open;
ks_cmb.Items.Clear;
while not aq1.Eof do
begin
ks_cmb.Items.Add(aq1.FieldValues['试卷名称']);
aq1.Next;
end;
end;
end;
procedure Ttest.Timer1Timer(Sender: TObject);
var s:string;
i,ihour,imin:integer;
begin
if snd<=0 then begin mnt:=mnt-1;snd:=60; end;
if mnt<0 then messagebox(handle,'时间到,交卷','信息',MB_OK);
snd:=snd-1;
//dec(mnt);
ihour:=mnt div 60;
imin:=mnt;
for i:=0 to ihour-1 do
begin
imin:=imin-60;
end;
s:='离交卷还有'+inttostr(ihour)+'小时'+inttostr(imin)+'分'+inttostr(snd)+'秒 ';
label1.Caption:=s;
end;
procedure Ttest.ks_cmbChange(Sender: TObject);
var
ssql,tempstr,photostr:string;
sjid:integer;
begin
Animate1.Play(0,Animate1.FrameCount,-1);
button1.Enabled:=true;
button2.Enabled:=true;
button5.Enabled:=true;
button6.Enabled:=true;
button7.Enabled:=true;
button3.Enabled:=true;
bitbtn1.Enabled:=true;
submain.Form1.Hide;
timer1.Enabled:=true;
ks_cmb.Enabled:=false;
//调入试题库
with main.DataModule2 do
begin
aq1.SQL.Clear;
aq1.Close;
aq1.SQL.Add('select 试卷号 from 试卷表 where 试卷名称='''+ks_cmb.Text +'''');
aq1.Open;
if not aq1.Eof then
begin
sjid:=aq1.FieldValues['试卷号'];
cur_sjid:=sjid;
//有新用户参加考试
(*
aq3.Close;
aq3.SQL.Clear;
aq3.SQL.Add('select * from 答卷表');
aq3.Open;
aq3.Insert;
aq3.FieldByName('试卷id').AsInteger:=cur_sjid;
aq3.FieldByName('用户id').AsInteger:=login.myid;
aq3.Post
*)
end
else
begin
messagebox(handle,'调试题库时出错','错误信息',MB_OK);
exit;
end;
aq1.SQL.Clear;
aq1.Close;
ssql:='';
ssql:='select 题号,题目,选项1,选项2,选项3,选项4,name,图片 from 用户作答表';
ssql:=ssql+',试题表,题型表 where 用户作答表.试卷号='+inttostr(sjid);
ssql:=ssql+' and 试题表.题型=题型表.id and 用户作答表.题号=试题表.试题号 order by 题型,分值';
aq1.SQL.Add(ssql);
aq1.Open;
if aq1.Eof then
begin
messagebox(handle,'调试题库时出错','错误信息',MB_OK);
exit;
end;
aq1.First;
cur_stid:=aq1.FieldValues['题号'];
ques.Text:=aq1.FieldValues['题目'];
tempstr:=aq1.FieldValues['name'];
label6.Caption:='当前题型:'+tempstr;
if ((tempstr='单选题')or(tempstr='多选题')or(tempstr='判断题')) then
begin
if(tempstr='单选题') then
begin
sim_sel.Visible:=true;
multi_sel.Visible:=false;
sim_sel.Items.Clear;
sim_sel.Items.Add(aq1.FieldValues['选项1']);
sim_sel.Items.Add(aq1.FieldValues['选项2']);
sim_sel.Items.Add(aq1.FieldValues['选项3']);
sim_sel.Items.Add(aq1.FieldValues['选项4']);
end;
if(tempstr='多选题') then
begin
sim_sel.Visible:=false;
multi_sel.Visible:=true;
multi_sel.Items.Clear;
multi_sel.Items.Add(aq1.FieldValues['选项1']);
multi_sel.Items.Add(aq1.FieldValues['选项2']);
multi_sel.Items.Add(aq1.FieldValues['选项3']);
multi_sel.Items.Add(aq1.FieldValues['选项4']);
end;
if(tempstr='判断题') then
begin
sim_sel.Visible:=false;
multi_sel.Visible:=true;
multi_sel.Items.Clear;
multi_sel.Items.Add(aq1.FieldValues['选项1']);
multi_sel.Items.Add(aq1.FieldValues['选项2'])
end
end
else
begin
sim_sel.Visible:=false;
multi_sel.Visible:=false;
end;
photostr:=aq1.FieldValues['图片'];
if (not fileexists(photostr)) then
begin
messagebox(handle,'加载题目所需图片时出错','错误信息',MB_OK);
exit
end
else
image1.Picture.LoadFromFile(photostr);
end;
button5.Click;
end;
procedure Ttest.Button5Click(Sender: TObject);
var tempstr,photostr:string;
begin
ans.Text:='';
button1.Enabled:=false;
button2.Enabled:=true;
//image1.Picture.Free;
if (main.DataModule2.AQ1.FindFirst) then
begin
main.DataModule2.AQ1.First ;
with main.DataModule2 do
begin
cur_stid:=aq1.FieldValues['题号'];
label7.Caption:=inttostr(cur_stid);
ques.Text:=aq1.FieldValues['题目'];
tempstr:=aq1.FieldValues['name'];
label6.Caption:='当前题型:'+tempstr;
cur_tx:=tempstr;
if ((tempstr='单选题')or(tempstr='多选题')or(tempstr='判断题')) then
begin
if(tempstr='单选题') then
begin
sim_sel.Visible:=true;
multi_sel.Visible:=false;
sim_sel.Items.Clear;
sim_sel.Items.Add(aq1.FieldValues['选项1']);
sim_sel.Items.Add(aq1.FieldValues['选项2']);
sim_sel.Items.Add(aq1.FieldValues['选项3']);
sim_sel.Items.Add(aq1.FieldValues['选项4']);
end;
if(tempstr='多选题') then
begin
sim_sel.Visible:=false;
multi_sel.Visible:=true;
multi_sel.Items.Clear;
multi_sel.Items.Add(aq1.FieldValues['选项1']);
multi_sel.Items.Add(aq1.FieldValues['选项2']);
multi_sel.Items.Add(aq1.FieldValues['选项3']);
multi_sel.Items.Add(aq1.FieldValues['选项4']);
end;
if(tempstr='判断题') then
begin
sim_sel.Visible:=false;
multi_sel.Visible:=true;
multi_sel.Items.Clear;
multi_sel.Items.Add(aq1.FieldValues['选项1']);
multi_sel.Items.Add(aq1.FieldValues['选项2'])
end
end
else
begin
sim_sel.Visible:=false;
multi_sel.Visible:=false;
end;
photostr:=aq1.FieldValues['图片'];
if ((not fileexists(photostr)) and (photostr<>'')) then
begin
messagebox(handle,'加载题目所需图片时出错','错误信息',MB_OK);
exit
end
else
image1.Picture.LoadFromFile(photostr);
end; //end of with
end; //end of if
end;
procedure Ttest.Button1Click(Sender: TObject);
var tempstr,photostr:string;
begin
ans.Text:='';
main.DataModule2.AQ1.Prior;
if main.DataModule2.AQ1.Bof then button1.Enabled:=false;
main.DataModule2.AQ1.Next;
if (main.DataModule2.AQ1.FindPrior) then
begin
// if main.DataModule2.AQ1.Bof then button1.Enabled:=false;
button2.Enabled:=true;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -