2024. 7. 11. 00:09ㆍC#
안녕하세요. 진득코딩입니다. 이번 시간에는 그동안 배운 기초적인 C#으로 간단한 계산기를 만드는 미니 프로젝트를 해보도록 하겠습니다.
개요

해당 미니 프로젝트는 2인 1조로 구성되어 진행하였습니다. 전체적인 요구사항을 살펴보면 화면 구성에는 입력값, 결과값 출력 화면이 나오게 되고 숫자 3개마다 ,(쉼표)를 붙여서 출력하는 것입니다. 버튼 구성은 숫자 패트와 연산자 패드가 있고 연산 버튼 추가시 숫자가 사라지고 결과 출력 화면에 숫자와 연산자가 함께 출력되게 하는 것입니다. =도 추가하고 초기화, 한글자씩 삭제, 계산 결과 확인, +/- 기능, 히스토리 기능 구현하기입니다.

이번 미니 프로젝트로 만든 계산기의 기본 화면입니다. 맨 위에 있는 textBox가 현재 계산되고 있는 화면이고 가운데가 전체 수식을 나타내고 맨 밑에 있는 화면이 결과값을 출력하는 창입니다. +, -, *, /, % 연산자가 있고 초기화, 한글자씩 지우기도 가능합니다. =기능과 +/-기능도 구현하였고 History 버튼을 누르게 되면 현재까지 계산한 내역을 보실 수 있습니다.
1일차

1일차에 맡게 된 기능은 일단 class를 나눠서 작업 공간을 확보하고 연산 기능을 구현하는 것이었습니다.

위와 같이 같은 솔루션 안에 원래 있던 Form1.cs와 Class1.cs를 같은 위치에 구분하여 두었습니다. 처음부터 class를 만들지 않고 협업을 하다가 중간에 불편해서 구분한 것이 조금 아쉬운 부분입니다.

다중 연산시 나오는 화면입니다. 위와 같이 여러 연산을 한번에 할 수 있고 사칙연산의 순서에 맞게 *, /, % 연산이 먼저 수행된 후에 +, - 연산이 됩니다. 가운데 계산 box에는 계산식이 모두 나오고 가장 아래에 6이라는 결과값이 따로 출력되는 것을 확인하실 수 있습니다.

코드를 살짝 살펴보게 되면 숫자와 연산자를 구분하여 각각 숫자 리스트와 연산자 리스트에 구분하여 추가하게 됩니다.


이렇게 구분한 리스트에 따라서 *, /, % 연산만 하게 되고 해당 연산이 모두 끝나게 되면 while문에서 빠져나와 +, - 연산을 수행하게 됩니다.
2일차

2일차에는 history 버튼을 구현하고 +/-로직, 한글자씩 지우기 로직을 구현하였습니다. 또한 구현하면서 생긴 버그들을 수정하는 과정을 거쳤습니다.

위 화면은 history 버튼을 눌렀을 때 나오는 화면입니다. 위와 같이 연산 기록이 각 연산마다 구분되어 나오게 되어 그동안의 계산 기록을 확인하실 수 있습니다.

먼저 history 버튼 기능을 구현하였습니다. 버튼 기능을 만들기에 앞서 historyRecord라는 변수를 따로 만들어서 위 함수를 통해서 =을 누를때마다 계산 결과를 string 배열에 들어가도록 하였습니다.

history_Click 이벤트 함수에 messageBox에 history 배열에 있는 기록들을 출력할 수 있도록 하였습니다.

+/- 기능을 만들어서 현재 출력되고 있는 숫자에 -를 붙일 수 있는 기능을 구현하였습니다. -를 한번 누르면 -가 추가되고 한 번 더 누르게 되면 *가 없어지도록 기능을 구현하였습니다. 또한 +/-버튼을 통해서 숫자에 -를 붙이게 되면 history에서는 괄호와 함께 출력될 수 있도록 구현하였습니다.

출력되는 화면에는 숫자에 -가 붙지만 변수에는 -가 아닌 ~을 붙이도록 하였습니다. 번거롭게 -가 아닌 ~을 붙인 이유는 연산 과정에서 -는 연산자로 인식하여 연산자 리스트로 들어가버리기 때문에 ~를 붙여서 연산자와 음수를 구분하였습니다.

+/-를 눌렀을 때 -가 있는지를 확인하기 위해 정규식을 사용하여 ~표시를 찾고 ~표시가 있다면 해당 ~표시를 삭제하고 없다면 ~표시를 추가해주는 로직을 만들었습니다.

한글자씩 지우는 로직은 문자열을 쪼개서 마지막 요소를 제거하여 해당 문자 배열을 생성하고 새로운 문자 배열을 문자열로 변환하는 과정을 거칩니다. 필자는 연산자를 추가할 때 구분하기 위해 @를 붙이기 때문에 마지막에 연산자가 있을 때 지우게 될 때를 위해서 if문을 사용하여 연산자를 지울때에는 @도 함께 지울 수 있도록 로직을 구성하였습니다.
C#을 배우고 처음으로 하게 된 미니 프로젝트이자 협업이기 때문에 모든 것이 어설프로 손에 익지 않은 느낌이었습니다. 하지만 이론적으로 공부할 때보다 시간도 빨리 가고 결과물을 확인하면서 뿌듯함을 느끼게 되었습니다. 하지만 log를 잘 찍지도 않고 찍더라도 정확한 설명과 함께 찍지 않고 변수만 찍는 등 log를 대충 찍어놔서 버그를 수정할 때 시간도 많이 걸리고 노력도 많이 들어간 점이 아쉽습니다. 또한 조원과의 소통이 부족해서 같은 기능을 중복으로 만드는 등의 일들을 겪으면서 적극적인 의견을 말하고 원활한 소통을 위해 노력을 해야겠다고 느끼게 되었습니다. 자세한 코드가 궁금하신 분들은 아래에 있는 깃허브를 참고해주시길 바랍니다. 이번 포스팅은 여기까지입니다. 끝까지 봐주셔서 감사합니다.😀
GitHub - KimJongHoss/SimpleCalculator: 코딩온 1차 미니 프로젝트
코딩온 1차 미니 프로젝트. Contribute to KimJongHoss/SimpleCalculator development by creating an account on GitHub.
github.com
'C#' 카테고리의 다른 글
[C#] 좀 더 심화된 C# 문법을 알아보자 (2) | 2024.07.16 |
---|---|
[C#] C#으로 만든 계산기에 기능 추가해보자 (0) | 2024.07.11 |
[C#] 리스트 사용하는 방법 간단하게 살펴보기 (0) | 2024.07.10 |
[C#] 계산기를 만들기 위한 워밍업하기 (0) | 2024.07.08 |
[C#] C# 기본적인 문법을 살펴보자 (0) | 2024.07.05 |