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

📄 client_bendi_datamodule.pas

📁 证券公司考试系统,三层架构,从题库自动产生试卷,全部主观题
💻 PAS
📖 第 1 页 / 共 2 页
字号:
unit Client_BenDi_DataModule;

interface

uses
  SysUtils, Classes, DB, ADODB,QGraphics;


type
  TClient_DataModule = class(TDataModule)
    Client_ADOConnection: TADOConnection;
    Select_Subject_Table_Insert: TADOQuery;
    DanXuan_Subject_Table: TADOTable;
    DuoXuan_Subject_Table: TADOTable;
    PanDuan_Subject_Table: TADOTable;
    DuoXuan_Subject_TableID: TIntegerField;
    DuoXuan_Subject_TableStyle: TWideStringField;
    DuoXuan_Subject_TableContent: TWideStringField;
    DuoXuan_Subject_TableA_option: TWideStringField;
    DuoXuan_Subject_TableB_option: TWideStringField;
    DuoXuan_Subject_TableC_option: TWideStringField;
    DuoXuan_Subject_TableD_option: TWideStringField;
    DuoXuan_Subject_TableE_option: TWideStringField;
    DuoXuan_Subject_TableF_option: TWideStringField;
    DuoXuan_Subject_TableA_Select: TBooleanField;
    DuoXuan_Subject_TableB_Select: TBooleanField;
    DuoXuan_Subject_TableC_Select: TBooleanField;
    DuoXuan_Subject_TableD_Select: TBooleanField;
    DuoXuan_Subject_TableE_Select: TBooleanField;
    DuoXuan_Subject_TableF_Select: TBooleanField;
    DuoXuan_Subject_TableSelect_Subject_value: TFloatField;
    DuoXuan_Subject_TableKey_value: TIntegerField;
    PanDuan_Subject_TableID: TIntegerField;
    PanDuan_Subject_TableStyle: TWideStringField;
    PanDuan_Subject_TableContent: TWideStringField;
    PanDuan_Subject_TableA_Select: TBooleanField;
    PanDuan_Subject_TableB_Select: TBooleanField;
    PanDuan_Subject_TableSelect_Subject_value: TFloatField;
    PanDuan_Subject_TableKey_value: TIntegerField;
    DanXuan_DS: TDataSource;
    DuoXuan_DS: TDataSource;
    PanDuan_DS: TDataSource;
    DanXuan_Subject_TableID: TIntegerField;
    DanXuan_Subject_TableStyle: TWideStringField;
    DanXuan_Subject_TableContent: TWideStringField;
    DanXuan_Subject_TableA_option: TWideStringField;
    DanXuan_Subject_TableB_option: TWideStringField;
    DanXuan_Subject_TableC_option: TWideStringField;
    DanXuan_Subject_TableD_option: TWideStringField;
    DanXuan_Subject_TableE_option: TWideStringField;
    DanXuan_Subject_TableF_option: TWideStringField;
    DanXuan_Subject_TableA_Select: TBooleanField;
    DanXuan_Subject_TableB_Select: TBooleanField;
    DanXuan_Subject_TableC_Select: TBooleanField;
    DanXuan_Subject_TableD_Select: TBooleanField;
    DanXuan_Subject_TableE_Select: TBooleanField;
    DanXuan_Subject_TableF_Select: TBooleanField;
    DanXuan_Subject_TableSelect_Subject_value: TFloatField;
    DanXuan_Subject_TableKey_value: TIntegerField;
    DanXuan_Subject_TableSubject_ID: TIntegerField;
    DanXuan_Subject_TableFlag: TBooleanField;
    DuoXuan_Subject_TableSubject_ID: TIntegerField;
    DuoXuan_Subject_TableFlag: TBooleanField;
    PanDuan_Subject_TableSubject_ID: TIntegerField;
    PanDuan_Subject_TableFlag: TBooleanField;
    DanXuan_Subject_TableDifficulty: TWideStringField;
    DuoXuan_Subject_TableDifficulty: TWideStringField;
    PanDuan_Subject_TableDifficulty: TWideStringField;
    Select_Subject_Table_Update: TADOQuery;
    Select_Subject_Table_Delete: TADOQuery;
    Function Calculate_Key_Value(A_option,B_option,C_option,D_option,E_option,F_option:Boolean):string;
    procedure DuoXuan_Subject_TableAfterScroll(DataSet: TDataSet);
    procedure DanXuan_Subject_TableBeforePost(DataSet: TDataSet);
    procedure DanXuan_Subject_TableAfterPost(DataSet: TDataSet);
    procedure DanXuan_Subject_TableAfterScroll(DataSet: TDataSet);
    procedure DanXuan_Subject_TableBeforeScroll(DataSet: TDataSet);
    procedure DuoXuan_Subject_TableBeforePost(DataSet: TDataSet);
    procedure PanDuan_Subject_TableAfterScroll(DataSet: TDataSet);
    procedure PanDuan_Subject_TableBeforeScroll(DataSet: TDataSet);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Client_DataModule: TClient_DataModule;

