• 软件工程结对作业02


    程序的设计思想

    创建两个二维数组,其中一个命名为number,用来储存随机数,第一行是随机数,第二行作为分母,初始值为1.

    第二个数组命名为symbol,第一行用来储存符号,第二行用来确定运算顺序,加减法标志为1,乘除法标志为2,产生随机数,产生随机数的位置为3,作为加上括号的位置最先运算。

    相应的,第symbol数组中第i个运算符要运算的数字为number数组中第i和第i+1个数,因为分母不能为0,所以当运算第i个运算符时,要分别从i向前和i+1向后找第一个分母不为0的数将位置分别记为a和b,根据分数的运算法则运算出分子和分母,储存在number[0][a]和number[1][a]中,更新b位置的数据全部为0。最后的结果就是number[0][a]和number[1][a]中的数,进行约分就可以了。

    网页的设计思想

    网页包含时间及日期,留言板,五个年级的题目模块,设置用户选择参数的下拉菜单和按钮,目前只做好了五年级的题目模块。Java程序和网页的结合没有做好,不能实现参数的传递。

    功能模块

    功能一:带括号的运算式的正确运算                                                            实际用时:90分钟

    功能二:产生有效算式                                                                             实际用时:3小时

    功能三:运算式结果出现小数时,输出其分数形式                                           实际用时:2小时

    功能四:运算式及其结果不出现负数(难点:如何判断连续的减法)                     实际用时:10分钟

    功能五:判断正确题目的数量给出分数,输出错误的题目个数                             实际用时:20分钟

    功能六:网页的实现                                                                               实际用时:8小时左右

     

    源程序代码

     ceshi.java

    package ceshi;
    
    import java.util.Scanner;
    
    public class ceshi {
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            System.out.println("请输入题目的数量:");
            Scanner sc1 = new Scanner(System.in);
            int quantity = sc1.nextInt();
            System.out.println("请输入产生数字的最大值:");
            int max = sc1.nextInt();
            System.out.println("请输入是否有负数:");
            int iffu = sc1.nextInt();
            System.out.println("请输入是否有乘除法:");
            int ifcheng= sc1.nextInt();
            equation(quantity,max,iffu,ifcheng);
        }
        static void equation(int quantity,int max,int iffu,int ifcheng)
        {
            int t=0;
            for(int i=0;i<quantity;i++)
            {
                String result;
                int numberlength=2+(int)(Math.random()*3);
                int number1[]=new int[numberlength];
                int number2[][]=new int[2][numberlength];
                int symbol[][]=new int[2][numberlength-1];
                for(int j=0;j<numberlength;j++)
                {
                    int num=randomNumber(max,iffu);
                    number1[j]=num;
                    number2[0][j]=num;
                    number2[1][j]=1;
                }
                for(int j=0;j<numberlength-1;j++)
                {
                    int sym=randomSymbol(ifcheng);
                    symbol[0][j]=sym;
                    if(sym==1||sym==2)
                    {
                        symbol[1][j]=1;
                    }
                    if(sym==3||sym==4)
                    {
                        symbol[1][j]=2;
                    }
                }
                int kuo=-1;
                if(numberlength>2)
                {
                    kuo=(int)(Math.random()*(numberlength-2));
                    symbol[1][kuo]=3;
                }
                for(int j=0;j<numberlength-1;j++)
                {
                    if(symbol[1][j]==3)
                    {
                        yunsuan(number2,symbol,numberlength,j);
                    }
                        
                }
                for(int j=0;j<numberlength-1;j++)
                {
                    if(symbol[1][j]==2)
                    {
                        yunsuan(number2,symbol,numberlength,j);
                    }
                }
                for(int j=0;j<numberlength-1;j++)
                {
                    if(symbol[1][j]==1)
                    {
                        yunsuan(number2,symbol,numberlength,j);
                    }
                }
                if(number2[1][0]!=1)
                {
                    int a=number2[0][0],b;
                    if(number2[0][0]>number2[1][0])
                        a=number2[1][0];
                    for(int j=a;j>1;j--)
                    {
                        if(number2[0][0]%j==0&&number2[1][0]%j==0)
                        {
                            number2[0][0]=number2[0][0]/j;
                            number2[1][0]=number2[1][0]/j;
                            break;
                        }
                    }
                    result=String.valueOf(number2[0][0])+'/'+String.valueOf(number2[1][0]);
                }
                else
                    result=String.valueOf(number2[0][0]);
                output(number1,symbol,kuo);
                Scanner sc1 = new Scanner(System.in);//
                String re = sc1.next();//
                if(re.equals(result))
                    t=t+1;
                System.out.println("正确结果为:"+result);
                }
            System.out.println("正确题的数目:"+t+"错误题的数目:"+(quantity-t));
            }
    
        static void output(int number[],int symbol[][],int j)
        {
            String a=String.valueOf(number[0]);
            if(j==0)
                a='('+a;
            for(int i=0;i<number.length-1;i++)
            {
                a=a+String.valueOf(fu(symbol[0][i]));
                if(i+1==j)
                    a=a+'(';
                a=a+String.valueOf(number[i+1]);
                if(i+1==j+1)
                    a=a+')';
            }
            System.out.println(a+'=');
        }
        static char fu(int a)
        {
            char c=' ';
            if(a==1)
                c='+';
            if(a==2)
                c='-';
            if(a==3)
                c='*';
            if(a==4)
                c='/';
            return c;
            
        }
        static void yunsuan(int number[][],int symbol[][],int l,int p)
        {
            int a=p,b=p+1;
            for(int i=p;i>=0;i--)
            {
                if(number[1][i]!=0)
                {
                    a=i;
                    break;
                }
            }
            for(int q=p+1;q<l;q++)
            {
                if(number[1][q]!=0)
                {
                    b=q;
                    break;
                }
            }
            if(symbol[0][p]==2)
            {
                if(number[0][a]*number[1][b]-number[1][a]*number[0][b]>=0)
                {
                    number[0][a]=number[0][a]*number[1][b]-number[1][a]*number[0][b];
                    number[1][a]=number[1][a]*number[1][b];
                    number[0][b]=0;
                    number[1][b]=0;
                }
                else
                {
                    symbol[0][p]=1;
                }
            }
            if(symbol[0][p]==1)
            {
                number[0][a]=number[0][a]*number[1][b]+number[1][a]*number[0][b];
                number[1][a]=number[1][a]*number[1][b];
                number[0][b]=0;
                number[1][b]=0;
            }
            
            if(symbol[0][p]==3)
            {
                number[0][a]=number[0][a]*number[0][b];
                number[1][a]=number[1][a]*number[1][b];
                number[0][b]=0;
                number[1][b]=0;
            }
            if(symbol[0][p]==4)
            {
                number[0][a]=number[0][a]*number[1][b];
                number[1][a]=number[1][a]*number[0][b];
                number[0][b]=0;
                number[1][b]=0;
            }
            
        }
        static int randomNumber(int max,int iffu)//产生随机数
        {
            int number=1+(int)(Math.random()*max);
            if(iffu==1)
            {
                number=0-number;
            }
            return number;
        }
        static int randomSymbol(int ifcheng)//产生随机符号
        {
            int symbol;
            if(ifcheng==1)
                {
                    symbol=1+(int)(Math.random()*4);
                }
            else
            {
                symbol=1+(int)(Math.random()*2);
            }
            return symbol;
        }
    
    }

    Index.html

    <!DOCTYPE html>
      <html>
        <head>
          <title>首页</title>
          <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
          <meta name="keywords" content="keyword1,keyword2,keyword3">
          <meta name="description" content="this is my page">      
         <!--<link rel="stylesheet" type="text/css" href="./styles.css">-->
        <style type="text/css">
        #tabDiv 
        {
            width:1000px;
            margin:1em auto;
            padding-bottom: 10px;
            border-right: #b2c9d3 1px solid; 
            border-top: #b2c9d3 1px solid; 
            border-left: #b2c9d3 1px solid; 
            border-bottom: #b2c9d3 1px solid;
            background: #6c6c6c;
        }
         .curtab 
        {
            padding-top: 0px;
            padding-right: 50px; 
            padding-bottom: 0px; 
            padding-left: 10px; 
            border-right: #b2c9d3 1px solid; 
            font-weight: bold; 
            float: left;
            cursor: pointer; 
            background: #4f4f4f; 
        }
        /*未选tab头(超链接)的样式*/
        .tabs 
        {
            border-right: #c1d8e0 1px solid; 
            padding-top: 0px;
            padding-right: 100px; 
            padding-bottom: 0px; 
            padding-left: 20px; 
            font-weight: normal; 
            float: left;
            cursor: pointer; 
            background: #4f4f4f; 
        }
         </style>
       </head>   
       <body background="images/01.gif">
       <span id="localtime"></span>
        <script type="text/javascript">
            function showLocale(objD) {
                var str, colorhead, colorfoot;
                var yy = objD.getYear();
                if (yy < 1900)
                    yy = yy + 1900;
                var MM = objD.getMonth() + 1;
                if (MM < 10)
                    MM = '0' + MM;
                var dd = objD.getDate();
                if (dd < 10)
                    dd = '0' + dd;
                var hh = objD.getHours();
                if (hh < 10)
                    hh = '0' + hh;
                var mm = objD.getMinutes();
                if (mm < 10)
                    mm = '0' + mm;
                var ss = objD.getSeconds();
                if (ss < 10)
                    ss = '0' + ss;
                var ww = objD.getDay();
                if (ww == 0)
                    colorhead = "<font color="#808040">";
                if (ww > 0 && ww < 6)
                    colorhead = "<font color="#949449">";
                if (ww == 6)
                    colorhead = "<font color="#A5A552">";
                if (ww == 0)
                    ww = "星期日";
                if (ww == 1)
                    ww = "星期一";
                if (ww == 2)
                    ww = "星期二";
                if (ww == 3)
                    ww = "星期三";
                if (ww == 4)
                    ww = "星期四";
                if (ww == 5)
                    ww = "星期五";
                if (ww == 6)
                    ww = "星期六";
                colorfoot = "</font>"
                str = colorhead + yy + "-" + MM + "-" + dd + " " + hh + ":" + mm
                        + ":" + ss + "  " + ww + colorfoot;
                return (str);
            }
            function tick() {
                var today;
                today = new Date();
                document.getElementById("localtime").innerHTML = showLocale(today);
                window.setTimeout("tick()", 1000);
            }
            tick();
            </script>
        
        <marquee scrollamount=3 behavior="alternate" FONT style="FONT-SIZE: 30pt; FILTER: shadow(color=black); WIDTH: 100%; 
        COLOR: #808040; LINE-HEIGHT: 150%; FONT-FAMILY: 华文彩云"><B>欢迎进入二柱子小学四则运算</B></marquee>
       
       <!-- 传递参数的值给NewFile.jsp处理 -->
       <form action="NewFile.jsp" method="post">  
       <!-- 互斥选择,值只能有一个 -->
       <div id="tabDiv" style=" 1000px">
    
            <div id="tabsHead">
                <a id="tabs1" class="curtab" href="javascript:showTab('tabs1','tabContent1')">五年级</a>
                <a id="tabs2" class="tabs" href="javascript:showTab('tabs2','tabContent2')">四年级</a>
                <a id="tabs3" class="tabs" href="javascript:showTab('tabs3','tabContent3')">三年级</a>
                <a id="tabs4" class="tabs" href="javascript:showTab('tabs4','tabContent4')">二年级</a>
                <a id="tabs5" class="tabs" href="javascript:showTab('tabs4','tabContent5')">一年级</a>
            </div>
    
            <div id="tabContent1" style="display: block">
                <table style="border- 0;  100%">
                    <tr>
                        <td rowspan="3" style=" 300px;text-align:center">
                          欢迎留下宝贵意见 :<textarea name="mytext" rows="10" cols="30"></textarea>
                        <td colspan="3" rowspan="3">
                            <table border="1" style="border-left-color: aqua;
                                border-bottom-color: aqua;  701px; border-top-style: solid; border-top-color: aqua;
                                border-right-style: solid; border-left-style: solid; height: 380px; border-right-color: aqua;
                                border-bottom-style: solid">
                                <tr>
                                    <td style=" 50%">
       <center>
       <!-- 多项选择,值可以有多个,在jsp中用数组保存 -->
       <br>请选择(默认有括号,有乘除,有余数):
       <p><input type="checkbox" name="function" value=1>有乘除</input></p>
       <p><input type="checkbox" name="function" value=2>无余数</input></p>
       <p><input type="checkbox" name="function" value=3>有括号</input></p>
       <br>
       <br>请选择运算数最大值:
       <select name="TopNumber">
            <option value=20>20</option>
           <option value=30>30</option>
           <option value=50>50</option>
           <option value=80>80</option>
           <option value=100>100</option>                                              
       </select><br>
       <br>请选择运算数最小值:
       <select name="BaseNumber">
           <option value=0>0</option>
           <option value=1>1</option>
           <option value=3>3</option>
           <option value=5>5</option>
           <option value=10>10</option>      
       </select><br>
       <br>
       <input type="submit" name="submit" value="开始答题">
       </td>
       </tr>
       </center>
       </form>
       </body>
     </html>

    运行结果截图

     

    编程总结或体会

    两个人编程安排的时间不够正确,没有达到理想的合作结果。我的编程能力有待提高,不能拖后腿。

    本次结对作业我负责网页部分,因为对jsp语言了解不多,开始编网页时无从下手,慢慢摸索着写出一个简单的网页,但不能同Java程序结合起来。从网上找到的代码可以在本地运行,但没有全部理解。

    学会更好的与人合作,正确安排时间才能事半功倍。

    周活动总结表

            姓名:尤凯丽                            日期 2016 / 4 / 9

    听   课

    编写代码

    阅读课本

    准备考试

    日总计

    周日

    周一

    周二

    100分钟

    构建之法7章

    100分钟

    周三

    周四

    120

    周五

    44

    周六

    周总计

    100分钟

    164

    100分钟

                               时间记录日志

              学生:尤凯丽                    日期:2016 / 4 / 9

              教师:王建民                    课程:软件工程

    日期

    开始时间

    结束时间

    中断时间

    净时间

    活动

    备注

    C

    U

    4.5

    14:00

    15:50

    14:50-15:00

    100

    听课

    (7章)

    21:00

    21:30

    30

    读构建之法

    4.6

    19:30

    21:00

    19:50-20:10

    70

    准备网页

    4.7

    19:00

    10:00

    9:20-9:40

    160

    做网页

    4.5

    19:00

    8:30

    90

    做网页

    21:00

    24:10

    23:20-23:45

    165

    做网页

    4.9

    14:40

    17:30

    15:10-15:20

    160

    写博客并发表

    同组成员:张雪晴

    地址:http://www.cnblogs.com/1443188449qq/

  • 相关阅读:
    HDU 3511 圆的扫描线
    POJ 2540 半平面交
    POJ 2451 半平面交nlogn
    POJ 3525 半平面交
    HDU 3629 极角排序
    POJ 1274 半平面交
    POJ 1696 凸包变形
    POJ 3384 半平面交
    Flex SDK代码规范之命名
    Flash & Flex组件优化的杀手锏callLater
  • 原文地址:https://www.cnblogs.com/love528/p/5372336.html
Copyright © 2020-2023  润新知