第二次作业

发布时间 2023-11-28 19:45:13作者: 小熊吹奶盖

[实验目的]

1.掌握软件开发的基本流程

2.掌握常用的软件开发方式和工具。

[实验内容]

设计一个包含登录界面的计算器软件,该软件可以实现第一次作业中的全部功能。

[实验要求]

完成软件的UI设计、使用Visio设计软件中所涉及的所有流程图。

一、登录界面设计

 1 import javax.swing.*;
 2 import java.awt.*;
 3 import java.awt.event.ActionEvent;
 4 import java.awt.event.ActionListener;
 5 public class CalculatorUI extends JFrame {
 6     private JTextField textField;
 7     private JButton loginButton;
 8     public CalculatorUI() {
 9         setTitle("Calculator");
10         setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
11         setResizable(false);
12         setSize(300, 400);
13         setLocationRelativeTo(null);
14         JPanel panel = new JPanel();
15         panel.setLayout(new BorderLayout());
16         textField = new JTextField();
17         panel.add(textField, BorderLayout.NORTH);
18         JPanel buttonPanel = new JPanel();
19         buttonPanel.setLayout(new GridLayout(4, 4));
20         String[] buttonLabels = {
21                 "7", "8", "9", "/",
22                 "4", "5", "6", "*",
23                 "1", "2", "3", "-",
24                 "0", ".", "=", "+"
25         };
26         for (String label : buttonLabels) {
27             JButton button = new JButton(label);
28             button.addActionListener(new ButtonClickListener());
29             buttonPanel.add(button);
30         }
31         panel.add(buttonPanel, BorderLayout.CENTER);
32         loginButton = new JButton("登录");
33         loginButton.addActionListener(new ButtonClickListener());
34         panel.add(loginButton, BorderLayout.SOUTH);
35         add(panel);
36     }

登录界面如下

二、账号与密码登录

 1 private class ButtonClickListener implements ActionListener {
 2         public void actionPerformed(ActionEvent e) {
 3             String command = e.getActionCommand();
 4             if (command.equals("=")) {
 5                 // 计算结果
 6                 String expression = textField.getText();
 7                 double result = calculate(expression);
 8                 textField.setText(String.valueOf(result));
 9             } else if (command.equals("登录")) {
10                 // 验证账户和密码
11                 String username = "童佳楠";
12                 String password = "1234";
13                 String inputUsername = JOptionPane.showInputDialog("请输入账户名:");
14                 String inputPassword = JOptionPane.showInputDialog("请输入密码:");
15                 if (inputUsername.equals(username) && inputPassword.equals(password)) {
16                     JOptionPane.showMessageDialog(null, "登录成功!");
17                 } else {
18                     JOptionPane.showMessageDialog(null, "账户名或密码错误!");
19                 }
20             } else {
21                 // 输入数字或运算符
22                 textField.setText(textField.getText() + command);
23             }
24         }
25     }

账号登陆与密码输入界面如下

三、实现计数逻辑

 1 private double calculate(String expression) {
 2         // 实现计算逻辑 4         String[] tokens = expression.split(" ");
 5         double num1 = Double.parseDouble(tokens[0]);
 6         double num2 = Double.parseDouble(tokens[2]);
 7         String operator = tokens[1];
 8         double result = 0;
 9         switch (operator) {
10             case "+":
11                 result = num1 + num2;
12                 break;
13             case "-":
14                 result = num1 - num2;
15                 break;
16             case "*":
17                 result = num1 * num2;
18                 break;
19             case "/":
20                 result = num1 / num2;
21                 break;
22         }
23         return result;
24     }
25     public static void main(String[] args) {
26         CalculatorUI calculatorUI = new CalculatorUI();
27         calculatorUI.setVisible(true);
28     }
29 }