20150401 作业2 结对 四则运算ver 1.0

Web項目下 Tomcat服務器的路徑 /WebContant/ 目錄下

SE2_2.jsp

<%@ 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 class="no-js">
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge; charset=UTF-8">
<meta name="description" content="">
<meta name="keywords" content="">
<meta name="viewport"
    content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
<link rel="icon" type="image/png"
    href="https://lh6.googleusercontent.com/-xtIe5pwl_0Y/VQk1jMCNZZI/AAAAAAAAADo/Hc_21K6mVr8/s578-no/%E7%90%AA%E9%9C%B2%E8%AF%BA%E5%A4%B4%E5%83%8F.jpg">
<title>小學四則運算</title>
<link rel="stylesheet"
    href="http://cdn.amazeui.org/amazeui/2.2.1/css/amazeui.min.css" />
<script src="http://libs.baidu.com/jquery/1.11.1/jquery.min.js"></script>
<script type="text/javascript"
    src="http://cdn.amazeui.org/amazeui/2.2.1/js/amazeui.min.js"></script>

<!-- cookie 用戶名 -->
<script type="text/javascript">
    function getCookie(c_name) {
        if (document.cookie.length > 0) {
            c_start = document.cookie.indexOf(c_name + "=")
            if (c_start != -1) {
                c_start = c_start + c_name.length + 1
                c_end = document.cookie.indexOf(";", c_start)
                if (c_end == -1)
                    c_end = document.cookie.length
                return unescape(document.cookie.substring(c_start, c_end))
            }
        }
        return ""
    }

    function setCookie(c_name, value, expiredays) {
        var exdate = new Date()
        exdate.setDate(exdate.getDate() + expiredays)
        document.cookie = c_name
                + "="
                + escape(value)
                + ((expiredays == null) ? "" : "; expires="
                        + exdate.toGMTString())
    }

    function checkCookie() {
        username = getCookie(‘username‘)
        if (username != null && username != "") {
            alert(‘歡迎你的到來,‘ + username + ‘!‘)
        } else {
            username = prompt(‘請輸入用戶名:‘, "")
            if (username != null && username != "") {
                setCookie(‘username‘, username, 3)
            }
        }
    }
</script>
</head>
<body class="am-g" style="text-align: center" >
    <h1 class="am-u-lg-6 am-u-md-8 am-u-sm-centered">小學四則運算系統 ver1.0</h1>
    <!--設置 背景色  功能-->
    <h2 class="am-u-lg-6 am-u-md-8 am-u-sm-centered">設置背景顏色</h2>
    <div class="am-u-lg-6 am-u-md-8 am-u-sm-centered">
        <div id="color" class="am-btn-group doc-js-btn-1" data-am-button>
            <label class="am-btn am-btn-default"> <input type="radio"
                name="options" value="white" id="option1"> 白色
            </label> <label class="am-btn am-btn-primary"> <input type="radio"
                name="options" value="#0e90d2" id="option2"> 藍色
            </label> <label class="am-btn am-btn-secondary"> <input type="radio"
                name="options" value="#3bb4f2" id="option3"> 淡藍色
            </label> <label class="am-btn am-btn-success"> <input type="radio"
                name="options" value="#5eb95e" id="option4"> 綠色
            </label> <label class="am-btn am-btn-warning"> <input type="radio"
                name="options" value="#f37b1d" id="option5"> 橙色
            </label> <label class="am-btn am-btn-danger"> <input type="radio"
                name="options" value="#dd514c" id="option6"> 紅色
            </label>
        </div>
        <hr data-am-widget="divider" style=""
            class="am-divider am-divider-default" />
    </div>
    <script type="text/javascript">
        // 获取选中的值
        $(document).ready(
                function() {
                    $(function() {
                        var $radios = $(‘[name="options"]‘);
                        $radios.on(‘change‘, function() {
                            console.log(‘单选框当前选中的是:‘, $radios
                                    .filter(‘:checked‘).val());
                        });
                    });

                    $("#color").click(
                            function() {
                                $("body").css(
                                        "background-color",
                                        $(‘input[name="options"]‘).filter(
                                                ‘:checked‘).val());
                            });
                });
    </script>

    <!-- 設置 題目 數量 -->
    <form name="form" class="am-form-inline" role="form" action="SE2_1.jsp"
        method="post">
        <div class="am-form-group">
            <span>請輸入題目數量:</span> <input name="number" type="number" min="1"
                max="5" class="am-form-field" placeholder="題數">
        </div>
        <button type="submit" class="am-btn am-btn-default">確定</button>
    </form>
</body>
</html>

