[ C# .NET ] 윈도우 폼 계산기 예제
★C# 닷넷 개인 공부를 위한 예제로, 정확하지 않거나 효율적이지 않을 수 있음★

※ 예외 처리할 목록
1. 최초 출력 숫자가 0인 경우 (완료)
2. 계산 버튼 두번 클릭 시 (완료)
3. 변수의 크기
4. 숫자 -> 계산 -> 숫자 -> enter (완료)
5. 0 나누기 (완료)
6. 숫자 맨 앞자리가 0인 경우나 계산버튼을 연속으로 클릭 시 ProcessBox에 알맞게 출력하기
7. equal 버튼(=) 클릭 후 바로 계산버튼 클릭 시
※ 추가 기능 구현할 목록
1. 키보드 입력
2. 기본 계산 외 추가 계산 기능 (Clear, 소숫점, 지우기 ...)
<전체 코드>
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;
namespace WindowsFormsApp1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
public double resultVal = 0;
public double num = 0;
public bool isNewNum = true;
public string recentCal = "+";
public void NumBtn_Click (object sender, EventArgs e)
{
Button btnNum = sender as Button;
num = double.Parse(btnNum.Text);
if (isNewNum)
{
ResultBox.Text = num.ToString();
isNewNum = false;
}
else if (ResultBox.Text == "0")
{
ResultBox.Text = num.ToString();
}
else
{
ResultBox.Text += num.ToString();
}
ProcessBox.Text += num.ToString();
} //NumBtn_Click() end
private void BtnCal_Click(object sender, EventArgs e)
{
Button btnCal = (Button)sender;
if (!isNewNum)
{
num = double.Parse(ResultBox.Text);
switch (recentCal)
{
case "+":
resultVal = resultVal + num;
break;
case "-":
resultVal = resultVal - num;
break;
case "*":
resultVal = resultVal * num;
break;
case "/":
resultVal = resultVal / num;
break;
}
ResultBox.Text = resultVal.ToString();
}
recentCal = btnCal.Text;
ProcessBox.Text += recentCal;
isNewNum = true;
}
}
}
<코드 분석>
1. 변수 선언

2. 숫자 버튼 클릭 이벤트
숫자 버튼은 모두 같은 이벤트를 사용한다.

3. 연산 버튼 클릭 이벤트
연산 버튼은 모두 같은 이벤트를 사용한다.

<문제점>
1. 입력 및 계산된 값이 너무 클 경우 출력이나 계산의 오류가 있을 수 있음.

2. 0으로 나누기 시 오류 메세지가 출력되지 않고 0으로 고정됨.

3. 숫자 맨 앞자리가 0인 경우나 연산 버튼을 연속으로 클릭 시 ProcessBox에 알맞게 출력되지 않음.

4. equal 버튼(=) 클릭 후 바로 연산 버튼 클릭 시 연산이 안 됨.
반응형
'개발하는 '정' > C# (.NET)' 카테고리의 다른 글
C# 텍스트 파일 다루기 - 쓰기 (txt 파일 생성) (0) | 2019.09.19 |
---|---|
C# 엑셀 핸들링 (import 후 DataGridView에 출력,export) (0) | 2019.08.23 |
[오류 해결]“‘Microsoft.ACE.OLEDB.12.0’ 공급자는 로컬 컴퓨터에 등록 할 수 없습니다.” (0) | 2019.08.22 |
[C# .NET] 윈도우폼 계산기 예제 : 3. 추가 기능 구현 (0) | 2019.07.09 |
[C# .NET] 윈도우폼 계산기 예제 : 1. 디자인 구현 (0) | 2019.07.09 |
댓글