구매 구현(1)
21 실전 프로젝트 - 주문하기, 장바구니 담기
구매 구현(1)

마일리지 상점의 제일 방대한 기능인 '구매'를 구현해봅니다. 우선 구매를 선택했을 때 모든 항목과 정보들을 출력해야합니다. for문을 활용해 아이템 슬라이스의 모든 객체를 출력합니다. 예를 들어, 구매를 선택하면

물품1 : 텀블러, 가격: 10000원, 잔여 수량: 30
물품2: 롱패딩, 가격: 500000원, 잔여 수량: 20
물품3: 투미 백팩, 가격: 400000원, 잔여 수량: 20
물품4: 나이키 운동화, 가격: 150000원, 잔여 수량: 50
물품5: 빼빼로, 가격 : 1200원, 잔여 수량: 500

형식으로 출력합니다. 그리고 아이템선택 int형 변수를 선언하고 "구매할 물품을 선택하세요: "를 출력해 아이템을 선택할 수 있도록 구현합니다. 아이템 선택은 마찬가지로 for문을 이용해 구현합니다. 잘못된 입력을 하면 계속 처음으로 돌아갑니다.

실행 언어: go

구매 과정은 buying() 함수를 이용해 구현할 것입니다. 물품마다 같은 기능이 반복되기 때문입니다. 프로젝트를 제작하면서 어려웠던 것중에 하나는 바로 함수, 변수 이름 설정이었습니다. 제가 제시하는 예시 코드에서의 명명법은 정답이 아닙니다. 더욱 알아보기 쉬운 이름으로 설정한다면 코드 가독성이 높아집니다.

그리고 main() 함수 밖에 buying() 함수를 생성합니다. 아직 기능을 구현하지 않았기 때문에 아무것도 입력하지 않아도 됩니다. 이쯤에서 사용자가 물품을 구매했을 때 필요한 기능이 어떠한 것이 있을지 생각해보기를 바랍니다.


바로 주문하기


구매 기능을 작은 것부터 하나씩 구현할 것입니다. 일단 사용자가 물품을 선택하고 buying() 함수에 진입한 상황이라고 생각해봅시다. 그 다음은 선택한 물품을 몇 개 주문할 것인지 입력하고, 장바구니에 담거나 바로 구매하는 것입니다. 우선 바로 주문하는 것을 구현해봅니다. 올바른 수량을 입력했다는 가정하에(예외(에러) 처리는 나중에 합니다.) 주문을 완료했다면 필요한 기능은

  • 주문한 물품과 수량만큼 사용자 객체의 포인트 차감
  • 아이템 객체들의 수량 차감

입니다. 이 두 기능을 buying() 함수에 구현해봅니다. 우선, 함수에서 쓰이는 변수를 정리하고 매개변수로 설정해야합니다. 아이템 슬라이스의 아이템 객체 정보에 접근, 구매자 객체정보에 접근, 무슨 아이템을 선택했는지 알기 위해 아이템 선택 변수를 매개변수로 설정합니다. 우선 함수가 실행되면 선택한 물품을 몇 개 주문할지 알아야하기 때문에 사용자가 입력한 수량을 저장할 변수를 선언하고 "수량을 입력하시오 :" 를 출력해 수량을 입력받습니다. 그럼 지금까지 함수 내용은 아래와 같습니다.

실행 언어: go

구매자 객체는 포인터 구조체기 때문에 포인터 매개변수를 사용합니다. 수량을 입력했다면 1.바로 구매할 것인지 2. 장바구니에 담을 것인지 선택합니다. 잘못된 번호를 입력하면 "잘못된 입력입니다. 다시 입력해주세요."를 출력하고 계속 다시 선택하게끔 for문을 이용합니다. 바로 주문을 할 경우 위에서 언급한 두 기능을 실행합니다. 그리고 "상품이 주문 접수 되었습니다."를 출력하고 for문을 빠져나갑니다. 장바구니에 담는 기능은 나중에 구현할 것이기 때문에 비워둡니다.

우리가 원하는 바로 주문을 선택했을 때 

  • 주문한 물품과 수량만큼 사용자 객체의 포인트 차감
  • 아이템 객체들의 수량 차감

기능을 어떻게 구현할 것인지 잘 생각해보기를 바랍니다. 예시 코드는 다음 챕터에서 보여주겠습니다.

질문하기
추가 자료
no files uploaded

추가 자료가 없습니다

여기서 새로운 학습 자료를 확인하세요!
선생님이 추가한 자료들을 바로 확인할 수 있어요.