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

📄 unitzhaosheng.pas.~154~

📁 初中成绩录入系统网络版(firebird) firebird下的网络编程
💻 ~154~
字号:
unit unitZhaosheng;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, CheckLst, Buttons, ExtCtrls, Grids, DBGridEh,DBGridEhImpexp,
  ShellApi, DB,Interpret;

type
  TfmZhaosheng = class(TForm)
    Panel1: TPanel;
    cmbZhiyuan: TComboBox;
    Label1: TLabel;
    Label2: TLabel;
    edtCode: TEdit;
    lstJNCJ: TCheckListBox;
    Label3: TLabel;
    Label4: TLabel;
    lstJNCJ2: TCheckListBox;
    lstCaoxing: TCheckListBox;
    Label5: TLabel;
    btnSearch: TBitBtn;
    DBGridEh1: TDBGridEh;
    Panel2: TPanel;
    Label6: TLabel;
    lbResult: TLabel;
    Label8: TLabel;
    edtMans: TEdit;
    btnRecord: TBitBtn;
    SaveDialog1: TSaveDialog;
    btnExportXLS: TBitBtn;
    DataSource1: TDataSource;
    BitBtn1: TBitBtn;
    Label7: TLabel;
    edtZDF: TEdit;
    procedure FormDestroy(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
    procedure btnRecordClick(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure btnSearchClick(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure btnExportXLSClick(Sender: TObject);
  private
    { Private declarations }
    Interpret:TInterpret;
    procedure setGridTitle;
    isSearch:Boolean;
  public
    { Public declarations }
  end;

implementation

uses unitDatamodule;

{$R *.dfm}

procedure TfmZhaosheng.btnExportXLSClick(Sender: TObject);
begin
  if SaveDialog1.Execute then
  try
    saveDBGridEhToExportFile(TDBGridEhExportAsXLS,DBGridEh1,SaveDialog1.FileName,true);
    if Application.MessageBox('导出数据成功,是否打开Excel文件?','请选择',MB_YESNO or MB_ICONINFORMATION)=ID_YES then
       ShellExecute(handle,'open',pchar(SaveDialog1.FileName),'0','0',SW_MAXIMIZE);
  except
    Application.MessageBox('发生意外,生成Excel文件失败!','警告',MB_OK or MB_ICONERROR);
  end;
end;

procedure TfmZhaosheng.FormShow(Sender: TObject);
begin
  dm.Query1.Close;
  DataSource1.DataSet:=dm.Query1;
  lstJncj.Checked[0]:=true;
  lstJncj2.Checked[0]:=true;
  lstJncj2.Checked[1]:=true;
  lstCaoxing.Checked[0]:=true;
  lstCaoxing.Checked[1]:=true;
end;

procedure TfmZhaosheng.btnSearchClick(Sender: TObject);
var
  zhiyuan,sql,sql1,sql2,sql3:String;
  i:Integer;
begin
  case cmbZhiyuan.ItemIndex of
    0:zhiyuan:='gaozhi1';
    1:zhiyuan:='gaozhi2';
    2:zhiyuan:='gaozhi3';
    3:zhiyuan:='gaozhi4';
    4:zhiyuan:='wuzhi1';
    5:zhiyuan:='wuzhi2';
    6:zhiyuan:='zhongzhi1';
    7:zhiyuan:='zhongzhi2';
    8:zhiyuan:='zhongzhi3';
    else
    begin
      Application.MessageBox('请选择一种志愿!','错误',MB_OK or MB_ICONERROR);
      exit;
    end;
  end;
  if trim(edtCode.Text)='' then
  begin
    Application.MessageBox('必需输入专业代码!','错误',MB_OK or MB_ICONERROR);
    exit;
  end;
  sql1:='';
  if lstJncj.Checked[0] then
    sql1:=' ((dili=''A'') or (dili=''B'') or (dili=''C''))'+
      ' and ((shengwu=''A'') or (shengwu=''B'') or (shengwu=''C''))';
  sql2:='';
  if lstJncj2.Checked[0] then
    sql2:=' and tiyu=''T''';
  if lstJncj2.Checked[1] then
    sql2:=sql2+' and shiyan=''T''';
  sql3:='';
  for i:=0 to lstCaoxing.Count-1 do
  begin
    if lstCaoxing.Checked[i] then
      sql3:=sql3+' or Upper(caoxing)='''+lstCaoxing.Items[i]+'''';
  end;
  sql3:=copy(sql3,4,Length(sql3)-3);
  sql:='';
  if trim(sql1)<>'' then
    sql:=sql+' and ('+sql1+')';
  if trim(sql2)<>'' then
    sql:=sql+sql2;
  if trim(sql3)<>'' then
    sql:=sql+' and ('+sql3+')';
  sql:=sql+ ' and Upper('+zhiyuan+')='''+UpperCase(edtCode.Text)+'''';
  sql:=sql+' and lqpc=0';
  sql:=copy(sql,5,Length(sql)-4);
  sql:='select * from student where '+sql+' order by tdf desc,yx desc';
//  showMessage(sql);
  dm.Trans1.Active:=false;
  dm.Query1.Close;
  dm.Query1.SQL.Text:=sql;
  dm.Query1.Open;
  dm.Query1.Last;
  lbResult.Caption:=Inttostr(dm.Query1.RecordCount);
  SetGridTitle;//设置Grid的标题
  isSearch:=true;
end;

procedure TfmZhaosheng.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  dm.Query1.Close;
end;

procedure TfmZhaosheng.btnRecordClick(Sender: TObject);
var
  mans,j,lqpc:Integer;
  bzf:Real;//标准分
  zdf:Extended;//最低分
  mysql:String;
begin
  if dm.Query1.Active=false then
  begin
    Application.MessageBox('请先按要求查询考生信息','提示',MB_OK or MB_ICONWARNING);
    exit;
  end;
  tryStrToInt(edtMans.Text,mans);
  if (mans=0) or (mans>dm.Query1.RecordCount) then
  begin
    Application.MessageBox('招生人数非法!','提示',MB_OK or MB_ICONWARNING);
    exit;
  end;
  dm.Query1.DisableControls;
  if cmbZhiyuan.ItemIndex<4 then
    lqpc:=1
  else if (cmbzhiyuan.ItemIndex>=4) and (cmbZhiyuan.ItemIndex<6) then
    lqpc:=2
  else
    lqpc:=3;
  dm.Query1.First;
  for j:=1 to mans-1 do
    dm.Query1.Next;
  bzf:=dm.Query1.FieldByName('tdf').AsFloat;
  tryStrToFloat(edtZDF.Text,zdf);
  if bzf<zdf then
    bzf:=zdf;//如果切线标准低于最低分,那么以最低分为标准
  mysql:=copy(dm.Query1.SQL.Text,Pos('where',dm.Query1.SQL.Text),
    Pos('order',dm.Query1.SQL.Text)-Pos('where',dm.Query1.SQL.Text)-1);
  dm.Query2.Close;
  dm.Query2.SQL.Text:='select count(*) as cnt from student '+mysql+
    ' and tdf='+FloatTostr(bzf);
  dm.Query2.Open;
//  showmessage(dm.Query1.SQL.Text+#13+dm.Query2.SQL.Text);
  if Application.MessageBox(pchar('本次切线标准分为:'+FloatTostr(bzf)+#13+
    '线上人数为:'+IntTostr(dm.Query2.FieldByName('cnt').AsInteger)+#13+
    '是否要招生?'),'请确认',
    MB_YESNO or MB_ICONQUESTION)<>IDYES then
  begin
    dm.Query1.EnableControls;
    exit;
  end;
  dm.Query1.First;
  dm.Query2.Transaction.Active:=false;
  dm.Query2.Transaction.StartTransaction;
  while not dm.Query1.Eof do
  begin
    dm.Query2.Close;
    dm.Query2.SQL.Text:='update student set lqpc='+inttostr(lqpc)+
      ',lqzy='''+UpperCase(edtCode.Text)+''' where zkzh='''+
      dm.Query1.FieldByName('zkzh').AsString+'''and tdf>='+FloatTostr(bzf);
    dm.Query2.ExecSQL;
    dm.Query1.Next;
    if dm.Query1.FieldByName('tdf').AsFloat<bzf then
      break;
  end;
  dm.Trans2.Commit;
  Application.MessageBox('招生完毕,按确定之后可以看到本次招收的学生','提示',MB_OK or MB_ICONINFORMATION);
  dm.Query1.Transaction.Active:=false;
  dm.Query1.Close;
  dm.Query1.SQL.Text:='select * from student '+copy(mysql,1,pos(' and lqpc=0',mysql))+
    ' and lqpc=1 and tdf>='+FloatTostr(zdf)+' order by tdf desc';
  dm.Query1.Open;
  dm.Query1.Last;
  dm.Query1.First;
  lbResult.Caption:=IntTostr(dm.Query1.RecordCount);
  dm.Query1.EnableControls;
  SetGridTitle;//设置Grid的标题
end;

procedure TfmZhaosheng.BitBtn1Click(Sender: TObject);
begin
  dm.Trans2.Active:=false;
  dm.Query2.Close;
  dm.Query2.SQL.Text:='update student set lqzy=null,lqpc=0';
  dm.Query2.ExecSQL;
  dm.Trans2.Commit;
  if dm.Query1.Active then
    btnSearchClick(nil);
end;

procedure TfmZhaosheng.setGridTitle;
var
  i:Integer;
begin
  for i:=0 to DBGridEh1.Columns.Count-1 do
    DBGridEh1.Columns[i].Title.Caption:=Interpret.GetTitle(DBGridEh1.Fields[i].FieldName);
end;

procedure TfmZhaosheng.FormCreate(Sender: TObject);
begin
  interpret:=TInterpret.Create;
end;

procedure TfmZhaosheng.FormDestroy(Sender: TObject);
begin
  Interpret.Free;
end;

end.

⌨️ 快捷键说明

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