⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unit1.~pas

📁 Delphi实现的自动生成试卷源代码
💻 ~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 + -