📄 unitcjtjb.pas.~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 + -