*콘솔프로젝트 입니다
[전체코드]
https://github.com/seo5795/team3-recommendGame.git
[참고사이트]
스팀
크롤링 페이지: Steam 검색 (steampowered.com)
[제작 일정]
제작: 22.1.27 - 22.2.7
발표: 22.2.8
[제작 환경]
Eclipse IDE 2021‑12
DBMS - Oracle_11
[역할분담]
Model - 2명
Controller - 1명
View -1 명
저는 Controller로 참여하였습니다.
[User Flow, Logic Process]
UserFlow를 작성하다보니 LogicProcess와 같이 작성하게 되었습니다.
1. 첫번째 화면에서 하는 종료를 눌러야만 전체 프로그램 종료
2. 사용자 PK(Unum)이 1000이상일시 관리자화면으로 이동
3. 고객페이지로 입장시 게임 할인율순으로 정렬하여 출력
4. 고객이 원하는 정렬순을 고르고, 게임정보를 보기 원하는 게임 선택
5. 다운로드 여부 선택후 추천 선택 -> 유저의 다운로드 내역 조회
[ERD]
1. 크롤링 사이트에서 받아오는 게임 정보는 이름, 가격, 할인율, 출시일이고
,장르, 다운로드수, 추천수는 랜덤으로 db에 저장하였습니다.
2. 유저 다운로드 내역을 보기 위해 다운로드 내역 테이블을 만들었고,
후에 유저가 가장 많이 다운받은 장르를 중심으로 추천할 수 있도록 하기 위해 만들었습니다.
[해결완료한 이슈]
1. user라는 이름으로 테이블을 생성하려 했으나 오라클의 내장 명령어이기 때문에 userdb로 변경하여 진행하였습니다.
2. 잘못된 아이디로 로그인시 에러가 나는 이슈
:데이터베이스에 없는 아이디로 로그인을 시도할 시에 메서드에서 null값을 return해주는데 이를 int 자료형에 넣으려고
해서 문제가 되었습니다. 따라서 null값이 리턴 될 시에 바로 예외처리를 해주어 해결하였습니다.
3. 삭제된 게임을 다운로드 시도할 시 나타나는 에러
:일치하는 게임이 없을시 예외처리 해주어 해결하였습니다.
[해결예정 이슈]
1. 유효성 처리
: 사용자는 중복아이디로 가입하는 상황과 동일한 게임을 여러번 구매하는 상황, 관리자는 동일한 게임을 등록하는 상황에 대한 처리를 하지 못했습니다. 비교적 간단하고 쉽게 해결할수 있는 이슈들이지만 이러한 예외상황에 대한 발견을 늦게 하여 처리하지 못하였고, 이후의 업데이트에 포함시킬 예정입니다.
2. 다운로드 수가 가장 높은 장르를 노출
: 현재 저희는 신규유저, 그리고 기존유저 모두가 디폴트로 할인율에 따른 게임 리스트를 출력해 주고 있습니다.
여기에 더 나아가서 저희는 신규유저에 대해서는 전체 게임에서 다운로드가 가장높은 장르리스트를 출력해주고, 기존 유저에 대해서는 해당 유저가 가장 많이 다운받은 장르 리스트를 알아내 그 장르에 맞는 게임 리스트를 출력해줄 예정입니다. 신규유저에 대한 처리는 sql문도 완성되었고, 적용하는 것도 비교적 간단하지만 기존유저에 대한것은 gamedown테이블의 구조를 변경할 필요가 있다 판단하였고, 후에 업데이트를 할 예정입니다.
-- 장르별 다운로드 총계
select genre,sum(dcnt) from game group by genre;
-- 장르별 다운로드순 정렬
select genre,sum(dcnt) from game group by genre order by sum(dcnt) desc;
-- 다운로드 최상위 장르 선택
select genre from (select genre,sum(dcnt) from game group by genre order by sum(dcnt) desc) where rownum<=1 group by genre;
3. 날짜 크롤링 이슈
:Steam 사이트에서 날짜 데이터를 크롤링할시에 미국시간대를 기준으로 크롤링되었고, 서버의 날짜 정보를 가져오기 때문에 날짜표기를 변경하기 곤란하다는 문제가 있었습니다. 이를 해결하기 위해 저희는 날짜, 월, 년도로 잘라 각각을 자바 부분에서 date타입으로 변경하려고 합니다. 또한 국가별 시간대를 바꿔주는 서비스를 이용하여 한국시간으로 맞춰주고자 합니다.
[강사평]
1. 해결완료/해결중 이슈를 나눠서 소개했다.
2. 이슈 해결과정에 대한 상세 소개했다.
[느낀점]
1. 설계를 나름 꼼꼼히 했다고 생각했는데 진행하면서 수정할 사안이 계속 나와서 많은 부족함을 느꼈다.
2. 시간이 부족할 줄 알고 기능적 구현에서 설계하지 않은 부분이 있었는데 생각보다 팀프로젝트가 잘 진행되서 다음 프로젝트에는 조금더 욕심을 부려도 좋을것 같다는 생각을 했다.
'Project' 카테고리의 다른 글
Team5-2) (HTML,JS,JSP) [맛집 추천 사이트] 검색, 검색 리스트 (0) | 2022.04.14 |
---|---|
Team5-1)(AJAX, JS,HTML) [맛집 추천 사이트]회원가입 (0) | 2022.04.14 |
Team4) [HTML, CSS, JavaScript] 애플 페이지 분석 (0) | 2022.02.22 |
Team2) [DB] group by, having을 이용한 데이터 가공하기 (0) | 2022.01.25 |
Team1) 자판기 프로그램 (0) | 2022.01.11 |
댓글