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

📄 zhunit.~pas

📁 初学DELPHI编写的“奖学金评定系统”
💻 ~PAS
📖 第 1 页 / 共 3 页
字号:
      rs:= row- 2;//人数
      kcs:= column- 3;//课程数

        {下面将课程类别加入kechengxls中}
        with adoquery1 do begin
          close;
          sql.Clear;
          sql.Add('select * from 必修课 where 所在学期= "'+ xq+ '" and ' + '(专业= "'+ zyj+ '" or 专业1= "'+ zyj+ '" or 专业2= "'+ zyj+ '" or 专业3= "'+ zyj+ '")');
          open;
          //showmessage(sql.GetText);
          while not eof do begin
            temp:= fieldbyname('课程名').AsString;
            for i:= 1 to kcs do begin
              if kechengxls.kc.kecheng[i]= temp then begin
                kechengxls.kc.lx[i]:= 1;
                break;
              end;
            end;
            next;
          end;
          close;
          sql.Clear;
          sql.Add('select * from 专业选修课 where 专业= "'+ zyj+ '" or 专业1= "'+ zyj+ '" or 专业2= "'+ zyj+ '" or 专业3= "'+ zyj+ '" ');
          open;
          while not eof do begin
            temp:= fieldbyname('课程名').AsString;
            for i:= 1 to kcs do begin
              if kechengxls.kc.kecheng[i]= temp then begin
                kechengxls.kc.lx[i]:= 2;
                break;
              end;
            end;
            next;
          end;
          close;
        end;
        {课程类别已加入}
        IsDaSan:= xlsprs(kechengxls, xueshengxls, row, column, kcs, rs);
        {下面将计算结果录入}

        with adoquery1 do begin
          sql.Clear;
          sql.Add('select * from 学籍成绩 where 专业班级= "'+ zybjj+ '"');
          open;
          for i:= 1 to rs do begin
            first;
            while not eof do begin
              if fieldbyname('学号').AsString= xueshengxls.xs[i- 1].xuehao then begin
                edit;
                f1:= fieldbyname('智育成绩').asfloat;
                f2:= fieldbyname('智育学分数').Asfloat;
                fieldbyname('智育成绩').asfloat:= roundto((ZhiYu[i]* XueFen[i]+ f1* f2)/(XueFen[i]+ f2),-4);
                fieldbyname('智育学分数').Asfloat:= XueFen[i]+ f2;
                fieldbyname('必修课挂科门数').AsInteger:= fieldbyname('必修课挂科门数').AsInteger+ GuaKeBX[i];
                fieldbyname('选修课挂科门数').AsInteger:= fieldbyname('选修课挂科门数').AsInteger+ GuaKeXX[i];
                fieldbyname('重修补考挂科门数').AsInteger:= fieldbyname('重修补考挂科门数').AsInteger+ GuaKeCB[i];
                if IsDaSan then begin
                  fieldbyname('体育成绩').asfloat:= 100;
                  fieldbyname('体育课挂科门数').asInteger:= 0;
                end
                else begin
                  fieldbyname('体育成绩').asfloat:= fieldbyname('体育成绩').asfloat+ TiYu[i];
                  fieldbyname('体育课挂科门数').asfloat:= fieldbyname('体育课挂科门数').asfloat+ GuaKeTY[i];
                end;
                post;
                break;
              end;
              next;
            end;
          end;
        end;
        kechengxls.clear;
        xueshengxls.clear;
     // end;
      end;
    end;
    result:= true;
  finally
    screen.Cursor:= crdefault;
    richedit1.Lines.Add(timetostr(time)+'成绩数据录入完毕');
    StatusBar1.Panels[1].Text:= '成绩数据录入完毕';
    Update;
  end;
  end;
end;

function xlsprs(kechengxls: Txlskc; xueshengxls: Txlsxs;row,column,kcs,rs: byte): boolean;
var i,j,k: byte;
    t: string;
    XueSheng: unit3.TZongChengJi;
