C# 계산기 만들기

Park Yeeun·2023년 7월 2일
0

📌 enum 클래스

enumerations ( = 구체적으로 나열)
상수를 , 로 모아놓은 열거형 클래스

✔ 특징

  • 속성 메서드 생성자 보유 가능
  • public static const 성격 띔
  • 즉, 변경 불가 (재정의 불가)
  • 객체 생성 불가

💬 예시 코드

enum Operators
{
	None,
	Add,
    Subtract,
    Multiply,
    Divide,
    Result
}

Operators currentOperator = Operators.None;
Boolean operatorChangeFlag = false;
int firstOperand = 0;
int secondOperand = 0;

firstOperand : 첫번째 피연산자
secondOperand : 두번째 피연산자
currentOperator : 현재 연산자


프론트

TableLayoutPanel : 테이블 모양 만들기
display(Label) -> TextAlign : TopRight / Dock : Top / AutoSize : False


📌 숫자 버튼을 눌렀을 경우

💬 코드

operatorChangeFlag

private void ButtonOne_Click(object sender, EventArgs e)
{
	if (operatorChangeFlag == true)
    {
      display.Text = "";
      operatorChangeFlag = false;
    }

	string strNumber= display.Text += "1";
	int intNumber = Int32.Parse(strNumber);
	display.Text = intNumber.ToString();
        
}

📌 연산 버튼을 눌렀을 경우

💬 코드

  private void ButtonAdd_Click(object sender, EventArgs e)
  {
    firstOperand = Int32.Parse(display.Text);
    currentOperator = Operators.Add;
    operatorChangeFlag = true; 
  }

  private void ButtonResult_Click(object sender, EventArgs e)
  {
    secondOperand = Int32.Parse(display.Text);
    if (currentOperator == Operators.Add)
    {
      firstOperand += secondOperand;
      display.Text = firstOperand.ToString();
    }
    else if (currentOperator == Operators.Subtract)
    {
      firstOperand -= secondOperand;
      display.Text = firstOperand.ToString();
    }
    else if (currentOperator == Operators.Multiply)
    {
      firstOperand *= secondOperand;
      display.Text = firstOperand.ToString();
    }
    else if (currentOperator == Operators.Divide)
    {
      if (secondOperand == 0)
      {
          display.Text = "0으로 나눌 수 없습니다.";

      }
      else
      {
          firstOperand /= secondOperand;
          display.Text = firstOperand.ToString();
      }

    }
  }

  private void ButtonAllClear_Click(object sender, EventArgs e)
  {
    firstOperand = 0;
    secondOperand = 0;
    currentOperator = Operators.None;
    display.Text = "0";
  }

📌 전체 코드

 public partial class Form1 : Form
 {
   enum Operators
   {
     None,
     Add,
     Subtract,
     Multiply,
     Divide,
     Result
   }

   Operators currentOperator=Operators.None;
   Boolean operatorChangeFlag = false;
   int firstOperand = 0;
   int secondOperand = 0;

  public Form1()
  {
      InitializeComponent();
  }

  private void ButtonOne_Click(object sender, EventArgs e)
  {
    if (operatorChangeFlag == true)
    {
      display.Text = "";
      operatorChangeFlag = false;
    }

    string strNumber= display.Text += "1";
    int intNumber = Int32.Parse(strNumber);
    display.Text = intNumber.ToString();

  }

  private void ButtonTwo_Click(object sender, EventArgs e)
  {
    if (operatorChangeFlag == true)
    {
      display.Text = "";
      operatorChangeFlag = false;
    }

    string strNumber= display.Text += "2";
    int intNumber = Int32.Parse(strNumber);
    display.Text = intNumber.ToString();

  }

  private void ButtonThree_Click(object sender, EventArgs e)
  {

    if (operatorChangeFlag == true)
    {
      display.Text = "";
      operatorChangeFlag = false;
    }

    string strNumber= display.Text += "1";
    int intNumber = Int32.Parse(strNumber);
    display.Text = intNumber.ToString();

  }

  private void ButtonFour_Click(object sender, EventArgs e)
  {
    if (operatorChangeFlag == true)
    {
      display.Text = "";
      operatorChangeFlag = false;
    }

    string strNumber= display.Text += "4";
    int intNumber = Int32.Parse(strNumber);
    display.Text = intNumber.ToString();

  }

  private void ButtonFive_Click(object sender, EventArgs e)
  {
    if (operatorChangeFlag == true)
    {
      display.Text = "";
      operatorChangeFlag = false;
    }

    string strNumber= display.Text += "5";
    int intNumber = Int32.Parse(strNumber);
    display.Text = intNumber.ToString();

  }

  private void ButtonSix_Click(object sender, EventArgs e)
  {
    if (operatorChangeFlag == true)
    {
      display.Text = "";
      operatorChangeFlag = false;
    }

    string strNumber= display.Text += "6";
    int intNumber = Int32.Parse(strNumber);
    display.Text = intNumber.ToString();

  }

  private void ButtonSeven_Click(object sender, EventArgs e)
  {
    if (operatorChangeFlag == true)
    {
      display.Text = "";
      operatorChangeFlag = false;
    }

    string strNumber= display.Text += "7";
    int intNumber = Int32.Parse(strNumber);
    display.Text = intNumber.ToString();

  }

  private void ButtonEight_Click(object sender, EventArgs e)
  {
    if (operatorChangeFlag == true)
    {
      display.Text = "";
      operatorChangeFlag = false;
    }

    string strNumber= display.Text += "8";
    int intNumber = Int32.Parse(strNumber);
    display.Text = intNumber.ToString();

  }

  private void ButtonNine_Click(object sender, EventArgs e)
  {
    if (operatorChangeFlag == true)
    {
      display.Text = "";
      operatorChangeFlag = false;
    }

    string strNumber= display.Text += "9";
    int intNumber = Int32.Parse(strNumber);
    display.Text = intNumber.ToString();

  }

  private void ButtonZero_Click(object sender, EventArgs e)
  {
    if (operatorChangeFlag == true)
    {
      display.Text = "";
      operatorChangeFlag = false;
    }

    string strNumber= display.Text += "0";
    int intNumber = Int32.Parse(strNumber);
    display.Text = intNumber.ToString();

  }

  private void ButtonAdd_Click(object sender, EventArgs e)
  {
    firstOperand = Int32.Parse(display.Text);
    currentOperator = Operators.Add;
    operatorChangeFlag = true; 
  }

  private void ButtonResult_Click(object sender, EventArgs e)
  {
    secondOperand = Int32.Parse(display.Text);
    if (currentOperator == Operators.Add)
    {
      firstOperand += secondOperand;
      display.Text = firstOperand.ToString();
    }
    else if (currentOperator == Operators.Subtract)
    {
      firstOperand -= secondOperand;
      display.Text = firstOperand.ToString();
    }
    else if (currentOperator == Operators.Multiply)
    {
      firstOperand *= secondOperand;
      display.Text = firstOperand.ToString();
    }
    else if (currentOperator == Operators.Divide)
    {
      if (secondOperand == 0)
      {
          display.Text = "0으로 나눌 수 없습니다.";

      }
      else
      {
          firstOperand /= secondOperand;
          display.Text = firstOperand.ToString();
      }

    }
  }

  private void ButtonAllClear_Click(object sender, EventArgs e)
  {
    firstOperand = 0;
    secondOperand = 0;
    currentOperator = Operators.None;
    display.Text = "0";
  }

  private void ButtonSubtract_Click(object sender, EventArgs e)
  {
    firstOperand = Int32.Parse(display.Text);
    currentOperator = Operators.Subtract;
    operatorChangeFlag = true; 
  }

  private void ButtonMultiply_Click(object sender, EventArgs e)
  {
    firstOperand = Int32.Parse(display.Text);
    currentOperator = Operators.Multiply;
    operatorChangeFlag = true; 
  }

  private void ButtonDivide_Click(object sender, EventArgs e)
  {
    firstOperand = Int32.Parse(display.Text);
    currentOperator = Operators.Divide;
    operatorChangeFlag = true; 
  }
}
profile
새싹 개발자입니당 🌱

0개의 댓글