JAVA计算个人所得税设计.docx
《JAVA计算个人所得税设计.docx》由会员分享,可在线阅读,更多相关《JAVA计算个人所得税设计.docx(19页珍藏版)》请在冰豆网上搜索。
JAVA计算个人所得税设计
《JAVA语言程序设计》课程设计
——计算个人所得税设计
系别:
计算机系
专业:
计算机科学与技术
年级:
07计算机本科
(2)班
姓名:
钟俊杰
指导教师:
齐勇军
2010年6月28日—2010年6月30日
一、摘要
本设计是一个基于命令行界面的计算个人所得税应用程序,根据用户输入的当月工资薪金总额计算应缴纳的个人所得税额。
为适应未来个人所得税法的可能变化,该程序支持对个人所得税起征点进行调整的功能,并且个人所得税各级税率也允许修改。
利用简单的菜单方式让用户选择所需的功能。
设计中主要用到JFrame、Frame、JTextField、TextField、Button
这几个类。
关键字:
计算个人所得税、JFrame、Frame、JTextField、TextField、Button
二、需求分析
2.1背景介绍
个人所得税,是调整征税机关与自然人之间在个人所得税的征纳与管理过程中所发生的社会关系的法律规范的总称。
凡在中国境内有住所,或者无住所而在中国境内居住满一年的个人,从中国境内和境外取得所得的,以及在中国境内无住所又不居住或者无住所而在境内居住不满一年的个人,从中国境内取得所得的,均为个人所得税的纳税人。
随着社会和经济的发展,计算个人所得税已成为人们日常生活中必不可少的重要内容,因此一个计算所得税系统是人们生活中一个重要的计算工具。
根据此背景,我们开发了一个简单而且容易操作的个人所得税的系统,希望能够给人们带来方便。
2.2功能需求
本系统是一个计算个人所得税的应用程序,用户可以输入的当月工资薪金总额,从而系统会自动计算应缴纳的个人所得税额。
同时,我们根据实际情况,还增加了个人所得税的修改等功能,通过简洁的菜单栏上的操作,用户可以轻松地根据实际情况作出税率等数据的调整,从而达到准确的计算结果。
三、总体设计
根据Java的特点,我们利用类的设计,简单实现查询当前免征基数及税率、更改免征基数、更改税率、个人所得税的计算的功能。
方便用户使用及查询。
在类的设计过程中,主要用到了以下几个类:
GRS:
、Windowclose:
、Calculate:
、XiuGai1、XiuGai2:
四、详细设计
以下是每个类的设计:
GRS:
主体类:
此类是用于显示主窗体中,所有类都是此类的内部类。
Windowclose:
关闭窗体类,这个类的作用是当要关闭一个窗体调用这类
Calculate:
用于计算税,这个类主要用于完成税的计算,这个类继承了ActionListener接口,用于监听calculate按钮产生的事件。
XiuGai1:
修改免征基数
XiuGai2:
修改税率
五:
代码实现及运行情况:
1.用javacApplication运行程序的命令行显示如下界面:
2、登录后进入选择功能界面:
3、进行选择功能:
选择功能1,计算个人所得税。
输入工资,计算出结果
2.进行功能选择:
选择功能2,查询免征基数和税率,查询结果如下图所示:
4、进行功能选择:
选择功能3,修改免征基数,运行结果如下图:
5、进行功能选择:
选择功能4,修改税率。
运行结果如下:
六、代码清单:
importjava.awt.Choice;
importjava.awt.Dialog;
importjava.awt.FlowLayout;
importjava.awt.Frame;
importjava.awt.GridLayout;
importjava.awt.Label;
importjava.awt.List;
importjava.awt.ScrollPane;
importjava.awt.TextField;
importjava.awt.event.ActionEvent;
importjava.awt.event.ActionListener;
importjava.awt.event.WindowAdapter;
importjava.awt.event.WindowEvent;
importjava.lang.String;
importjavax.swing.JButton;
importjavax.swing.JFrame;
importjavax.swing.JLabel;
importjavax.swing.JTextField;
importjava.awt.BorderLayout;
importjava.awt.Frame;
importjava.awt.Label;
importjava.awt.Panel;
importjava.awt.TextField;
importjava.awt.event.ActionEvent;
importjava.awt.event.ActionListener;
importjava.awt.event.WindowAdapter;
importjava.awt.event.WindowEvent;
//用户登录界面
publicclassGRSextendsFrameimplementsActionListener{
privatestaticfinallongserialVersionUID=6347084101268070174L;
staticdoublebase=1600;//免征基数
staticdouble[]taxRate={0.05,0.10,0.15,0.20,0.25};//各级税率
publicstaticvoidmain(String[]args){
Frameframe=newFrame();
newGRS(frame);
}
LabelLabel1=newLabel("用户名:
");
TextFieldtextfieldialog=newTextField("密码:
123");
LabelLabel2=newLabel("用户密码:
");
TextFieldtextfield2=newTextField(10);
LabelLabel5=newLabel("用户地区:
");
Choicechoice=newChoice();
LabelLabel6=newLabel("用户类别:
");
Listlist=newList(2,false);
JButtonbutton1=newJButton("确定");
JButtonbutton2=newJButton("取消");
Dialogdialog=newDialog(this,"提示信息",false);
ScrollPanesp=newScrollPane();
publicGRS(Frameframe){
super("个人所得税查询");
add(Label1);
add(textfieldialog);
add(Label2);
textfield2.setEchoChar('*');
add(textfield2);
add(Label5);
choice.addItem("广东");
choice.addItem("上海");
choice.addItem("北京");
add(choice);
add(Label6);
list.add("普通用户");
list.add("管理员");
sp.add(list);
add(sp);
add(button1);
button1.addActionListener(this);
add(button2);
button2.addActionListener(this);
setLayout(newGridLayout(5,2,5,20));
setBounds(430,430,300,200);
setResizable(false);
setVisible(true);
addWindowListener(newwindowclose());
}
publicclasswindowcloseextendsWindowAdapter{
publicvoidwindowClosing(WindowEvente){
System.exit(0);
}
}
//主菜单
publicvoidactionPerformed(ActionEvente){
if(e.getActionCommand().equals("确定")){
if(textfield2.getText().trim().equals("123")){
addWindowListener(newwindowclose());
JFramef=newJFrame("主菜单");
JButtonbutton5=newJButton("1:
计算个人所得税");
JButtonbutton6=newJButton("2:
查询免征基数和税率");
JButtonbutton7=newJButton("3:
修改免征基数");
JButtonbutton8=newJButton("4:
修改税率");
f.add(button5);
f.add(button6);
f.add(button7);
f.add(button8);
button5.addActionListener(newButAL());
button6.addActionListener(newChaXun());
button7.addActionListener(newXiuGai1());
button8.addActionListener(newXiuGai2());
f.setLayout(newGridLayout(2,2,5,20));
f.setBounds(385,420,400,220);
f.setResizable(false);
f.setVisible(true);
}
else{
dialog.setLayout(newFlowLayout(FlowLayout.CENTER));
Labeltf=newLabel("对不起,密码错误,请重试");
dialog.add(tf);
dialog.setBounds(455,430,250,60);
dialog.setResizable(false);
dialog.setVisible(true);
dialog.addWindowListener(newwindowclose());
}
}else
System.exit(0);
}
//计算个人所得税
privateclassButALimplementsActionListener{
doubleincome=-1;//个人收入
doublerevenue=-1;//个人所得税
JTextFieldtestField;
JTextFieldresultField;
GRSr;
publicvoidactionPerformed(ActionEventevent){
JFramef=newJFrame("个人所得税的计算");
JLabeljl=newJLabel("请输入你的工资:
");
JLabelresult=newJLabel("计算的结果:
");
testField=newJTextField(5);
resultField=newJTextField(5);
JButtoncalculate=newJButton("计算");
calculate.addActionListener(newCalculate());
f.add(jl);
f.add(testField);
f.add(calculate);
f.add(result);
f.add(resultField);
f.setLayout(newGridLayout(2,3,3,20));
f.setBounds(380,500,400,100);
f.setResizable(false);
f.setVisible(true);
}
privateclassCalculateimplementsActionListener{
@Override
publicvoidactionPerformed(ActionEvente){
Strings1=testField.getText().trim();
income=Double.valueOf(s1);
doubletaxible=income-r.base;
if(taxible>20000)
revenue=(taxible-20000)*r.taxRate[4]+15000
*r.taxRate[3]+3000*r.taxRate[2]+1500
*r.taxRate[1]+500*r.taxRate[0];
elseif(taxible>5000)
revenue=(taxible-5000)*r.taxRate[3]+3000*r.taxRate[2]
+1500*r.taxRate[1]+500*r.taxRate[0];
elseif(taxible>2000)
revenue=(taxible-2000)*r.taxRate[2]+1500*r.taxRate[1]
+500*r.taxRate[0];
elseif(taxible>500)
revenue=(taxible-500)*r.taxRate[1]+500*r.taxRate[0];
elseif(taxible>0)
revenue=taxible*r.taxRate[0];
elseif(taxible<=0)
revenue=0;
Strings2=String.valueOf(revenue);
resultField.setText(s2);
}
}
}
//查询免征基数和税率
privateclassChaXunimplementsActionListener{
GRSr;
@Override
publicvoidactionPerformed(ActionEvente){
finalJFramef=newJFrame("查询");//窗体1
JTextFieldf1=newJTextField();
JTextFieldf2=newJTextField();
JTextFieldf3=newJTextField();
JTextFieldf4=newJTextField();
JTextFieldf5=newJTextField();
JTextFieldf6=newJTextField();
f.add(f1);
f1.setText("免征基数为:
"+String.valueOf(r.base));//输入免征基数
f.setLayout(newGridLayout(6,1,3,5));
f.add(f2);
f.add(f3);
f.add(f4);
f.add(f5);
f.add(f6);
f2.setText("一级税率为:
"+r.taxRate[0]);
f3.setText("二级税率为:
"+r.taxRate[1]);
f4.setText("三级税率为:
"+r.taxRate[2]);
f5.setText("四级税率为:
"+r.taxRate[3]);
f6.setText("五级税率为:
"+r.taxRate[4]);
f.addWindowListener(newWindowAdapter(){
@Override
publicvoidwindowClosing(WindowEvente){
f.setVisible(false);
}
});
f.setBounds(385,420,400,200);
f.setResizable(false);
f.setVisible(true);
}
}
//修改免征基数
privateclassXiuGai1implementsActionListener{
GRSr;
TextFieldtf=newTextField(10);
Framef=newFrame("修改免征基数");
@Override
publicvoidactionPerformed(ActionEvente){
f.add(newLabel("现在的免征基数为:
"+r.base),BorderLayout.NORTH);
f.add(newLabel("请输入新的免征基数:
"),BorderLayout.CENTER);
f.add(tf,BorderLayout.EAST);
tf.addActionListener(newTextFieldListener());
f.addWindowListener(newWindowAdapter(){
@Override
publicvoidwindowClosing(WindowEvente){
f.setVisible(false);
}
});
f.setBounds(425,460,300,120);
f.setResizable(false);
f.setVisible(true);
}
privateclassTextFieldListenerimplementsActionListener{
@Override
publicvoidactionPerformed(ActionEvente){
Strings=tf.getText().trim();
r.base=Double.valueOf(s);
tf.setText("修改成功!
");
}
}
}
//修改税率
privateclassXiuGai2implementsActionListener{
intrateLevel=0;//客户要修改的税率级别
doublenewTaxRate=0;//修改后的税率
GRSr;
Framef=null;
TextFieldtf1=null;
TextFieldtf2=null;
@Override
publicvoidactionPerformed(ActionEvente){
f=newFrame("修改税率");//创建窗体
tf1=newTextField(6);
tf2=newTextField(6);
Panelp1=newPanel();
Panelp2=newPanel();
JButtonok1=newJButton("确定");
ok1.addActionListener(newTF1Listener());
p1.add(newLabel("请输入要修改的税率的级别:
"),BorderLayout.WEST);
p1.add(tf1,BorderLayout.EAST);
p1.add(ok1,BorderLayout.EAST);
f.add(p1,BorderLayout.NORTH);
JButtonok2=newJButton("确定");
ok2.addActionListener(newTF2Listener());
f.addWindowListener(newWindowAdapter(){
@Override
publicvoidwindowClosing(WindowEvente){
f.setVisible(false);
}
});
p2.add(newLabel("请输入你确定修改后的税率:
"),BorderLayout.WEST);
p2.add(tf2,BorderLayout.EAST);
p2.add(ok2);
f.add(p2,BorderLayout.SOUTH);
f.setLayout(newGridLayout(2,3,3,15));
f.setBounds(425,46