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

📄 u_main.pas

📁 《机动车驾驶员模拟考试系统2008》软件全面、准确地包含了公安部2007年4月1日新发布的全国统一题库
💻 PAS
📖 第 1 页 / 共 2 页
字号:
      countdown:=stu.ExamTime;
      Timer1.Enabled:=true;
      lblCount.Caption:=inttostr(countdown);

      //根据题量设置考生答案的数组大小
     // examCount:=RecordCount;
       examCount:=100;
      SetLength(ans,examCount+1);

      first;
      end;
end;

procedure TFrm_Main.Timer1Timer(Sender: TObject);
begin
   dec(countdown);
    lblCount.Caption:=inttostr(countdown);
if countdown<=0 then
  begin
  //禁止答卷并自动评分与交卷
  Timer1.Enabled:=false;
  BtnEnd.Click;
  end
else
  if  countdown=5 then
    begin
    lblCount.Font.Color:=clred;
    Application.MessageBox('离考试结束还有5分钟', '信息', 64+ MB_TASKMODAL)
    end;
end;

procedure TFrm_Main.ADOQuery1AfterScroll(DataSet: TDataSet);
var
  num:integer;
begin
Label6.Visible:=false;
//考试是否已开始
if (timer1.Enabled) or (BtnEnd.Caption<>'交卷') then
  begin
  with ADOQuery1 do
    begin
    num:=FieldByName('ID').Value;
    //如果无考生答案显示未作答
    if ans[num].examinee=''  then  Label6.Visible:=true;
     ChkA.checked:=false;
     ChkB.checked:=false;
     ChkC.checked:=false;
     ChkD.checked:=false;
    if FieldValues['strType_x']='判断题' then
      begin
        gupBoxCheck.Visible:=true;
        ChkA.Caption:='对';
        ChkB.Caption:='错';
        ChkC.Visible:=false;
        ChkD.Visible:=false;
        Label1.Visible:=false;
        Label2.Visible:=false;
        Label3.Visible:=false;
        Label4.Visible:=false;
       // DBMemoA.Visible:=false;
       // DBMemoB.Visible:=false;
       // DBMemoC.Visible:=false;
       // DBMemoD.Visible:=false;
        //根据存储的考生答案还原选区
        if ans[num].examinee='对' then
           ChkA.checked:=true
        else
           if ans[num].examinee='错' then
           ChkB.checked:=true;
      end
    else
      if FieldValues['strType_x']='选择题' then
        begin
          gupBoxCheck.Visible:=true;
          ChkA.Caption:='A';
          ChkB.Caption:='B';
          ChkC.Visible:=true;
          ChkD.Visible:=true;
          if pos('A',ans[num].examinee)<>0 then  ChkA.Checked:=true;
          if pos('B',ans[num].examinee)<>0 then  ChkB.Checked:=true;
          if pos('C',ans[num].examinee)<>0 then  ChkC.Checked:=true;
          if pos('D',ans[num].examinee)<>0 then  ChkD.Checked:=true;
          Label1.Visible:=true;
          Label2.Visible:=true;
          Label3.Visible:=true;
          Label4.Visible:=true;
        //  DBMemoA.Visible:=true;
        //  DBMemoB.Visible:=true;
        //  DBMemoC.Visible:=true;
       //   DBMemoD.Visible:=true;
        end;
    end;
  end;
if (BtnEnd.Caption<>'交卷') then
  begin
  lblright.Caption:='   ';
  //反馈正确否
  if (gupBoxCheck.Visible) and (DBText2.Visible)  then
    if  (ans[num].standard=ans[num].examinee) and (ans[num].examinee<>'') then
      lblright.Caption:='√'
    else
      lblright.Caption:='×';
  end;

end;

procedure TFrm_Main.ADOQuery1BeforeScroll(DataSet: TDataSet);
var
  num:integer;
  tmp:string;