implementation

uses DanXiangXuanZhe_Frm, DuoXiangXuanZhe_Frm, PanDuanTi_Frm;

{$R *.dfm}
Function TClient_DataModule.Calculate_Key_Value
            (A_option,B_option,C_option,D_option,E_option,F_option:Boolean):string;
{计算题目的KEY_VALUE,对于任何题目的任何选项组合,该值是唯一的,规则如下:
 KEY_VALUE为6位的字符串 'XXXXXX' ,X为0或1,0代表不选,1代表选中
 例如,有某题的答案为A和D,那么它的KEY_VALUE='100100'
       有某题的答案为A、B、C,那么它的KEY_VALUE='111000'}
begin
{-------------------------所有答案都不选的分值情况-----------------------------------}

   If (A_option=False)and(B_option=False)and(C_option=False)and
      (D_option=False)and(E_option=False)and(F_option=False)
    Then Calculate_Key_Value:='000000'; { }

{-------------------------所有答案都不选的分值情况-----------------------------------}
{-------------------------只选一个答案的分值情况-----------------------------------}
   If (A_option=True)and(B_option=False)and(C_option=False)and
      (D_option=False)and(E_option=False)and(F_option=False)
    Then Calculate_Key_Value:='100000'; {A}

   If (A_option=False)and(B_option=True)and(C_option=False)and
      (D_option=False)and(E_option=False)and(F_option=False)
    Then Calculate_Key_Value:='010000'; {B}

   If (A_option=False)and(B_option=False)and(C_option=True)and
      (D_option=False)and(E_option=False)and(F_option=False)
    Then Calculate_Key_Value:='001000'; {C}

   If (A_option=False)and(B_option=False)and(C_option=False)and
      (D_option=True)and(E_option=False)and(F_option=False)
    Then Calculate_Key_Value:='000100'; {D}

   If (A_option=False)and(B_option=False)and(C_option=False)and
      (D_option=False)and(E_option=True)and(F_option=False)
    Then Calculate_Key_Value:='000010';{E}

   If (A_option=False)and(B_option=False)and(C_option=False)and
      (D_option=False)and(E_option=False)and(F_option=True)
    Then Calculate_Key_Value:='000001';{F}
{-------------------------只选一个答案的分值情况-----------------------------------}

