软件工程结对作业02

1.设计思想:

①在第一个HTML文件中询问出题要求:

1>打印的运算式数量;

2>运算数值的上界、下界;

3>是否有乘除;

4>是否有负数。

②如若出现input框中未输入的情况,则弹出消息框来提示,否则,跳转第二个界面,来进行运算式的输出;

③跳转到第二个页面后,利用JSP先得到第一个页面中输入的值,并保存在几个变量中。之后再使用javascript,保存各个值;

④通过已经输入的值来判断运算符号和数值范围;

⑤使用循环语句,循环次数为打印的运算式数量,第i次循环中,首先随机产生运算式子中的数字和运算符,和前面已经生成的式子加以比较,若重复,则重新产生,还需判断

1>除号后是否具有0

2>计算过程中不能出现负数

3>若有除法则结果必须为真分数

并进行运算产生结果,保存到result中;

⑥弹出对话框,输出已经产生的运算式,并让用户输入正确结果,进行判断,输出正误,再返回第⑤步,直至循环结束;

⑦最后输出答对的题数。

2.源程序代码

①First.html

 1 <!DOCTYPE html>
 2 <html>
 3 <head>
 4 <meta charset="UTF-8">
 5 <title>自动出题器</title>
 6 </head>
 7 <body>
 8     <script type="text/javascript">
 9         function check() {
10             var number = document.getElementById("number").value;
11             var max = document.getElementById("max").value;
12             var min = document.getElementById("min").value;
13             
14             if (number == "") 
15             {
16                 alert("运算式数量不能为空");
17             } 
18             else if (max == "") 
19             {
20                 alert("上界不能为空");
21             } 
22             else if (min == "") 
23             {
24                 alert("下界不能为空");
25             } 
26             else if(number<=0)
27             {
28                 alert("运算式数量应该大于0");
29             }
30             else if(max<min)
31             {
32                 alert("上界应该大于下界");
33             }
34             else
35             {
36                 document.baseForm.submit1();
37             }
38         }
39     </script>
40     
41     <form action="Second.jsp" name="baseForm" id="baseForm" method="post">
42         <fieldset name="Group1" style="width:100%">
43         <legend><strong>请选择出题要求:</strong></legend>
44             <p> 打印的运算式数量    <input name="number" type="text" size="20"></p>
45             <p> 运算数值的上界    <input name="max" type="text" size="20"></p>
46             <p> 运算数值的下界    <input name="min" type="text" size="20"></p>
47             <p> 请选择运算式条件:</p>
48             <p> 是否有乘除    <input name="symbol" type="radio" value="true">49             <input name="symbol" type="radio" value="false"></p>
50             <p>加减有无负数    <input name="negative" type="radio" value="true">51             <input name="negative" type="radio" value="false"></p>
52         </fieldset>
53         <p>&nbsp;&nbsp;<input name="submit" type="submit" value="提交" onclick="check()">
54             &nbsp;&nbsp;<input name="reset" type="reset" value="重置"></p>
55     </form>
56 </body>
57 </html>

②Second.jsp

  1 <%@ page language="java" contentType="text/html; charset=utf-8"
  2     pageEncoding="utf-8"%>
  3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  4 <html>
  5 <head>
  6 <meta http-equiv="Content-Type" content="text/html; charset=usf-8">
  7 <title>Insert title here</title>
  8 </head>
  9 <body>
 10 <%
 11       String number1 =request.getParameter("number");
 12     String max1 = request.getParameter("max");
 13     String min1 = request.getParameter("min");
 14     String symbol = request.getParameter("symbol");
 15     String negative = request.getParameter("negative");
 16     int number=Integer.parseInt(number1);
 17     int max=Integer.parseInt(max1);
 18     int min=Integer.parseInt(min1);
 19     
 20     out.println(number1);
 21 %>
 22     <script type="text/javascript">    
 23     var number = document.getElementById("number1").value;
 24     var max = document.getElementById("max1").value;
 25     var min = document.getElementById("min1").value;
 26     var symbol = document.getElementById("symbol").value;
 27     var negative = document.getElementById("negative").value;
 28     document.writeIn(number);
 29     
 30     var number =number1;
 31     
 32     var symbollist[4];
 33     if(symbol==true)
 34     {
 35         symbollist[0]='+';
 36         symbollist[1]='-';
 37         symbollist[2]='*';
 38         symbollist[3]='/';
 39     }
 40     else
 41     {
 42         symbollist[0]='+';
 43         symbollist[1]='-';
 44         symbollist[2]='+';
 45         symbollist[3]='-';
 46     }
 47     
 48     if(negative==false)
 49     {
 50         if(min<0)
 51         {
 52             min=0;
 53         }
 54     }
 55     
 56     var space[number][4];
 57     var correctNumber=0;
 58     
 59     for(time=0;time<number;)
 60     {
 61         var space1[];
 62         for(var i=0;i<4;i++)
 63         {
 64             space[time][i]=(Math.random()*(max-min+1)+min);
 65             space1[i]=space[time][i];
 66         }
 67         
 68         //判断所生成的数组中是否和之前产生的数组完全一致
 69         var flag=1;
 70         for(var i=0;i<time;i++)
 71         {
 72             for(var j=0;j<4;j++)
 73             {
 74                 if(space[time][j]==space[i][j])
 75                 {
 76                     flag=0;
 77                 }
 78                 else
 79                 {
 80                     flag=1;
 81                 }
 82             }
 83         }
 84         
 85         //随机决定下面要产生的式子是由几个数字构成的
 86         var s = (Math.random()*(4-2+1)+2);
 87         
 88         //随机运算符
 89         var p[s-1];
 90         for(var i=0;i<s-1;i++)
 91         {
 92             var symtime = (Math.random()*(3-0+1)+0);
 93             p[i]=symbollist[symtime];
 94         }
 95 
 96         //除号后不能有0的存在
 97         for(var i=0;i<s-1;i++)
 98         {
 99             if(p[i]=='/'&&space[time][i+1]==0)
100             {
101                 flag=0;
102                 break;
103             }
104         }
105         
106         //计算过程中不能出现负数,若有除法则结果必须为真分数
107         var realResult;
108         
109         for(var i=0;i<s-1;i++)
110         {
111             if(p[i]=='*')
112             {
113                 if(p[i+1]=='+'||p[i+1]=='-')
114                 {
115                     space1[i]=space1[i]*space[i+1];
116                     space1[i+1]=0;
117                     p[i]='+';
118                 }
119                 else if(p[i+1]=='*'||p[i+1]=='/')
120                 {
121                     space1[i+1]=space1[i]*space1[i+1];
122                     space1[i]=0;
123                     p[i]='+';
124                 }
125             }
126             else if(p[i]=='/')
127             {
128                 if(space1[i]>space1[i+1])
129                 {
130                     flag=0;
131                     break;
132                 }
133                 else if(p[i+1]=='+'||p[i+1]=='-')
134                 {
135                     space1[i]=space1[i]/space[i+1];
136                     space1[i+1]=0;
137                     p[i]='+';
138                 }
139                 else if(p[i+1]=='*'||p[i+1]=='/')
140                 {
141                     space1[i+1]=space1[i]/space1[i+1];
142                     space1[i]=0;
143                     p[i]='+';
144                 }
145             }
146         }
147         
148         if(flag==1)
149         {
150             var result;
151             
152             //计算结果
153             realResult=space1[0];
154             for(var i=0;i<s-1;i++)
155             {
156                 if(p[i]=='+')
157                 {
158                     realResult=realResult+space1[i+1];
159                 }
160                 else if(p[i]=='-')
161                 {
162                     realResult=realResult-space1[i+1];
163                 }
164             }
165             
166             if(s==2)
167             {
168                 result=prompt(space[time][0]+p[0]+space[time][1]+"  请输入您认为正确的结果:","");
169                 document.write(space[time][0]+p[0]+space[time][1]+" = "+result);
170             }
171             else if(s==3)
172             {
173                 result=prompt(space[time][0]+p[0]+space[time][1]+p[1]+space[time][2]+"  请输入您认为正确的结果:","");
174                 document.write(space[time][0]+p[0]+space[time][1]+p[1]+space[time][2]+" = "+result);
175             }
176             else if(s==4)
177             {
178                 result=prompt(space[time][0]+p[0]+space[time][1]+p[1]+space[time][2]+p[2]+space[time][3]+"  请输入您认为正确的结果:","");
179                 document.write(space[time][0]+p[0]+space[time][1]+p[1]+space[time][2]+p[2]+space[time][3]+" = "+result);
180             }
181             
182             if(result==realResult)
183             {
184                 document.write(" 计算结果正确。"+"\n")
185                 correctNumber++;
186             }
187             else
188             {
189                 document.write(" 计算结果错误,正确答案是:"+realReasult+"\n");
190             }
191             
192             time++;
193         }
194     }
195     
196     document.write("您答对的题数为"+correctNumber+"\n");
197     </script>    
198         
199 </body>
200 </html>

3.运行结果截图

4.编程总结分析

  经过这次将java程序转移成为网页版,我感觉到了做中学的深刻含义,我们不可能什么都会,手头的书本也都是一大本一大本,不可能在有限的几天的时间内把需要用的所有工具,比如这次的java,html,jsp,javascript全都精通,我们能做的就是一边做,一边使用工具书和网络来查找我们需要的技术,这样既能让我们大概了解一门技术,又可以让我们在短时间内掌握其中的精益,学到我们最需要的东西,做中学有它存在的意义。

5.项目计划预计

  First Second
预计时间 100 240

6.项目计划总结

  听课   编写程序 阅读课本 准备考试 日总结
周日          
周一     60   60
周二 120       120
周三   60     60
周四          
周五     30   30
周六   270     270
周总结 120 330 90   540

7.时间记录日志:

日期 开始时间 结束时间 中断时间 净时间 活动 备注
4/4 10:00 11:30 30 60 看书 构建之法
4/5 14:00 16:10 10 120 上课  
4/6 4:00 5:00   60 写程序  
4/8 17:00 17:30   30 读书  
4/9 10:00 11:30   90 写程序  
  14:00 17:30   180 写程序  
             

8.缺陷记录日志:

日期 编号 引入阶段 排除阶段 描述
4/9 01 编码 编码 html语句中的input框的type值有多种,要使用对应需要的形式
  02 编码 编码 在javascript中变量只具有一种类型,那就是var,它可以表示int、string、char等多种类型
  03 设计 设计 应该同时将jsp和javascript结合使用,才可以将功能完善
  04 设计 设计 需要判断在提交时,是否有输入框未进行输入值,若有,则需要提示并重新输入
posted @ 2016-04-08 16:11  YangLna  阅读(192)  评论(0编辑  收藏  举报