假设现在3个活动,我是个会员,我已经报名参加了第1个活动!当我下次再报第1个活动时提示已经报过名了! 但报第2,3个没有什么问题!
我现在的思路是:在会员表里面加了个字段,当我报名参加某个活动时,就把那个活动对应的ID写入这个字段!下次再报名活动时先查询这个字段中有没有这个ID,没的话可以报名,有的话不可以报名! 
会员没有报名限制(就是说他3个活动都可以报)!

解决方案 »

  1.   

    把N个活动ID写入一个字段中,用StringBuffer可以实现吗?
    还有就是怎么从这个字段中查询存在的活动ID啊?
      

  2.   

    方法1:建立人与活动的关联表,通过关联判断是否报名了某活动
    这种方法灵活,可扩充,可以适应变化,当然程序结构会稍微复杂。
    方法2:会员表里放3个字段,分配记录是否参加了3个活动
    如果你的活动个数、内容不会变化,可以这么干。但是——bad smell
    方法3:做一个2进制字符串的域记录是否报名了某活动
    例如,001表示报名了活动1,101表示报名了活动1和3。利用位运算计算,速度也会很快。
    这种方法也具有一定的灵活性,当然不像方法1那么强,比如出现了第三种状态,就没办法处理了。根据你的实际情况选择吧。
      

  3.   

    从数据库中取出活动ID,
    if(取出的活动ID.indexOf(活动ID)!=-1)
    System.out.println("已经报名了");怎么样 ??
      

  4.   

    楼上不稳妥,如果两个id互相包含就会出错。
    当然,可以用某种符号例如“,”分割id,当然这种情况下的判断条件也比较复杂。
      

  5.   

    楼主这个意思?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);
    }
    }
    }
    }
      

  6.   

    表现的结构可以有:
    1。
    参加者中有一个Collection纪录报名的活动; 同时(或者),活动里面有一个Collection纪录所有的报名者;
    所有参加者、活动分别存在一个容器里2。
    所有参加者、活动仅含各自的信息,分别存在一个容器里
    用另外的一个机构,如RelationShip纪录参加者与活动的对应关系,也存在一个容器里