编写复数运算的Application程序:
(1)设计复数类Complex,具有实部、虚部两个属性,能完成复数的加、减、乘三种运算。
(2)使用Application创建一图形用户界面程序,界面如下,程序运行时,用户可在“复数1”后面的对应文本框中输入第一个复数的实部和虚部,在“复数2”后面的对应文本框中输入第二个复数的实部和虚部,在“运算符”后面的文本框中输入“+”或“-”或“*”运算符号,当用户按下“=”按钮后,程序调用复数类Complex的对应方法,将运算结果(计算得到的复数的实部和虚部)显示在其后排列的两个文本框中。
//复数类 ----->>
package practice2;
public class Complex {
private double real_part;
private double vitual_part;
public double getReal_part() {
return real_part;
}
public double getVitual_part() {
return vitual_part;
}
public Complex(double real_part, double vitual_part) {
super();
this.real_part = real_part;
this.vitual_part = vitual_part;
}
public Complex Plus(Complex c1, Complex c2) {
Complex r = new Complex(0, 0);
r.real_part = c1.real_part+c2.real_part;
r.vitual_part = c1.vitual_part+c2.vitual_part;
return r;
}
public Complex Minus(Complex c1, Complex c2) {
Complex r = new Complex(0, 0);
r.real_part = c1.real_part - c2.real_part;
r.vitual_part = c1.vitual_part - c2.vitual_part;
return r;
}
public Complex Multiply(Complex c1, Complex c2) {
Complex r = new Complex(0, 0);
r.real_part = c1.real_part*c2.real_part - c1.vitual_part*c2.vitual_part;
r.vitual_part = c1.real_part*c2.vitual_part+c1.vitual_part*c2.real_part;
return r;
}
}
//复数窗口
package practice2;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JButton;
import javax.swing.JTextField;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
public class ComplexWindow {
private JFrame frame;
private JTextField R1;
private JTextField V1;
private JTextField operator;
private JTextField R2;
private JTextField V2;
private JTextField R3;
private JTextField V3;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
ComplexWindow window = new ComplexWindow();
window.frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the application.
*/
public ComplexWindow() {
initialize();
}
/**
* Initialize the contents of the frame.
*/
private void initialize() {
frame = new JFrame();
frame.setBounds(100, 100, 450, 300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(null);
JLabel label = new JLabel("\u590D\u65701\uFF1A");
label.setBounds(14, 31, 72, 18);
frame.getContentPane().add(label);
JLabel label_1 = new JLabel("\u8FD0\u7B97\u7B26\uFF1A");
label_1.setBounds(14, 87, 72, 25);
frame.getContentPane().add(label_1);
JLabel label_2 = new JLabel("\u590D\u65702\uFF1A");
label_2.setBounds(14, 149, 72, 18);
frame.getContentPane().add(label_2);
JButton button = new JButton("=");
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
Complex c1 = new Complex(Double.parseDouble(R1.getText()), Double.valueOf(V1.getText()));
Complex c2 = new Complex(Double.parseDouble(R2.getText()), Double.valueOf(V2.getText()));
Complex result = null;
if(operator.getText().equals("+")) {
result = c1.Plus(c1, c2);
}
else if(operator.getText().equals("-")) {
result = c1.Minus(c1, c2);
}
else if(operator.getText().equals("*")) {
result = c1.Multiply(c1, c2);
}
R3.setText(String.valueOf(result.getReal_part()));
V3.setText(String.valueOf(result.getVitual_part()));
}
});
button.setBounds(14, 198, 64, 27);
frame.getContentPane().add(button);
R1 = new JTextField();
R1.setBounds(100, 28, 86, 24);
frame.getContentPane().add(R1);
R1.setColumns(10);
JLabel label_3 = new JLabel("+");
label_3.setBounds(214, 31, 8, 18);
frame.getContentPane().add(label_3);
JLabel lblI = new JLabel("i");
lblI.setBounds(346, 31, -4, 18);
frame.getContentPane().add(lblI);
V1 = new JTextField();
V1.setBounds(246, 28, 86, 24);
frame.getContentPane().add(V1);
V1.setColumns(10);
JLabel lblI_1 = new JLabel("i");
lblI_1.setBounds(346, 31, 28, 18);
frame.getContentPane().add(lblI_1);
operator = new JTextField();
operator.setBounds(180, 87, 86, 24);
frame.getContentPane().add(operator);
operator.setColumns(10);
R2 = new JTextField();
R2.setBounds(100, 146, 86, 24);
frame.getContentPane().add(R2);
R2.setColumns(10);
V2 = new JTextField();
V2.setBounds(246, 146, 86, 24);
frame.getContentPane().add(V2);
V2.setColumns(10);
JLabel label_4 = new JLabel("+");
label_4.setBounds(211, 149, 35, 18);
frame.getContentPane().add(label_4);
JLabel lblI_2 = new JLabel("i");
lblI_2.setBounds(346, 149, 72, 18);
frame.getContentPane().add(lblI_2);
R3 = new JTextField();
R3.setEditable(false);
R3.setBounds(100, 199, 86, 24);
frame.getContentPane().add(R3);
R3.setColumns(10);
V3 = new JTextField();
V3.setEditable(false);
V3.setBounds(246, 199, 86, 24);
frame.getContentPane().add(V3);
V3.setColumns(10);
JLabel label_5 = new JLabel("+");
label_5.setBounds(211, 202, 35, 18);
frame.getContentPane().add(label_5);
JLabel lblI_3 = new JLabel("i");
lblI_3.setBounds(346, 202, 72, 18);
frame.getContentPane().add(lblI_3);
}
}