SE2_1.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="com.SE2.*"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html class="no-js">
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge; charset=UTF-8">
<meta name="description" content="">
<meta name="keywords" content="">
<meta name="viewport"
    content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
<link rel="icon" type="image/png"
    href="https://lh6.googleusercontent.com/-xtIe5pwl_0Y/VQk1jMCNZZI/AAAAAAAAADo/Hc_21K6mVr8/s578-no/%E7%90%AA%E9%9C%B2%E8%AF%BA%E5%A4%B4%E5%83%8F.jpg">
<title>小學四則運算</title>
<link rel="stylesheet"
    href="http://cdn.amazeui.org/amazeui/2.2.1/css/amazeui.min.css" />
<script src="http://libs.baidu.com/jquery/1.11.1/jquery.min.js"></script>
<script type="text/javascript"
    src="http://cdn.amazeui.org/amazeui/2.2.1/js/amazeui.min.js"></script>

<!-- 延時 計時 功能 -->
<script type="text/javascript">
    var c = 120
    var t
    function timedCount() {
        document.getElementById(‘txt‘).value = c
        c = c - 1
        if (c == 0) {
            document.getElementById(‘txt‘).value = c
            clearTimeout(t)
            alert(‘120秒到了!‘)
        } else
            t = setTimeout("timedCount()", 1000)
    }
    function gettime(){
        document.getElementById(‘time‘).value = 120-c;
    }
</script>
</head>
<body class="am-g" style="text-align: center" >
    <h1 class="am-u-lg-6 am-u-md-8 am-u-sm-centered">小學四則運算系統 ver1.0</h1>
    <!--設置 背景色  功能-->
    <h2 class="am-u-lg-6 am-u-md-8 am-u-sm-centered">設置背景顏色</h2>
    <div class="am-u-lg-6 am-u-md-8 am-u-sm-centered">
        <div id="color" class="am-btn-group doc-js-btn-1" data-am-button>
            <label class="am-btn am-btn-default"> <input type="radio"
                name="options" value="white" id="option1"> 白色
            </label> <label class="am-btn am-btn-primary"> <input type="radio"
                name="options" value="#0e90d2" id="option2"> 藍色
            </label> <label class="am-btn am-btn-secondary"> <input type="radio"
                name="options" value="#3bb4f2" id="option3"> 淡藍色
            </label> <label class="am-btn am-btn-success"> <input type="radio"
                name="options" value="#5eb95e" id="option4"> 綠色
            </label> <label class="am-btn am-btn-warning"> <input type="radio"
                name="options" value="#f37b1d" id="option5"> 橙色
            </label> <label class="am-btn am-btn-danger"> <input type="radio"
                name="options" value="#dd514c" id="option6"> 紅色
            </label>
        </div>
        <hr data-am-widget="divider" style=""
            class="am-divider am-divider-default" />
    </div>
    <script type="text/javascript">
        // 获取选中的值
        $(document).ready(
                function() {
                    $(function() {
                        var $radios = $(‘[name="options"]‘);
                        $radios.on(‘change‘, function() {
                            console.log(‘单选框当前选中的是:‘, $radios
                                    .filter(‘:checked‘).val());
                        });
                    });

                    $("#color").click(
                            function() {
                                $("body").css(
                                        "background-color",
                                        $(‘input[name="options"]‘).filter(
                                                ‘:checked‘).val());
                            });
                });
    </script>

    <!-- javabean -->
    <jsp:useBean id="SE2_1" class="com.SE2.SE2_1" scope="request" />

    <!-- 延時 功能-->
    <div id="count">
        <span>算題時間倒計時:</span> <input id="txt" type="button"
            class="am-btn am-btn-danger" disabled="disabled" />
    </div>
    <hr data-am-widget="divider" style=""
        class="am-divider am-divider-default" />
    <%
            String number=request.getParameter("number");
            String [] num={"①","②","③","④","⑤"};
            int inumber=Integer.parseInt(number);
            double [][] Answer=new double[inumber][2];
            String [] str=new String[inumber];
            String [] s=new String[inumber];
            String [] an=new String[inumber];
            String [] t=new String[inumber];
            for(int i=0;i<inumber;i++){
                s[i]="Answer"+String.valueOf(i);
                an[i]="an"+String.valueOf(i);
                t[i]="title"+String.valueOf(i);
            }
            //out.print(number+"<br />");
            for(int i=0;i<inumber;i++){
                SE2_1.GA();
                Answer[i][0]=SE2_1.getdaan9number();
                Answer[i][1]=SE2_1.getdaan12();
                str[i]=SE2_1.getshizi9();
                //out.print(str[i]);
                //out.print(Answer[i][0]+"四捨五入答案"+Answer[i][1]+"<br />");
            }
            %>
    <div class="am-u-lg-6 am-u-md-8 am-u-sm-centered">
        <form class="am-form am-form-horizontal" action="SE2_3.jsp" method="post" >

            <% for(int i=0;i<inumber;i++){%>
            <div class="am-form-group">
                <label class="am-u-sm-1 am-form-label"><%=num[i] %></label><label for="doc-ipt-3" class="am-u-sm-8 am-form-label"><%out.print(str[i]); %></label>
                <div class="am-u-sm-3">
                    <input type="text" name="<%=an[i] %>" id="doc-ipt-3" placeholder="输入答案">
                </div>
            </div>
            <div class="am-form-group">
                <div class="am-u-sm-offset-2 am-u-sm-10"></div>
            </div>
            <%} %>
            <div class="am-form-group">
                <div class="am-u-sm-10 am-u-sm-offset-2">
                    <button type="submit" class="am-btn am-btn-primary" onclick="gettime()">提交</button>
                </div>
            </div>
            <input type="hidden" name="inumber" value="<%=inumber%>"/>
            <%
            for(int i=0;i<inumber;i++){
            %>
            <input type="hidden" name="<%=t[i] %>" value="<%=str[i] %>" />
            <input type="hidden" name="<%=s[i] %>" value="<%=Answer[i][0] %>"/>
            <%} %>
            <input id="time" type="hidden" name="time" value="" />
        </form>
    </div>
