728x90

1.안내

예전에 초보자들도 쉽게 만들수 있는 계산기

초보자 누구나 할 수 있는 간단하지만 알찬 계산기!!

코더만 보시더라도 알만한 내용이니 처음 UWP나 WPF 시작하시는 분이 보면 좋을 거 같습니다.

설명은 주석을 참고하시면 되며, Windows Forms에서 사용하기는 약간 다른부분이 있으니, 그점만 참고하시면 될 거 같습니다.

자 그럼 지금부터 진행하겠습니다.

 

2. 코더

MainPage.xaml

         <StackPanel Orientation="Vertical" Margin="77">
            <StackPanel Orientation="Vertical" HorizontalAlignment="Center" >
                <StackPanel Orientation="Horizontal" Width="400" Height="50" >
                    <TextBlock Text="입력 :" FontSize="30" />
                    <TextBlock x:Name="Input_Box" FontSize="30" Width="330"/>
                </StackPanel>
                <StackPanel Orientation="Horizontal" Width="400" Height="50">
                    <StackPanel Orientation="Horizontal" Width="400" Height="50">
                        <TextBlock Text="결과 :" FontSize="30"/>
                        <TextBlock x:Name="Result_Box" FontSize="30" Width="330"/>
                    </StackPanel>
                </StackPanel>
            </StackPanel>
            <StackPanel Orientation="Vertical" Margin="15">
                <StackPanel Orientation="Horizontal" Width="280">
                    <Button x:Name="btn1" Content="1" FontSize="30" Width="50" Height="50" Margin="10" Click="Btn1_Click"/>
                    <Button x:Name="btn2" Content="2" FontSize="30" Width="50" Height="50" Margin="10" Click="Btn2_Click"/>
                    <Button x:Name="btn3" Content="3" FontSize="30" Width="50" Height="50" Margin="10" Click="Btn3_Click"/>
                    <Button x:Name="btn4" Content="4" FontSize="30" Width="50" Height="50" Margin="10" Click="Btn4_Click"/>
                </StackPanel>
                <StackPanel Orientation="Horizontal" Width="280">
                    <Button x:Name="btn5" Content="5" FontSize="30" Width="50" Height="50" Margin="10" Click="Btn5_Click"/>
                    <Button x:Name="btn6" Content="6" FontSize="30" Width="50" Height="50" Margin="10" Click="Btn6_Click"/>
                    <Button x:Name="btn7" Content="7" FontSize="30" Width="50" Height="50" Margin="10" Click="Btn7_Click"/>
                    <Button x:Name="btn8" Content="8" FontSize="30" Width="50" Height="50" Margin="10" Click="Btn8_Click"/>
                </StackPanel>
                <StackPanel Orientation="Horizontal" Width="280">
                    <Button x:Name="btn9" Content="9" FontSize="30" Width="50" Height="50" Margin="10" Click="Btn9_Click"/>
                    <Button x:Name="btn0" Content="0" FontSize="30" Width="50" Height="50" Margin="10" Click="Btn0_Click"/>
                    <Button x:Name="btn_plue" Content="+" FontSize="30" Width="50" Height="50" Margin="10" Click="Btn_plue_Click"/>
                    <Button x:Name="btn_minus" Content="-" FontSize="30" Width="50" Height="50" Margin="10" Click="Btn_minus_Click"/>
                </StackPanel>
                <StackPanel Orientation="Horizontal" Width="280">
                    <Button x:Name="btn_Reset" Content="Reset" FontSize="30" Width="120" Height="50" Margin="10" Click="Btn_Reset_Click"/>
                    <Button x:Name="btn_multiply" Content="*" FontSize="30" Width="50" Height="50" Margin="10" Click="Btn_multiply_Click"/>
                    <Button x:Name="btn_division" Content="/" FontSize="30" Width="50" Height="50" Margin="10" Click="Btn_division_Click"/>
                </StackPanel>
            </StackPanel>
        </StackPanel>

 

