본문 바로가기
Project

[Project][MFC] 맘스터치 키오스크&포스기 <기말 프로젝트>

by starfish22 2023. 6. 18.
728x90

▶ Intro

윈도우 프로그래밍 강의 기말고사 프로젝트로 키오스크와 포스기를 제작하였다. 가장 직관적으로 기능을 구현하여 결과를 보여줄 수 있고, 생활 속에서 가깝게 볼 수 있기에 선택하였다.

 

▶제작 기간

2023.05.23 ~ 06.08 (약 2주)

 

▶사용 기술

Editor : VisualStudio 2022

Lang : MFC, MySQL

 

▶구현 기능

키오스크

- 카테고리별(버거, 치킨, 맘스세트, 음료, 사이드) 테이블 설계 및 구현

- 메뉴 선택, 수량 증감, 삭제 구현

- 결제 시 주문 리스트를 포스기로 TCP/IP 전송

- 결제 시 매출 테이블에 추가

포스기

- 주문하기, 추가 주문, 수량 증감, 삭제 구현

- 간단한 금액 계산기 구현

- 카테고리별 테이블 관리(메뉴 수정, 삭제, 추가)

- 품절 추가, 해제 시 키오스크로 TCP/IP 전송

- 결제 시 매출 테이블에 추가

- 그래프를 통한 월별, 일별 매출 확인(MFC 그래프 라이브러리)

 

▶영상

유튜브 영상 링크 : https://youtu.be/sv-jcRaIrwo

 

▶프로젝트 진행 중 어려웠던 점

1. 키오스크 UI

 실제 맘스터치가 사용하는 키오스크를 최대한 비슷하도록 제작하기 위해 탭기능, 메뉴 옆으로 넘기기 등 다양한 인터페이스를 개발하였다. 개발하면서 가장 어려웠던 부분은 리스트 컨트롤에 텍스트(+,-,X)를 그리는 것이었다. 아무리 검색하고 적용해 보아도 리스트컨트롤에 리스트가 추가되면 그림을 가렸다. 수없이 시도해 보았지만 답을 찾을 수 없어 포기하려던 찰나 리스트컨트롤 변수에서 UpdateWindow() 함수를 발견하게 되어 간절한 마음으로 적용해 보니 성공하였다.

 UpdateWindow() 함수는 시스템의 상태와 상관없이 즉시 갱신시키는 함수이다. 내 생각으로는 리스트가 추가되고 마치는 시간이 컴퓨터의 입장으로는 오래 걸려 아무리 텍스트를 그리는 코드를 뒤쪽에 작성하더라도 가려지는 것으로 보인다. 정말 운 좋게 발견하게 되어 힘을 얻고 더욱 몰입할 수 있었다.

 

2. MySQL 테이블 마이그레이션

 TCP/IP 통신과 MySQL 접속 모두 IP주소가 필요하다. 내가 계획했던 환경은 학교컴퓨터에서는 키오스크를 노트북으로는 포스기를 실행하여 연결하려는데 노트북이 와이파이라서 그런지 학교네트워크 보안이 막는지 어떠한 이유로 통신과 접속 모두 안되었다. 그래서 당시에는 시간이 얼마 남지 않아 다급하게 옆자리 컴퓨터로 옮기면서 노트북에 있는 MySQL 테이블을 마이그레이션 해야 되는 상황이 벌어졌다.

 구글링을 해보았는데 MySQL Workbench를 이용하여 옮기는 방법이 가장 많았지만 한 번도 사용해보지 않았고, 차근차근 배울 시간이 없다 판단하여 직접 테이블 데이터가 담긴 파일을 옮기는 방법을 생각하게 되었다. 데이터가 저장되는 경로를 찾은 후 MySQL 서비스를 중지시키고 C:\ProgramData/MySQL/server/Data/"데이터베이스명 폴더"/"테이블명".ibd 파일을 컴퓨터로 보냈다. 컴퓨터에서는 같은 데이버베이스 이름으로 생성하여 붙였지만 인식을 못했다. 혹시나 테이블 생성을 하면 될까 싶어 생성해 보니 정말 다행히도 잘 인식이 되었다. 일일이 다시 데이터 입력해야 되는 참사를 피하는 아찔한 순간이었다.

 

▶프로젝트 진행 후 얻은 것

 제대로 된 첫 프로젝트를 제작하게 되어 뿌듯하기도 하고, 나 자신의 개발 실력을 알 수 있어서 부족한 점을 더욱 느낄 수 있었다. 문제해결능력에 있어서는 디버그 활용에 익숙해지고, 구현이 안 되는 것에 대한 구글링 검색 키워드를 잘 집어내게 되었다. MySQL은 그동안 실제 프로젝트에 사용해보지 못했는데 이번 기회로 사용해 보니 명령문을 자세히 이해할 수 있게 되었고, 테이블 설계의 중요성을 알게 되었다.

 

▶아쉬운 점

 기말고사 시즌에 제작한 프로젝트라서 시간이 많이 부족하고 디테일한 부분들을 놓치게 되어 아쉬움이 크다. 특히 프로젝트에 구현할 기능들을 계획하고 시간부족으로 제외시킨 캘린더로 확인가능한 하루 주문내역, TTS 주문안내 음성, Thread를 활용하여 주문접수를 동기화시키는 등 다양한 아이디어들을 계획하고 실현가능한지 확인하였지만 아쉽게 되었다. 다음 캡스톤 디자인 시간에 아이디어를 참고하여 더욱 완성도 높은 프로젝트를 제작할 것이다.

728x90

댓글