【delphi开源代码栏目提醒】:网学会员在delphi开源代码频道为大家收集整理了bjcjunit.pas提供大家参考,希望对大家有所帮助!
unit bjcjunit;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Mask, ExtCtrls, DB, DBTables;
type
Tbjcjtemp = class(TForm)
Panel1: TPanel;
GroupBox1: TGroupBox;
Label1: TLabel;
ComboBox1: TComboBox;
ComboBox2: TComboBox;
Label2: TLabel;
Label4: TLabel;
MaskEdit1: TMaskEdit;
Button1: TButton;
qry: TQuery;
DataSource1: TDataSource;
qry1: TQuery;
DataSource2: TDataSource;
procedure FormCreate(Sender: TObject);
procedure ComboBox1Exit(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
bjcjtemp: Tbjcjtemp;
implementation
uses datadomule, bjzbunit;
{$R *.dfm}
procedure Tbjcjtemp.FormCreate(Sender: TObject);
begin
combobox1.Items.clear;
with datamodule1.qry_bycp do
begin
close;
sql.clear;
sql.add('select * from zyb0') ;
open;
first;
if recordcount>0 then
// combobox1.text:=Fields[1].asstring;
repeat
combobox1.items.add(fields[1].asstring);
until findnext=false;
end;
end;
procedure Tbjcjtemp.ComboBox1Exit(Sender: TObject);
begin
combobox2.Items.Clear;
with datamodule1.qry_bycp do
begin
close;
sql.Clear;
sql.add('select * from bjb0 where zymc=:name');
parambyname('name').asstring:=combobox1.text;
open;
if recordcount>0 then
combobox2.text:=Fields[0].asstring;
repeat
combobox2.items.add(fields[0].asstring);
until findnext=false;
end;
end;
procedure Tbjcjtemp.Button1Click(Sender: TObject);
var i,s,zf:integer; //s 课程数 zf 总分
pjf :real; //平均分
begin
zf:=0;
pjf:=0;
with datamodule1.qry_bjcj do //在bjzb班级总表中插入全班学生的的
begin
close;
sql.Clear ;
sql.Add('delete from bjzb');
execsql;
sql.Clear ;
sql.Add('insert into bjzb(xsxh_id,xm00,pjf) values('+'''00'''+',''00'',''999'')'); //第一行存放课程名
//sql.add('insert into bjzb(xsh_id,xm00) values(''00'',''00'')');
execsql;
sql.Clear ;
sql.Add('insert into bjzb(xsxh_id,xm00) select xsxh_id,xm00 from xsmc where bjh0=:id');
parambyname('id').AsString:=combobox2.Text;
execsql;
sql.Clear ;
sql.Add('select * from bjzb');
execsql;
open;
first;
end;
with qry do
begin
close;
sql.Clear ;
sql.Add('select distinct kcmc,xf00 from cjb0 where bjh0=:id and kkxq=:xq and kclb='+''''+'必修'+'''');
parambyname('id').AsString:=combobox2.Text;
parambyname('xq').AsString:=maskedit1.Text;
execsql;
open;
datamodule1.qry_bjcj.Edit;
i:=0;
s:=qry.RecordCount ;
while not eof do
begin
if i<qry.RecordCount then //添加本学期的课程和学分
begin
datamodule1.qry_bjcj.Fields[i+2].AsString:=qry.Fields[0].AsString+' '+qry.Fields[1].AsString;
i:=i+1;
qry.Next;
end;
end;
datamodule1.qry_bjcj.Post;
datamodule1.qry_bjcj.next; // 指向第一个学生
end;
while not datamodule1.qry_bjcj.Eof do
begin //1
qry.first; //指向第一门课
with qry1 do
begin //2
close;
i:=0;
datamodule1.qry_bjcj.Edit;
while not qry.eof do
begin
if i<qry.RecordCount then
begin
sql.Clear ;
sql.add('select distinct cj00 from cjb0 where kkxq=:xq and xsxh_id=:xh and kcmc=:mc');
parambyname('xq').AsString:=maskedit1.Text;
parambyname('xh').AsString:=datamodule1.qry_bjcj.Fields[0].AsString;
parambyname('mc').AsString:=qry.Fields[0].AsString;
execsql;
open;
if qry1.FindFirst then //如果该课的成绩不为空
begin
//if strtoint(qry1.Fields[0].AsString)<60 then
//datamodule1.qry_bjcj.Fields[i+2].AsString:=qry1.Fields[0].AsString+'*'
//else
datamodule1.qry_bjcj.Fields[i+2].AsString:=qry1.Fields[0].AsString;
end;
i:=i+1;
end;
qry.Next; //下一门课
end;
datamodule1.qry_bjcj.Edit;
datamodule1.qry_bjcj.Post;
end; //2
datamodule1.qry_bjcj.Next; //下一个学生
end; //1
i:=0;
with datamodule1.qry_bjcj do //计算平均分
begin
close;
sql.Clear ;
sql.add('select * from bjzb ');
datamodule1.qry_bjcj.Open;
first;
next;//第一个学生
while not datamodule1.qry_bjcj.Eof do
begin
while i<s do
begin
if (datamodule1.qry_bjcj.Fields[i+2].AsString<>'') then
zf:=strtoint(datamodule1.qry_bjcj.Fields[i+2].AsString)+zf
else
zf:=zf+0;
i:=i+1;
end;
pjf:=zf/s;
i:=0;
zf:=0;
datamodule1.qry_bjcj.Edit;
datamodule1.qry_bjcj.Fields[20].AsString:=floattostr(pjf);
datamodule1.qry_bjcj.Post;
datamodule1.qry_bjcj.Next;
end;
close; //给不及格的课程添加*号
sql.Clear ;
sql.add('select * from bjzb ');
datamodule1.qry_bjcj.Open;
first;
next;//第一个学生
while not eof do
begin
i:=0;
while i<s do
begin
if (datamodule1.qry_bjcj.Fields[i+2].asstring<>'') and (strtofloat(datamodule1.qry_bjcj.Fields[i+2].asstring)<60) then
begin
datamodule1.qry_bjcj.Edit;
datamodule1.qry_bjcj.Fields[i+2].asstring:=datamodule1.qry_bjcj.Fields[i+2].asstring+'*';
datamodule1.qry_bjcj.Post;
end;
i:=i+1;
end;
datamodule1.qry_bjcj.Next;
end;
end;
////////////////////////////////////////////////////////////////////
//以下为添加选修课成绩
i:=0;
with datamodule1.qry_bjcj do
begin
close;
sql.Clear ;
sql.Add('select * from bjzb');
open;
first;
next //第一个学生
end;
while not datamodule1.qry_bjcj.Eof do
begin //1
i:=0;
with qry do
begin
close;
sql.Clear ;
sql.Add('select kcmc,xf00,cj00 from cjb0 where xsxh_id=:id and kkxq=:xq and kclb='+''''+'选修'+'''');
parambyname('id').AsString:=datamodule1.qry_bjcj.Fields[0].AsString;
parambyname('xq').AsString:=maskedit1.Text;
execsql;
open;
s:=qry.RecordCount ;
if s>0 then //有选修课
begin
if s>3 then
s:=3; //一学期选修课不超过3门
while i<s do
begin
datamodule1.qry_bjcj.Edit;
datamodule1.qry_bjcj.Fields[i+14].AsString:=qry.Fields[0].AsString+' '+qry.Fields[1].AsString;
datamodule1.qry_bjcj.Fields[i+17].AsString:=qry.Fields[2].AsString;
datamodule1.qry_bjcj.post;
i:=i+1;
qry.Next ;
end;
end;
end;
datamodule1.qry_bjcj.Next; //point to next student
end; //1
////////////////////////////////////////////////////////////////////////
//计算名次
with datamodule1.qry_bjcj do
begin
close;
sql.Clear ;
sql.Add('select * from bjzb order by pjf desc');
open;
first;
i:=0;
s:=recordcount;
while not eof do
begin
datamodule1.qry_bjcj.edit;
datamodule1.qry_bjcj.fields[21].asstring:=inttostr(i);
i:=i+1;
next;
end;
end;
////////////////////////////
/////////////////////
with datamodule1.qry_bjcj do
begin
close;
sql.Clear ;
sql.Add('select * from bjzb');
open;
first;
edit;
fields[0].AsString:='';
fields[1].AsString:='';
fields[20].AsString:='';
fields[21].AsString:='';
post;
end;
bjzb:=tbjzb.create(self);
bjzb.showmodal;
end;
end.
上一篇:
FrmAttachEdit.frm
下一篇:
土木建筑工程的可持续发展教育