嘤嘤嘤~~電卓の作成に関しては、ある程度の経験があります。以前にJava GUIで作成したことがあります。これよりもはるかに複雑です。現在のC#では、1人のオペレーターの操作しか実現できません。とりあえずそれらの多くを考慮しましたが、確かに達成可能です。私のJavaバージョンが実装されており、しばらくしてリンクを投稿します。実装のアイデアは似ているため、ここではこれ以上の実装はありません。
この列には他のJavaGUIの例があります。。大きな宿題のウェブ版になりたいのですが、電卓を実現するために、最後にo(╥﹏╥)o javaGUIで実現できるかどうかわかりません
(4つの剰余と他の演算、多項式演算を実現できます)
書き方がとても簡単なので、あっという間に終わりました。また、C、C ++、およびC#はすべて相互にリンクされており、Cファミリは1つのファミリであることがわかりました。。。使用したい関数やタイプは本当に問題ありません。Baiduで確認する必要はありません。
1.プログラム名:
C#実装計算機
2.機能の説明:
この計算機は、2つのオペランド(10進数と整数の両方)の加算、減算、乗算、除算、および2乗(これは、ループを変更するか、pow関数を使用して任意の累乗を実現することで実現できます)、除算、およびクリア操作を実現できます。中でも除算演算は、除数が0の場合を考慮する必要があるため、特に特殊です。これもここで処理され、0の場合はプロンプトが表示されます。
3.メインインターフェイスディスプレイ:
ここでは電卓をドレスアップするために何もしませんでした。背景色を変更しただけです。それを見ると、写真をアップロードできないようでした。可能であれば、電卓の背景とボタンをよりリアルにすることができます。ちなみに、すべてのキーの位置は同じサイズで、各行と各列の間隔も計算されます(幅と位置に基づいて計算されます)。どのキー位置が1ピクセルを超えているかは表示されません。権利など。この状況。
4.エフェクト表示:
常に最初にユーザー入力のスクリーンショットを撮り、次に最終結果のスクリーンショットを撮ります
添加:
減算:
乗算:
分割:
ゼロ除算タイプ
平方:
ユーザーは数字を入力し、x ^ 2キーを直接押してから、等号キーを押します。
バックキー:
Cキーをクリアします。
5つの機能的アルゴリズムの説明:
私が使用しているのは、ユーザーが入力したすべてのコンテンツ、つまりオペランド+演算子をテキストボックスに表示することです。したがって、最終的に取得したら、テキストボックスの文字列全体をトラバースして、どのような種類かを判断する必要があります。操作です、そして結果を計算します。二乗演算の場合、タグ変数が設定されるため、1つのオペランドのみを取得する必要があります。
戻るキー:一度に戻ることができるのは1文字のみです。最初に現在のテキストボックスのすべてのコンテンツを取得してから、文字列インターセプト機能を使用してインターセプトします(もちろん、アドレスを使用して直接削除することもできます)。
クリアキー:これは実装が簡単で、直接テキストボックス内の文字列の値を空に設定するだけです。
6、すべてのコード:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Calculator
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
char op; //运算符
double num1, num2; //运算数
// 数字键
private void button1_Click(object sender, EventArgs e)
{
textBox1.Text += "1";
}
private void button2_Click(object sender, EventArgs e)
{
textBox1.Text += "2";
}
private void button3_Click(object sender, EventArgs e)
{
textBox1.Text += "3";
}
private void button4_Click(object sender, EventArgs e)
{
textBox1.Text += "4";
}
private void button5_Click(object sender, EventArgs e)
{
textBox1.Text += "5";
}
private void button6_Click(object sender, EventArgs e)
{
textBox1.Text += "6";
}
private void button7_Click(object sender, EventArgs e)
{
textBox1.Text += "7";
}
private void button8_Click(object sender, EventArgs e)
{
textBox1.Text += "8";
}
private void button9_Click(object sender, EventArgs e)
{
textBox1.Text += "9";
}
private void button0_Click(object sender, EventArgs e)
{
textBox1.Text += "0";
}
// 小数点键
private void buttonDot_Click(object sender, EventArgs e)
{
textBox1.Text += ".";
}
// 加法
private void buttonAdd_Click(object sender, EventArgs e)
{
op = '+';
textBox1.Text += "+";
}
// 减法
private void buttonSub_Click(object sender, EventArgs e)
{
op = '-';
textBox1.Text += "-";
}
// 乘法
private void buttonMul_Click(object sender, EventArgs e)
{
op = '*';
textBox1.Text += "*";
}
// 除法
private void buttonDiv_Click(object sender, EventArgs e)
{
op = '/';
textBox1.Text += "/";
}
// 平方
private void buttonPow_Click(object sender, EventArgs e)
{
op = '^';
}
// 退位,回退键
private void buttonBack_Click(object sender, EventArgs e)
{
String str = textBox1.Text;
if (str.Length != 0)
{
textBox1.Text = str.Substring(0, str.Length - 1);
}
}
// 等号键,计算结果
private void buttonRes_Click(object sender, EventArgs e)
{
String str = textBox1.Text;
bool flag = true; //用来判断是否是平方操作
int i;
for(i = 0; i < str.Length; i++)
{
if(!(str[i] >='0' && str[i] <='9' || str[i] == '.')){
num1 = Convert.ToDouble(str.Substring(0, i));
num2 = Convert.ToDouble(str.Substring(i + 1));
flag = false;
break;
}
}
if (flag)
{
num1 = Convert.ToDouble(str);
}
if (op == '+')
{
textBox1.Text = "";
textBox1.Text += (num1 + num2);
}
else if (op == '-')
{
textBox1.Text = "";
textBox1.Text += (num1 - num2);
}
else if (op == '*')
{
textBox1.Text = "";
textBox1.Text += (num1 * num2);
}
else if (op == '/')
{
textBox1.Text = "";
if(num2 == 0)
{
textBox1.Text = "除数为0,Error!";
}
else
{
textBox1.Text += (num1 / num2);
}
}
else if (op == '^')
{
textBox1.Text = "";
textBox1.Text += (num1 * num1);
}
}
// 清零键
private void buttonClc_Click(object sender, EventArgs e)
{
textBox1.Text = "";
}
}
}