MainPage.xaml.cs

public int Result = 0; //현재 최종 결과 0
public bool isNum = true; //더하기 버튼 클릭하면 새로운 숫자를 입력 받는다.

private void Btn_Reset_Click(object sender, RoutedEventArgs e)
        {
            Result = 0;
            isNum = true;
            Input_Box.Text = "0";
            Result_Box.Text = "0";
        }

        private void Btn_multiply_Click(object sender, RoutedEventArgs e)
        {
            int num = int.Parse(Input_Box.Text); //string 타입을 int형으로 변경 Parse
            Result = Result * num;

            Result_Box.Text = Result.ToString();
            isNum = true;
        }

        private void Btn_division_Click(object sender, RoutedEventArgs e)
        {
            int num = int.Parse(Input_Box.Text);
            Result = Result / num;

            Result_Box.Text = Result.ToString();
            isNum = true;
        }

        private void Btn_minus_Click(object sender, RoutedEventArgs e)
        {
            int num = int.Parse(Input_Box.Text);
            Result = Result - num;

            Result_Box.Text = Result.ToString();
            isNum = true;
        }

        private void Btn_plue_Click(object sender, RoutedEventArgs e)
        {
            int num = int.Parse(Input_Box.Text);
            Result = Result + num;

            Result_Box.Text = Result.ToString();
            isNum = true;
        }

        private void Btn0_Click(object sender, RoutedEventArgs e)
        {
            if(isNum) //isNum :: 새로운 넘버인가?
            {
                Input_Box.Text = ""; //새로운 넘버라면 Input_Box 원래 있던거에 공백이 들어간다.
                isNum = false;
            }

            Input_Box.Text = Input_Box.Text + "0"; // + "0"을 주어 버튼 0을 두번재 눌러도 0이 나온다.
        }

        private void Btn9_Click(object sender, RoutedEventArgs e)
        {
            if (isNum) 
            {
                Input_Box.Text = "";
                isNum = false;
            }

            Input_Box.Text = Input_Box.Text + "9";
        }

        private void Btn8_Click(object sender, RoutedEventArgs e)
        {
            if (isNum) 
            {
                Input_Box.Text = ""; 
                isNum = false;
            }

            Input_Box.Text = Input_Box.Text + "8";
        }

        private void Btn7_Click(object sender, RoutedEventArgs e)
        {
            if (isNum)
            {
                Input_Box.Text = "";
            }

            Input_Box.Text = Input_Box.Text + "7";
        }

        private void Btn6_Click(object sender, RoutedEventArgs e)
        {
            if (isNum)
            {
                Input_Box.Text = "";
                isNum = false;
            }

            Input_Box.Text = Input_Box.Text + "6";
        }

        private void Btn5_Click(object sender, RoutedEventArgs e)
        {
            if (isNum)
            {
                Input_Box.Text = "";
                isNum = false;
            }

            Input_Box.Text = Input_Box.Text + "5";
        }

        private void Btn4_Click(object sender, RoutedEventArgs e)
        {
            if (isNum)
            {
                Input_Box.Text = "";
                isNum = false;
            }

            Input_Box.Text = Input_Box.Text + "4";
        }

        private void Btn3_Click(object sender, RoutedEventArgs e)
        {
            if (isNum)
            {
                Input_Box.Text = "";
                isNum = false;
            }

            Input_Box.Text = Input_Box.Text + "3";
        }

        private void Btn2_Click(object sender, RoutedEventArgs e)
        {
            if (isNum)
            {
                Input_Box.Text = "";
                isNum = false;
            }

            Input_Box.Text = Input_Box.Text + "2";
        }

        private void Btn1_Click(object sender, RoutedEventArgs e)
        {
            if (isNum)
            {
                Input_Box.Text = "";
                isNum = false;
            }

            Input_Box.Text = Input_Box.Text + "1";
        }
    }

 

3. 결과

728x90
728x90

1. 구성

랜덤 버튼을 통하여 0~9까지 총 10개의 숫자를 버튼 누를때 마다 랜덤으로 출력되며,

리셋 버튼을 눌러 초기화를 시켜줍니다.

 

2. 진행

MainPage.xaml

<Page
    x:Class="App4.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:App4"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d"
    Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">

    <Grid Margin="0,0,2,0">
        <Button Name="btnRandom" Content="Random Numbers" 
      Margin="290,430,0,0" RenderTransformOrigin="0.437,0.002" 
      Click="btnRand_Click" VerticalAlignment="Top"/>
        <ListBox Name="lstRand" Height="295" Margin="290,104,405,0" 
      VerticalAlignment="Top"/>
        <Button Content="Reset" Margin="511,430,0,0" VerticalAlignment="Top" 
      Height="32" RenderTransformOrigin="0.522,-0.162" Click="btnReset_Click"/>

    </Grid>
</Page>

 

MainPage.xaml.cs

public sealed partial class MainPage : Page
    {
        Random r = new Random();
        int[] check = new int[10]; //new int가 아닌 int만 작성시, "잘 못된 식의 항'int'입니다" 메세지뜬다. 그 이유는 new  동적으로 할당 된 메모리를 담당.
                                   //new 오른쪽에 선언 된 변수에 반환된다. 숫자 10개를 입력 받는다. 입력 받는 값은 동적 값이다.(프로그램 실행 할 때마다 변경되는 값)
                                   //정수 배열 생성, 초기값 0 할당됨, 랜던값 : 10개
        List<int> lstRandom = new List<int>(); //List :: 배열과 동일한 역활을 한다. List<자료형> 변수명 형태로 선언하고, 객체라서 new 연산자 작성 필수!! 

        public MainPage()
        {
            this.InitializeComponent();
        }

        private void btnRand_Click(object sender, RoutedEventArgs e)
        {
            for (int i = 0; i < 10; i++)
            {
                int v = r.Next(10); //Next(10) :: 문자 또는 문자열을 공백을 기준으로 한단어 또는 한문자씩 입력 받는다. //NextLine(10) :: 문자 또는 문장 한라인 전체를 입력 받는다.
                while (RndCheck(v) == false) //While 문은 false면 반복한다. //생성된 랜덤값은 RndCheck() 메서드로 보내서 처음 나온 값인지 체크하여 처음 나온 값이라면 lstRandom에 추가한다.
                    v = r.Next(10);
                lstRandom.Add(v); //Add(i) :: Add는 추가적으로 선택 해야 할 때 사용 합니다. 추가로 i요소를 선택 합니다.
            }

            foreach (var i in lstRandom) //foreacg는 https://blockdmask.tistory.com/313 설명 참고
                lstRand.Items.Add(i); //Items :: lstRand의 항목을 가져옵니다.

            btnRandom.IsEnabled = false; //IsEnabled :: 이 요소를 사용자 인터페이스에서 사용 할 수 있는지 여부를 나타내는 값을 가져오거나 설정 합니다.                                         
        }

        private bool RndCheck(int v) //check[v]의 값이 0이면  true를, 1이면 false를 리턴한다.
        {
            if (check[v] == 0)
            {
                check[v] = 1;
                return true;
            }
            else
                return false;
        }

        private void btnReset_Click(object sender, RoutedEventArgs e) //Reset 버튼이 클릭되었을 때 실행되는 이벤트 처리 메서드, 리스트박스를 지워주고,  check[] 배열과 리스트  lstRandom을 초기화한다다.
        {
            lstRand.Items.Clear(); //Clear() :: 요소 모두 제거 // Itme을 통하여 lstRand의 항목을 가지고와 Clear()으로 지운다.
            for (int i = 0; i < 10; i++)
                check[i] = 0;
            lstRandom.Clear();
            btnRandom.IsEnabled = true;
        }
    }

 

3. 결과

728x90

+ Recent posts