begin
//考试开始后,当记录移动前将考生答案写入数组中
if timer1.Enabled then
  begin
  with ADOQuery1 do
    begin
    num:=FieldByName('ID').Value;
    tmp:='';
    ans[num].result:=0;
      if FieldValues['strType_x']='选择题' then
        begin
        if chkA.Checked then tmp:='A';
        if chkB.Checked then tmp:=tmp+'B';
        if chkC.Checked then tmp:=tmp+'C';
        if chkD.Checked then tmp:=tmp+'D';
        end
      else
        begin
        if chkA.Checked then tmp:='对';
        if chkB.Checked then tmp:='错';
        end;

      ans[num].examinee:=tmp;

      //记录标准答案
      ans[num].standard:=trim(FieldValues['strRight_answer']);
      //正确否
      if ans[num].standard=ans[num].examinee then  ans[num].result:=1;
    end;
  end;

end;

procedure TFrm_Main.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
if timer1.Enabled then
  Begin
   Application.MessageBox('交卷后才能退出考试系统', '信息', 64+ MB_TASKMODAL);
   CanClose:=false;
  end;
end;

procedure TFrm_Main.ChkAClick(Sender: TObject);
begin
  if (chkA.Caption='对') and chkB.Checked and (chkA.Checked=false) then  chkB.Checked :=false;
end;

procedure TFrm_Main.ChkBClick(Sender: TObject);
begin
  if (chkB.Caption='错') and (chkA.Checked) and (chkB.Checked=false) then  chkA.Checked :=false;
end;

procedure TFrm_Main.FormShow(Sender: TObject);
begin
  //Btn_xzstClick(Sender);
 // Btn_charuClick(Sender);
 // Button1Click(Sender);
  //Button1Click(Sender);
  //Btn_PicClick(Sender);
end;

procedure TFrm_Main.Btn_PicClick(Sender: TObject);
var
  Path:String;
begin
      SqlStr:='SELECT pic FROM ExamInfo';
      SqlStr:=SqlStr+' WHERE 1=1 ';
      SqlStr:=SqlStr+' and  ID='+trim(DBText1.Caption);
      DM.ExecSql(DM.Qry,SqlStr,True);
     if length(DM.Qry.fieldbyname('pic').AsString) > 2 then
        begin
          Path:=ExtractFilePath(Application.ExeName);
          Path:=Path+Trim(DM.Qry.fieldbyname('pic').AsString);
     //加载图片
         try
           Pic.Picture.LoadFromFile(Path);
         except
           Pic.Picture:=NIL;
         end;
         end
         else
           Pic.Picture:=NIL;
end;

procedure TFrm_Main.DBNavigator1Click(Sender: TObject;
  Button: TNavigateBtn);
begin
  Btn_PicClick(Sender);
end;

procedure TFrm_Main.Btn_A2B2Click(Sender: TObject);
begin
   CbB_YxID.Items.Clear;
   GetKaoshi('道路交通安全法律、法规和规章',25);
   GetKaoshi('交通信号及其含义',15);
   GetKaoshi('道路交通信号及含义',5);
   GetKaoshi('安全行车、文明驾驶知识',20);
   GetKaoshi('高速公路、山区道路、桥梁、隧道、夜间、恶劣气象和复杂道路条件下的安全驾驶知识',10);
   GetKaoshi('出现爆胎、转向失控、制动失灵等紧急情况时临危处置知识',10);
   GetKaoshi('机动车总体构造和主要安全装置常识,日常检查和维护基本知识',5);
   GetKaoshi('发生交通事故后的自救、急救等基本知识,以及常见危险化学品等知识',5);
   GetKaoshi('货车专用试题',5);
end;

procedure TFrm_Main.Btn_C14Click(Sender: TObject);
begin
   CbB_YxID.Items.Clear;
   GetKaoshi('道路交通安全法律、法规和规章',25);
   GetKaoshi('交通信号及其含义',20);
   GetKaoshi('道路交通信号及含义',5);
   GetKaoshi('安全行车、文明驾驶知识',20);
   GetKaoshi('高速公路、山区道路、桥梁、隧道、夜间、恶劣气象和复杂道路条件下的安全驾驶知识',10);
   GetKaoshi('出现爆胎、转向失控、制动失灵等紧急情况时临危处置知识',10);
   GetKaoshi('机动车总体构造和主要安全装置常识,日常检查和维护基本知识',5);
   GetKaoshi('发生交通事故后的自救、急救等基本知识,以及常见危险化学品等知识',5);