begin
   xuesheng:= tzongchengji.Create;//初始化变量,很重要!
   result:= true;
  for i:= 1 to rs do begin
    j:= 1;
    for k:= 1 to kcs do begin
      if (kechengxls.kc.lx[k]= 1) or ((kechengxls.kc.lx[k]= 2) and (xueshengxls.xs[i- 1].chengji[k]<> '*')) then begin
        if(xueshengxls.xs[i- 1].chengji[k]= '*') then
          xuesheng.ChengJi[j].Fenshu:= '0'
        else begin
          if AnsiEndsText('*', xueshengxls.xs[i- 1].chengji[k]) then begin
            t:= xueshengxls.xs[i- 1].chengji[k];
            t:= copy(t,1,length(t)- 1);
            if strtofloat(t)> 60 then
              xuesheng.ChengJi[j].Fenshu:= '60'
            else
              xuesheng.ChengJi[j].Fenshu:= t;
          end
          else
            xuesheng.ChengJi[j].Fenshu:= xueshengxls.xs[i- 1].chengji[k];
          end;
        xuesheng.ChengJi[j].XueFen:= kechengxls.kc.xuefen[k];
        j:= j+ 1;
      end;
    end;
    unit3.JiSuan(xuesheng,j- 1);
    zhiyu[i]:= unit3.PXJ;
    xuefen[i]:= unit3.ZXS;
    GuaKeBX[i]:= unit3.GuaKeShu;
    xuesheng.clear;

    j:= 1;
    for k:= 1 to kcs do
      if(kechengxls.kc.lx[k]= 0) then begin
        if(xueshengxls.xs[i- 1].chengji[k]= '*') or (AnsiEndsText('*', xueshengxls.xs[i- 1].chengji[k])) then continue;
        xuesheng.ChengJi[j].Fenshu:= xueshengxls.xs[i- 1].chengji[k];
        xuesheng.ChengJi[j].XueFen:= kechengxls.kc.xuefen[k];
        j:= j+ 1;
      end;
    unit3.JiSuan(xuesheng,j- 1);
    GuaKeXX[i]:= unit3.GuaKeShu;
    xuesheng.clear;

    j:= 1;
    for k:= 1 to kcs do begin
      if(kechengxls.kc.lx[k]= 3) then begin
        if result then result:= false;
        if(xueshengxls.xs[i- 1].chengji[k]= '*') then
          xuesheng.ChengJi[j].Fenshu:= '0'
        else begin
          if AnsiEndsText('*', xueshengxls.xs[i- 1].chengji[k]) then begin
            t:= xueshengxls.xs[i- 1].chengji[k];
            t:= copy(t,1,length(t)- 1);
            if strtofloat(t)> 60 then
              xuesheng.ChengJi[j].Fenshu:= '60'
            else
              xuesheng.ChengJi[j].Fenshu:= t;
          end
          else
            xuesheng.ChengJi[j].Fenshu:= xueshengxls.xs[i- 1].chengji[k];
          end;
        xuesheng.ChengJi[j].XueFen:= kechengxls.kc.xuefen[k];
        j:= j+ 1;
      end;
    end;
    unit3.JiSuan(xuesheng,j- 1);
    TiYu[i]:= unit3.PXJ;
    GuaKeTY[i]:= unit3.GuaKeShu;
    xuesheng.clear;
  end;
end;

procedure WriteIni();
var
  IniFile:TInifile;
  zystr,zybjstr,zybjsstr,zyrsstr: string;
  i,j,count,total: integer;
begin
  try
    Inifilename:= ExtractFilePath(paramstr(0))+'Serv.ini';
    inifile:= TInifile.Create(Inifilename);
    count:= 0;
    total:= 0;
    for i:= 1 to zys do begin
      zystr:= zystr+ zy[i]+ #32;//#32表示空格
      zybjsstr:= zybjsstr+ inttostr(zybjs[i])+ #32;
      zyrsstr:= zyrsstr+ inttostr(zyrs[i])+ #32;
      total:= total+ zyrs[i];
      count:= count+ zybjs[i];
    end;
    for j:= 1 to count do
      zybjstr:= zybjstr+ zybj[j]+ #32;
    inifile.WriteString('专业班级统计','专业',zystr);
    inifile.WriteInteger('专业班级统计','专业数',zys);
    inifile.WriteString('专业班级统计','专业对应班级数',zybjsstr);
    inifile.WriteString('专业班级统计','专业对应人数',zyrsstr);
    inifile.WriteInteger('专业班级统计','专业总人数',total);
    inifile.WriteString('专业班级统计','班级',zybjstr);
    inifile.WriteInteger('专业班级统计','班级总数',bjs);
    inifile.WriteString('资源文件地址','学籍文件',DirXJ);
    inifile.WriteString('资源文件地址','成绩文件夹',FolderCJ);
    inifile.WriteString('资源文件地址','得分文件夹',FolderDF);
    inifile.WriteString('输出文件地址','输出文件夹',FolderRst);
    inifile.WriteFloat('比例分配','智育',propzy);
    inifile.WriteFloat('比例分配','德育',propdy);
    inifile.WriteFloat('比例分配','体育',propty);
    inifile.WriteFloat('比例分配','综合',propzh);
    inifile.WriteFloat('比例分配','甲等综测',jdzc);
    inifile.WriteFloat('比例分配','甲等智育',jdzy);
    inifile.WriteFloat('比例分配','乙等综测',ydzc);
    inifile.WriteFloat('比例分配','乙等智育',ydzy);
    inifile.WriteFloat('比例分配','丙等综测',bdzc);
    inifile.WriteFloat('比例分配','丙等智育',bdzy);
    inifile.WriteFloat('比例分配','总比例',zbl);
    inifile.WriteString('评奖时间信息','评奖学年',XueNian);
  finally
    inifile.Free;
  end;
end;

procedure ReadIni(firstrun: boolean);
var
  str,st,str1: string;
  i,j,k,len: byte;
