当前位置:网站首页>golang实现一个带Web界面的五险一金计算器
golang实现一个带Web界面的五险一金计算器
2022-04-23 06:15:00 【玩哈哈527】
运行代码,浏览器输入链接localhost:8090/page
package main
import (
"fmt"
"log"
"net/http"
"strconv"
)
// 向客户端写入这些数据,以便客户端可以填写文本并提交
var indexHTML = `<html> <head> <meta http-equiv="Content-type" content="text/html; charset=utf-8"> <title>测试</title> </head> <body> <form action="/page" method="post"> 月基本工资:<br> <input name="monthpay" type="text"><br> 个人养老保险税率:<input name="EN" type="text"> 企业养老保险税率:<input name="EEN" type="text"><br> 个人医疗保险税率:<input name="ME" type="text"> 企业医疗保险税率:<input name="EME" type="text"><br> 个人工伤保险税率:<input name="EM" type="text"> 企业工伤保险税率:<input name="EEM" type="text"><br> 个人生育保险税率:<input name="MA" type="text"> 企业生育保险税率:<input name="EMA" type="text"><br> 个人失业保险税率:<input name="UN" type="text"> 企业失业保险税率:<input name="EUN" type="text"><br> 个人公积金税率: <input name="AF" type="text"> 企业公积金税率: <input name="AF" type="text"><br> <input type="submit" value="提交"> </form> </body> </html>`
// 用于将页面重定向到主页
var redirectHTML = `<html> <head> <meta http-equiv="Content-type" content="text/html; charset=utf-8"> <meta http-equiv="Refresh" content="0; url={
{.}}"> </head> <body></body> </html>`
// 处理主页请求
func index(w http.ResponseWriter, r *http.Request) {
// 向客户端写入我们准备好的页面
fmt.Fprintf(w, indexHTML)
}
// 处理客户端提交的数据
func page(w http.ResponseWriter, r *http.Request) {
//月基本工资
var monthpay float64
//月数
var monthnum float64 = 12
//养老保险
//var EN float64
var ratio_EN, Eratio_EN float64
//医疗保险
//var ME float64
var ratio_ME, Eratio_ME float64
//失业保险
//var UN float64
var ratio_UN, Eratio_UN float64
//工伤保险
//var EM float64
var ratio_EM, Eratio_EM float64
//生育保险
//var MA float64
var ratio_MA, Eratio_MA float64
//公积金
//var AF float64
var ratio_AF, Eratio_AF float64
//per个人所得税pertax个人所得税率,su速扣计算数
var per,pertax,su float64
// 我们规定必须通过 POST 提交数据
if r.Method == "POST" {
// 解析客户端请求的信息
if err := r.ParseForm(); err != nil {
log.Println(err)
}
// 获取客户端输入的内容
ENS := r.Form.Get("EN")
EMS := r.Form.Get("EM")
UNS := r.Form.Get("UN")
MAS := r.Form.Get("MA")
AFS := r.Form.Get("AF")
MES := r.Form.Get("ME")
monthpayS := r.Form.Get("monthpay")
EENS := r.Form.Get("EEN")
EEMS := r.Form.Get("EEM")
EUNS := r.Form.Get("EUN")
EMAS := r.Form.Get("EMA")
EAFS := r.Form.Get("EAF")
EMES := r.Form.Get("EME")
//userText := r.Form.Get("usertext")
ratio_EN, _ = strconv.ParseFloat(ENS, 64)
ratio_EM, _ = strconv.ParseFloat(EMS, 64)
ratio_UN, _ = strconv.ParseFloat(UNS, 64)
ratio_MA, _ = strconv.ParseFloat(MAS, 64)
ratio_AF, _ = strconv.ParseFloat(AFS, 64)
ratio_ME, _ = strconv.ParseFloat(MES, 64)
monthpay, _ = strconv.ParseFloat(monthpayS, 64)
Eratio_EN, _ = strconv.ParseFloat(EENS, 64)
Eratio_EM, _ = strconv.ParseFloat(EEMS, 64)
Eratio_UN, _ = strconv.ParseFloat(EUNS, 64)
Eratio_MA, _ = strconv.ParseFloat(EMAS, 64)
Eratio_AF, _ = strconv.ParseFloat(EAFS, 64)
Eratio_ME, _ = strconv.ParseFloat(EMES, 64)
switch{
case monthpay<=5000:pertax=0;su=0
case monthpay>5000&&monthpay<=8000:pertax=0.03;su=0
case monthpay>8000&&monthpay<=17000:pertax=0.1;su=210
case monthpay>17000&&monthpay<=30000:pertax=0.2;su=1410
case monthpay>30000&&monthpay<=40000:pertax=0.25;su=2660
case monthpay>40000&&monthpay<=60000:pertax=0.3;su=4410
case monthpay>60000&&monthpay<=85000:pertax=0.35;su=7160
case monthpay>85000:pertax=0.45;su=15160
}
per=(monthpay-5000)*pertax-su
//年基本工资
YearBasePay := yearbasepay(monthpay, monthnum)
fmt.Println(YearBasePay)
//养老税后
After_tax_endowment := tax_endowment(monthpay, ratio_EN/100)
tax_Eendowment := tax_endowment(monthpay, Eratio_EN/100)
//生育税后
After_tax_maternity := tax_maternity(monthpay, ratio_MA/100)
tax_Ematernity := tax_maternity(monthpay, Eratio_MA/100)
//失业税后
After_tax_unemployment := tax_unemployment(monthpay, ratio_UN/100)
tax_Eunemployment := tax_unemployment(monthpay, Eratio_UN/100)
//医疗税后
After_tax_medical := tax_medical(monthpay, ratio_ME/100)
tax_Emedical := tax_medical(monthpay, Eratio_ME/100)
//工伤税后
After_tax_employment_injury := tax_employment_injury(monthpay, ratio_EM/100)
tax_Eemployment_injury := tax_employment_injury(monthpay, Eratio_EM/100)
//公积金税后
After_tax_accumulation_fund := tax_accumulation_fund(monthpay, ratio_AF/100)
tax_Eaccumulation_fund := tax_accumulation_fund(monthpay, Eratio_AF/100)
//税后
After_taxmonth := After_tax_month(monthpay, After_tax_accumulation_fund, After_tax_endowment, After_tax_maternity, After_tax_unemployment, After_tax_medical, After_tax_employment_injury,per)
//After_tax_year:=YearBasePay-(After_tax_accumulation_fund+After_tax_endowment+After_tax_maternity+After_tax_unemployment+After_tax_medical+After_tax_employment_injury)
E_tax:=Etax(tax_Eaccumulation_fund, tax_Eendowment, tax_Ematernity, tax_Eunemployment, tax_Emedical, tax_Eemployment_injury)
fmt.Println(After_taxmonth)
// 将内容反馈给客户端
fmt.Fprintf(w, "月基本工资 %f,你输入的内容是:%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,月税后工资:%f,企业缴纳金额:%f",
monthpay, ratio_EN, Eratio_EN, ratio_ME, Eratio_ME, ratio_EM, Eratio_EM, ratio_MA, Eratio_MA, ratio_UN, Eratio_UN, ratio_AF, Eratio_AF, After_taxmonth,E_tax)
} else {
// 如果不是通过 POST 提交的数据,则将页面重定向到主页
fmt.Fprintf(w, redirectHTML)
}
}
func main() {
//ROUND(MAX((Q5-5000)*{0.03;0.1;0.2;0.25;0.3;0.35;0.45}-{0;210;1410;2660;4410;7160;15160},0),2)
http.HandleFunc("/", index) // 设置访问的路由
http.HandleFunc("/page", page) // 设置访问的路由
err := http.ListenAndServe(":8090", nil) // 设置监听的端口
if err != nil {
log.Fatal("ListenAndServe: ", err)
}
}
func yearbasepay(monthbasepay float64, monthnum float64) float64 {
YaerBasepay := monthbasepay * monthnum
return YaerBasepay
}
func tax_endowment(monthpay, ratio_endowment_insurance float64) float64 {
res := monthpay * ratio_endowment_insurance
return res
}
func tax_medical(monthpay, ratio_medical_insurance float64) float64 {
res := monthpay * ratio_medical_insurance
return res
}
func tax_unemployment(monthpay, ratio_unemployment_insurance float64) float64 {
res := monthpay * ratio_unemployment_insurance
return res
}
func tax_maternity(monthpay, ratio_maternity_insurance float64) float64 {
res := monthpay * ratio_maternity_insurance
return res
}
func tax_accumulation_fund(monthpay, ratio_accumulation_fund float64) float64 {
res := monthpay * ratio_accumulation_fund
return res
}
func tax_employment_injury(monthpay, ratio_employment_injury float64) float64 {
res := monthpay * ratio_employment_injury
return res
}
func After_tax_month(monthpay, tax_accumulation_fund, tax_endowment, tax_maternity, tax_unemployment, tax_medical, tax_employment_injury,per float64) float64 {
res := monthpay - (tax_accumulation_fund + tax_endowment + tax_maternity + tax_unemployment + tax_medical + tax_employment_injury)-per
return res
}
func Etax(tax_Eaccumulation_fund, tax_Eendowment, tax_Ematernity, tax_Eunemployment, tax_Emedical, tax_Eemployment_injury float64) float64 {
res := tax_Eaccumulation_fund + tax_Eendowment + tax_Ematernity + tax_Eunemployment + tax_Emedical + tax_Eemployment_injury
return res
}
版权声明
本文为[玩哈哈527]所创,转载请带上原文链接,感谢
https://blog.csdn.net/qq_28058509/article/details/120996983
边栏推荐
猜你喜欢

