* 이 포스팅은 '유튜브 동빈 나' 님의 강의자료를 참고하였습니다.
지난 시간에는 회원 가입을 하고 회원 정보를 데이터베이스에 저장하고 로그인 까지 했습니다.
강의 목록, 시간표, 강의 분석 화면 까지 다 학습해 보았고, 스플래쉬 화면을 통해 조금 앱 다운 것을 만드는 실습을 해보았습니다.
이번에는 앱의 모든 기능들을 공부하고 그 느낀 점을 포스팅 해봤습니다.
1. 강의 목록 기능
강의 목록 기능입니다. 이 프레그 먼트에서는 스피너들을 많이 활용했습니다. 라디오 버튼을 활용해서 사용자가 학부 생인지 아니면 대학원 생인지를 구분하게 만들어, 라디오 버튼 선택 상태에 맞게 스피너들의 값을 다르게 해주는 것을 공부하였습니다. 예를 들어 학부 생이면 년도, 학기, 전공 인지 비 전공인지, 전공 이다면 무슨 과인지, 기타 과목이면 무슨 과목인지 그 키워드에 해당하는 강의들을 검색하는 것을 공부했습니다. 강의 검색의 기본 원리도 역시 데이터 베이스에 저장된 과목들을 스피너의 값들을 키워드로 해서 불러 왔어야 했습니다. 학교에 많은 과목들을 데이터 베이스에 저장하기 위해서는 웹 파싱 기법을 활용해야 되는데 아직 까지 실력이 부족하여 웹 파싱 기법을 조금 더 공부하고 추 후에 학교 과목들을 데이터 베이스에 저장해보도록 하겠습니다.
$result = mysqli_query($con, "SELECT * FROM COURSE WHERE courseUniversity = '$courseUniversity' AND courseYear = '$courseYear' AND courseTerm = '$courseTerm' AND courseArea =
'$courseArea' AND courseMajor = '$courseMajor'");
보시면 학부, 대학원 인지, 년도, 학기, 전공 인지 비전공인지, 해당 학과 또는 비전공 과목 키워드를 변수를 받아와 그 변수에 맞는 과목들을 데이터베이스에 찾아와서 출력하는 sql 문 입니다. 데이터베이스라는 과목을 현재 학교 수업을 듣고 있어서 그런지, 저기 sql 문을 이해가 잘 되었습니다.
2. 시간표
시간표 기능입니다. 이 프레그 먼트에서는 테이블 레이아웃과 테이블 로우를 활용해서 그 안에는 사용자가 강의 목록에 있는 과목들을 추가해서 그 과목들의 시간들을 키워드 값으로 해당 테이블 로우 안에 삽입하는 방식으로 해주었습니다.
저 칸 하나하나는 아이디 값을 별도로 지정해주었습니다. 마찬가지로 강의 시간을 기준으로 삼아야 하기 때문에 php 파일의 sql 문은 다음과 같습니다.
$result = mysqli_query($con, "SELECT COURSE.courseID, COURSE.courseTime, COURSE.courseProfessor, COURSE.courseTitle, COURSE.courseCredit
FROM USER, COURSE, SCHEDULE WHERE USER.userID = '$userID' AND USER.userID = SCHEDULE.userID AND SCHEDULE.courseID = COURSE.courseID");
유저의 아이디를 받아와서 그 유저가 무슨 과목을 신청했는지 보고, 사용자 정보 테이블, 과목 테이블, 시간표 테이블을 자연조인해서 나온 결과 값이 곧 유저가 신청한 과목이기 떄문에 그 시간 값에 맞게 해당 시간표 테이블 로우 안에 값이 들어가게 됩니다.
3. 강의 분석
강의 분석 기능입니다. 이 프레그 먼트에서는 사용자가 추가 했던 과목 삭제 기능, 그리고 다른 사용자들이 어떤 과목을 가장 많이 신청했는지, 그 과목의 경쟁률이 어떻게 되는지, 강의를 추가했던 사람들을 각각 기준에 맞게 분류해서 보여주는 기능을 공부했습니다. 강의 삭제를 하는 것 역시 추가와 반대로 버튼을 눌렀을 때 시간표 테이블에 사용자가 추가 했던 과목들을 삭제하는 것을 공부해 보았습니다.
$statement = mysqli_prepare($con, "DELETE FROM SCHEDULE WHERE userID = '$userID' AND courseID = '$courseID'");
과목 고유의 ID 와 유저 ID 를 변수로 받아와서 그 값에 해당하는 과목들을 지워주는 sql 문입니다.
다음 인기있는 과목들을 TOP 5로 설정해서 내림차순으로 정렬하는 기능입니다. 이것을 통해 사용자는 어떤 과목이 제일 인기 있는 지를 알 수가 있습니다.
$result = mysqli_query($con, "SELECT COURSE.courseID, COURSE.courseGrade, COURSE.courseTitle, COURSE.courseProfessor, COURSE.courseCredit
, COURSE.courseDivide, COURSE.coursePersonnel, COURSE.courseTime FROM SCHEDULE, COURSE, USER WHERE USER.userMajor IN (SELECT
userMajor FROM USER WHERE userID = '$userID') AND USER.userID = SCHEDULE.userID AND SCHEDULE.courseID = COURSE.courseID GROUP BY
SCHEDULE.courseID ORDER BY COUNT(SCHEDULE.courseID) DESC LIMIT 5; ");
사용자 ID 값을 기준으로 그 사용자의 (예: 학과에 소속된 사람들) 학과 생들이 추가한 과목들을 내림차순 하여 5개만 보여주는 sql 문입니다.
학교에서 안드로이 스터디를 꾸준히 하고 있었고, 조금 더 심화 학습을 해보기 위한 테스트 단계를 위해 공부를 해보았는데, 해보면서 어려운게 한 두가지가 아니었습니다. 이 코드는 왜 이렇게 되는 건지 구글링을 추가적으로 더 해보고 여기에서 이렇게 하면 더 좋겟다 라는 생각도 해보았습니다 . 앞으로는 웹 파싱 기법을 조금 공부를 더 해서 학교의 과목들을 다 불러와 데이터 베이스에 집어 넣는 공부를 해볼 계획입니다. 감사합니다.
'Android' 카테고리의 다른 글
[안드로이드 스튜디오 : TextView, EditText, Button 사용하기 with Kotlin] (0) | 2021.02.18 |
---|---|
[부스트코스:안드로이드 프로그래밍] 프로젝트 A . 영화 상세 화면 만들기 (0) | 2021.02.02 |
[안드로이드 스터디 : 수강신청 앱 만들기] (2) | 2021.01.30 |
[안드로이드 기초 : 버튼 사용하기] (0) | 2021.01.30 |
[안드로이드 스튜디오 : 스플래시 화면 구현 하기] (0) | 2021.01.30 |