📄 fuzhu.cpp
字号:
//////////////////////////////// ////// 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 + -