关于完善,是对赛事管理系统的完善,其中包括添加男女分开对战,秒数跳转,报名功能。
添加报名系统,首先要添加一张表,其中包括matchid,matchname,playerid,playername,matchage,这5个必要项。
创建报名表的javabean Signup,创建Signup的接口以及实现方法,
public List Signup getSignup();
public List Signup getSignupById(String id);
public boolean add(Signup su);
在signup.jsp中得到实现,通过href的方式再次传值给下一个servlet,这和删除的操作很像。不过这个方法是传两个值,方法不多见,所以特别记录下:
a href="SignupMatchServlet?id=<%=ts.getId()%>&matchid=<%=mt.getId() %>">报名</a>
然后实现男女分开对战的方法,这里需要对以前写过的智能匹配进行修改,首先要创建一个方法,用来将男女分开,下面是获取女性的方法,男性类似:
其中
String sql = "select * from signup where matchid="+id;
if(woman!=null){
sql+=" and sex='"+woman+"'";
既是先通过比赛编号和性别获取2组男女类型的list,然后在进行排序,之后针对不同组进行原来的智能匹配就可以了。
添加报名系统,首先要添加一张表,其中包括matchid,matchname,playerid,playername,matchage,这5个必要项。
创建报名表的javabean Signup,创建Signup的接口以及实现方法,
public List Signup getSignup();
public List Signup getSignupById(String id);
public boolean add(Signup su);
具体的实现方法和以前所讲的方法类似。
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,然后在进行排序,之后针对不同组进行原来的智能匹配就可以了。