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

📄 u_main.pas

📁 《机动车驾驶员模拟考试系统2008》软件全面、准确地包含了公安部2007年4月1日新发布的全国统一题库
💻 PAS
📖 第 1 页 / 共 2 页
字号:
unit U_Main;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls, PDJ_XPC, DB, ADODB, FlatBoxs, FlatUtils,
  FlatBtns, DBCtrls, FlatPanel,jpeg, Grids, DBGrids, PDJ_XPB, PDJ_XPDBC,
  PDJ_XPDBG, OleCtrls, SHDocVw, InvokeRegistry, SOAPHTTPDisp,
  WebBrokerSOAP, DBClient, SOAPConn, SOAPDomConv, OPToSOAPDomConv,
  SOAPHTTPTrans, Rio, SOAPHTTPClient,shellapi;

type
  TFrm_Main = class(TForm)
    Image1: TImage;
    ADOConnection1: TADOConnection;
    ADOQuery1: TADOQuery;
    DsTest: TDataSource;
    ADOQuery2: TADOQuery;
    Timer1: TTimer;
    DBText1: TDBText;
    lblfeek: TLabel;
    DBText2: TDBText;
    gupBoxCheck: TFlatGroupBox;
    ChkA: TFlatCheckBox;
    ChkB: TFlatCheckBox;
    ChkC: TFlatCheckBox;
    ChkD: TFlatCheckBox;
    Label6: TLabel;
    FlatPanel1: TFlatPanel;
    DBNavigator1: TDBNavigator;
    lblCount: TLabel;
    lblright: TLabel;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Pic: TImage;
    Panel1: TPanel;
    Btn_xzst: TButton;
    Btn_charu: TButton;
    Button1: TButton;
    Btn_Pic: TButton;
    Btn_A2B2: TButton;
    Btn_C14: TButton;
    Btn_M: TButton;
    CbB_ID: TComboBox;
    CbB_YxID: TComboBox;
    DBTextA: TDBText;
    DBTextB: TDBText;
    DBTextC: TDBText;
    DBTextD: TDBText;
    BtnEnd: TPDJXPButton;
    Btn_Exit: TPDJXPButton;
    DBMemo1: TPDJXPDBMemo;
    DBGrid2: TPDJXPDBGrid;
    Panel2: TPanel;
    Label5: TLabel;
  //  function GetWebPage(const Url: string):string;
    procedure Btn_charuClick(Sender: TObject);
    function  GetKaoshi(s:string;Position:integer):string;
    function  GetMaskString(s,Mask:string;Position:integer):string;
    procedure Btn_xzstClick(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure ADOQuery1AfterScroll(DataSet: TDataSet);
    procedure ADOQuery1BeforeScroll(DataSet: TDataSet);
    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
    procedure ChkAClick(Sender: TObject);
    procedure ChkBClick(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure Btn_PicClick(Sender: TObject);
    procedure DBNavigator1Click(Sender: TObject; Button: TNavigateBtn);
    procedure Btn_A2B2Click(Sender: TObject);
    procedure Btn_C14Click(Sender: TObject);
    procedure Btn_MClick(Sender: TObject);
    procedure Btn_ExitClick(Sender: TObject);
    procedure BtnEndClick(Sender: TObject);
    procedure DBGrid2DrawColumnCell(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumn; State: TGridDrawState);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure Label5Click(Sender: TObject);
  //  procedure DBMemo1Change(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
  //考生信息
Type student=Record
       Name:string[8];     //姓名
       MyClass:string[4];  //班级
       TestPaper:string;    //试卷
       Score:Integer;       //得分
       Feedback:string[1];     //反馈否
       BeginTime:string;    //开始时间
       ExamTime:integer;     //考试时间
       bk:integer;          //补考次数
end;
//考生答案
Type answer=Record
       standard:string[4];     //标准答案
       examinee:string[4];  //考生答案
       result:integer;    //正确否
end;

var
  Frm_Main: TFrm_Main;
  stu:student;
  ans:array of answer;
  countDown:integer;
  examCount:integer;
  //拖动无标题窗口
   Opos, Cpos: Tpoint;
   Flag: boolean = false;
implementation

uses U_DM, U_Login;


{$R *.dfm}
{
var
  i: integer;
  a: array[1..20000] of integer;
  b: array[1..20000] of integer;
  j,k: integer;
  Loop: boolean;
begin
       Randomize;
       //a号码     10位数字
 for j := 1 to 200000 do
  begin
    Loop := true;
    while (Loop) do begin
      i := Random(999999999999999999);
      for k := 1 to j do if (i=a[j-1]) or (length(inttostr(i))<>10) then begin
        Loop := False;
        Break;
      end;
      if (Loop) then begin
        a[j] := i;
        Loop := False;
      end else Loop := True;
    end;
  end;
}

//打开网页
{function TFrm_Main.GetWebPage(const Url: string):string;
var
 Session,
 HttpFile:HINTERNET;
 szSizeBuffer:Pointer;
 dwLengthSizeBuffer:DWord;
 dwReserved:DWord;
 dwFileSize:DWord;
 dwBytesRead:DWord;
 Contents:PChar;
begin
 Session:=InternetOpen('',0,niL,niL,0);
 HttpFile:=InternetOpenUrl(Session,PChar(Url),niL,0,0,0);
 dwLengthSizeBuffer:=1024;
 HttpQueryInfo(HttpFile,5,szSizeBuffer,dwLengthSizeBuffer,dwReserved);
 GetMem(Contents,dwFileSize);
 InternetReadFile(HttpFile,Contents,dwFileSize,dwBytesRead);
 InternetCloseHandle(HttpFile);
 InternetCloseHandle(Session);
 Result:=StrPas(Contents);
 FreeMem(Contents);
end;  }


function  TFrm_Main.GetMaskString(s,Mask:string;Position:integer):string;
var
  str:string;
  i,Len:integer;
begin
   str:='';
   for i:=0 to Position - 1 do
     begin
        if (Pos(Mask,s)<=0) then
           begin
             str:=s;
             Break;
           end;
        str:=Copy(s,1,(pos(Mask,s) -1));
        Len:=Length(str);
        s:=Copy(s,Len + 2,Length(s) - Len - 1);
     end;
   Result:=str;
end;

function  TFrm_Main.GetKaoshi(s:string;Position:integer):string;
var
SchID,aStr:String;
a: array[1..20000] of integer;
Total,Range,j,I,k:Integer;
Loop: boolean;
begin
 //清除数据
  CbB_ID.Items.Clear;
 // CbB_YxID.Items.Clear;
   //选出试题
       begin
         SqlStr:='SELECT intNumber,strTppe FROM tblExamInfo';
         SqlStr:=SqlStr+' WHERE 1=1 ';
         SqlStr:=SqlStr+' and  strTppe='+''''+trim(s)+'''';
         DM.ExecSql(DM.Qry,SqlStr,True);

         ///添加判断语句
  with DM.Qry do
       begin
         First;
         while Not Eof do
               begin
                 //插入试题
                 aStr:=Trim(Fields[0].AsString);
                 aStr:=aStr+'^'+Trim(Fields[1].AsString);
                 CbB_ID.Items.Add(aStr);
                 //移动记录
                 Next;
               end;

       end;
 
  //试题总数
  Total:=CbB_ID.Items.Count;
 //选取范围
  Range:=Total;
  Randomize;
       //确定试题数量
 for j := 1 to Position do
  begin
    Loop := true;
    while (Loop) do begin
      I := Random(Range);
      for k := 1 to j do if i=a[j-1] then begin
        Loop := False;
        Break;
      end;
      if (Loop) then begin
        //被选中的试题
          SchID:=CbB_ID.Items[I];
          //加入已选列表
          CbB_YxID.Items.Add(SchID);
        a[j] := i;
        Loop := False;
      end else Loop := True;
    end;
  end;
 end;
end;

procedure TFrm_Main.Btn_charuClick(Sender: TObject);
var
N,S:Integer;
begin
//// ALTER TABLE [user] ALTER COLUMN [id] COUNTER (1, 1)

   //删除试题
       begin
         SqlStr:='DELETE FROM ExamInfo';
         SqlStr:=SqlStr+' WHERE 1=1 ';
         DM.ExecSql(DM.Qry,SqlStr,False);
         SqlStr:='ALTER TABLE  ExamInfo';
         SqlStr:=SqlStr+' ALTER COLUMN  ID COUNTER (1, 1)';
         DM.ExecSql(DM.Qry,SqlStr,False);
       end;
          N:=CbB_YxID.Items.Count;
              for S:=0 to N-1 do
                 begin
                     //插入已选试题
                   SqlStr:='INSERT INTO ExamInfo(QuestionID,intNumber,strTppe,strType_l,strType_x,strQuestion,strA,strB,strC,strD,';
                   SqlStr:=SqlStr+' strRight_answer,pic,Hint,strYour_answer,chengji,intAll,strPage,AID,BID,CID,DEID,typeA,typeB,typeC,typeE)';
                   SqlStr:=SqlStr+'SELECT  QuestionID,intNumber,strTppe,strType_l,strType_x,strQuestion,strA,strB,strC,strD,';
                   SqlStr:=SqlStr+' strRight_answer,pic,Hint,strYour_answer,chengji,intAll,strPage,AID,BID,CID,DEID,typeA,typeB,typeC,typeE';
                   SqlStr:=SqlStr+' FROM  tblExamInfo';
                   SqlStr:=SqlStr+' WHERE 1=1 ';
                   SqlStr:=SqlStr+' AND  intNumber='+''''+GetMaskString(Trim(CbB_YxID.Items[S]),'^',1)+'''';  //GetMaskString(Trim(CbB_YxID.Items[S]),'^',1)
                   SqlStr:=SqlStr+' AND  strTppe='+''''+GetMaskString(Trim(CbB_YxID.Items[S]),'^',2)+'''';
                   SqlStr:=SqlStr+' ORDER BY  intNumber';
                   DM.ExecSql(DM.Qry,SqlStr,False);
                 end;
              //   showmessage('成功插入');                       

end;

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

procedure TFrm_Main.Button1Click(Sender: TObject);
begin
 //运行
 with ADOQuery1  do
      begin
      // stu.TestPaper:='ExamInfo';
       stu.Score:=0;
      // stu.Feedback:='45';
       stu.ExamTime:=45;
      stu.BeginTime:=TimeToStr(Now);


      //取题目
      close;
      sql.clear;
      sql.Add('select * from ExamInfo order by ID');
      open;

      DBMemo1.DataSource:=DsTest;
      //DBMemoA.DataSource:=DsTest;
      //DBMemoB.DataSource:=DsTest;
     // DBMemoC.DataSource:=DsTest;
     // DBMemoD.DataSource:=DsTest;
      DBText1.DataSource:=DsTest;
      DBText1.DataField:='ID';
      DBText2.DataSource:=DsTest;
      DBText2.DataField:='strRight_answer';

      //倒计时,开考

⌨️ 快捷键说明

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