</body>
</html>

SE2_3.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="com.SE2.*"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html class="no-js">
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge; charset=UTF-8">
<meta name="description" content="">
<meta name="keywords" content="">
<meta name="viewport"
    content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
<link rel="icon" type="image/png"
    href="https://lh6.googleusercontent.com/-xtIe5pwl_0Y/VQk1jMCNZZI/AAAAAAAAADo/Hc_21K6mVr8/s578-no/%E7%90%AA%E9%9C%B2%E8%AF%BA%E5%A4%B4%E5%83%8F.jpg">
<title>小學四則運算</title>
<link rel="stylesheet"
    href="http://cdn.amazeui.org/amazeui/2.2.1/css/amazeui.min.css" />
<script src="http://libs.baidu.com/jquery/1.11.1/jquery.min.js"></script>
<script type="text/javascript"
    src="http://cdn.amazeui.org/amazeui/2.2.1/js/amazeui.min.js"></script>
    <style type="text/css">
     th{
        text-align:center
     }
    </style>
</head>
<body class="am-g" style="text-align: center">
    <h1 class="am-u-lg-6 am-u-md-8 am-u-sm-centered">小學四則運算系統 ver1.0</h1>
    <!--設置 背景色  功能-->
    <h2 class="am-u-lg-6 am-u-md-8 am-u-sm-centered">設置背景顏色</h2>
    <div class="am-u-lg-6 am-u-md-8 am-u-sm-centered">
        <div id="color" class="am-btn-group doc-js-btn-1" data-am-button>
            <label class="am-btn am-btn-default"> <input type="radio"
                name="options" value="white" id="option1"> 白色
            </label> <label class="am-btn am-btn-primary"> <input type="radio"
                name="options" value="#0e90d2" id="option2"> 藍色
            </label> <label class="am-btn am-btn-secondary"> <input type="radio"
                name="options" value="#3bb4f2" id="option3"> 淡藍色
            </label> <label class="am-btn am-btn-success"> <input type="radio"
                name="options" value="#5eb95e" id="option4"> 綠色
            </label> <label class="am-btn am-btn-warning"> <input type="radio"
                name="options" value="#f37b1d" id="option5"> 橙色
            </label> <label class="am-btn am-btn-danger"> <input type="radio"
                name="options" value="#dd514c" id="option6"> 紅色
            </label>
        </div>
        <hr data-am-widget="divider" style=""
            class="am-divider am-divider-default" />
    </div>
    <script type="text/javascript">
        // 获取选中的值
        $(document).ready(
                function() {
                    $(function() {
                        var $radios = $(‘[name="options"]‘);
                        $radios.on(‘change‘, function() {
                            console.log(‘单选框当前选中的是:‘, $radios
                                    .filter(‘:checked‘).val());
                        });
                    });

                    $("#color").click(
                            function() {
                                $("body").css(
                                        "background-color",
                                        $(‘input[name="options"]‘).filter(
                                                ‘:checked‘).val());
                            });
                });
    </script>

    <!-- javabean -->
    <jsp:useBean id="SE2_1" class="com.SE2.SE2_1" scope="request" />
    <%
        String inumber=request.getParameter("inumber");
        String time=request.getParameter("time");
        int number=Integer.parseInt(inumber);
        String []Answer=new String[number];
        String []input=new String[number];
        String []title=new String[number];
        for(int i=0;i<Answer.length;i++){
                title[i]=request.getParameter("title"+i);
                input[i]=request.getParameter("an"+i);
                Answer[i]=request.getParameter("Answer"+i);
                SE2_1.setshuru(input[i]);
                SE2_1.Input(input[i]);
        }
        int zhengque=SE2_1.panduan(input,Answer);
        int cuowu=number-zhengque;
        double rate=(double)zhengque/number*100;
    %>
    <div class="am-u-lg-6 am-u-md-8 am-u-sm-centered">
        <h1 class="am-u-lg-6 am-u-md-8 am-u-sm-centered">對照答案</h1>
        <table
            class="am-table am-table-bordered am-table-striped am-table-hover">
            <thead>
                <tr>
                <th>題目</th>
                <th>你的輸入</th>
                <th>參考答案</th>
                </tr>
            </thead>
            <tbody>
            <%for(int i=0;i<number;i++){ %>
                <tr>
                    <td><%=title[i] %></td>
                    <td><%=input[i] %></td>
                    <td><%=Answer[i] %><br />四捨五入後:<%=SE2_1.strto12(Answer[i]) %></td>
                </tr>
                <%} %>
            </tbody>
        </table>
    </div>
    <div class="am-u-lg-6 am-u-md-8 am-u-sm-centered">
        <h1 class="am-u-lg-6 am-u-md-8 am-u-sm-centered">分數統計</h1>
        <table
            class="am-table am-table-bordered am-table-striped am-table-hover">
            <tbody>
                <tr>
                    <td>總共</td>
                    <td><%=inumber %>題</td>
                </tr>
                <tr>
                    <td>正確情況</td>
                    <td>答對<%=zhengque %>題,答錯<%=cuowu %>題</td>
                </tr>
                <tr>
                    <td>正確率</td>
                    <td><%=rate%>%</td>
                </tr>
                <tr>
                    <td>用時</td>
                    <td><%=time %>秒</td>
                </tr>
            </tbody>
        </table>
    </div>
    <button type="button" class="am-btn am-btn-default"><a class="am-btn am-btn-link" href="SE2_2.jsp">繼續答題</a></button>
