Web程序设计-实验04 JavaScript对象

题目

【实验主题】

个人所得税计算

【实验任务】

1、根据【任务提示】和【参考资源】材料,自学2012版月工资、年终奖个人所得税计算规则。

2、新建 .js文件,以JSON格式定义个人所得税对象。

其中属性涉及三个层次:

1)第一层次有两个元素。一个元素存储扣除数(现行的金额是3500);一个元素是数组对象,存放个人所得税税率表各级税率。

2)数组中的每个元素是税率对象。

3)每个税率对象包含个人所得税税率表中某一级的各项参数。

实现2个方法:

1)月工资个人所得税计算。输入参数是月工资(不含五险一金);返回值是应缴纳的个人所得税。

2)年终奖个人所得税计算。输入参数是年终奖发放当月工资(不含五险一金)、年终奖;返回值是应缴纳的个人所得税。

3、新建 index.html。在页面中插入 js脚本,调用 个人所得税对象的2个计税方法,分别输出以下月工资和年终奖的个人所得税。

1)分别计算输出月工资(不含五险一金)为3500、7000、10000、15000、50000、80000、100000元时应纳个人所得税税额。

2)年终奖的数值由随机生成,可以跟月工资有一定的相关性,比如是月工资的3-20倍。

每行输出结果形如:

月工资 5100元,每月所得税为 55元;年终奖 24000元,一次性所得税为 2295元;全年所得税共计 2955元。

工资个税的计算公式:应纳税额=(工资薪金所得 - 五险一金 - 扣除数) ×适用税率 - 速算扣除数

其中扣除数为3500元/月(2011年9月1日起正式执行,工资、薪金所得适用)

举例,如果某人的工资收入为5000元(不含五险一金),他应纳个人所得税为:(5000 - 3500)×3% - 0 = 45(元)

2、全年一次性奖金个人所得税计算公式(分 2种情况)

1)雇员当月工资薪金所得高于(或等于)税法规定的费用扣除额的。

适用公式为:应纳税额=雇员当月取得全年一次性奖金×适用税率-速算扣除数。

案例:某人的年终奖金为24000元,当月工资为5100元。

以24000除以12,其商数2000对应的适用税率为10%,速算扣除数为105,年终奖金应纳税额为:24000×10%-105=2295(元)。

2)雇员当月工资薪金所得低于税法规定的费用扣除额的。

适用公式为:应纳税额=(雇员当月取得全年一次性奖金-雇员当月工资薪金所得与费用扣除额的差额)×适用税率-速算扣除数。

案例:某人的年终奖金为12000元,当月工资为3000元。

则12000-(3500-3000)=11500,以11500除以12,其商数958.33对应的适用税率为3%,速算扣除数为0,年终奖金应纳税额为:11500 ×3%=345(元)。

3)个人当月工资所得与全年一次性奖金应分别计算缴纳个人所得税。

效果示例

index.html文件

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>个人所得税计算器</title>
	</head>
	<body>
		<h1>个人所得税计算结果</h1>
		<script src="PersonalIncomeTax.js"></script>
		<script>
			print();

			function print() {
				const salaries = [3500, 7000, 10000, 15000, 50000, 80000, 100000];
				var monthTax, annualBonus, annualBonusTax, totalTax;
				for (let i = 0; i < salaries.length; i++) {
					monthTax = PersonalIncomeTax.calculateMonthlyTax(salaries[i]);
					annualBonus = salaries[i] * (parseInt(10 * (Math.random() + 1)));
					annualBonusTax = parseInt(PersonalIncomeTax.calculateAnnualBonusTax(salaries[i], annualBonus));
					totalTax = monthTax * 12 + annualBonusTax;
					document.write("月工资" + salaries[i] + "元,");
					document.write("每月所得税为" + monthTax + "元;");
					document.write("年终奖" + annualBonus + "元,");
					document.write("一次性所得税为" + annualBonusTax + "元;");
					document.write("全年所得税共计" + totalTax);
					document.write("<br>");
				}
			}
		</script>
	</body>
</html>

PersonalIncomeTax.js文件

