数组判断???
假设现在3个活动,我是个会员,我已经报名参加了第1个活动!当我下次再报第1个活动时提示已经报过名了! 但报第2,3个没有什么问题!
我现在的思路是:在会员表里面加了个字段,当我报名参加某个活动时,就把那个活动对应的ID写入这个字段!下次再报名活动时先查询这个字段中有没有这个ID,没的话可以报名,有的话不可以报名!
会员没有报名限制(就是说他3个活动都可以报)!
------解决方案--------------------方法1:建立人与活动的关联表,通过关联判断是否报名了某活动
这种方法灵活,可扩充,可以适应变化,当然程序结构会稍微复杂。
方法2:会员表里放3个字段,分配记录是否参加了3个活动
如果你的活动个数、内容不会变化,可以这么干。但是——bad smell
方法3:做一个2进制字符串的域记录是否报名了某活动
例如,001表示报名了活动1,101表示报名了活动1和3。利用位运算计算,速度也会很快。
这种方法也具有一定的灵活性,当然不像方法1那么强,比如出现了第三种状态,就没办法处理了。
根据你的实际情况选择吧。
------解决方案--------------------从数据库中取出活动ID,
if(取出的活动ID.indexOf(活动ID)!=-1)
System.out.println( "已经报名了。。。 ");
怎么样 ??
------解决方案--------------------楼主这个意思?
import java.util.*;
public class ActivitiesTest {
public static void main(String[] args) {
Activity.ApplicationSystem as = new Activity.ApplicationSystem();
String s1 = "s1 ";
String s2 = "s2 ";
as.applicate(s1, Activity.Basketball);
as.applicate(s2, Activity.Football);
as.applicate(s2, Activity.Football);
as.applicate(s1, Activity.Football);
as.applicate(s1, Activity.Basketball);
}
}
enum Activity {
Football, Basketball, Swim; //项目名称
private ArrayList <String> list = new ArrayList <String> (); //该项目报名过的人
private void addList(String name) {
list.add(name);
};
private boolean isApplicated(String name) {
boolean result = false;
Iterator it = list.iterator();
while(it.hasNext()) {
if(name.equals(it.next()))
result = true;
}
return result;
};
static class ApplicationSystem { //报名系统
public void applicate(String name, Activity activity) {
if(activity.isApplicated(name))
System.out.println(name + " 已经报过 " + activity);
else {
activity.addList(name);
System.out.println(name + " 报了 " + activity);
}
}
}
}
------解决方案--------------------来学习的 顶下
------解决方案--------------------我也学习~ 顶下
------解决方案--------------------方法1:建立人与活动的关联表,通过关联判断是否报名了某活动
------解决方案--------------------up
------解决方案--------------------会员和活动可以是一个多对多的关系!