• 软件工程结对作业02


      要求:把程序变成一个网页程序或智能手机程序, 用户通过设定参数,就可以得到各种题目,并可实现在线答题并评判。

      代码:

    首页:

     1 <!DOCTYPE html>
     2 <html>
     3 <head>
     4 <meta charset="UTF-8">
     5 <title>welcom</title>
     6 </head>
     7 <body>
     8 
     9 <body background="images/2.jpg">
    10 <div class="STYLE1" style=" 100%; font-family: 楷体; color:red;text-align: center">
    11       <h1>
    12       <marquee direction="right" scrollamount="4" >欢迎使用四则运算出题器</marquee>
    13       </h1>
    14       
    15     </div>
    16     <td align="center">
    17  <form action="MyHtml.html" method="post">
    18  <center>
    19  <div style=" padding:250px">
    20  <input type="submit"  name="submit" style="text-align:center,vertical-align:middle;400px;height:70px;background: blue;font-size:20px" value="我已准备好,请开始出题" >
    21 <input type="submit"  name="submit" style="text-align:center,vertical-align:middle;400px;height:70px;background: blue;font-size:20px" value="我没准备好,退出系统" onClick="window.close()";>
    22 </div></form>
    23 </td>
    24 </center>
    25 </body>
    26 </html>
    View Code

    选择功能界面:

     1 <!DOCTYPE html>
     2 <html>
     3   <head>
     4     <title>功能选择</title>
     5     <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
     6   </head>
     7   <body background="images/6.jpg">
     8    <div class="STYLE1" style=" 100%; font-family: 楷体; color:red; text-align: center">
     9       <h1>
    10       <marquee direction="right" scrollamount="4" >欢迎使用四则运算出题器</marquee>
    11       </h1>
    12     </div>
    13   <form action="index.jsp" method="post">
    14   <div style=" padding:100px">
    15   <center>
    16   <br>请输入最大值:
    17   <input name="MaxNumber" type="text"><br>
    18   <br>请输入最小值:
    19   <input name="MinNumber" type="text"><br>
    20   <br>请选择是否有乘除:
    21   <input type="checkbox" name="function" value=1>有 <br>
    22   <br>请选择是否有括号:
    23   <input type="checkbox" name="function" value=3>有 <br> <br>
    24   </div>
    25  </center>
    26  <center>
    27   <input type="submit" style="text-align:center,vertical-align:100px;height:30px;color: blue" name="submit" value="确定">
    28   <input type="button" style="text-align:center,vertical-align:100px;height:30px;color: blue" value="返回" onClick="window.location.href='Welcom.html'">
    29   </center>
    30   </form>
    31   </body>
    32 </html>
    View Code

    答题界面:

     1 <%@ page language="java" contentType="text/html; charset=utf-8"
     2 
     3     pageEncoding="utf-8"%>
     4 <%@ page import="test5.*"%>
     5 <%
     6 String path = request.getContextPath();
     7 String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%>
     8 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
     9 <html>
    10   <head>
    11     <base href="<%=basePath%>">
    12     
    13     <title>答题</title>
    14     <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    15   </head>
    16   <body background="images/11.gif">
    17     <div class="STYLE1" style=" 100%; font-family: 楷体; color:red; text-align: center">
    18       <h1>
    19       <marquee direction="right" scrollamount="4" >欢迎使用四则运算出题器</marquee>
    20       </h1>
    21     </div>
    22    <%
    23    String[] s=new String[30];
    24    float k[]=new float[30];
    25    Calculate a=new Calculate();
    26    request.setCharacterEncoding("UTF-8");
    27    String[] function = request.getParameterValues("function");
    28    String MaxNumber,MinNumber;
    29    MaxNumber=request.getParameter("MaxNumber");
    30    MinNumber=request.getParameter("MinNumber");
    31    a.SetValue(a.StrToNum(MaxNumber),a.StrToNum(MinNumber));
    32    if(function!=null){
    33    for(int i=0;i<function.length;i++){
    34        if(function[i].equals("1"))
    35        {
    36            a.SetValue1(1);
    37        }
    38        if(function[i].equals("3"))
    39        {
    40            a.SetValue3(0);
    41        }
    42        }
    43    }
    44     %>
    45     <center>
    46    <form action="MyJsp.jsp" method="post">
    47    <%
    48      a.main();
    49      float temp;
    50      String[] se=new String[30];
    51      for(int i=0;i<30;i++){
    52      s[i]=a.cs(i);
    53            se[i]="name";
    54            se[i]=se[i]+i;
    55      k[i]=a.css(i);
    56      out.print(s[i]);  
    57  %>
    58    <input type="text" style="color: blue;50px;height:21px;" name=<%=se[i] %>>
    59   <% out.print("&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp"); %>
    60    <% 
    61    if((i+1)%3==0)
    62          out.print("<br><br>");%>
    63    <% 
    64        } 
    65         session.setAttribute( "v1",s);
    66         session.setAttribute( "v2",k); 
    67     %>
    68          </center>
    69          
    70      
    71          <center>
    72          <br><input type="submit" style="80px;height:60px;color: blue" name="submit" value="答题完成">
    73           <input type="button" style="80px;height:60px;color: blue" value="返回首页" onClick="window.location.href='Welcom.html'">
    74          </center>
    75   </form>
    76   </body>
    77 </html>
    View Code

    判断答对几道题界面:

     1 <%@ page language="java" import="java.util.*" pageEncoding="gb2312" contentType="text/html; charset=gb2312"%>
     2 <%@ page import="test5.*"%>
     3 <%
     4 String path = request.getContextPath();
     5 String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
     6 %>
     7 
     8 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
     9 <html>
    10   <head>
    11     <base href="<%=basePath%>">   
    12     <title>finally</title>
    13   </head>
    14  <body background="images/8.jpg">
    15   <% request.setCharacterEncoding("UTF-8");%>
    16   <div class="STYLE1" style=" 100%; font-family: 楷体; color:red; text-align: center">
    17       <h1>
    18       <marquee direction="right" scrollamount="4" >谢谢使用四则运算出题器</marquee>
    19       </h1>
    20     </div>
    21   <center>
    22   <div style=" padding:250px; font-family: 楷体;font-size:30px; color:blue; text-align: center">
    23   <%
    24   String[] name=new String[30];
    25   String[] sum=new String[30];
    26   Calculate a=new Calculate();
    27   float sum1[]=new float[30];
    28   int right=0;
    29   String[] s= (String[])session.getAttribute("v1");
    30   float[] k=(float[])session.getAttribute("v2");
    31   for(int i=0;i<30;i++)
    32       sum1[i]=0;
    33   for(int i=0;i<30;i++){
    34       name[i]="name";
    35       name[i]=name[i]+i;
    36       
    37       sum[i]=request.getParameter(name[i]);
    38           if(((int)(k[i]*100))%100!=0)
    39              sum1[i]=a.StrToFloat1(sum[i]);
    40           else
    41              sum1[i]=a.StrToFloat(sum[i]);
    42           if(Math.abs(sum1[i]*100-k[i]*100)<4){
    43              right++;
    44       }   
    45   }
    46   out.print("总共做对 "+right+"道题!继续努力!");
    47   %><br>
    48   <br><br>
    49    <input type="button" style="100px;height:70px;background: blue;color: yellow" value="返回首页" onClick="window.location.href='Welcom.html'">
    50    <input type="button" style="100px;height:70px;background: blue;color: yellow" value="退出系统" onClick="window.close();">
    51     </center>
    52     </div>
    53   </body>
    54 </html>
    View Code

    主程序,主要功能实现代码:

    计算两个数结果:

     1 static float Operate(float first, char oper1, float second)
     2         {
     3             switch (oper1)
     4             {
     5             case '+':
     6             {
     7                 return (first + second);
     8             }
     9             case '-':
    10             {
    11                 if (first-second<0)
    12                 {
    13                     IsRep = 1;
    14                     return 0;
    15                 }
    16                         return (first - second);                    
    17             }
    18             case '*':
    19             {
    20                 return (first * second);                    
    21             }
    22             case '/':
    23             {
    24                         if (second == 0)
    25                         {
    26                             IsRep = 1;
    27                             return 0;
    28                         }
    29                         return (first / second);
    30             }
    31             default:  return 0; 
    32             }
    33         }    
    View Code

    加括号:

     1  static void AddLbracket(){
     2             for (int j = 0; j < 2; j++)
     3                 LBraket[j] = 0;
     4             if (Amount == 2)
     5             {
     6                 BracketNum = 0;
     7             }
     8             if (Amount == 3){
     9                 BracketNum = (int)((Math.random())*2);
    10             }
    11             if (Amount > 3)
    12             {
    13                 BracketNum = (int)((Math.random())*3);
    14             }
    15             for (int i = 0; i < BracketNum; i++){
    16                 LBraket[i] = 1 + (int)((Math.random())*(Amount - 2));
    17             }
    18         }
    19         //加右括号
    20         static void AddRbracket(){
    21             for (int j = 0; j < 2; j++)
    22                 RBraket[j] = 0;
    23             int choose;
    24             int trance;
    25             if (BracketNum == 1){
    26                 RBraket[0] = LBraket[0] + 1 +(int)((Math.random())* (Amount - LBraket[0]));
    27             }
    28             if (BracketNum == 2)
    29             {
    30                 //把最左边的左括号放在第一个数组中
    31                 if (LBraket[0] < LBraket[1])
    32                 {
    33                     trance = LBraket[0];
    34                     LBraket[0] = LBraket[1];
    35                     LBraket[1] = trance;
    36                 }
    37                 //当两个左括号之间相差有点远时有2中右括号添加方法
    38                 if (LBraket[0] - LBraket[1]>2){
    39                     choose = (int)((Math.random())*2);
    40                     if (choose == 0){
    41                         RBraket[0] = LBraket[0] + 1 + (int)((Math.random())*(Amount - LBraket[0]));
    42                         RBraket[1] = LBraket[0] + 1 + (int)((Math.random())*(Amount - LBraket[0]));
    43                     }
    44                     if (choose == 1)
    45                     {
    46                         RBraket[0] = LBraket[0] + 1 + (int)((Math.random())*(Amount - LBraket[0]));
    47                         RBraket[1] = LBraket[1] + 1 + (int)((Math.random())*(LBraket[0] - 2));
    48                     }
    49                 }
    50                 else
    51                 {
    52                     RBraket[0] = LBraket[0] + 1 + (int)((Math.random())*(Amount - LBraket[0]));
    53                     RBraket[1] = LBraket[0] + 1 + (int)((Math.random())*(Amount - LBraket[0]));
    54                     if (LBraket[0] == LBraket[1] && RBraket[0] == RBraket[1]){
    55                         LBraket[0] = LBraket[1] = 0;
    56                         RBraket[0] = RBraket[1] = 0;
    57                         BracketNum = 0;
    58 
    59                     }
    60                     if (LBraket[1] == 1 && (RBraket[0] == Amount || RBraket[1] == Amount))
    61                     {
    62                         LBraket[0] = LBraket[1] = 0;
    63                         RBraket[0] = RBraket[1] = 0;
    64                         BracketNum = 0;
    65                     }
    66                 }
    67             }
    68         }
    View Code

     随机生成操作符:

     1 static void Operater()
     2         {
     3             int choose;
     4             char op='+';
     5             if (IsMulDlvExist == 1)
     6                 choose = 1 + (int)((Math.random())* 4);
     7             else
     8                 choose = 1 + (int)((Math.random())*2);
     9             switch (choose)
    10             {
    11                 case 1:{op = '+'; lastOp = '+'; break; }
    12                 case 2:{op = '-';  lastOp = '-'; break; }
    13                 case 3:{op = '*';  lastOp = '*'; break; }
    14                 case 4:
    15                 {
    16                           //防止连续除法产生运算误区
    17                           op = '/';
    18                           if (lastOp == '/')
    19                               IsRep = 1;
    20                           else
    21                               lastOp = '/';
    22                           break;
    23                 }
    24             }
    25             formula += op;
    26         }
    View Code

    创建算式:

     1  static void CreateNumber(){
     2             for (int k = 1; k <= Amount; k++)
     3             {
     4 
     5                 for (int i = 0; i < 2; i++){
     6                     if (LBraket[i] == k)
     7                         formula += "(";
     8                 }
     9                     Integer();
    10                 for (int j = 0; j < 2; j++){
    11                     if ((RBraket[j] == k) && RBraket[j] != 0)
    12                         formula += ")";
    13                 }
    14                 if (k == Amount)
    15                     formula += "=";
    16                 else
    17                     Operater();
    18             }
    19         }
    View Code

    运行截图:

    缺陷记录日志:

    不能产生分数,另外不能判断是否有负数。

    时间记录日志:

    求数组中最大子数组的和03这篇日志博客中

  • 相关阅读:
    OSI结构和TCP/IP模型
    将[4,3,2,5,4,3]分割成[4,3,2]、[5,4,3]两个List的算法
    Mybatis增加对象属性不增加mapper.xml的情况
    以脚本方式直接执行修改密码的passwd命令
    Raphael的鼠标over move out事件
    Raphael的Braille例子
    Raphael的set使用
    Raphael的transform用法
    Raphael的text及对齐方式
    Raphael初始化,path,circle,rect,ellipse,image
  • 原文地址:https://www.cnblogs.com/quite-love/p/5360563.html
Copyright © 2020-2023  润新知