专项附加扣除简易系统的设计与实现 系统管理员主要需求如下
(1)系统登录
(2)人员专项附加扣除信息
包括继续教育,大病医疗,住房贷款信息,住房租金,赡养老 人,子女教育,3岁以下婴幼儿 照护等信息。采集信息样式可参考: https://wcdn.etax.chinatax.gov.cn/bbxzdownload/declare/zxfjkcxxcj/grsdszxfjkcxxb.pdf 或http://gz.bendibao.com/life/2019110/247224.shtml
(3)人员年度专项附加扣除额
详细扣除规则见: https://www.shui5.cn/article/81/124070.html
(4)继续教育方面
每年定额扣除3600元(继续教育)或4800元(学历教育)或8400(继续 +学历教育)。
(5)大病医疗方面
超过1.5万元的部分每年限额8万元据实扣除
(6)住房租金与房贷利息方面
住房租金与房贷利息只能选择一项进行扣除首套房贷款利息方面,每年按1.2万元标准 定额扣 除;住房租金方面,根据不同城市标准定,较高每月定额扣除1500元
(7)纳税方面
纳税人为独生子女的,按照每月3000元的标准定额扣除;非独生子女需要填写共同赠养 人,每人分摊的额度不能超过每月1500元;可以由赡养人均摊或约定分摊,也可以由被赡养人指 定分摊。
(8)子女教育方面
每个子女每月2000元的标准定额扣除。
(9)3岁以下婴幼儿子女
纳税人照护3岁以下婴幼儿子女的相关支出,按照每个婴幼儿每月2000元的标准定额 扣除。
(10)汇总计算
附加税单项计算、汇总计算、计算结果的保存和查询 可参考:“个人所得税”APP的“专项附加扣除 填报”模块
//部分代码如下,全码V:ershiqijian
package login;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
//登录界面
public class Login extends JFrame implements ActionListener {//增加监听事件
///label组件数组
JLabel welcome=new JLabel("欢迎使用专项附加简易扣除系统");//创建欢迎界面JLabel。
JLabel user, password;//用户、密码
//单行文本框
JTextField username;//用户名框
JPasswordField passwordField;//密码框
JButton loginButton;//登录按钮
JButton button;
//定义一个卡片式布局
CardLayout cardLayout = new CardLayout();//扑克牌,每次显示最前面的一张
JPanel card;
JPanel cardPanel,cardPanel2,cardPanel3,cardPanel4;
//界面上需要放置多个组件时
JTabbedPane jTabbedPane,jTabbedPane2;
Users users;
Font font = new Font("宋体", Font.BOLD|Font.ITALIC, 20);
public Login(){
init();//在文档加载完后调用函数,不调用不执行
}
private void init() {//初始化界面、该函数为初始化功能
welcome.setFont(font);//设置字体的方法
setTitle("专项附加简易扣除系统 ");
getContentPane().setLayout(new BorderLayout());
user = new JLabel("name");
password = new JLabel("password");
button = new JButton("Reset");
card = new JPanel(cardLayout);
JPanel panel1 = new JPanel(new BorderLayout());
username = new JTextField();
passwordField = new JPasswordField();
loginButton = new JButton("Login!");
loginButton.addActionListener(this);
JPanel titlepanel = new JPanel(new FlowLayout());//标题面板
JPanel loginpanel = new JPanel();//登录面板
loginpanel.setLayout(null);//关闭窗口布局管理器,使后面的setBounds生效
//设定窗体的偏移量
welcome.setBounds(300,100,400,25);
user.setBounds(340, 170, 100, 20);
password.setBounds(340, 210, 100, 20);
username.setBounds(400, 170, 120, 20);
passwordField.setBounds(400, 210, 120, 20);
loginButton.setBounds(340, 250, 80, 25);
button.setBounds(440,250,80,25);
//把页面各项信息添加到登录login面板上
loginpanel.add(welcome);
loginpanel.add(user);
loginpanel.add(password);
loginpanel.add(username);
loginpanel.add(passwordField);
loginpanel.add(loginButton);
loginpanel.add(button);
panel1.add(titlepanel, BorderLayout.NORTH);
panel1.add(loginpanel, BorderLayout.CENTER);
card.add(panel1, "login");
getContentPane().add(card);//初始化一个容器 ,在容器上添加控件
setBounds(300, 100, 900, 600);
setVisible(true);//显示JFrame对象
button.addActionListener(new ActionListener(){//为重置按钮添加监听事件
//同时清空name、password的数据
public void actionPerformed(ActionEvent arg0) {
// TODO 自动生成方法存根
username.setText("");
passwordField.setText("");
}
});
}
@Override
public void actionPerformed(ActionEvent e) {
boolean flag=false;//用来标志用户是否正确
if (e.getSource() == loginButton) {
ArrayList<Users> list = new CheckUsers().getUsers();//获得所有用户信息
for (int i = 0; i < list.size(); i++) {//遍历所有用户信息,以此来判断输入的信息是否正确
users = list.get(i);
String passwordStr = new String(passwordField.getPassword());
if (username.getText().equals(users.getName()) && passwordStr.equals(users.getPassword())) {
JOptionPane.showMessageDialog(null, "欢迎(管理员)"+username.getText()+"登录", "专项附加简易扣除系统", JOptionPane.PLAIN_MESSAGE);
//当输入的信息正确时,就开始加载选项卡界面,并把选项卡界面加入到卡片布局器中
ManagePeople ManagePeople =new ManagePeople(users);
ContinueEducation conEdu=new ContinueEducation(users);
ManageMedical mame=new ManageMedical(users);
ManageHousing maho=new ManageHousing(users);
ManageTaxes mata1=new ManageTaxes(users);
ManageChildrenEducation machedu=new ManageChildrenEducation(users);
ManageBaby maba=new ManageBaby(users);
Summary sumall=new Summary(users);
ManageUsers manageUsers =new ManageUsers(users);
Exit exit=new Exit();
cardPanel = new JPanel();
cardPanel2 = new JPanel();
cardPanel3 = new JPanel();
cardPanel4 = new JPanel();
jTabbedPane = new JTabbedPane(JTabbedPane.LEFT);
jTabbedPane.add("人员费用信息显示", ManagePeople);
jTabbedPane.add("继续教育管理", conEdu);
jTabbedPane.add("大病医疗管理", mame);
jTabbedPane.add("住房租金管理", maho);
jTabbedPane.add("纳税管理", mata1);
jTabbedPane.add("子女教育管理", machedu);
jTabbedPane.add("婴幼管理", maba);
jTabbedPane.add("汇总计算", sumall);
jTabbedPane.add("登录人员管理", manageUsers);
jTabbedPane.add("退出登录", exit);
cardPanel.add(jTabbedPane);
jTabbedPane2 = new JTabbedPane(JTabbedPane.TOP);
jTabbedPane2.add("系统操作页面",cardPanel);
cardPanel2.add(jTabbedPane2);
card.add(cardPanel2, "info");
cardLayout.show(card, "info");//输入信息正确就显示操作界面,否则重新输入正确信息
flag = true;
break;//如果信息正确就退出遍历,提高效率
}
}
if(!flag){//信息不正确,重新输入
JOptionPane.showMessageDialog(null, "请输入正确的用户名或密码", "警告",JOptionPane.WARNING_MESSAGE);
username.setText("");//让文本框显示我要的信息
passwordField.setText("");
}
}
}
}
/*...*/