C#κ³Ό Windows Formsλ₯Ό μ΄μ©ν κΈ°λ³Έ κ³μ°κΈ° νλ‘κ·Έλ¨μ λ§λ€μμ΅λλ€.
μ¬μΉμ°μ°, μμμ , λΆνΈ μ ν, λ°±μ€νμ΄μ€, νΌμΌνΈ κ³μ°, λ°°κ²½μ λ³κ²½ λ±μ κΈ°λ₯μ ꡬννμμ΅λλ€.
| κΈ°λ₯ | μ€λͺ |
|---|---|
| μ«μ μ λ ₯ | 0~9 λ²νΌμ ν΅ν΄ μ«μλ₯Ό μ λ ₯ν μ μμ΅λλ€. |
| μ¬μΉμ°μ° | +, -, Γ, Γ· λ²νΌμ ν΅ν΄ κΈ°λ³Έ μ°μ° μν |
| μμμ μ²λ¦¬ | μμμ (.) μ λ ₯ λ° μ€λ³΅ λ°©μ§ |
| Β± λΆνΈ μ ν | νμ¬ μμ λΆνΈλ₯Ό λ³κ²½ |
| % νΌμΌνΈ | νμ¬ μλ₯Ό 100μΌλ‘ λλ κ° κ³μ° |
| μ΄κΈ°ν (C) | λͺ¨λ μ λ ₯ κ° μ΄κΈ°ν |
| μμ | λ§μ§λ§ μ λ ₯ λ¬Έμ μμ (Backspace) |
| μμ λ³κ²½ | λ©λ΄μμ Red, Blue, Gray, Pink λ°°κ²½μ μ€μ κ°λ₯ |
| μμΈμ²λ¦¬ | μλͺ»λ μ λ ₯(μ°μ°μ μ€λ³΅, μμμ μ€λ₯ λ±)μ λν΄ MessageBoxλ‘ μλ΄ |
- κ°λ° νκ²½: Visual Studio / .NET Framework
- νλ‘κ·Έλλ° μΈμ΄: C#
- GUI νλ μμν¬: Windows Forms (WinForms)
Form1.cs: μ 체 λ‘μ§μ κ΄λ¦¬νλ λ©μΈ νΌ- μ΄λ²€νΈ μ€μ¬ μ€κ³: λ²νΌ ν΄λ¦ μ΄λ²€νΈλ§λ€ λμ ν¨μ νΈμΆ
- λ‘μ§ λΆλ¦¬: μ«μ μ λ ₯, μ°μ° μ²λ¦¬, μ€λ₯ μ²λ¦¬ λ±μΌλ‘ κΈ°λ₯ λͺ¨λν
- Enum μ¬μ©:
operationμ΄κ±°νμ ν΅ν΄ μ°μ°μ μν κ΄λ¦¬ - μμΈ μ²λ¦¬ κ°ν: μ λ ₯κ° λμ΄ μ°μ°μμ΄κ±°λ μμμ μ€λ³΅ λ± λ€μν μμΈ μν© μ²λ¦¬
enum operation
{
plus,
minus,
divide,
multiple,
equal
}private void HandleOperation(operation selectedOp, char symbol)
{
if (double.TryParse(text, out a)) // 3+κ³Ό κ°μ μ«μ+μ°μ°μ νμλ₯Ό μν΄ νμ
{
op = selectedOp; //μ°μ°μ μ ν
textBox_result.Text += symbol; // μ°μ°μ μΆκ°
result_Num = false;
}
}HandleOperation()μ +, -, Γ, Γ· ν΄λ¦ μ μ€νλλ©° νμ¬ μ λ ₯κ° κ²μ¦ ν μ°μ°μμ νΌμ°μ°μλ₯Ό μ μ₯ν©λλ€.
AppendNumber λ©μλλ μ«μ λ²νΌμ ν΄λ¦ν λλ§λ€ ν΄λΉ μ«μλ₯Ό RichTextBoxμ μΆκ°ν©λλ€.
κ²°κ³Όκ°μ νμν ν μλ‘μ΄ μ«μλ₯Ό μ
λ ₯νλ €λ κ²½μ° νλ©΄μ μ΄κΈ°νν©λλ€.
private void AppendNumber(string num)
{
if (result_Num)
{
richTextBox1.Text = "";
result_Num = false;
}
richTextBox1.Font = new Font("Arial", 14);
richTextBox1.Text += num;
}HandleOperation λ©μλλ μ¬μ©μκ° μ°μ°μ λ²νΌμ ν΄λ¦νμ λ, μ
λ ₯λ ν
μ€νΈκ° μ ν¨νμ§ νμΈν ν, μ°μ°μλ₯Ό μ²λ¦¬νκ³ ν
μ€νΈμ ν΄λΉ μ°μ°μλ₯Ό μΆκ°ν©λλ€.
μ°μ°μ μ
λ ₯μ΄ μλͺ»λ μμΉμ μμ κ²½μ° μλ¬ λ©μμ§λ₯Ό νμν©λλ€.
private void HandleOperation(operation selectedOp, char symbol)
{
string text = richTextBox1.Text;
// λΉμΉΈ / μ°μ°μλ‘ λλλ κ²½μ° μ€λ₯ μ²λ¦¬
if (string.IsNullOrEmpty(text) || operators.Any(op => text.EndsWith(op.ToString())) || text.EndsWith("."))
{
ShowError("μ°μ°μλ₯Ό μ
λ ₯ν μ μλ μμΉμ
λλ€.");
return;
}
if (double.TryParse(text, out a))
{
op = selectedOp;
richTextBox1.Text += symbol;
result_Num = false;
}
else
{
ShowError("μ«μλ₯Ό μ¬λ°λ₯΄κ² μ
λ ₯ν΄μ£ΌμΈμ.");
}
}button_eq_Click λ©μλλ μ¬μ©μκ° = λ²νΌμ ν΄λ¦νμ λ, μ
λ ₯λ μμμ λν΄ μ°μ°μ μννκ³ κ²°κ³Όλ₯Ό νλ©΄μ νμν©λλ€.
μ°μ°μλ op λ³μμ μ μ₯λ κ°μ λ°λΌ λ€λ₯΄κ² μ²λ¦¬λ©λλ€.
private void button_eq_Click(object sender, EventArgs e)
{
string text = richTextBox1.Text;
result_Num = true;
// μλͺ»λ μ
λ ₯ 체ν¬
if (string.IsNullOrEmpty(text) || operators.Any(op => text.EndsWith(op.ToString())))
{
ShowError("μ°μ°ν μ μμ΅λλ€.");
return;
}
string[] parts = null;
char operatorSymbol = ' ';
switch (op)
{
case operation.plus:
parts = text.Split('+');
operatorSymbol = '+';
break;
case operation.minus:
parts = text.Split('-');
operatorSymbol = '-';
break;
case operation.multiple:
parts = text.Split('*');
operatorSymbol = '*';
break;
case operation.divide:
parts = text.Split('/');
operatorSymbol = '/';
break;
}
if (parts == null || parts.Length != 2 || !double.TryParse(parts[0], out a) || !double.TryParse(parts[1], out b))
{
ShowError("μ¬λ°λ₯Έ κ³μ°μμ΄ μλλλ€.");
return;
}
switch (op)
{
case operation.plus:
result = a + b;
break;
case operation.minus:
result = a - b;
break;
case operation.multiple:
result = a * b;
break;
case operation.divide:
if (b == 0)
{
MessageBox.Show("0μΌλ‘ λλ μ μμ΅λλ€.");
return;
}
result = a / b;
break;
}
richTextBox1.Clear();
richTextBox1.AppendText($"{a} {operatorSymbol} {b} = {result}");
a = result;
}button_pm_Click λ©μλλ λΆνΈ μ ν λ²νΌμ ν΄λ¦νμ λ, νμ¬ μ
λ ₯λ μ«μμ λΆνΈλ₯Ό λ°μ μν΅λλ€.
private void button_pm_Click(object sender, EventArgs e)
{
string text = richTextBox1.Text;
if (string.IsNullOrEmpty(text) || operators.Any(op => text.LastIndexOf(op) > 0) || text.EndsWith("."))
{
ShowError("λΆνΈλ₯Ό λ°κΏ μ μμ΅λλ€.");
return;
}
if (double.TryParse(text, out double value))
{
richTextBox1.Text = (-value).ToString();
}
}- Visual Studioμμ νλ‘μ νΈ μ΄κΈ°
Form1.csμμ λμμΈ λ° λ‘μ§ νμΈ- μ€ν(F5) ν WinForms κΈ°λ° κ³μ°κΈ° μ¬μ©
- μ°μ° μ°μ μμ μ²λ¦¬ (μ: 2 + 3 Γ 4)
- μ°μ κ³μ° μ²λ¦¬ (μ: 2 + 3 = + 4 =)
- κ³μ° λ΄μ μ μ₯ κΈ°λ₯
- κ΄νΈ μ°μ° ꡬν
- ν€λ³΄λ μ λ ₯ λμ
- μ΄λ¦: λ§ΉμΉμ°

