8月4号--完善

关于完善,是对赛事管理系统的完善,其中包括添加男女分开对战,秒数跳转,报名功能。
添加报名系统,首先要添加一张表,其中包括matchid,matchname,playerid,playername,matchage,这5个必要项。
创建报名表的javabean   Signup,创建Signup的接口以及实现方法,​
public List Signup  getSignup();
public List Signup  getSignupById(String id);
public boolean add(Signup su);

具体的实现方法和以前所讲的方法类似。


从页面上获取赛事的编号后传给第一个servlet:
public class SignupServlet extends HttpServlet {
    public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
        String playerid = request.getParameter("id");
        PlayerManagr pm = new PlayerManagerImpl();
        Player pl = pm.getStaffById(playerid);
        if(pl != null){
            request.setAttribute("ts", pl);
            request.getRequestDispatcher("/signup.jsp").forward(request, response);
        }}}


在signup.jsp中得到实现,通过href的方式再次传值给下一个servlet,这和删除的操作很像。不过这个方法是传两个值,方法不多见,所以特别记录下:
a href="SignupMatchServlet?id=<%=ts.getId()%>&matchid=<%=mt.getId() %>">报名</a>​
public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
    String playerid = request.getParameter("id");
    String matchid = request.getParameter("matchid");
    PlayerManagr pm = new PlayerManagerImpl();
    Player pl = pm.getStaffById(playerid);
    MatchManager mm = new MatchManagerImpl();
    Match mt = mm.getMatchById(matchid);
    SignupManager sign = new SignupManagerImpl();
    Signup su = new Signup();
    su.setMatchid(mt.getId());
    su.setMatchname(mt.getMatchname());
    su.setPlayerid(pl.getId());
    su.setPlayername(pl.getName());
    su.setMatchage(pl.getMatchage());
    su.setSex(pl.getSex());
    boolean flag = sign.add(su);
    if(flag == true){
        request.setAttribute("ts", pl);
        request.getRequestDispatcher("/MyJsp.jsp").forward(request, response);
    }
}


然后实现男女分开对战的方法,这里需要对以前写过的智能匹配进行修改,首先要创建一个方法,用来将男女分开,下面是获取女性的方法,男性类似:
    public List<Signup> getWomanById(String id) {
        List <Signup> list = new ArrayList<Signup>();
        String woman = "女";
        Connection conn = null;
        Statement st = null;
        ResultSet rs = null;
        try {
            conn = DBOperator.getConnection();
            String sql = "select * from signup where matchid=" + id;
            if (woman != null) {
                sql += " and sex='" + woman + "'";
            }
            st = conn.createStatement();
            rs = st.executeQuery(sql);
            while (rs.next()) {
                Signup st1 = new Signup();
                st1.setMatchid(rs.getString("matchid"));
                st1.setMatchname(rs.getString("matchname"));
                st1.setPlayerid(rs.getString("playerid"));
                st1.setPlayername(rs.getString("playername"));
                st1.setMatchage(rs.getString("matchage"));
                st1.setSex(rs.getString("sex"));
                list.add(st1);
            }
        } catch (Exception ex) {
            ex.printStackTrace();
        } finally {
            DBOperator.close(rs, st, conn);
        }
        return list;
    }

其中
​String sql = "select * from signup where matchid="+id;
if(woman!=null){
sql+=" and sex='"+woman+"'";

}          

要特别说下这时通过java获取mysql中的查询比较特殊的一类,查询sql中多个属性,这里就是通过id和性别同时查询,在后面可以继续加if语句,从而增加查询条件。

写好获取男女的方法后,要对之前的servlet进行修改:
public class MatchFightServlet extends HttpServlet {
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String id = request.getParameter("matchid");
        boolean flag = false;
        MatchManager sm = new MatchManagerImpl();
        Matching mat = new MatchingImpl();
        if (mat.getMatchFightById(id) != null) {
            mat.delFight(id);
        }
        SignupManager pm = new SignupManagerImpl();
        List listplayer1 = pm.getManById(id);
        List listplayer2 = pm.getWomanById(id);

        List list1 = mat.Sort(listplayer1);
        List list2 = mat.Sort(listplayer2);

        Match match = sm.getMatchById(id);
        int number = list1.size();
        if (number % 2 == 0) {
            for (int i = 0; list1.size(); i++) {
                Signup player1 = list1.get(i);
                Signup player2 = list1.get(i + 1);
                flag = mat.Matching(player1, player2, match);
                i++;
            }
        } else {
            for (int i = 0; i < list1.size(); i++) {
                Signup player1 = list1.get(i);
                Signup player2 = list1.get(i + 1);
                flag = mat.Matching(player1, player2, match);
                i++;
            }

            Signup player = list1.get(number - 1);
            flag = mat.addFight(player, match);
        }

        int number2 = list2.size();
        if (number2 % 2 == 0) {
            for (int i = 0; i < list2.size(); i++) {
                Signup player1 = list2.get(i);
                Signup player2 = list2.get(i + 1);
                flag = mat.Matching(player1, player2, match);
                i++;
            }
        } else {
            for (int i = 0; i
            Signup player1 = list2.get(i);
            Signup player2 = list2.get(i + 1);
            flag = mat.Matching(player1, player2, match);
            i++;
        }
        Signup player = list2.get(number2 - 1);
        flag = mat.addFight(player, match);
        if (flag == true) {
            request.getRequestDispatcher("/matchfight.jsp").forward(request, response);
        }
    }
}


既是先通过比赛编号和性别获取2组男女类型的list,然后在进行排序,之后针对不同组进行原来的智能匹配就可以了。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值