📄 taxcalculator.java
字号:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.*;
import java.util.Hashtable;
import javax.swing.table.*;
import java.util.*;
public class TaxCalculator extends JPanel implements ActionListener{
//基本的变量和对象定义语句
JTextField 免征起点,收入,计算结果;
ButtonGroup group=null;
JButton 计算,重置;
private PrintAndModify printAndModify;
private String infileName="input.dat";
private float serials[][]=new float [10][3];
public TaxCalculator(){}
//构造函数
public TaxCalculator(int language){
免征起点=new JTextField(10);
收入=new JTextField(10);
计算结果=new JTextField(10);
计算结果.setEnabled(false);
group=new ButtonGroup();
计算=new JButton((language==0)?"Calculate":"计算");
重置=new JButton((language==0)?"Reset":"重置");
//添加两个按钮的时间监听
计算.addActionListener(this);
重置.addActionListener(this);
//添加免征起点输入的文本框
Box box1=Box.createHorizontalBox();
box1.add(new JLabel((language==0)?"Enter BaseFree:":"输入免征起点:",JLabel.CENTER));
box1.add(免征起点);
//添加月收入输入的文本框
Box box2=Box.createHorizontalBox();
box2.add(new JLabel((language==0)?"Enter Income:":"输入您的收入:"));
box2.add(收入);
//添加计算结果输出的文本框
Box box3=Box.createHorizontalBox();
box3.add(new JLabel((language==0)?"The Result is :":"计算的结果是:"));
box3.add(计算结果);
//下面代码设置上面三个编辑框的水平和垂直位置,属性,并添加到容器中去
Box boxH=Box.createVerticalBox();
boxH.add(box1);
boxH.add(box2);
boxH.add(box3);
boxH.add(Box.createVerticalGlue());
JPanel pCenter=new JPanel();
pCenter.add(boxH);
setLayout(new BorderLayout());
add(pCenter,BorderLayout.CENTER);
//下面添加计算和重置按钮
JPanel pSouth=new JPanel();
pSouth.add(计算);
pSouth.add(重置);
add(pSouth,BorderLayout.SOUTH);
validate();
}//end of constructor
public void actionPerformed(ActionEvent e)
{
if(e.getSource()==计算){
Calculate();
}
else if(e.getSource()==重置){
免征起点.setText(null);
收入.setText(null);
}
}
public void Calculate(){
Emp t=null;
String []rowNum;
//下面读文件的代码在打印报表时调用过了,体现代码重用的功能,不过还要保证两块代码不要同时读文件哦
printAndModify = new PrintAndModify( "input.dat", "output forinput.dat");
printAndModify.read();
Enumeration e = printAndModify.getEmps().elements();
// dm.addRow((Emp)e.getFieldValues());
int count=0;
//下面代码将printandmodify类读出的文件数据取出并且存在rowNum数组中备用
while ( e.hasMoreElements() ) {
t = (Emp) e.nextElement();
rowNum=new String[3];
rowNum[0]=t.fields[0];
rowNum[1]=t.fields[2];
rowNum[2]=t.fields[3];
serials[count][0]=Float.parseFloat(rowNum[0]);
serials[count][1]=Float.parseFloat(rowNum[1]);
serials[count][2]=Float.parseFloat(rowNum[2]);
count++; //刚开始计数器忘加了,调试了半天,马虎害死人啊
}
//now calculator begins
float basefree=Float.parseFloat(免征起点.getText());
float income=Float.parseFloat(收入.getText());
float calcNum=income-basefree;
float tax=0;
//下面代码是计算的主题部分,主要是计算方法和把字符串转换为float
for (int i=0;i<count;i++){
if(calcNum<=serials[i][1]){
tax+=serials[i][2]*(calcNum-serials[i][0]);
break;
}
else if(calcNum>serials[i][1]){
tax+=serials[i][2]*(serials[i][1]-serials[i][0]);
}
}
if(calcNum>serials[count][0]){
tax+=serials[count][2]*(calcNum-serials[count][0]);
}
//设置结果文本框的内容
String str=Float.toString(tax);
计算结果.setText(str);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -