[实验目的]
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 }
