会员制,计算积分 自己循环一下应该可以吧?要是一条sql语句就能搞定的话,我也想学 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 JSP我不会,我觉得没有必要使用一条sql语句实现,我尝试写如下结构:会员e得到的积分 x=100;变量 会员名称 uname="e";变量 介绍会员名称 nextname="";变量 计算积分 tmp;query1 = "UPDATE tbl_name SET 最终积分=最终积分+tmp WHERE 会员名称=uname";query2 = "SELECT 介绍会员 FROM tbl_name WHERE 会员名称=uname"//为其它人计算积分while(1){ mysql_query(query2); //得到介绍会员,赋值给nextname if (nextname == null && uname == "e") //e为一级会员 { tmp = x; } else if (nextname != null && uname == "e") { tmp = x*0.8; } else if (nextname != null) { tmp = 0.2*tmp; } else { tmp = 0.2*tmp/0.8; } mysql_query(query1); if (nextname == null) break; uname = nextname;} 大家参考一下这段程序计算办法:假如第5级的某一会员e得到100积分, 那么他自己得100*0.8, //本人80% 介绍他入会的d得0.2*100*0.8, //以后每人都得到当前剩余点数的80% c得0.2*0.2*100*0.8, // b得0.2*0.2*0.2*100*0.8, a得0.2*0.2*0.2*0.2*100,计算完成void serch(void){/*变量定义*/ int current_ID; /*当前ID*/ int percent; /*百分比*/ int point_total; /*总点数*/ int point_remain; /*剩余点数*/ int point_temp; /*临时变量*//*变量初始化*/ current_ID = e; /*初始值第五个*/ percent = 80; point_total = 100;/*第一个人*/ point_temp = (point_total*percent)/100; point_remain = point_total - point_temp; current_ID.total = current_ID.total + point_temp;/*循环*/percent = 80; /*以后都是80%*/ while(current_ID.Intro != null) {/*当前ID为当前ID的介绍人*/ current_ID = current_ID.Intro; point_temp = (point_remain*percent)/100; point_remain = point_remain - point_temp; current_ID.total = current_ID.total + point_temp; } /*剩余点数处理(加给最后的一个人,此人已经在无介绍人)*/ current_ID.total = current_ID.total + point_remain;}如果不仅从E一人开始,怎样算?也就是假如所有会员都得到100积分,怎样给上级加分 这个太简单了写个递归函数函数jsp的语法忘了 大意是:fucntion Cal_Value(id,score){Prv_id=id->prv_id //取得介绍人IDadd=score*0.02//计算增加分数Prv_id->score+=add//介绍人的分数增加Cal_Value(prv_id,add);//递归计算父级介绍人与积分}程序中调用Cal_Value()即可了 Mysql 不支持innodb 各位大侠!问一个关于MySql基础问题! 哪位简单说说在ubuntu下用c++怎么连接mysql? 用C++写了一个用mysql作数据的服务器,内存占用越来越大? 为什么我的left join和inner join得出的数据是一样的? 触发器问题 日期模糊查询 MySQL自增长字段如何复位 一个简单的问题 帮忙优化个语句吧 mysql的odbc设置后为什么不能连接到远程主机呢? 如何在mysql中存储文件和图片啊?
变量 会员名称 uname="e";
变量 介绍会员名称 nextname="";
变量 计算积分 tmp;
query1 = "UPDATE tbl_name SET 最终积分=最终积分+tmp WHERE 会员名称=uname";
query2 = "SELECT 介绍会员 FROM tbl_name WHERE 会员名称=uname"//为其它人计算积分
while(1)
{
mysql_query(query2); //得到介绍会员,赋值给nextname if (nextname == null && uname == "e") //e为一级会员
{
tmp = x;
}
else if (nextname != null && uname == "e")
{
tmp = x*0.8;
}
else if (nextname != null)
{
tmp = 0.2*tmp;
}
else
{
tmp = 0.2*tmp/0.8;
} mysql_query(query1);
if (nextname == null)
break; uname = nextname;
}
计算办法:假如第5级的某一会员e得到100积分,
那么他自己得100*0.8, //本人80%
介绍他入会的d得0.2*100*0.8, //以后每人都得到当前剩余点数的80%
c得0.2*0.2*100*0.8, //
b得0.2*0.2*0.2*100*0.8,
a得0.2*0.2*0.2*0.2*100,计算完成void serch(void)
{
/*变量定义*/
int current_ID; /*当前ID*/
int percent; /*百分比*/
int point_total; /*总点数*/
int point_remain; /*剩余点数*/
int point_temp; /*临时变量*//*变量初始化*/
current_ID = e; /*初始值第五个*/
percent = 80;
point_total = 100;/*第一个人*/
point_temp = (point_total*percent)/100;
point_remain = point_total - point_temp;
current_ID.total = current_ID.total + point_temp;/*循环*/
percent = 80; /*以后都是80%*/
while(current_ID.Intro != null)
{
/*当前ID为当前ID的介绍人*/
current_ID = current_ID.Intro; point_temp = (point_remain*percent)/100;
point_remain = point_remain - point_temp;
current_ID.total = current_ID.total + point_temp;
} /*剩余点数处理(加给最后的一个人,此人已经在无介绍人)*/
current_ID.total = current_ID.total + point_remain;
}如果不仅从E一人开始,怎样算?也就是假如所有会员都得到100积分,怎样给上级加分
{
Prv_id=id->prv_id //取得介绍人ID
add=score*0.02//计算增加分数
Prv_id->score+=add//介绍人的分数增加
Cal_Value(prv_id,add);//递归计算父级介绍人与积分
}程序中调用Cal_Value()即可了