diff --git a/.classpath b/.classpath
index 21978948803ca839b6b2778a4f478211edc5a4f1..151f11073a7997853cab8211382d3ecac9de0598 100644
--- a/.classpath
+++ b/.classpath
@@ -6,5 +6,7 @@
+
+
diff --git a/.settings/org.eclipse.core.resources.prefs b/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000000000000000000000000000000000000..26438fe82384544487f2191aef49d4b0ef346eb7
--- /dev/null
+++ b/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,2 @@
+eclipse.preferences.version=1
+encoding/README.md=UTF-8
diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs
index bb35fa0a87b032ee9d0b128004c1edbd464f07bf..56481d5e98a22b71e1dc350fe4fb16436d18469e 100644
--- a/.settings/org.eclipse.jdt.core.prefs
+++ b/.settings/org.eclipse.jdt.core.prefs
@@ -1,4 +1,13 @@
eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
+org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
+org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
+org.eclipse.jdt.core.compiler.annotation.nonnull.secondary=
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
+org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
@@ -6,6 +15,98 @@ org.eclipse.jdt.core.compiler.compliance=1.8
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.APILeak=warning
+org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
+org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
+org.eclipse.jdt.core.compiler.problem.deadCode=warning
+org.eclipse.jdt.core.compiler.problem.deprecation=warning
+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
+org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
+org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=disabled
+org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
+org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
+org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
+org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning
+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
+org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
+org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore
+org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
+org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning
+org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
+org.eclipse.jdt.core.compiler.problem.nullReference=warning
+org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
+org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore
+org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=ignore
+org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=ignore
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
+org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
+org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
+org.eclipse.jdt.core.compiler.problem.suppressWarningsNotFullyAnalysed=info
+org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
+org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
+org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning
+org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
+org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
+org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled
+org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=ignore
+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
+org.eclipse.jdt.core.compiler.problem.unstableAutoModuleName=warning
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedImport=warning
+org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
+org.eclipse.jdt.core.compiler.problem.unusedLocal=ignore
+org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
+org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
org.eclipse.jdt.core.compiler.source=1.8
diff --git a/README.md b/README.md
index 40fc824a82f8ab822a979d81b19d7815da7cfdc8..c484f00ef21865390933fecb1abaaa510eb0e469 100644
--- a/README.md
+++ b/README.md
@@ -1,14 +1,14 @@
# 科学计算器
#### 系统目标
-简要介绍系统的用途
+ 本应用程序为计算器,可用于计算生活中常见问题。
#### 基本功能
-详细介绍系统各个模块的功能。
-1. xxxx
-2. xxxx
-3. xxxx
-
+1. 实现了基本的加减乘除运算,及其优先度的区分。
+2. 可计算指数、幂、三角函数、对数、阶乘计算。
+3. 记录输入内容。
+4. 可通过面板按钮输入符号,也可通过键盘键入。
+5. 具有清除文本框内容的功能。
#### 码云特技
diff --git a/jgoodies-forms-1.8.0-sources.jar b/jgoodies-forms-1.8.0-sources.jar
new file mode 100644
index 0000000000000000000000000000000000000000..5d2a0518431e83a73a2ea1579127cc3cae427a88
Binary files /dev/null and b/jgoodies-forms-1.8.0-sources.jar differ
diff --git a/jgoodies-forms-1.8.0.jar b/jgoodies-forms-1.8.0.jar
new file mode 100644
index 0000000000000000000000000000000000000000..d5cdefbde65991cdcf3845875cf8de18272e4a81
Binary files /dev/null and b/jgoodies-forms-1.8.0.jar differ
diff --git a/miglayout-src.zip b/miglayout-src.zip
new file mode 100644
index 0000000000000000000000000000000000000000..9c51c327fd6586c393641fb1fe64d85310370248
Binary files /dev/null and b/miglayout-src.zip differ
diff --git a/miglayout15-swing.jar b/miglayout15-swing.jar
new file mode 100644
index 0000000000000000000000000000000000000000..835545d033d6ae5ddeb8ea5bb752a1f9d61decd6
Binary files /dev/null and b/miglayout15-swing.jar differ
diff --git a/src/java2020spring/Calculator.java b/src/java2020spring/Calculator.java
new file mode 100644
index 0000000000000000000000000000000000000000..f8ecb3d892e2525cad3cafc689b5699a6cdcbea7
--- /dev/null
+++ b/src/java2020spring/Calculator.java
@@ -0,0 +1,330 @@
+package java2020spring;
+
+
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.util.ArrayList;
+
+import javax.swing.JTextArea;
+
+
+public class Calculator implements ActionListener{
+
+ /*
+ * ʹ¼ӿ
+ * 1.ȡݡ
+ * 1ȡ
+ * ٲStringתΪdouble͡
+ * 2ȡ
+ * 2.ݷŵӦ
+ * 3.ʾ
+ * */
+
+ JTextArea textArea;
+
+ String enterRegex="[\\n]+";
+ String numbersRegex="[^0123456789.]+";
+ String signRegex="[\\d\56]+";
+ //ʽ
+
+ String string=null;
+ String lastLineStrings=null;
+ //ı
+
+ ArrayList signs=new ArrayList();
+ ArrayList numbers=new ArrayList();
+ double result;
+ //֡
+
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ if(e.getActionCommand()=="") {
+ textArea.append("=");
+ string=textArea.getText();
+ //ȡıڵݡ
+ separate();
+ calculate();
+ showResult();
+ }
+
+ else {
+ string=textArea.getText();
+ //ʽ
+ separate();
+ //ж
+ if(e.getActionCommand()=="")
+ getSqrt();
+ else if(e.getActionCommand()=="")
+ getInverse();
+ else if(e.getActionCommand()=="ƽ")
+ getSquare();
+ else if(e.getActionCommand()=="ֵ")
+ getAbs();
+ else if(e.getActionCommand()=="sin")
+ getSin();
+ else if(e.getActionCommand()=="cos")
+ getCos();
+ else if(e.getActionCommand()=="tan")
+ getTan();
+ else if(e.getActionCommand()=="sec")
+ getSec();
+ else if(e.getActionCommand()=="csc")
+ getCsc();
+ else if(e.getActionCommand()=="cot")
+ getCot();
+ else if(e.getActionCommand()=="!")
+ getFactorial();
+ else if(e.getActionCommand()=="lg")
+ getlg();
+ else if(e.getActionCommand()=="ln")
+ getln();
+ //ıηʽ
+ textArea.setText("");
+ for(int i=0,j=0;i