软件工程结对作业01
结对人:胡建峰、高雪彤
设计思想
在以前的程序基础上两人结合开发web系统。
首先编写了一个登录界面,实现的是不同用户,不同题库的功能。
然后进入主页,主页中在登录成功后显示用户名,并有开始答题,查看历史错题和注销三个按钮。开始答题按钮可以供用户选择出题的条件生成题目,查看历史错题会调出数据库中历史的错题,也可以重新做这些错题,注销会注销当前用户,返回登录界面。
出题界面会显示用户的条件,在下面生成题目,后面有一个输入框,供用户答题,不会的可以空下,最后点击提交可以进入结果验证页面,结果页面中,会对输入和信息与数据库中的作对比,正确的显示一个正确的图片,错误会显示一个错误的图片并显示正确答案,并将错误答案和信息存入数据库。
重做错题,从数据库中导出错题和错误答案,在修改提交后,会进行判断。
在最后对页面使用了Javabean、servlet、ajax、jQuery,并对页面进行了美化。
源程序代码
1 package bean; 2 3 import java.sql.*; 4 import com.db.DB; 5 6 public class User { 7 private String username; 8 private String userpass; 9 10 public String getUsername() { 11 return username; 12 } 13 14 public void setUsername(String username) { 15 this.username = username; 16 } 17 18 public String getUserpass() { 19 return userpass; 20 } 21 22 public void setUserpass(String userpass) { 23 this.userpass = userpass; 24 } 25 26 @SuppressWarnings("static-access") 27 public boolean validate(String user, String pass) { 28 DB db = new DB(); 29 String sq = "select * from [user] where [id]=? and [pass]=?"; 30 PreparedStatement st = null; 31 try { 32 st = db.getCoon().prepareStatement(sq); 33 st.setString(1, user); 34 st.setString(2, pass); 35 ResultSet rs = st.executeQuery(); 36 if(rs.next()) 37 { 38 return true; 39 } 40 else 41 { 42 return false; 43 } 44 } catch (SQLException e) { 45 e.printStackTrace(); 46 } 47 return false; 48 } 49 50 }
1 package calculat; 2 import java.util.Random; 3 4 public class Cal_zfs{ 5 private char fh; 6 private String shu1; 7 private String shu2; 8 private String result; 9 10 public char getFh() { 11 return fh; 12 } 13 14 public String getResult() { 15 return result; 16 } 17 18 public String getShu1() { 19 return shu1; 20 } 21 22 public String getShu2() { 23 return shu2; 24 } 25 public Cal_zfs() 26 { 27 28 } 29 30 public Cal_zfs(boolean cc, int w) 31 { 32 int fzi1; 33 int fmu1; 34 int fzi2; 35 int fmu2; 36 char [] fu = new char [4];//生成符号,控制有无乘除 37 fu[0] = '-'; 38 fu[1] = '+'; 39 fu[2] = '/'; 40 fu[3] = '*'; 41 if(cc) 42 fh = fu[new Random().nextInt(4)]; 43 else 44 fh = fu[new Random().nextInt(2)]; 45 46 47 if(w == 1) 48 { 49 fmu1 = new Random().nextInt(9) + 1; 50 fmu2 = new Random().nextInt(9) + 1; 51 } 52 else if(w == 2) 53 { 54 fmu1 = new Random().nextInt(99) + 1; 55 fmu2 = new Random().nextInt(99) + 1; 56 } 57 else 58 { 59 fmu1 = new Random().nextInt(999) + 1; 60 fmu2 = new Random().nextInt(999) + 1; 61 } 62 63 fzi1 = new Random().nextInt(fmu1) + 1; 64 fzi2 = new Random().nextInt(fmu2) + 1; 65 int gy = gys(fzi1, fmu1); 66 int gy2 = gys(fzi2, fmu2); 67 if(fzi1 == fmu1) 68 shu1 = "1"; 69 else 70 shu1 = fzi1 / gy + "/" + fmu1 / gy; 71 if(fzi2 == fmu2) 72 shu2 = "1"; 73 else 74 shu2 = fzi2 / gy2 + "/" + fmu2 / gy2; 75 76 int fm = 0, fz = 0; 77 if(fh == '+') 78 { 79 fm = fmu1 * fmu2; 80 fz = fmu1 * fzi2 + fmu2 * fzi1; 81 } 82 else if(fh == '-') 83 { 84 fm = fmu1 * fmu2; 85 fz = fmu2 * fzi1 - fmu1 * fzi2; 86 } 87 else if(fh == '*') 88 { 89 fm = fmu1 * fmu2; 90 fz = fzi1 * fzi2; 91 } 92 else 93 { 94 fm = fmu1 * fzi2; 95 fz = fzi1 * fmu2; 96 } 97 98 int g = gys(fz, fm); 99 if(fz == fm) 100 result = "1"; 101 else 102 result = fz / g + "/" + fm / g; 103 } 104 105 public int gys(int s1, int s2) 106 { 107 int gy = 1; 108 for(int i = 1; i <= (s1 < s2 ? s1 : s2); i++) 109 { 110 if(s1 % i == 0 && s2 % i == 0) 111 gy = i; 112 } 113 return gy; 114 } 115 116 public String show() 117 { 118 return shu1 + " " + fh + " " + shu2; 119 } 120 }
1 package calculat; 2 import java.util.Random; 3 4 public class Cal_zs{ 5 private char fh; 6 private int shu1; 7 private int shu2; 8 private String result; 9 10 public String getResult() { 11 return result; 12 } 13 public Cal_zs() 14 {} 15 public char getFh() { 16 return fh; 17 } 18 19 public int getShu1() { 20 return shu1; 21 } 22 23 public int getShu2() { 24 return shu2; 25 } 26 public Cal_zs(boolean cc,int wei) 27 { 28 char [] fu = new char [4];//生成符号,控制有无乘除 29 fu[0] = '-'; 30 fu[1] = '+'; 31 fu[2] = '/'; 32 fu[3] = '*'; 33 34 if(cc) 35 fh = fu[new Random().nextInt(4)]; 36 else 37 fh = fu[new Random().nextInt(2)]; 38 if(wei == 1) 39 { 40 shu1 = new Random().nextInt(9) + 1; 41 shu2 = new Random().nextInt(9) + 1; 42 } 43 else if(wei == 2) 44 { 45 shu1 = new Random().nextInt(99) + 1; 46 shu2 = new Random().nextInt(99) + 1; 47 } 48 else 49 { 50 shu1 = new Random().nextInt(999) + 1; 51 shu2 = new Random().nextInt(999) + 1; 52 } 53 54 if(fh == '+') 55 result = shu1 + shu2 + ""; 56 else if(fh == '-') 57 result = shu1 - shu2 + ""; 58 else if(fh == '*') 59 result = shu1 * shu2 + ""; 60 else 61 { 62 if(shu1 >= shu2) 63 { 64 if(shu1 % shu2 == 0) 65 result = shu1/shu2 + ""; 66 else 67 { 68 int z = shu1 / shu2; 69 result = z + "'" + (shu1 - z * shu2) +"/" + shu2; 70 } 71 } 72 else 73 result = shu1 + "/" + shu2; 74 } 75 } 76 77 public String show() 78 { 79 return shu1 + " " + fh + " " + shu2; 80 } 81 82 public boolean isInteger(){ 83 double r, s1 = shu1, s2 = shu2; 84 if(fh == '/') 85 { 86 r = s1 / s2; 87 String str = r + ""; 88 for(int i = 0;i < str.length();i++) 89 { 90 if(str.charAt(i) == '.' && i == str.length() - 2 && str.charAt(i + 1) == '0') 91 return true; 92 } 93 return false; 94 } 95 else 96 return true; 97 98 99 } 100 }
1 package calculat; 2 3 public class shu { 4 5 private Cal_zs [] c1 = new Cal_zs [100]; 6 private Cal_zfs [] c2 = new Cal_zfs [100]; 7 boolean cc; 8 int N; 9 int wei; 10 11 public void setN(int n) { 12 N = n; 13 } 14 15 public void setwei(int w) 16 { 17 wei = w; 18 } 19 public void setCc(boolean cc) { 20 this.cc = cc; 21 } 22 23 public shu() 24 { 25 26 } 27 28 public shu(boolean cc, int w, boolean fs, boolean ys) 29 { 30 for(int i = 0;i < 100;i++) 31 { 32 c1[i] = new Cal_zs(cc, w); 33 while((ys == false && yu(c1[i].getResult())) || (fs == false && c1[i].getResult().charAt(0) == '-')) 34 { 35 c1[i] = new Cal_zs(cc, w); 36 } 37 for(int j = 0;j < i;j++) 38 { 39 if(c1[i].getShu1() == c1[j].getShu1() && c1[j].getShu2() == c1[i].getShu2()&& 40 c1[i].getFh() == c1[j].getFh()) 41 { 42 c1[i] = new Cal_zs(cc, w); 43 j = 0; 44 } 45 } 46 47 c2[i] = new Cal_zfs(cc, w); 48 while(fs == false && c2[i].getResult().charAt(0) == '-') 49 { 50 c2[i] = new Cal_zfs(cc, w); 51 } 52 for(int k = 0;k < i;k++) 53 { 54 if(c2[i].getShu1().equals(c2[k].getShu1()) && c2[k].getShu2().equals(c2[i].getShu2()) && 55 c2[i].getFh() == c2[k].getFh()) 56 { 57 c2[i] = new Cal_zfs(cc, w); 58 k = 0; 59 } 60 } 61 } 62 } 63 64 public boolean yu(String str) 65 { 66 for(int i = 0;i < str.length(); i++) 67 { 68 if(str.charAt(i) == '/') 69 return true; 70 } 71 return false; 72 } 73 74 public String show1(int i) 75 { 76 return c1[i].show(); 77 } 78 public String show2(int i) 79 { 80 return c2[i].show(); 81 } 82 83 public String result1(int i) 84 { 85 return c1[i].getResult() + ""; 86 } 87 public String result2(int i) 88 { 89 return c2[i].getResult() + ""; 90 } 91 }
1 package com.db; 2 3 import java.sql.*; 4 5 public class DB { 6 private static final String driverStr = "com.microsoft.sqlserver.jdbc.SQLServerDriver"; 7 private static final String connStr = "jdbc:sqlserver://localhost:1433; DatabaseName=calculate"; 8 private static final String dbusername = "sa"; 9 private static final String dbpassword = "4980"; 10 private static Connection coon = null; 11 12 public static Connection getCoon() { 13 return coon; 14 } 15 16 static{ 17 try{ 18 Class.forName(driverStr); 19 coon = DriverManager.getConnection(connStr, dbusername, dbpassword); 20 } catch (ClassNotFoundException e){ 21 e.printStackTrace(); 22 } catch (SQLException e){ 23 e.printStackTrace(); 24 } 25 } 26 27 public void closeCon(Connection con) { 28 if(coon!=null){ 29 try { 30 coon.close(); 31 } catch (SQLException e) { 32 e.printStackTrace(); 33 } 34 } 35 } 36 37 public static void main(String[] args) { 38 try { 39 DB.getCoon(); 40 System.out.println("数据库连接成功"); 41 } catch (Exception e) { 42 e.printStackTrace(); 43 } 44 } 45 }
1 package servelet; 2 3 import java.io.IOException; 4 import javax.servlet.RequestDispatcher; 5 import javax.servlet.ServletException; 6 import javax.servlet.annotation.WebServlet; 7 import javax.servlet.http.HttpServlet; 8 import javax.servlet.http.HttpServletRequest; 9 import javax.servlet.http.HttpServletResponse; 10 import javax.swing.JOptionPane; 11 12 import bean.User; 13 14 @WebServlet("/loginservlet") 15 public class loginservlet extends HttpServlet { 16 private static final long serialVersionUID = 1L; 17 18 public loginservlet() { 19 super(); 20 } 21 22 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 23 String user = request.getParameter("user"); 24 String pass = request.getParameter("pass"); 25 26 User use = new User(); 27 boolean b =use.validate(user, pass); 28 String forward; 29 30 if(b) 31 { 32 request.getSession().setAttribute("user", user); 33 forward = "first.jsp"; 34 } 35 else 36 { 37 JOptionPane.showMessageDialog(null, "用户名或密码输入有误!"); 38 forward = "login.jsp"; 39 } 40 41 42 RequestDispatcher dispatcher = request.getRequestDispatcher(forward); 43 dispatcher.forward(request, response); 44 } 45 46 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 47 doGet(request, response); 48 } 49 50 }
1 <%@ page language="java" contentType="text/html; charset=utf-8" 2 pageEncoding="utf-8"%> 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 4 <html> 5 <head> 6 <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 7 <title>登录</title> 8 <script type="text/javascript"> 9 function judge(form) 10 { 11 user = form.user.value; 12 pass = form.pass.value; 13 14 if(user == "") 15 { 16 alert("用户名为空!"); 17 form.user.focus(); 18 return false; 19 } 20 if(pass == "") 21 { 22 alert("密码为空!"); 23 form.pass.focus(); 24 return false; 25 } 26 } 27 </script> 28 <style> 29 body,p,div,ul,li,h1,h3,h4,h5,h6{ 30 margin:0; 31 padding: 0; 32 } 33 h2{ 34 color:red; 35 text-align: center; 36 margin:150px auto; 37 } 38 body{ 39 background: #E9E9E9; 40 } 41 42 #login{ 43 width: 400px; 44 height: 250px; 45 background: #FFF; 46 margin:50px auto; 47 position: relative; 48 } 49 #login form p{ 50 text-align: center; 51 } 52 53 #user{ 54 background:url(images/user.png) rgba(0,0,0,0.1) no-repeat; 55 width: 200px; 56 height: 30px; 57 border:solid #ccc 1px; 58 border-radius: 3px; 59 padding-left: 32px; 60 margin-top: 50px; 61 margin-bottom: 30px; 62 } 63 #pwd{ 64 background: url(images/pwd.png) rgba(0,0,0,0.1) no-repeat; 65 width: 200px; 66 height: 30px; 67 border:solid #ccc 1px; 68 border-radius: 3px; 69 padding-left: 32px; 70 margin-bottom: 30px; 71 } 72 #submit{ 73 width: 232px; 74 height: 30px; 75 background: rgba(0,0,0,0.1); 76 border:solid #ccc 1px; 77 border-radius: 3px; 78 } 79 80 #submit:hover{ 81 cursor: pointer; 82 background:#D8D8D8; 83 } 84 </style> 85 </head> 86 <body> 87 <h2>答题系统登录界面</h2> 88 <div id="login"> 89 <form name="form" action="loginservlet" method="post" onsubmit="return judge(form)"> 90 <p><input type="text" name="user" id="user" placeholder="用户名"></p> 91 <p><input type="password" name="pass" id="pwd" placeholder="密码"></p> 92 <p><input type="submit" id="submit" value="登录"></p> 93 </form> 94 </div> 95 </body> 96 </html>
1 <%@ page language="java" import="java.sql.*" contentType="text/html; charset=gb2312" 2 pageEncoding="UTF-8"%> 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 4 <html> 5 <head> 6 <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 7 <script type="text/javascript" src="js/jquery-1.11.3.min.js"></script> 8 <script type="text/javascript"> 9 $(function(){ 10 $("#chu").hide(); 11 $("#cuo").hide(); 12 13 $("#zhuxiao").click(function(){ 14 $(location).attr('href', 'login.jsp'); 15 }); 16 17 $("#chuti").click(function(){ 18 $("#chu").show(); 19 $("#cuo").hide(); 20 }); 21 22 $("#cuoti").click(function(){ 23 $("#cuo").show(); 24 $("#chu").hide(); 25 }); 26 }); 27 </script> 28 <title>出题</title> 29 <style type="text/css"> 30 h2{ 31 color:red; 32 } 33 #b{ 34 text-align: center; 35 height: 60px; 36 } 37 body{ 38 background:url("images/bg.jpg") 39 no-repeat; 40 background-size:cover; 41 } 42 </style> 43 </head> 44 <body> 45 <h2 align="center">出题器</h2> 46 <h3 align="center">${sessionScope.user}您好,欢迎登录!</h3> 47 48 <div id="b"> 49 <input type="button" id="chuti" value="开始出题"/> 50 <input type="button" id="cuoti" value="查看历史错题"/> 51 <input type="button" id="zhuxiao" value="注销登录"/> 52 </div> 53 54 <div id="chu"> 55 <form name="form1" action="chuti.jsp" method="post"> 56 <table align="center"> 57 <tr> 58 <td>题目类型:</td> 59 <td> 60 <select name="lei"> 61 <option value="整数" selected>整数</option> 62 <option value="真分数">真分数</option> 63 <option value="混合">混合</option> 64 </select> 65 </td> 66 </tr> 67 <tr> 68 <td>是否有乘除法:</td> 69 <td> 70 <input type="radio" name="cc" value="无" checked>无 71 <input type="radio" name="cc" value="有">有 72 </td> 73 </tr> 74 <tr> 75 <td>是否有括号:</td> 76 <td> 77 <input type="radio" name="kh" value="无" checked>无 78 <input type="radio" name="kh" value="有">有 (暂未实现) 79 </td> 80 </tr> 81 <tr> 82 <td>数值范围:</td> 83 <td> 84 <select name="wei"> 85 <option value="一位数" selected>一位数</option> 86 <option value="两位数">两位数</option> 87 <option value="三位数">三位数</option> 88 </select> 89 </td> 90 </tr> 91 <tr> 92 <td>加减有无负数:</td> 93 <td> 94 <input type="radio" name="fushu" value="无" checked>无 95 <input type="radio" name="fushu" value="有">有 96 </td> 97 </tr> 98 <tr> 99 <td>除法有无余数:</td> 100 <td> 101 <input type="radio" name="yushu" value="无" checked>无 102 <input type="radio" name="yushu" value="有">有 103 </td> 104 </tr> 105 <tr> 106 <td>题量</td> 107 <td> 108 <input type="text" name="num" value="1">不大于100题 109 </td> 110 </tr> 111 <tr> 112 <td> 113 <input type="hidden" name="user" value="${sessionScope.user}"/> 114 </td> 115 <td><input type="submit" value="开始出题!"></td> 116 </tr> 117 </table> 118 </form> 119 </div> 120 121 <div id="cuo" align="center"> 122 <form action="cuo.jsp" method="post"> 123 <table> 124 <th>错题题目</th> 125 <th> </th> 126 <th>错题答案</th> 127 <jsp:useBean id="db" class="com.db.DB" scope="request"/> 128 <% 129 String user = request.getSession().getAttribute("user").toString(); 130 String sq = "select * from subject where cuo=1 and [user]=?"; 131 PreparedStatement st = null; 132 st = db.getCoon().prepareStatement(sq); 133 st.setString(1, user); 134 ResultSet rs = st.executeQuery(); 135 while(rs.next()) 136 { 137 out.print("<tr><td>" + rs.getString(2) + "</td><td> = </td>"); 138 out.print("<td>" + rs.getString(5) + "</td>"); 139 %> 140 </tr> 141 <%} %> 142 <tr> 143 <td><input type="hidden" name="user" value=<%=user %>></td> 144 <td><input type="submit" value="重新做题"></td> 145 <tr> 146 </table> 147 </form> 148 </div> 149 </body> 150 </html>
1 <%@ page language="java" import="java.util.*, java.sql.*, calculat.shu" contentType="text/html; charset=gb2312" 2 pageEncoding="UTF-8"%> 3 <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%> 4 <fmt:requestEncoding value="gb2312"/> 5 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 6 <html> 7 <head> 8 <style type="text/css"> 9 h2{color:red} 10 11 .tb1{ 12 border-left-style:solid; 13 border-bottom-style:solid; 14 border-top-style:solid; 15 border-right-style:solid; 16 border-width:2px; 17 } 18 19 #submit{ 20 height: 30px; 21 background: rgba(0,0,0,0.1); 22 border:solid #ccc 1px; 23 border-radius: 3px; 24 } 25 26 #submit:hover{ 27 cursor: pointer; 28 background:#D8D8D8; 29 } 30 </style> 31 <script type="text/javascript"> 32 var i = 0; 33 var Color = new Array("#0000FF", "#99FF00", "#660033", "#CC66CC", "#FFFF33"); 34 function change(){ 35 if(i > Color.length - 1) 36 i = 0; 37 table1.style.borderColor = Color[i]; 38 i++; 39 setTimeout("change()", 500); 40 } 41 </script> 42 <title>出题</title> 43 </head> 44 <body onload="change()"> 45 <h1 align="center">题目</h1> 46 <table id="table1" align="center" class="tb1"> 47 <tr> 48 <td>题目类型:</td> 49 <td>${param.lei}</td> 50 <td> </td> 51 <td>是否有乘除法:</td> 52 <td>${param.cc}</td> 53 </tr> 54 <tr> 55 <td>是否有括号:</td> 56 <td>${param.kh}</td> 57 <td> </td> 58 <td>数值范围:</td> 59 <td>${param.wei}</td> 60 </tr> 61 <tr> 62 <td>加减有无负数:</td> 63 <td>${param.fushu}</td> 64 <td> </td> 65 <td>除法有无余数:</td> 66 <td>${param.yushu}</td> 67 </tr> 68 </table> 69 70 <h2 align="center">请填写答案:</h2> 71 <form name="form2" action="result.jsp" method="post"> 72 <table align="center"> 73 <tr> 74 <th>题目</th> 75 <th> </th> 76 <th>答案</th> 77 </tr> 78 79 <jsp:useBean id="c" class="calculat.shu" scope="request"/> 80 <jsp:useBean id="db" class="com.db.DB" scope="request"/> 81 <% 82 boolean cc = true;//有无乘除,并赋值 83 if((request.getParameter("cc")).equals("无")) 84 { 85 cc = false; 86 } 87 boolean kh = true;//有无乘除,并赋值 88 if((request.getParameter("kh")).equals("无")) 89 { 90 kh = false; 91 } 92 int w; 93 if(request.getParameter("wei").equals("一位数")) 94 { 95 w = 1; 96 } 97 else if(request.getParameter("wei").equals("两位数")) 98 { 99 w = 2; 100 } 101 else 102 { 103 w = 3; 104 } 105 106 boolean fs = true; 107 if(request.getParameter("fushu").equals("无"))//负数 108 { 109 fs = false; 110 } 111 boolean ys = true; 112 if(request.getParameter("yushu").equals("无"))//余数 113 { 114 ys = false; 115 } 116 117 //生成算式 118 c = new shu(cc, w, fs, ys); 119 int N = Integer.parseInt(request.getParameter("num"));//出题数 120 c.setN(N); 121 122 String str = request.getParameter("lei");//出题类型 123 c.setCc(cc); 124 125 //清空数据库中前N个元素 126 for(int i = 0;i < N;i++) 127 { 128 String sql="delete from subject where num=" + (i+1) + "and [user]='" + request.getParameter("user") +"'";//生成一条sql语句 129 Statement stmt = db.getCoon().createStatement(); 130 stmt.execute(sql); 131 } 132 133 //生成算式,并存储在数据库中 134 String s = "", q = ""; 135 for(int i = 0;i < N;i++) 136 { 137 out.print("<tr><td>"); 138 if(str.equals("整数")) 139 { 140 q = c.show1(i); 141 out.print(q + "</td>"); 142 s = c.result1(i); 143 } 144 else if(str.equals("真分数")) 145 { 146 q = c.show2(i); 147 out.print(q + "</td>"); 148 s = c.result2(i); 149 } 150 else 151 { 152 if((new Random().nextInt(10)) % 2 == 0) 153 { 154 q = c.show1(i); 155 out.print(q + "</td>"); 156 s = c.result1(i); 157 } 158 else 159 { 160 q = c.show2(i); 161 out.print(q + "</td>"); 162 s = c.result2(i); 163 } 164 } 165 String sql = "insert into subject (num, question,answer,[user]) values (?,?,?,?)"; 166 PreparedStatement pstmt = null; 167 pstmt = db.getCoon().prepareStatement(sql); 168 pstmt.setString(1, i+1+""); 169 pstmt.setString(2, q); 170 pstmt.setString(3, s); 171 pstmt.setString(4, request.getParameter("user")); 172 pstmt.executeUpdate(); 173 %> 174 <td>=</td> 175 <td><input name="result<%=i %>" id="result" type="text"> 176 </td></tr> 177 <%} %> 178 <tr> 179 <td> 180 <input type="hidden" name="num" value="${param.num}"> 181 </td> 182 <td> 183 <input type="hidden" name="user" value="<%=request.getParameter("user")%>"/> 184 </td> 185 </tr> 186 <tr> 187 <td></td> 188 <td></td> 189 <td><input type="submit" id="submit" value="点击提交答案"></td> 190 </tr> 191 </table> 192 </form> 193 </body> 194 </html>
1 <%@ page language="java" import="java.sql.*" contentType="text/html; charset=gb2312" 2 pageEncoding="utf-8"%> 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 4 <html> 5 <head> 6 <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 7 <title>结果</title> 8 <style type="text/css"> 9 a{ 10 text-align:center; 11 color:blue; 12 } 13 </style> 14 </head> 15 <body> 16 <h1 align="center">成绩</h1> 17 <table align="center"> 18 <jsp:useBean id="db" class="com.db.DB" scope="request"/> 19 <% 20 int N = Integer.parseInt(request.getParameter("num"));//出题数 21 String user = request.getParameter("user"); 22 String x = ""; 23 for(int i = 0;i < N;i++) 24 { 25 x = (String)request.getParameter("result"+i); 26 String sq = "select * from subject where num=? and [user]=?"; 27 PreparedStatement st = null; 28 st = db.getCoon().prepareStatement(sq); 29 st.setString(1, i+1+""); 30 st.setString(2, user); 31 ResultSet rs = st.executeQuery(); 32 while(rs.next()) 33 { 34 out.print("<tr><td>" + rs.getString(2) + "</td><td> = </td>"); 35 if(rs.getString(3).equals(x)) 36 { 37 out.print("<td>" + x + "</td>"); 38 %> 39 <td><img alt="正确" src="images/accept.png"></td> 40 </tr> 41 <% 42 } 43 else 44 { 45 out.print("<td>" + x + "</td>"); 46 %> 47 <td><img alt="错误" src="images/gif-0130.gif">正确答案为<%=rs.getString(3) %></td> 48 </tr> 49 <% 50 String geng = "update subject set cuo = '1',my=?,num=? where [user]=? and num=?"; 51 st = db.getCoon().prepareStatement(geng); 52 st.setString(1, x); 53 st.setInt(2, 100+i+1); 54 st.setString(3, user); 55 st.setInt(4, i+1); 56 st.executeUpdate(); 57 } 58 } 59 } 60 %> 61 </table> 62 <div align="center"> 63 <a href="first.jsp">返回出题界面</a> 64 </div> 65 </body> 66 </html>
1 <%@ page language="java" import="java.sql.*" contentType="text/html; charset=utf-8" 2 pageEncoding="utf-8"%> 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 4 <html> 5 <head> 6 <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 7 <title>错题重做</title> 8 </head> 9 <body> 10 <h2 align="center">请填写答案:</h2> 11 <form name="form2" action="c_result.jsp" method="post"> 12 <table align="center"> 13 <tr> 14 <th>题目</th> 15 <th> </th> 16 <th>答案</th> 17 </tr> 18 19 <jsp:useBean id="db" class="com.db.DB" scope="request"/> 20 <% 21 String user = request.getParameter("user"); 22 int i = 0; 23 String sq = "select * from subject where cuo=1 and [user]='" + user +"'"; 24 PreparedStatement st = null; 25 st = db.getCoon().prepareStatement(sq); 26 ResultSet rs = st.executeQuery(); 27 while(rs.next()) 28 { 29 %> 30 <tr> 31 <td><%=rs.getString("question")%></td> 32 <td>=</td> 33 <td><input name="result<%=i++ %>" value=<%=rs.getString("my")%> type="text"></td> 34 </tr> 35 <%} %> 36 <tr> 37 <td> 38 <input type="hidden" name="num" value="<%=i%>"/> 39 </td> 40 <td> 41 <input type="hidden" name="user" value="<%=request.getParameter("user")%>"/> 42 </td> 43 </tr> 44 <tr> 45 <td></td> 46 <td></td> 47 <td><input type="submit" id="submit" value="点击提交答案"></td> 48 </tr> 49 </table> 50 </form> 51 </body> 52 </html>
1 <%@ page language="java" import="java.sql.*" contentType="text/html; charset=gb2312" 2 pageEncoding="utf-8"%> 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 4 <html> 5 <head> 6 <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 7 <title>结果</title> 8 <style type="text/css"> 9 a{ 10 text-align:center; 11 color:blue; 12 } 13 </style> 14 </head> 15 <body> 16 <h1 align="center">成绩</h1> 17 <table align="center"> 18 <jsp:useBean id="db" class="com.db.DB" scope="request"/> 19 <% 20 int N = Integer.parseInt(request.getParameter("num"));//出题数 21 String user = request.getParameter("user"); 22 String x = ""; 23 int i = 0; 24 25 String sq = "select * from subject where cuo=1 and [user]=?"; 26 PreparedStatement st = null; 27 st = db.getCoon().prepareStatement(sq); 28 st.setString(1, user); 29 ResultSet rs = st.executeQuery(); 30 while(rs.next()) 31 { 32 x = (String)request.getParameter("result" + i++); 33 out.print("<tr><td>" + rs.getString(2) + "</td><td> = </td>"); 34 if(rs.getString(3).equals(x)) 35 { 36 out.print("<td>" + x + "</td>"); 37 %> 38 <td><img alt="正确" src="images/accept.png"></td> 39 </tr> 40 <% 41 String sql="delete from subject where question='" + rs.getString(2) + "'and [user]='" + user +"'";//生成一条sql语句 42 Statement stmt = db.getCoon().createStatement(); 43 stmt.execute(sql); 44 } 45 else 46 { 47 out.print("<td>" + x + "</td>"); 48 %> 49 <td><img alt="错误" src="images/gif-0130.gif">正确答案为<%=rs.getString(3) %></td> 50 </tr> 51 <% 52 String geng = "update subject set my=? where [user]=? and question='" + rs.getString(2) +"'"; 53 st = db.getCoon().prepareStatement(geng); 54 st.setString(1, x); 55 st.setString(2, user); 56 st.executeUpdate(); 57 } 58 } 59 %> 60 </table> 61 <div align="center"> 62 <a href="first.jsp">返回出题界面</a> 63 </div> 64 </body> 65 </html>
运行结果截图
编程总结及体会
在合作过程中出现过各种问题,也为一个问题讨论过,也为了一些目标奋斗过,挺愉快的一次合作,虽然对合作还不是很熟悉,但我还是会努力学习和他人合作的。
学习了各种新的知识,并运用,熟悉着每一个知识点,很是开心。
编程中总会想着为程序添加各种功能,每个功能都需要大量的思考和测试,但收获很多。继续努力吧!