[포스코x코딩온] 스마트 팩토리 SW 개발자 과정 7, 8주차 회고 | C++과 Mysql 연동을 활용한 채팅 프로그램 제작 팀프로젝트
7, 8주차 기간에는 C++과 Mysql을 연동해서 프로그램을 제작하는 팀 프로젝트를 진행했다. 아쉽게도 맥북으로는 여러 제약사항들이 따른다고 하셔서 포스코에서 제공해준 LG Gram을 사용해서 프로젝트를 진행했다. 교육생들에게 LG Gram을 제공해주는 포스코의 남다른 클라스! 포스코에 취업만 할 수 있으면 참 좋겠다!! 부푼 소망을 안고 이제 프로젝트 리뷰를 진행해보겠다.
이번 팀 프로젝트는 필수적으로 포함되어야 하는 기능들(회원가입, 로그인, 채팅 저장 및 불러오기)에 각 팀이 구현하고 싶은 기능을 추가한 후에 PPT 파일을 만들어서 발표하고 시연하는 순서로 진행되었다. 그래서 우리 팀의 경우 가장 먼저 어떤 기능들을 넣을 것인지, 해당 기능들을 구현하기 위해 어떤 SQL문을 사용해야하는지 등에 대해 토의를 진행했다. 그 결과 최종적으로 추가 하기로 한 기능은 아래 사진과 같다.
첫날은 아이디어 구상과 구조를 짜는 데 시간을 대부분 할애했다. 둘째날부터는 구상했던 아이디어들을 토대로 코드를 작성하기 시작했다. 우리 조는 다른 팀과 다르게 투 트랙 전략으로 과제를 수행했다. 프로젝트를 진행하다보니 Git hub를 통해 코드를 주고 받으면서 아이디어를 수정하기도 하고 추가하기도 했다.
처음에 가장 이해가 어려웠던 부분은 Mysql에서 만든 DB와 테이블을 Visual Studio(이하 VS)의 C++과 연동하는 것이었다. VS에서 mysql 문법대로 작성하면 된다고 하셨는데 방법을 몰라 헤멨다. 재차 질문을 드리고 직접 작성해보면서 알아낸 방법은 생각보다 쉬웠다.
pstmt = con->prepareStatement("SELECT id FROM user WHERE name = ? AND phone = ? AND birth = ?;");
pstmt->setString(1, sname);
pstmt->setString(2, sphone);
pstmt->setString(3, sbirth);
result = pstmt->executeQuery();//SELECT된 결과 저장
if (result->next()) { //if문을 통해 result안에 있는 결과들을 모두 출력시키는 출력부
system("cls");
cout << endl << sname << "님의 ID는 " << result->getString(1) << " 입니다." << endl << endl;
Sleep(3000);
}
위의 코드는 ID 찾기 부분의 SELECT문이다. SELECT 이후의 코드를 살펴보면 'name, phone, birth가 일치하면 user 테이블에서 id를 찾아오겠다' 라는 내용이 적혀있다. 그 아래 코드의 괄호를 살펴보면 (1, sname)이라고 되어있는데 이때 1은 위의 SELECT문에서 첫번째 ?에 들어간다는 뜻이다. 그리고 sname은 사용자로부터 입력 받은 값을 의미한다. 따라서, (1, sname)의 의미는 SELECT문의 첫번째 ?에 sname 값을 입력하겠다는 뜻이 된다. 마찬가지로 (2, sphone), (3, sbirth)도 각각 SELECT문의 두 번째, 세 번째 물음표에 sphone, sbirth 값을 입력하겠다는 뜻이다. 그리고 마지막으로 result에 SELECT문의 결과 값을 입력하고 나면 SELECT문이 마무리 된다.
여기까지만 작성하게 될 경우 SELECT된 결과 값을 출력해주지 않기 때문에 if문을 사용해서 result에 값이 있으면 출력하도록 하는 코드를 작성해줬다. 이렇게 해서 사용자로부터 이름, 전화번호, 생일을 입력받아 해당하는 유저의 ID를 출력해주는 코드를 완성할 수 있었다.
Mysql의 테이블에 데이터를 입력하는 방법을 알고나니 나머지는 비교적 수월했다. 가장 큰 문제는 내 욕심이 생기는 것이었다. 하나가 잘되니 욕심이 생겨서 더 예쁘게 만들고 싶고 더 디테일을 살리고 싶어지다보니 생각보다 시간이 지체되었다. DM도 구현하고 싶고 특정 명령어를 사용해서 채팅방을 나갔다가 다시 들어오게 하고 싶었다. 또 콘솔창 색깔도 바꿔주고 싶고! :) 이런 저런 욕심들에 시간 가는 줄 모르고 작업했었다. 결국 발표 전날까지 프로젝트 제작에 몰두한 결과 아래와 같은 결과물을 얻을 수 있었다.
같이 수업을 듣는 2기생들의 투표로 받은 상이라 더 값진 것 같다. 동료들의 인정을 받은 느낌이라고 할까? 이쯤 되면 결과물이 궁금하실것 같다. 그래서 지금부터는 우리 팀 프로젝트의 콘솔창을 보여드리도록 하겠다.
처음 채팅 프로그램을 실행하면 마주하게 되는 콘솔창이다. 여기서 원하는 번호를 입력하면 해당 기능을 실행할 수 있다. 먼저, 회원 가입부터 id찾기, pw 찾기, 로그인 순서대로 진행하겠다.
회원가입을 위해서는 ID, PW, 이름, 전화번호, 생년월일을 입력 받는다. ID 찾기에서는 이름, 전화번호, 생년월일을 조건으로 ID를 SELECT 해서 찾아오게 되며 PW 찾기에서는 앞선 3가지 항목에 ID를 더해서 총 4가지 조건이 DB에 존재하는 회원 정보와 일치할 경우 PW를 변경할 수 있게 된다.
로그인을 하게 되면 왼쪽과 같이 콘솔창이 변하게 되며 번호에 해당하는 기능들을 실행할 수 있게 된다. 먼저, 내 정보창을 실행하게 되면 내프로필보기, 상태메시지 설정/ 수정, BGM 설정/수정 기능을 실행할 수 있다. 내 프로필 기능은 SELECT문으로 상태 메시지와 BGM 설정 및 수정은 UPDATE문을 통해 코드를 설계했다.
다음으로 볼 것은 친구창이다. 친구 창의 경우에는 아래와 같이 친구 목록 조회, 친구 생일에 따른 검색 기능이 있다. 마찬가지로 친구 목록 조회와 친구 생일 검색 기능은 SELECT문을 사용해서 구현했다.
이번에는 채팅창에 어떤 기능이 있는지 콘솔창을 통해 알아보자.
채팅방을 입장하게 되면 이전에 했었던 채팅 내용들이 DB에 저장되었다가 출력된다. 또 /귓말, /종료 등의 특정 키워드들을 활용해 귓속말을 보내거나 채팅창을 종료할 수 있다. 여기서 중요한 점은 내가 입력한 채팅이 나에게 중복 출력되지 않도록 처리해줬다는 것이다. 그리고 채팅창의 다른 기능들을 살펴보면
이전에 채팅했던 내용들 중 원하는 단어를 검색해서 채팅을 조회할 수도 있다. 또한 채팅했던 날짜를 입력하면 해당 날짜에 했던 채팅 내역을 불러올 수 있다.
설정 부분에는 비밀번호 변경과 회원 탈퇴 기능이 있다. 비밀번호 변경의 경우에는 pw 찾기에서 했던 코드의 반복이기 때문에 추가적인 리뷰를 하지는 않겠다. 회원탈퇴 기능은 현재 사용자의 pw를 입력받아 진행되며 pw입력 후에 한 번 더 진심으로 회원 탈퇴를 원하는지 물어보게 된다. 이때 회원 탈퇴를 취소하면 "잘 생각하셨습니다"라는 문구가 출력되고 회원 탈퇴를 선택하면 DELETE문을 사용해서 사용자의 정보가 테이블에서 삭제되는 것으로 회원탈퇴 기능을 구현했다.
이렇게 해서 7, 8주차 총 2주차에 걸쳐 진행된 팀프로젝트가 마무리되었다. 처음 시작할때는 고민도 많고 걱정도 많았지만 강사님들도 막힐때마다 친절하게 알려주시고 팀원과의 협력도 원활하게 이뤄지면서 상상도 못한 상도 받고 좋은 경험이 되었다. 이 기세를 몰아서 스마트 팩토리 SW 개발자 과정을 끝까지 잘 마칠수 있기를 바라며 이만 포스팅을 줄이겠다.
[포스코x코딩온] 스마트 팩토리 SW 개발자 과정 9 주차 회고 | PLC - 펑션블록(카운트), 사용자 정의 펑션/펑션블록 (0) | 2023.05.18 |
---|---|
[포스코x코딩온] 스마트 팩토리 SW 개발자 과정 9 주차 회고 | PLC - 펑션블록, 타이머 (0) | 2023.05.17 |
[포스코x코딩온] 스마트 팩토리 SW 개발자 과정 6주차 회고 | MYSQL - JOIN (0) | 2023.05.01 |
[포스코x코딩온] 스마트 팩토리 SW 개발자 과정 4주차 1~2일차 회고 | 데이터베이스 (2) | 2023.04.15 |
[포스코x코딩온] 스마트 팩토리 SW 개발자 과정 3주차 회고 | 클래스 복습(사칙연산 계산기) (0) | 2023.04.09 |