Skip to content

SQLite 활용 직접 항목 업로드 가능한 이상형 월드컵 Android 앱

Notifications You must be signed in to change notification settings

fairyofdata/Android_tournament

 
 

Repository files navigation

SQLiteAndroid

이상형 월드컵 Android 앱 제작: SQLite 활용

팀원: 조민제, 조항민, 백지헌, 이충안

기획 의도

  • 다양한 주제로 이상형 월드컵을 하는 것이 유행
  • 유저가 원하는 주제를 만들어서 어떤 상황이던지 즐길 수 있음
  • 사용자가 직접 이상형 월드컵을 간편하게 만들고 공유

프로젝트 설명

[특정 화면을 가리키며 설명]

  • 사용자가 이상형 월드컵을 만듦
  • 이를 불러와서 이상형 월드컵 진행

SQLite 기술 사용 배경

  • 유저가 만든 월드컵을 저장해야 한다
  • 애플리케이션이 종료된 이후에도 데이터가 보존 되어야 한다
  • 핸드폰 내 저장소에 데이터를 특정 형식으로 저장하고, 형식에 맞춰 불러오는 기능 필요

SQLite 소개

  • 관계형 데이터베이스 관리 시스템(RDBMS) 중 하나, 로컬에서 사용할 수 있는 비교적 가벼운 데이터베이스 관리 시스템
  • 관계형 데이터베이스이기 때문에 SQL을 이용해 저장하고 불러올 수 있다.
  • 오픈 소스이며, C 언어로 작성되어 간단하면서도 높은 성능을 제공
  • Android Studio에서도 물론 SQLite를 지원

SQLite 적용 방법

데이터베이스 수업을 들으신 분들은 아시듯이, table을 생성하는 sql문과 데이터를 넣는 sql문 등을 사용해서 DB를 구축합니다.

저희는 이미지와 텍스트를 저장하는 TABLE, 그 TABLE들의 이름들을 저장하는 main TABLE를 만들었습니다. 앱에서 실행되는 과정으로 설명하면, 이미지와 텍스트를 입력하고 테이블 이름을 어떤 것으로 할지 텍스트를 입력하게 합니다.

save 버튼을 누르면 table을 생성하게 되는데, 유저가 입력한 값을 기반으로 table을 생성한 후, main table에 table명을 저장합니다. 이미지를 저장하는 방식은, Bitmap으로 변환하여 저장하였습니다.

저희는 main Table을 메뉴판으로 만들어서 원하는 부분을 선택하면, 해당 table의 정보를 가지고 이상형 월드컵을 진행하게 됩니다.

GridView 기술 사용 배경

  • 앞에 보시는 화면은 저장된 이상형 월드컵을 불러와 그중 하나를 진행하는 기능
  • 사용자가 만든 이상형 월드컵 수에 따라 동적으로 화면을 보여주어야 하고, 어떤 이상형 월드컵을 선택했는지 알 수 있어야 합니다.

GridView 적용 방법

  • 코드 보면서 설명 (나는 미래의 나와 팀원들를 믿는다)

이진 트리 사용 배경

  • 토너먼트 대진 모양이 이진 트리와 유사
  • '자료구조'에서 배운 내용 적용해보고 싶음

이진 트리 소개

  • 트리 구조 : 트리를 뒤집어 놓은 모양, 하나의 Root Node, 각 Node는 자식을 가질 수 있다.
  • 이진 트리 구조 : 각 노드당 최대 2개의 자식을 가지는 구조
    • 이상형 월드컵은 “포화 이진 트리 구조”를 가진다.

이진 트리 코드 1

이제, 이상형 월드컵이 작동하는 원리를 설명드리겠습니다.

  • 각 노드는 playerName, playerImage, left, right, parent로 구성되어 있습니다.
    • Image는 Bitmap 형식
  • 데이터를 액티비티 간 전송하기 위해서는 Intent를 사용해야 합니다. 그러나 저희의 정의한 TreeNode는 기본 자바에서 직접 지원하지 않습니다. 따라서 Parcelable 인터페이스를 구현하여 Intent를 통해 데이터를 전송할 수 있도록 하였습니다.

이진 트리 코드 2

  • 가장 최하단의 레벨에만 저희가 원하는 값들이 저장이 되고 나머지의 노드들은 임시의 값을 넣어두었습니다.
  • 마지막으로 저희는 완성된 TreeNode를 탐색하는 기능과 사용자가 선택하는 기능을 동시에 구현하였습니다.
  • 진행 과정마다 임시 값이 채워지며 다음 대진 탐색
  • 추가적으로 이진 트리를 사용하는 과정에서 반복문 안에 Intent를 이용해서 트리상태구조를 업데이트 해야하는데 이 과정에서 비동기 처리를 사용했다

프로젝트 시연 영상

[영상 보면서 설명 - 중간마다 짧게]

이스터에그

  • 이상형 월드컵 이름을 pocketmon으로 하면, 대결 화면이 바뀐다

기대 효과

  • 자신이 만든 이상형 월드컵을 친구들과 같이 즐길 수 있다
  • 친구들과 다양한 주제로 이야기하여 친목을 도모함
  • 점심 메뉴 등 의사결정 시 활용가능

발전 가능성

  • 외부 서버를 통해, 많은 사람들과 공유할 수 있게 한다.
  • 각 매치 별 결과를 바탕으로 선호도를 공유하게 한다.
    • 특히 앞에 사용한 트리구조를 통해 1등 100점, 2등 50점, 공동 4등 25점.. 이런식으로 점수를 배정하여 랭크를 메길 수 있게 한다
  • 사용자의 선호에 따라 8강 외에도 16강, 32강 등 대진 라운드 수를 선택할 수 있도록 한다.
  • 이를 잘 달성한다면 제 2의 이상형 월드컵 app 버전으로의 변신이 가능 할 것이라 예상한다

About

SQLite 활용 직접 항목 업로드 가능한 이상형 월드컵 Android 앱

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Java 68.6%
  • Kotlin 31.4%