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

📄 u_xlcj1.pas

📁 试卷管理系统
💻 PAS
字号:
unit U_xlcj1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Grids, DBGrids, ExtCtrls, ComCtrls, DBTables, DB,
  Buttons;

type
  Txlcj1 = class(TForm)
    TreeView1: TTreeView;
    PageControl1: TPageControl;
    tbs_gr: TTabSheet;
    Panel3: TPanel;
    Label11: TLabel;
    Label14: TLabel;
    Label15: TLabel;
    combo_km_gr: TComboBox;
    combo_cj_gr: TComboBox;
    tbs_dw: TTabSheet;
    Panel1: TPanel;
    Label3: TLabel;
    Label4: TLabel;
    combo_km_dw: TComboBox;
    combo_cj_dw: TComboBox;
    GroupBox2: TGroupBox;
    DBGrid2: TDBGrid;
    Query1: TQuery;
    tbl_grxlcj: TTable;
    DataSource1: TDataSource;
    combo_name: TComboBox;
    TreeView2: TTreeView;
    tbl_dwlb: TTable;
    Label1: TLabel;
    DateTimePicker1: TDateTimePicker;
    Label2: TLabel;
    DateTimePicker3: TDateTimePicker;
    tbs_bz: TTabSheet;
    GroupBox3: TGroupBox;
    Label6: TLabel;
    combo_zy: TComboBox;
    Label7: TLabel;
    combo_gz: TComboBox;
    Label5: TLabel;
    combo_km_bz: TComboBox;
    Label8: TLabel;
    combo_cj_bz: TComboBox;
    Label9: TLabel;
    DateTimePicker2: TDateTimePicker;
    GroupBox4: TGroupBox;
    DBGrid3: TDBGrid;
    GroupBox1: TGroupBox;
    btn_close_gr: TBitBtn;
    btn_lr_gr: TBitBtn;
    GroupBox6: TGroupBox;
    DBGrid1: TDBGrid;
    GroupBox5: TGroupBox;
    btn_close_bz: TBitBtn;
    btn_lr_bz: TBitBtn;
    GroupBox7: TGroupBox;
    btn_close_dw: TBitBtn;
    btn_lr_dw: TBitBtn;
    tbl_bzxlcj: TTable;
    tbl_dwxlcj: TTable;
    DataSource2: TDataSource;
    DataSource3: TDataSource;
    tbl_grxlcjDWDM: TStringField;
    tbl_grxlcjXM: TStringField;
    tbl_grxlcjKMXH: TSmallintField;
    tbl_grxlcjCJ: TStringField;
    tbl_grxlcjKHDATE: TDateField;
    tbl_grxlcjKMMC: TStringField;
    tbl_bzxlcjDWDM: TStringField;
    tbl_bzxlcjZYXH: TSmallintField;
    tbl_bzxlcjGWLBXH: TSmallintField;
    tbl_bzxlcjGWZLXH: TSmallintField;
    tbl_bzxlcjKHDATE: TDateField;
    tbl_bzxlcjKMXH: TSmallintField;
    tbl_bzxlcjCJ: TStringField;
    tbl_bzxlcjKMMC: TStringField;
    tbl_bzxlcjGWZLMC: TStringField;
    tbl_bzxlcjZYMC: TStringField;
    tbl_dwxlcjDWDM: TStringField;
    tbl_dwxlcjKHDATE: TDateField;
    tbl_dwxlcjKMXH: TSmallintField;
    tbl_dwxlcjCJ: TStringField;
    tbl_dwxlcjKMMC: TStringField;
    tbl_jbxx: TTable;
    tbl_zy: TTable;
    tbl_gwzl: TTable;
    procedure btnreturnClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure TreeView1Change(Sender: TObject; Node: TTreeNode);
    procedure combo_nameChange(Sender: TObject);
    procedure combo_zyChange(Sender: TObject);
    procedure combo_gzChange(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure btn_lr_grClick(Sender: TObject);
    procedure btn_lr_bzClick(Sender: TObject);
    procedure btn_lr_dwClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  xlcj1: Txlcj1;

implementation
uses p_res;
{$R *.dfm}

procedure Txlcj1.btnreturnClick(Sender: TObject);
begin
  close;
end;

procedure Txlcj1.FormCreate(Sender: TObject);
var
  DmLen,ii:integer;
  CurStr1:string;
  MyTextFile1,MyTextFile2:TextFile;
begin
  Query1.Close;
  Query1.SQL.Text:='select * from dwlb order by dwccdm';
  Query1.Open;

  AssignFile(MyTextFile1,pb_runpath+'\res\dwlb.txt');
  Rewrite(MyTextFile1);
  AssignFile(MyTextFile2,pb_runpath+'\res\dwdm.txt');
  Rewrite(MyTextFile2);

  DmLen:=Length(query1.fieldbyname('dwccdm').asstring);
    while not query1.Eof do
    begin
      CurStr1:='';
      for ii:=1 to  trunc((Length(query1.fieldbyname('dwccdm').asstring)-DmLen)/2) do
      begin
        CurStr1:=CurStr1+#9;
      end;
      Writeln(MyTextFile1,CurStr1+query1.fieldbyname('dwjmc').asstring);
      Writeln(MyTextFile2,CurStr1+query1.fieldbyname('dwdm').asstring);
      query1.Next;
    end;
    CloseFile(MyTextFile1);
    CloseFile(MyTextFile2);

  TreeView1.LoadFromFile(pb_runpath+'\res\dwlb.txt');
  TreeView2.LoadFromFile(pb_runpath+'\res\dwdm.txt');

  Query1.Close;
end;

procedure Txlcj1.FormShow(Sender: TObject);
begin
  TreeView1.SetFocus;
  TreeView1.FullExpand;
end;

procedure Txlcj1.TreeView1Change(Sender: TObject; Node: TTreeNode);
begin

   if TreeView1.SelectionCount=0 then exit;

   TreeView2.Selected:=TreeView2.Items[TreeView1.Selected.AbsoluteIndex];

   tbl_jbxx.Filter:='dwdm='+QuotedStr(TreeView2.Selected.Text);

   tbl_grxlcj.Filter:='dwdm='+QuotedStr(TreeView2.Selected.Text);
   tbl_bzxlcj.Filter:='dwdm='+QuotedStr(TreeView2.Selected.Text);
   tbl_dwxlcj.Filter:='dwdm='+QuotedStr(TreeView2.Selected.Text);

   tbl_dwlb.Locate('dwdm',TreeView2.Selected.Text,[loCaseInsensitive ]);

   tbl_grxlcj.Close;
   tbl_bzxlcj.Close;
   tbl_dwxlcj.Close;

   btn_lr_gr.Enabled:=false;
   btn_lr_bz.Enabled:=false;
   btn_lr_dw.Enabled:=false;

   if  tbl_dwlb.FieldByName('dwlb').AsInteger=1 then
   begin
     btn_lr_gr.Enabled:=true;
     btn_lr_dw.Enabled:=true;

     tbs_bz.TabVisible:=false;

     combo_name.Clear;
     //个人姓名
     tbl_jbxx.First;
     while not tbl_jbxx.Eof do
     begin
       combo_name.Items.Add(tbl_jbxx.fieldbyname('xm').AsString);
       tbl_jbxx.Next;
     end;

     //根据姓名填课目
     if  combo_name.Items.Count<>0 then
     begin
       combo_name.ItemIndex:=0;
       combo_nameChange(self);
     end;

     //单位课目
     combo_km_dw.Clear;

     Query1.Close;
     Query1.SQL.Text:='select kmxh,kmmc from xlkm_jg where xlqf<>1';
     Query1.Open;
     Query1.First;
     while not Query1.Eof do
     begin
       combo_km_dw.Items.AddObject(Query1.fieldbyname('kmmc').AsString,TObject(Query1.fieldbyname('kmxh').AsInteger));
       Query1.Next;
     end;
     if  combo_km_dw.Items.Count<>0 then
     begin
       combo_km_dw.ItemIndex:=0;
     end;

     tbl_grxlcj.Open;
     tbl_dwxlcj.open;
   end
   else
   if  tbl_dwlb.FieldByName('dwlb').AsInteger=2 then
   begin
     btn_lr_gr.Enabled:=true;
     btn_lr_dw.Enabled:=true;
     btn_lr_bz.Enabled:=true;

     tbs_bz.TabVisible:=true;

     combo_name.Clear;
     //个人姓名
     tbl_jbxx.First;
     while not tbl_jbxx.Eof do
     begin
       combo_name.Items.Add(tbl_jbxx.fieldbyname('xm').AsString);
       tbl_jbxx.Next;
     end;

     //根据姓名填课目
     if  combo_name.Items.Count<>0 then
     begin
       combo_name.ItemIndex:=0;
       combo_nameChange(self);
     end;

     combo_zy.Clear;
     //班组专业
     tbl_zy.First;
     while not tbl_zy.Eof do
     begin
       combo_zy.Items.AddObject(tbl_zy.fieldbyname('zymc').AsString,TObject(tbl_zy.fieldbyname('zyxh').AsInteger));
       tbl_zy.Next;
     end;

     //根据专业填班组
     if  combo_zy.Items.Count<>0 then
     begin
       combo_zy.ItemIndex:=0;
       combo_zyChange(self);
     end;

     //单位课目
     combo_km_dw.Clear;
     Query1.Close;
     Query1.SQL.Text:='select kmxh,kmmc from xlkm where zyxh=8 and gwlbxh=4 and gwzlxh=3';
     Query1.Open;
     Query1.First;
     while not Query1.Eof do
     begin
       combo_km_dw.Items.AddObject(Query1.fieldbyname('kmmc').AsString,TObject(Query1.fieldbyname('kmxh').AsInteger));
       Query1.Next;
     end;
     if  combo_km_dw.Items.Count<>0 then
     begin
       combo_km_dw.ItemIndex:=0;
     end;

     tbl_grxlcj.Open;
     tbl_dwxlcj.open;
     tbl_bzxlcj.open;

   end
   else
   begin
     tbl_grxlcj.Close;
     tbl_bzxlcj.Close;
     tbl_dwxlcj.Close;
   end;
end;

procedure Txlcj1.combo_nameChange(Sender: TObject);
var
  s:string;
begin
  if tbl_dwlb.FieldByName('dwlb').AsInteger=0 then exit;

  tbl_jbxx.Locate('xm',combo_name.Text,[loCaseInsensitive	]);
  combo_km_gr.Clear;

  //根据姓名取课目
  if tbl_dwlb.FieldByName('dwlb').AsInteger=1 then
  begin
    s:='select kmxh,kmmc from xlkm_jg where ';
    //首长机关人员
    s:=s+'xlqf=1';
    if tbl_jbxx.FieldByName('zyxh').AsInteger=50 then
      s:=s+' and (lbxh=1 or lbxh=2 or lbxh=3)'
    else
    if tbl_jbxx.FieldByName('zyxh').AsInteger=51 then
      s:=s+' and (lbxh=1 or lbxh=2 or lbxh=3)'
    else
      s:=s+' and (lbxh=1 or lbxh=3)';
  end
  else
  if tbl_dwlb.FieldByName('dwlb').AsInteger=2 then
  begin
    s:='select kmxh,kmmc from xlkm';
    //修理分队人员
    s:=s+' where zyxh='+inttostr(tbl_jbxx.fieldbyname('zyxh').AsInteger);
    s:=s+' and gwzlxh='+inttostr(tbl_jbxx.fieldbyname('gwzlxh').AsInteger);

    if trim(tbl_jbxx.FieldByName('lb').AsString)='军官' then
    begin
      if trim(tbl_jbxx.FieldByName('jszwmc').AsString)='助理工程师(技术员)' then
         s:=s+' and khdxxh=1'
      else
      if trim(tbl_jbxx.FieldByName('jszwmc').AsString)='工程师' then
         s:=s+' and khdxxh=2'
      else
      if trim(tbl_jbxx.FieldByName('jszwmc').AsString)='高级工程师' then
         s:=s+' and khdxxh=3'
      else
      if trim(tbl_jbxx.FieldByName('jszwmc').AsString)='' then
         s:=s+' and khdxxh=1';

      s:=s+' and gwlbxh=3';
    end
    else
    if trim(tbl_jbxx.FieldByName('lb').AsString)='士官' then
    begin
      if trim(tbl_jbxx.FieldByName('zwjb').AsString)='一期' then
         s:=s+' and khdxxh=1'
      else
      if (trim(tbl_jbxx.FieldByName('zwjb').AsString)='二期') or (trim(tbl_jbxx.FieldByName('zj').AsString)='三期' ) then
         s:=s+' and khdxxh=2'
      else
         s:=s+' and khdxxh=3';

      s:=s+' and gwlbxh=1';
    end
    else
    if trim(tbl_jbxx.FieldByName('lb').AsString)='义务兵' then
    begin
      s:=s+' and khdxxh=1';
      s:=s+' and gwlbxh=1';
    end;
  end;

  Query1.Close;
  Query1.SQL.Clear;
  Query1.SQL.Add(s);

  Query1.Open;

  while not Query1.Eof do
  begin
    combo_km_gr.Items.AddObject(Query1.fieldbyname('kmmc').AsString,TObject(Query1.fieldbyname('kmxh').AsInteger));
    Query1.Next;
  end;

  if combo_km_gr.Items.Count<>0 then
  begin
    combo_km_gr.ItemIndex:=0;
  end;
end;

procedure Txlcj1.combo_zyChange(Sender: TObject);
begin
  combo_gz.Clear;
  tbl_gwzl.Filter:='check=true and zyxh='+inttostr(Integer(combo_zy.Items.Objects[combo_zy.ItemIndex]))
                    + ' and gwlbxh=2';
  tbl_gwzl.First;
  while not tbl_gwzl.Eof do
  begin
    combo_gz.Items.AddObject(tbl_gwzl.fieldbyname('gwzlmc').AsString,TObject(tbl_gwzl.fieldbyname('gwzlxh').AsInteger));
    tbl_gwzl.Next;
  end;

  if combo_gz.Items.Count<>0 then
  begin
    combo_gz.ItemIndex:=0;
    combo_gzChange(self);
  end;
end;

procedure Txlcj1.combo_gzChange(Sender: TObject);
begin
   combo_km_bz.Clear;
   
   Query1.Close;
   Query1.SQL.Text:='select kmxh,kmmc from xlkm where zyxh=:zyxh and gwlbxh=2 and gwzlxh=:gwzlxh';
   Query1.ParamByName('zyxh').AsInteger:=Integer(combo_zy.Items.Objects[combo_zy.ItemIndex]);
   Query1.ParamByName('gwzlxh').AsInteger:=Integer(combo_gz.Items.Objects[combo_gz.ItemIndex]);
   Query1.Open;
   Query1.First;
   while not Query1.Eof do
   begin
     combo_km_bz.Items.AddObject(Query1.fieldbyname('kmmc').AsString,TObject(Query1.fieldbyname('kmxh').AsInteger));
     Query1.Next;
   end;

  if combo_km_bz.Items.Count<>0 then
  begin
    combo_km_bz.ItemIndex:=0;
  end;
end;

procedure Txlcj1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
     tbl_grxlcj.Close;
     tbl_bzxlcj.Close;
     tbl_dwxlcj.Close;
     tbl_zy.Close;
     tbl_gwzl.Close;
     tbl_jbxx.Close;
     tbl_dwlb.Close;
end;

procedure Txlcj1.btn_lr_grClick(Sender: TObject);
begin
  if combo_km_gr.ItemIndex=-1 then exit;

  if tbl_grxlcj.Locate('xm;khdate;kmxh',VarArrayOf([combo_name.Text,DateTimePicker1.DateTime,Integer(combo_km_gr.Items.Objects[combo_km_gr.ItemIndex])]),[loCaseInsensitive	]) then
  begin
   MessageBox(Handle,'成绩已录入后不能再进行修改!','成绩管理',MB_OK+MB_ICONINFORMATION);
   exit;
  end
  else
    tbl_grxlcj.Append;

  tbl_grxlcj.FieldByName('dwdm').AsString:=TreeView2.Selected.Text;
  tbl_grxlcj.FieldByName('xm').AsString:=combo_name.Text;
  tbl_grxlcj.FieldByName('khdate').AsDateTime:=DateTimePicker1.DateTime;
  tbl_grxlcj.FieldByName('kmxh').AsInteger:=Integer(combo_km_gr.Items.Objects[combo_km_gr.ItemIndex]);
  tbl_grxlcj.FieldByName('kmmc').AsString:=combo_km_gr.Text;
  tbl_grxlcj.FieldByName('cj').AsString:=combo_cj_gr.Text;

  tbl_grxlcj.Post;
end;

procedure Txlcj1.btn_lr_bzClick(Sender: TObject);
begin
  if combo_km_bz.ItemIndex=-1 then exit;
  if combo_gz.ItemIndex=-1 then exit;

  if tbl_bzxlcj.Locate('zyxh;khdate;gwzlxh;kmxh',VarArrayOf(
     [Integer(combo_zy.Items.Objects[combo_zy.ItemIndex]),
      DateTimePicker2.DateTime,
      Integer(combo_gz.Items.Objects[combo_gz.ItemIndex]),
      Integer(combo_km_bz.Items.Objects[combo_km_bz.ItemIndex])
      ]),[loCaseInsensitive	]) then
  begin
   MessageBox(Handle,'成绩已录入后不能再进行修改!','成绩管理',MB_OK+MB_ICONINFORMATION);
   exit;
  end
  else
    tbl_bzxlcj.Append;

  tbl_bzxlcj.FieldByName('dwdm').AsString:=TreeView2.Selected.Text;
  tbl_bzxlcj.FieldByName('zyxh').AsInteger:=Integer(combo_zy.Items.Objects[combo_zy.ItemIndex]);
  tbl_bzxlcj.FieldByName('zymc').AsString:=combo_zy.Text;
  tbl_bzxlcj.FieldByName('gwzlxh').AsInteger:=Integer(combo_gz.Items.Objects[combo_gz.ItemIndex]);
  tbl_bzxlcj.FieldByName('gwzlmc').AsString:=combo_gz.Text;
  tbl_bzxlcj.FieldByName('khdate').AsDateTime:=DateTimePicker2.DateTime;
  tbl_bzxlcj.FieldByName('kmxh').AsInteger:=Integer(combo_km_bz.Items.Objects[combo_km_bz.ItemIndex]);
  tbl_bzxlcj.FieldByName('kmmc').AsString:=combo_km_bz.Text;
  tbl_bzxlcj.FieldByName('cj').AsString:=combo_cj_bz.Text;

  tbl_bzxlcj.Post;
end;

procedure Txlcj1.btn_lr_dwClick(Sender: TObject);
begin
  if combo_km_dw.ItemIndex=-1 then exit;

  if tbl_dwxlcj.Locate('khdate;kmxh',VarArrayOf([DateTimePicker3.DateTime,Integer(combo_km_dw.Items.Objects[combo_km_dw.ItemIndex])]),[loCaseInsensitive	]) then
  begin
   MessageBox(Handle,'成绩已录入后不能再进行修改!','成绩管理',MB_OK+MB_ICONINFORMATION);
   exit;
  end
  else
    tbl_dwxlcj.Append;

  tbl_dwxlcj.FieldByName('dwdm').AsString:=TreeView2.Selected.Text;
  tbl_dwxlcj.FieldByName('khdate').AsDateTime:=DateTimePicker3.DateTime;
  tbl_dwxlcj.FieldByName('kmxh').AsInteger:=Integer(combo_km_dw.Items.Objects[combo_km_dw.ItemIndex]);
  tbl_dwxlcj.FieldByName('kmmc').AsString:=combo_km_dw.Text;
  tbl_dwxlcj.FieldByName('cj').AsString:=combo_cj_dw.Text;

  tbl_dwxlcj.Post;
end;

end.

⌨️ 快捷键说明

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