计算停车收费金额(JSP+JavaBean/Servlet)

某停车场车辆停放服务
收费标准
仅供参考,谢谢

车辆l类型收费方式收费标准备注
1小时内停放时间超过免费时间2小时内超过两小时后每小时不足一小时按一小时计算
小型元/车.次免费31

1、24小时内,车辆连续停放跨两个收费时段的,车辆停放服务
费可累计收取,最高收费不得超过10元;车辆连续停放24小时以上
的,车辆停放服务费按实际停放时间计算。
2、连续停放跨两个收费时段的,可按两个时段的收费标准累加
收取。
3、对正在执行公务或任务的军车、警车、消防车、救灾抢险车、
市政工程(水、电、气、通信、照明、园林绿化等)抢修作业车、
环卫车等特种车辆的停放,免收机动车评放服务费。

Java类

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;

public class ParkingRate {
    public String time;//进入时间
    
    public String sumTime;//总时长

    public String endTime;//离开时间时间
    
    public double money;//收费金额

    public String getTime() {
        return time;
    }

    
    public String getSumTime() {
        return sumTime;
    }
    
    public void setSumTime(String sumTime) {
        this.sumTime = sumTime;
    }
    
    public void setTime(String time) {
//        String a = time.replaceAll(time.substring(10,11)," ");
        this.time = time;
    }

    public String getEndTime() {
        return endTime;
    }

    public void setEndTime(String endTime) {
        this.endTime = endTime;
    }

    public double getMoney() throws ParseException {
        SimpleDateFormat simpleFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        long nd = 1000 * 24 * 60 * 60;
        long nh = 1000 * 60 * 60;
        long nm = 1000 * 60;
        // long ns = 1000;
        // 获得两个时间的毫秒时间差异
        long diff = simpleFormat.parse(endTime).getTime() - simpleFormat.parse(time).getTime();
        // 计算差多少天
        long day = diff / nd;
        // 计算差多少小时
        long hour = diff % nd / nh;
        // 计算差多少分钟
        long min = diff % nd % nh / nm;
        // 计算差多少秒//输出结果
        // long sec = diff % nd % nh % nm / ns;
        if(day>0) {
            hour = hour + (24 * day);
        }
        this.sumTime = hour+"小时"+min+"分";
        System.out.println(sumTime);
        if(hour>=0 && min>=0) {     
            if(min>0) {//不足一小时按一小时计价
                hour =  hour + 1;
            }
            if(hour==1) {//一小时内
                money = 0.0;
            }else if(hour>1 && hour-1<=2) {//超过免费停车时间2小时内
                money = 3.0;
            }else if(hour > 3) {
                money = 3.0 + (hour-3);
                if(hour <=24&& money >10) {//24小时内不超过10元
                    money = 10;
                }
            }
        }
        return money;
    }

    public void setMoney(double money) {
        this.money = money;
    }
}

JSP input.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>计算矩形的面积和周长</title>
<style type="text/css">
    iframe {
	width: 320px;
	height: 200px;
}
   body {
      margin-left: 20px;
   }
</style>
</head>
<body>

<form action="parkingRate.jsp" method="post">
	进入停车时间:<input type="text" name="time" required="required"/> <br/>
	离开停车时间:<input type="text" name="endTime" required="required"/><br/>
	<input type="submit" value="计算" />
</form>
</body>
</html>

parkingRate.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=UTF-8">
<title>计算停车费</title>
</head>
<body>
<jsp:useBean id="parkingRate" class="com.bean.类名A" scope="request"></jsp:useBean>
<jsp:setProperty property="*" name="parkingRate"/>
进入停车时间:<jsp:getProperty property="time" name="parkingRate"/> <br/>
离开停车时间:<jsp:getProperty property="endTime" name="parkingRate"/> <br/>
收费金额:<jsp:getProperty property="money" name="parkingRate"/>元 <br/>
本次停车时长:<jsp:getProperty property="sumTime" name="parkingRate"/><br/>
<div>测试:</div>
<div>1.  2020-04-20 8:00:00至2020-04-20 9:00:00;</div>
<div>2.  2020-04-20 8:00:00至2020-04-20 18:00:00;</div>
<div>3.  2020-04-20 8:00:00至2020-04-22 15:00:00;</div>
<div>计算结果:</div>
</body>
</html>

Servlet部分
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=UTF-8">
<title>计算停车费</title>
</head>
<body>
<form action="service/parkingFee" method="post">
进入时间:<input type="text" name="startTime" value=""/>/*格式:2000-04-20 8:00:00*/
<br/>
离开时间:<input type="text" name="endTime"  value=""/>
<br/>
<input type="submit" value="提交"/>
</form>
<div>测试:</div>
<div>1.  2020-04-20 8:00:00至2020-04-20 9:00:00;</div>
<div>2.  2020-04-20 8:00:00至2020-04-20 18:00:00;</div>
<div>3.  2020-04-20 8:00:00至2020-04-22 15:00:00;</div>
</body>
</html>

Servlet代码

package com.servlet;

import java.io.IOException;
import java.io.PrintWriter;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/service/parkingFee")
public class ParkingFeeServlet extends HttpServlet{
    private static final long serialVersionUID = 1L;

    public ParkingFeeServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // TODO Auto-generated method stub
        super.doGet(req, resp);
        
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.setCharacterEncoding("utf-8");
        resp.setContentType("text/html; charset=utf-8");
        String starTime = req.getParameter("startTime");
        String endTime = req.getParameter("endTime");
      //生成一个HTML片段
        PrintWriter out = resp.getWriter();
        out.print("开始停车时间:" + starTime + "<br/>");
        out.print("离开时间:" + starTime + "<br/>");
        try {
            out.print(getMoney(starTime, endTime));
        } catch (ParseException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    @Override
    protected void service(HttpServletRequest arg0, HttpServletResponse arg1) throws ServletException, IOException {
        // TODO Auto-generated method stub
        super.service(arg0, arg1);
    }
    
    public String getMoney(String startTime, String endTime) throws ParseException{
        double money = 0;

        SimpleDateFormat simpleFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        long nd = 1000 * 24 * 60 * 60;
        long nh = 1000 * 60 * 60;
        long nm = 1000 * 60;
        // long ns = 1000;
        // 获得两个时间的毫秒时间差异
        long diff = simpleFormat.parse(endTime).getTime() - simpleFormat.parse(startTime).getTime();
        // 计算差多少天
        long day = diff / nd;
        // 计算差多少小时
        long hour = diff % nd / nh;
        // 计算差多少分钟
        long min = diff % nd % nh / nm;
        // 计算差多少秒//输出结果
        // long sec = diff % nd % nh % nm / ns;
        if(day>0) {
            hour = hour + (24 * day);
        }
        String sumTime = hour+"小时"+min+"分";
//        System.out.println(sumTime);
        if(hour>=0 && min>=0) {     
            if(min>0) {//不足一小时按一小时计价
                hour =  hour + 1;
            }
            if(hour==1) {//一小时内
                money = 0.0;
            }else if(hour>1 && hour-1<=2) {//超过免费停车时间2小时内
                money = 3.0;
            }else if(hour > 3) {
                money = 3.0 + (hour-3);
                if(hour <=24&& money >10) {//24小时内不超过10元
                    money = 10;
                }
            }
        }
        return "本次停车收费金额为:"+ money + "元<br/>停车时长为:" + sumTime;
        
    }
    

}

  • 3
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

HHUFU..

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值