C\#계산기 코드 작성
물론 이 프로그램 은 Windows 첨부 파일 인 자체 다기 능 계산기 도 설치 되 어 있 지 않다.
그러나 이 프로그램의 논 리 는 매우 생각해 볼 만하 다.우선 사용자 가+-*/=등 연산 기호,숫자 키 를 누 른 후에 계산기 의 상태 기록 문 제 를 잘 고려 해 야 한다.
그리고 어떤 버튼 을 여러 번 누 르 는 문 제 를 방지 해 야 한다.예 를 들 어 소수점.사용자 가 한 수 를 입력 할 때 두 번 입력 하 게 해 서 는 안 된다.
마지막 으로 두 개의 배열 을 만들어 야 한다.하 나 는 사용자 가 입력 한 숫자 를 저장 하고 다른 하 나 는 사용자 가 입력 한 기 호 를 저장 해 야 한다.
제작 과정 은 다음 과 같다.
1.레이아웃 은 다음 과 같 습 니 다.에서 제공 한 방법 을 참고 하여 안의 단추 의 위 치 를 잘 배치 하고 이 창 이 크기 를 조정 하지 못 하 게 하 며 각 구성 요소 의 이름 을 바 꿀 수 있 습 니 다.
2.Form1.cs 의 구체 적 인 코드 는 다음 과 같다.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace Calculator
{
public partial class Form1 : Form
{
private List<double> value_list = new List<double>();//
private List<int> operator_list = new List<int>();// , + 0,- 1,× 2,÷ 3
//
private bool add_flag = false;//+
private bool minus_flag = false;//-
private bool multi_flag = false;//×
private bool div_flag = false;//÷
private bool result_flag = false;//=
private bool can_operate_flag = false;// =
public Form1()
{
InitializeComponent();
}
// , 0 ., 000001223 , C# 000001223 1223
private void num_down(string num)
{
if (add_flag || minus_flag || multi_flag || div_flag || result_flag)
{
if (result_flag)// ,
{
label1.Text = "";
}
textBox1.Clear();//
add_flag = false;
minus_flag = false;
multi_flag = false;
div_flag = false;
result_flag = false;
}
if ((num.Equals(".") && textBox1.Text.IndexOf(".") < 0) || !num.Equals("."))
{
// ., .
textBox1.Text += num;
label1.Text += num;
can_operate_flag = true;
}
}
private void bt0_Click(object sender, EventArgs e)
{
num_down("0");
}
private void bt1_Click(object sender, EventArgs e)
{
num_down("1");
}
private void bt2_Click(object sender, EventArgs e)
{
num_down("2");
}
private void bt3_Click(object sender, EventArgs e)
{
num_down("3");
}
private void bt4_Click(object sender, EventArgs e)
{
num_down("4");
}
private void bt5_Click(object sender, EventArgs e)
{
num_down("5");
}
private void bt6_Click(object sender, EventArgs e)
{
num_down("6");
}
private void bt7_Click(object sender, EventArgs e)
{
num_down("7");
}
private void bt8_Click(object sender, EventArgs e)
{
num_down("8");
}
private void bt9_Click(object sender, EventArgs e)
{
num_down("9");
}
private void bt_point_Click(object sender, EventArgs e)
{
num_down(".");
}
//
private void bt_plus_Click(object sender, EventArgs e)
{
if (!add_flag)// ,
{
result_flag = false;
value_list.Add(double.Parse(textBox1.Text));// value_list
operator_list.Add(0);
label1.Text += "+";
add_flag = true;
can_operate_flag = false;// , , 111+,
}
}
private void bt_minus_Click(object sender, EventArgs e)
{
if (!minus_flag)
{
result_flag = false;
value_list.Add(double.Parse(textBox1.Text));
operator_list.Add(1);
label1.Text += "-";
minus_flag = true;
can_operate_flag = false;
}
}
private void bt_multi_Click(object sender, EventArgs e)
{
if (!multi_flag)
{
result_flag = false;
value_list.Add(double.Parse(textBox1.Text));
operator_list.Add(2);
label1.Text = "(" + label1.Text + ")" + "×";// 。( , ,:P)
multi_flag = true;
can_operate_flag = false;
}
}
private void bt_div_Click(object sender, EventArgs e)
{
if (!div_flag)
{
result_flag = false;
value_list.Add(double.Parse(textBox1.Text));
operator_list.Add(3);
label1.Text = "(" + label1.Text + ")" + "÷";
div_flag = true;
can_operate_flag = false;
}
}
private void bt_result_Click(object sender, EventArgs e)
{
if (value_list.Count > 0 && operator_list.Count > 0 && can_operate_flag)
{// , , =。
value_list.Add(double.Parse(textBox1.Text));
double total = value_list[0];
for (int i = 0; i < operator_list.Count; i++)
{
int _operator = operator_list[i];//operator C# , _
switch (_operator)
{
case 0:
total += value_list[i + 1];
break;
case 1:
total -= value_list[i + 1];
break;
case 2:
total *= value_list[i + 1];
break;
case 3:
total /= value_list[i + 1];
break;
}
}
textBox1.Text = total + "";
label1.Text = total + "";
operator_list.Clear();// ,
value_list.Clear();
result_flag = true;// =
}
}
//CE ,
private void btCE_Click(object sender, EventArgs e)
{
operator_list.Clear();
value_list.Clear();
add_flag = false;
minus_flag = false;
multi_flag = false;
div_flag = false;
result_flag = false;
can_operate_flag = false;
textBox1.Clear();
label1.Text = "";
}
}
}
여기 서 기본 사상 은 사용자 가 임의의 기호 키 를 누 르 면 현재 입력 한 숫자 를 기록 하여 배열 value 에 넣 습 니 다.list。등호 가 눌 렸 을 때 예 를 들 어 사용자 가 100+222+33 을 입력 했 을 때 토 탈 을 100 으로 초기 화한 다음 에 연산 자+목표 숫자 222 를 꺼 내 토 탈=토 탈+222 를 추출 한 다음 에 이런 식 으로 추정한다.
연산 이 끝나 면 결 과 를 textBox 에 걸 고 사용자 가 다른 기호 키 를 누 르 면 결 과 는 입력 한 배열 value 에 들 어 갑 니 다.list
더 많은 계산기 기능 이 실현 되 었 습 니 다.주 제 를 클릭 하 십시오간단하게 C\#창 프로그램 을 실현 하여 윤년 여 부 를 판단 합 니 다.학습 을 하 십시오.
안 드 로 이 드 계산기 기능 의 실현 에 대해 서 는 주 제 를 살 펴 보 세 요계산기 기능 집합학습 을 합 니 다.
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
WebView2를 Visual Studio 2017 Express에서 사용할 수 있을 때까지Evergreen .Net Framework SDK 4.8 VisualStudio2017에서 NuGet을 사용하기 때문에 패키지 관리 방법을 packages.config 대신 PackageReference를 사용해야...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.