⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bjcjunit.pas

📁 高校学生学籍管理系统源码
💻 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.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -