软件工程个人作业04

设计思路:

1.遍历每一个运算符,即在运算的题目答案的时候,使得不出现负数和假分数(若出现就调换数的位置或者改变运算符)

2.添加括号的方法就是列举所有加括号可能的情况,然后在相应的位置输出括号和进行计算

3.因为前面用的都是死方法,所以没有找到较好地方法检查重复

源代码:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<form method="post" action="2.jsp">
<center>
<table>

<tr>
<td>是否有乘除:
<select name="muldiv">
<option value=0>无乘除法</option>
<option value=1>有乘除法</option>
</td>
</tr>

<tr>
<td>是否有括号:
<select name="bra">
<option value=0>无括号</option>
<option value=1>有括号</option>
</td>
</tr>

<tr>
<td>取值范围(下限):<input type="text" name="min"></td>
</tr>

<tr>
<td>取值范围(上限):<input type="text" name="max"></td>
</tr>

<tr>
<td>题目数量:<input type="text" name="subject"></td>
</tr>

<tr>
<td><input type="submit" value="确定"></td>
</tr>

</table>
</center>
</form>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="3.jsp">
<%
String user0=request.getParameter("muldiv"); //是否有乘除
int muldiv=Integer.valueOf(user0);
String user1=request.getParameter("bra"); //是否有括号
int bra=Integer.valueOf(user1);
String user2=request.getParameter("min"); //取值最小值
int min=Integer.valueOf(user2);
String user3=request.getParameter("max"); //取值最大值
int max=Integer.valueOf(user3);
String user4=request.getParameter("subject"); //题目数量
int subject=Integer.parseInt(user4);

int save;
int mol = 0;
int den = 0;
String correct[] = new String[subject];
String answer[] = new String[subject];
for(int x=0;x<subject;x++)
{
    answer[x]="name"+x;
    int number = (int)(Math.random()*3+2);  //随机生成参与运算的数的个数
    int num[] = new int[number];  //储存进行运算的数
    String ope[] = new String[number];  //储存运算符

    //两个数运算
    if(number==2)
    {
        //随机生成进行运算的数
        for(int i=0;i<number;i++)
        {
            num[i] = (int)(Math.random()*(max-min+1)+min);
        }

        //随机生成运算符
        for(int i=0;i<number-1;i++)
        {
            int j = (int)(Math.random()*4);

            //乘除法
            if(muldiv==0)
            {
                if(j==2)
                {
                    j = 0;
                }
                else if(j==3)
                {
                    j = 1;
                }
            }

            if(j==0)
            {
                ope[i] = "+";
            }
            else if(j==1)
            {
                ope[i] = "-";
            }
            else if(j==2)
            {
                ope[i] = "*";
            }
            else if(j==3)
            {
                ope[i] = "/";
            }
        }
        ope[number-1] = "=";

        //不产生负数
        if(ope[0]=="-")
        {
            if(num[0]<num[1])
            {
                int change;
                change = num[0];
                num[0] = num[1];
                num[1] = change;
            }
        }

        //保证真分数
        else if(ope[0]=="/")
        {
            if(num[0]>num[1])
            {
                int change;
                change = num[0];
                num[0] = num[1];
                num[1] = change;
            }
        }

        //输出算式
        for(int i=0;i<number;i++)
        {
            out.print(num[i]+ope[i]);
        }
        %>
        <input type="text" name="<%=answer[x]%>">
        <br></br>
        <%

        //储存答案
        if(ope[0]=="+")
        {
            save = num[0] + num[1];
            correct[x] = (save+"");
        }
        else if(ope[0]=="-")
        {
            save = num[0] - num[1];
            correct[x] = (save+"");
        }
        else if(ope[0]=="*")
        {
            save = num[0] * num[1];
            correct[x] = (save+"");
        }
        else if(ope[0]=="/")
        {
            //约分
            for(int i=num[0];i>0;i--)
            {
                if(num[0]%i==0&&num[1]%i==0)
                {
                    mol = num[0] / i;
                    den = num[1] / i;
                    break;
                }
            }
            correct[x] = (mol+"/"+den);
        }
    }

    //三个数运算
    else if(number==3)
    {
        //随机生成进行运算的数
        for(int i=0;i<number;i++)
        {
            num[i] = (int)(Math.random()*(max-min+1)+min);
        }

        //随机生成运算符
        for(int i=0;i<number-1;i++)
        {
            int j = (int)(Math.random()*4);

            //乘除法
            if(muldiv==0)
            {
                if(j==2)
                {
                    j = 0;
                }
                else if(j==3)
                {
                    j = 1;
                }
            }

            if(j==0)
            {
                ope[i] = "+";
            }
            else if(j==1)
            {
                ope[i] = "-";
            }
            else if(j==2)
            {
                ope[i] = "*";
            }
            else if(j==3)
            {
                ope[i] = "/";
            }
        }
        ope[number-1] = "=";

        //加括号
        if(bra==1)
        {
            int brackets = (int)(Math.random()*3);

            //括前两个
            if(brackets==0)
            {
                int check = 0;

                //保证不产生负数和假分数
                if(ope[0]=="+")
                {
                    check = num[0] + num[1];
                }
                else if(ope[0]=="-")
                {
                    if(num[0]<num[1])
                    {
                        int change;
                        change = num[0];
                        num[0] = num[1];
                        num[1] = change;
                    }
                    check =  num[0] - num[1];
                }
                else if(ope[0]=="*")
                {
                    check = num[0] * num[1];
                }
                else if(ope[0]=="/")
                {
                    if(num[0]>num[1])
                    {
                        int change;
                        change = num[0];
                        num[0] = num[1];
                        num[1] = change;
                    }
                    check = num[0] / num[1];
                }

                if(ope[1]=="-")
                {
                    if(check<num[2])
                    {
                        //输出算式
                        out.print(num[2]+ope[1]+"("+num[0]+ope[0]+num[1]+")"+ope[2]);
                        %>
                        <form action="3.jsp">
                        <input type="text" name="<%=answer[x]%>">
                        <br></br>
                        <%
                        if(ope[0]=="/")
                        {
                            //约分
                            for(int i=num[0];i>0;i--)
                            {
                                if(num[0]%i==0&&num[1]%i==0)
                                {
                                    mol = num[0] / i;
                                    den = num[1] / i;
                                    break;
                                }
                            }
                            mol = num[2] * den - mol;
                            correct[x] = (mol+"/"+den);
                        }
                        else
                        {
                            save = num[2]  - check;
                            correct[x] = (save+"");
                        }
                    }
                    else
                    {
                        //输出算式
                        out.print("("+num[0]+ope[0]+num[1]+")"+ope[1]+num[2]+ope[2]);
                        %>
                        <form action="3.jsp">
                        <input type="text" name="<%=answer[x]%>">
                        <br></br>
                        <%
                        if(ope[0]=="/")
                        {
                            //约分
                            for(int i=num[0];i>0;i--)
                            {
                                if(num[0]%i==0&&num[1]%i==0)
                                {
                                    mol = num[0] / i;
                                    den = num[1] / i;
                                    break;
                                }
                            }
                            mol = mol - num[2] * den;
                            correct[x] = (mol+"/"+den);
                        }
                        else
                        {
                            save = check - num[2];
                            correct[x] = (save+"");
                        }
                    }
                }
                else if(ope[1]=="/")
                {
                    if(check>=num[2])
                    {
                        //输出算式
                        out.print(num[2]+ope[1]+"("+num[0]+ope[0]+num[1]+")"+ope[2]);
                        %>
                        <form action="3.jsp">
                        <input type="text" name="<%=answer[x]%>">
                        <br></br>
                        <%
                        if(ope[0]=="/")
                        {
                            mol = num[1] * num[2];
                            den = num[0];
                            //约分
                            for(int i=mol;i>0;i--)
                            {
                                if(mol%i==0&&den%i==0)
                                {
                                    mol = mol / i;
                                    den = den / i;
                                    break;
                                }
                            }
                            correct[x] = (mol+"/"+den);
                        }
                        else
                        {
                            mol = num[2];
                            den = check;
                            //约分
                            for(int i=mol;i>0;i--)
                            {
                                if(mol%i==0&&den%i==0)
                                {
                                    mol = mol / i;
                                    den = den / i;
                                    break;
                                }
                            }
                            correct[x] = (mol+"/"+den);
                        }
                    }
                    else
                    {
                        //输出算式
                        out.print("("+num[0]+ope[0]+num[1]+")"+ope[1]+num[2]+ope[2]);
                        %>
                        <form action="3.jsp">
                        <input type="text" name="<%=answer[x]%>">
                        <br></br>
                        <%
                        if(ope[0]=="/")
                        {
                            mol = num[0] * num[2];
                            den = num[1];
                            //约分
                            for(int i=mol;i>0;i--)
                            {
                                if(mol%i==0&&den%i==0)
                                {
                                    mol = mol / i;
                                    den = den / i;
                                    break;
                                }
                            }
                            correct[x] = (mol+"/"+den);
                        }
                        else
                        {
                            mol = check;
                            den = num[2];
                            //约分
                            for(int i=mol;i>0;i--)
                            {
                                if(mol%i==0&&den%i==0)
                                {
                                    mol = mol / i;
                                    den = den / i;
                                    break;
                                }
                            }
                            correct[x] = (mol+"/"+den);
                        }
                    }
                }
                else
                {
                    //输出算式
                    out.print("("+num[0]+ope[0]+num[1]+")"+ope[1]+num[2]+ope[2]);
                    if(ope[1]=="+")
                    {
                        if(ope[0]=="/")
                        {
                            den = num[1];
                            mol = num[2] * den + num[0];
                            //约分
                            for(int i=mol;i>0;i--)
                            {
                                if(mol%i==0&&den%i==0)
                                {
                                    mol = mol / i;
                                    den = den / i;
                                    break;
                                }
                            }
                            correct[x] = (mol+"/"+den);
                        }
                        else
                        {
                            save = check + num[2];
                            correct[x] = (save+"");
                        }
                    }
                    else
                    {
                        if(ope[0]=="/")
                        {
                            den = num[1];
                            mol = num[2] * num[0];
                            //约分
                            for(int i=mol;i>0;i--)
                            {
                                if(mol%i==0&&den%i==0)
                                {
                                    mol = mol / i;
                                    den = den / i;
                                    break;
                                }
                            }
                            correct[x] = (mol+"/"+den);
                        }
                        else
                        {
                            save = check * num[2];
                            correct[x] = (save+"");
                        }
                    }
                }
            }
            //括后两个
            else if(brackets==1)
            {
                int check = 0;

                //保证不产生负数和假分数
                if(ope[1]=="+")
                {
                    check = num[1] + num[2];
                }
                else if(ope[1]=="-")
                {
                    if(num[1]<num[2])
                    {
                        int change;
                        change = num[1];
                        num[1] = num[2];
                        num[2] = change;
                    }
                    check =  num[1] - num[2];
                }
                else if(ope[1]=="*")
                {
                    check = num[1] * num[2];
                }
                else if(ope[1]=="/")
                {
                    if(num[1]>num[2])
                    {
                        int change;
                        change = num[1];
                        num[1] = num[2];
                        num[2] = change;
                    }
                    check = num[1] / num[2];
                }

                if(ope[0]=="-")
                {
                    if(check>num[0])
                    {
                        //输出算式
                        out.print("("+num[1]+ope[1]+num[2]+")"+ope[0]+num[0]+ope[2]);
                        %>
                        <form action="3.jsp">
                        <input type="text" name="<%=answer[x]%>">
                        <br></br>
                        <%
                        if(ope[1]=="/")
                        {
                            den = num[2];
                            mol = num[1] - num[0] * den;
                            //约分
                            for(int i=mol;i>0;i--)
                            {
                                if(mol%i==0&&den%i==0)
                                {
                                    mol = mol / i;
                                    den = den / i;
                                    break;
                                }
                            }
                            correct[x] = (mol+"/"+den);
                        }
                        else
                        {
                            save = check - num[0];
                            correct[x] = (save+"");
                        }
                    }
                    else
                    {
                        //输出算式
                        out.print(num[0]+ope[0]+"("+num[1]+ope[1]+num[2]+")"+ope[2]);
                        %>
                        <form action="3.jsp">
                        <input type="text" name="<%=answer[x]%>">
                        <br></br>
                        <%
                        if(ope[1]=="/")
                        {
                            den = num[2];
                            mol = num[0] * den - num[1];
                            //约分
                            for(int i=mol;i>0;i--)
                            {
                                if(mol%i==0&&den%i==0)
                                {
                                    mol = mol / i;
                                    den = den / i;
                                    break;
                                }
                            }
                            correct[x] = (mol+"/"+den);
                        }
                        else
                        {
                            save = num[0] - check;
                            correct[x] = (save+"");
                        }
                    }
                }
                else if(ope[0]=="/")
                {
                    if(check<num[0])
                    {
                        //输出算式
                        out.print("("+num[1]+ope[1]+num[2]+")"+ope[0]+num[0]+ope[2]);
                        %>
                        <form action="3.jsp">
                        <input type="text" name="<%=answer[x]%>">
                        <br></br>
                        <%
                        if(ope[1]=="/")
                        {
                            den = num[2] * num[0];
                            mol = num[1];
                            //约分
                            for(int i=mol;i>0;i--)
                            {
                                if(mol%i==0&&den%i==0)
                                {
                                    mol = mol / i;
                                    den = den / i;
                                    break;
                                }
                            }
                            correct[x] = (mol+"/"+den);
                        }
                        else
                        {
                            den = num[0];
                            mol = check;
                            //约分
                            for(int i=mol;i>0;i--)
                            {
                                if(mol%i==0&&den%i==0)
                                {
                                    mol = mol / i;
                                    den = den / i;
                                    break;
                                }
                            }
                            correct[x] = (mol+"/"+den);
                        }
                    }
                    else
                    {
                        //输出算式
                        out.print(num[0]+ope[0]+"("+num[1]+ope[1]+num[2]+")"+ope[2]);
                        %>
                        <form action="3.jsp">
                        <input type="text" name="<%=answer[x]%>">
                        <br></br>
                        <%
                        if(ope[1]=="/")
                        {
                            mol = num[2] * num[0];
                            den = num[1];
                            //约分
                            for(int i=mol;i>0;i--)
                            {
                                if(mol%i==0&&den%i==0)
                                {
                                    mol = mol / i;
                                    den = den / i;
                                    break;
                                }
                            }
                            correct[x] = (mol+"/"+den);
                        }
                        else
                        {
                            mol = num[0];
                            den = check;
                            //约分
                            for(int i=mol;i>0;i--)
                            {
                                if(mol%i==0&&den%i==0)
                                {
                                    mol = mol / i;
                                    den = den / i;
                                    break;
                                }
                            }
                            correct[x] = (mol+"/"+den);
                        }
                    }
                }
                else
                {
                    //输出算式
                    out.print(num[0]+ope[0]+"("+num[1]+ope[1]+num[2]+")"+ope[2]);
                    %>
                    <form action="3.jsp">
                    <input type="text" name="<%=answer[x]%>">
                    <br></br>
                    <%
                    if(ope[0]=="+")
                    {
                        if(ope[1]=="/")
                        {
                            den = num[2];
                            mol = num[1] + num[0] * den;
                            //约分
                            for(int i=mol;i>0;i--)
                            {
                                if(mol%i==0&&den%i==0)
                                {
                                    mol = mol / i;
                                    den = den / i;
                                    break;
                                }
                            }
                            correct[x] = (mol+"/"+den);
                        }
                        else
                        {
                            save = num[0] + check;
                            correct[x] = (save+"");
                        }
                    }
                    else
                    {
                        if(ope[1]=="/")
                        {
                            den = num[2];
                            mol = num[0] * num[1];
                            //约分
                            for(int i=mol;i>0;i--)
                            {
                                if(mol%i==0&&den%i==0)
                                {
                                    mol = mol / i;
                                    den = den / i;
                                    break;
                                }
                            }
                            correct[x] = (mol+"/"+den);
                        }
                        else
                        {
                            save = num[0] * check;
                            correct[x] = (save+"");
                        }
                    }
                }
            }
            //没有括号
            else
            {
                int check = 0;

                if(ope[0]=="+")
                {
                    check = num[0] + num[1];

                    if(ope[1]=="+"||ope[1]=="*")
                    {
                        //输出算式
                        for(int i=0;i<number;i++)
                        {
                            out.print(num[i]+ope[i]);
                        }
                        %>
                        <form action="3.jsp">
                        <input type="text" name="<%=answer[x]%>">
                        <br></br>
                        <%
                        if(ope[1]=="+")
                        {
                            save = num[0] + num[1] + num[2];
                            correct[x] = (save+"");
                        }
                        else
                        {
                            save = num[0] + num[1] * num[2];
                            correct[x] = (save+"");
                        }
                    }
                    else if(ope[1]=="-")
                    {
                        if(check<num[2])
                        {
                            int change;
                            change = num[1];
                            num[1] = num[2];
                            num[2] = change;
                        }

                        //输出算式
                        for(int i=0;i<number;i++)
                        {
                            out.print(num[i]+ope[i]);
                        }
                        %>
                        <form action="3.jsp">
                        <input type="text" name="<%=answer[x]%>">
                        <br></br>
                        <%
                        save = num[0] + num[1] - num[2];
                        correct[x] = (save+"");
                    }
                    else if(ope[1]=="/")
                    {
                        if(num[1]>num[2])
                        {
                            int change;
                            change = num[1];
                            num[1] = num[2];
                            num[2] = change;
                        }

                        //输出算式
                        for(int i=0;i<number;i++)
                        {
                            out.print(num[i]+ope[i]);
                        }
                        %>
                        <form action="3.jsp">
                        <input type="text" name="<%=answer[x]%>">
                        <br></br>
                        <%
                        den = num[2];
                        mol = num[0] * den + num[1];
                        //约分
                        for(int i=mol;i>0;i--)
                        {
                            if(mol%i==0&&den%i==0)
                            {
                                mol = mol / i;
                                den = den / i;
                                break;
                            }
                        }
                        correct[x] = (mol+"/"+den);
                    }
                }
                else if(ope[0]=="-")
                {
                    check = num[0] - num[1];

                    if(ope[1]=="+")
                    {
                        if(check<0)
                        {
                            int change;
                            change = num[0];
                            num[0] = num[1];
                            num[1] = change;
                        }

                        //输出算式
                        for(int i=0;i<number;i++)
                        {
                            out.print(num[i]+ope[i]);
                        }
                        %>
                        <form action="3.jsp">
                        <input type="text" name="<%=answer[x]%>">
                        <br></br>
                        <%
                        save = num[0] - num[1] + num[2];
                        correct[x] = (save+"");
                    }
                    else if(ope[1]=="-")
                    {
                        if(check<0)
                        {
                            int change;
                            change = num[0];
                            num[0] = num[1];
                            num[1] = change;

                            check = num[0] - num[1];
                            if(check<num[2])
                            {
                                ope[1] = "+";
                            }
                        }

                        //输出算式
                        for(int i=0;i<number;i++)
                        {
                            out.print(num[i]+ope[i]);
                        }
                        %>
                        <form action="3.jsp">
                        <input type="text" name="<%=answer[x]%>">
                        <br></br>
                        <%
                        if(ope[1]=="+")
                        {
                            save = num[0] - num[1] + num[2];
                            correct[x] = (save+"");
                        }
                        else
                        {
                            save = num[0] - num[1] - num[2];
                            correct[x] = (save+"");
                        }
                    }
                    else if(ope[1]=="*")
                    {
                        check = num[1] * num[2];
                        if(num[0]<check)
                        {
                            int change1;
                            change1 = num[0];
                            num[0] = num[2];
                            num[2] = change1;

                            String change2;
                            change2 = ope[0];
                            ope[0] = ope[1];
                            ope[1] = change2;
                        }

                        //输出算式
                        for(int i=0;i<number;i++)
                        {
                            out.print(num[i]+ope[i]);
                        }
                        %>
                        <form action="3.jsp">
                        <input type="text" name="<%=answer[x]%>">
                        <br></br>
                        <%
                        if(ope[0]=="-")
                        {
                            save = num[0] - num[1] * num[2];
                            correct[x] = (save+"");
                        }
                        else
                        {
                            save = num[0] * num[1] - num[2];
                            correct[x] = (save+"");
                        }
                    }
                    else if(ope[1]=="/")
                    {
                        if(num[1]>num[2])
                        {
                            int change;
                            change = num[1];
                            num[1] = num[2];
                            num[2] = change;
                        }

                        //输出算式
                        for(int i=0;i<number;i++)
                        {
                            out.print(num[i]+ope[i]);
                        }
                        %>
                        <form action="3.jsp">
                        <input type="text" name="<%=answer[x]%>">
                        <br></br>
                        <%
                        den = num[2];
                        mol = num[0] * den  - num[1];
                        //约分
                        for(int i=mol;i>0;i--)
                        {
                            if(mol%i==0&&den%i==0)
                            {
                                mol = mol / i;
                                den = den / i;
                                break;
                            }
                        }
                        correct[x] = (mol+"/"+den);
                    }
                }
                else if(ope[0]=="*")
                {
                    check = num[0] * num[1];

                    if(ope[1]=="+"||ope[1]=="*")
                    {
                        //输出算式
                        for(int i=0;i<number;i++)
                        {
                            out.print(num[i]+ope[i]);
                        }
                        %>
                        <form action="3.jsp">
                        <input type="text" name="<%=answer[x]%>">
                        <br></br>
                        <%
                        if(ope[1]=="+")
                        {
                            save = num[0] * num[1] + num[2];
                            correct[x] = (save+"");
                        }
                        else
                        {
                            save = num[0] * num[1] * num[2];
                            correct[x] = (save+"");
                        }
                    }
                    else if(ope[1]=="-")
                    {
                        if(check<num[2])
                        {
                            int change1;
                            change1 = num[0];
                            num[0] = num[2];
                            num[2] = change1;

                            String change2;
                            change2 = ope[0];
                            ope[0] = ope[1];
                            ope[1] = change2;
                        }

                        //输出算式
                        for(int i=0;i<number;i++)
                        {
                            out.print(num[i]+ope[i]);
                        }
                        %>
                        <form action="3.jsp">
                        <input type="text" name="<%=answer[x]%>">
                        <br></br>
                        <%
                        if(ope[0]=="-")
                        {
                            save = num[0] - num[1] * num[2];
                            correct[x] = (save+"");
                        }
                        else
                        {
                            save = num[0] * num[1] - num[2];
                            correct[x] = (save+"");
                        }
                    }
                    else if(ope[1]=="/")
                    {
                        if(check>num[2])
                        {
                            ope[1] = "*";
                        }

                        //输出算式
                        for(int i=0;i<number;i++)
                        {
                            out.print(num[i]+ope[i]);
                        }
                        %>
                        <form action="3.jsp">
                        <input type="text" name="<%=answer[x]%>">
                        <br></br>
                        <%
                        if(ope[1]=="*")
                        {
                            save = num[0] * num[1] * num[2];
                            correct[x] = (save+"");
                        }
                        else
                        {
                            mol = check;
                            den = num[2];
                            for(int i=mol;i>0;i--)
                            {
                                if(mol%i==0&&den%i==0)
                                {
                                    mol = mol / i;
                                    den = den / i;
                                    break;
                                }
                            }
                            correct[x] = (mol+"/"+den);
                        }
                    }
                }
                else if(ope[0]=="/")
                {
                    if(num[0]>num[1])
                    {
                        int change;
                        change = num[0];
                        num[0] = num[1];
                        num[1] = change;
                    }

                    if(ope[1]=="+"||ope[1]=="/"||ope[1]=="*")
                    {
                        //输出算式
                        for(int i=0;i<number;i++)
                        {
                            out.print(num[i]+ope[i]);
                        }
                        %>
                        <form action="3.jsp">
                        <input type="text" name="<%=answer[x]%>">
                        <br></br>
                        <%
                        if(ope[1]=="+")
                        {
                            den = num[1];
                            mol = num[0] + num[2] * den;
                            for(int i=mol;i>0;i--)
                            {
                                if(mol%i==0&&den%i==0)
                                {
                                    mol = mol / i;
                                    den = den / i;
                                    break;
                                }
                            }
                            correct[x] = (mol+"/"+den);
                        }
                        else if(ope[1]=="/")
                        {
                            den = num[1] * num[2];
                            mol = num[0];
                            for(int i=mol;i>0;i--)
                            {
                                if(mol%i==0&&den%i==0)
                                {
                                    mol = mol / i;
                                    den = den / i;
                                    break;
                                }
                            }
                            correct[x] = (mol+"/"+den);
                        }
                        else if(ope[1]=="*")
                        {
                            den = num[1];
                            mol = num[0] * num[2];
                            for(int i=mol;i>0;i--)
                            {
                                if(mol%i==0&&den%i==0)
                                {
                                    mol = mol / i;
                                    den = den / i;
                                    break;
                                }
                            }
                            correct[x] = (mol+"/"+den);
                        }
                    }
                    else if(ope[1]=="-")
                    {
                        int change1;
                        change1 = num[0];
                        num[0] = num[2];
                        num[2] = num[1];
                        num[1] = change1;

                        String change2;
                        change2 = ope[0];
                        ope[0] = ope[1];
                        ope[1] = change2;

                        //输出算式
                        for(int i=0;i<number;i++)
                        {
                            out.print(num[i]+ope[i]);
                        }
                        %>
                        <form action="3.jsp">
                        <input type="text" name="<%=answer[x]%>">
                        <br></br>
                        <%
                        den = num[2];
                        mol = num[0] * den - num[1];
                        for(int i=mol;i>0;i--)
                        {
                            if(mol%i==0&&den%i==0)
                            {
                                mol = mol / i;
                                den = den / i;
                                break;
                            }
                        }
                        correct[x] = (mol+"/"+den);
                    }
                }
            }
        }
        //不加括号
        else
        {
            int check = 0;

            if(ope[0]=="+")
            {
                check = num[0] + num[1];

                if(ope[1]=="+"||ope[1]=="*")
                {
                    //输出算式
                    for(int i=0;i<number;i++)
                    {
                        out.print(num[i]+ope[i]);
                    }
                    %>
                    <form action="3.jsp">
                    <input type="text" name="<%=answer[x]%>">
                    <br></br>
                    <%
                    if(ope[1]=="+")
                    {
                        save = num[0] + num[1] + num[2];
                        correct[x] = (save+"");
                    }
                    else
                    {
                        save = num[0] + num[1] * num[2];
                        correct[x] = (save+"");
                    }
                }
                else if(ope[1]=="-")
                {
                    if(check<num[2])
                    {
                        int change;
                        change = num[1];
                        num[1] = num[2];
                        num[2] = change;
                    }

                    //输出算式
                    for(int i=0;i<number;i++)
                    {
                        out.print(num[i]+ope[i]);
                    }
                    %>
                    <form action="3.jsp">
                    <input type="text" name="<%=answer[x]%>">
                    <br></br>
                    <%
                    save = num[0] + num[1] - num[2];
                    correct[x] = (save+"");
                }
                else if(ope[1]=="/")
                {
                    if(num[1]>num[2])
                    {
                        int change;
                        change = num[1];
                        num[1] = num[2];
                        num[2] = change;
                    }

                    //输出算式
                    for(int i=0;i<number;i++)
                    {
                        out.print(num[i]+ope[i]);
                    }
                    %>
                    <form action="3.jsp">
                    <input type="text" name="<%=answer[x]%>">
                    <br></br>
                    <%
                    den = num[2];
                    mol = num[0] * den + num[1];
                    //约分
                    for(int i=mol;i>0;i--)
                    {
                        if(mol%i==0&&den%i==0)
                        {
                            mol = mol / i;
                            den = den / i;
                            break;
                        }
                    }
                    correct[x] = (mol+"/"+den);
                }
            }
            else if(ope[0]=="-")
            {
                check = num[0] - num[1];

                if(ope[1]=="+")
                {
                    if(check<0)
                    {
                        int change;
                        change = num[0];
                        num[0] = num[1];
                        num[1] = change;
                    }

                    //输出算式
                    for(int i=0;i<number;i++)
                    {
                        out.print(num[i]+ope[i]);
                    }
                    %>
                    <form action="3.jsp">
                    <input type="text" name="<%=answer[x]%>">
                    <br></br>
                    <%
                    save = num[0] - num[1] + num[2];
                    correct[x] = (save+"");
                }
                else if(ope[1]=="-")
                {
                    if(check<0)
                    {
                        int change;
                        change = num[0];
                        num[0] = num[1];
                        num[1] = change;

                        check = num[0] - num[1];
                        if(check<num[2])
                        {
                            ope[1] = "+";
                        }
                    }

                    //输出算式
                    for(int i=0;i<number;i++)
                    {
                        out.print(num[i]+ope[i]);
                    }
                    %>
                    <form action="3.jsp">
                    <input type="text" name="<%=answer[x]%>">
                    <br></br>
                    <%
                    if(ope[1]=="+")
                    {
                        save = num[0] - num[1] + num[2];
                        correct[x] = (save+"");
                    }
                    else
                    {
                        save = num[0] - num[1] - num[2];
                        correct[x] = (save+"");
                    }
                }
                else if(ope[1]=="*")
                {
                    check = num[1] * num[2];
                    if(num[0]<check)
                    {
                        int change1;
                        change1 = num[0];
                        num[0] = num[2];
                        num[2] = change1;

                        String change2;
                        change2 = ope[0];
                        ope[0] = ope[1];
                        ope[1] = change2;
                    }

                    //输出算式
                    for(int i=0;i<number;i++)
                    {
                        out.print(num[i]+ope[i]);
                    }
                    %>
                    <form action="3.jsp">
                    <input type="text" name="<%=answer[x]%>">
                    <br></br>
                    <%
                    if(ope[0]=="-")
                    {
                        save = num[0] - num[1] * num[2];
                        correct[x] = (save+"");
                    }
                    else
                    {
                        save = num[0] * num[1] - num[2];
                        correct[x] = (save+"");
                    }
                }
                else if(ope[1]=="/")
                {
                    if(num[1]>num[2])
                    {
                        int change;
                        change = num[1];
                        num[1] = num[2];
                        num[2] = change;
                    }

                    //输出算式
                    for(int i=0;i<number;i++)
                    {
                        out.print(num[i]+ope[i]);
                    }
                    %>
                    <form action="3.jsp">
                    <input type="text" name="<%=answer[x]%>">
                    <br></br>
                    <%
                    den = num[2];
                    mol = num[0] * den  - num[1];
                    //约分
                    for(int i=mol;i>0;i--)
                    {
                        if(mol%i==0&&den%i==0)
                        {
                            mol = mol / i;
                            den = den / i;
                            break;
                        }
                    }
                    correct[x] = (mol+"/"+den);
                }
            }
            else if(ope[0]=="*")
            {
                check = num[0] * num[1];

                if(ope[1]=="+"||ope[1]=="*")
                {
                    //输出算式
                    for(int i=0;i<number;i++)
                    {
                        out.print(num[i]+ope[i]);
                    }
                    %>
                    <form action="3.jsp">
                    <input type="text" name="<%=answer[x]%>">
                    <br></br>
                    <%
                    if(ope[1]=="+")
                    {
                        save = num[0] * num[1] + num[2];
                        correct[x] = (save+"");
                    }
                    else
                    {
                        save = num[0] * num[1] * num[2];
                        correct[x] = (save+"");
                    }
                }
                else if(ope[1]=="-")
                {
                    if(check<num[2])
                    {
                        int change1;
                        change1 = num[0];
                        num[0] = num[2];
                        num[2] = change1;

                        String change2;
                        change2 = ope[0];
                        ope[0] = ope[1];
                        ope[1] = change2;
                    }

                    //输出算式
                    for(int i=0;i<number;i++)
                    {
                        out.print(num[i]+ope[i]);
                    }
                    %>
                    <form action="3.jsp">
                    <input type="text" name="<%=answer[x]%>">
                    <br></br>
                    <%
                    if(ope[0]=="-")
                    {
                        save = num[0] - num[1] * num[2];
                        correct[x] = (save+"");
                    }
                    else
                    {
                        save = num[0] * num[1] - num[2];
                        correct[x] = (save+"");
                    }
                }
                else if(ope[1]=="/")
                {
                    if(check>num[2])
                    {
                        ope[1] = "*";
                    }

                    //输出算式
                    for(int i=0;i<number;i++)
                    {
                        out.print(num[i]+ope[i]);
                    }
                    %>
                    <form action="3.jsp">
                    <input type="text" name="<%=answer[x]%>">
                    <br></br>
                    <%
                    if(ope[1]=="*")
                    {
                        save = num[0] * num[1] * num[2];
                        correct[x] = (save+"");
                    }
                    else
                    {
                        mol = check;
                        den = num[2];
                        for(int i=mol;i>0;i--)
                        {
                            if(mol%i==0&&den%i==0)
                            {
                                mol = mol / i;
                                den = den / i;
                                break;
                            }
                        }
                        correct[x] = (mol+"/"+den);
                    }
                }
            }
            else if(ope[0]=="/")
            {
                if(num[0]>num[1])
                {
                    int change;
                    change = num[0];
                    num[0] = num[1];
                    num[1] = change;
                }

                if(ope[1]=="+"||ope[1]=="/"||ope[1]=="*")
                {
                    //输出算式
                    for(int i=0;i<number;i++)
                    {
                        out.print(num[i]+ope[i]);
                    }
                    %>
                    <form action="3.jsp">
                    <input type="text" name="<%=answer[x]%>">
                    <br></br>
                    <%
                    if(ope[1]=="+")
                    {
                        den = num[1];
                        mol = num[0] + num[2] * den;
                        for(int i=mol;i>0;i--)
                        {
                            if(mol%i==0&&den%i==0)
                            {
                                mol = mol / i;
                                den = den / i;
                                break;
                            }
                        }
                        correct[x] = (mol+"/"+den);
                    }
                    else if(ope[1]=="/")
                    {
                        den = num[1] * num[2];
                        mol = num[0];
                        for(int i=mol;i>0;i--)
                        {
                            if(mol%i==0&&den%i==0)
                            {
                                mol = mol / i;
                                den = den / i;
                                break;
                            }
                        }
                        correct[x] = (mol+"/"+den);
                    }
                    else if(ope[1]=="*")
                    {
                        den = num[1];
                        mol = num[0] * num[2];
                        for(int i=mol;i>0;i--)
                        {
                            if(mol%i==0&&den%i==0)
                            {
                                mol = mol / i;
                                den = den / i;
                                break;
                            }
                        }
                        correct[x] = (mol+"/"+den);
                    }
                }
                else if(ope[1]=="-")
                {
                    int change1;
                    change1 = num[0];
                    num[0] = num[2];
                    num[2] = num[1];
                    num[1] = change1;

                    String change2;
                    change2 = ope[0];
                    ope[0] = ope[1];
                    ope[1] = change2;

                    //输出算式
                    for(int i=0;i<number;i++)
                    {
                        out.print(num[i]+ope[i]);
                    }
                    %>
                    <form action="3.jsp">
                    <input type="text" name="<%=answer[x]%>">
                    <br></br>
                    <%
                    den = num[2];
                    mol = num[0] * den - num[1];
                    for(int i=mol;i>0;i--)
                    {
                        if(mol%i==0&&den%i==0)
                        {
                            mol = mol / i;
                            den = den / i;
                            break;
                        }
                    }
                    correct[x] = (mol+"/"+den);
                }
            }
        }
    }
}
%>
<%
    session.setAttribute("v", correct);
%>
<input type="submit" value="确认">
</form>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
    String[] correct = (String[])session.getAttribute("v");
    String[] answer = new String[correct.length];
%>
    <table>
        <th>序号<th>正确答案<th>输入答案<th>判断
        <%
            for(int x=0;x<correct.length;x++)
            {
                answer[x] = request.getParameter("name"+x);
                out.print(correct[x]);
        %>
        <tr>
            <td align="center"><%=x+1 %></td>
            <td align="center"><%=correct[x] %></td>
            <td align="center"><%=answer[x] %></td>
         <%
               if(answer[x].equals(correct[x]))
               {
        %>
            <td align="center">正确</td>
        <%
              }
              else
              {
        %>
           <td align="center">错误</td>
        <%
              }
        %>
         </tr>
        <%
            }
        %>
    </table>
</body>
</html>

结果截图:

时间记录日志:

日期 开始时间 结束时间 中断时间 净时间 活动 备注
3/28 8:00 9:50 10min 100min 上课  
3/30 15:00 17:00   120min 编程 把原来C++内容改成java
4/4 8:00 9:50 10min 100min 上课  
4/5 15:00 17:00   120min 编程 把原来C++内容改成java
4/6 15:00 17:00   120min 编程 学习网页的编写
4/9 9:00 22:00 180min 600min 编程  
4/11 8:00 9:50 10min 100min 上课  
4/14 15:00 22:00 120min 300min 编程 整合java内容和jsp内容
时间: 2024-08-10 19:17:55