begin
  try
    Inifilename:= ExtractFilePath(paramstr(0))+'Serv.ini';
    inifile:= TInifile.Create(Inifilename);
    if not firstrun then begin
      zys:= inifile.ReadInteger('专业班级统计','专业数',0);
      bjs:= inifile.ReadInteger('专业班级统计','班级总数',0);
      zyzrs:= inifile.ReadInteger('专业班级统计','专业总人数',0);
      str:= inifile.ReadString('专业班级统计','专业',#32);
      for i:= 1 to length(str) do
        if IsDelimiter(#32, str, i) then
          break;
        len:= i- 1;
      for i:= 1 to zys do
      zy[i]:= copy(str,(i- 1)*(len+ 1)+ 1,len);

      str:= inifile.ReadString('专业班级统计','专业对应班级数',#32);
      for i:= 1 to length(str) do
        if IsDelimiter(#32, str, i) then
          break;
      len:= i- 1;
      for i:= 1 to zys do begin
        st:= copy(str,(i- 1)*(len+ 1)+ 1,len);
        zybjs[i]:= strtoint(st);
      end;

      str:= inifile.ReadString('专业班级统计','班级',#32);
      for i:= 1 to length(str) do
        if IsDelimiter(#32, str, i) then
          break;
      len:= i- 1;
      for i:= 1 to bjs do
        zybj[i]:= copy(str,(i- 1)*(len+ 1)+ 1,len);

      str:= inifile.ReadString('专业班级统计','专业对应人数',#32);
      j:= 1;
      k:= 0;
      for i:= 1 to length(str) do
        if not IsDelimiter(#32, str, i) then
          k:= k+ 1
        else begin
          str1:= copy(str,i- k,k);
          zyrs[j]:= strtoint(str1);
          j:= j+ 1;
          k:= 0;
        end;
      str1:= copy(str,length(str)- k, k+ 1);
      if length(str1)> 0 then
        zyrs[j]:= strtoint(str1);
      end
    else begin
      for i:= 1 to bjs do
        zybj[i]:= '';
      for i:= 1 to zys do begin
        zy[i]:= '';
        zybjs[i]:= 0;
        zyrs[i]:= 0;
      end;
      zys:= 0;
      bjs:= 0;
      zyzrs:= 0;
      end;
  FolderCJ:= inifile.ReadString('资源文件地址','成绩文件夹',ExtractFilePath(paramstr(0))+ '课程成绩xls');
  DirXJ:= inifile.ReadString('资源文件地址','学籍文件',ExtractFilePath(paramstr(0))+ '学籍信息xls\学籍信息.xls');
  FolderDF:= inifile.ReadString('资源文件地址','得分文件夹',ExtractFilePath(paramstr(0))+ '得分信息xls');
  FolderRst:= inifile.ReadString('输出文件地址','输出文件夹',ExtractFilePath(paramstr(0))+ '处理结果xls');
  propzy:= inifile.ReadFloat('比例分配','智育',0.6);
  propdy:= inifile.ReadFloat('比例分配','德育',0.2);
  propty:= inifile.ReadFloat('比例分配','体育',0.1);
  propzh:= inifile.ReadFloat('比例分配','综合',0.1);
  jdzc:= inifile.ReadFloat('比例分配','甲等综测',0.05);
  jdzy:= inifile.ReadFloat('比例分配','甲等智育',0.09);
  ydzc:= inifile.ReadFloat('比例分配','乙等综测',0.13);
  ydzy:= inifile.ReadFloat('比例分配','乙等智育',0.18);
  bdzc:= inifile.ReadFloat('比例分配','丙等综测',0.23);
  bdzy:= inifile.ReadFloat('比例分配','丙等智育',0.30);
  zbl:= inifile.ReadFloat('比例分配','总比例',0.10);
  except
    showmessage('配置文件读取错误,程序即将自动关闭');
    application.Terminate;
  end;
end;

procedure Txlsxs.clear();
var
  i,j: integer;
begin
  for i:= 0 to 100 do begin
    for j:= 1 to 100 do
      xs[i].chengji[j]:= #0;
    xs[i].xuehao:= #0;
    xs[i].xingming:= #0;
  end;
end;

procedure Txlskc.clear();
var
  i: integer;
begin
  for i:= 1 to 100 do begin
    kc.kecheng[i]:= #0;
    kc.xuefen[i]:= 0;
    kc.lx[i]:= 0;
  end;
end;

function dyzhCLAuto(): boolean;
var
  dir,temp: string;
  tmp,tp,t: array[0..600] of string;
  xhIndex,dyIndex,zhIndex,row: integer;
  i, j: integer;
  count: integer;//进度条专用
begin
  result:= false;
  ReadIni(false);

  with MainForm do begin
    try
      richedit1.Lines.Add(timetostr(time)+'自动录入德育综合信息');
      StatusBar1.Panels[1].Text:= '自动录入德育综合信息';
      update;
      for j:= 1 to zys do begin

        with adoquery1 do begin
          close;
          sql.Clear;
          sql.Add('select 学号,姓名,专业班级,德育得分,综合能力得分 from 学籍成绩 where 专业 = "'+ zy[j]+ '"');
          open;

⌨️ 快捷键说明

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