end;

procedure TFrm_Main.Btn_MClick(Sender: TObject);
begin
   CbB_YxID.Items.Clear;
   GetKaoshi('道路交通安全法律、法规和规章',25);
   GetKaoshi('交通信号及其含义',15);
   GetKaoshi('道路交通信号及含义',5);
   GetKaoshi('安全行车、文明驾驶知识',20);
   GetKaoshi('高速公路、山区道路、桥梁、隧道、夜间、恶劣气象和复杂道路条件下的安全驾驶知识',10);
   GetKaoshi('出现爆胎、转向失控、制动失灵等紧急情况时临危处置知识',10);
   GetKaoshi('机动车总体构造和主要安全装置常识,日常检查和维护基本知识',5);
   GetKaoshi('发生交通事故后的自救、急救等基本知识,以及常见危险化学品等知识',5);
   GetKaoshi('轮式自行机械车专用试题',5);
end;

procedure TFrm_Main.Btn_ExitClick(Sender: TObject);
begin
//退出系统
  close;
//WebBrowser1.Navigate('http://www.fuwuabc.cn/adb.htm');
//application.Terminate;
end;

procedure TFrm_Main.BtnEndClick(Sender: TObject);
var
  tmp:string; //未答题题号
  i:integer;
 //机名
  ComputerName:string;
  CNameBuffer : PChar;
  fl_loaded : Boolean;
  CLen : ^DWord;
begin

if BtnEnd.Caption<>'交卷' then
  abort;
//检查未答题
ADOQuery1.Last;
ADOQuery1.First;
for i:=1 to high(ans) do
  if ans[i].examinee='' then  tmp:=tmp+trim(inttostr(i))+'-';
tmp:=copy(tmp,1,strlen(pchar(tmp))-1);

if Timer1.Enabled then  // 自愿收卷   先提示有无未答题
  begin
  //如检查有未答题,则提示
  if (tmp<>'') and (Application.MessageBox(pchar('还有'+tmp+'题未作答,是否立即交卷?'), '信息', 32+4)=7) then
    abort;
  //如检查无未答题
  if (tmp='') and(Application.MessageBox('是否立即交卷?', '信息', 32+4)=7) then
    abort;
  end;
Timer1.Enabled:=false;
stu.Score:=0; //得分初始化
gupBoxCheck.Enabled:=false; //禁止答题
lblCount.Font.Color:=clRed;
//收卷
  for i:=1 to high(ans) do
    stu.Score:=stu.Score+ans[i].result;
  //显示得分
  BtnEnd.caption:='得分:'+inttostr(stu.Score);
  Application.MessageBox(pchar('得分:'+inttostr(stu.Score)), '信息', 64);
  //反馈
  //if stu.Feedback='1' then
   // begin
    lblfeek.visible:=true;
    lblright.visible:=true;
    DBText2.visible:=true;
  //  end;

    GetMem(CNameBuffer,255);
    New(CLen);
    CLen^:= 255;

    fl_loaded := GetComputerName(CNameBuffer,CLen^);
    if fl_loaded then
      ComputerName:= StrPas(CNameBuffer)
    else
      ComputerName:= 'Unkown';
    FreeMem(CNameBuffer,255);
    Dispose(CLen);

end;

procedure TFrm_Main.DBGrid2DrawColumnCell(Sender: TObject;
  const Rect: TRect; DataCol: Integer; Column: TColumn;
  State: TGridDrawState);
begin
Btn_PicClick(Sender);
end;

procedure TFrm_Main.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  application.Terminate;
  shellexecute(handle,'open','http://www.fuwuabc.cn',nil,nil,SW_show);
end;

procedure TFrm_Main.Label5Click(Sender: TObject);
begin
  shellexecute(handle,'open','mailto:sms@fuwuabc.com',nil,nil,SW_show);
end;

end.





⌨️ 快捷键说明

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