软件工程个人作业04的相关文章

软件工程课堂作业04

软件工程课堂作业04 源代码: 1 package jian; 2 import java.io.*; 3 import java.util.Scanner; 4 public class Point3D{ 5 public static int Lenght(int list[],int lenght) 6 { 7 int i,max; 8 max=list[0]; 9 for(i=1;i<=(lenght-1);i++) 10 { 11 if(list[i]>max) 12 { 13 ma

软件工程个人作业04(求数组最大子数组的和)

题目:返回一个整数数组中最大子数组的和. 要求:输入一个一维整形数组,数组里有正数也有负数.一维数组首尾相接,象个一条首尾相接带子一样.数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和.求所有子数组的和的最大值. 程序设计思想:程序中使用到一个用来求数组的最大子数组和的函数,这里可以将原数组的前n-1项加到数组的后面,形成一个新的数组,这样就可以求这种首尾相连的数组的最大子数组和了. 源代码: public class zishuzu {     /**     * @param

软件工程个人作业04 - 整数数组中最大子数组和(第二版)

要求: 输入一个一维整形数组,数组里有正数也有负数. 一维数组首尾相接,象个一条首尾相接带子一样. 数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和.求所有子数组的和的最大值. 设计思想: 1 设传参的数组长为n,创建长度为2n的辅助数组,按顺序赋两遍值 2 每一个以 i 开头的子数组有 n 个,也就是从 第 i 个到 n+i (i<=n) 3 将得到的子数组求和并存起来,判断和数组中的最大值即可. 源代码: import java.util.Vector; public clas

软件工程第一次作业补充

软件工程第一次作业的补充 对于作业"在一周之内快速看完<构建之法>,列出你不懂的5-10个问题". 作业要求有: (1)在每个问题后面,请说明哪一章节的什么内容引起了你的提问,提供一些上下文 (2)列出一些事例或资料,支持你的提问 (3)说说你提问题的原因,你说因为自己的假设和书中的不同而提问,还是不懂书中的术语,还是对推理过程有疑问,还是书中的描述和你的经验(直接经验或间接经验)矛盾? 例如:我看了这一段文字 (引用文字),有这个问题 (提出问题):我查了资料,有这些说法

软件工程教学作业 汇总

本篇文章收集并整理各位教师在博客园中发表的软件工程教学作业,希望为各位老师.学生和爱好者提供便利. 如果博文作者提出异议或意见,本人虚心接受并诚恳道歉. 小林觉 http://www.cnblogs.com/juking/ 学年 学期 作业 链接 简介 2015-2016 1 1 http://www.cnblogs.com/juking/p/4787124.html http://www.cnblogs.com/juking/p/4803578.html   2015-2016 1 2 htt

软件工程第一次作业程序开发历程

收到软件工程的作业,面对题目“......”.我先拟定了一个大概的思路,以及一些关键的函数.思路利用循环产生30道算术式,并计算答案,存储答案,在利用循环显示30道题的答案. 而关键函数我认为就是随机正整数的产生.考虑到这点,我决定用javascript来编写我的程序,其一是因为最近学习js,其二是因为对c和c++有点陌生了,然后javascript有Math.random这个函数,尽管它只能产生0与1之间的随机数.决定完语言后,我又分析了下题目,考虑到涉及真分数的问题,我将程序分成整数与真分数

软件工程个人作业02-1

老师对自动出题的系统又有了新的功能: 1.是否有乘除法: 2.是否有括号:最多可支持十个数参与计算 3.数值范围: 4.加减结果有无负数: 5.除法结果有无余数: (因为和上文的思路有些交汇,不懂的可以参考上文 >>点击这里参考上文) 下面是我的思路: 1.是否有乘除法: 分条件设置a的值 如果选择无乘除:a=(int)(0+Math.random()*2);//a=0或a=1时分别对应着string数组的"+""-" 如果选择无乘除:a=(int)(0

软件工程结对作业02(借鉴版)

软件工程结对作业02(借鉴版) 在编写程序的时候因为不会将Java程序嵌入进jsp中所以借鉴了一个学姐的程序,下面是学姐的程序.但在对学姐程序就行修改时发现了一些问题: 在Newjsp中能调用html中的题目个数的参数 在Myjsp中不能调用html中的题目个数的参数 其中这个参数timugeshu,是我自己后来添加的,用来改变题目个数的,与Java程序无关,只在jsp文件中作用 源程序: NewFeil.html <!DOCTYPE html> <html> <head&g

软件工程个人作业12

软件工程个人作业12 程序题目: •三人行设计了一个灌水论坛.信息学院的学生都喜欢在上面交流灌水,传说在论坛上有一个“水王”,他不但喜欢发帖,还会回复其他ID发的每个帖子.坊间风闻该“水王”发帖数目超过了帖子数目的一半. •如果你有一张当前论坛的帖子(包括回帖)列表,其中帖子的作者的ID也在其中,你能快速的找到这个传说中的水王吗? 一.设计思想 根据“水王”发帖数目超过了帖子数目的一半,通过寻找发帖数过半的ID找出“水王”. 二.源代码: 1 package finding; 2 3 impor