</body>
</html>

Web項目下 /src/com.SE2/

SE2_1.java

package com.SE2;

import java.util.ArrayList;
import java.util.Random;

public class SE2_1 {// Software Engineering 軟件工程 作業2
    static String jia = "+";
    static String jian = "-";
    static String cheng = "*";
    static String chu = "/";
    String shizi9 = null;
    RN daan9;
    double daan12;
    String shuru;
    double shuruZH;
    int zhengque, cuowu;

    public double strto12(String daan) {
        return Math.round(Double.parseDouble(daan) * 100) / 100.0;
    }

    public int panduan(String[] input, String[] Answer) {
        int count = 0;
        for (int i = 0; i < Answer.length; i++) {
            if (Double.parseDouble(input[i]) == Double.parseDouble(Answer[i])
                    || Double.parseDouble(input[i]) == Math.round(Double
                            .parseDouble(Answer[i]) * 100) / 100.0)
                count++;
        }
        return count;
    }

    public void setcuowu(int cuowu) {
        this.cuowu = cuowu;
    }

    public void setzhengque(int zhengque) {
        this.zhengque = zhengque;
    }

    public int getcuowu() {
        return cuowu;
    }

    public int getzhengque() {
        return zhengque;
    }

    public boolean panduandaan() {
        if (daan9.getSign() == 0
                && (getshuruZH() == getdaan9number() || getshuruZH() == getdaan12()))
            return true;
        else if (daan9.getSign() == 2 && getshuruZH() == getdaan9number())
            return true;
        else
            return false;
    }

    public void setshuru(String shuru) {
        this.shuru = shuru;
    }

    public String getshuru() {
        return shuru;
    }

    public double str_daanTodouble_daan12(String daan) {
        return 1;// !!!
    }

    public void setshuruZH() {
        shuruZH = Input(getshuru()).getNumber();
    }

    public double getshuruZH() {
        return shuruZH;
    }

    public void setshizi9(String shizi) {
        shizi9 = shizi;
    }

    public String getshizi9() {
        return shizi9;
    }

    public void setdaan12byStr(String daan) {
        daan12 = Math.round(Double.parseDouble(daan) * 100) / 100.0;
    }

    public void setdaan12(double daan) {
        daan12 = Math.round(daan * 100) / 100.0;
    }

    public double getdaan12() {
        return daan12;
    }

    public void setdaan9(RN daan) {
        daan9 = daan;
        setdaan12(daan9.getNumber());
    }

    public RN getdaan9() {
        return daan9;
    }

    public double getdaan9number() {
        return daan9.getNumber();
    }

    public RN Input(String input) {
        RN temp = this.new RN();
        if (input.contains("/")) {
            temp.setMolecular(Integer.parseInt(input.substring(0,
                    input.indexOf("/"))));
            temp.setDenominator(Integer.parseInt(input.substring(input
                    .indexOf("/") + 1)));
            temp.setSign(2);
        } else {
            temp.setDecimal(Double.parseDouble(input));
            temp.setSign(0);
        }
        return temp;
    }

    public double jiechengdaan(int n, double all) {
        if (n < 0)
            return 0;
        else if (n == 0)
            return 1;
        else if (n == 1)
            return all;
        else
            return jiechengdaan(n - 1, n * all);
    }

    public double jiecheng() {
        int jiecheng = new Random().nextInt(10);
        System.out.print(jiecheng + "!=");
        return jiechengdaan(jiecheng, 1);
    }

    public void fangfa(ArrayList<String> A, ArrayList<RN> O, String what) {
        int index = A.indexOf(what);
        // System.out.println(O.get(index).getNumber() + what
        // + O.get(index + 1).getNumber() + "="
        // + (O.get(index).getNumber() * O.get(index + 1).getNumber()));
        if (what.equals(cheng)) {
            O.set(index, new RN(O.get(index).getNumber()
                    * O.get(index + 1).getNumber(), 0));
        } else if (what.equals(chu)) {
            O.set(index, new RN(O.get(index).getNumber()
                    / O.get(index + 1).getNumber(), 0));
        } else if (what.equals(jia)) {
            O.set(index, new RN(O.get(index).getNumber()
                    + O.get(index + 1).getNumber(), 0));
        } else {
            O.set(index, new RN(O.get(index).getNumber()
                    - O.get(index + 1).getNumber(), 0));
        }
        // System.out.println("here set " + O.get(index).getNumber() + " at "
        // + index);
        // System.out.println("here remove " + O.get(index + 1).getNumber()
        // + " from " + (index + 1) + " and remove " + A.get(index)
        // + " from " + index);
        O.remove(index + 1);
        A.remove(index);
    }

    public RN getAnswer(RN[] Operand, String[] AS) {
        ArrayList<String> A = new ArrayList<String>();
        ArrayList<RN> O = new ArrayList<RN>();
        System.out.println();
        for (String as : AS) {
            A.add(as);
            // System.out.print(as + "  ");
        }
        System.out.println();
        for (RN op : Operand) {
            O.add(op);
            // System.out.print(op.getNumber() + "  ");
        }
        System.out.println();
        while (A.get(0) != "=") {
            if (A.contains(cheng) || A.contains(chu)) {
                if (((A.contains(cheng) ^ A.contains(chu)) == true ? (A
                        .contains(cheng) == true ? true : false) : (A
                        .indexOf(cheng) < A.indexOf(chu) ? true : false)))
                    fangfa(A, O, cheng);
                else
                    fangfa(A, O, chu);
            } else if (A.contains(jia) || A.contains(jian)) {
                if (((A.contains(jia) ^ A.contains(jian)) == true ? (A
                        .contains(jia) == true ? true : false) : (A
                        .indexOf(jia) < A.indexOf(jian) ? true : false)))
                    fangfa(A, O, jia);
                else
                    fangfa(A, O, jian);

            } else
                System.out.println("error!!");
            O.trimToSize();
            A.trimToSize();
        }
        return O.get(0);
    }

    // public RN GA(int number) {// Generation algorithm 生成算式
    // RN[] Operand = new RN[number];
    // String[] AS = new String[number];
    // AS[number - 1] = "=";
    // for (int i = 0; i < number; i++) {// 生成 number 个操作数
    // Operand[i] = new RN();
    // switch (new Random().nextInt(2) + 1) {// 這裏設置了Int(2)+1略過 小數
    // // ifInt(3)就會出現小數
    // case 0:// 小数[0~1.0) *100
    // do
    // Operand[i]
    // .setDecimal(((int) (new Random().nextDouble() * 19900)) / 100.0 - 99);
    // while (Operand[i].getDecimal() == 0);
    // Operand[i].setSign(0);
    //
    // break;
    // case 1:// 整数[0~n)
    // do
    // Operand[i].setInteger(new Random().nextInt(199) - 99);
    // while (Operand[i].getInteger() == 0);
    // Operand[i].setSign(1);
    // break;
    // case 2:// 分数
    // do
    // Operand[i].setMolecular(new Random().nextInt(199) - 99);
    // while (Operand[i].getMolecular() == 0);
    // Operand[i].setDenominator(new Random().nextInt(99) + 1);
    // Operand[i].setSign(2);
    // break;
    // default:
    // System.exit(0);
    // }
    // if (i > 0)
    // switch (new Random().nextInt(4)) {
    // case 0:
    // AS[i - 1] = jia;
    // break;
    // case 1:
    // AS[i - 1] = jian;
    // break;
    // case 2:
    // AS[i - 1] = cheng;
    // break;
    // case 3:
    // AS[i - 1] = chu;
    // break;
    // default:
    // System.exit(0);
    // }
    // }
    // for (int i = 0; i < number; i++)
    // System.out.print((Operand[i].getNumber() < 0 ? "(" : "")
    // + Operand[i].toString()
    // + (Operand[i].getNumber() < 0 ? ")" : "") + " " + AS[i]
    // + " ");
    // return getAnswer(Operand, AS);
    // }
    public void GA() {// Generation algorithm 生成算式
        int number = new Random().nextInt(4) + 2;
        RN[] Operand = new RN[number];
        String[] AS = new String[number];
        AS[number - 1] = "=";
        String shizi2 = "";
        for (int i = 0; i < number; i++) {// 生成 number 个操作数
            Operand[i] = new RN();
            switch (new Random().nextInt(2) + 1) {// 這裏設置了Int(2)+1略過 小數
            // ifInt(3)就會出現小數
            case 0:// 小数[0~1.0) *100
                do
                    Operand[i]
                            .setDecimal(((int) (new Random().nextDouble() * 19900)) / 100.0 - 99);
                while (Operand[i].getDecimal() == 0);
                Operand[i].setSign(0);

                break;
            case 1:// 整数[0~n)
                do
                    Operand[i].setInteger(new Random().nextInt(199) - 99);
                while (Operand[i].getInteger() == 0);
                Operand[i].setSign(1);
                break;
            case 2:// 分数
                do
                    Operand[i].setMolecular(new Random().nextInt(199) - 99);
                while (Operand[i].getMolecular() == 0);
                Operand[i].setDenominator(new Random().nextInt(99) + 1);
                Operand[i].setSign(2);
                break;
            default:
                System.exit(0);
            }
            if (i > 0)
                switch (new Random().nextInt(4)) {
                case 0:
                    AS[i - 1] = jia;
                    break;
                case 1:
                    AS[i - 1] = jian;
                    break;
                case 2:
                    AS[i - 1] = cheng;
                    break;
                case 3:
                    AS[i - 1] = chu;
                    break;
                default:
                    System.exit(0);
                }
        }
        for (int i = 0; i < number; i++) {
            // System.out.print((Operand[i].getNumber() < 0 ? "(" : "")
            // + Operand[i].toString()
            // + (Operand[i].getNumber() < 0 ? ")" : "") + " " + AS[i]
            // + " ");
            shizi2 = shizi2.concat((Operand[i].getNumber() < 0 ? "(" : "")
                    + Operand[i].toString()
                    + (Operand[i].getNumber() < 0 ? ")" : "") + " " + AS[i]
                    + " ");
        }
        setshizi9(shizi2);
        setdaan9(getAnswer(Operand, AS));
        // return shizi2;
    }

    // public static void main(String[]args){
    // SE2_1 test=new SE2_1();
    // test.GA();
    // System.out.println("式子为:"+test.getshizi9()+"答案为:"+test.getdaan9number()+"四舍五入之后:"+test.getdaan12());
    // }
    // public static void main(String[] args) {
    // SE2_1 test = new SE2_1();
    // Scanner in = new Scanner(System.in);
    // int count = 0;
    // int Num;
    // do {
    // System.out.println("請輸入出題的個數(不超過5):");
    // Num = in.nextInt();
    // } while ((Num > 5 || Num < 1) ? true : false);
    // for (int i = 0; i < Num; i++) {
    // RN Answer = test.GA(new Random().nextInt(4) + 2);// 确定操作数个数 1~5个RN
    // // System.out.println("Answer is:" + Answer.getNumber());
    // RN Input = Input(in.next(), test.new RN());
    // // System.out.println(Input.getNumber());
    // if (Input.getNumber() == Answer.getNumber()
    // || Input.getNumber() == Math
    // .round(Answer.getNumber() * 100) / 100.0) {
    // System.out.println("答對了!");
    // count++;
    // } else
    // System.out.println("答錯了!答案爲:"
    // + Math.round(Answer.getNumber() * 100) / 100.0);
    // }
    // System.out
    // .println("一共" + Num + "道題,答對了" + count + "道題,答錯了"
    // + (Num - count) + "道題,正確率爲:" + (double) count * 100
    // / Num + "%");
    // }

