第二次作业
实验目的
1.掌握软件开发的基本流程
2.掌握常用的软件开发方式和工具。
实验内容
1.设计一个包含登录界面的计算器软件
实验所用环境及工具
1.使用Visio绘制流程图
2.使用java和eclipse编写软件
计算器软件的登陆界面流程图如下:

计算器软件功能界面的流程图如下:

在eclipse中实现该计算器软件设计
首先,我们需要创建一个Java项目,并在项目中创建以下类:
1. LoginFrame:登录界面类,包含用户名和密码输入框以及登录按钮。
2. CalculatorFrame:计算器功能实现界面类,包含两个数据输入框、加减乘除按钮和结果输出按钮。
3. Main:主类,用于启动程序。
接下来,我们将为每个类编写代码。
1. LoginFrame类:
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class LoginFrame extends JFrame {
private JTextField usernameField;
private JPasswordField passwordField;
private JButton loginButton;
public LoginFrame() {
setTitle("登录");
setSize(300, 200);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
JPanel panel = new JPanel();
panel.setLayout(new GridLayout(3, 2));
JLabel usernameLabel = new JLabel("用户名:");
usernameField = new JTextField();
JLabel passwordLabel = new JLabel("密码:");
passwordField = new JPasswordField();
loginButton = new JButton("登录");
panel.add(usernameLabel);
panel.add(usernameField);
panel.add(passwordLabel);
panel.add(passwordField);
panel.add(new JLabel()); // 占位符
panel.add(loginButton);
add(panel);
loginButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String username = usernameField.getText();
String password = new String(passwordField.getPassword());
if (checkCredentials(username, password)) {
CalculatorFrame calculatorFrame = new CalculatorFrame();
calculatorFrame.setVisible(true);
dispose();
} else {
JOptionPane.showMessageDialog(null, "用户名或密码错误,请重试!", "错误", JOptionPane.ERROR_MESSAGE);
}
}
});
}
private boolean checkCredentials(String username, String password) {
// 在这里添加合适的用户和密码验证逻辑,例如:
if ("张三".equals(username) && "123456".equals(password)) {
return true;
}
return false;
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new LoginFrame().setVisible(true);
}
});
}
}
2. CalculatorFrame类:
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class CalculatorFrame extends JFrame {
private JTextField input1Field;
private JTextField input2Field;
private JButton addButton;
private JButton subtractButton;
private JButton multiplyButton;
private JButton divideButton;
private JButton resultButton;
private JLabel resultLabel;
public CalculatorFrame() {
setTitle("计算器");
setSize(400, 300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
JPanel panel = new JPanel();
panel.setLayout(new GridLayout(6, 2));
JLabel input1Label = new JLabel("输入1:");
input1Field = new JTextField();
JLabel input2Label = new JLabel("输入2:");
input2Field = new JTextField();
addButton = new JButton("+");
subtractButton = new JButton("-");
multiplyButton = new JButton("*");
divideButton = new JButton("/");
resultButton = new JButton("计算结果");
resultLabel = new JLabel("结果:");
panel.add(input1Label);
panel.add(input1Field);
panel.add(input2Label);
panel.add(input2Field);
panel.add(addButton);
panel.add(subtractButton);
panel.add(multiplyButton);
panel.add(divideButton);
panel.add(new JLabel()); // 占位符
panel.add(resultButton);
panel.add(resultLabel);
addButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
double input1 = Double.parseDouble(input1Field.getText());
double input2 = Double.parseDouble(input2Field.getText());
double result = input1 + input2;
resultLabel.setText("结果:" + result);
}
});
subtractButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
double input1 = Double.parseDouble(input1Field.getText());
double input2 = Double.parseDouble(input2Field.getText());
double result = input1 - input2;
resultLabel.setText("结果:" + result);
}
});
multiplyButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
double input1 = Double.parseDouble(input1Field.getText());
double input2 = Double.parseDouble(input2Field.getText());
double result = input1 * input2;
resultLabel.setText("结果:" + result);
}
});
divideButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
double input1 = Double.parseDouble(input1Field.getText());
double input2 = Double.parseDouble(input2Field.getText());
if (input2 == 0) {
JOptionPane.showMessageDialog(null, "除数不能为0,请重试!", "错误", JOptionPane.ERROR_MESSAGE);
} else {
double result = input1 / input2;
resultLabel.setText("结果:" + result);
}
}
});
resultButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
double input1 = Double.parseDouble(input1Field.getText());
double input2 = Double.parseDouble(input2Field.getText());
double result = input1 + input2;
resultLabel.setText("结果:" + result);
}
});
add(panel);
}
}
3. Main类:
import javax.swing.SwingUtilities;
public class Main {
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new LoginFrame().setVisible(true);
}
});
}
}
运行Main类的main方法来启动程序。程序将显示登录界面,用户可以输入用户名和密码进行登录。
如果登录成功,将显示计算器功能实现界面,用户可以输入两个数据并选择加减乘除操作,然后点击计算结果按钮查看计算结果。
该计算器软件功能测试图如下:
1.登陆界面

2.用户及密码输入显示界面

3.错误用户密码登录显示界面

4.正确用户登录后计算器功能显示界面

5.正确输入计算界面

6.异常输入处理界面


浙公网安备 33010602011771号