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

📄 unitcjtjb.pas.~92~

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

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, AxCtrls, OleCtrls, TTF160_TLB, StdCtrls, Buttons,ShellApi,
  IBDatabase, DB, IBCustomDataSet, IBQuery,Math;

type
  TfmCjtjb = class(TForm)
    F1Book1: TF1Book;
    BitBtn1: TBitBtn;
    BitBtn2: TBitBtn;
    BitBtn3: TBitBtn;
    IBQuery1: TIBQuery;
    SaveDialog1: TSaveDialog;
    procedure BitBtn3Click(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
  private
    { Private declarations }
    function fsd(kmName:String;low,high:Integer):Integer;
    function stdev(kmName:String):real;//计算标准差的函数
    function jgl(kmName:String;bzf:Real):Real;//计算及格率

  public
    { Public declarations }
  end;

implementation

uses unitDatamodule;

{$R *.dfm}

procedure TfmCjtjb.BitBtn1Click(Sender: TObject);
begin
  try
    F1Book1.FilePrint(true);
  except
    Application.MessageBox('发生异常,打印不能完成!','警告',MB_OK or MB_ICONWARNING);
  end;
end;

procedure TfmCjtjb.BitBtn2Click(Sender: TObject);
begin
  if SaveDialog1.Execute() then
  try
    f1book1.Write(SaveDialog1.FileName,F1FileExcel97);
    if Application.MessageBox('存储完毕,是否打开Excel文件?','提示',MB_YESNO or MB_ICONQUESTION)=IDYES then
      shellExecute(Handle,'open',pchar(SaveDialog1.FileName),'0','0',SW_MAXIMIZE);
  except
    Application.MessageBox('发生意外,存储失败!','警告',MB_OK or MB_ICONWARNING);
  end;
end;

procedure TfmCjtjb.BitBtn3Click(Sender: TObject);
begin
  ibQuery1.Transaction.Active:=false;
  //语文各分数段
  f1book1.NumberRC[4,3]:=fsd('yuwen',140,150);//分数段计算
  f1book1.NumberRC[4,4]:=fsd('yuwen',130,139);
  f1book1.NumberRC[4,5]:=fsd('yuwen',120,129);
  f1book1.NumberRC[4,6]:=fsd('yuwen',110,119);
  f1book1.NumberRC[4,7]:=fsd('yuwen',100,109);
  f1book1.NumberRC[4,8]:=fsd('yuwen',90,99);
  f1book1.NumberRC[4,9]:=fsd('yuwen',80,89);
  f1book1.NumberRC[4,10]:=fsd('yuwen',70,79);
  f1book1.NumberRC[4,11]:=fsd('yuwen',60,69);
  f1book1.NumberRC[4,12]:=fsd('yuwen',50,59);
  f1book1.NumberRC[4,13]:=fsd('yuwen',40,49);
  f1book1.NumberRC[4,14]:=fsd('yuwen',30,39);
  f1book1.NumberRC[4,15]:=fsd('yuwen',20,29);
  f1book1.NumberRC[4,16]:=fsd('yuwen',10,19);
  f1book1.NumberRC[4,17]:=fsd('yuwen',0,9);

  //数学各分数段
  f1book1.NumberRC[6,3]:=fsd('shuxue',140,150);//分数段计算
  f1book1.NumberRC[6,4]:=fsd('shuxue',130,139);
  f1book1.NumberRC[6,5]:=fsd('shuxue',120,129);
  f1book1.NumberRC[6,6]:=fsd('shuxue',110,119);
  f1book1.NumberRC[6,7]:=fsd('shuxue',100,109);
  f1book1.NumberRC[6,8]:=fsd('shuxue',90,99);
  f1book1.NumberRC[6,9]:=fsd('shuxue',80,89);
  f1book1.NumberRC[6,10]:=fsd('shuxue',70,79);
  f1book1.NumberRC[6,11]:=fsd('shuxue',60,69);
  f1book1.NumberRC[6,12]:=fsd('shuxue',50,59);
  f1book1.NumberRC[6,13]:=fsd('shuxue',40,49);
  f1book1.NumberRC[6,14]:=fsd('shuxue',30,39);
  f1book1.NumberRC[6,15]:=fsd('shuxue',20,29);
  f1book1.NumberRC[6,16]:=fsd('shuxue',10,19);
  f1book1.NumberRC[6,17]:=fsd('shuxue',0,9);

  //英语各分数段
  f1book1.NumberRC[8,3]:=fsd('waiyu',140,150);//分数段计算
  f1book1.NumberRC[8,4]:=fsd('waiyu',130,139);
  f1book1.NumberRC[8,5]:=fsd('waiyu',120,129);
  f1book1.NumberRC[8,6]:=fsd('waiyu',110,119);
  f1book1.NumberRC[8,7]:=fsd('waiyu',100,109);
  f1book1.NumberRC[8,8]:=fsd('waiyu',90,99);
  f1book1.NumberRC[8,9]:=fsd('waiyu',80,89);
  f1book1.NumberRC[8,10]:=fsd('waiyu',70,79);
  f1book1.NumberRC[8,11]:=fsd('waiyu',60,69);
  f1book1.NumberRC[8,12]:=fsd('waiyu',50,59);
  f1book1.NumberRC[8,13]:=fsd('waiyu',40,49);
  f1book1.NumberRC[8,14]:=fsd('waiyu',30,39);
  f1book1.NumberRC[8,15]:=fsd('waiyu',20,29);
  f1book1.NumberRC[8,16]:=fsd('waiyu',10,19);
  f1book1.NumberRC[8,17]:=fsd('waiyu',0,9);


  //计算语文平均分,标准差,最高,最低
  ibQuery1.Close;
  ibQuery1.SQL.Text:='select avg(yuwen) as myavg from student';
  ibQuery1.Open;
  f1book1.NumberRC[4,18]:=ibQuery1.FieldByName('myavg').AsFloat;
  f1book1.NumberRC[4,19]:=stdev('yuwen');
  f1Book1.NumberRC[4,20]:=jgl('yuwen',90);
  ibQuery1.Close;
  ibQuery1.SQL.Text:='select max(yuwen) as mymax from student';
  ibQuery1.Open;
  f1Book1.NumberRC[4,21]:=ibQuery1.FieldByName('mymax').AsFloat;
  ibQuery1.Close;
  ibQuery1.SQL.Text:='select min(yuwen) as mymin from student';
  ibQuery1.Open;
  f1Book1.NumberRC[4,22]:=ibQuery1.FieldByName('mymin').AsFloat;
  //计算数学平均分,标准差,最高,最低
  ibQuery1.Close;
  ibQuery1.SQL.Text:='select avg(shuxue) as myavg from student';
  ibQuery1.Open;
  f1book1.NumberRC[6,18]:=ibQuery1.FieldByName('myavg').AsFloat;
  f1book1.NumberRC[6,19]:=stdev('shuxue');
  f1Book1.NumberRC[6,20]:=jgl('shuxue',90);
  ibQuery1.Close;
  ibQuery1.SQL.Text:='select max(shuxue) as mymax from student';
  ibQuery1.Open;
  f1Book1.NumberRC[6,21]:=ibQuery1.FieldByName('mymax').AsFloat;
  ibQuery1.Close;
  ibQuery1.SQL.Text:='select min(shuxue) as mymin from student';
  ibQuery1.Open;
  f1Book1.NumberRC[6,22]:=ibQuery1.FieldByName('mymin').AsFloat;
  //计算英语平均分,标准差,最高,最低
  ibQuery1.Close;
  ibQuery1.SQL.Text:='select avg(waiyu) as myavg from student';
  ibQuery1.Open;
  f1book1.NumberRC[8,18]:=ibQuery1.FieldByName('myavg').AsFloat;
  f1book1.NumberRC[8,19]:=stdev('waiyu');
  f1Book1.NumberRC[8,20]:=jgl('waiyu',90);
  ibQuery1.Close;
  ibQuery1.SQL.Text:='select max(waiyu) as mymax from student';
  ibQuery1.Open;
  f1Book1.NumberRC[8,21]:=ibQuery1.FieldByName('mymax').AsFloat;
  ibQuery1.Close;
  ibQuery1.SQL.Text:='select min(waiyu) as mymin from student';
  ibQuery1.Open;
  f1Book1.NumberRC[8,22]:=ibQuery1.FieldByName('mymin').AsFloat;

  //政治各分数段
  f1book1.NumberRC[12,3]:=fsd('zhengzhi',64,70);//分数段计算
  f1book1.NumberRC[12,4]:=fsd('zhengzhi',57,63);
  f1book1.NumberRC[12,5]:=fsd('zhengzhi',50,56);
  f1book1.NumberRC[12,6]:=fsd('zhengzhi',43,49);
  f1book1.NumberRC[12,7]:=fsd('zhengzhi',36,42);
  f1book1.NumberRC[12,8]:=fsd('zhengzhi',29,35);
  f1book1.NumberRC[12,9]:=fsd('zhengzhi',22,28);
  f1book1.NumberRC[12,10]:=fsd('zhengzhi',15,21);
  f1book1.NumberRC[12,11]:=fsd('zhengzhi',8,14);
  f1book1.NumberRC[12,12]:=fsd('zhengzhi',0,7);
  //计算政治平均分,标准差,最高,最低
  ibQuery1.Close;
  ibQuery1.SQL.Text:='select avg(zhengzhi) as myavg from student';
  ibQuery1.Open;
  f1book1.NumberRC[12,13]:=ibQuery1.FieldByName('myavg').AsFloat;
  f1book1.NumberRC[12,14]:=stdev('zhengzhi');
  f1Book1.NumberRC[12,15]:=jgl('zhengzhi',42);
  ibQuery1.Close;
  ibQuery1.SQL.Text:='select max(zhengzhi) as mymax from student';
  ibQuery1.Open;
  f1Book1.NumberRC[12,16]:=ibQuery1.FieldByName('mymax').AsFloat;
  ibQuery1.Close;
  ibQuery1.SQL.Text:='select min(zhengzhi) as mymin from student';
  ibQuery1.Open;
  f1Book1.NumberRC[12,17]:=ibQuery1.FieldByName('mymin').AsFloat;

  //物理各分数段
  f1book1.NumberRC[16,3]:=fsd('wuli',82,90);//分数段计算
  f1book1.NumberRC[16,4]:=fsd('wuli',73,81);
  f1book1.NumberRC[16,5]:=fsd('wuli',64,72);
  f1book1.NumberRC[16,6]:=fsd('wuli',54,63);
  f1book1.NumberRC[16,7]:=fsd('wuli',45,53);
  f1book1.NumberRC[16,8]:=fsd('wuli',36,44);
  f1book1.NumberRC[16,9]:=fsd('wuli',27,35);
  f1book1.NumberRC[16,10]:=fsd('wuli',18,26);
  f1book1.NumberRC[16,11]:=fsd('wuli',9,17);
  f1book1.NumberRC[16,12]:=fsd('wuli',0,8);
  //计算物理平均分,标准差,最高,最低
  ibQuery1.Close;
  ibQuery1.SQL.Text:='select avg(wuli) as myavg from student';
  ibQuery1.Open;
  f1book1.NumberRC[16,13]:=ibQuery1.FieldByName('myavg').AsFloat;
  f1book1.NumberRC[16,14]:=stdev('wuli');
  f1Book1.NumberRC[16,15]:=jgl('wuli',54);
  ibQuery1.Close;
  ibQuery1.SQL.Text:='select max(wuli) as mymax from student';
  ibQuery1.Open;
  f1Book1.NumberRC[16,16]:=ibQuery1.FieldByName('mymax').AsFloat;
  ibQuery1.Close;
  ibQuery1.SQL.Text:='select min(wuli) as mymin from student';
  ibQuery1.Open;
  f1Book1.NumberRC[16,17]:=ibQuery1.FieldByName('mymin').AsFloat;

  //化学各分数段
  f1book1.NumberRC[20,3]:=fsd('huaxue',54,60);//分数段计算
  f1book1.NumberRC[20,4]:=fsd('huaxue',48,53);
  f1book1.NumberRC[20,5]:=fsd('huaxue',42,47);
  f1book1.NumberRC[20,6]:=fsd('huaxue',36,41);
  f1book1.NumberRC[20,7]:=fsd('huaxue',30,35);
  f1book1.NumberRC[20,8]:=fsd('huaxue',24,29);
  f1book1.NumberRC[20,9]:=fsd('huaxue',18,23);
  f1book1.NumberRC[20,10]:=fsd('huaxue',12,17);
  f1book1.NumberRC[20,11]:=fsd('huaxue',6,11);
  f1book1.NumberRC[20,12]:=fsd('huaxue',0,5);
  //计算化学平均分,标准差,最高,最低
  ibQuery1.Close;
  ibQuery1.SQL.Text:='select avg(huaxue) as myavg from student';
  ibQuery1.Open;
  f1book1.NumberRC[20,13]:=ibQuery1.FieldByName('myavg').AsFloat;
  f1book1.NumberRC[20,14]:=stdev('huaxue');
  f1Book1.NumberRC[20,15]:=jgl('huaxue',36);
  ibQuery1.Close;
  ibQuery1.SQL.Text:='select max(huaxue) as mymax from student';
  ibQuery1.Open;
  f1Book1.NumberRC[20,16]:=ibQuery1.FieldByName('mymax').AsFloat;
  ibQuery1.Close;
  ibQuery1.SQL.Text:='select min(huaxue) as mymin from student';
  ibQuery1.Open;
  f1Book1.NumberRC[20,17]:=ibQuery1.FieldByName('mymin').AsFloat;

  //历史各分数段
  f1book1.NumberRC[24,3]:=fsd('lishi',54,60);//分数段计算
  f1book1.NumberRC[24,4]:=fsd('lishi',48,53);
  f1book1.NumberRC[24,5]:=fsd('lishi',42,47);
  f1book1.NumberRC[24,6]:=fsd('lishi',36,41);
  f1book1.NumberRC[24,7]:=fsd('lishi',30,35);
  f1book1.NumberRC[24,8]:=fsd('lishi',24,29);
  f1book1.NumberRC[24,9]:=fsd('lishi',18,23);
  f1book1.NumberRC[24,10]:=fsd('lishi',12,17);
  f1book1.NumberRC[24,11]:=fsd('lishi',6,11);
  f1book1.NumberRC[24,12]:=fsd('lishi',0,5);
  //计算历史平均分,标准差,最高,最低
  ibQuery1.Close;
  ibQuery1.SQL.Text:='select avg(lishi) as myavg from student';
  ibQuery1.Open;
  f1book1.NumberRC[24,13]:=ibQuery1.FieldByName('myavg').AsFloat;
  f1book1.NumberRC[24,14]:=stdev('lishi');
  f1Book1.NumberRC[24,15]:=jgl('lishi',36);
  ibQuery1.Close;
  ibQuery1.SQL.Text:='select max(lishi) as mymax from student';
  ibQuery1.Open;
  f1Book1.NumberRC[24,16]:=ibQuery1.FieldByName('mymax').AsFloat;
  ibQuery1.Close;
  ibQuery1.SQL.Text:='select min(lishi) as mymin from student';
  ibQuery1.Open;
  f1Book1.NumberRC[24,17]:=ibQuery1.FieldByName('mymin').AsFloat;
end;

function TfmCjtjb.fsd(kmName: String; low, high: Integer): Integer;
begin
  ibQuery1.Close;
  ibQuery1.SQL.Text:='select count(*) as cnt from student where '+
    kmName+'>='+IntTostr(low)+' and '+kmName+'<='+IntTostr(high);
  ibQuery1.Prepare;
  ibQuery1.Open;
  result:=ibQuery1.FieldByName('cnt').AsInteger;
end;

function TfmCjtjb.jgl(kmName: String;bzf:Real): Real;
var
  i,j:Integer;
begin
  ibQuery1.Close;
  ibQuery1.SQL.Text:='select count(*) as cnt from student';
  ibQuery1.Open;
  i:=ibQuery1.FieldByName('cnt').AsInteger;
  ibQuery1.Close;
  ibQuery1.SQL.Text:='select count(*) as cnt from student where '+kmName+'>='+floatToStr(bzf);
  ibQuery1.Open;
  j:=ibQuery1.FieldByName('cnt').AsInteger;
  result:=j/i;
end;

function TfmCjtjb.stdev(kmname: String): Real;
var
  avg,avg1,sum1:Real;
begin
  ibQuery1.Close;
  ibQuery1.SQL.Text:='select avg('+kmname+') as myavg from student';
  ibQuery1.Open;
  avg:=ibQuery1.FieldByName('myavg').AsFloat;
  ibQuery1.Close;
  ibQuery1.SQL.Text:='select '+kmname+' from student';
  ibQuery1.Open;
  ibQuery1.First;
  sum1:=0;
  while not ibQuery1.Eof do
  begin
    sum1:=sum1+power(ibQuery1.FieldByName(kmName).AsFloat-avg,2);
    ibQuery1.Next;
  end;
  avg1:=sum1/ibQuery1.RecordCount;
  result:=sqrt(avg1);
end;

end.

⌨️ 快捷键说明

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