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

📄 ucjlr.pas

📁 学生信息管理系统
💻 PAS
字号:
unit Ucjlr;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, UData, PrnDbgeh, DB, ADODB, ActnList, Grids, DBGridEh, ExtCtrls,
  ComCtrls, ToolWin, StdCtrls, Mask, DBCtrlsEh, mmsystem;

type
  TFCjlr = class(TFData)
    Label2: TLabel;
    Label3: TLabel;
    Label5: TLabel;
    Label1: TLabel;
    Shape2: TShape;
    ComboBox1: TComboBox;
    ComboBox2: TComboBox;
    Edit2: TEdit;
    Label4: TLabel;
    ComboBox3: TComboBox;
    Label6: TLabel;
    ComboBox4: TComboBox;
    ADOQueryID: TAutoIncField;
    ADOQueryDSDesigner: TWideStringField;
    ADOQueryDSDesigner2: TWideStringField;
    ADOQueryDSDesigner3: TSmallintField;
    ADOQueryDSDesigner4: TWideStringField;
    ADOQueryDSDesigner5: TWideStringField;
    ADOQueryDSDesigner6: TWideStringField;
    ADOQueryDSDesigner7: TFloatField;
    ADOQueryDSDesigner8: TFloatField;
    ADOQueryDSDesigner9: TFloatField;
    ADOQueryDSDesigner10: TFloatField;
    ADOQueryDSDesigner11: TFloatField;
    ADOQueryDSDesigner12: TFloatField;
    ADOQueryDSDesigner13: TFloatField;
    ADOQueryDSDesigner14: TFloatField;
    ADOQueryDSDesigner15: TFloatField;
    ADOQueryDSDesigner16: TFloatField;
    ADOQueryDSDesigner17: TFloatField;
    ADOQueryDSDesigner18: TWideStringField;
    ADOQueryDSDesigner19: TWideStringField;
    ADOQueryDSDesigner20: TWideStringField;
    ADOQueryDSDesigner21: TWideStringField;
    Button1: TButton;
    Button2: TButton;
    CheckBox: TCheckBox;
    ADOQueryDSDesigner22: TWideStringField;
    Label7: TLabel;
    Label8: TLabel;
    procedure A_addExecute(Sender: TObject);
    procedure DataSourceStateChange(Sender: TObject);
    procedure A_modifyExecute(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure ComboBox3Exit(Sender: TObject);
    procedure DBGridEhDblClick(Sender: TObject);
    procedure ComboBox1KeyPress(Sender: TObject; var Key: Char);
    procedure Edit2KeyPress(Sender: TObject; var Key: Char);
    procedure ComboBox4Exit(Sender: TObject);
    procedure ComboBox1Exit(Sender: TObject);
    procedure A_refreshExecute(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure A_deleteExecute(Sender: TObject);
    procedure ComboBox2Change(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  FCjlr: TFCjlr;

implementation

uses UPublic, sounds;

{$R *.dfm}

procedure TFCjlr.A_addExecute(Sender: TObject);
begin
 //
end;

procedure TFCjlr.DataSourceStateChange(Sender: TObject);
begin
//
end;

procedure TFCjlr.A_modifyExecute(Sender: TObject);
begin
//
end;

procedure TFCjlr.FormCreate(Sender: TObject);
begin
  inherited;
  if g_User.profile >4 then ComboBox1.Enabled := True
  else     ComboBox1.Enabled := False;
  ComboBox1.ItemIndex := 0;
  if ComboBox1.Items.IndexOf(g_User.kz) > -1 then  begin
    ComboBox1.ItemIndex := ComboBox1.Items.IndexOf(g_User.kz);
    DBGridEh.Columns[2].FieldName := g_User.kz;
  end else DBGridEh.Columns[2].FieldName := ComboBox1.text;
  if g_Sys.Usedm='1' then
    InitCode('select ss from STU_ss order by id', ComboBox2.Items)
  else
    InitCode('select distinct dh,id from STU_ss order by dh', ComboBox2.Items);
//  if g_U

end;

procedure TFCjlr.ComboBox3Exit(Sender: TObject);
var
  str: string;
begin
  if ComboBox3.Text = '' then exit;
  if ComboBox1.ItemIndex < 0 then begin
    Ask('科目输入有误,请从新输入!','提示',MB_STOP);
    ComboBox1.SetFocus;
    exit;
  end;
  if ComboBox2.ItemIndex < 0 then begin
    Ask('试室名称输入有误,请从新输入!','提示',MB_STOP);
    ComboBox2.SetFocus;
    exit;
  end;
  if ComboBox3.ItemIndex < 0 then begin
    Ask('年级输入有误,请从新输入!','提示',MB_STOP);
    ComboBox3.SetFocus;
    exit;
  end;
  if g_Sys.Usedm='1' then
    str := ComboBox2.Text
    else   str := GetFieldVar('select ss from stu_ss where dh='''+ComboBox2.items[ComboBox2.itemindex]+'''');
  with ADOQuery do try
    if Active then CLose;
    SQL.Text := 'select * from STU_info where 试室名称='''+str
               +''' and 级别='''+ComboBox3.Text+''' order by 流水号';
    Open;
  except

  end;
  InitCode('select 座位号 from STU_info where 试室名称='''+str
               +''' and 级别='''+ComboBox3.Text+''' order by 流水号',ComboBox4.Items);
  ComboBox4.text := '';  

end;

procedure TFCjlr.DBGridEhDblClick(Sender: TObject);
begin
//
end;

procedure TFCjlr.ComboBox1KeyPress(Sender: TObject; var Key: Char);
begin
  if (key in['0'..'9'])or(key='.') then begin
    if key ='.'then sndPlaySound(ssounds[10], SND_MEMORY or SND_NODEFAULT or SND_ASYNC)
    else sndPlaySound(ssounds[strtoint(key)], SND_MEMORY or SND_NODEFAULT or SND_ASYNC);
  end;
  if (Key=#13)and not(ActiveControl is TButton) then SelectNext(ActiveControl,True,True)
  else if (Key='+') then
  begin
    SelectNext(ActiveControl,False,True);
    key:= #0;
  end;
end;

procedure TFCjlr.Edit2KeyPress(Sender: TObject; var Key: Char);
  function Setfs(aQk: boolean): boolean;
  var
    acount: real;
    qkstr: string;
  begin
    Result := false;
    qkstr := ADOQuery.fieldbyname('缺考科目').AsString;
    if not aqk then begin
      if Pos(comboBox1.Text, qkstr)>0 then
      qkstr := copy(qkstr, 1, Pos(comboBox1.Text, qkstr)-1)
          +copy(qkstr,Pos(comboBox1.Text, qkstr)+length(combobox1.text), length(qkstr));
      try
        acount := strtofloat(Edit2.Text);
      except
        Ask('分数输入不对,请重新输入!','提示',MB_STOP);
        Edit2.SetFocus;
        exit;
      end;
      if acount>150 then begin
        Ask('分数输入不大于150,请重新输入!','提示',MB_STOP);
        Edit2.Text :='';
        Edit2.SetFocus;
        exit;
      end;
      with ADOQuery do try
        Edit;
        FieldByname(ComboBox1.Text).AsFloat := acount;
        fieldbyname('缺考科目').AsString := qkstr;
        Post;
      except
        Ask('保存出错!','提示',MB_STOP);
        exit;
      end
    end else begin
      if Pos(comboBox1.Text, qkstr)<1 then
        qkstr := qkstr+combobox1.Text;
      with ADOQuery do try
        Edit;
        FieldByname(ComboBox1.Text).AsFloat := 0;
        fieldbyname('缺考科目').AsString := qkstr;
        Post;
      except
        Ask('保存出错!','提示',MB_STOP);
        exit;
      end
    end;
    Result := true;
  end;
  procedure Setczrz;
  begin
    if GetFieldVar('select Count(*) from STU_czrz where kz='''+ComboBox1.Text
                   +''' and username='''+g_user.Name+'''and ss='''+ComboBox2.Text
                   +''' and nj='''+ComboBox3.Text+'''') =0 then
    ExecuteSQL('Insert into STU_czrz(kz,username,ss,nj,sj) values('''+ComboBox1.Text+''','''
              +g_user.Name+''','''+ComboBox2.Text+''','''+ComboBox3.Text
              +''','+floattostr(now)+')');
  end;
begin

  if (Key='+') then
  begin
    SelectNext(ActiveControl,False,True);
    key:= #0;
    exit;
  end;
  if not ((key in['0'..'9'])or(key='.')or(key=#8)or(key='*')or(key=#13)or(Key='+')) then
  begin
    key := #0;
    exit;
  end;

  if (key in['0'..'9'])or(key='.') then try
    if key ='.'then sndPlaySound(ssounds[10], SND_MEMORY or SND_NODEFAULT or SND_ASYNC)
    else sndPlaySound(ssounds[strtoint(key)], SND_MEMORY or SND_NODEFAULT or SND_ASYNC);
  except
  end;
  if Key = #13 then begin
    if ADOQuery.IsEmpty then begin
      Ask('没有相关数据,请检查试室名称、年级、座位号输入是否正确!','提示',MB_STOP);
      ComboBox2.SetFocus;
      exit;
    end;
    if ComboBox1.ItemIndex < 0 then begin
      Ask('科目输入有误,请重新输入!','提示',MB_STOP);
      ComboBox1.SetFocus;
      exit;
    end;
    if ComboBox2.ItemIndex < 0 then begin
      Ask('试室名称输入有误,请重新输入!','提示',MB_STOP);
      ComboBox2.SetFocus;
      exit;
    end;
    if ComboBox3.ItemIndex < 0 then begin
      Ask('年级输入有误,请重新输入!','提示',MB_STOP);
      ComboBox3.SetFocus;
      exit;
    end;
    if ComboBox4.ItemIndex < 0 then begin
      Ask('座位号输入有误,请从新输入!','提示',MB_STOP);
      ComboBox4.SetFocus;
      exit;
    end;
    if Edit2.Text = '' then begin
      Ask('还未输入分数,请重新输入!','提示',MB_STOP);
      Edit2.SetFocus;
      exit;
    end;
    with ADOQuery do begin
       DisableControls;
       close;
       Open;
       EnableControls;
    end;    
    if not ADOQuery.Locate('座位号', ComboBox4.Text, [loCaseInsensitive]) then
    begin
      Ask('无法找到座位号,请从新输入!','提示',MB_STOP);
      ComboBox4.SetFocus;
      exit;
    end;
    if not setfs(pos('*',edit2.Text)>0) then exit;
    Setczrz;
    if not CheckBox.Checked then begin
      Ask('保存成功!','提示',MB_INFO);
      Edit2.Text :='';
      ComboBox4.SetFocus;
    end else begin
      if ComboBox4.ItemIndex= ComboBox4.Items.Count-1 then
        Ask('录入完毕!','提示',MB_INFO)
      else begin
        ComboBox4.ItemIndex := ComboBox4.ItemIndex +1;
//        Edit2.Text :='';
        Edit2.SelectAll;
        Edit2.SetFocus;
        exit;
      end;
    end;
  end;
end;

procedure TFCjlr.ComboBox4Exit(Sender: TObject);
begin
  if ComboBox4.Text ='' then exit;
  if ComboBox4.ItemIndex < 0 then begin
    Ask('座位号输入有误,请从新输入!','提示',MB_STOP);
    ComboBox4.SetFocus;
    exit;
  end;
end;

procedure TFCjlr.ComboBox1Exit(Sender: TObject);
begin
  if ComboBox1.Text ='' then exit;
  if ComboBox1.ItemIndex < 0 then begin
    Ask('座位号输入有误,请从新输入!','提示',MB_STOP);
    ComboBox4.SetFocus;
    exit;
  end;
  DBGridEh.Columns[2].FieldName := ComboBox1.text;
end;

procedure TFCjlr.A_refreshExecute(Sender: TObject);
var
  str: string;
begin
  if ComboBox2.ItemIndex>-1 then str := '试室名称='''+ComboBox2.text+'''';
  if ComboBox2.ItemIndex>-1 then str := '试室名称='''+ComboBox2.text+'''';
  if ComboBox2.ItemIndex>-1 then str := '试室名称='''+ComboBox2.text+'''';


  with ADOQuery do try
    if Active then CLose;
    SQL.Text := 'select * from STU_info where 试室名称='''+ComboBox2.Text
               +''' and 级别='''+ComboBox3.Text+''' order by 流水号';
    Open;
  except

  end;
end;

procedure TFCjlr.Button1Click(Sender: TObject);
var
  str: Char;
begin
  str := #13;
  Edit2KeyPress(Sender, str);
end;

procedure TFCjlr.Button2Click(Sender: TObject);
begin
  ToolButton1.Click;
end;

procedure TFCjlr.A_deleteExecute(Sender: TObject);
begin
//
end;

procedure TFCjlr.ComboBox2Change(Sender: TObject);
begin
  inherited;
  ComboBox3.Text :='';
end;

end.

⌨️ 快捷键说明

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