首页 新闻 会员 周边

已知一个数值根据等级规则得到等级(自个写的程序,望大家指点指点)

0
悬赏园豆:100 [已解决问题] 解决于 2011-08-09 10:40

积分值等级:

等级

积分值

等级

积分值

等级

积分值

1级

0-10

10级

131-150

19级

451-500

2级

11-20

11级

151-180

20级

501-550

3级

21-30

12级

181-210

21级

551-650

4级

31-40

13级

211-240

22级

651-750

5级

41-50

14级

241-270

23级

751-850

6级

51-70

15级

271-300

24级

851-950

7级

71-90

16级

301-350

25级

951-1000

8级

91-110

17级

351-400

26级

1001以上

9级

111-130

18级

401-450

   

注:1-5级是每10个积分值递增一级;6-10级是每20个积分值递增一级;11-15级是每30个积分值递增一级;16-20级是每50个积分值递增一级;21级以上是每100个积分值递增一级;积分等级最高等级为26级。

/// <summary>
/// 获取积分等级
/// </summary>
/// <param name="loveNum">积分值</param>
/// <returns></returns>
public int GetLoveLevel(int loveNum)
{
int[,] number2D = new int[26, 2] { { 0, 10 }, { 11 , 20 }, { 21 , 30 }, { 31 , 40 }, { 41 , 50 }, { 51 , 70 }, { 71 , 90 }, { 91 , 110 }, { 111 , 130 }, { 131 , 150 }, { 151 , 180 }, { 181 , 210 }, { 211 , 240 }, { 241 , 270 }, { 271 , 300 }, { 301 , 350 }, { 351 , 400 }, { 401 , 450 }, { 451 , 500 }, { 501 , 550 }, { 551 , 650 }, { 651 , 750 }, { 751 , 850 }, { 851 , 950 }, { 951 , 1000 }, { 1001, 1001 } };
if (loveNum <= 0)
{
return 1;
}
if (loveNum >= number2D[number2D.GetLength(0) - 1, 0])
{
return number2D.GetLength(0);
}
for (int i = 0; i < number2D.GetLength(0); i++)
{
if (loveNum >= number2D[i, 0] && loveNum <= number2D[i, 1])
{
return i + 1;
}
}
return 1;
}

有好的程序也可以写下来,让小弟学习学习^_^

(古月)的主页 (古月) | 初学一级 | 园豆:100
提问于:2011-05-11 11:00
< >
分享
最佳答案
0

这个问题使用表驱动的方式实现比较好。因为积分等级划分标准应该说是这个应用的变化部分。所以通过表驱动的方式进行隔离。

而相应的根据积分获取等级的话,就可以很简单的通过sql来实现。

具体代码就不写了,很简单的。

收获园豆:100
红色壁虎 | 菜鸟二级 |园豆:202 | 2011-05-11 14:40
其他回答(1)
0

用数据库的表 新建3个自动 等级 小积分  大积分

select 等级 from 表 where 大积分>=xxx and 小积分<=xxx 

这样如果积分规则有变化 也只用更新表内容,而不用更新程序

死白的man | 园豆:2135 (老鸟四级) | 2011-05-14 01:13
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册