2026/2/15 1:34:52
网站建设
项目流程
江北网站制作,企业 门户型网站区别,有没有专门做设计的网站,高淳建设发展集团网站文件下载地址#xff1a;https://wenshushu.vip/pan/index.php?id36\n\n 提取码#xff1a;7bf9
给大家分享一个用纯Java实现的个人所得税计算模拟器#xff0c;包含完整的GUI界面和核心计算逻辑#xff0c;适合Java学习者和税务计算需求者参考使用。
一、项目简介
…文件下载地址https://wenshushu.vip/pan/index.php?id36\n\n 提取码7bf9给大家分享一个用纯Java实现的个人所得税计算模拟器包含完整的GUI界面和核心计算逻辑适合Java学习者和税务计算需求者参考使用。一、项目简介这是一个使用Java Swing开发的个人所得税计算模拟器模拟了官方个税APP的核心功能包括· 综合所得年度汇算计算· 税率表查询· 专项扣除项目设置· 税务计算结果展示项目特点· 100%纯Java实现无第三方依赖· 完整GUI界面支持用户交互· 详细的代码注释· 遵循2023年最新个税政策二、核心代码实现1. 主程序入口javapackage com.tax.calculator;import javax.swing.*;/*** 个人所得税计算模拟器 - 主程序* author TaxDeveloper* version 1.0*/public class PersonalIncomeTaxApp {public static void main(String[] args) {// 使用SwingUtilities确保线程安全SwingUtilities.invokeLater(() - {try {// 设置系统外观UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());// 创建并显示主窗口TaxCalculatorFrame frame new TaxCalculatorFrame();frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setVisible(true);System.out.println(个人所得税计算模拟器启动成功);} catch (Exception e) {e.printStackTrace();JOptionPane.showMessageDialog(null,程序启动失败: e.getMessage(),错误,JOptionPane.ERROR_MESSAGE);}});}}2. 个税计算核心类javapackage com.tax.calculator;import java.math.BigDecimal;import java.math.RoundingMode;import java.util.HashMap;import java.util.Map;/*** 个人所得税计算器* 实现2023年最新个税计算规则*/public class TaxCalculator {// 税率表年度综合所得private static final TaxBracket[] TAX_BRACKETS {new TaxBracket(0, 36000, 0.03, 0),new TaxBracket(36000, 144000, 0.10, 2520),new TaxBracket(144000, 300000, 0.20, 16920),new TaxBracket(300000, 420000, 0.25, 31920),new TaxBracket(420000, 660000, 0.30, 52920),new TaxBracket(660000, 960000, 0.35, 85920),new TaxBracket(960000, Double.MAX_VALUE, 0.45, 181920)};// 月度专项扣除标准private static final MapString, BigDecimal SPECIAL_DEDUCTIONS new HashMap();static {// 初始化专项扣除标准月度SPECIAL_DEDUCTIONS.put(养老, new BigDecimal(1000));SPECIAL_DEDUCTIONS.put(医疗, new BigDecimal(200));SPECIAL_DEDUCTIONS.put(失业, new BigDecimal(50));SPECIAL_DEDUCTIONS.put(住房, new BigDecimal(1200));SPECIAL_DEDUCTIONS.put(子女教育, new BigDecimal(1000));SPECIAL_DEDUCTIONS.put(继续教育, new BigDecimal(400));SPECIAL_DEDUCTIONS.put(大病医疗, new BigDecimal(8000)); // 年度上限SPECIAL_DEDUCTIONS.put(房贷利息, new BigDecimal(1000));SPECIAL_DEDUCTIONS.put(住房租金, new BigDecimal(1500));SPECIAL_DEDUCTIONS.put(赡养老人, new BigDecimal(2000));}/*** 计算年度个人所得税* param annualIncome 年度总收入* param specialDeductions 专项扣除金额* param additionalDeductions 专项附加扣除* return 计算结果*/public static TaxResult calculateAnnualTax(double annualIncome,double specialDeductions,double additionalDeductions) {// 基本扣除费用年度final double BASIC_DEDUCTION 60000;// 转换为BigDecimal确保精度BigDecimal income BigDecimal.valueOf(annualIncome);BigDecimal special BigDecimal.valueOf(specialDeductions);BigDecimal additional BigDecimal.valueOf(additionalDeductions);BigDecimal basic BigDecimal.valueOf(BASIC_DEDUCTION);// 计算应纳税所得额BigDecimal taxableIncome income.subtract(special).subtract(additional).subtract(basic).max(BigDecimal.ZERO); // 不能为负数// 查找适用税率TaxBracket bracket findTaxBracket(taxableIncome.doubleValue());// 计算应纳税额BigDecimal taxAmount taxableIncome.multiply(BigDecimal.valueOf(bracket.getRate())).subtract(BigDecimal.valueOf(bracket.getQuickDeduction()));// 确保税额不为负数taxAmount taxAmount.max(BigDecimal.ZERO);// 计算税后收入BigDecimal afterTaxIncome income.subtract(taxAmount);return new TaxResult(income.doubleValue(),taxableIncome.doubleValue(),taxAmount.doubleValue(),afterTaxIncome.doubleValue(),bracket);}/*** 根据应纳税所得额查找适用税率*/private static TaxBracket findTaxBracket(double taxableIncome) {for (TaxBracket bracket : TAX_BRACKETS) {if (taxableIncome bracket.getLowerBound() taxableIncome bracket.getUpperBound()) {return bracket;}}return TAX_BRACKETS[TAX_BRACKETS.length - 1];}/*** 获取专项扣除标准*/public static MapString, BigDecimal getSpecialDeductionStandards() {return new HashMap(SPECIAL_DEDUCTIONS);}/*** 税率档次类*/public static class TaxBracket {private final double lowerBound;private final double upperBound;private final double rate;private final double quickDeduction;public TaxBracket(double lowerBound, double upperBound,double rate, double quickDeduction) {this.lowerBound lowerBound;this.upperBound upperBound;this.rate rate;this.quickDeduction quickDeduction;}// Getter方法public double getLowerBound() { return lowerBound; }public double getUpperBound() { return upperBound; }public double getRate() { return rate; }public double getQuickDeduction() { return quickDeduction; }Overridepublic String toString() {return String.format(税率: %.1f%%, 速算扣除数: %.0f, rate * 100, quickDeduction);}}/*** 计算结果类*/public static class TaxResult {private final double totalIncome; // 总收入private final double taxableIncome; // 应纳税所得额private final double taxAmount; // 应纳税额private final double afterTaxIncome; // 税后收入private final TaxBracket taxBracket; // 适用税率档次public TaxResult(double totalIncome, double taxableIncome,double taxAmount, double afterTaxIncome,TaxBracket taxBracket) {this.totalIncome totalIncome;this.taxableIncome taxableIncome;this.taxAmount taxAmount;this.afterTaxIncome afterTaxIncome;this.taxBracket taxBracket;}// Getter方法public double getTotalIncome() { return totalIncome; }public double getTaxableIncome() { return taxableIncome; }public double getTaxAmount() { return taxAmount; }public double getAfterTaxIncome() { return afterTaxIncome; }public TaxBracket getTaxBracket() { return taxBracket; }Overridepublic String toString() {return String.format(计算结果:\n 总收入: ¥%.2f\n 应纳税所得额: ¥%.2f\n 应纳税额: ¥%.2f\n 税后收入: ¥%.2f\n 适用税率: %s,totalIncome, taxableIncome, taxAmount, afterTaxIncome, taxBracket);}}}3. GUI界面实现javapackage com.tax.calculator;import javax.swing.*;import javax.swing.border.TitledBorder;import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.math.BigDecimal;import java.util.Map;/*** 个税计算器主界面*/public class TaxCalculatorFrame extends JFrame {private JTextField incomeField;private JTextField specialDeductionField;private JTextField additionalDeductionField;private JTextArea resultArea;private JComboBoxString deductionTypeCombo;private JLabel standardLabel;public TaxCalculatorFrame() {initUI();initData();}private void initUI() {setTitle(个人所得税计算模拟器 v1.0);setSize(800, 600);setLocationRelativeTo(null);// 主面板JPanel mainPanel new JPanel(new BorderLayout(10, 10));mainPanel.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));// 输入面板mainPanel.add(createInputPanel(), BorderLayout.NORTH);// 结果面板mainPanel.add(createResultPanel(), BorderLayout.CENTER);// 按钮面板mainPanel.add(createButtonPanel(), BorderLayout.SOUTH);add(mainPanel);}private JPanel createInputPanel() {JPanel panel new JPanel(new GridLayout(5, 2, 10, 10));panel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createLineBorder(Color.GRAY),个税计算参数输入,TitledBorder.LEFT,TitledBorder.TOP));// 年度总收入panel.add(new JLabel(年度总收入 (¥):));incomeField new JTextField(120000);panel.add(incomeField);// 专项扣除panel.add(new JLabel(三险一金专项扣除 (¥):));specialDeductionField new JTextField(10000);panel.add(specialDeductionField);// 专项附加扣除panel.add(new JLabel(专项附加扣除 (¥):));additionalDeductionField new JTextField(3000);panel.add(additionalDeductionField);// 扣除标准查询panel.add(new JLabel(扣除项目查询:));JPanel queryPanel new JPanel(new FlowLayout(FlowLayout.LEFT));deductionTypeCombo new JComboBox();queryPanel.add(deductionTypeCombo);standardLabel new JLabel(标准: ¥0);queryPanel.add(standardLabel);panel.add(queryPanel);return panel;}private JScrollPane createResultPanel() {resultArea new JTextArea();resultArea.setEditable(false);resultArea.setFont(new Font(宋体, Font.PLAIN, 14));resultArea.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));JScrollPane scrollPane new JScrollPane(resultArea);scrollPane.setBorder(BorderFactory.createTitledBorder(计算结果));return scrollPane;}private JPanel createButtonPanel() {JPanel panel new JPanel(new FlowLayout(FlowLayout.CENTER, 20, 10));// 计算按钮JButton calculateBtn new JButton(计算个税);calculateBtn.setFont(new Font(微软雅黑, Font.BOLD, 14));calculateBtn.setBackground(new Color(70, 130, 180));calculateBtn.setForeground(Color.WHITE);calculateBtn.setPreferredSize(new Dimension(120, 40));calculateBtn.addActionListener(new ActionListener() {Overridepublic void actionPerformed(ActionEvent e) {calculateTax();}});// 清除按钮JButton clearBtn new JButton(清除结果);clearBtn.setFont(new Font(微软雅黑, Font.PLAIN, 14));clearBtn.setPreferredSize(new Dimension(120, 40));clearBtn.addActionListener(e - clearResults());// 税率表按钮JButton rateTableBtn new JButton(查看税率表);rateTableBtn.setFont(new Font(微软雅黑, Font.PLAIN, 14));rateTableBtn.setPreferredSize(new Dimension(120, 40));rateTableBtn.addActionListener(e - showTaxRateTable());panel.add(calculateBtn);panel.add(clearBtn);panel.add(rateTableBtn);return panel;}private void initData() {// 初始化扣除类型下拉框MapString, BigDecimal standards TaxCalculator.getSpecialDeductionStandards();for (String key : standards.keySet()) {deductionTypeCombo.addItem(key);}// 添加下拉框监听deductionTypeCombo.addActionListener(e - {String selected (String) deductionTypeCombo.getSelectedItem();if (selected ! null) {BigDecimal standard standards.get(selected);standardLabel.setText(String.format(标准: ¥%.2f, standard));}});// 默认选择第一个if (deductionTypeCombo.getItemCount() 0) {deductionTypeCombo.setSelectedIndex(0);}}/*** 执行个税计算*/private void calculateTax() {try {// 获取输入值double income Double.parseDouble(incomeField.getText());double special Double.parseDouble(specialDeductionField.getText());double additional Double.parseDouble(additionalDeductionField.getText());// 验证输入if (income 0 || special 0 || additional 0) {JOptionPane.showMessageDialog(this,输入值不能为负数,输入错误,JOptionPane.WARNING_MESSAGE);return;}// 执行计算TaxCalculator.TaxResult result TaxCalculator.calculateAnnualTax(income, special, additional);// 显示结果displayResult(result);} catch (NumberFormatException ex) {JOptionPane.showMessageDialog(this,请输入有效的数字,输入错误,JOptionPane.ERROR_MESSAGE);}}/*** 显示计算结果*/private void displayResult(TaxCalculator.TaxResult result) {StringBuilder sb new StringBuilder();sb.append( 个人所得税计算结果 \n\n);sb.append(String.format(年度总收入: ¥%,.2f\n, result.getTotalIncome()));sb.append(String.format(应纳税所得额: ¥%,.2f\n, result.getTaxableIncome()));sb.append(String.format(适用税率档次: %s\n, result.getTaxBracket()));sb.append(String.format(应纳个人所得税: ¥%,.2f\n, result.getTaxAmount()));sb.append(String.format(年度税后收入: ¥%,.2f\n\n, result.getAfterTaxIncome()));// 计算月度数据double monthlyTax result.getTaxAmount() / 12;double monthlyAfterTax result.getAfterTaxIncome() / 12;sb.append( 月度数据估算 \n);sb.append(String.format(月度平均纳税: ¥%,.2f\n, monthlyTax));sb.append(String.format(月度税后收入: ¥%,.2f\n\n, monthlyAfterTax));// 添加税务建议sb.append( 税务优化建议 \n);if (result.getTaxableIncome() 0) {sb.append(1. 充分利用专项附加扣除项目\n);sb.append(2. 合理规划年度收入时间分布\n);sb.append(3. 符合条件的捐赠可税前扣除\n);} else {sb.append(当前收入无需缴纳个人所得税\n);}resultArea.setText(sb.toString());resultArea.setCaretPosition(0);}/*** 显示税率表*/private void showTaxRateTable() {StringBuilder sb new StringBuilder();sb.append( 个人所得税税率表综合所得 \n\n);sb.append(级数 | 全年应纳税所得额 | 税率 | 速算扣除数\n);sb.append(----|-----------------|------|----------\n);TaxCalculator.TaxBracket[] brackets new TaxCalculator.TaxBracket[]{new TaxCalculator.TaxBracket(0, 36000, 0.03, 0),new TaxCalculator.TaxBracket(36000, 144000, 0.10, 2520),new TaxCalculator.TaxBracket(144000, 300000, 0.20, 16920),new TaxCalculator.TaxBracket(300000, 420000, 0.25, 31920),new TaxCalculator.TaxBracket(420000, 660000, 0.30, 52920),new TaxCalculator.TaxBracket(660000, 960000, 0.35, 85920),new TaxCalculator.TaxBracket(960000, Double.MAX_VALUE, 0.45, 181920)};for (int i 0; i brackets.length; i) {TaxCalculator.TaxBracket b brackets[i];String range;if (b.getUpperBound() Double.MAX_VALUE) {range String.format(超过%,.0f元, b.getLowerBound());} else {range String.format(%,.0f - %,.0f元,b.getLowerBound(), b.getUpperBound());}sb.append(String.format(%-4d| %-15s | %.1f%% | %,.0f元\n,i 1, range, b.getRate() * 100, b.getQuickDeduction()));}sb.append(\n注应纳税所得额 年度收入 - 6万元(基本扣除) - 专项扣除 - 专项附加扣除\n);resultArea.setText(sb.toString());}/*** 清除结果*/private void clearResults() {resultArea.setText();}}三、使用说明1. 运行环境要求· Java 8或更高版本· 支持Swing的桌面环境2. 编译运行bash# 编译所有Java文件javac -d . com/tax/calculator/*.java# 运行程序java com.tax.calculator.PersonalIncomeTaxApp3. 程序功能演示1. 输入计算参数· 年度总收入· 三险一金专项扣除· 专项附加扣除2. 查询扣除标准· 通过下拉框选择不同扣除项目· 查看各项目扣除标准3. 计算个税· 点击计算个税按钮· 查看详细计算结果4. 查看税率表· 点击查看税率表按钮· 了解各级税率信息四、核心算法说明1. 计算公式应纳税所得额 年度收入 - 60000(基本减除费用) - 专项扣除 - 专项附加扣除应纳税额 应纳税所得额 × 适用税率 - 速算扣除数2. 税率表算法采用逐级累进计算方式通过查找表确定适用税率。五、项目扩展建议1. 数据持久化添加文件保存/加载功能2. 历史记录记录多次计算结果3. 导出功能支持PDF/Excel导出4. 联网更新自动更新税率政策5. 图表展示使用JFreeChart添加图表六、注意事项1. 本程序为模拟器实际报税请以官方系统为准2. 税率政策如有更新需要相应修改代码3. 计算结果仅供参考不构成税务建议七、开源协议本项目采用MIT开源协议允许自由使用、修改和分发。---项目源码已上传至GitHubhttps://github.com/yourusername/tax-calculator欢迎Star和贡献代码八、运行截图由于无法在本文中直接显示图片以下是程序运行效果描述1. 主界面包含输入区、结果显示区和功能按钮2. 计算结果详细展示各项税务数据3. 税率表完整的7级累进税率表---作者TaxDeveloper邮箱tax.devexample.com更新日期2023年10月版权声明本文代码仅供参考学习转载请注明出处