第二次作业

实验目的

  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.异常输入处理界面

 

posted @ 2023-11-16 21:14  过期趣多多e  阅读(130)  评论(0)    收藏  举报