Tea Time
초등임용 대비 모바일 학습 앱
개요
기간
2024.01 ~ 2024.02
개요
개인 프로젝트
주요 기능
교육과정/총론 기반 테스트, 오답노트
사용 기술
구현 기능 및 개발 과정
메인 화면 구현 기능
메인 화면에서는 공부에 대한 의욕을 자극하고자 함.
따라서 남은 시험 일수와 테스트 결과를 제공함. 11월 1일이 일요일이면 11월 7일을 시험일로 지정함. 그 외에는 11월 1일의 요일을 기준으로 다음 주 토요일을 계산함.
여러 기기에서 이어지는 오답 목록
시험 기간에는 여러 기기를 번갈아 사용하므로, 어느 기기에서 접속하더라도 동일한 오답 목록으로 학습을 이어갈 수 있어야 함.
테스트가 끝나면 오답 목록과 타임스탬프를 함께 Firestore에 올림. 앱을 켤 때 기기에 저장된 타임스탬프가 서버보다 오래된 경우에만 데이터를 내려받음.
기기를 바꿔도 같은 오답 목록으로 학습을 이어갈 수 있음. 매번 전체를 내려받지 않고 타임스탬프가 다를 때만 동기화함.
교육과정 테스트 다차원 배열 구현
교육과정 내용체계표 자체를 보여주거나 테스트 가능하게 하기 위해 각 값들 하나하나를 컴포넌트화 해야했음. 또한 학년군에 따라 렌더링 처리를 다르게 해야함.
따라서 이를 위해 다차원 배열을 활용하였고, 해당 배열은 과목 > 학년군 > 영역 > 범주 > 세부내용 차례로 구체화됨.
for (int gradeNum = 0; gradeNum < 3; gradeNum++) {
for (int i = 0; i < inputString[gradeNum].length; i++) {
final text = Remove(isIncludeSpace).space(inputString[gradeNum][i].text);
if (text == '') {
answerCheck[gradeNum][i] = 0; // 미입력
} else if (achieveIndex[gradeNum].contains(text)) {
answerCheck[gradeNum][i] = 1; // 정답
} else {
AchieveWrongAnswerToDB().achieveWriter(subjectNum, gradeNum, ...);
answerCheck[gradeNum][i] = 2; // 오답
}
}
}인덱스 순서를 과목·학년군·영역·항목으로 고정해 채점 함수가 이중 for문과 한 줄의 문자열 비교로 12개 과목 전체를 처리함. 오답 기록에도 같은 인덱스를 전달해 오답 항목을 식별함.
정답 비교
문장 수준에서 틀린 부분을 찾는데 시간이 오래 걸리기 때문에 틀린 부분을 정확하게 알 수 있다면 채점 후 오답 정리할 때 시간을 절감할 수 있음.
띄어쓰기를 제거할지 여부를 Remove 클래스로 분리해 채점기 세 종류가 같은 클래스를 공유함. 입력한 답안과 정답을 비교해 틀린 항목은 빨간 배경으로 표시함.
채점 결과를 정답 1, 미입력 0, 오답 2로 저장함. 단일 값으로 배경색 표시와 오답 DB 기록을 함께 처리함.
결과 및 회고
결과
교육과정 기반 문제 풀기 기능 구현
오답노트 자동 기록 및 재학습 흐름 제공
Firebase를 활용한 오답 목록 백업
회고
교육과정 데이터가 전체 10,754줄 중 6,230줄을 차지함. 데이터 구조를 먼저 정하면 화면 코드와 채점 코드가 줄어듦을 확인함.
크로스 플랫폼 앱 설계에 대한 이해
라이선스