// PersonalIncomeTax.js
const PersonalIncomeTax = {
	deduction: 3500, // 扣除数
	taxBrackets: [ // 税率表
		{
			lowerBound: 0,
			upperBound: 1500,
			rate: 0.03,
			quickDeduction: 0
		},
		{
			lowerBound: 1500,
			upperBound: 4500,
			rate: 0.1,
			quickDeduction: 105
		},
		{
			lowerBound: 4500,
			upperBound: 9000,
			rate: 0.2,
			quickDeduction: 555
		},
		{
			lowerBound: 9000,
			upperBound: 35000,
			rate: 0.25,
			quickDeduction: 1005
		},
		{
			lowerBound: 35000,
			upperBound: 55000,
			rate: 0.3,
			quickDeduction: 2755
		},
		{
			lowerBound: 55000,
			upperBound: 80000,
			rate: 0.35,
			quickDeduction: 5505
		},
		{
			lowerBound: 80000,
			rate: 0.45,
			quickDeduction: 13505
		} // 无上界
	],

	calculateMonthlyTax: function(salary) {
		if (salary <= this.deduction) {
			return 0;
		}
		let taxableIncome = salary - this.deduction;
		for (let bracket of this.taxBrackets) {
			if (taxableIncome <= bracket.upperBound || bracket.upperBound === undefined) {
				return taxableIncome * bracket.rate - bracket.quickDeduction;
			}
		}
	},

	calculateAnnualBonusTax: function(monthSalary, annualBonus) {
		if (monthSalary >= this.deduction) {
			const monthlyTaxable = annualBonus / 12;
			for (let bracket of this.taxBrackets) {
				if (monthlyTaxable <= bracket.upperBound || bracket.upperBound === undefined) {
					return annualBonus * bracket.rate - bracket.quickDeduction;
				}
			}
		} else {
			const num = (annualBonus - (this.deduction - monthSalary)) / 12;
			for (let bracket of this.taxBrackets) {
				if (num <= bracket.upperBound || bracket.upperBound === undefined) {
					return annualBonus * bracket.rate;
				}
			}
		}
	}
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/581187.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

03-MVC执行流程-参数解析与Model

重要组件 准备Model&#xff0c;Controller Configuration public class WebConfig {ControllerAdvicestatic class MyControllerAdvice {ModelAttribute("b")public String bar() {return "bar";}}Controllerstatic class Controller1 {ResponseStatus(H…

CUDA的基础知识

文章目录 数据精度CUDA概念线程&线程块&线程网络&计算核心GPU规格参数内存 GPU并行方式数据并行流水并行张量并行混合专家系统 数据精度 FP32 是单精度浮点数&#xff0c;用8bit 表示指数&#xff0c;23bit 表示小数&#xff1b;FP16 是半精度浮点数&#xff0c;用…

SpringBoot常用注解与注意事项

Spring Boot 是一个用于快速开发、运行和管理 Spring 应用程序的框架。它大量使用了注解&#xff08;Annotations&#xff09;来简化配置和开发流程。 以下是一些 Spring Boot 中常用的注解及其注意事项&#xff1a; 1.常用注解 SpringBootApplication 这是一个组合注解&#…

OpenHarmony 项目实战:智能体重秤

一、简介 本 demo 基于 OpenHarmony3.1Beta 版本开发&#xff0c;该样例能够接入数字管家应用&#xff0c;通过数字管家应用监测体重秤上报数据&#xff0c;获得当前测量到的体重&#xff0c;身高&#xff0c;并在应用端形成一段时间内记录的体重值&#xff0c;以折线图的形式…

vivado Aurora 8B/10B IP核(4)-数据流接口(Streaming Interface)

Streaming 接口 Transmitting and Receiving Data&#xff08;发送和接收数据&#xff09; 流式接口允许将Aurora 8B/10B通道用作管道。 初始化后&#xff0c;通道始终可用于写入&#xff0c;除非发送时 钟补偿序列。 核心数据传输符合AXI4-Stream协议。当s_axi_tx_tvalid被取…

OpenHarmony 实战开发——分布式购物车案例展示~

简介 分布式购物车demo 模拟的是我们购物时参加满减活动&#xff0c;进行拼单的场景&#xff1b;实现两人拼单时&#xff0c;其他一人添加商品到购物车&#xff0c;另外一人购物车列表能同步更新&#xff0c;且在购物车列表页面结算时&#xff0c;某一人结算对方也能实时知道结…

基于单片机的多功能电子万年历系统

摘要:该题目要求学生综合运用单片机原理、低频电子线路、数字电路与逻辑设计等相关知识,设计完成多功能电子万年历系统。通过完成设计任务,使学生掌握单片机设计开发的基本流程,增强学生动手实践能力,培养学生分析和解决实际问题的能力,为后续课程的学习和工作打下良好基础。 关…

特征的前期融合与后期融合在召回、粗排、精排应用

前期融合&#xff1a;先对所有特征做concat&#xff0c;再输入DNN&#xff0c;一般常见于精排模型 特点&#xff1a;线上推理代价大&#xff0c;若有n个候选item需要做n次模型计算 后期融合&#xff1a;把用户和物品特征分别输入不同的神经网络&#xff0c;不对用户和物品做融…

基于Springboot的玩具租赁系统(有报告)。Javaee项目,springboot项目。

演示视频&#xff1a; 基于Springboot的玩具租赁系统&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构&…

多用户商城系统哪个好,2024多用户商城系统这样选

在2024年选择适合的多用户商城系统是一项至关重要的决策&#xff0c;因为一个优秀的商城系统不仅可以提升用户体验&#xff0c;还能够帮助企业实现业务目标并取得长期成功。然而&#xff0c;在众多的选择中挑选出最适合的一个并不容易&#xff0c;需要综合考虑各种因素&#xf…

static page 项目

static page 项目 作者&#xff1a;不染心 博客地址&#xff1a;https://blog.csdn.net/qq_38234785 源码地址&#xff1a;https://mbd.pub/o/bread/ZpWVlJps 未经允许&#xff0c;不得转载 文档版本v1&#xff0c;还没写完持续更新 一、引言 1. 软件概述和背景 本软件是…

Python-软件设计-“帮助”小孩子自我行为(电脑端看短视频)约束

目录 前言一、方式一&#xff1a;网站访问拦截二、方式二&#xff1a;SW(电脑软件简称)启动拦截三、使用代码的方式将方式一和方式二结合成自动化程序部署四、其他拓展知识1.程序打包2、开机自启文件夹 五、报错的解决方式1、打包成软件后&#xff0c;运行那个软件时不执行或报…

【论文阅读】ViTAE:Vision transformer advanced by exploring intrinsic inductive bias

ViTAE:Vision transformer advanced by exploring intrinsic inductive bias 论文地址摘要&#xff1a;简介&#xff1a;3 方法论3.1 重温视觉变压器3.2 ViTAE3.3 缩减单元3.4 Normal cell3.5 模型细节 4 训练4.1 Implementation details4.2 Comparison with the state-of-the-…

Linxu系统服务管理,systemd知识/进程优先级/平均负载/php进程CPU100%怎么解决系列知识!

shell脚本&#xff08;命令&#xff09;放后台 sleep 300& 放到后台运行&#xff0c;脚本或命令要全路径 nohup&#xff1a;用户推出系统进程继续工作 【功能说明】 nohup 命令可以将程序以忽略挂起信号的方式运行起来&#xff0c;被运行程序的输出信息将不会显示到终端 如…

华为鸿蒙应用--封装通用标题栏:CommonTitleBar(鸿蒙工具)-ArkTs

0、效果图 自定义通用标题栏 支持左、中、右常规标题栏设置&#xff1b; 支持自定义视图&#xff1b; 支持搜索功能 一、CommTitleBar代码 import router from ohos.router; import { Constants } from ../../constants/Constants; import { StyleConstants } from ../../…

PostgreSQL 把多余字段转JSON

核心SQL&#xff1a; json_agg(json_build_object(kgrq, a.kgrq, jgrq, a.jgrq, sgdd, a.sgdd))

理解与使用Linux设备树编译器(DTC)

这里写目录标题 设备树简介设备树编译器&#xff08;DTC&#xff09;安装DTC使用DTC实例&#xff1a;编辑设备树小结参考资料 Linux设备树编译器&#xff08;DTC&#xff09;是一个关键工具&#xff0c;用于处理嵌入式Linux系统中的设备树文件。本文将介绍设备树的概念、DTC的基…

基于Docker + Locust的数据持久化性能测试系统

前几天给大家分享了如何使用Locust进行性能测试&#xff0c;但是在实际使用中会发现存在压测的结果无法保存的问题&#xff0c;比如在分布式部署情况下进行压测&#xff0c;每轮压测完成需要释放资源删除容器重新部署后&#xff0c;这段时间的压测结果就都丢失了&#xff0c;如…

一文讲解Android车载系统camera架构 - EVS

Android的camera开发中&#xff0c;使用最多的是camera2 以及现在Google主推的cameraX 架构&#xff0c;而这两个架构主要针对的是手机移动端上camera的流程。 而今天介绍的EVS(Exterior View System)架构是不同于camera2上的手机架构&#xff0c;针对Automotive的版本&#x…

【源码阅读】 Golang中的database/sql库源码探究

Note&#xff1a;文章待完结 文章目录 前言一、整体目录结构二、driver包1、驱动相关driver.Driver2、驱动连接&#xff1a;driver.Conn3、预处理结构&#xff1a;Stmt4、执行结果 driver.Result5、查询结果&#xff1a;driver.Rows6、driver.RowsAffected7、driver.Value8、Va…