    public class F {// Fraction 分數
        int Molecular;// 分子
        int Denominator = 0;// 分母

        void setMolecular(int Molecular) {
            this.Molecular = Molecular;
        }

        int getMolecular() {
            return Molecular;
        }

        void setDenominator(int Denominator) {
            this.Denominator = Denominator;
        }

        int getDenominator() {
            return Denominator;
        }

        double getAll() {
            return (double) Molecular / Denominator;
        }

        public String toString() {
            return Molecular + "/" + Denominator;
        }
    }

    public class RN {// Random Number 隨機數
        double Decimal;// 小數
        int Integer;// 整數
        F Fraction = new F();// 分數

        int Sign;// 標誌該對象中存儲的是什麼數

        public RN() {

        }

        public RN(double Decimal, int Sign) {
            this.Decimal = Decimal;
            this.Sign = Sign;
        }

        void setDecimal(double Decimal) {
            this.Decimal = Decimal;
        }

        double getDecimal() {
            return Decimal;
        }

        void setInteger(int Integer) {
            this.Integer = Integer;
        }

        int getInteger() {
            return Integer;
        }

        void setMolecular(int Molecular) {
            this.Fraction.setMolecular(Molecular);
        }

        int getMolecular() {
            return this.Fraction.getMolecular();
        }

        void setDenominator(int Denominator) {
            this.Fraction.setDenominator(Denominator);
        }

        int getDenominator() {
            return this.Fraction.getDenominator();
        }

        void setSign(int Sign) {
            this.Sign = Sign;
        }

        int getSign() {
            return Sign;
        }

        double getNumber() {
            switch (Sign) {
            case 0:
                return Decimal;
            case 1:
                return Integer;
            case 2:
                return Fraction.getAll();
            default:
                return -1;
            }
        }

        public String toString() {
            return Fraction.getDenominator() == 0 ? (Integer == 0 ? Decimal
                    + "" : Integer + "") : Fraction.toString();
        }
    }
}

程序執行截圖:

開始界面(第一次進入有提示輸入用戶名)

提示輸入題量:

修改背景顏色:

若輸入的值超過5或小於1,則會出錯:

出題界面:

輸入答案:

提交答案,顯示統計界面:

开发环境:Eclipse,js,css,html

程序完成的方向

1.可以出表达式里含有负整数(负整数最小不小于-100)的题目,且负数需要带括号,用户输入的结果不用带括号。如: 2*(-4) = -8。
2.用户答题结束以后,程序可以显示用户答题所用的时间。
3.用户可以选择出题的个数(最多不能超过5个题目),答题结束可以显示用户答错的题目个数和答对的题目个数。
4.用户在第一次答题时,需要用户输入用户名,用户下次启动后,程序需要记住用户前一次输入的用户名 。
5.程序可以出单个整数阶乘的题目:如:4!=24。
6.程序可以设置答题时间,时间设置为整数,单位为秒,最大不能超过120秒,若超过了答题时间未答题,则提示:时间已到,不能答题。
7程序可以设置皮肤功能,可以改变界面的颜色即可。

结对同伴:

姓名 学号 博客地址
叶子鹏 201306114420 http://www.cnblogs.com/kazehanaai/
王佳宁 201306114434 http://www.cnblogs.com/paopaotai/

预计用时7天,实际用时6天。

分工:我:编写主要核心算法。   我的小伙伴:界面的设计排版,提供思路,测试排除错误。

總結:

由於時間比較趕,技術還不過關,勉強做出了一點功能,

其中

1.階乘功能已經做出,但是還未嵌入.

2.用戶輸入有效性還沒測試.

3.括號式子功能還沒弄出來.

4.java裏面很多沒用的功能和參數或對象都還沒來得及清理出來..請諒解下哈..第一次做想做的模式,不再是java或者C那些了(笑

以上是這次作業的成果.還有很多要改善的地方,請加分.謝謝!!有很多不足的地方,還望指教~!

时间: 2024-10-09 03:11:16

20150401 作业2 结对 四则运算ver 1.0的相关文章

20150401 作业2 结对 四则运算

结对 四则运算 编译环境:eclipse 开发人员:de 开发时间:2015-04-07 实现功能: 1.基本的加减乘除 2.每次出1道题目,提交后会显示是否答对,如果错了,还会出现正确答案 3.题目是随机的 4.能出于分数相关的运算以及可以输入真分数 5.可以控制题目的数量 缺点: 1.分数计算的答案输入分数格式才显示正确 2.不能用户选择做什么运算 3.还不能统计答题的时间 4.不能统计答题正确的数目 ...... 个人体会: 1.能力还是不足,一些东西想到了却不能实现 2.要多点和伙伴讨论

20150401 作业2 结对 四则运算(Doing)

import java.util.ArrayList; import java.util.Random; import java.util.Scanner; public class SE2_1 {// Software Engineering 軟件工程 作業2 public RN getAnswer(RN[] Operand, String[] AS) { ArrayList<String> A = new ArrayList<String>(); ArrayList<RN

作业二——结对 四则运算

开发环境: VC++6.0队员:201306114407-吴哲永     20130611410-董大为功能:  1.用户可以选择出题的个数(最多不能超过5个题目),答题结束可以显示用户答错的题目个数和答对的题目个数 2.程序可以出单个整数阶乘的题目:如:4!=24 3.程序可以设置答题时间,时间设置为整数,单位为秒. 4.可以改变界面的颜色 5.程序可以出正整数四则运算,除法保留两位小数分工方面:这次我们结对并没有很明确分工,因为我们还是第一次合作,在很多方面都有不同风格,特别是在算法和传递便

作业2 结对 四则运算

开发环境:Eclipse 实现功能: 1.程序可以出带括号的正整数四则运算,支持分数,除法保留两位小数,如:(1/3+1)*2 = 2.67,特别注意:这里是2.67而非2.66 2.用户可以选择出题的个数(最多不能超过5个题目),答题结束可以显示用户答错的题目个数和答对的题目个数 3.用户在第一次答题时,需要用户输入用户名,用户下次启动后,程序需要记住用户前一次输入的用户名 4.程序可以设置皮肤功能,可以改变界面的颜色即可. 结伴同学: 姓名:钟鹏昇 博客:http://www.cnblogs

结对作业——随机生成四则运算

结对作业 UI 第三组 朱池苇 PB16150206 刘鼎乾 PB16070837 Github 地址: 项目简介 这次软件工程结对项目为制作一个给小学生用的四则运算出题软件,然后我们抽到的是UI组,也就是负责人机交互--随机生成四则运算--使用Core组封装好的dll模块. 需求分析 对上述各属性参数(生成题目的数量,操作数的数量,题目及答案中的数值的范围--)进行设置 调用Core模块得到题目和运算结果,显示题目,接受输入,并能判断答案是否正确 增加"倒计时"功能,每个题目必须在2

第三次网上作业,结对编程

题目:编写一个能对0--10之间的整数进行四则运算的“软件”程序能接收用户输入的整数答案,并判断对错程序结束时,统计出答对.答错的题目数量.补充说明:0——10的整数是随机生成的用户可以用键盘输入来选择四则运算中的一种,比如输入1代表加法运算用户用键盘输入一个字符来结束程序的运行并显示统计结果,比如输入e程序结束并显示统计结果编程语言不限制,命令行输出和图像界面输出都可以.在此基础上,做增量开发.增量内容:1)处理用户的错误输入,比如输入字母或符号等,处理除法运算中分母为0的情况,处理结果为负数

软件工程第五次作业(结对作业)

软件工程第五次作业 题目 本次作业我与合作伙伴选择的是题目1:四则运算生成 能够自动生成四则运算练习题 可以定制题目数量 用户可以选择运算符 用户设置最大数(如十以内.百以内等) 用户选择是否有括号.是否有小数 用户选择输出方式(如输出到文件.打印机等) 最好能提供图形用户界面(根据自己能力选做,以完成上述功能为主) 角色选择 驾驶员 - 能够完成全部代码工作,程序基本实现全部要求功能,并将代码上传至coding.net或者GitHub代码托管系统中 - 能够对导航员在本次编程工作中起到的作用给

炉石传说JJC英雄简评 &amp;&amp; JJC combo收集:Ver 1.0

? 1 2 3 4 5 6 7 /*-----------------------------------------------------------------------------  *  author:Rainboy and his GL 南柯CHY  *  wirte date:2014-04-29  * # LastUpdated: 2014-04-29 15:42  * ? Copyright 2014 Rainboy and his GL 南柯CHY.  All Rights

作业四——结对编程四则运算

1. 结对编程项目---四则运算 此次编程项目的结队伙伴是方春阳 学号:130201129 计科13-1 博客地址 http://www.cnblogs.com/fcy29/ 根据要求我们设计了以下程序: 主界面: 在该页面下,可以看到此四则运算的主要功能,可以自行选择数的范围,系统默认值为1-100之间,超出这个范围并未得以实现,输入要生成题目的数量,然后按要求选择在算式中是否有乘除.负数.括号及真分数等功能,选择完成后,选好生成方式,点击确定.就可在框中自动生成算式.单击退出按钮便可退出该程