当前位置:网站首页>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
边栏推荐
- 地铁无线对讲系统
- Wechat applet uses wxml2canvas plug-in to generate some problem records of pictures
- How keras saves and loads the keras model
- EMMC/SD学习小记
- PyTorch 14. Module class
- Error in multi machine and multi card training
- F. The wonderful use of pad
- GIS实战应用案例100篇(五十二)-ArcGIS中用栅格裁剪栅格,如何保持行列数量一致并且对齐?
- 吴恩达编程作业——Logistic Regression with a Neural Network mindset
- unhandled system error, NCCL version 2.7.8
猜你喜欢
GIS实战应用案例100篇(五十三)-制作三维影像图用以作为城市空间格局分析的底图
无盲区、长续航|公专融合对讲机如何提升酒店服务效率?
Chapter 4 pytoch data processing toolbox
传输层重要知识(面试,复试,期末)
利用mysql-binlog恢复数据
SSL / TLS application example
WinForm scroll bar beautification
【点云系列】DeepMapping: Unsupervised Map Estimation From Multiple Point Clouds
以智能生产引领行业风潮!美摄智能视频生产平台亮相2021世界超高清视频产业发展大会
Device Tree 详解
随机推荐
连接orcale
Draw margin curve in arcface
Pep517 error during pycuda installation
PyTorch 13. 嵌套函数和闭包(狗头)
Gather, unsqueeze and other operators when PTH is converted to onnx
[8] Assertion failed: dims. nbDims == 4 || dims. nbDims == 5
PyTorch 11.正则化
江宁医院DMR系统解决方案
Warning "force fallback to CPU execution for node: gather_191" in onnxruntime GPU 1.7
“泉”力以赴·同“州”共济|北峰人一直在行动
海南凤凰机场智能通信解决方案
机器学习——朴素贝叶斯
x509解析
Systrace 解析
广西电网|应急空天一体化通信系统方案
Common regular expressions
应急医疗通讯解决方案|MESH无线自组网系统
AUTOSAR从入门到精通100讲(八十三)-BootLoader自我刷新
Systrace 解析
【技术规范】:如何写好技术文档?