📄 charfrm.pas
字号:
unit CharFrm;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
TeEngine, Series, TeeProcs, Chart, mxgraph,Tabnotbk, ExtCtrls,
mxpivsrc, mxDB, Db, DBTables, mxtables, mxstore, Grids, mxgrid, DBChart,
ComCtrls,IniFiles, Buttons;
type
TChartForm = class(TForm)
DecisionCube1: TDecisionCube;
DecisionQuery1: TDecisionQuery;
DecisionSource1: TDecisionSource;
DecisionPivot1: TDecisionPivot;
Query1: TQuery;
NoteBook: TTabbedNotebook;
DecisionGrid1: TDecisionGrid;
Chart1: TChart;
PieChart: TDecisionGraph;
BarSeries1: TBarSeries;
Series2: TBarSeries;
Series5: TBarSeries;
Series6: TBarSeries;
Series3: TBarSeries;
Series4: TBarSeries;
Series1: TBarSeries;
sbState: TSpeedButton;
Series7: TPieSeries;
Chart2: TChart;
Series8: TLineSeries;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormCreate(Sender: TObject);
procedure sbStateClick(Sender: TObject);
procedure NoteBookClick(Sender: TObject);
private
{ Private declarations }
public
// procedure GetFieldMax(var FieldMax:array of integer);
{ Public declarations }
end;
var
ChartForm: TChartForm;
implementation
uses MainFrm;
{$R *.DFM}
procedure TChartForm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
MainForm.Show;
end;
procedure TChartForm.sbStateClick(Sender: TObject);
begin
sbState.Tag:=(sbState.Tag+1) mod 2;
if sbState.Tag=0 then
begin
with Chart1.Title.Text do
begin
Clear;
Add('各分数段人数统计');
end;
Chart1.Series[0].Active:=True;
Chart1.Series[1].Active:=False;
end
else begin
with Chart1.Title.Text do
begin
Clear;
Add('各分数段人数比例');
end;
Chart1.Series[1].Active:=True;
Chart1.Series[0].Active:=False;
end;
end;
procedure TChartForm.NoteBookClick(Sender: TObject);
Type
TTwoVal=record
Min,Max:integer;
Title:string;
end;
var
AFenShuDuan: array[1..5] of TTwoVal;
i:integer;
Score:single;
rate:array [1..5] of integer;
StrSQL,FieldName:string;
FieldMax:array[0..40]of integer;
begin
AFenShuDuan[1].Min:=0;
AFenShuDuan[1].Max:=60;
AFenShuDuan[1].Title:='不及格';
AFenShuDuan[2].Min:=60;
AFenShuDuan[2].Max:=70;
AFenShuDuan[2].Title:='<70';
AFenShuDuan[3].Min:=70;
AFenShuDuan[3].Max:=80;
AFenShuDuan[3].Title:='良好';
AFenShuDuan[4].Min:=80;
AFenShuDuan[4].Max:=90;
AFenShuDuan[4].Title:='<90';
AFenShuDuan[5].Min:=90;
AFenShuDuan[5].Max:=100;
AFenShuDuan[5].Title:='优秀';
for i:=1 to 5 do Rate[i]:=0;
DecisionPivot1.Enabled:=True;
if NoteBook.PageIndex=1{'分数分布'}then
begin
Chart1.Series[0].Clear;
Chart1.Series[1].Clear;
Query1.Close;
Query1.SQL.Text:='Select * from StudentScore'+MainFrm.SQLCond;
Query1.Open;
Query1.First;
while not Query1.Eof do
begin
Score:=Query1.FieldByName('总成绩').AsFloat;
for i:=1 to 5 do
if (Score>=AFenShuDuan[i].Min)
and(Score<AFenShuDuan[i].Max)then
Rate[i]:=Rate[i]+1;
Query1.Next;
end;
for i:=1 to 5 do
begin
Chart1.Series[0].AddXY(i,Rate[i],AFenShuDuan[i].Title,clTeeColor);
Chart1.Series[1].AddXY(i,Rate[i]/Query1.RecordCount,AFenShuDuan[i].Title,clTeeColor);
end;
DecisionPivot1.Enabled:=False;
end;
if NoteBook.ActivePage='得分率'then
begin
Chart2.Series[0].Clear;
Query1.Close;
StrSQL:='SELECT AVG( 第一题 ) 第一题, AVG( 第二题 ) 第二题,'+
' AVG( 第三题 ) 第三题, AVG( 第四题 ) 第四题, '+
'AVG( 第五题 ) 第五题, AVG( 第六题 ) 第六题, '+
'AVG( 第七题 ) 第七题, AVG( 第八题 ) 第八题, '+
'AVG( 第九题 ) 第九题, AVG( 第十题 ) 第十题'
{+', 'AVG( 第十一 ) 第十一, AVG( 第十二 ) 第十二, '+
'AVG( 第十三 ) 第十三, AVG( 第十四 ), AVG( 第十五 ),'+
' AVG( 第十六 ), AVG( 第十七 ), AVG( 第十八 ), '+
'AVG( 第十九 ), AVG( 第二十 ), AVG( 二十一 ), '+
'AVG( 二十二 ), AVG( 二十三 ), AVG( 二十四 ),'+
' AVG( 二十五 ), AVG( 二十六 ), AVG( 二十七 ),'+
' AVG( 二十八 ), AVG( 二十九 ), AVG( 第三十 ), '+
'AVG( 三十一 ), AVG( 三十二 ), AVG( 三十三 ), '+
'AVG( 三十四 ), AVG( 三十五 ), AVG( 三十六 ),'+
' AVG( 三十七 ), AVG( 三十八 ), AVG( 三十九 ), AVG( 第四十 )'}
+' FROM StudentScore'+MainFrm.SQLCond;
Query1.SQL.Text:=StrSQL;
Query1.Open;
Query1.First;
MainForm.GetFieldMax(FieldMax);
for i:=0 to Query1.FieldCount-1 do
begin
if FieldMax[i]>0 then
begin
FieldName:=Query1.Fields[i].FieldName;
Score:=Query1.Fields[i].asinteger;
Chart2.Series[0].AddXY(i+1,Score/FieldMax[i],' '+
IntToStr(i+1)+' ',clTeeColor);
end;
end;
DecisionPivot1.Enabled:=False;
end;
if (NoteBook.ActivePage='表格')or(NoteBook.ActivePage='综合图')then
begin
end;
end;
procedure TChartForm.FormCreate(Sender: TObject);
begin
NoteBook.PageIndex:=0;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -