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

📄 fuzhu.cpp

📁 大学田径运动会管理系统
💻 CPP
📖 第 1 页 / 共 5 页
字号:
//////////////////////////////// //////      xmbh=-1时候查全部!
AnsiString mxmbh,m_xmbh,m_pxfs,m_xmxz,m_cfb;
TStringList *list_mydybh,*list_mcj,*list_mdf;
list_mydybh=new TStringList;
list_mcj=new TStringList;
list_mdf=new TStringList;
mxmbh=list_zxmbh->Strings[zxm_index].Trim();
close();
m_sql="select XMBH,PXFS,XMXZ,CFB from qnxm where XMBH='"+mxmbh+"'";
open(m_sql);
  m_xmbh=m_query->Fields->Fields[0]->AsString.Trim();
  m_pxfs=m_query->Fields->Fields[1]->AsString.Trim();
  m_xmxz=m_query->Fields->Fields[2]->AsString.Trim();
  m_cfb=m_query->Fields->Fields[3]->AsString.Trim();
 m_sql="select YDYBH,CJ from jlb where XMBH='"+list_xmbh+"' and DXBH='"+mxmbh+"'";
open(m_sql);
while(!m_query->Eof)
{
  list_mydybh->Add(m_query->Fields->Fields[0]->AsString.Trim());
  list_mcj->Add(m_query->Fields->Fields[1]->AsString.Trim());
  list_mdf->Add("0");
  m_query->Next();
  }
////////begin
{
 AnsiString m_cur_xmbh;
 AnsiString m_cur_cfb;
 AnsiString m_cur_pxfs;
 AnsiString m_prev_cj,m_cur_cj,m_next_cj;
 AnsiString m_prev_df,m_cur_df,m_next_df;
 AnsiString m_cur_dxcj;
 AnsiString m_cur_xmxz;
 AnsiString m_cur_cz,m_cur_order;
 AnsiString m_cj_gs;
 int m_cur_index=0;
 for(i=0;i<list_mydybh->Count;i++){///对每一个运动员进行算分 
          ///获取当前运动员的成绩信息!
//           m_cur_xmbh=m_xmbh1->Strings[i].Trim();//当前的项目编号
           m_cur_dxcj=list_mcj->Strings[i].Trim();
           m_cur_cfb=m_cfb;
           m_cur_pxfs=m_pxfs;
           m_cur_xmxz=m_xmxz;
          if(StrToInt(m_cur_dxcj)==0)continue;
           ///开始查分!!!
     if(m_cur_pxfs!="3"){        //取中比较的特殊,先不考虑
           if(m_cur_xmxz=="1"){         ///设置查分的向前或则向后,或则取中!成绩越小越好
                    m_cur_order=" ASC ";
                    if(m_cur_pxfs=="1")     //   8 9 10
                          m_cur_cz="<=";
                    if(m_cur_pxfs=="2")
                          m_cur_cz=">=";
                   }
                   else
                   {
                    m_cur_order=" DESC";     //8 9 10
                    if(m_cur_pxfs=="1")
                           m_cur_cz=">=";
                    if(m_cur_pxfs=="2")
                           m_cur_cz="<=";
                      }
                 m_sql="select top 1 CJ,DF from "+m_cur_cfb+" where CJ"+m_cur_cz+"'"+m_cur_dxcj+"' order by CJ "+m_cur_order;
                 open(m_sql);
                 m_cur_cj=m_query->Fields->Fields[0]->AsString.Trim();
                 m_cur_df=m_query->Fields->Fields[1]->AsString.Trim();
                 list_mdf->Strings[i]=m_cur_df;
               }
               else
               {
                int iPrev,iNext,iCur;
                      if(m_cur_xmxz=="1"){
                            m_sql="select top 1 CJ,DF from "+m_cur_cfb+" where CJ<='"+m_cur_dxcj+"' order by ASC";  ///取前一个成绩
                            open(m_sql);
                            m_cur_cj=m_query->Fields->Fields[0]->AsString.Trim();
                            m_cur_df=m_query->Fields->Fields[1]->AsString.Trim();
                            if(m_cur_cj==m_cur_dxcj){ list_mdf->Strings[i]=m_cur_df;continue;}
                            m_prev_cj=m_cur_cj;m_prev_df=m_cur_df;

                            m_sql="select top 1 CJ,DF from "+m_cur_cfb+" where CJ>='"+m_cur_dxcj+"' order by ASC";    ////取后一个成绩!
                            open(m_sql);
                            m_cur_cj=m_query->Fields->Fields[0]->AsString.Trim();
                            m_cur_df=m_query->Fields->Fields[1]->AsString.Trim();
                            if(m_cur_cj==m_cur_dxcj){ list_mdf->Strings[i]=m_cur_df;continue;}
                            m_next_cj=m_cur_cj;m_next_df=m_cur_df;
                            iPrev=StrToInt(m_prev_cj);
                            iCur=StrToInt(m_cur_dxcj);
                            iNext=StrToInt(m_next_cj);
                            if(iCur>=(iPrev+iNext)/2)
                                   list_mdf->Strings[i]=m_next_df;
                                  else
                                   list_mdf->Strings[i]=m_prev_df;
                            }
                          else
                            {
                            m_sql="select top 1 CJ,DF from "+m_cur_cfb+" where CJ>='"+m_cur_dxcj+"' order by DESC";  ///取前一个成绩
                            open(m_sql);
                            m_cur_cj=m_query->Fields->Fields[0]->AsString.Trim();
                            m_cur_df=m_query->Fields->Fields[1]->AsString.Trim();
                            if(m_cur_cj==m_cur_dxcj){ list_mdf->Strings[i]=m_cur_df;continue;}
                            m_prev_cj=m_cur_cj;m_prev_df=m_cur_df;

                            m_sql="select top 1 CJ,DF from "+m_cur_cfb+" where CJ<='"+m_cur_dxcj+"' order by DESC";    ////取后一个成绩!
                            open(m_sql);
                            m_cur_cj=m_query->Fields->Fields[0]->AsString.Trim();
                            m_cur_df=m_query->Fields->Fields[1]->AsString.Trim();
                            if(m_cur_cj==m_cur_dxcj){ list_mdf->Strings[i]=m_cur_df;continue;}
                            m_next_cj=m_cur_cj;m_next_df=m_cur_df;
                            iPrev=StrToInt(m_prev_cj);
                            iCur=StrToInt(m_cur_dxcj);
                            iNext=StrToInt(m_next_cj);
                            if(iCur>=(iPrev+iNext)/2)
                                   list_mdf->Strings[i]=m_next_df;
                                  else
                                   list_mdf->Strings[i]=m_prev_df;

                            }
                  }


        }

 for(i=0;i<list_mydybh->Count;i++)     //保存数据
  {
    if(list_mdf->Strings[i].Trim().IsEmpty())list_mdf->Strings[i]="0";
    m_sql="update "+m_table_name+" set CJ="+list_mcj->Strings[i].Trim()+",DF="+list_mdf->Strings[i].Trim()+" where XMBH='"+list_xmbh+"' and YDYBH='"+list_mydybh->Strings[i].Trim()+"' and DXBH='"+mxmbh+"'";
    exe(m_sql);
   }
  }
delete list_mydybh;
delete list_mcj;
delete list_mdf;
        //TODO: Add your source code here
}
///////////////////
bool __fastcall TYuange_SJ::validebsfs(int bsfs)
{
m_sql="select ydybh from jlb where LBBH='"+list_lbbh+"' and FZBH='"+list_fzbh+"' and XMBH='"+list_xmbh+"' and DXBH='"+list_zxmbh->Strings[zxm_index].Trim()+"'";
open(m_sql);
if(m_query->RecordCount<=0){
  close();
  return true;
  }
close();
return false;
        //TODO: Add your source code here
}

void __fastcall TYuange_SJ::createsrtable(int type)
{
dropsrtable(type);
m_table_name=this->getrandomtable();
m_sql="CREATE TABLE "+m_table_name+"( \
	XMBH char (20)  ,\
	YDYBH char (10)  ,\
	BSFS int ,        \
	XZH int  , \
	PDH int ,      \
	LBBH char (10)  ,\
	FZBH char (10)  ,\
	CJ numeric(18, 0) NULL ,\
	DF numeric(18, 2)  , \
	MC int ,  \
	PJLBZ char (20) ,\
	PJLDF numeric(18, 2)  ,\
	XZMC  int  ,  \
	CJBZ char (20) , \
	DXBH char (20), \
        JJBZ int,  \
        JLBZ int,  \
        BLBZ int  \
) ";
exe(m_sql);
        //TODO: Add your source code here
}

void TYuange_SJ::close()
{
 this->m_con->Connected=false;        //TODO: Add your source code here
 this->m_query->Active=false;
}
void TYuange_SJ::open()
{
 this->m_con->Connected=true;        //TODO: Add your source code here
 this->m_query->Active=true;
        //TODO: Add your source code here
}
void __fastcall TYuange_SJ::exe(AnsiString sql)
{
close();
m_query->SQL->Clear();
m_query->SQL->Add(sql);
m_con->Connected=true;
m_query->ExecSQL();
close();
        //TODO: Add your source code here
}

void __fastcall TYuange_SJ::open(AnsiString sql)
{
close();
m_query->SQL->Clear();
m_query->SQL->Add(sql);
open();
        //TODO: Add your source code here
}

void __fastcall TYuange_SJ::dropsrtable(int type)
{
m_sql="drop table "+m_table_name;
if(!m_table_name.Trim().IsEmpty()){
  exe(m_sql);
  m_table_name="";
}else{m_table_name="";}       //TODO: Add your source code here
}
void __fastcall TYuange_SJ::selectydy(int type )
{
//parsestr(list_lbfz,&list_temp,':');
if(type==1)
m_sql="insert "+m_table_name+" select '"+list_xmbh+"',YDYBH,1,1,1,LBBH,FZBH,0,0,555,'',0,555,'刚分组','',\
       0,0,0 from ydyb where LBBH='"+list_lbbh+ "' and FZBH='"+list_fzbh+"' and SBXM like '%"+list_xmbh+"%'";
if(type==2)
m_sql="insert "+m_table_name+" select * from jlb where LBBH='"+list_lbbh+ "' and FZBH='"+list_fzbh+"' and XMBH='"+list_xmbh+"' and DXBH='"+list_zxmbh->Strings[zxm_index].Trim()+"'";
exe(m_sql);
m_sql="update "+m_table_name+" set DXBH='"+list_zxmbh->Strings[zxm_index].Trim()+"'";
exe(m_sql);
}


void __fastcall TYuange_SJ::setxzhpdh(AnsiString ydybh, int xzh, int pdh)
{
m_sql="update "+m_table_name+" set XZH="+IntToStr(xzh)+",PDH="+IntToStr(pdh)+" where YDYBH='"+ydybh+"'";
exe(m_sql);
}

bool isfenzu(TStringList *list,int index){
if(list->Strings[index].Trim()=="0")return false;
return true;
}
int findnear(TStringList *list){
int i=0;
for(i=0;i<list->Count;i++)
     if(list->Strings[i].Trim()=="0")return i;
return -1;
}
void TYuange_SJ::kaishifenzu(int gs)
{
int totalcount,type;
int XZH,PDH;
int index,i;
TStringList *list_pydybh,*list_pxzh,*list_ppdh;
if(m_table_name.Trim().IsEmpty())return;
list_pydybh=new TStringList;
list_pxzh=new TStringList;
list_ppdh=new TStringList;
m_sql="select a.YDYBH,a.XZH,a.PDH from "+m_table_name+" a,ydyb b where a.YDYBH=b.YDYBH and b.FZBH=a.FZBH and b.LBBH=a.LBBH order by b.DWBH";
open(m_sql);
totalcount=m_query->RecordCount;
totalxzh=0;     ///假如没有分组
tailcount=0;
if(totalcount>0){
totalxzh=(int)(totalcount/gs);
tailcount=totalcount%gs;
if(tailcount!=0)totalxzh++;       //总的分组
    while(!m_query->Eof){
       list_pydybh->Add(m_query->Fields->FieldByName("YDYBH")->AsString.Trim());
         list_pxzh->Add("0");
         list_ppdh->Add("0");
         m_query->Next();
      }
     i=0;
     XZH=1;PDH=1;
     while(true){
            type=0;
            for(i=0;i<3;i++){
                    index=random(totalcount);
                    if(!isfenzu(list_pxzh,index)){
                               type=1;
                               break; //找到分组了!
                               }
                  type=2; ///没有找到继续找!
                  }
             if(type==2) ///试着找了十次,还是没有找到,只好最开始的那个用上了
                 index=findnear(list_pxzh);
           if(index==-1)break; //全部没有了!
           list_pxzh->Strings[index]=IntToStr(XZH);
           list_ppdh->Strings[index]=IntToStr(PDH);
           PDH++;
           if(PDH>gs)
                {
                 PDH=1;
                 XZH++;
               }
      }
  }
for(i=0;i<list_pydybh->Count;i++){
    m_sql="update "+m_table_name+" set PDH="+list_ppdh->Strings[i].Trim()+",XZH="+list_pxzh->Strings[i].Trim()+" where YDYBH='"+list_pydybh->Strings[i].Trim()+"'";
    exe(m_sql);
  }
delete list_pydybh;
delete list_pxzh;
delete list_ppdh;
}

void __fastcall TYuange_SJ::updatesj(int type)
{
if(m_table_name.IsEmpty())return;
chongxin();
m_sql="insert jlb select * from "+m_table_name;
exe(m_sql);
        //TODO: Add your source code here
}
void __fastcall TYuange_SJ::getnewsinfo()
{
m_sql="select MCBSZT from xmb where XMBH='"+list_xmbh+"' and  FZBH='"+list_fzbh+"' and LBBH='"+list_lbbh+"'";
open(m_sql);
list_mcbszt=m_query->Fields->FieldByName("MCBSZT")->AsString.Trim();
        //TODO: Add your source code here
}
void __fastcall TYuange_SJ::chongxin()
{
m_sql="delete from jlb  where  LBBH='"+list_lbbh+ "' and FZBH='"+list_fzbh+"' and XMBH='"+list_xmbh+"' and DXBH='"+list_zxmbh->Strings[zxm_index].Trim()+"'";
exe(m_sql);
        //TODO: Add your source code here
}///

void __fastcall TYuange_CL::setcj(AnsiString cur_ydybh, AnsiString cj, AnsiString df, AnsiString jjbz, AnsiString pjlbzindex, AnsiString pjldf, AnsiString bz, AnsiString mc )
{
m_sql="update "+m_table_name+" set CJ="+cj+",DF="+df+",JJBZ="+jjbz+",PJLBZ="+pjlbzindex+",PJLDF="+pjldf+",CJBZ='"+bz+"',MC="+mc+" where YDYBH='"+cur_ydybh+"'";
exe(m_sql);
        //TODO: Add your source code here
}
void __fastcall TYuange_CL::cl_handledf()
{
       //TODO: Add your source code here
}

void __fastcall TYuange_::getqninfo()
{
        //TODO: Add your source code here
}

void __fastcall TYuange_CL::manhandle(int type)
{
AnsiString psfgz;
int mc_index;
TStringList *list_pydybh,*list_pmc,*list_pcj,*list_jingji;
list_pydybh=new TStringList;
list_pmc=new TStringList;
list_pcj=new TStringList;
list_jingji=new TStringList;
m_sql="select YDYBH,CJ,MC,JJBZ,BLBZ from "+m_table_name+" where CJ<>0 order by MC ASC";
open(m_sql);
mc_index=1;
while(!m_query->Eof){
 list_pydybh->Add(m_query->Fields->FieldByName("YDYBH")->AsString.Trim());
 list_pcj->Add(m_query->Fields->FieldByName("CJ")->AsString.Trim());
 list_pmc->Add(m_query->Fields->FieldByName("MC")->AsString.Trim());
 list_jingji->Add(m_query->Fields->FieldByName("JJBZ")->AsString.Trim());
 m_query->Next();
 mc_index++;
 }
/////
cl_bingli(list_pydybh,list_pmc,&list_temp);
updatedata(list_pydybh,list_temp,"BLBZ",1);
if(type!=5){
//  cl_jingji(list_pydybh,list_pcj,&list_jingji);
//  updatedata(list_pydybh,list_jingji,"JJBZ",1);
  if(this->curbsfs==StrToInt(this->list_bscs)){
   cl_caldf(list_pydybh,list_pmc,list_jingji,&list_temp);
   updatedata(list_pydybh,list_temp,"DF",1);
  }
}
delete list_pydybh;
delete list_pmc;
delete list_pcj;
delete list_jingji;
        //TODO: Add your source code here
}


⌨️ 快捷键说明

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