土壤质地标准转换程序Java MVC模式

土壤质地标准转换程序Java MVC模式
本程序主要简单实现土壤质地标准的转换,即美国制,国际制,中国制,苏联制之间的相互转换,为了简便起见,本程序只分为黏粒,粉粒,砂粒三大类。
本程序的效果如下:
这里写图片描述
程序的eclipse界面
这里写图片描述
本程序采用了mvc模式。程序组织结构为:
A.soil.html为网页界面;
B.receivedata.js为嵌入soil.html的JavaScript,采用ajax来接收用户输入的参数,将参数传至servlet,并接收servlet传来的结果,再将结果显示在HTML的文本框中;
C.包servlet下的controlServlet.java即为控制层,用来接收ajax传来的用户参数,并将这些参数传至模型层Convert.java进行处理,并获取Convert.java处理结果,再将结果传至ajax;
D.Convert.java为本程序的核心,即为一个Java类。实现土壤质地标准的转换;
程序实现如下:
soil.html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>土壤类型转换</title>
<link rel="stylesheet" type="text/css" href="reg.css">
<link rel="stylesheet" type="text/css" href="style.css">

<script type="text/javascript">
</script>
</head>
<body>
<p align="left" style="width:530px;line-height:22px"><strong>土壤质地标准转换</strong>:可以实现国际制,美国制,苏联制,中国制这四种不同土壤质地划分标准的相互转换。本程序将土壤质地划分为黏粒,粉粒,砂粒三大类,输入某类标准下的黏粒,粉粒,砂粒的百分比含量即可得出目标标准制度下的百分比含量。</p>

<div id="reg">

<table width="98%" border="0" align="center" cellpadding="3" cellspacing="1">
<caption>土壤质地标准转换</caption>

<tr>
    <td align="right"><span class="style">请选择所使用的类型:</span></td>
    <td>
        <span class="style">
        <select id="selectid1">
        <option value="1" selected>国际制</option>
        <option value="2">美国制</option>
        <option value="3">苏联制</option>
        <option value="4">中国制</option>
        </select>
        </span>
    </td>
</tr>
<form name="form1" id="form1">
<tr>
    <td align="right" class="style">请输入百分比含量:</td>
    <td class="style">黏粒:<input  id="clayInput" type="text" size="10"></td>
    <td class="style">粉粒:<input  id="particalInput" type="text" size="10"></td>
    <td class="style">砂粒:<input  id="sandInput" type="text" size="10"></td>

</tr>
</form>
<tr>
    <td align="right" class="style">请选择结果类型:</td>
    <td>
        <span class="style">
        <select id ="selectid2">
        <option value="5" selected>国际制</option>
        <option value="6">美国制</option>
        <option value="7">苏联制</option>
        <option value="8">中国制</option>
        </select>
        </span>
    </td>
</tr>

<tr>
<td align="right" class="style">输出结果:</td>
    <td class="style">黏粒:<input  id="clayOut" type="text" size="10"></td>
    <td class="style">粉粒:<input  id="particalOut" type="text" size="10"></td>
    <td class="style">砂粒:<input  id="sandOut" type="text" size="10"></td>
</tr>

<tbody align="right">
<tr>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>
    <input type="button" id="submit" name="submit" value="提交" />
    <input type = "reset" id = "reset" name = "reset" onclick="javascript:document.form1.reset();" value = "重置">
    </td>
</tr>

<tfoot align="right">
<tr>
    <td colspan="4"><font size="-1">注:文本框中输入数值即可,无需输入百分号,转换结果保留两位小数</font></td>
</tr>
</tfoot>
</tbody>
</table>
</div>
<table width="98%" border="0" align="center" cellpadding="3" cellspacing="1">
<tr>
    <td >&nbsp;</td>
    <td align="center"><span id="msg"></span></td>
</tr>

</table>

</body>
<script src="jquery-2.1.1.min.js"></script>
<script src="receivedata.js"></script>
</html>
receivedata.js

    $('#submit').on('click', function()//点击提交按钮
    {
        var clayInput = document.getElementById("clayInput").value;//获取用户输入的黏粒数值
        var particalInput = document.getElementById("particalInput").value;//用户输入的粉粒数值
        var sandInput = document.getElementById("sandInput").value;//砂粒
        var selectoption=$("#selectid1").val();//用户选择的制度标准
        var selectoption2=$("#selectid2").val(); 
        //data为ajax传送给servlet的参数
        var data="clay=" + clayInput + "&partical=" + particalInput + "&sand=" + sandInput+"&select1=" +selectoption+"&selectTarget="+selectoption2;
        //用户输入参数不合法的处理
        if(clayInput<0 || clayInput>100||particalInput<0||particalInput>100||sandInput<0||sandInput>100){ $("#msg").html("<font color=red>请输入0~100之间的数值!");return;}
        if((parseFloat(clayInput) + parseFloat(particalInput) + parseFloat(sandInput))>100){$("#msg").html("<font color=red>输入数值总和应小于100!");return;}
        if(clayInput==""|| particalInput==""||sandInput==""){$("#msg").html("<font color=red>数值不能为空!");return;}
        if(isNaN(clayInput)||isNaN(particalInput)||isNaN(sandInput)){$("#msg").html("<font color=red>输入数据必须为数字!");return;}
        //用户输入合法时程序的处理
        if(clayInput && particalInput && sandInput)
        {
            $("#msg").html("");
            var xmlHttpRequest=null;
            if(window.ActiveXObject)
            {
                xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
            }
            else if(window.XMLHttpRequest)
            {
                xmlHttp=new XMLHttpRequest();
            }
            if(null!=xmlHttp)
            {
                 var url="./controlServlet?timeStamp=" + new Date().getTime();    
                 xmlHttp.open("POST",url,true);  //采用post方式提交
                 xmlHttp.onreadystatechange=handleStateChange;  
                 xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");  
                 xmlHttp.send(data);  //传送参数data
            }
        }
    });
    //当请求被发送到服务器时,我们需要执行一些基于响应的任务。每当 readyState 改变时,就会触发 onreadystatechange 事件。
    //当 readyState 等于 4 且状态为 200 时,表示响应已就绪
    function handleStateChange()  
    {  
         if(xmlHttp.readyState==4)  
         {  
              if(xmlHttp.status==200)  //请求成功
              {  
               parseResults();  
              }  
         }  
    }  
    function parseResults()  //解析后台传回的数据
    {   
         var responseText=document.createTextNode(xmlHttp.responseText);  
          //alert("后台返回的返回值: "+xmlHttp.responseText);
          var field=xmlHttp.responseText.split(" ");
             $("#clayOut").attr("value",field[0]);
             $("#particalOut").attr("value",field[1]);
             $("#sandOut").attr("value",field[2]);
    }  

controlServlet.java

package servlet;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import servlet.Convert;//引入Convert.java
/**
 * Servlet implementation class controlServlet
 */
@WebServlet("/controlServlet")
public class controlServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    /**
     * @see HttpServlet#HttpServlet()
     */
    public controlServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        response.setContentType("text/html;charset=GB2312");//设置响应的MIME类型。  
        java.io.PrintWriter out = response.getWriter(); 
        String clayInput = request.getParameter("clay");//获取ajax传来的参数
        String particalInput = request.getParameter("partical");
        String sandInput = request.getParameter("sand");
        String standard = request.getParameter("select1");
        String standard2 = request.getParameter("selectTarget");
        Convert convert = new Convert(clayInput, particalInput, sandInput, standard, standard2);//实例化对象
        String result = convert.selectStandard();
        out.println(result);
        //request.setAttribute("result", result);
        //RequestDispatcher requestDispatcher = request.getRequestDispatcher("soil.html");
        //requestDispatcher.forward(request, response);
    }

}

Convert.java

package servlet;
import java.text.NumberFormat ; 
public class Convert 
{
    private String clayInput=null;  
    private String particalInput=null;  
    private String sandInput=null;
    private String standard=null;  
    private String standard2=null;
    // variable used to print in html
    public String clayOut = null;
    public String particalOut = null;
    public String sandOut = null;
    public Convert(String clayInput,String particalInput,String sandInput,String standard,String standard2)
    {
        this.setclayInput(clayInput);
        this.setparticalInput(particalInput);
        this.setsandInput(sandInput);
        this.setstandard(standard);
        this.setstandard2(standard2);
    }
    public void setclayInput(String clayInput)  
    {  
        this.clayInput=clayInput;  
    }   
    public String getclayInput() {  
        return clayInput;  
    }  
    public void setparticalInput(String particalInput)  
    {  
        this.particalInput=particalInput;  
    }   
    public String getparticalInput() {  
        return particalInput;  
    }  
    public void setsandInput(String sandInput)  
    {  
        this.sandInput=sandInput;  
    }   
    public String getsandInput() {  
        return sandInput;  
    }  
    public void setstandard(String standard)  
    {  
        this.standard=standard;  
    }   
    public String getstandard() {  
        return standard;  
    } 
    public void setstandard2(String standard2)  
    {  
        this.standard2=standard2;  
    }   
    public String getstandard2() {  
        return standard2;  
    } 

    public String selectStandard() 
    {
        clayInput = clayInput.trim();
        particalInput = particalInput.trim();
        sandInput = sandInput.trim();
        double clayInput1 = Double.parseDouble(clayInput);
        double particalInput1 = Double.parseDouble(particalInput);
        double sandInput1 = Double.parseDouble(sandInput);
        NumberFormat f=NumberFormat.getInstance();
        f.setMaximumFractionDigits(2);
        String result = null;
        if((standard.equals("1") && standard2.equals("5"))||(standard.equals("2") && standard2.equals("6"))||(standard.equals("3") && standard2.equals("7"))||(standard.equals("4") && standard2.equals("8")))//same to same
        {
            clayOut = clayInput;
            particalOut = particalInput;
            sandOut = sandInput;
            result= clayOut+" "+particalOut+" "+sandOut;
            //return result;
        }
        if(standard.equals("1") && standard2.equals("6"))//inter to usa
        {
            clayOut = clayInput;
            particalOut = f.format(particalInput1+sandInput1*0.015);
            sandOut = f.format(sandInput1*0.985);
            result=clayOut+" "+particalOut+" "+sandOut;
            //return result;
        }
        if(standard.equals("1") && standard2.equals("7"))//inter to ussr
        {
            clayOut=f.format(clayInput1*0.5);
            particalOut = f.format(particalInput1+clayInput1*0.5+sandInput1*0.015);
            sandOut=f.format(sandInput1*0.48);
            result=clayOut+" "+particalOut+" "+sandOut;
            //return result;
        }
        if(standard.equals("1") && standard2.equals("8"))//inter to China
        {
            clayOut = f.format(clayInput1+particalInput1*0.167);
            particalOut = f.format(particalInput1*0.833+sandInput1*0.015);
            sandOut = f.format(sandInput1*0.48);
            result=clayOut+" "+particalOut+" "+sandOut;
            //return result;
        }
        if(standard.equals("2") && standard2.equals("5"))//usa to inter
        {
            clayOut = clayInput;
            particalOut = f.format(particalInput1*0.375);
            sandOut = f.format(sandInput1+particalInput1*0.625);
            result=clayOut+" "+particalOut+" "+sandOut;
            //return result;
        }

        if(standard.equals("2") && standard2.equals("7"))//usa to ussr
        {
            clayOut = f.format(clayInput1*0.5);
            particalOut = f.format(clayInput1*0.5+particalInput1);
            sandOut = f.format(sandInput1*0.487);
            result=clayOut+" "+particalOut+" "+sandOut;
            //return result;
        }
        if(standard.equals("2") && standard2.equals("8"))//usa to china
        {
            clayOut = f.format(clayInput1+particalInput1*0.0625);
            particalOut = f.format(particalInput1*0.9375);
            sandOut = f.format(sandInput1*0.487);
            result=clayOut+" "+particalOut+" "+sandOut;
            //return result;
        }
        if(standard.equals("3") && standard2.equals("5"))//ussr to inter
        {
            clayOut = f.format(clayInput1+particalInput1*0.0204);
            particalOut = f.format(particalInput1*0.367);
            sandOut = f.format(particalInput1*0.612+sandInput1);
            result=clayOut+" "+particalOut+" "+sandOut;
            //return result;
        }
        if(standard.equals("3") && standard2.equals("6"))//ussr to usa
        {
            clayOut = f.format(clayInput1+particalInput1*0.0204);
            particalOut = f.format(particalInput1*0.9796);
            sandOut = sandInput;
            result=clayOut+" "+particalOut+" "+sandOut;
            //return result;
        }

        if(standard.equals("3") && standard2.equals("8"))//ussr to China
        {
            clayOut = f.format(clayInput1+particalInput1*0.0816);
            particalOut = f.format(particalInput1*0.918);
            sandOut = sandInput;
            result=clayOut+" "+particalOut+" "+sandOut;
            //return result;
        }
        if(standard.equals("4") && standard2.equals("5"))//China to inter
        {
            clayOut = f.format(clayInput1*0.4);
            particalOut = f.format(clayInput1*0.6+particalInput1*0.3333);
            sandOut = f.format(sandInput1+particalInput1*0.666);
            result=clayOut+" "+particalOut+" "+sandOut;
            //return result;
        }
        if(standard.equals("4") && standard2.equals("6"))//China to usa
        {
            clayOut = f.format(clayInput1*0.4);
            particalOut = f.format(clayInput1*0.6+particalInput1);
            sandOut = sandInput;
            result=clayOut+" "+particalOut+" "+sandOut;
            //return result;
        }
        if(standard.equals("4") && standard2.equals("7"))//China to ussr
        {
            clayOut = f.format(clayInput1*0.2);
            particalOut = f.format(clayInput1*0.8+particalInput1);
            sandOut = sandInput;
            result=clayOut+" "+particalOut+" "+sandOut;
            //return result;
        }
        return result;
    }

}

程序中使用了jquery,需要引入相应文件,如jquery-2.1.1.min.js

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值