码迷,mamicode.com
首页 > 其他好文 > 详细

软件工程结对作业02

时间:2016-04-09 20:19:38      阅读:259      评论:0      收藏:0      [点我收藏+]

标签:

程序的设计思想

创建两个二维数组,其中一个命名为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="width: 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-width: 0; width: 100%">
                <tr>
                    <td rowspan="3" style="width: 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; width: 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="width: 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>

 

运行结果截图

 技术分享

编程总结或体会

我们两个人的分工不够正确,因为是由我写Java程序,由凯丽写网页,但是在实施过程中发现这样的合作并理想,凯丽对于程序不熟悉,而我对于网页也不了解,导致这次的网页并没有很好的实现出来。

在之后的合作中小组成员之间应该更多的交流,尽量避免你做你的,我做我的这样的事情发生。

周活动总结表

        姓名:张雪晴                            日期 2016 / 4 / 9

 

听   课

编写代码

阅读课本

撰写博客

日总计

周日

 

 

 

 

 

周一

 

 

 

 

 

周二

100分钟

 

 

 

100分钟

周三

 

110分钟

 

 

110分钟

周四

 

80分钟

 

 

80分钟

周五

 

30分钟

 

30分钟

60分钟

周六

 

 

100分钟

80分钟

180分钟

周总计

100分钟

220分钟

100分钟

110分钟

530分钟

 

 

  

 

 

 

 

 

 

 

                           时间记录日志

          学生:张雪晴                   日期:2016 / 4 / 9

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

日期

开始时间

结束时间

中断时间

净时间

活动

备注

C

U

4.5

8:00

9:50

 

100

听课

 

?

 

4.6

19:00

21:00

 

110

写程序

 

?

 

4.7

19:10

20:30

 

80

写程序

 

?

 

4.8

12:30

1:30

 

60

写程序+发表博客

 

?

 

4.9

7:20

9:00

 

100

阅读网页制作的书

 

?

 

17:20

18:40

 

80

撰写博客

同组成员:尤凯丽

地址:http://www.cnblogs.com/love528

 

软件工程结对作业02

标签:

原文地址:http://www.cnblogs.com/1443188449qq/p/5372351.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!