diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..f68d109
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,29 @@
+### IntelliJ IDEA ###
+out/
+!**/src/main/**/out/
+!**/src/test/**/out/
+
+### Eclipse ###
+.apt_generated
+.classpath
+.factorypath
+.project
+.settings
+.springBeans
+.sts4-cache
+bin/
+!**/src/main/**/bin/
+!**/src/test/**/bin/
+
+### NetBeans ###
+/nbproject/private/
+/nbbuild/
+/dist/
+/nbdist/
+/.nb-gradle/
+
+### VS Code ###
+.vscode/
+
+### Mac OS ###
+.DS_Store
\ No newline at end of file
diff --git a/.idea/.gitignore b/.idea/.gitignore
new file mode 100644
index 0000000..26d3352
--- /dev/null
+++ b/.idea/.gitignore
@@ -0,0 +1,3 @@
+# Default ignored files
+/shelf/
+/workspace.xml
diff --git a/.idea/misc.xml b/.idea/misc.xml
new file mode 100644
index 0000000..0548357
--- /dev/null
+++ b/.idea/misc.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
new file mode 100644
index 0000000..5d9ee31
--- /dev/null
+++ b/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000..94a25f7
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/demoForCaculator.iml b/demoForCaculator.iml
new file mode 100644
index 0000000..c90834f
--- /dev/null
+++ b/demoForCaculator.iml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/Caculator.fxml b/src/Caculator.fxml
new file mode 100644
index 0000000..ad7428e
--- /dev/null
+++ b/src/Caculator.fxml
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/Caculator.java b/src/Caculator.java
new file mode 100644
index 0000000..557f765
--- /dev/null
+++ b/src/Caculator.java
@@ -0,0 +1,24 @@
+import javafx.application.Application;
+import javafx.fxml.FXMLLoader;
+import javafx.scene.Scene;
+import javafx.scene.layout.VBox;
+import javafx.stage.Stage;
+
+import java.net.URL;
+
+public class Caculator extends Application {
+
+ @Override
+ public void start(Stage primaryStage) throws Exception {
+ URL url = getClass().getResource("Caculator.fxml");
+ VBox root = FXMLLoader.load(url);
+ Scene scene = new Scene(root);
+ primaryStage.setScene(scene);
+ primaryStage.setTitle("模拟计算器");
+ primaryStage.show();
+ }
+
+ public static void main(String[] args) {
+ launch(args);
+ }
+}
diff --git a/src/CalculatorController.java b/src/CalculatorController.java
new file mode 100644
index 0000000..4d8abe8
--- /dev/null
+++ b/src/CalculatorController.java
@@ -0,0 +1,65 @@
+import javafx.fxml.FXML;
+import javafx.scene.control.*;
+import javafx.scene.layout.HBox;
+
+public class CalculatorController {
+
+ @FXML
+ private TextField number1Field;
+
+ @FXML
+ private ChoiceBox operatorChoiceBox;
+
+ @FXML
+ private TextField number2Field;
+
+ @FXML
+ private Label resultLabel;
+
+ @FXML
+ public void initialize() {
+ // 初始化运算符下拉菜单
+ operatorChoiceBox.getItems().addAll("+", "-", "*", "/", "%");
+ }
+
+ @FXML
+ protected void handleCalculateAction() {
+ try {
+ double number1 = Double.parseDouble(number1Field.getText());
+ double number2 = Double.parseDouble(number2Field.getText());
+ String operator = operatorChoiceBox.getValue();
+
+ double result = 0;
+ switch (operator) {
+ case "+":
+ result = number1 + number2;
+ break;
+ case "-":
+ result = number1 - number2;
+ break;
+ case "*":
+ result = number1 * number2;
+ break;
+ case "/":
+ if (number2 != 0) {
+ result = number1 / number2;
+ } else {
+ throw new ArithmeticException("Division by zero");
+ }
+ break;
+ case "%":
+ if (number2 != 0) {
+ result = number1 % number2;
+ } else {
+ throw new ArithmeticException("Division by zero");
+ }
+ break;
+ default:
+ throw new IllegalArgumentException("Invalid operator");
+ }
+ resultLabel.setText(String.valueOf(result));
+ } catch (Exception e) {
+ resultLabel.setText("Error: " + e.getMessage());
+ }
+ }
+}
\ No newline at end of file