외로운 Nova의 작업실

c# 계산기프로그램만들기 - 3 본문

Programming/C#

c# 계산기프로그램만들기 - 3

Nova_ 2022. 3. 22. 11:33

어제 2개의 숫자와 더하기만 있는 계산기를 만들어보았다.

오늘은 더 발전 시켜서 0~9까지 숫자를 만들고 더하기와 빼기 cancel버튼 결과 버튼을 만들어 볼 것이다.

최대한 ui 버튼 이벤트 부분에선 코드작성이 아닌 함수 실행으로 구현해야 나중에 ui변경때 쉬움으로 최대한 그렇게 해봤다. 아래는 일단 계산기의 ui이다.

최대한 윈도우의 계산기 모양이랑 맞추려고 노력했다. 사용자들이 많이 쓰는 계산기 모양으로 만들어야 실수가 적다고 생각하기 때문이였다 이제 아래는 구현 코드이다. 이번에 구현하면서 좀 특별한 부분은 =버튼을 누르고 숫자버튼을 누르면 다시 처음부터 계산되게하고 +나- 버튼을 누르면 그 계산을 이어나가게 구현했다.

namespace CalCulator
{
    public partial class Form1 : Form
    {

        int result = 0;
        int gear = 0;// 빼기엿는지 더하기 엿는지 확인하는 변수 1-더하기 2-빼기 3-결과보기 result버튼 클릭시 이 변수를 확인해서 연산함public Form1()
        {
            InitializeComponent();
        }

//여기서부터는 내장 함수 정의private void WriteNumber(String Number)//숫자를 문자열로 넣으면 스크린에 문자를 넣어주는 함수,반환값은 없다
        {
            if (Screen.Text == "0")
            {
                Screen.Text = Number;
            }
            else if(gear == 3)
            {
                Screen.Text = Number;
                ChangeGear(0);
                result = 0;
            }
            else
            {
                Screen.Text += Number;
            }

            return;

        }

        private void Add()//스크린 숫자를 result변수에 더해줌
        {
            result = result + Convert.ToInt32(Screen.Text);

            return;
        }
        private void Sub()//스크린 숫자를 result변수에 더해줌
        {
            result = result - Convert.ToInt32(Screen.Text);

            return;
        }
        private void ChangeGear(int Temp)
        {
            gear = Temp;
        }

        private void PreResultProcessing()
        {
            if(gear == 0)
            {
                Add();
            }
            else if(gear == 1)
            {
                Add();
            }
            else if(gear == 2)
            {
                Sub();
            }

            return;
        }

//여기서부터는 숫자버튼 이벤트 함수 정의private void NumberButton1_Click(object sender, EventArgs e)
        {
            WriteNumber("1");
        }

        private void NumberButton2_Click(object sender, EventArgs e)
        {
            WriteNumber("2");
        }

        private void NumberButton3_Click(object sender, EventArgs e)
        {
            WriteNumber("3");
        }

        private void NumberButton4_Click(object sender, EventArgs e)
        {
            WriteNumber("4");

        }

        private void NumberButton5_Click(object sender, EventArgs e)
        {
            WriteNumber("5");
        }

        private void Numberbutton6_Click(object sender, EventArgs e)
        {
            WriteNumber("6");
        }

        private void NumberButton7_Click(object sender, EventArgs e)
        {
            WriteNumber("7");
        }

        private void NumberButton8_Click(object sender, EventArgs e)
        {
            WriteNumber("8");
        }

        private void NumberButton9_Click(object sender, EventArgs e)
        {
            WriteNumber("9");
        }

        private void NumberButton0_Click(object sender, EventArgs e)
        {
            WriteNumber("0");
        }

//기호버튼 이벤트 함수 정의private void PlusButton_Click(object sender, EventArgs e)
        {
            PreResultProcessing();
            ChangeGear(1);

            Screen.Text = "0";
        }

        private void ResultButton_Click(object sender, EventArgs e)
        {

            PreResultProcessing();

            ChangeGear(3);

            Screen.Text = result.ToString();
        }

        private void MinusButton_Click(object sender, EventArgs e)
        {
            PreResultProcessing();
            ChangeGear(2);

            Screen.Text = "0";
        }

        private void CancelButton_Click(object sender, EventArgs e)
        {
            result = 0;
            gear = 0;
            Screen.Text = "0";

            MessageBox.Show("계산기가 초기화 되었습니다");
        }
    }
}

최대한 주석도 붙이려고 노력했으니 만약 나를 따라서 계산기를 만들어보는 실습을 한다면 천천히 자세하게 읽어보는걸 추천한다. 나는 워라벨을 중시하는 사람이라서 주말에는 쉰다. 돈보다 중요한게 나의 행복이니까. 근데 행복하려면 돈이 있어야하는게 함저....ㅇ 

Comments