{-------------------------只选两个答案的分值情况-----------------------------------}

   If (A_option=True)and(B_option=True)and(C_option=False)and
      (D_option=False)and(E_option=False)and(F_option=False)
    Then Calculate_Key_Value:='110000'; {A、B}

   If (A_option=True)and(B_option=False)and(C_option=True)and
      (D_option=False)and(E_option=False)and(F_option=False)
    Then Calculate_Key_Value:='101000'; {A、C}

   If (A_option=True)and(B_option=False)and(C_option=False)and
      (D_option=True)and(E_option=False)and(F_option=False)
    Then Calculate_Key_Value:='100100'; {A、D}

   If (A_option=True)and(B_option=False)and(C_option=False)and
      (D_option=False)and(E_option=True)and(F_option=False)
    Then Calculate_Key_Value:='100010';{A、E}

   If (A_option=True)and(B_option=False)and(C_option=False)and
      (D_option=False)and(E_option=False)and(F_option=True)
    Then Calculate_Key_Value:='100001';{A、F}

   If (A_option=False)and(B_option=True)and(C_option=True)and
      (D_option=False)and(E_option=False)and(F_option=False)
    Then Calculate_Key_Value:='011000'; {B、C}

   If (A_option=False)and(B_option=True)and(C_option=False)and
      (D_option=True)and(E_option=False)and(F_option=False)
    Then Calculate_Key_Value:='010100';{B、D}

   If (A_option=False)and(B_option=True)and(C_option=False)and
      (D_option=False)and(E_option=True)and(F_option=False)
    Then Calculate_Key_Value:='010010';{B、E}

   If (A_option=False)and(B_option=True)and(C_option=False)and
      (D_option=False)and(E_option=False)and(F_option=True)
    Then Calculate_Key_Value:='010001';{B、F}


   If (A_option=False)and(B_option=False)and(C_option=True)and
      (D_option=True)and(E_option=False)and(F_option=False)
    Then Calculate_Key_Value:='001100';{C、D}

   If (A_option=False)and(B_option=False)and(C_option=True)and
      (D_option=False)and(E_option=True)and(F_option=False)
    Then Calculate_Key_Value:='001010';{C、E}

   If (A_option=False)and(B_option=False)and(C_option=True)and
      (D_option=False)and(E_option=False)and(F_option=True)
    Then Calculate_Key_Value:='001001';{C、F}

   If (A_option=False)and(B_option=False)and(C_option=False)and
      (D_option=True)and(E_option=True)and(F_option=False)
    Then Calculate_Key_Value:='000110';{D、E}

   If (A_option=False)and(B_option=False)and(C_option=False)and
      (D_option=True)and(E_option=False)and(F_option=True)
    Then Calculate_Key_Value:='000101';{D、F}

   If (A_option=False)and(B_option=False)and(C_option=False)and
      (D_option=False)and(E_option=True)and(F_option=True)
    Then Calculate_Key_Value:='000011';{E、F}

{-------------------------只选两个答案的分值情况-----------------------------------}

{---------------------------选三个答案的分值情况-----------------------------------}
   If (A_option=True)and(B_option=True)and(C_option=True)and
      (D_option=False)and(E_option=False)and(F_option=False)
    Then Calculate_Key_Value:='111000'; {A、B、C}

   If (A_option=True)and(B_option=True)and(C_option=False)and
      (D_option=True)and(E_option=False)and(F_option=False)
    Then Calculate_Key_Value:='110100';{A、B、D}

   If (A_option=True)and(B_option=True)and(C_option=False)and
      (D_option=False)and(E_option=True)and(F_option=False)
    Then Calculate_Key_Value:='110010'; {A、B、E}

   If (A_option=True)and(B_option=True)and(C_option=False)and
      (D_option=False)and(E_option=False)and(F_option=True)
    Then Calculate_Key_Value:='110001';{A、B、F}

   If (A_option=True)and(B_option=False)and(C_option=True)and
      (D_option=True)and(E_option=False)and(F_option=False)
    Then Calculate_Key_Value:='101100'; {A、C、D}

   If (A_option=True)and(B_option=False)and(C_option=True)and
      (D_option=False)and(E_option=True)and(F_option=False)
    Then Calculate_Key_Value:='101010'; {A、C、E}

   If (A_option=True)and(B_option=False)and(C_option=True)and
      (D_option=False)and(E_option=False)and(F_option=True)
    Then Calculate_Key_Value:='101001'; {A、C、F}

⌨️ 快捷键说明

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