RISCV MMU 概述

Use originpro express for free

基于openmv的无人机Apriltag动态追踪降落完整项目资料(labview+openmv+apriltag+正点原子四轴)

ARMCC/GCC下的stack protector

F. The wonderful use of pad

关于短视频技术轮廓探讨

以智能生产引领行业风潮!美摄智能视频生产平台亮相2021世界超高清视频产业发展大会

AMBA协议学习小记

AUTOSAR从入门到精通100讲(八十一)-AUTOSAR基础篇之FiM

GIS实战应用案例100篇(五十二)-ArcGIS中用栅格裁剪栅格,如何保持行列数量一致并且对齐?
随机推荐
enforce fail at inline_container.cc:222
go语言切片操作
网络层重要知识(面试、复试、期末)
unhandled system error, NCCL version 2.7.8
Unable to determine the device handle for GPU 0000:02:00.0: GPU is lost.
GIS实战应用案例100篇(五十二)-ArcGIS中用栅格裁剪栅格,如何保持行列数量一致并且对齐?
各类日期转化的utils
Systrace parsing
PyTorch 19. PyTorch中相似操作的区别与联系
armv8m(cortex m33) MPU实战
LPDDR4笔记
1.1 pytorch and neural network
PyTorch 13. Nested functions and closures (dog head)
防汛救灾应急通信系统
The simplest and complete example of libwebsockets
大型体育赛事无线通信系统
imx6ull-qemu 裸机教程1:GPIO,IOMUX,I2C
Infrared sensor control switch
社区版阿里MQ普通消息发送订阅Demo
广西电网|应急空天一体化通信系统方案