C\#계산기 코드 작성

7563 단어 C#계산기
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\#창 프로그램 을 실현 하여 윤년 여 부 를 판단 합 니 다.학습 을 하 십시오.
안 드 로 이 드 계산기 기능 의 실현 에 대해 서 는 주 제 를 살 펴 보 세 요계산기 기능 집합학습 을 합 니 다.
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기