📄 unit3.pas
字号:
{**
函数
包括数据拆分 function ChaiFen(T:String;Line:Byte):TChengJi;
计算 procedure JiSuan( XueSheng: TZongChengJi;
KeMuShu: Byte);
}
unit Unit3;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TChengJi = Record
KeCheng,Fenshu: String;
XueFen: Real;
end;
TZongChengJi = class
ChengJi: array[1..150] of TChengJi;
procedure clear();
end;
function ChaiFen( T:String;LineNo:Byte):TChengJi;
procedure JiSuan( XueSheng: TZongChengJi;
KeMuShu: Byte);
var
XueSheng: TZongChengJi;
ZXJ, //总学分积
ZXS, //总学分数(xuefen)
ZC, //总成绩
PXJ, //平均学分积 (zhiyu)
PC: Real;//平均成绩
GuaKeShu: Byte;//挂科数 (GuaKeBX)
ClmMin:Byte= 10;
implementation
function ChaiFen( T:String;LineNo:Byte):TChengJi;
Var
I,J,L,M:Byte;
K:Char;
U:array[1..3] of array[0..40] of char;
begin
xuesheng:= tzongchengji.Create;
I:= 1;
J:= 1;
L:= 0;
if T[length(T)]= '?' then
M:= Length(T)-1
else M:= Length(T);
if M>= ClmMin then
begin
while J<= M do
begin
K:= T[J];
if K<> #9 then //#9表示空格
begin
U[I][L]:= K;
L:= L+1;
end
else
begin
U[I][L]:= char(0);
I:= I+1;
L:= 0;
end;
J:= J+1;
end;
U[I][L]:= char(0);
XueSheng.ChengJi[LineNo].KeCheng:= U[1];
XueSheng.ChengJi[LineNo].Fenshu:= U[2];
XueSheng.ChengJi[LineNo].XueFen:= StrToFloat(U[3]);
Result:= XueSheng.chengji[LineNo];
end;
end;
procedure JiSuan( XueSheng: TZongChengJi;
KeMuShu: Byte);
Var
I: Byte;
fenshusz: real;
begin
ZXJ:= 0;
ZXS:= 0;
ZC:= 0;
GuaKeShu:= 0;
if kemushu<> 0 then begin
for I:= 1 to KeMuShu do
begin
if XueSheng.chengji[I].FenShu= '不及格' then XueSheng.chengji[I].FenShu:= '50';
if XueSheng.chengji[I].FenShu= '及格' then XueSheng.chengji[I].FenShu:= '60';
if XueSheng.chengji[I].FenShu= '合格' then XueSheng.chengji[I].FenShu:= '60';
if XueSheng.chengji[I].FenShu= '良好' then XueSheng.chengji[I].FenShu:= '75';
if XueSheng.chengji[I].FenShu= '优良' then XueSheng.chengji[I].FenShu:= '85';
if XueSheng.chengji[I].FenShu= '优秀' then XueSheng.chengji[I].FenShu:= '95';
if XueSheng.chengji[I].FenShu= '中等' then XueSheng.chengji[I].FenShu:= '80';
fenshusz:= strtofloat(XueSheng.chengji[I].FenShu);
ZXJ := ZXJ + fenshusz * XueSheng.chengji[I].XueFen;
ZXS := ZXS + XueSheng.chengji[I].XueFen;
ZC := ZC + fenshusz;
if fenshusz< 60 then
GuaKeShu:= GuaKeShu+ 1;
end;
if zxs<> 0 then
PXJ := ZXJ/ZXS;
PC := ZC/KeMuShu;
end;
end;
procedure TZongChengJi.clear();
var i:byte;
begin
for i:= 1 to 150 do begin
ChengJi[i].kecheng:= '';
ChengJi[i].Fenshu:= '0';
chengji[i].XueFen:= 0;
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -