📄 averagetoolunit.pas
字号:
unit AverageToolUnit;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DBCtrls, StdCtrls, ExtCtrls, Grids, DBGrids, Buttons;
type
TAverageToolForm = class(TForm)
Panel2: TPanel;
DBGrid1: TDBGrid;
Panel1: TPanel;
Bevel1: TBevel;
Label1: TLabel;
Label2: TLabel;
ComboBox1: TComboBox;
ComboBox2: TComboBox;
DBNavigator1: TDBNavigator;
ComboBox3: TComboBox;
Label3: TLabel;
Bevel2: TBevel;
Bevel3: TBevel;
Label4: TLabel;
SpeedButton1: TSpeedButton;
procedure FormCreate(Sender: TObject);
procedure ComboBox1Change(Sender: TObject);
procedure ComboBox2Change(Sender: TObject);
procedure ComboBox3Change(Sender: TObject);
procedure SpeedButton1Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
public
{ Public declarations }
end;
var
AverageToolForm: TAverageToolForm;
implementation
uses chartunit, datamoduleUnit;
{$R *.dfm}
procedure TAverageToolForm.FormCreate(Sender: TObject);
var year,month,day:word;
n:integer;
thisyear:integer;
begin
DecodeDate(now, Year, Month, Day);
thisyear:=round(year);
for n:=1 to 20 do
begin
combobox1.Items.Add(inttostr(thisyear));
thisyear:=thisyear-1;
end;
combobox1.ItemIndex:=0;
with datamodule1.queryall do
begin
close;
SQL.Clear;
sql.Add('select distinct cname from grade where year=:year');
Parameters.ParamByName('year').Value:=strtoint(combobox1.Text);
prepared;
open;
if RecordCount=0 then
combobox2.Items.Add('<无记录>')
else
begin
while not eof do
begin
combobox2.Items.Add( FieldByName('cname').AsString);
next;
end;
end;
close;
end;
dbgrid1.Columns[0].FieldName:='sno' ;
dbgrid1.Columns[1].FieldName:='cname' ;
dbgrid1.Columns[2].FieldName:='tname' ;
dbgrid1.Columns[3].FieldName:='grade';
dbgrid1.Columns[4].FieldName:='year';
dbgrid1.Columns[5].FieldName:='term';
end;
procedure TAverageToolForm.ComboBox1Change(Sender: TObject);
begin
combobox2.Text:='';
combobox2.Items.Clear;
with datamodule1.queryall do
begin
DisableControls;
close;
SQL.Clear;
sql.Add('select Distinct cname from grade where year=:year');
Parameters.ParamByName('year').Value:=strtoint(combobox1.Text);
prepared;
open;
if RecordCount=0 then
combobox2.Items.Add('<无记录>')
else
while not eof do
begin
combobox2.Items.Add( FieldByName('cname').AsString);
next;
end;
close;
enableControls;
end;
end;
procedure TAverageToolForm.ComboBox2Change(Sender: TObject);
begin
combobox3.Text:='';
combobox3.Items.Clear;
with datamodule1.queryall do
begin
DisableControls;
close;
SQL.Clear;
sql.Add('select Distinct tname from grade where year=:year and cname=:cname');
Parameters.ParamByName('year').Value:=strtoint(combobox1.Text);
Parameters.ParamByName('cname').Value:=combobox2.Text;
prepared;
open;
if RecordCount=0 then
combobox3.Items.Add('<无记录>')
else
while not eof do
begin
combobox3.Items.Add( FieldByName('tname').AsString);
next;
end;
close;
enableControls;
end;
if combobox3.Text=''then
speedbutton1.Enabled:=false;
end;
procedure TAverageToolForm.ComboBox3Change(Sender: TObject);
var sum:real;
you,liang,zhong,jige,bujige:integer;
tempgrade:real;
begin
sum:=0;
you:=0;
liang:=0;
zhong:=0;
jige:=0;
bujige:=0;
with datamodule1.queryall do
begin
close;
SQL.Clear;
sql.Add('select sno,cname,tname,grade,year,term from grade where year=:year and cname=:cname and tname=:tname');
Parameters.ParamByName('year').Value:=strtoint(combobox1.Text);
Parameters.ParamByName('cname').Value:=combobox2.Text;
Parameters.ParamByName('tname').Value:=combobox3.Text;
prepared;
open;
while not eof do
begin
tempgrade:=datamodule1.mystrtofloat(FieldByName('grade').AsString);
sum:=sum+tempgrade;
if tempgrade>=90 then
you:=you+1
else if tempgrade>=80 then
liang:=liang+1
else if tempgrade>=70 then
zhong:=zhong+1
else if tempgrade>=60 then
jige:=jige+1
else bujige:=bujige+1;
next;
end;
if recordcount<>0 then
sum:=sum/RecordCount;
end;
label4.Caption:=combobox1.Text+'年'+#13+combobox3.Text+#13+combobox2.Text+#13+
'平均分为:'+floattostr(sum)+' ';
with datamodule1.tabletemp do
begin
open;
edit;
locate('area','1.优(90-100)',[]);
edit;
fieldbyname('count').AsInteger:=you;
locate('area','2.良(80-89)',[]);
edit;
fieldbyname('count').AsInteger:=liang;
locate('area','3.中(70-79)',[]);
edit;
fieldbyname('count').AsInteger:=zhong;
locate('area','4.及格(60-69)',[]);
edit;
fieldbyname('count').AsInteger:=jige;
locate('area','5.不及格(<59)',[]);
edit;
fieldbyname('count').AsInteger:=bujige;
post;
close;
end;
speedbutton1.Enabled:=true;
end;
procedure TAverageToolForm.SpeedButton1Click(Sender: TObject);
begin
chartform:=tchartform.Create(application);
chartform.Show;
with chartform do
begin
dbchart1.Foot.Text[1]:=combobox1.text+'年 '+'教师:'+combobox3.text+' '+combobox2.text;
dbchart2.Foot.Text[1]:=combobox1.text+'年 '+'教师:'+combobox3.text+' '+combobox2.text;
dbchart3.Foot.Text[1]:=combobox1.text+'年 '+'教师:'+combobox3.text+' '+combobox2.text;
dbchart4.Foot.Text[1]:=combobox1.text+'年 '+'教师:'+combobox3.text+' '+combobox2.text;
end;
end;
procedure TAverageToolForm.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
datamodule1.queryall.Close;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -