用Easyui写一个银行个人存款计算器(纯前端页面)

某行去实习,让实习生做一个小页面,来计算个人存款的利息,抽空用最简单的方式写了一个

效果图

在这里插入图片描述在这里插入图片描述

需求描述
  • 题目
    编写一个“存款计算器”小应用,用户通过选择存款种类、存款期限,输入存款金额后,可以计算显示出存款利息和本息合计等信息。
  • 要求
    程序建议使用Web网页形式进行实现,通过html编写页面,通过css控制页面样式、通过javascript编写控制及计算逻辑。
    若你熟悉jQuery、Vue、React、Angular等Web前端框架,可以进行使用,有额外加分。
    若你对Web前端开发不了解,可以使用你熟悉的编程语言进行实现,通过标准的输入输出实现程序逻辑,并提供相应的代码或伪代码并加以注释。
  • 具体需求
  1. 输入项
    1) 存款种类(选择)
    数据字典:整存整取、活期
    2)存款期限(选择)
    数据字典:三个月、六个月、一年、二年、三年、五年
    注:仅在存款种类为“整存整取”时显示该输入项,每个月按照30天计算
    3)起存日期、结束日期(选择或输入)
    注:仅在存款种类为“活期”时显示该输入项
    4)存款金额(输入)
    要求:金额需大于等于0
  2. 输出项
    1)存款利息
    通过金额、存款期限或起存结束日期、年利率等计算得出
源码

