├── pic
└── index.png
├── CalculatorApp
├── ico.ico
├── App.config
├── Properties
│ ├── Settings.settings
│ ├── AssemblyInfo.cs
│ ├── Settings.Designer.cs
│ ├── Resources.Designer.cs
│ ├── app.manifest
│ └── Resources.resx
├── Program.cs
├── Calculation.cs
├── CalculatorApp.csproj
├── Form1.cs
├── Form1.Designer.cs
└── Form1.resx
├── LICENSE
├── CalculatorApp.sln
├── README.md
├── .gitattributes
└── .gitignore
/pic/index.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/itning/CalculatorApp/master/pic/index.png
--------------------------------------------------------------------------------
/CalculatorApp/ico.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/itning/CalculatorApp/master/CalculatorApp/ico.ico
--------------------------------------------------------------------------------
/CalculatorApp/App.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/CalculatorApp/Properties/Settings.settings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/CalculatorApp/Program.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Threading.Tasks;
5 | using System.Windows.Forms;
6 |
7 | namespace CalculatorApp
8 | {
9 | static class Program
10 | {
11 | ///
12 | /// 应用程序的主入口点。
13 | ///
14 | [STAThread]
15 | static void Main()
16 | {
17 | Application.EnableVisualStyles();
18 | Application.SetCompatibleTextRenderingDefault(false);
19 | Application.Run(new Form1());
20 | }
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2017 a1837634447
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/CalculatorApp/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.CompilerServices;
3 | using System.Runtime.InteropServices;
4 |
5 | // 有关程序集的一般信息由以下
6 | // 控制。更改这些特性值可修改
7 | // 与程序集关联的信息。
8 | [assembly: AssemblyTitle("CalculatorApp")]
9 | [assembly: AssemblyDescription("计算器程序")]
10 | [assembly: AssemblyConfiguration("")]
11 | [assembly: AssemblyCompany("itning")]
12 | [assembly: AssemblyProduct("CalculatorApp")]
13 | [assembly: AssemblyCopyright("Copyright © 2018")]
14 | [assembly: AssemblyTrademark("itning")]
15 | [assembly: AssemblyCulture("")]
16 |
17 | // 将 ComVisible 设置为 false 会使此程序集中的类型
18 | //对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型
19 | //请将此类型的 ComVisible 特性设置为 true。
20 | [assembly: ComVisible(false)]
21 |
22 | // 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID
23 | [assembly: Guid("7fc7e131-28d8-47d7-89a1-eb29c317797f")]
24 |
25 | // 程序集的版本信息由下列四个值组成:
26 | //
27 | // 主版本
28 | // 次版本
29 | // 生成号
30 | // 修订号
31 | //
32 | // 可以指定所有值,也可以使用以下所示的 "*" 预置版本号和修订号
33 | // 方法是按如下所示使用“*”: :
34 | // [assembly: AssemblyVersion("1.0.*")]
35 | [assembly: AssemblyVersion("1.0.0.0")]
36 | [assembly: AssemblyFileVersion("1.0.0.0")]
37 |
--------------------------------------------------------------------------------
/CalculatorApp.sln:
--------------------------------------------------------------------------------
1 |
2 | Microsoft Visual Studio Solution File, Format Version 12.00
3 | # Visual Studio 15
4 | VisualStudioVersion = 15.0.28307.136
5 | MinimumVisualStudioVersion = 10.0.40219.1
6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CalculatorApp", "CalculatorApp\CalculatorApp.csproj", "{7FC7E131-28D8-47D7-89A1-EB29C317797F}"
7 | EndProject
8 | Global
9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution
10 | Debug|Any CPU = Debug|Any CPU
11 | Release|Any CPU = Release|Any CPU
12 | EndGlobalSection
13 | GlobalSection(ProjectConfigurationPlatforms) = postSolution
14 | {7FC7E131-28D8-47D7-89A1-EB29C317797F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
15 | {7FC7E131-28D8-47D7-89A1-EB29C317797F}.Debug|Any CPU.Build.0 = Debug|Any CPU
16 | {7FC7E131-28D8-47D7-89A1-EB29C317797F}.Release|Any CPU.ActiveCfg = Release|Any CPU
17 | {7FC7E131-28D8-47D7-89A1-EB29C317797F}.Release|Any CPU.Build.0 = Release|Any CPU
18 | EndGlobalSection
19 | GlobalSection(SolutionProperties) = preSolution
20 | HideSolutionNode = FALSE
21 | EndGlobalSection
22 | GlobalSection(ExtensibilityGlobals) = postSolution
23 | SolutionGuid = {789077F5-9130-4B42-8B94-239BF120A35C}
24 | EndGlobalSection
25 | EndGlobal
26 |
--------------------------------------------------------------------------------
/CalculatorApp/Properties/Settings.Designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // This code was generated by a tool.
4 | // Runtime Version:4.0.30319.42000
5 | //
6 | // Changes to this file may cause incorrect behavior and will be lost if
7 | // the code is regenerated.
8 | //
9 | //------------------------------------------------------------------------------
10 |
11 | namespace CalculatorApp.Properties
12 | {
13 |
14 |
15 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
16 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
17 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
18 | {
19 |
20 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
21 |
22 | public static Settings Default
23 | {
24 | get
25 | {
26 | return defaultInstance;
27 | }
28 | }
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # CalculatorApp
2 |
3 | 使用C# 编写的计算器程序
4 |
5 | [](https://github.com/itning/CalculatorApp/stargazers)
6 | [](https://github.com/itning/CalculatorApp/network/members)
7 | [](https://github.com/itning/CalculatorApp/watchers)
8 | [](https://github.com/itning?tab=followers)
9 |
10 | [](https://github.com/itning/CalculatorApp/issues)
11 | [](https://github.com/itning/CalculatorApp/blob/master/LICENSE)
12 | [](https://github.com/itning/CalculatorApp/commits)
13 | [](https://github.com/itning/CalculatorApp/releases)
14 | [](https://github.com/itning/CalculatorApp)
15 | [](http://hits.dwyl.io/itning/CalculatorApp)
16 | [](https://github.com/itning/CalculatorApp)
17 |
18 | ## 截图
19 |
20 | 
21 |
--------------------------------------------------------------------------------
/CalculatorApp/Properties/Resources.Designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // 此代码由工具生成。
4 | // 运行时版本: 4.0.30319.42000
5 | //
6 | // 对此文件的更改可能导致不正确的行为,如果
7 | // 重新生成代码,则所做更改将丢失。
8 | //
9 | //------------------------------------------------------------------------------
10 |
11 | namespace CalculatorApp.Properties
12 | {
13 |
14 |
15 | ///
16 | /// 强类型资源类,用于查找本地化字符串等。
17 | ///
18 | // 此类是由 StronglyTypedResourceBuilder
19 | // 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。
20 | // 若要添加或删除成员,请编辑 .ResX 文件,然后重新运行 ResGen
21 | // (以 /str 作为命令选项),或重新生成 VS 项目。
22 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
23 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
24 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
25 | internal class Resources
26 | {
27 |
28 | private static global::System.Resources.ResourceManager resourceMan;
29 |
30 | private static global::System.Globalization.CultureInfo resourceCulture;
31 |
32 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
33 | internal Resources()
34 | {
35 | }
36 |
37 | ///
38 | /// 返回此类使用的缓存 ResourceManager 实例。
39 | ///
40 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
41 | internal static global::System.Resources.ResourceManager ResourceManager
42 | {
43 | get
44 | {
45 | if ((resourceMan == null))
46 | {
47 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("CalculatorApp.Properties.Resources", typeof(Resources).Assembly);
48 | resourceMan = temp;
49 | }
50 | return resourceMan;
51 | }
52 | }
53 |
54 | ///
55 | /// 覆盖当前线程的 CurrentUICulture 属性
56 | /// 使用此强类型的资源类的资源查找。
57 | ///
58 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
59 | internal static global::System.Globalization.CultureInfo Culture
60 | {
61 | get
62 | {
63 | return resourceCulture;
64 | }
65 | set
66 | {
67 | resourceCulture = value;
68 | }
69 | }
70 | }
71 | }
72 |
--------------------------------------------------------------------------------
/.gitattributes:
--------------------------------------------------------------------------------
1 | ###############################################################################
2 | # Set default behavior to automatically normalize line endings.
3 | ###############################################################################
4 | * text=auto
5 |
6 | ###############################################################################
7 | # Set default behavior for command prompt diff.
8 | #
9 | # This is need for earlier builds of msysgit that does not have it on by
10 | # default for csharp files.
11 | # Note: This is only used by command line
12 | ###############################################################################
13 | #*.cs diff=csharp
14 |
15 | ###############################################################################
16 | # Set the merge driver for project and solution files
17 | #
18 | # Merging from the command prompt will add diff markers to the files if there
19 | # are conflicts (Merging from VS is not affected by the settings below, in VS
20 | # the diff markers are never inserted). Diff markers may cause the following
21 | # file extensions to fail to load in VS. An alternative would be to treat
22 | # these files as binary and thus will always conflict and require user
23 | # intervention with every merge. To do so, just uncomment the entries below
24 | ###############################################################################
25 | #*.sln merge=binary
26 | #*.csproj merge=binary
27 | #*.vbproj merge=binary
28 | #*.vcxproj merge=binary
29 | #*.vcproj merge=binary
30 | #*.dbproj merge=binary
31 | #*.fsproj merge=binary
32 | #*.lsproj merge=binary
33 | #*.wixproj merge=binary
34 | #*.modelproj merge=binary
35 | #*.sqlproj merge=binary
36 | #*.wwaproj merge=binary
37 |
38 | ###############################################################################
39 | # behavior for image files
40 | #
41 | # image files are treated as binary by default.
42 | ###############################################################################
43 | #*.jpg binary
44 | #*.png binary
45 | #*.gif binary
46 |
47 | ###############################################################################
48 | # diff behavior for common document formats
49 | #
50 | # Convert binary document formats to text before diffing them. This feature
51 | # is only available from the command line. Turn it on by uncommenting the
52 | # entries below.
53 | ###############################################################################
54 | #*.doc diff=astextplain
55 | #*.DOC diff=astextplain
56 | #*.docx diff=astextplain
57 | #*.DOCX diff=astextplain
58 | #*.dot diff=astextplain
59 | #*.DOT diff=astextplain
60 | #*.pdf diff=astextplain
61 | #*.PDF diff=astextplain
62 | #*.rtf diff=astextplain
63 | #*.RTF diff=astextplain
64 |
--------------------------------------------------------------------------------
/CalculatorApp/Properties/app.manifest:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
47 |
54 |
55 |
69 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | ## Ignore Visual Studio temporary files, build results, and
2 | ## files generated by popular Visual Studio add-ons.
3 |
4 | # User-specific files
5 | *.suo
6 | *.user
7 | *.userosscache
8 | *.sln.docstates
9 |
10 | # User-specific files (MonoDevelop/Xamarin Studio)
11 | *.userprefs
12 |
13 | # Build results
14 | [Dd]ebug/
15 | [Dd]ebugPublic/
16 | [Rr]elease/
17 | [Rr]eleases/
18 | x64/
19 | x86/
20 | bld/
21 | [Bb]in/
22 | [Oo]bj/
23 | [Ll]og/
24 |
25 | # Visual Studio 2015 cache/options directory
26 | .vs/
27 | # Uncomment if you have tasks that create the project's static files in wwwroot
28 | #wwwroot/
29 |
30 | # MSTest test Results
31 | [Tt]est[Rr]esult*/
32 | [Bb]uild[Ll]og.*
33 |
34 | # NUNIT
35 | *.VisualState.xml
36 | TestResult.xml
37 |
38 | # Build Results of an ATL Project
39 | [Dd]ebugPS/
40 | [Rr]eleasePS/
41 | dlldata.c
42 |
43 | # DNX
44 | project.lock.json
45 | project.fragment.lock.json
46 | artifacts/
47 |
48 | *_i.c
49 | *_p.c
50 | *_i.h
51 | *.ilk
52 | *.meta
53 | *.obj
54 | *.pch
55 | *.pdb
56 | *.pgc
57 | *.pgd
58 | *.rsp
59 | *.sbr
60 | *.tlb
61 | *.tli
62 | *.tlh
63 | *.tmp
64 | *.tmp_proj
65 | *.log
66 | *.vspscc
67 | *.vssscc
68 | .builds
69 | *.pidb
70 | *.svclog
71 | *.scc
72 |
73 | # Chutzpah Test files
74 | _Chutzpah*
75 |
76 | # Visual C++ cache files
77 | ipch/
78 | *.aps
79 | *.ncb
80 | *.opendb
81 | *.opensdf
82 | *.sdf
83 | *.cachefile
84 | *.VC.db
85 | *.VC.VC.opendb
86 |
87 | # Visual Studio profiler
88 | *.psess
89 | *.vsp
90 | *.vspx
91 | *.sap
92 |
93 | # TFS 2012 Local Workspace
94 | $tf/
95 |
96 | # Guidance Automation Toolkit
97 | *.gpState
98 |
99 | # ReSharper is a .NET coding add-in
100 | _ReSharper*/
101 | *.[Rr]e[Ss]harper
102 | *.DotSettings.user
103 |
104 | # JustCode is a .NET coding add-in
105 | .JustCode
106 |
107 | # TeamCity is a build add-in
108 | _TeamCity*
109 |
110 | # DotCover is a Code Coverage Tool
111 | *.dotCover
112 |
113 | # NCrunch
114 | _NCrunch_*
115 | .*crunch*.local.xml
116 | nCrunchTemp_*
117 |
118 | # MightyMoose
119 | *.mm.*
120 | AutoTest.Net/
121 |
122 | # Web workbench (sass)
123 | .sass-cache/
124 |
125 | # Installshield output folder
126 | [Ee]xpress/
127 |
128 | # DocProject is a documentation generator add-in
129 | DocProject/buildhelp/
130 | DocProject/Help/*.HxT
131 | DocProject/Help/*.HxC
132 | DocProject/Help/*.hhc
133 | DocProject/Help/*.hhk
134 | DocProject/Help/*.hhp
135 | DocProject/Help/Html2
136 | DocProject/Help/html
137 |
138 | # Click-Once directory
139 | publish/
140 |
141 | # Publish Web Output
142 | *.[Pp]ublish.xml
143 | *.azurePubxml
144 | # TODO: Comment the next line if you want to checkin your web deploy settings
145 | # but database connection strings (with potential passwords) will be unencrypted
146 | #*.pubxml
147 | *.publishproj
148 |
149 | # Microsoft Azure Web App publish settings. Comment the next line if you want to
150 | # checkin your Azure Web App publish settings, but sensitive information contained
151 | # in these scripts will be unencrypted
152 | PublishScripts/
153 |
154 | # NuGet Packages
155 | *.nupkg
156 | # The packages folder can be ignored because of Package Restore
157 | **/packages/*
158 | # except build/, which is used as an MSBuild target.
159 | !**/packages/build/
160 | # Uncomment if necessary however generally it will be regenerated when needed
161 | #!**/packages/repositories.config
162 | # NuGet v3's project.json files produces more ignoreable files
163 | *.nuget.props
164 | *.nuget.targets
165 |
166 | # Microsoft Azure Build Output
167 | csx/
168 | *.build.csdef
169 |
170 | # Microsoft Azure Emulator
171 | ecf/
172 | rcf/
173 |
174 | # Windows Store app package directories and files
175 | AppPackages/
176 | BundleArtifacts/
177 | Package.StoreAssociation.xml
178 | _pkginfo.txt
179 |
180 | # Visual Studio cache files
181 | # files ending in .cache can be ignored
182 | *.[Cc]ache
183 | # but keep track of directories ending in .cache
184 | !*.[Cc]ache/
185 |
186 | # Others
187 | ClientBin/
188 | ~$*
189 | *~
190 | *.dbmdl
191 | *.dbproj.schemaview
192 | *.jfm
193 | *.pfx
194 | *.publishsettings
195 | node_modules/
196 | orleans.codegen.cs
197 |
198 | # Since there are multiple workflows, uncomment next line to ignore bower_components
199 | # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
200 | #bower_components/
201 |
202 | # RIA/Silverlight projects
203 | Generated_Code/
204 |
205 | # Backup & report files from converting an old project file
206 | # to a newer Visual Studio version. Backup files are not needed,
207 | # because we have git ;-)
208 | _UpgradeReport_Files/
209 | Backup*/
210 | UpgradeLog*.XML
211 | UpgradeLog*.htm
212 |
213 | # SQL Server files
214 | *.mdf
215 | *.ldf
216 |
217 | # Business Intelligence projects
218 | *.rdl.data
219 | *.bim.layout
220 | *.bim_*.settings
221 |
222 | # Microsoft Fakes
223 | FakesAssemblies/
224 |
225 | # GhostDoc plugin setting file
226 | *.GhostDoc.xml
227 |
228 | # Node.js Tools for Visual Studio
229 | .ntvs_analysis.dat
230 |
231 | # Visual Studio 6 build log
232 | *.plg
233 |
234 | # Visual Studio 6 workspace options file
235 | *.opt
236 |
237 | # Visual Studio LightSwitch build output
238 | **/*.HTMLClient/GeneratedArtifacts
239 | **/*.DesktopClient/GeneratedArtifacts
240 | **/*.DesktopClient/ModelManifest.xml
241 | **/*.Server/GeneratedArtifacts
242 | **/*.Server/ModelManifest.xml
243 | _Pvt_Extensions
244 |
245 | # Paket dependency manager
246 | .paket/paket.exe
247 | paket-files/
248 |
249 | # FAKE - F# Make
250 | .fake/
251 |
252 | # JetBrains Rider
253 | .idea/
254 | *.sln.iml
255 |
256 | # CodeRush
257 | .cr/
258 |
259 | # Python Tools for Visual Studio (PTVS)
260 | __pycache__/
261 | *.pyc
--------------------------------------------------------------------------------
/CalculatorApp/Properties/Resources.resx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 | text/microsoft-resx
107 |
108 |
109 | 2.0
110 |
111 |
112 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
113 |
114 |
115 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
116 |
117 |
--------------------------------------------------------------------------------
/CalculatorApp/Calculation.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections;
3 | using System.Collections.Generic;
4 | using System.Linq;
5 | using System.Text;
6 | using System.Text.RegularExpressions;
7 | using System.Threading.Tasks;
8 |
9 | namespace CalculatorApp
10 | {
11 | ///
12 | /// 计算核心算法
13 | ///
14 | class Calculation
15 | {
16 | ///
17 | /// 静态只读实例
18 | ///
19 | private readonly static Calculation c = new Calculation();
20 |
21 | ///
22 | /// 私有化构造方法(单例)
23 | ///
24 | private Calculation()
25 | {
26 |
27 | }
28 |
29 | ///
30 | /// 提供公共静态获取器
31 | ///
32 | /// Calculation实例
33 | public static Calculation GetCalculation()
34 | {
35 | return c;
36 | }
37 |
38 | ///
39 | /// 给定字符串,返回运算结果
40 | ///
41 | /// 要计算的字符串
42 | /// 算术结果
43 | public double Result(string str)
44 | {
45 | List ops = GetOps(str);
46 | List num = GetNum(str);
47 |
48 | // 先乘除再加减
49 | for (int i = 0; i < ops.Count; i++)
50 | {
51 | if (ops[i].Contains("*") || ops[i].Contains("/"))
52 | {
53 | String op = ops[i];
54 | ops.RemoveAt(i);
55 | if (op.Equals("*"))
56 | {
57 | //从数字集合取对应和后面一位数字
58 | double d1 = num[i];
59 | num.RemoveAt(i);
60 | double d2 = num[i];
61 | num.RemoveAt(i);
62 |
63 | double number = d1 * d2;
64 | //再加上
65 | num.Insert(i, number);
66 | }
67 | if (op.Equals("/"))
68 | {
69 | double d1 = num[i];
70 | num.RemoveAt(i);
71 | double d2 = num[i];
72 | num.RemoveAt(i);
73 | double number = d1 / d2;
74 | num.Insert(i, number);
75 | }
76 | //刚刚移掉两个,却又刚加上一个新数,所以i要--,因为i++,
77 | //所以才能取到,如果不加那么虽然貌似正常,但是如果如8*3/3,*/连在一起就报错了;因为连着的两个if;
78 | i--;
79 | }
80 | }
81 | //到+-,按顺序的所以就用while()了
82 | while (ops.Count != 0)
83 | {
84 | String op = ops[0];
85 | ops.RemoveAt(0);
86 | double d1 = num[0];
87 | num.RemoveAt(0);
88 | double d2 = num[0];
89 | num.RemoveAt(0);
90 |
91 | if (op.Equals("+"))
92 | {
93 | double number = d1 + d2;
94 | //再加入
95 | num.Insert(0, number);
96 | }
97 | if (op.Equals("-"))
98 | {
99 | double number = d1 - d2;
100 | num.Insert(0, number);
101 | }
102 | }
103 | return num[0];
104 | }
105 |
106 | ///
107 | /// 获取符号 1.首位 和 * /后面 的-变成@,其他的-不用
108 | ///
109 | /// 字符串
110 | /// 符号集合
111 | private List GetNum(string str)
112 | {
113 | // -变成@
114 | str = Change(str);
115 | List list = new List();
116 |
117 | String[] split = Regex.Split(str, "[\\+\\-\\*/]");
118 | for (int i = 0; i < split.Length; i++)
119 | { // @3,5,@4,9,@3
120 | String s = split[i];
121 | // 再把@变成-
122 | if (s.Contains("@"))
123 | {
124 | s = '-' + s.Substring(1);
125 | }
126 | list.Add(Double.Parse(s));
127 | }
128 |
129 | return list;
130 | }
131 |
132 | ///
133 | /// 将负数的负号变成@
134 | ///
135 | /// 字符串
136 | /// 变换完的字符串
137 | private string Change(string str)
138 | {
139 | char[] chars = str.ToCharArray();
140 | for (int i = 0; i < chars.Length; i++)
141 | {
142 | // @3+5*-4-9/-3
143 | if (i == 0 && chars[i] == '-')
144 | {
145 | str = '@' + str.Substring(i + 1);
146 | }
147 | // @3+5*@4-9/@3
148 | if (chars[i] == '*' && chars[i + 1] == '-' || chars[i] == '/' && chars[i + 1] == '-')
149 | {
150 | str = str.Substring(0, i + 1) + '@' + str.Substring(i + 2);
151 | }
152 | }
153 | return str;
154 | }
155 |
156 | ///
157 | /// 获取符号
158 | ///
159 | /// 字符串
160 | /// 符号集合
161 | private List GetOps(String str)
162 | {
163 | List list = new List();
164 | // @变-
165 | str = Change(str);
166 | // @3+5*@4-9/@3
167 | String[] split = Regex.Split(str, "[0-9\\.@]"); // 表示0-9包括小数和@
168 | for (int i = 0; i < split.Length; i++)
169 | {
170 | if (split[i].Contains("+") || split[i].Contains("-") || split[i].Contains("*") || split[i].Contains("/"))
171 | {
172 | list.Add(split[i]);
173 | }
174 | }
175 | return list;
176 | }
177 | }
178 | }
179 |
--------------------------------------------------------------------------------
/CalculatorApp/CalculatorApp.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Debug
6 | AnyCPU
7 | {7FC7E131-28D8-47D7-89A1-EB29C317797F}
8 | WinExe
9 | CalculatorApp
10 | CalculatorApp
11 | v4.6.1
12 | 512
13 | true
14 | true
15 | false
16 | publish\
17 | true
18 | Disk
19 | false
20 | Foreground
21 | 7
22 | Days
23 | false
24 | false
25 | true
26 | http://itning.top
27 | http://itning.top
28 | itning
29 | 1
30 | 1.0.0.%2a
31 | false
32 | true
33 | true
34 |
35 |
36 | AnyCPU
37 | true
38 | full
39 | false
40 | bin\Debug\
41 | DEBUG;TRACE
42 | prompt
43 | 4
44 |
45 |
46 | AnyCPU
47 | pdbonly
48 | true
49 | bin\Release\
50 | TRACE
51 | prompt
52 | 4
53 |
54 |
55 | ico.ico
56 |
57 |
58 | F06D3CC3C3B45A31892C91FE89F56AC89420D3E9
59 |
60 |
61 | CalculatorApp_TemporaryKey.pfx
62 |
63 |
64 | true
65 |
66 |
67 | LocalIntranet
68 |
69 |
70 | Properties\app.manifest
71 |
72 |
73 | true
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 | Form
92 |
93 |
94 | Form1.cs
95 |
96 |
97 |
98 |
99 | Form1.cs
100 |
101 |
102 | ResXFileCodeGenerator
103 | Resources.Designer.cs
104 | Designer
105 |
106 |
107 | True
108 | Resources.resx
109 |
110 |
111 |
112 |
113 | SettingsSingleFileGenerator
114 | Settings.Designer.cs
115 |
116 |
117 | True
118 | Settings.settings
119 | True
120 |
121 |
122 |
123 |
124 |
125 |
126 |
127 |
128 |
129 |
130 | False
131 | Microsoft .NET Framework 4.6.1 %28x86 和 x64%29
132 | true
133 |
134 |
135 | False
136 | .NET Framework 3.5 SP1
137 | false
138 |
139 |
140 |
141 |
--------------------------------------------------------------------------------
/CalculatorApp/Form1.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.ComponentModel;
4 | using System.Data;
5 | using System.Drawing;
6 | using System.Drawing.Drawing2D;
7 | using System.Linq;
8 | using System.Text;
9 | using System.Threading.Tasks;
10 | using System.Windows.Forms;
11 |
12 | namespace CalculatorApp
13 | {
14 | public partial class Form1 : Form
15 | {
16 | ///
17 | /// 显示的字符串
18 | ///
19 | private string showStr = string.Empty;
20 |
21 | public Form1()
22 | {
23 | InitializeComponent();
24 | }
25 |
26 | ///
27 | /// 按钮0点击事件
28 | ///
29 | /// 事件源
30 | /// 不包含事件数据的对象
31 | private void Btn0_Click(object sender, EventArgs e)
32 | {
33 | if (showStr != string.Empty)
34 | {
35 | UpdateStrAndBox("0");
36 |
37 | }
38 | else if (!IsLastStrOperator())
39 | {
40 | UpdateStrAndBox("0");
41 | }
42 | }
43 |
44 | ///
45 | /// 按钮1点击事件
46 | ///
47 | /// 事件源
48 | /// 不包含事件数据的对象
49 | private void Btn1_Click(object sender, EventArgs e)
50 | {
51 | UpdateStrAndBox("1");
52 | }
53 |
54 | ///
55 | /// 按钮2点击事件
56 | ///
57 | /// 事件源
58 | /// 不包含事件数据的对象
59 | private void Btn2_Click(object sender, EventArgs e)
60 | {
61 | UpdateStrAndBox("2");
62 | }
63 |
64 | ///
65 | /// 按钮3点击事件
66 | ///
67 | /// 事件源
68 | /// 不包含事件数据的对象
69 | private void Btn3_Click(object sender, EventArgs e)
70 | {
71 | UpdateStrAndBox("3");
72 | }
73 |
74 | ///
75 | /// 按钮4点击事件
76 | ///
77 | /// 事件源
78 | /// 不包含事件数据的对象
79 | private void Btn4_Click(object sender, EventArgs e)
80 | {
81 | UpdateStrAndBox("4");
82 | }
83 |
84 | ///
85 | /// 按钮5点击事件
86 | ///
87 | /// 事件源
88 | /// 不包含事件数据的对象
89 | private void Btn5_Click(object sender, EventArgs e)
90 | {
91 | UpdateStrAndBox("5");
92 | }
93 |
94 | ///
95 | /// 按钮6点击事件
96 | ///
97 | /// 事件源
98 | /// 不包含事件数据的对象
99 | private void Btn6_Click(object sender, EventArgs e)
100 | {
101 | UpdateStrAndBox("6");
102 | }
103 |
104 | ///
105 | /// 按钮7点击事件
106 | ///
107 | /// 事件源
108 | /// 不包含事件数据的对象
109 | private void Btn7_Click(object sender, EventArgs e)
110 | {
111 | UpdateStrAndBox("7");
112 | }
113 |
114 | ///
115 | /// 按钮8点击事件
116 | ///
117 | /// 事件源
118 | /// 不包含事件数据的对象
119 | private void Btn8_Click(object sender, EventArgs e)
120 | {
121 | UpdateStrAndBox("8");
122 | }
123 |
124 | ///
125 | /// 按钮9点击事件
126 | ///
127 | /// 事件源
128 | /// 不包含事件数据的对象
129 | private void Btn9_Click(object sender, EventArgs e)
130 | {
131 | UpdateStrAndBox("9");
132 | }
133 |
134 | ///
135 | /// 按钮+点击事件
136 | ///
137 | /// 事件源
138 | /// 不包含事件数据的对象
139 | private void Btnjia_Click(object sender, EventArgs e)
140 | {
141 | if (showStr != string.Empty && !IsLastStrOperator())
142 | {
143 | UpdateStrAndBox("+");
144 | }
145 | }
146 |
147 | ///
148 | /// 按钮-点击事件
149 | ///
150 | /// 事件源
151 | /// 不包含事件数据的对象
152 | private void Btnjian_Click(object sender, EventArgs e)
153 | {
154 | if (showStr != string.Empty && !IsLastStrOperator())
155 | {
156 | UpdateStrAndBox("-");
157 | }
158 | }
159 |
160 | ///
161 | /// 按钮*点击事件
162 | ///
163 | /// 事件源
164 | /// 不包含事件数据的对象
165 | private void Btncheng_Click(object sender, EventArgs e)
166 | {
167 | if (showStr != string.Empty && !IsLastStrOperator())
168 | {
169 | UpdateStrAndBox("*");
170 | }
171 | }
172 |
173 | ///
174 | /// 按钮/点击事件
175 | ///
176 | /// 事件源
177 | /// 不包含事件数据的对象
178 | private void Btnchu_Click(object sender, EventArgs e)
179 | {
180 | if (showStr != string.Empty && !IsLastStrOperator())
181 | {
182 | UpdateStrAndBox("/");
183 | }
184 | }
185 |
186 | ///
187 | /// 按钮C点击事件
188 | ///
189 | /// 事件源
190 | /// 不包含事件数据的对象
191 | private void Btnc_Click(object sender, EventArgs e)
192 | {
193 | ShowBox.Focus();
194 | if (showStr == string.Empty)
195 | {
196 | ShowBox.Text = "0";
197 | ShowBox.Select(ShowBox.Text.Length, 0);
198 | ShowBox.ScrollToCaret();
199 | return;
200 | }
201 | showStr = showStr.Substring(0, showStr.Length - 1);
202 | if (string.Equals(showStr, string.Empty))
203 | {
204 | showStr = "0";
205 | }
206 | ShowBox.Text = showStr;
207 | ShowBox.Select(ShowBox.Text.Length, 0);
208 | ShowBox.ScrollToCaret();
209 | }
210 |
211 | ///
212 | /// 按钮.点击事件
213 | ///
214 | /// 事件源
215 | /// 不包含事件数据的对象
216 | private void Btndian_Click(object sender, EventArgs e)
217 | {
218 | if (showStr == string.Empty)
219 | {
220 | UpdateStrAndBox("0.");
221 | return;
222 | }
223 | char[] cs = { '+', '-', '*', '/' };
224 | int index = showStr.LastIndexOfAny(cs);
225 | //没有找到
226 | if (index == -1 && !showStr.Contains("."))
227 | {
228 | UpdateStrAndBox(".");
229 | return;
230 | }
231 | if (index != -1 && showStr.IndexOf(".", index) == -1 && !IsLastStrOperator())
232 | {
233 | UpdateStrAndBox(".");
234 | }
235 | }
236 |
237 | ///
238 | /// 按钮Enter点击事件
239 | ///
240 | /// 事件源
241 | /// 不包含事件数据的对象
242 | private void Btnenter_Click(object sender, EventArgs e)
243 | {
244 | ShowBox.Focus();
245 | if (showStr.IndexOfAny(new char[] { '+', '-', '*', '/' }) == -1)
246 | {
247 | return;
248 | }
249 | try
250 | {
251 | double result = Calculation.GetCalculation().Result(showStr);
252 | showStr = string.Empty;
253 | ShowBox.Text = result.ToString();
254 | ShowBox.Select(ShowBox.Text.Length, 0);
255 | ShowBox.ScrollToCaret();
256 | }
257 | catch (Exception)
258 | {
259 | return;
260 | }
261 |
262 | }
263 |
264 | ///
265 | /// 更新showStr和ShowBox.Text值
266 | ///
267 | /// 更新该成员的值
268 | /// 要更新的字符串
269 | private void UpdateStrAndBox(string str)
270 | {
271 | ShowBox.Focus();
272 | if (showStr == "0" && str != ".")
273 | {
274 | showStr = str;
275 | }
276 | else
277 | {
278 | showStr += str;
279 | }
280 | ShowBox.Text = showStr;
281 | ShowBox.Select(ShowBox.Text.Length, 0);
282 | ShowBox.ScrollToCaret();
283 | }
284 |
285 | ///
286 | /// 验证showStr成员中的上一个字符是否为操作符(+,-,*,/)
287 | ///
288 | /// 如果是操作符返回true否则返回false
289 | private bool IsLastStrOperator()
290 | {
291 | if (showStr.Length == 0)
292 | {
293 | return false;
294 | }
295 | switch (showStr[showStr.Length - 1])
296 | {
297 | case '+':
298 | case '-':
299 | case '*':
300 | case '/':
301 | {
302 | return true;
303 | }
304 | }
305 | return false;
306 | }
307 |
308 | ///
309 | /// 窗体键盘按下事件
310 | ///
311 | /// 事件源
312 | /// 不包含事件数据的对象
313 | private void Form1_KeyDown(object sender, KeyEventArgs e)
314 | {
315 | switch (e.KeyCode)
316 | {
317 | case Keys.NumPad0:
318 | {
319 | this.Btn0_Click(null, null);
320 | break;
321 | }
322 | case Keys.NumPad1:
323 | {
324 | this.Btn1_Click(null, null);
325 | break;
326 | }
327 | case Keys.NumPad2:
328 | {
329 | this.Btn2_Click(null, null);
330 | break;
331 | }
332 | case Keys.NumPad3:
333 | {
334 | this.Btn3_Click(null, null);
335 | break;
336 | }
337 | case Keys.NumPad4:
338 | {
339 | this.Btn4_Click(null, null);
340 | break;
341 | }
342 |
343 | case Keys.NumPad5:
344 | {
345 | this.Btn5_Click(null, null);
346 | break;
347 | }
348 | case Keys.NumPad6:
349 | {
350 | this.Btn6_Click(null, null);
351 | break;
352 | }
353 | case Keys.NumPad7:
354 | {
355 | this.Btn7_Click(null, null);
356 | break;
357 | }
358 | case Keys.NumPad8:
359 | {
360 | this.Btn8_Click(null, null);
361 | break;
362 | }
363 | case Keys.NumPad9:
364 | {
365 | this.Btn9_Click(null, null);
366 | break;
367 | }
368 | case Keys.Add:
369 | {
370 | this.Btnjia_Click(null, null);
371 | break;
372 | }
373 | case Keys.Subtract:
374 | {
375 | this.Btnjian_Click(null, null);
376 | break;
377 | }
378 | case Keys.Multiply:
379 | {
380 | this.Btncheng_Click(null, null);
381 | break;
382 | }
383 | case Keys.Divide:
384 | {
385 | this.Btnchu_Click(null, null);
386 | break;
387 | }
388 | case Keys.Decimal:
389 | {
390 | this.Btndian_Click(null, null);
391 | break;
392 | }
393 | case Keys.Back:
394 | case Keys.Delete:
395 | {
396 | this.Btnc_Click(null, null);
397 | break;
398 | }
399 | case Keys.Return:
400 | {
401 | this.Btnenter_Click(null, null);
402 | break;
403 | }
404 | }
405 | }
406 | }
407 | }
408 |
--------------------------------------------------------------------------------
/CalculatorApp/Form1.Designer.cs:
--------------------------------------------------------------------------------
1 | namespace CalculatorApp
2 | {
3 | partial class Form1
4 | {
5 | ///
6 | /// 必需的设计器变量。
7 | ///
8 | private System.ComponentModel.IContainer components = null;
9 |
10 | ///
11 | /// 清理所有正在使用的资源。
12 | ///
13 | /// 如果应释放托管资源,为 true;否则为 false。
14 | protected override void Dispose(bool disposing)
15 | {
16 | if (disposing && (components != null))
17 | {
18 | components.Dispose();
19 | }
20 | base.Dispose(disposing);
21 | }
22 |
23 | #region Windows 窗体设计器生成的代码
24 |
25 | ///
26 | /// 设计器支持所需的方法 - 不要修改
27 | /// 使用代码编辑器修改此方法的内容。
28 | ///
29 | private void InitializeComponent()
30 | {
31 | System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form1));
32 | this.Btn7 = new System.Windows.Forms.Button();
33 | this.Btn8 = new System.Windows.Forms.Button();
34 | this.Btn9 = new System.Windows.Forms.Button();
35 | this.Btn4 = new System.Windows.Forms.Button();
36 | this.Btn5 = new System.Windows.Forms.Button();
37 | this.Btn6 = new System.Windows.Forms.Button();
38 | this.Btn1 = new System.Windows.Forms.Button();
39 | this.Btn2 = new System.Windows.Forms.Button();
40 | this.Btn3 = new System.Windows.Forms.Button();
41 | this.Btndian = new System.Windows.Forms.Button();
42 | this.Btnenter = new System.Windows.Forms.Button();
43 | this.Btn0 = new System.Windows.Forms.Button();
44 | this.Btnchu = new System.Windows.Forms.Button();
45 | this.Btnjian = new System.Windows.Forms.Button();
46 | this.Btncheng = new System.Windows.Forms.Button();
47 | this.Btnjia = new System.Windows.Forms.Button();
48 | this.ShowBox = new System.Windows.Forms.TextBox();
49 | this.Btnc = new System.Windows.Forms.Button();
50 | this.SuspendLayout();
51 | //
52 | // Btn7
53 | //
54 | this.Btn7.Location = new System.Drawing.Point(12, 115);
55 | this.Btn7.Name = "Btn7";
56 | this.Btn7.Size = new System.Drawing.Size(115, 50);
57 | this.Btn7.TabIndex = 1;
58 | this.Btn7.TabStop = false;
59 | this.Btn7.Text = "7";
60 | this.Btn7.UseVisualStyleBackColor = true;
61 | this.Btn7.Click += new System.EventHandler(this.Btn7_Click);
62 | //
63 | // Btn8
64 | //
65 | this.Btn8.Location = new System.Drawing.Point(133, 115);
66 | this.Btn8.Name = "Btn8";
67 | this.Btn8.Size = new System.Drawing.Size(115, 50);
68 | this.Btn8.TabIndex = 1;
69 | this.Btn8.TabStop = false;
70 | this.Btn8.Text = "8";
71 | this.Btn8.UseVisualStyleBackColor = true;
72 | this.Btn8.Click += new System.EventHandler(this.Btn8_Click);
73 | //
74 | // Btn9
75 | //
76 | this.Btn9.Location = new System.Drawing.Point(254, 115);
77 | this.Btn9.Name = "Btn9";
78 | this.Btn9.Size = new System.Drawing.Size(115, 50);
79 | this.Btn9.TabIndex = 1;
80 | this.Btn9.TabStop = false;
81 | this.Btn9.Text = "9";
82 | this.Btn9.UseVisualStyleBackColor = true;
83 | this.Btn9.Click += new System.EventHandler(this.Btn9_Click);
84 | //
85 | // Btn4
86 | //
87 | this.Btn4.Location = new System.Drawing.Point(12, 171);
88 | this.Btn4.Name = "Btn4";
89 | this.Btn4.Size = new System.Drawing.Size(115, 50);
90 | this.Btn4.TabIndex = 1;
91 | this.Btn4.TabStop = false;
92 | this.Btn4.Text = "4";
93 | this.Btn4.UseVisualStyleBackColor = true;
94 | this.Btn4.Click += new System.EventHandler(this.Btn4_Click);
95 | //
96 | // Btn5
97 | //
98 | this.Btn5.Location = new System.Drawing.Point(133, 171);
99 | this.Btn5.Name = "Btn5";
100 | this.Btn5.Size = new System.Drawing.Size(115, 50);
101 | this.Btn5.TabIndex = 1;
102 | this.Btn5.TabStop = false;
103 | this.Btn5.Text = "5";
104 | this.Btn5.UseVisualStyleBackColor = true;
105 | this.Btn5.Click += new System.EventHandler(this.Btn5_Click);
106 | //
107 | // Btn6
108 | //
109 | this.Btn6.Location = new System.Drawing.Point(254, 171);
110 | this.Btn6.Name = "Btn6";
111 | this.Btn6.Size = new System.Drawing.Size(115, 50);
112 | this.Btn6.TabIndex = 1;
113 | this.Btn6.TabStop = false;
114 | this.Btn6.Text = "6";
115 | this.Btn6.UseVisualStyleBackColor = true;
116 | this.Btn6.Click += new System.EventHandler(this.Btn6_Click);
117 | //
118 | // Btn1
119 | //
120 | this.Btn1.Location = new System.Drawing.Point(12, 227);
121 | this.Btn1.Name = "Btn1";
122 | this.Btn1.Size = new System.Drawing.Size(115, 50);
123 | this.Btn1.TabIndex = 1;
124 | this.Btn1.TabStop = false;
125 | this.Btn1.Text = "1";
126 | this.Btn1.UseVisualStyleBackColor = true;
127 | this.Btn1.Click += new System.EventHandler(this.Btn1_Click);
128 | //
129 | // Btn2
130 | //
131 | this.Btn2.Location = new System.Drawing.Point(133, 227);
132 | this.Btn2.Name = "Btn2";
133 | this.Btn2.Size = new System.Drawing.Size(115, 50);
134 | this.Btn2.TabIndex = 1;
135 | this.Btn2.TabStop = false;
136 | this.Btn2.Text = "2";
137 | this.Btn2.UseVisualStyleBackColor = true;
138 | this.Btn2.Click += new System.EventHandler(this.Btn2_Click);
139 | //
140 | // Btn3
141 | //
142 | this.Btn3.Location = new System.Drawing.Point(254, 227);
143 | this.Btn3.Name = "Btn3";
144 | this.Btn3.Size = new System.Drawing.Size(115, 50);
145 | this.Btn3.TabIndex = 1;
146 | this.Btn3.TabStop = false;
147 | this.Btn3.Text = "3";
148 | this.Btn3.UseVisualStyleBackColor = true;
149 | this.Btn3.Click += new System.EventHandler(this.Btn3_Click);
150 | //
151 | // Btndian
152 | //
153 | this.Btndian.Location = new System.Drawing.Point(254, 283);
154 | this.Btndian.Name = "Btndian";
155 | this.Btndian.Size = new System.Drawing.Size(115, 50);
156 | this.Btndian.TabIndex = 1;
157 | this.Btndian.TabStop = false;
158 | this.Btndian.Text = ".";
159 | this.Btndian.UseVisualStyleBackColor = true;
160 | this.Btndian.Click += new System.EventHandler(this.Btndian_Click);
161 | //
162 | // Btnenter
163 | //
164 | this.Btnenter.Location = new System.Drawing.Point(375, 224);
165 | this.Btnenter.Name = "Btnenter";
166 | this.Btnenter.Size = new System.Drawing.Size(115, 109);
167 | this.Btnenter.TabIndex = 1;
168 | this.Btnenter.TabStop = false;
169 | this.Btnenter.Text = "Enter";
170 | this.Btnenter.UseVisualStyleBackColor = true;
171 | this.Btnenter.Click += new System.EventHandler(this.Btnenter_Click);
172 | //
173 | // Btn0
174 | //
175 | this.Btn0.Location = new System.Drawing.Point(12, 283);
176 | this.Btn0.Name = "Btn0";
177 | this.Btn0.Size = new System.Drawing.Size(236, 50);
178 | this.Btn0.TabIndex = 1;
179 | this.Btn0.TabStop = false;
180 | this.Btn0.Text = "0";
181 | this.Btn0.UseVisualStyleBackColor = true;
182 | this.Btn0.Click += new System.EventHandler(this.Btn0_Click);
183 | //
184 | // Btnchu
185 | //
186 | this.Btnchu.Location = new System.Drawing.Point(133, 59);
187 | this.Btnchu.Name = "Btnchu";
188 | this.Btnchu.Size = new System.Drawing.Size(115, 50);
189 | this.Btnchu.TabIndex = 1;
190 | this.Btnchu.TabStop = false;
191 | this.Btnchu.Text = "/";
192 | this.Btnchu.UseVisualStyleBackColor = true;
193 | this.Btnchu.Click += new System.EventHandler(this.Btnchu_Click);
194 | //
195 | // Btnjian
196 | //
197 | this.Btnjian.Location = new System.Drawing.Point(375, 59);
198 | this.Btnjian.Name = "Btnjian";
199 | this.Btnjian.Size = new System.Drawing.Size(115, 50);
200 | this.Btnjian.TabIndex = 1;
201 | this.Btnjian.TabStop = false;
202 | this.Btnjian.Text = "-";
203 | this.Btnjian.UseVisualStyleBackColor = true;
204 | this.Btnjian.Click += new System.EventHandler(this.Btnjian_Click);
205 | //
206 | // Btncheng
207 | //
208 | this.Btncheng.Location = new System.Drawing.Point(254, 59);
209 | this.Btncheng.Name = "Btncheng";
210 | this.Btncheng.Size = new System.Drawing.Size(115, 50);
211 | this.Btncheng.TabIndex = 1;
212 | this.Btncheng.TabStop = false;
213 | this.Btncheng.Text = "*";
214 | this.Btncheng.UseVisualStyleBackColor = true;
215 | this.Btncheng.Click += new System.EventHandler(this.Btncheng_Click);
216 | //
217 | // Btnjia
218 | //
219 | this.Btnjia.Location = new System.Drawing.Point(375, 115);
220 | this.Btnjia.Name = "Btnjia";
221 | this.Btnjia.Size = new System.Drawing.Size(115, 106);
222 | this.Btnjia.TabIndex = 1;
223 | this.Btnjia.TabStop = false;
224 | this.Btnjia.Text = "+";
225 | this.Btnjia.UseVisualStyleBackColor = true;
226 | this.Btnjia.Click += new System.EventHandler(this.Btnjia_Click);
227 | //
228 | // ShowBox
229 | //
230 | this.ShowBox.CausesValidation = false;
231 | this.ShowBox.Font = new System.Drawing.Font("宋体", 21.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
232 | this.ShowBox.Location = new System.Drawing.Point(12, 12);
233 | this.ShowBox.Name = "ShowBox";
234 | this.ShowBox.ReadOnly = true;
235 | this.ShowBox.ShortcutsEnabled = false;
236 | this.ShowBox.Size = new System.Drawing.Size(478, 41);
237 | this.ShowBox.TabIndex = 1;
238 | this.ShowBox.TabStop = false;
239 | this.ShowBox.Text = "0";
240 | this.ShowBox.TextAlign = System.Windows.Forms.HorizontalAlignment.Right;
241 | //
242 | // Btnc
243 | //
244 | this.Btnc.CausesValidation = false;
245 | this.Btnc.Location = new System.Drawing.Point(12, 59);
246 | this.Btnc.Name = "Btnc";
247 | this.Btnc.Size = new System.Drawing.Size(115, 50);
248 | this.Btnc.TabIndex = 1;
249 | this.Btnc.TabStop = false;
250 | this.Btnc.Text = "C";
251 | this.Btnc.UseVisualStyleBackColor = true;
252 | this.Btnc.Click += new System.EventHandler(this.Btnc_Click);
253 | //
254 | // Form1
255 | //
256 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
257 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
258 | this.ClientSize = new System.Drawing.Size(506, 344);
259 | this.Controls.Add(this.Btnc);
260 | this.Controls.Add(this.ShowBox);
261 | this.Controls.Add(this.Btnjia);
262 | this.Controls.Add(this.Btncheng);
263 | this.Controls.Add(this.Btnjian);
264 | this.Controls.Add(this.Btnchu);
265 | this.Controls.Add(this.Btn0);
266 | this.Controls.Add(this.Btnenter);
267 | this.Controls.Add(this.Btndian);
268 | this.Controls.Add(this.Btn3);
269 | this.Controls.Add(this.Btn2);
270 | this.Controls.Add(this.Btn1);
271 | this.Controls.Add(this.Btn6);
272 | this.Controls.Add(this.Btn5);
273 | this.Controls.Add(this.Btn4);
274 | this.Controls.Add(this.Btn9);
275 | this.Controls.Add(this.Btn8);
276 | this.Controls.Add(this.Btn7);
277 | this.Cursor = System.Windows.Forms.Cursors.Default;
278 | this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
279 | this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
280 | this.KeyPreview = true;
281 | this.MaximizeBox = false;
282 | this.Name = "Form1";
283 | this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
284 | this.Text = "计算器 by itning";
285 | this.KeyDown += new System.Windows.Forms.KeyEventHandler(this.Form1_KeyDown);
286 | this.ResumeLayout(false);
287 | this.PerformLayout();
288 |
289 | }
290 |
291 | #endregion
292 |
293 | private System.Windows.Forms.Button Btn7;
294 | private System.Windows.Forms.Button Btn8;
295 | private System.Windows.Forms.Button Btn9;
296 | private System.Windows.Forms.Button Btn4;
297 | private System.Windows.Forms.Button Btn5;
298 | private System.Windows.Forms.Button Btn6;
299 | private System.Windows.Forms.Button Btn1;
300 | private System.Windows.Forms.Button Btn2;
301 | private System.Windows.Forms.Button Btn3;
302 | private System.Windows.Forms.Button Btndian;
303 | private System.Windows.Forms.Button Btnenter;
304 | private System.Windows.Forms.Button Btn0;
305 | private System.Windows.Forms.Button Btnchu;
306 | private System.Windows.Forms.Button Btnjian;
307 | private System.Windows.Forms.Button Btncheng;
308 | private System.Windows.Forms.Button Btnjia;
309 | private System.Windows.Forms.TextBox ShowBox;
310 | private System.Windows.Forms.Button Btnc;
311 | }
312 | }
313 |
314 |
--------------------------------------------------------------------------------
/CalculatorApp/Form1.resx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 | text/microsoft-resx
110 |
111 |
112 | 2.0
113 |
114 |
115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
116 |
117 |
118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
119 |
120 |
121 |
122 |
123 | AAABAAEAAAAAAAEAIACsGAAAFgAAAIlQTkcNChoKAAAADUlIRFIAAAEAAAABAAgGAAAAXHKoZgAAAAZi
124 | S0dEAP8A/wD/oL2nkwAAAAlwSFlzAAAASAAAAEgARslrPgAAF+pJREFUeNrt3XdwHOd5BvBnr3fcoRME
125 | SYC9gCIIkiIpipRsk1GxZVliosKRm9xG1sSTYmfiZGLLScZtJk48bpIs27EdWRnHJfZEtmSKkiixgEUU
126 | KYJFLAIBkOjA4YDrd3ubPwCIIIl2e9/iAHzP7y/NSNh5b7X77Lfl+17lgWebNBCRlEz5LoCI8ocBQCQx
127 | BgCRxBgARBJjABBJjAFAJDEGAJHEGABEEmMAEEmMAUAkMQYAkcQYAEQSYwAQSYwBQCQxBgCRxBgARBJj
128 | ABBJjAFAJDEGAJHEGABEEmMAEEmMAUAkMQYAkcQYAEQSYwAQSYwBQCQxBgCRxBgARBJjABBJjAFAJDEG
129 | AJHEGABEEmMAEEmMAUAkMQYAkcQs+S5gNin3WmA2KTApwAK/DW4b8zVXCoDGYBKRZAYagEgyg76Ymu+y
130 | Zg0GQA7sFgV1FU5smu9CsduCxUW2fJc060WSGbSEUjjVEcdbbXGc7Urku6QZTXng2SYt30XMNIUuM+5c
131 | 6sWfLfHCaVXyXY60MhrQPpDG/53tx75LESTSPJSzxQDIgstqwt3LvfjAci+cVg7vp5P2gTSePd6Hwy3R
132 | fJcyozAAJmlZiR2Pby5CmYd3TdPZoZYonjkSRH+czwkmg0fzJNy9zIuPrgvkuwyahI3zXKgssOLpQ718
133 | PjAJHMeOw2JS8JmNhTz5Z5i5Piv+6X2l2Frlzncp0x5HAOP49MZC3FbNg2gmspgUPH5LETQA+y5F8l3O
134 | tMURwBjuXenjyT/DKQAe31yELRwJjIkBMIp1c514uNaf7zJIAJMCfKwugIDTnO9SpiUGwHW8dhM+vj4A
135 | vt2fPXwOEz67uSjfZUxLDIDrPLTGjxI3H43MNjeVO3D7Qt4KXI8BMMJ8v5X3/bPYzpoCOCw85Efi3hjh
136 | zqVeWM0c/M9WpR4Lbq1y5buMaYUBMMTnMOM2DhFnva0c4V2DATBkywIXLCZe/We75SV2lHut+S5j2mAA
137 | DKmrcOa7BJoiaysc+S5h2mAAYPCDkUWcyy+NurkM+2F83wWgptwBl+DVe5KqhmgyA0XhbYV+GkyKArfN
138 | BJF3Z5zReRX3BACf3Szsw5++mIqfv9mHY60xxJKZfP+0WWGOz4rtiz24Y6lHyHMan50D32EMAACiLtLB
139 | mIov7+5ARzid7580q7T2p/CzY0FcCibx2KainEcDXMzlKu4JgZ470ceT30CvNUbQ0BHPdxmzCgNAkFRG
140 | w+GWWL7LmPX2c2qvUAwAQdQMEE/znt9ofKgqFgNAIB6axuPtu1jcnTSjxLj0t1AMAJpRQuwKJBQDgGYW
141 | 3mcJxQAgkhgDgEhiDAAiiTEAiCTGACCSGAOASGIMACKJMQCIJMYAIJIYA4BIYgwAIokxAIgkxgAgkhgD
142 | gEhiDAAiiTEAiCTGACCSGAOAZhYuCSgUA0AQBVyyeipYzNzHIjEABLFbFCwrtue7jFlvZSlbe4vEABBo
143 | 52ofrLxCGabMY8GOJZ58lzGrMAAEqilz4G+2FsPvMOe7lFnFalawpNiOL76nFA4LA1YkdgcWrK7Ciafu
144 | n4vjrTFEU3xiJUJVwIYKHw9VI3CvGqS2wpnvEogmxFsAIokxAIgkxgAgkhgDgEhiDAAiiTEAiCTGACCS
145 | GAOASGIMACKJMQCIJMYAIJIYA4BIYgwAIokxAIgkxgAgkhgDgEhiDAAiiTEAiCTGACCSGAOASGIMACKJ
146 | MQCIJMYAIJIY+wJMsWgqg3Rm8J8dFgW2PLQS0wDEhupQMNjXMB91AEAspSGVGWygYjcrsLPzz5RiAEyB
147 | 1v4U9l2K4nxPAue6EoinBw/4YrcFiwpt2Djfhdo5Drhtxg7I2gfS2NcUwZnOBC72JBFLDSZRiduCRUU2
148 | bJznQm2FAy6r8XUcaoniVEccF3qSiCQH6yh0mbGw0IZ1c53YOM9l+P4gBoChoqkMfnasDweaIkikb2wT
149 | 1h1JozsyeDIEnGZ8pC6AzQtcEH0NjCQzeO5ECPsuRd496UfqiqTRFUmjvjmKIpcZD63xY2u1W3gdqYyG
150 | nx/rw953Ioinb6yjN6qiNxrD0csx/PKtEB5c48ft1W6w67pxGAAGae5L4Zt7u9AVSU/qvw/GVHx7fzca
151 | Ojz45IZCmAQd9B3hNL72SifaBiZXR09UxfcO9uBkexyPri+E0yqmkGzrCMZUPFnfgxOtMTy+uYhdlw3C
152 | MZYB2gbS+OornZM++UfacyGMJ+t7hNTRHVHxlZc6Jn3SjfRaYwTfPdgNNZP1n94gGFPxL3smf/KPdLA5
153 | iv/Y340M+6waggEgWDqj4d/3dSMYU3VvY29jBM+fHcipDjUDfHt/N3qi+us4ejmGF87lWIc2WIeeMBxZ
154 | x29PhXKqg0bHABDsj28PoCmYzHk7/3MyhK6I/pP35YthnOtOCKkjlxB55WIYZzpzr+P3pwdyChEaHQNA
155 | oISqYff5sJBtxVIZvHRe39U3ldHwu9P9wurQOxpJZzT8IceRzLB4OoMXzonZt3QVA0Cgc10JdITFXaX2
156 | N0Wh6rj3PduZQHdUXB1HL0eh5xb8Yk8SV/pTwuo4cjmKpJ4dQmNiAAh0sj0udHtdkTSiyeyfwp3pTEAT
157 | eJ70RlW09WcfKKcFDP1H6hhII6xjf9DYGAAC6XnKPZFLOp4niLzqAoO3FKF49s8BOgWOhoZ1GbBNmTEA
158 | pjk9oTLaxz65OtuV/dXciMF61IDfJjMGgEBGfKuS1vEC3IhPaMu92X8zZsT+cBj8mbJsuDcFqvBZhW9z
159 | YaEt67+Z58/+bybitWd/qJR4xH9oygNWLO5PgW4qdwjdns2sYHFR9ifzqlK70O/nCxxmXUFUO8cpdH+4
160 | bCZUFogPWZkxAARaWGQTOgrYVu2GRcekgCXFdpQLvPqu1TlDsLLAgqqAuNHIxkrOEBSNe1Mgm1nBXcu8
161 | QrZltyi4e7lP19+aFOD+mgIhdSgA7lulb1sWk4J7VojbHx8QtC26igEg2I4lHqwszf1W4IMrfJjr038V
162 | 37LAjdUCbkkeXOPX9QDw3Tqq3FhbkfutwJ1LvRz+G4ABIJgC4HNbilCWwxD8lgUu7Fyd2xXcbAI+d0sx
163 | 5nj1nzRrK5x4//LcrroKgMc3F+V0K7C+0oldtf6c6qDRMQAMEHCa8aXtZVhSbM/6b2+tcuOxTUVCFuPw
164 | OUx4YkcplpdmX8eGShe+sK1EyFJhXrsJ//CeEqzQUcfmBS48vrlIwN6g0ZhX7fzrJ/JdRL7N9w8uhyWS
165 | y2rCtmo3rCYTLvQkJpxXX+QyY9eaAHbV+mEWtRoIAIfFhFsXuOGwmtDYm5zwW/oStwUP1/rxSJ1f2KIk
166 | 79ZR5YbdbEJjMInUBHV47SY8vMaPD9cFDFkM5FcnOb0Y4IpAhrKYFNxf48O2ahdePB/GkZYY+uIqNE0D
167 | oEBRgBWldmyodGHzfJew1XeuZzUruHelD9uq3dh9Powjl6PoilxbR02ZA+vmOrFpvhNOgz62sZgUfGiV
168 | D+9d7MEf3x7AkZYouqMqMpoGZaiOZSV21FU4saXKBQ+f+BtOeeDZJumnV91a5cZf3jJ1w8x0RtP1ek80
169 | NQMoCoRe6fVIqtqUr0r84C+a8/ujpwmOAPJgOpz8wOCDwukgX0uSEx8CEkmNAUAkMQYAkcQYAEQSYwAQ
170 | SYwBQCQxBgCRxBgARBJjABBJjAFAJDF+CjyFEqqGtv4UBhIZ2MwKChzmnBbb0CupargSSiGSysCsKAg4
171 | 81NHKqPhct9gHVaTAq/djDlei9D1DGl8DACDaRrwZmsMfzofRmMwif64+m6ra6t58OTbOM+FHUs8OS0i
172 | MpGMBpzqiGP3hTDe7kogFFff7R40XMf6SifuWupFqYF1aBrQ0BHHn86Hcb47MTQ7cvDfWUwK/E4zNs5z
173 | YvtiLypyWBGJJoezAWHcbMDW/jSeOtQzqaYaCoD7agrwwRU+4dOCO8JpPHmoF6c7Jm5dZlYG197bWVMA
174 | u0VsHb1RFd850IPTnRPXoSjAPSt8uH+Vz5DpyZwNOIgRa5B9lyJ45khw0l16NAC/aQihoT2Ov7+9RNjq
175 | t+e6E/jG3i6EE5OrQ9UGOws3dMTxhW0lCDjNQuo43hbHdw90Y2CSdWga8PvT/Whoj+PvbhNXB12LDwEN
176 | cLozge/X9+pq0XWuO4Gvvto54Yo5k/FObxJfe2XyJ/9IF3uS+ObeLiHdeJv7UvjW612TPvlv+A2vdrEl
177 | mEEYAIINJDL47oFuqDpaeg270J3Efx3vy6mOeFrDt/d353TivNObxHM51hFLafjWvm4k0vr3R1MwiZ8c
178 | DeZUB42OASDYbxpC6Ilm30n3ensuhNHcp7/L7/+e6ke7gG7FL5wbwOWQ/jqeP9uPNgHdivc3RfFOb/ad
179 | kml8DACBBhIZ7G+KCtlWStWw50JY19/G0xp2XxgQUkdGA/7wtr5txdP6f8P11IyGP50Xsy26igEg0JnO
180 | OELx3K/+ww42R3XdSpxsj+u67x/LsSsxXc8kTnfG0RsTtz9OtMVyupWgGzEABDrdOfHrvmyE4qqu24kz
181 | k3jNlo3+RAZtOm4nzneLHbL3RlVdDxJpbAwAgUTc+1+vtT/7E68zLLYONaOhX8fIJijw6j+sbSD35wl0
182 | FQNAIM2A0ameA17Eq7vrdUayP5mN+KI3ncPbFboRA0AgqwHfqug53H128f9b3bbsT2cjlh1ne3CxuDcF
183 | WliovwHmWFbp6DS8sEh8HT5H9ulmRDdf6zTpqTBbMAAEqil3CO2yU+Awo7Ig+6+1V5bahdZR6DJjkY5w
184 | WzPHCbPAqX0lbgsqfGwRLhIDQKAFfhsWF2XfAXcsOxZ7dDUKXRCw6epMPJZbFrh1de8p91iwTEdH4LFs
185 | XuASPkFJdgwAgUwKsLPGJ2RbHrsJ25d4dP2tAuAvVhcIGQU4rSbcu1Lfb1IU4P5VPiHz+wscZty51Jv7
186 | hugaDADBaiucuH2hvhN3mALgo3WBnGbA1ZQ7cq4DAD61oTCnh4qryx24Q8CJu6vWjyIXZwSKxgAwwMfW
187 | +XN6IHjPUCvvXCgAPrEhgJvnuXRv4+5lXtxSpf/vhz2y1o81c7J/mDn8O3bV+nH7wtz2B42OAWAAp9WE
188 | L28vw/bF2V2BFQX4cF0Au2r9QuqwmBT81ZZi3LHUm9U7eYtJwc6aAnx0XUDIu3yrScHnt5XgrmXZ1QEA
189 | u9b6dd+C0MS4IIhBHBYFn7q5EHVznfjRkd5xvxI0KcCiIjseqfVjucCHZsDgu/hH1wewodKJ/3wjOO7M
190 | PpMCzPfb8PH1ASwvEVuHzazgY+sG63j6cO+4MxUVDD7I/EhdAKvKxNZB1+KSYDBuSbBh8bSG+uYoDjRF
191 | EE0N7W4NgAIsLbahbq4TNWX6hsjZSKoaDrVEUd8URei6b+oXF9mwbq4Tq8uNryOlaqhvieJwcxTB+LV1
192 | LC22YXW5A2srnIbWwCXBBnEEMAUcFgW3L3Tn/T7WZlawtcqNrVX5rcM6TeogPgMgkhoDgEhiDAAiiTEA
193 | iCTGACCSGAOASGIMACKJMQCIJMYAIJIYA4BIYgwAIolxLsAUUTNASyiFllASoZgKk0lBuceCqkIbAk6z
194 | IUtojyajDdbR3DdUh6Kg1GNBVcCKIrdlSuu4EkqhMZhE/9DEpHKPBdWFNhS6pm5/yI4BYLBwMoMXzw3g
195 | lYsRdEVunAKrKMDKUgfev9yLdXONmwEXTmSw+0IYexsjozbrHK7jAyu8WFvhNOwEjKYyePliBHsuhNE6
196 | Wh0AVpY5sGOJB5vmuYQsJ0ZjYwAY6MjlGH50pHfcDjmaBpzqiONURxxrK5z4xIYAStxi/7ecaIvjqUO9
197 | 6ImOPQd/ZB21FU58+uZC4UtwnepI4Pv1PeiOjFMHrtaxZo4Dj64vRLmXh6lR+AzAIL86GcK3Xu/Kqj3W
198 | m60x/POeTnQLbDH28sUwvv5q17gn//WOt8bwjy+240KPuN5+L54bwFdf6Rz35L/eibY4nnipQ0ibcxod
199 | A8AArzVG8KuGEPR0seoMp/HESx3oE9BX70BTFD883IuMjp5lwZiKf3u9C30Cuh0fvRzDT4/16WrrFYyp
200 | +MpLHegMMwSMwAAQrCuSxo+PBnPqE9gVTuNHR4M51RGMqfjx0V5dITSsN6rih4d7c6qjL67iyUM9utqc
201 | v1tHTMXTh3t1tUmj8TEABPt1QwixVO4trN+4HMOZHNqN//ZUv5BW2kcvx9DQob/d+G8bxNTR0B7HW21i
202 | 254TA0Co7oiKg01RIdtSNQ0vnhvQ9bfBmIpX3wkL+11/OKuvjkgyg9caI0Jq0ADsuSDuN9EgBoBAZ7oS
203 | iKfFDVTfbI0hpWPo3NARR0JgHed7krp+1/G2OKICRkPD3mqPI5IUtz1iAAh1ql3sEDWe1tDWn/3Dr4sC
204 | n94DwEBCHXc58bE09oqtI5bKCA0UYgAIFTHg4NTz9Fv0azNNA0I63gaEDbhaXw7xbYBIDIBprl1HABjx
205 | tPyi4Ku5Xlour1foBgwAgRwGtK7W0ZUbRTk0FR1LdSD7XodG7A+7hYesSNybAi0tFt/Gan1l9s05q3Jo
206 | TDoaRQE8tuwPlXkFVuH7w+/gISsS96ZAq8rssOq5ZI9hjtei63v8tRUOWEzi6ijzWLBMR6/AtXOdsAnc
207 | HxU+K0o9nBcgEgNAoAqfFSsFNvd87yIP9JzHJW4LaivE9fh7n846Cp1moTMcb1voFhqwxAAQ7qE1fpgE
208 | zGEt91pwx1Kv7r9/eI1fyD14mceCu5brr+OBm/xCRgFlHgt2ZNlunSbGABBsYaEND64pyGkbVrOCz24q
209 | gj2HE7iywIr7VuVWh6IAn9lYBGsOtxMVPgseqQvkvD8e21QEt47nEDQ+7lED3LPch63V+jrfDp/8eu65
210 | r/ehVT7cu9Kn++8fXV+IVWW513HHEg/uq9EXRiZl8ORfIfDWiq7iExUDmE3AY0Mn8U/fCCKlTu7dtdtm
211 | wue3lQh9jrCr1o9Cpxm/ONE36c+D/Q4zPnlzITZUirt/f+imAlT6LHj6cO+k67BbFPzt1hKsmSPueQZd
212 | iwFgELMC7FjswU3lDvz3iT4cGGeSkMtqwq3Vbuxc5YPfgHf4dy7zYl2lE88e7xt3spLTasKm+S78+eoC
213 | FAteDQgAbq1yY0WpA79uCI07scdmVrBpvgsPD4UXGUd54Nkm6T+t2rLAjc9tKTJs+6oGNAeTqG+JIpLM
214 | oCeqosBhhsU0uA7fshK78OW3xnIpmMThlhj6EyqCMRV2iwkuq4JFhXasnuMw5MQfTUtfCgdbouiPqwjF
215 | M3BYFNgtCqoDNtSUO1Bm4Os+VQN2Pdc8Jb9zuuMIANC1Uk02zApQXWhDteAPdPSoCthQpeOrPtHm+a2Y
216 | 58/tIaVevVksjzbb8SEggKNXYpxmKhEjJinNVAwAAGpG40EhkcMtsXyXMG0wAIaIWsmHpr+zXfqXWptt
217 | GABD9l0Ss3QVTW9dERVnO7m24DAGwJCOcJrrz0tg9/mBnFZKnm0YAEOSqobd57no5GwWSWbw6jsc6Y3E
218 | ABhhz8UwG1DMYs+fHdC1tNlsxgAYIZbK4Cdv5NaQg6an9oE0nj/bn+8yph0GwHWOXYlhr6C17Gl6yGjA
219 | D+p7hC7ZPlswAEbx0zeCaOrLfhlsmp5++VYfX/2NgQEwikgyg2+82oleAQ06Kb/2XAjjd6c59B8LA2AM
220 | PVEV//pyZ1btvWl62d8UxY+PBvnabxwMgHFcCaXwpd0daOP3ATPOi+cG8L2DPYZP9JrpGAAT6Ayn8cUX
221 | 2vml4AwRS2n4QX0PfnI0mFNLcllwOvAkxFIZfOdAD463xfHA6gIuTT1NnWyP45kjvfyiMws8krPwemME
222 | R1pi2L7Eg/cv86JwihbPoLGpGaAxmMSvG0I43hrj/X6WuCKQTiYFuHmeC1ur3KgK2FDsZhhMpcZgEida
223 | 46hviQrvQiwTjgB0ymhAfXMU9c1ROK0mlLgtWOC3osxrAVtXGCOlarjUl0LHQBod4RSv9gIwAASIpTJo
224 | 7kuiuY9XIppZ+BaASGIMACKJMQCIJMYAIJIYA4BIYgwAIokxAIgkxgAgkhgDgEhiDAAiiTEAiCTGACCS
225 | GAOASGIMACKJMQCIJMYAIJIYA4BIYgwAIokxAIgkxgAgkhgDgEhiDAAiiTEAiCTGACCSGAOASGIMACKJ
226 | MQCIJMYAIJIYA4BIYgwAIokxAIgkxgAgkhgDgEhiDAAiiTEAiCT2/871luVeqI4eAAAAJXRFWHRkYXRl
227 | OmNyZWF0ZQAyMDE2LTA1LTI1VDIyOjIxOjExKzA4OjAwAZJF+AAAACV0RVh0ZGF0ZTptb2RpZnkAMjAx
228 | Ni0wNS0yNVQyMTozODo1OCswODowMOFMLqkAAAAASUVORK5CYII=
229 |
230 |
231 |
--------------------------------------------------------------------------------