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

📄 onexam.pas

📁 Delphi的在线考试系统
💻 PAS
字号:
unit OnExam;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, DB, ADODB, Grids, DBGrids, StdCtrls;

type
  TExamForm = class(TForm)
    Label1: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    ComboBox1: TComboBox;
    Button1: TButton;
    Button2: TButton;
    ComboBox2: TComboBox;
    Memo2: TMemo;
    Edit2: TEdit;
    GroupBox1: TGroupBox;
    DBGrid1: TDBGrid;
    GroupBox2: TGroupBox;
    Memo1: TMemo;
    DataSource1: TDataSource;
    ADOQuery1: TADOQuery;
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure ComboBox1Change(Sender: TObject);
    procedure DataSource1DataChange(Sender: TObject; Field: TField);
    procedure FormCreate(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  ExamForm: TExamForm;

implementation
 uses DataModule, logindlg;
{$R *.dfm}

procedure TExamForm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
action:=cafree;
end;

procedure TExamForm.ComboBox1Change(Sender: TObject);
begin
    if combobox1.ItemIndex=0 then begin //选择题
    adoquery1.Close;
    adoquery1.SQL.Clear;
    adoquery1.SQL.Text:='select * from 题库 where 题型=''选择题''';
    adoquery1.Open;
    edit2.Text:=InttoStr(adoquery1.fieldbyname('分值').AsInteger);
    memo1.Text:=adoquery1.fieldbyname('题干').AsString;
    combobox2.Visible:=true;
    memo2.Visible:=false;

    end else if combobox1.ItemIndex=1 then begin
    adoquery1.Close;
    adoquery1.SQL.Clear;
    adoquery1.SQL.Text:='select * from 题库 where 题型=''填空题''';
    adoquery1.Open;
    edit2.Text:=InttoStr(adoquery1.fieldbyname('分值').AsInteger);
    memo1.Text:=adoquery1.fieldbyname('题干').AsString;
    memo2.Visible:=true;
    combobox2.Visible:=false;
     end else if combobox1.ItemIndex=2   then begin
     adoquery1.Close;
    adoquery1.SQL.Clear;
    adoquery1.SQL.Text:='select * from 题库 where 题型=''问答题''';
    adoquery1.Open;
    edit2.Text:=InttoStr(adoquery1.fieldbyname('分值').AsInteger);
    memo1.Text:=adoquery1.fieldbyname('题干').AsString;
    memo2.Visible:=true;
    combobox2.Visible:=false;
    end;
end;

procedure TExamForm.DataSource1DataChange(Sender: TObject; Field: TField);
var  query:TADOQuery;
number:string;
tihao:string;
answer:string;
begin
    edit2.Text:=adoquery1.fieldbyname('分值').AsString;
    memo1.Text:=trim(adoquery1.Fieldbyname('题干').AsString);
    tihao:=adoquery1.fieldbyname('小题题号').AsString;
    number:=trim(Login.quanxiang);

    query := TADOQuery.Create(nil);
    query.Connection := Data.Connection;
    query.Close;
    query.SQL.Clear;


    if combobox1.ItemIndex=0 then begin
       query.SQL.Text:='select 答案 from 详细成绩表 where 准考证号 ='''+number+''' and 题型 = ''选择题'''+
                   ' and 小题题号 ='+ tihao+'';
       query.Open;
       if query.Recordset.RecordCount <> 0 then begin
          answer:=trim(query.fieldbyname('答案').AsString);
       if answer='A' then
        combobox2.ItemIndex:=0
       else if answer='B' then
        combobox2.ItemIndex:=1
       else if answer='C' then
         combobox2.ItemIndex:=2
       else if answer='D' then
       combobox2.ItemIndex:=3
       else
        combobox2.ItemIndex:=-1;

       end else combobox2.ItemIndex:=-1;

    end else if combobox1.ItemIndex=1 then begin
      query.SQL.Text:='select 答案 from 详细成绩表 where 准考证号 ='''+number+''' and 题型 = ''填空题'''+
                   ' and 小题题号 ='+ tihao+'';
       query.Open;
       answer:='';
       if query.Recordset.RecordCount <> 0 then begin
          answer:=trim(query.fieldbyname('答案').AsString);
       end;
       memo2.Text:=answer;

    end else if combobox1.ItemIndex=2 then begin
       query.SQL.Text:='select 答案 from 详细成绩表 where 准考证号 ='''+number+''' and 题型 = ''问答题'''+
                   ' and 小题题号 ='+ tihao+'';
       query.Open;
       answer:='';
       if query.Recordset.RecordCount <> 0 then begin
          answer:=trim(query.fieldbyname('答案').AsString);
       end;
       memo2.Text:=answer;
    end;


    
end;

procedure TExamForm.FormCreate(Sender: TObject);
begin
    DBGrid1.Columns[0].FieldName:='小题题号';
end;

procedure TExamForm.Button2Click(Sender: TObject);
begin
     memo2.Clear;
     combobox2.ItemIndex:=-1;
end;

procedure TExamForm.Button1Click(Sender: TObject);
var number:string;
    tihao:string;
    answer:string;
    query:TADOQuery;
    query1:TADOQuery;
begin
    number:=trim(Login.quanxiang);
    tihao:=adoquery1.fieldbyname('小题题号').AsString;

    query1 := TADOQuery.Create(nil);
    query1.Connection := Data.Connection;
    query1.Close;
    query1.SQL.Clear;

    query := TADOQuery.Create(nil);
    query.Connection := Data.Connection;
    query.Close;
    query.SQL.Clear;

    if combobox1.ItemIndex=0 then begin //选择题
             answer:=trim(combobox2.Text);

        query.SQL.Text:='select 答案 from 详细成绩表 where 准考证号 ='''+number+''' and 题型 = ''选择题'''+
                   ' and 小题题号 ='+ tihao+'';
       query.Open;
       if query.Recordset.RecordCount <> 0 then begin
             query.SQL.Text:='update 详细成绩表 set  答案 =''' +answer+''' where 准考证号 ='''+number+''' and 题型 = ''选择题'''+
                   ' and 小题题号 ='+ tihao+'';
             end else begin
             query.SQL.Text:='insert into 详细成绩表(准考证号,题型,小题题号,答案,得分) values ('''+number+
                              ''',''选择题'','+tihao+','''+answer+''','+'0'+')';
              end;
             try
               query.ExecSQL;
             except
               MessageBox(handle, '错误', '提示',  mb_IconWarning + mb_Ok);
             exit;
             end;
             MessageBox(handle, '解答成功', '提示',  mb_IconWarning + mb_Ok);

     end else if combobox1.ItemIndex=1   then begin

         answer:=trim(memo2.Text);

        query.SQL.Text:='select 答案 from 详细成绩表 where 准考证号 ='''+number+''' and 题型 = ''填空题'''+
                   ' and 小题题号 ='+ tihao+'';
       query.Open;
       if query.Recordset.RecordCount <> 0 then begin
             query.SQL.Text:='update 详细成绩表 set  答案 =''' +answer+''' where 准考证号 ='''+number+''' and 题型 = ''填空题'''+
                   ' and 小题题号 ='+ tihao+'';
             end else begin
             query.SQL.Text:='insert into 详细成绩表(准考证号,题型,小题题号,答案,得分) values ('''+number+
                              ''',''填空题'','+tihao+','''+answer+''','+'0'+')';
              end;
             try
               query.ExecSQL;
             except
               MessageBox(handle, '错误', '提示',  mb_IconWarning + mb_Ok);
             exit;
             end;
             MessageBox(handle, '解答成功', '提示',  mb_IconWarning + mb_Ok);

     end else if combobox1.ItemIndex=2   then begin

     answer:=trim(memo2.Text);

        query.SQL.Text:='select 答案 from 详细成绩表 where 准考证号 ='''+number+''' and 题型 = ''问答题'''+
                   ' and 小题题号 ='+ tihao+'';
       query.Open;
       if query.Recordset.RecordCount <> 0 then begin
             query.SQL.Text:='update 详细成绩表 set  答案 =''' +answer+''' where 准考证号 ='''+number+''' and 题型 = ''问答题'''+
                   ' and 小题题号 ='+ tihao+'';
             end else begin
             query.SQL.Text:='insert into 详细成绩表(准考证号,题型,小题题号,答案,得分) values ('''+number+
                              ''',''问答题'','+tihao+','''+answer+''','+'0'+')';
              end;
             try
               query.ExecSQL;
             except
               MessageBox(handle, '错误', '提示',  mb_IconWarning + mb_Ok);
             exit;
             end;
             MessageBox(handle, '解答成功', '提示',  mb_IconWarning + mb_Ok);

     end;

end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -