软件工程结对作业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.项目计划预计

 FirstSecond
预计时间100240

6.项目计划总结

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

7.时间记录日志:

日期开始时间结束时间中断时间净时间活动备注
4/410:0011:303060看书构建之法
4/514:0016:1010120上课 
4/64:005:00 60写程序 
4/817:0017:30 30读书 
4/910:0011:30 90写程序 
 14:0017:30 180写程序 
       

8.缺陷记录日志:

日期编号引入阶段排除阶段描述
4/901编码编码html语句中的input框的type值有多种,要使用对应需要的形式
 02编码编码在javascript中变量只具有一种类型,那就是var,它可以表示int、string、char等多种类型
 03设计设计应该同时将jsp和javascript结合使用,才可以将功能完善
 04设计设计需要判断在提交时,是否有输入框未进行输入值,若有,则需要提示并重新输入

转载于:https://www.cnblogs.com/Daddy/p/5368577.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值