📄 unit1.~pas
字号:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, ADODB, StdCtrls, DBCtrls, Grids, DBGrids, ExtCtrls, jpeg;
type
TForm1 = class(TForm)
GroupBox1: TGroupBox;
GroupBox2: TGroupBox;
DBNavigator1: TDBNavigator;
DBGrid1: TDBGrid;
DBMemo1: TDBMemo;
RadioButton1: TRadioButton;
RadioButton2: TRadioButton;
ADOConnection1: TADOConnection;
ADOTable1: TADOTable;
ADOTable2: TADOTable;
DataSource1: TDataSource;
DataSource2: TDataSource;
GroupBox3: TGroupBox;
RadioButton3: TRadioButton;
RadioButton4: TRadioButton;
GroupBox4: TGroupBox;
Edit1: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Edit2: TEdit;
Label4: TLabel;
Label5: TLabel;
Edit3: TEdit;
Label6: TLabel;
ADODataSet1: TADODataSet;
Edit4: TEdit;
Label7: TLabel;
Label8: TLabel;
procedure RadioButton1Click(Sender: TObject);
procedure RadioButton4Click(Sender: TObject);
procedure Edit1Change(Sender: TObject);
procedure creatshijuan(Sender: TObject;var table1: TADOdataset;
var table2: TADOtable;total: integer;
probnum: integer);
procedure RadioButton2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Edit2Change(Sender: TObject);
procedure Edit3Change(Sender: TObject);
procedure RadioButton3Click(Sender: TObject);
procedure Edit4Change(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
xuanzetishu: integer;
panduantishu:integer;
tiankongtishu:integer;
nandu:integer;
examtotal: integer;
kemu:integer;
implementation
{$R *.dfm}
procedure TForm1.RadioButton1Click(Sender: TObject);
begin
kemu := 1;
end;
procedure TForm1.RadioButton2Click(Sender: TObject);
begin
kemu := 2;
end;
procedure tform1.creatshijuan(Sender: TObject;var table1: TADOdataset;
var table2: TADOtable;total: integer;
probnum: integer);
var
exam :array of integer;{试题数组}
problem :array of integer; {试卷数组}
i,j,k: integer;
begin
if((RadioButton1.Checked=false)and(RadioButton2.Checked=false)) then
showmessage('请选择科目')
else
begin
setlength(problem,total);
setlength(exam,probnum);
for i:=0 to total- 1 do
problem[i] := i+1;
for i:=0 to probnum-1 do
begin
j := random(total);
exam[i] := problem[j];
total := total-1;
for k:= j to total-1 do
problem[k]:=problem[k+1];
end;
for i:=0 to probnum-1 do
begin
Table1.First;
Table1.MoveBy(exam[i]) ;
ADOTable2.InsertRecord([
adodataset1.FieldValues['科目'],
adodataset1.FieldValues['题干'],
adodataset1.FieldValues['A'],
adodataset1.FieldValues['B'],
adodataset1.FieldValues['C'],
adodataset1.FieldValues['D'],
adodataset1.FieldValues['题型'],
adodataset1.FieldValues['正确答案'],
adodataset1.FieldValues['分值'],
adodataset1.FieldValues['难度']
]);
end;
end;
end;
procedure TForm1.RadioButton4Click(Sender: TObject);
var
m,n:integer;
begin
if((RadioButton1.Checked=false)and(RadioButton2.Checked=false)) then
showmessage('请选择科目')
else
begin
m:=ADOtable2.RecordCount;
if(m<>0)then
begin
for n:=1 to m do
ADOtable2.Delete;
end;
xuanzetishu :=0;
panduantishu :=0;
tiankongtishu :=0;
nandu :=0;
edit1.Clear;
edit2.Clear;
edit3.Clear;
edit4.Clear;
//生成试卷
end;
end;
procedure TForm1.Edit1Change(Sender: TObject);
begin
if edit1.Text = ''
then exit ;
xuanzetishu :=strtoint(edit1.Text);
if (xuanzetishu<0) or (xuanzetishu>20)
then
xuanzetishu := 10;
showmessage('将生成 '+
inttostr(xuanzetishu)+'条选择题' );
radiobutton3.Enabled :=true;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
xuanzetishu :=0;
panduantishu :=0;
tiankongtishu :=0;
radiobutton3.Enabled :=false;
//radiobutton4.Enabled :=false;
end;
procedure TForm1.Edit2Change(Sender: TObject);
begin
if edit2.Text = ''
then exit ;
tiankongtishu :=strtoint(edit2.Text);
if (tiankongtishu<0) or (tiankongtishu>20)
then
tiankongtishu := 10;
showmessage('将生成 '+
inttostr(tiankongtishu)+'条填空题' );
radiobutton3.Enabled :=true;
end;
procedure TForm1.Edit3Change(Sender: TObject);
begin
if edit3.Text = ''
then exit ;
panduantishu :=strtoint(edit3.Text);
if ( panduantishu<0) or ( panduantishu>20)
then
panduantishu := 10;
showmessage('将生成 '+
inttostr( panduantishu)+'条判断题' );
radiobutton3.Enabled :=true;
end;
procedure TForm1.RadioButton3Click(Sender: TObject);
begin
adotable2.Active := true;
if adotable2.RecordCount <>0 then
begin
showmessage('先清空原试卷');
exit;
end;
adodataset1.Active := false;
adodataset1.CommandText := 'select * from alltest where 科目 = '+inttostr(kemu)+' and 题型 = ''选择题'' and 难度 = '+inttostr(nandu)+' ';
adodataset1.Active:= true;
form1.creatshijuan(self,adodataset1,adotable2,adodataset1.RecordCount,xuanzetishu);
adodataset1.Active := false;
adodataset1.CommandText := 'select * from alltest where 科目 = '+inttostr(kemu)+' and 题型 = ''判断题'' and 难度 = '+inttostr(nandu)+'';
adodataset1.Active:= true;
form1.creatshijuan(self,adodataset1,adotable2,adodataset1.RecordCount,panduantishu);
adodataset1.Active := false;
adodataset1.CommandText := 'select * from alltest where 科目 = '+inttostr(kemu)+' and 题型 = ''填空题'' and 难度 = '+inttostr(nandu)+'';
adodataset1.Active:= true;
form1.creatshijuan(self,adodataset1,adotable2,adodataset1.RecordCount,tiankongtishu);
end;
procedure TForm1.Edit4Change(Sender: TObject);
begin
if edit4.Text = ''
then exit ;
nandu :=strtoint(edit4.Text);
if ( nandu<0) or ( nandu>3)
then
panduantishu := 2;
showmessage('将生成难度为 '+
inttostr( nandu)+'的题' );
radiobutton3.Enabled :=true;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -