四则运算2(最终版)java+jps+sqlServer
1,设计思想
(1)在java Resources里建立包和类
(2)在类里面写入方法,其中包括生成算式create()和删除算式delete()用来更新数据库中的题目
(3)Show()方法用来随机抽取数据库中的算式并显示
(4)Caculate()方法用来接收参数,验证计算的结果
(5)建立jsp文件,搭建网页的布局,调用java方法
2,源程序代码
java代码
package com.jaovo.msg.model; public class Equation {
int firstNum;
int secondNum;
String symbol;
String id;
int result;
public String s[]={"+","-","*","/"}; public String getSymbol() {
return symbol;
}
public void setSymbol(String symbol) {
this.symbol = symbol;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
} public int getFirstNum() {
return firstNum;
}
public void setFirstNum(int firstNum) {
this.firstNum = firstNum;
}
public int getSecondNum() {
return secondNum;
}
public void setSecondNum(int secondNum) {
this.secondNum = secondNum;
}
public int getResult() {
return result;
}
public void setResult(int result) {
this.result = result;
} }
package com.jaovo.msg.dao; import java.sql.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Random; import com.jaovo.msg.Util.DBUtil;
import com.jaovo.msg.Util.UserException;
import com.jaovo.msg.model.Equation;
import java.io.*; public class EquationDaoImpl { public void create() {
// TODO Auto-generated method stub
Equation equ=new Equation();
Random ran=new Random();
for(int i=1;i<=1000;i++){
Connection con=DBUtil.getConnection();
equ.setFirstNum(ran.nextInt(0+100));
equ.setSecondNum(ran.nextInt(0+100));
equ.setSymbol(equ.s[ran.nextInt(4)]);
if(i<10)
equ.setId("000"+i);
if(i>=10&&i<100)
equ.setId("00"+i);
if(i>=100&&i<1000)
equ.setId("0"+i);
if(i==1000)
equ.setId("1000");
if(equ.getSymbol()=="+")
equ.setResult(equ.getFirstNum()+equ.getSecondNum());
if(equ.getSymbol()=="-")
equ.setResult(equ.getFirstNum()-equ.getSecondNum());
if(equ.getSymbol()=="*")
equ.setResult(equ.getFirstNum()*equ.getSecondNum());
if(equ.getSymbol()=="/"&&equ.getSecondNum()!=0&&(equ.getFirstNum()%equ.getSecondNum()==0)&&equ.getFirstNum()>=equ.getSecondNum())
equ.setResult(equ.getFirstNum()/equ.getSecondNum());
{
if(equ.getResult()<100&&equ.getResult()>=0){
try{
String sql="insert into equation(id,firstNum,symbol,secondNum,result)values('"+equ.getId()+"','"+equ.getFirstNum()+"','"+equ.getSymbol()+"','"+equ.getSecondNum()+"','"+equ.getResult()+"')";
Statement stmt=con.createStatement();
stmt.executeUpdate(sql);//更新
}catch(SQLException e){
e.printStackTrace();
}finally {
DBUtil.close(con);
}
}
else i--;
}
}
}
public void delete(){
Equation equ=new Equation();
Connection con = DBUtil.getConnection();
for(int i=0;i<1000;i++){
equ.setId(i+1+"");
try {
Statement stmt=con.createStatement();
String sql = "delete from equation where id = "+Integer.parseInt(equ.getId());
stmt.executeUpdate(sql);
} catch (SQLException e) {
e.printStackTrace();
}
}
} public String show(){
Equation equ=new Equation();
Connection con=DBUtil.getConnection();
String str ="";
Random ran=new Random();
Statement stmt;
try {
stmt = con.createStatement();
int id1=ran.nextInt(999)+1;
ResultSet rs=stmt.executeQuery("SELECT * FROM equation where id="+id1);
while(rs.next()){
str=rs.getString("id")+" "+rs.getString("firstNum")+rs.getString("symbol")+rs.getString("secondNum")+"=";
}
} catch (SQLException e) { e.printStackTrace();
} return str;
}
public String show1(String id1){
Equation equ=new Equation();
Connection con=DBUtil.getConnection();
String str ="";
Statement stmt;
try {
stmt = con.createStatement();
ResultSet rs=stmt.executeQuery("SELECT * FROM equation where id="+id1);
while(rs.next()){
str=rs.getString("firstNum")+rs.getString("symbol").trim()+rs.getString("secondNum")+"="+rs.getString("result");
}
} catch (SQLException e) { e.printStackTrace();
}
// BufferedWriter bw;
// try {
// bw = new BufferedWriter(new FileWriter("wrong.txt",true));
// bw.write("nlc");
// bw.close();
// } catch (IOException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// }
return str;
}
public String caculate(String result,String id){
Equation equ=new Equation();
Connection con=DBUtil.getConnection();
String str = "";
int result1=Integer.parseInt(result);
int id1=Integer.parseInt(id);
Statement stmt;
try {
stmt = con.createStatement();
ResultSet rs=stmt.executeQuery("SELECT * FROM equation where id = "+id1);
while(rs.next()){
if((rs.getInt("result"))==result1)
{str="正确";}
if((rs.getInt("result"))!=result1)
str="错误";
} } catch (SQLException e) { e.printStackTrace();
}
return str;
}
}
jsp代码
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>四则运算</title>
</head>
<center>
<body background="D:\图片\动漫\20150422H2607_fKHLB.jpeg">
<%if(request.getAttribute("error1")!=null){
out.print("<script language='javaScript'>alert('题数和时间不能为空'); </script>)");
}
%>
<%if(request.getAttribute("error2")!=null){
out.print("<script language='javaScript'>alert('请正确输入'); </script>)");
}
%>
<center>
<font color="red" size="4" face="楷体">欢迎来到四则运算</font>
</center>
<form action="caculateInput.jsp" method="post">
<table align="center" >
<tr>
<td>
<font face="楷体">请输入出题数目</font>
</td>
<td>
<input type="text" name="number" placeholder="请输入……">
</td>
</tr>
<tr>
<td>
<font face="楷体">请设置做题时间(秒)</font>
</td>
<td>
<input type="text" name="time" placeholder="请输入……">
</td>
</tr>
<tr align="center">
<td colspan="2">
<input type="submit" value="开始答题"/>
<input type="reset" value="重置题目数目"/>
</td>
</tr>
</table>
</form>
</body>
</center>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@page import="com.jaovo.msg.Util.showAnswer"%>
<%@page import="com.jaovo.msg.dao.EquationDaoImpl" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%
String url = "http://localhost:8080/四则运算2/equation/start.jsp"; //设置跳转的地址
int time=Integer.parseInt(request.getParameter("time"));
int number=Integer.parseInt(request.getParameter("number"));
EquationDaoImpl equ=new EquationDaoImpl();
String time1=request.getParameter("time");
String number1=request.getParameter("number");
%>
<%if("".equals(time1.trim())||"".equals(number1.trim())){
request.setAttribute("error1", "题数和时间不能为空");
%>
<jsp:forward page="start.jsp"></jsp:forward>
<%
}
%> <%
if(time<0||number<0){
request.setAttribute("error2", "请正确输入"); %>
<jsp:forward page="start.jsp"></jsp:forward>
<%
}
%>
<html>
<head >
<title>四则运算</title>
<meta http-equiv=refresh content=<%=time %>;url=<%=url %>>
</head>
<body background="D:\图片\新建文件夹\9252150_130954294310_2.jpg" background-size:cover>
<form action="caculate.jsp" method="post">
<table align="center" >
<%
for(int i=0;i<number;i++){
String str=equ.show();
%>
<tr>
<td><%=str.substring(6, str.length()) %></td>
<td>
<input type="text" name="result" placeholder="请输入……" >
</td>
</tr>
<tr>
<td>
<input type="hidden" name="id" value="<%=str.substring(0,4) %>" >
</td>
</tr>
<%
}
%>
<div align="center">
<h3 style=color:red>答题剩余时间:<span id=jump ></span></h3>
<h4><a href="start.jsp" onclick="jumpToIndex()">重新设题</a></h4>
</div>
<tr align="center">
<td colspan="2">
<input type="submit" value="提交"/>
<input type="reset" value="重置"/>
</td>
</tr>
</table>
</form>
</body>
<script>
function countDown(secs){
jump.innerText=secs;
if(--secs>0)
setTimeout("countDown("+secs+" )",1000);
if(secs==0)
document.forms[0].submit();
}
countDown(<%=time%>);
function jumpToIndex(){
window.location.href='<%="http://localhost:8080/四则运算2/equation/start.jsp" %>';
}
</script>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@page import="java.util.*" %>
<%@page import="com.jaovo.msg.dao.EquationDaoImpl" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>计算结果</title>
</head>
<body background="D:\图片\新建文件夹\9252150_130954294310_2.jpg">
<%
String[] result=request.getParameterValues("result");
String[] id=request.getParameterValues("id");
String[] idNum=new String[100];
int I=0;
for(String i:id){
idNum[I]=i;
I++;
}
String[] RCaculate=new String[100];
int x=0;
String[] WCaculate=new String[100];
int y=0;
String[] KCaculate=new String[100];
int z=0;
I=0;
EquationDaoImpl equDao=new EquationDaoImpl();
for(String str:result){
if(str == null || "".equals(str.trim())){
KCaculate[z]=equDao.show1(idNum[I]);z++;continue;
}
if(equDao.caculate(str,idNum[I]).equals("正确")){
RCaculate[x]=equDao.show1(idNum[I]);x++;
}
if(equDao.caculate(str,idNum[I]).equals("错误")){
WCaculate[y]=equDao.show1(idNum[I]);y++;
}
I++;
}
out.println("正确的数量:"+x);
%>
<br/>
<%
out.print("错误的题目数量:"+y);
%>
<!-- <a href="wrong.jsp">查看错题</a> -->
<br/>
<%
out.print("未答的题目数量:"+z);
%>
<!-- <a href="">查看未答的题目</a> -->
<br/>
<a href="create.jsp">更新题目</a><br/>
<a href="start.jsp">重新计算</a><br/>
<form action="wrong.jsp" method="post">
<table align="center">
<%
for(int i=0;i<y;i++){
%>
<tr>
<td>
<input type="hidden" name="wrong" value="<%=WCaculate[i]%>" >
</td>
</tr>
<%} %>
<%
for(int i=0;i<z;i++){
%>
<tr>
<td>
<input type="hidden" name="kong" value="<%=KCaculate[i]%>" >
</td>
</tr>
<%} %>
<tr>
<input type="submit" value="查看错题和未做的题"/>
</tr>
</table>
</form> </body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>错题</title>
</head>
<body background="D:\图片\新建文件夹\9252150_130954294310_2.jpg">
<%
String[] wrong=request.getParameterValues("wrong");
String[] kong=request.getParameterValues("kong");
out.println("错题");
%>
<br/>
<%
for(String w:wrong){
out.println(w);
%>
<br/>
<%
}
out.print("未做的题");
%>
<br/>
<%
for(String k:kong){
out.print(k);
%>
<br/>
<%
}
out.print("那你是很棒棒");
%>
<a href="start.jsp">再来一次 </a>
</body>
</html>
<%@page import="com.jaovo.msg.dao.EquationDaoImpl" %>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>创建题目</title>
</head>
<body>
<h4 align="center">更新题目库成功</h4>
<%
EquationDaoImpl equDao=new EquationDaoImpl();
equDao.delete();
equDao.create();
%>
<div align="center">
<a href="start.jsp">继续做题</a>
</div>
</body>
</html>
3,运行结果截图
4,编程总结分析
在jsp页面中尽量少使用java代码,养成良好习惯,应该在java中写入方法,然后调用即可
在定义变量和方法时,应该根据具体情况来起名,增减参数,定义返回值类型
5,时间记录日志
日期 | 开始时间 | 结束时间 | 中断时间 | 净时 | 活动 | 备注 | C | U |
12/1 | 9:00 | 15:40 | 2个小时 | 4小时40分钟 | 编程序 | 四则运算,休息 | ||
12/2 | 9:00 | 17:00 | 4个小时 | 4小时 | 编程序 | 四则运算,休息 | ||
12/3 | 9:00 | 11:00 | 0 | 2小时 | 编程序 | 四则运算 | ||
12/4 | 16:00 | 17:00 | 0 | 2小时 | 编程序 | 四则运算 | ||
12/5 | 8:00 | 12:00 | 0 | 4小时 | 上课 | 软件工程概论,数据结构 |
Personal Software Process Stages | time |
计划 | |
估计这个任务需要的时间 | 3天 |
开发 | |
需求分析(包括学习新技术) | 传参数(结果集) |
生成设计文档 | 无 |
设计复审(和同事审核设计文档) | 无 |
代码规范(为目前的开发制定合适的规范) | 首行缩进,大括号另起一行 |
具体设计 | 在jsp中调用java方法,将结果在页面上显示 |
具体编码 | 参考上面(两天) |
代码复审 | 每次修改后都会检查 |
测试(自我测试,修改代码,提交修改) | 半天 |
报告 | |
测试报告 | 1个小时 |
计算工作量 | 3天 |
事后总结,并提出过程改进计划 | 无法记录错题,改进计划:将错题保存在数据库中 |
合计 | 3天 |
10个测试用例
1,能出题 2,能倒计时 3,能判断错对 4,能将错题显示出来 5,能判断是否有空题 6,能更新题目(数据库)7,能重新出题 8,能判断不能输入负数
9,能出多道题目10,能重新计算错题
进过验证以上功能都能实现
学到了要灵活运用各种自定义的方法,学会给jsp页面布局,能灵活运用数据库
四则运算2(最终版)java+jps+sqlServer的更多相关文章
- 四则运算web最终版
经过若干时间的奋战,终于完成了web版四则运算程序.团队成员:井小普.张贺. 设计思想: 在之前的程序基础上两人结合开发web系统. 首先,进行登录注册界面的编写,不同用户,对应不同的错题库,答题记录 ...
- Java实例---flappy-bird实例[最终版]
代码分析 解析版: Java实例---flappy-bird实例解析 完整版: TestBirdFly.java package testfly; import java.awt.Color; imp ...
- 最终版的Web(Python实现)
天啦,要考试了,要期末考试了,今天把最终版的Python搭建Web代码先写这里记下了.详细的过程先不写了. 这次是在前面的基础上重写 HTTPServer 与 BaseHTTPRequestHandl ...
- Angular 2 最终版正式发布
9月15日,Angular 2 的最终版正式发布了. 作为 Angular 1 的全平台继任者 -- Angular 2 的最终版,意味着什么? 意味着稳定性已经得到了大范围用例的验证: 意味着已经针 ...
- RHEL 6.0服务器安装Oracle 11G R2 最终版
RHEL6安装Oracle 11g R2最终版 结合网上教程 服务器实战所得 1.使用DVD做yum源新建dvd挂载目录[root@fxq-dp ~]# mkdir /media/iso进入到DVD挂 ...
- 理解JavaScript设计模式与开发应用中发布-订阅模式的最终版代码
最近拜读了曾探所著的<JavaScript设计模式与开发应用>一书,在读到发布-订阅模式一章时,作者不仅给出了基本模式的通用版本的发布-订阅模式的代码,最后还做出了扩展,给该模式增加了离线 ...
- jQuery 3.0最终版发布,十大新特性眼前一亮
jQuery 3.0在日前发布了最终的全新版本.从2014年10月,jQuery团队对这个主要大版本进行维护开始,web开发者社区便一直在期待着这一刻的到来,终于在2016年6月他们迎来了这一个最终板 ...
- Delphi7/2007/2009/2010/XE/XE2/XE3/XE4/XE5/XE6/XE7/XE8/10最终版
RAD Studio 10.1 Berlin(with Update1)http://altd.embarcadero.com/download/radstudio/10.1/delphicbuild ...
- python---session(最终版)__setitem__和__getitem__方法
一般来说对于其他语言session值一般获取方法为session['name'],赋值使用session['name']=val 对于python类中含有一些魔术方法__setitem__,__get ...
随机推荐
- Git学习笔记(1)
1.安装Git: 在linux下安装:yum install git 其他系统安装在这里略去~~~ 安装完成后,需要设置一下,在命令行输入以下命令: [root@xwq ~]# git config ...
- Nginx的反向代理的配置
1.linux下的方向代理(前提域名和P已经映射好了的) 在linux中的输入命令:whereis nginx 查看当前nginx的安装目录 显示 nginx: /usr/local/nginx 命令 ...
- eclipse debug的时候提示debug Edit Source Lookup path
原因可能是代码资源包未加载到debug的路径中,解决方法如下: Debug 视图下 ->在调试的线程上 右键单击 ->选择Edit Source Lookup Path ->选择Ad ...
- java自带线程池和队列详细讲解,android中适用
Java线程池使用说明 一简介 线程的使用在java中占有极其重要的地位,在jdk1.4极其之前的jdk版本中,关于线程池的使用是极其简陋的.在jdk1.5之后这一情况有了很大的改观.Jdk1.5之后 ...
- ARP(地址解析协议)
目录 1. ARP 概述 2. ARP 协议工作原理 3. ARP 缓存 4. ARP 报文格式 5. 抓包分析 5.1. ARP 请求报文 5.2. ARP 应答报文 6. 免费 ARP 7. AR ...
- knockout.validation.js 异步校验
self.forDealPwd.extend({ required:{ params:true, message:'请输入验证码!' }, minLength:{ params:4, message: ...
- 杭电(hdu)ACM 4548 美素数
美素数 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others) Total Submis ...
- [iOS翻译]《iOS7 by Tutorials》在Xcode 5里使用单元測试(上)
简单介绍: 单元測试是软件开发的一个重要方面.毕竟,单元測试能够帮你找到bug和崩溃原因,而程序崩溃是Apple在审查时拒绝app上架的首要原因. 单元測试不是万能的,但Apple把它作为开发工具包的 ...
- c2
#include <stdio.h> int main() { // 整型常量 ; // 实型常量(小数) // 单精度float / 双精度double // 注意: 默认情况下编写的小 ...
- Linux性能优化和监控系列(一)——top工具
解释服务器发生了什么——top工具 在检查服务器的详细工作性能状态前,系统管理员需要对当前服务器状态有总体的了解. top是检查服务器总体状态的强有力工具, 通过top可以获取CPU, Memory, ...