github地址:https://github.com/hanxiaochuang666/personalDepositCalculator.git

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title>个人存款计算器</title>
		<link rel="stylesheet" type="text/css" href="./css/easyui.css">
		<link rel="stylesheet" type="text/css" href="./css/icon.css">
		<script type="text/javascript" src="./js/jquery.min.js">
		</script>
		<script type="text/javascript" src="./js/jquery.easyui.min.js">
		</script>

	</head>
	<body>

		<div id="p" class="easyui-panel" title="个人存款计算器" style="width:500px;height:600px;padding:10px;background:#fafafa;"
		 data-options="iconCls:'icon-save'">
			<div>
				<p style="color: #0000FF;">信息输入</p>
				<hr />
				<label for="CType">存款种类:
					<select id="CType" class="easyui combobox" style="width: 300px;">
						<option selected="selected">活期</option>
						<option>整存整取</option>
					</select>
					<br /><br />
				</label>


				<label for="YType" id="nianxian" hidden="hidden">存款年限:
					<select id="YType" class="easyui combobox" style="width: 300px;">
						<option selected="selected">三个月</option>
						<option>六个月</option>
						<option>一年</option>
						<option>二年</option>
						<option>三年</option>
						<option>五年</option>
					</select>
					<br /><br />
				</label>

				<label for="sDate" id="sTime">起存日期:<input id="sDate" type="text" class="easyui-datebox" data-options="prompt:'请选择起存日期',required: true,formatter:dateboxformatter,parser:parseDate"
					 style="width: 300px;" /><br /><br /></label>

				<label for="eDate" id="eTime">结束日期:<input id="eDate" type="text" class="easyui-datebox" data-options="prompt:'请选择结束日期',required: true,formatter:dateboxformatter,parser:parseDate"
					 style="width: 300px;" /><br /><br /></label>

				<label>年 利 率 :
					<input id="nianlilv" class="easyui-textbox" data-options="prompt:'利率', readonly:true" value="0.30%" style="width:300px" />
					<br /><br />
				</label>

				<label id="mony">存款金额:
					<input id="cunkuan" class="easyui-numberbox" data-options="min:0,prompt:'请输入金额',required: true" style="width:300px" />
					<br /><br />
				</label>

				<p style="color: #0000FF;">计算结果</p>
				<hr />

				<label>存款利息:
					<input id="lixi" class="easyui-textbox" data-options="readonly:true" style="width:300px" />
					<br /><br />
				</label>

				<label>本息合计:
					<input id="total" class="easyui-textbox" data-options="readonly:true" style="width:300px" />
					<br /><br />
				</label>
				<a id="btn" href="#" class="easyui-linkbutton" data-options="iconCls:'icon-search'" style="width:450px;">计算利息</a>
			</div>
		</div>

		<script>
			/**
			 * 计算两个日期之间的天数
			 * @param dateString1  开始日期 yyyy-MM-dd
			 * @param dateString2  结束日期 yyyy-MM-dd
			 * @returns {number} 如果日期相同 返回一天 开始日期大于结束日期,返回0
			 */
			function getDaysBetween(dateString1, dateString2) {
				var startDate = Date.parse(dateString1);
				var endDate = Date.parse(dateString2);
				if (startDate > endDate) {
					alert("结束日期不能小于起存日期!");
					$("#sDate").textbox('setValue');
					$("#eDate").textbox('setValue');
					return false;
				}
				if (startDate == endDate) {
					return 1;
				}
				var days = (endDate - startDate) / (1 * 24 * 60 * 60 * 1000);
				return days;
			}
			// 格式化日期为 yyyy-MM-dd
			function dateboxformatter(date) {
				var y = date.getFullYear();
				var m = date.getMonth() + 1;
				var d = date.getDate();
				return y + '-' + m + '-' + d;
			}

			function parseDate(s) {
				if (!s) return new Date();
				var year = s.substr(0, 4);
				var month = s.substr(5, 2)
				var date = s.substr(8, 2)
				var y = parseInt(year, 10);
				var m = parseInt(month, 10);
				var d = parseInt(date, 10);
				if (!isNaN(y) && !isNaN(m) && !isNaN(d)) {
					return new Date(y, m - 1, d);
				} else {
					return new Date();
				}
			}
			$(function() {
				// 计算结果
				$('#btn').bind('click', function() {
					// 1、规则校验
					var ctype = $("#CType").combobox('getText');
					var nianlilvstr = $("#nianlilv").val();
					var lilv = nianlilvstr.substring(0,nianlilvstr.length-1);
					var cunkuan = parseInt($("#cunkuan").val());
					if (cunkuan <= 0) {
						alert("存款金额不可空!");
						return false;
					}
					var lixi;
					var total;
					// 计算结果
					if (ctype == "活期") {
						// 活期 
						// 利息 =(结束日期-开始日期)/ 365 * 年利率
						// 本息合计 = 利息 + 本金
						var stime = $("#sDate").datebox('getValue');
						if("" == stime){
							alert("起存日期不可空!");
							return false;
						}
						var etime = $("#eDate").datebox('getValue');
						if("" == etime){
							alert("结束日期不可空!");
							return false;
						}
						var dis = getDaysBetween(stime, etime);
						debugger
						var num = cunkuan * lilv/100 * (dis / 365);
						// 保留两位小数
						lixi = Math.floor(num*100)/100;
						total = cunkuan + lixi;
					} else {
						// 整存整取
						// 利息 =(所选时间段计算出日子)/ 365 * 年利率
						// 本息合计 = 利息 + 本金
						var n = $("#YType").combobox('getText');
						var day;
						if (n == "三个月") {
							day = 3 * 30;
						} else if (n == "六个月") {
							day = 6 * 30;
						} else if (n == "一年") {
							day = 12 * 30;
						} else if (n == "两年") {
							day = 2 * 12 * 30;
						} else if (n == "三年") {
							day = 3 * 12 * 30;
						} else if (n == "五年") {
							day = 5 * 12 * 30;
						}
						debugger
						var num = cunkuan * lilv/100 * (day / 365);
						// 保留两位小数
						lixi = Math.floor(num*100)/100;
						total = cunkuan + lixi;
					}
					$("#lixi").textbox('setValue', lixi);
					$("#total").textbox('setValue', total);

				});

				// 存款种类change事件
				$("#CType").combobox({
					onChange: function(n, o) {
						//这里的参数n是select改变后的value,o是改变前的value  
						console.log("存款种类选择:" + n);
						$("#lixi").textbox('setValue');
						$("#total").textbox('setValue');
						if (n == "活期") {
							$("#nianxian").hide();
							$("#sTime").show();
							$("#eTime").show();
							$("#nianlilv").textbox('setValue', '0.30%');
						} else {
							$("#sTime").hide();
							$("#eTime").hide();
							$("#nianxian").show();
							$("#nianlilv").textbox('setValue', '1.35%');

						}
					}
				});
				// 存款年限变化后自动设置利率
				$("#YType").combobox({
					onChange: function(n, o) {
						//这里的参数n是select改变后的value,o是改变前的value  
						console.log("存款年限选择:" + n);
						$("#lixi").textbox('setValue');
						$("#total").textbox('setValue');
						if (n == "三个月") {
							$("#nianlilv").textbox('setValue', '1.35%');
						} else if (n == "六个月") {
							$("#nianlilv").textbox('setValue', '1.55%');
						} else if (n == "一年") {
							$("#nianlilv").textbox('setValue', '1.75%');
						} else if (n == "两年") {
							$("#nianlilv").textbox('setValue', '2.25%');
						} else if (n == "三年") {
							$("#nianlilv").textbox('setValue', '2.75%');
						} else if (n == "五年") {
							$("#nianlilv").textbox('setValue', '2.75%');
						}

					}
				});
			});
		</script>

	</body>
</html>

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值