软件工程个人作业03

程序设计思路:我们需要把数据库与我们的程序链接起来,所以我们运用了javaweb的技术来实现这个功能

先将表达式求得的值放入数组,然后将用户输入的值与数组中的值进行比较,确定结果是否正确。在有多个

运算符和括号的时候,可用用栈确定运算的优先级。用递归的思想计算表达式的值1.在进行不加括号的运算

时,可以通过产生的表达式直接求得正确值,然后跟用户输入的值进行比较;2.有括号的运算时,我们可以

通过循环求得每次循环所得值,并放入数组中;再通过判断循环后的运算符,来决定数组值之间的加减乘除,

以求得最后正确值,然后跟用户输入的值进行比较。

程序代码:

  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=utf-8">
  7 <title>结果</title>
  8 </head>
  9 <body background="picture/132.jpg">
 10 <%
 11 String[] s= (String[])session.getAttribute("v1");
 12 String[] answer= (String[])session.getAttribute("v2");
 13 String[] daan=new String[s.length];
 14 int count=0;//正确答案的个数
 15 for(int i=0;i<s.length;i++)
 16 {
 17 out.print("运算式为:");
 18 out.print(s[i]+" ");
 19 out.print("您的输入结果为:");
 20 daan[i]=request.getParameter("name"+i);
 21 out.print(daan[i]+" ");
 22 out.print("正确结果为:");
 23 out.print(answer[i]);
 24 if(Integer.parseInt(daan[i])==Integer.parseInt(answer[i]))
 25 {
 26 out.print("答对了,真棒!");
 27 count++;
 28 }
 29 else
 30 {
 31 out.print("答错了,真遗憾!");
 32 }
 33 out.print("<br>");
 34 }
 35 out.print("你一共答对的题目数:");
 36 out.print(count);
 37 %>
 38 </body>
 39 </html>
 40  
 41 <%@ page language="java" contentType="text/html; charset=utf-8"
 42 pageEncoding="utf-8"%>
 43 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 44 <html>
 45 <head>
 46 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 47 <title>首页</title>
 48 </head>
 49 <body background="picture/132.jpg">
 50 <form name="form1" method="post"action="ti.jsp">
 51 <center>四则运算</center>
 52 <table align="center">
 53 <tr>
 54 <td> 请输入要出题的题目数量: </td>
 55 <td> <input name="shuliang" type="text" id="shuliang"maxlength="5"></td>
 56 </tr>
 57 <tr>
 58 <td>请选择计算的难易程度:
 59 </td>
 60 <td>
 61 <select name="leixing">
 62 <option value=1>基础运算</option>
 63 <option value=2>高级运算</option>
 64 </select>
 65 </td>
 66 </tr>
 67 </table>
 68 <center><input type="submit"value="开始答题"></center>
 69 </form>
 70 </body>
 71 </html>
 72  
 73 <%@ page language="java" contentType="text/html; charset=utf-8"
 74 pageEncoding="utf-8"%>
 75 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 76 <html>
 77 <head>
 78 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 79 <title>Insert title here</title>
 80 </head>
 81 <body background="picture/132.jpg">
 82 <%
 83 String leixing=request.getParameter("leixing");
 84 if(Integer.parseInt(leixing)==1)
 85 {
 86 %>
 87  
 88 <%
 89  
 90 int answer; //所出题目的答案
 91 String j=request.getParameter("shuliang");//出的题的数量
 92 int shuliang= Integer.valueOf(j);
 93 String[] str=new String[shuliang];
 94 String[] daan=new String[shuliang];//用户输入的答案
 95 String[] answer1=new String[shuliang]; //计算之后的正确答案
 96 for(int i=0;i<shuliang;i++)
 97 {
 98 daan[i]="name"+i;
 99 //生成0-100之间的随机数
100 int num1=(int)(Math.random()*100);
101 int num2=(int)(Math.random()*100);
102 int fuhao= (int)(Math.random()*4);
103 if(fuhao==0)
104 {
105 str[i]=num1+"+"+num2+"=";
106 answer=num1+num2;
107 }
108 else if(fuhao==1)
109 {
110 str[i]=num1+"-"+num2+"=";
111 answer=num1-num2;
112 }
113 else if(fuhao==2)
114 {
115 str[i]=num1+"*"+num2+"=";
116 answer=num1*num2;
117 }
118 else
119 {
120 str[i]=num1+"/"+num2+"=";
121 answer=num1/num2;
122 }
123  
124 answer1[i]=""+answer;
125 out.print(str[i]);
126  
127  
128 %>
129 <br>
130 <form name="form2"method="post"action="jieguo.jsp">
131 请输入你的答案:<input name="<%=daan[i] %>" type="text" id="daan"maxlength="5">
132 <br>
133  
134 <%
135 }
136 %>
137 <%
138 session.setAttribute("v1",str);
139 session.setAttribute("v2",answer1);
140 %>
141 <input type="submit"value="确定">
142 </form>
143 <%
144 }
145 %>
146  
147 <%
148 if(Integer.parseInt(leixing)==2)
149 {
150 int answer; //所出题目的答案
151 String j=request.getParameter("shuliang");//出的题的数量
152 int shuliang= Integer.valueOf(j);
153 String[] str=new String[shuliang];
154 String[] daan=new String[shuliang];//用户输入的答案
155 String[] answer1=new String[shuliang]; //计算之后的正确答案
156  
157 for(int i=0;i<shuliang;i++)
158 {
159 daan[i]="name"+i;
160 str[i]=""+(int)((Math.random()*100)); //在1-100之间随机产生一个数
161 int num=(int)(Math.random()*4+2);
162 int jisuan[]=new int[num+1];//用于保存中间结果
163 jisuan[0]=Integer.parseInt(str[i]);
164 char yunsuanfu[]=new char[num+1];
165 for(int l=1;l<num;l++)
166 {
167 int fuhao= (int)(Math.random()*4);//用1-4代表符号,随机产生数字
168 int num2=(int)(Math.random()*100);
169 jisuan[l]=num2;
170 if(fuhao==0)
171 {
172 str[i]+="+"+num2;
173 yunsuanfu[l]='+';
174 }
175 if(fuhao==1)
176 {
177 str[i]+="-"+num2;
178 yunsuanfu[l]='-';
179 }
180 if(fuhao==2)
181 {
182 str[i]+="*"+num2;
183 yunsuanfu[l]='*';
184 }
185 if(fuhao==3)
186 {
187 str[i]+="/"+num2;
188 yunsuanfu[l]='/';
189 }
190 }
191 out.print(str[i]+"<br>");
192 for(int l=1;l<num;l++)
193 {
194 if(yunsuanfu[l]=='*')
195 {
196 jisuan[l]=jisuan[l-1]*jisuan[l];
197 jisuan[l-1]=0;
198 yunsuanfu[l]=yunsuanfu[l-1];
199 }
200 else if(yunsuanfu[l]=='/')
201 {
202 jisuan[l]=jisuan[l-1]/jisuan[l];
203 jisuan[l]=0;
204 yunsuanfu[l]=yunsuanfu[l-1];
205 }
206 }
207 for(int l=1;l<num;l++)
208 {
209 if(yunsuanfu[l]=='+')
210 {
211 jisuan[l]=jisuan[l-1]+jisuan[l];
212 jisuan[l-1]=0;
213 }
214 else if(yunsuanfu[l]=='-')
215 {
216 jisuan[l]=jisuan[l-1]-jisuan[l];
217 jisuan[l-1]=0;
218 }
219 }
220 answer1[i]=""+jisuan[num-1];
221 %>
222 <br>
223 <form name="form2"method="post"action="jieguo.jsp">
224 请输入你的答案:<input name="<%=daan[i] %>" type="text" id="daan"maxlength="5">
225 <br>
226 <%
227 }
228 %>
229 <%
230 session.setAttribute("v1",str);
231 session.setAttribute("v2",answer1);
232 %>
233 <input type="submit"value="确定">
234 </form>
235 <%
236 }
237 %>
238  
239 <table>
240 <tr>
241 </tr>
242 </table>
243 </body>
244 </html>

 

 

 

 

编程分析总结:

这个程序连接上数据库,要求我们要完成对数据的记录,只要把结果写入到数据库中就好,这就要求我们一方面对编程要过关,还有一定的SQL语句能力,总的来说,对于我们二人感觉还是不太好做,

但是通过这个实验也掌握到了很多的东西。

两人合作的照片:

 

posted @ 2017-03-15 14:35  贼帅的火柴人  阅读(131)  评论(0编辑  收藏  举报