실행 이미지
계산기의 디자인
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using static System.Windows.Forms.VisualStyles.VisualStyleElement;
namespace calculator
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
this.Text = "계산기";
txtBox.ReadOnly = true; // 읽기 전용
txtBox.Text = "";
}
private void button15_Click(object sender, EventArgs e) // 1
{
txtBox.Text = txtBox.Text + "1";
}
private void button14_Click(object sender, EventArgs e) // 2
{
txtBox.Text = txtBox.Text + "2";
}
private void button13_Click(object sender, EventArgs e) // 3
{
txtBox.Text = txtBox.Text + "3";
}
private void button10_Click(object sender, EventArgs e) // 4
{
txtBox.Text = txtBox.Text + "4";
}
private void button9_Click(object sender, EventArgs e) // 5
{
txtBox.Text = txtBox.Text + "5";
}
private void button8_Click(object sender, EventArgs e) // 6
{
txtBox.Text = txtBox.Text + "6";
}
private void button23_Click(object sender, EventArgs e) // 7
{
txtBox.Text = txtBox.Text + "7";
}
private void button22_Click(object sender, EventArgs e) // 8
{
txtBox.Text = txtBox.Text + "8";
}
private void button21_Click(object sender, EventArgs e) // 9
{
txtBox.Text = txtBox.Text + "9";
}
private void button20_Click(object sender, EventArgs e) // 0
{
txtBox.Text = txtBox.Text + "0";
}
private void button18_Click(object sender, EventArgs e) // .
{
txtBox.Text = txtBox.Text + ".";
}
private void button17_Click(object sender, EventArgs e) // +
{
txtBox.Text = txtBox.Text + "+";
}
private void button12_Click(object sender, EventArgs e) // -
{
txtBox.Text = txtBox.Text + "-";
}
private void button7_Click(object sender, EventArgs e) // *
{
txtBox.Text = txtBox.Text + "*";
}
private void button19_Click(object sender, EventArgs e) // /
{
txtBox.Text = txtBox.Text + "/";
}
private void button11_Click(object sender, EventArgs e) // ←
{
if (txtBox.Text.Length > 0)
{
txtBox.Text = txtBox.Text.Substring(0, txtBox.Text.Length - 1);
}
else
{
txtBox.Text = "";
}
}
private void button26_Click(object sender, EventArgs e) // C
{
txtBox.Text = "";
}
private void button16_Click(object sender, EventArgs e) // =
{
if (txtBox.Text.Length == 0)
{
return; // 텍스트 박스가 비어있다면 아무것도 하지 않음
}
// 끝 문자가 연산자라면 동작 x
if (txtBox.Text[txtBox.Text.Length - 1] == '+' ||
txtBox.Text[txtBox.Text.Length - 1] == '-' ||
txtBox.Text[txtBox.Text.Length - 1] == '*' ||
txtBox.Text[txtBox.Text.Length - 1] == '/' ||
txtBox.Text[txtBox.Text.Length - 1] == '.')
{
return;
}
// 연산자를 기준으로 문자열 분리
string[] num_order = txtBox.Text.Split(new char[] { '+', '-', '*', '/' }, StringSplitOptions.RemoveEmptyEntries);
// 숫자를 기준으로 문자열 분리
List<char> op_order = new List<char>();
foreach (char c in txtBox.Text)
{
if (c == '+' || c == '-' || c == '*' || c == '/')
{
op_order.Add(c);
}
}
List<double> nums = new List<double>();
foreach (string num in num_order)
{
nums.Add(double.Parse(num));
}
if (nums.Count == 0 || op_order.Count == 0)
{
return;
}
// 우선순위 연산 처리 (*, /)
for (int i = 0; i < op_order.Count; i++)
{
if (op_order[i] == '*' || op_order[i] == '/')
{
double result = 0;
switch (op_order[i])
{
case '*':
result = nums[i] * nums[i + 1];
break;
case '/':
result = nums[i] / nums[i + 1];
break;
}
nums[i] = result;
nums.RemoveAt(i + 1);
op_order.RemoveAt(i);
i--; // 현재 위치에서 다시 체크
}
}
// 나머지 연산 처리 (+, -)
double finalResult = nums[0];
for (int i = 0; i < op_order.Count; i++)
{
switch (op_order[i])
{
case '+':
finalResult += nums[i + 1];
break;
case '-':
finalResult -= nums[i + 1];
break;
}
}
// 결과를 txtBox에 출력
txtBox.Text = finalResult.ToString();
}
}
}
계산기의 코드
'Window Forms 공부' 카테고리의 다른 글
[Windows Forms] 수학 퀴즈 앱 만들기 (0) | 2024.06.03 |
---|---|
[Windows Forms] 사진 뷰어 앱 만들어보기 (0) | 2024.05.29 |
[Windows Forms] String 버튼 만들기 (0) | 2024.05.25 |
Windows Forms App과 Windows Forms App (.NET Framwork)의 차이점은 무엇일까? (0) | 2024.05.25 |