• 四则运算 WEB


    coding.net:https://git.oschina.net/ysh0904/WEB.git

    一、需求分析

    1. 记录用户的对错总数,程序退出再启动的时候,能把以前的对错数量保存并在此基础上增量计算。
    2. 有计时功能,能显示用户开始答题后的消耗时间。
    3. 界面支持中文简体/中文繁体/英语,用户可以选择一种;

    二、查询设计

    三、代码

    l="";
    int b=0;
    String s = null;
    int x=1+(int)(Math.random()*9);
    int x2=(int)(Math.random()*4);
    switch(x2){
    case 0:s="-";break;
    case 1:s="+";break;
    case 2:s="*";break;
    case 3:s="/";break;
    }
    l1=s;
    int x3=1+(int)(Math.random()*9);
    l=l+x+s+x3;
    int x4=(int)(Math.random()*4);
    switch(x4){
    case 0:s="-";break;
    case 1:s="+";break;
    case 2:s="*";break;
    case 3:s="/";break;
    }
    l2=s;
    int x5=1+(int)(Math.random()*9);
    l=l+s+x5;
    int x6=(int)(Math.random()*4);
    switch(x6){
    case 0:s="-";break;
    case 1:s="+";break;
    case 2:s="*";break;
    case 3:s="/";break;
    }
    l3=s;
    int x7=1+(int)(Math.random()*9);
    l=l+s+x7;//产生随机题目
    a1=x;
    a2=x3;
    a3=x5;
    a4=x7;
    p=p+1;
    request.setAttribute("diji", p);//显示第几题
    System.out.println(l);
    request.setAttribute("timu", l);//将题目保留在request让下个页面可以回去timu
    request.getRequestDispatcher("/jisuan.jsp").forward(request, response);//转发到jisuan.jsp页面

    //难度一,二,三基本一样就不写了

    ScriptEngineManager sem = new ScriptEngineManager();
    ScriptEngine engine = sem.getEngineByExtension("js");
    request.setAttribute("diji", p);
    Object p=request.getParameter("daan");
    String m1=(String) p;
    System.out.println(p);
    System.out.println(m1);
    Object result1 = null;
    try {
    result1 = engine.eval(m1);
    } catch (ScriptException e) {
    request.setAttribute("timu", l);
    request.setAttribute("message", "你输入的答案不符合要求,请重新输入");
    request.getRequestDispatcher("/cuode.jsp").forward(request, response);
    }//用户输入的如果不合要求的处理方法


    if(l1.equals("/")&&l3.equals("/")){
    if(l2.equals("+")||l2.equals("-")){
    l="("+a1+"*"+a4+"+"+a2+"*"+a3+")"+"/"+"("+a3+"*"+a4+")"+"";
    }else if(l2.equals("*")){
    l="("+a1+"*"+a3+")"+"/"+"("+a2+"*"+a4+")"+"";
    }else{
    l=a1+"/"+"("+a2+"*"+a3+"*"+a4+")"+"";
    }
    }
    if(l1.equals("/")&&!l3.equals("/")){
    if(l2.equals("*")&&l3.equals("+")){
    l=a1+"*"+a3+"/"+a2+l3+a4;
    }if(l2.equals("*")&&l3.equals("-")){
    l="("+a1+l2+a3+l3+a4+l2+a2+")"+l1+a2;
    }
    if(l2.equals("/")&&l3.equals("*")){
    l=a1+l3+a4+l2+"("+a2+"*"+a3+")";
    }if(l2.equals("/")&&l3.equals("+")){
    l=a1+l1+"("+a2+"*"+a3+")"+l3+a4;
    }if(l2.equals("/")&&l3.equals("-")){
    l="("+a1+l3+a4+"*"+a2+"*"+a3+")"+l1+"("+a2+"*"+a3+")";
    }if(l2.equals("-")&&l3.equals("*")){
    l="("+a1+l2+"("+a3+l3+a4+")"+"*"+a2+")"+l1+a2;
    }
    }
    if(l2.equals("/")){
    if(l1.equals("-")&&l3.equals("*")){
    l="("+a1+l3+a3+l1+a2+l3+a4+")"+l2+a3;
    }if(l1.equals("-")&&l3.equals("/")){
    l="("+a1+"*"+a3+"*"+a4+l1+a2+")"+l2+a3+"*"+a4;
    }if(l1.equals("-")&&l3.equals("+")){
    l="("+a1+"*"+a3+l1+a2+")"+l2+a3+l3+a4;
    }if(l1.equals("-")&&l3.equals("-")){
    l="("+"("+a1+l3+a4+")"+"*"+a3+l1+a2+")"+l2+a3;
    }if(l1.equals("*")&&l3.equals("-")){
    l="("+a1+l1+a2+l3+a3+l1+a4+")"+l2+a3;
    }if(l1.equals("/")&&l3.equals("-")){
    l="("+a1+l3+a2+"*"+a3+"*"+a4+")"+l2+"("+a2+"*"+a3+")";
    }if(l1.equals("+")&&l3.equals("-")){
    l="("+"("+a1+l3+a4+")"+"*"+a3+l1+a2+")"+l2+a3;
    }
    }
    if(l3.equals("/")){
    if(l1.equals("-")&&l2.equals("*")){
    l="("+a1+l2+a4+l1+a2+l2+a4+")"+l3+a4;
    }if(l1.equals("-")&&l2.equals("-")){
    l="("+a1+"*"+a4+l1+a2+"*"+a4+")"+l3+a4;
    }if(l1.equals("-")&&l2.equals("+")){
    l="("+a1+"*"+a4+l1+a2+"*"+a4+")"+l3+a4;
    }if(l1.equals("*")&&l2.equals("-")){
    l="("+a1+l1+a2+l1+a4+l2+a3+")"+l3+a4;
    }
    }//遇到除法的处理方式

    Object result = null;
    try {
    result = engine.eval(l);
    } catch (ScriptException e1) {
    e1.printStackTrace();
    }
    if(result1.equals(result)){
    String m="输入正确"+result;
    request.setAttribute("jieguo", m);
    k=k+1;
    }else{
    String m="输入不正确"+result;
    request.setAttribute("jieguo", m);
    y=y+1;
    }//答案的核对

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    doPost(request,response);
    }
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    String servletPath=request.getServletPath();
    String methodName=servletPath.substring(1);
    methodName=methodName.substring(0, methodName.length()-3);

    try {
    Method method=getClass().getDeclaredMethod(methodName, HttpServletRequest.class,HttpServletResponse.class);
    method.invoke(this, request,response);
    } catch (Exception e) {
    e.printStackTrace();
    }
    }

    //Servlet内构建方法必须的

    time1=request.getSession().getAttribute("kssj");
    Object time2=request.getSession().getAttribute("jssj");
    String m3="你做对了"+k;
    String m4="你做错了"+y;
    request.getSession().setAttribute("hh", m3);
    request.getSession().setAttribute("hh1", m4);
    System.out.println(k);
    System.out.println(y);
    System.out.println(time1);
    System.out.println(time2);

    Object y=session.getAttribute("hh");
    Object k=session.getAttribute("hh1");

    application.setAttribute("zuodui", y);
    application.setAttribute("zuocuo", k);

    //获取做对和做错的题目和时间,并且用application保留

    <%
    Date date=new Date();
    out.println(date);
    session.setAttribute("kssj", date);
    %>

    //日期的显示
    <br><br>
    <a href="save.do">难度一</a>
    <br><br>
    <a href="save1.do">难度二</a>
    <br><br>
    <a href="save2.do">难度三</a>

    //调用Servlet的save,save1,save2的方法

    <%
    Date date=new Date();
    out.println(date);//当前的时间显示
    out.println("<br><br>");
    Object p=request.getAttribute("diji");//读取第几的信息
    out.println("第"+p+"题目");

    %>

    <br><br>
    <form action="jisuan.do">//调用sevelet的jisuan方法
    timu:<input type="text" name="timu" value="${requestScope.timu }" />
    <br><br>
    daan:<input type="text" name="daan" />
    <br><br>
    jiegou:<input type="text" name="jiegou" value="${requestScope.jieguo }" />
    <br><br>
    <input type="submit" name="queding" />//一个按钮键的设置
    </form>

    //定义了3个属性,并且获取了timu和jieguo属性的值

    Date date=new Date();
    out.println(date);
    out.println("<br><br>");

    Object p1=request.getAttribute("message");
    if(!p1.equals(null)){
    out.println(p1);
    out.println("<br><br>");
    }
    Object p=request.getAttribute("diji");
    out.println("第"+p+"题目");

    //如果输入的答案不合适会显示这个页面并让用户重修输入

    Object time=session.getAttribute("jssj");
    Object time1=session.getAttribute("kssj");
    Date l=(Date)time;
    Date l2=(Date)time1;
    long l1=(l.getTime()-l2.getTime())/1000;

    //时间的计算方法以秒为单位

    //中英文切换

    四、程序运行

     

    题目有累加,时间只有显示此次的时间

     PSP

    五.配合方式

    1.代码部分2个一起讨论,主要框架我写,世豪主要查找一些遇到问题要解决的难题,如怎么把做对的题目和做错的题目保留到下一次,和时间的计算等。

    2.代码我主要运行,世豪主要看运行结果有什么需要改进的,如刚开始用session获取做对的题目和做错的题目,在其他浏览器又打开该页面时,会继续保留数据,但是都关掉就不行了,在提醒是用了application。还有我忘记中英文替换,在提醒下完成了替换等。

    3.界面的审美主要有世豪来改善。

    六.专业结论

    1.每个人想的都会用不完整和想不到,有人合作比较容易解决;

    2.2个人都不能太强硬或太退让,这样容易导致问题,所以合作时,该强硬就强硬,该退让还是得退让;

    3.每个人都不会不同的想法应该整合2个人的想法,或者2种方法都要尝试一下;

    4.每个都会认为自己弄得很好了,所以需要有人来评价;应该虚心接受;

    5.虽然中间会产生矛盾,但是最后还是有个不错的结果的(属性定义时,有时候随意时就会出现异常或者错误时,2个人矛盾就起来了,特别是2个人都坚持自己是对的时候)。

     七.图片

  • 相关阅读:
    【转】SQL SERVER DateTime类型的精度
    【转】一道SQL SERVER DateTime的试题
    【转】SQL Server sql_variant 类型的比较
    【转】SQL SERVER 存储过程中变量的作用域
    【转】静态游标和动态游标
    【转】SQL SERVER 开窗函数简介
    Mac上VMWare Fusion配置多台cent os
    Mac os下设置国内镜像加速站
    解决Mac下使用root 权限依旧无法读写文件的问题
    Cent OS (三)vi文本编辑操作
  • 原文地址:https://www.cnblogs.com/ysh09-04/p/6534695.html
Copyright © 2020-2023  润新知