본문으로 건너뛰기

Tea Time

초등임용 대비 모바일 학습 앱

개요

기간

2024.01 ~ 2024.02

개요

개인 프로젝트

주요 기능

교육과정/총론 기반 테스트, 오답노트

사용 기술

FlutterProviderMaterial DesignFirebase

구현 기능 및 개발 과정

메인 화면 구현 기능

메인 화면
일요일이면그 외 요일11월 1일의 요일 확인시험일 11월 7일다음 주 토요일남은 시험 일수 표시메인 화면테스트 결과
11월 1일의 요일로 시험일을 정해 남은 일수를 계산하고, 테스트 결과와 함께 메인 화면에 표시해 공부 의욕을 자극함.
문제

메인 화면에서는 공부에 대한 의욕을 자극하고자 함.

해결

따라서 남은 시험 일수와 테스트 결과를 제공함. 11월 1일이 일요일이면 11월 7일을 시험일로 지정함. 그 외에는 11월 1일의 요일을 기준으로 다음 주 토요일을 계산함.

여러 기기에서 이어지는 오답 목록

최신오래됨오답 목록 내려받기테스트 종료오답 목록 +타임스탬프 업로드Firestore다른 기기 실행로컬 타임스탬프 비교내려받지 않음학습 이어가기
업로드는 테스트가 끝날 때, 내려받기는 타임스탬프가 오래됐을 때만 일어남.
문제

시험 기간에는 여러 기기를 번갈아 사용하므로, 어느 기기에서 접속하더라도 동일한 오답 목록으로 학습을 이어갈 수 있어야 함.

해결

테스트가 끝나면 오답 목록과 타임스탬프를 함께 Firestore에 올림. 앱을 켤 때 기기에 저장된 타임스탬프가 서버보다 오래된 경우에만 데이터를 내려받음.

결과

기기를 바꿔도 같은 오답 목록으로 학습을 이어갈 수 있음. 매번 전체를 내려받지 않고 타임스탬프가 다를 때만 동기화함.

교육과정 테스트 다차원 배열 구현

교육과정 내용체계 표
교육과정 테스트
다차원 배열 관리
학년군별 렌더링 분기상세 정보 제공과목학년군영역범주세부내용컴포넌트 렌더오답노트
과목 > 학년군 > 영역 > 범주 > 세부내용으로 구체화되는 다차원 배열 계층.
문제

교육과정 내용체계표 자체를 보여주거나 테스트 가능하게 하기 위해 각 값들 하나하나를 컴포넌트화 해야했음. 또한 학년군에 따라 렌더링 처리를 다르게 해야함.

해결

따라서 이를 위해 다차원 배열을 활용하였고, 해당 배열은 과목 > 학년군 > 영역 > 범주 > 세부내용 차례로 구체화됨.

lib/function/answer_check/achieve_checker.dart
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;                 // 오답
    }
  }
}
미입력·정답·오답을 한 번의 순회에서 판정하고, 오답일 때만 DB에 기록함.
결과

인덱스 순서를 과목·학년군·영역·항목으로 고정해 채점 함수가 이중 for문과 한 줄의 문자열 비교로 12개 과목 전체를 처리함. 오답 기록에도 같은 인덱스를 전달해 오답 항목을 식별함.

정답 비교

테스트 모드에서 정답 확인
원문과 자신의 정답 비교
미입력 0정답 1오답 2입력한 답안띄어쓰기 제거 여부판정정답과 문자열 비교상태값 저장빨간 배경 표시오답 DB 기록
띄어쓰기 제거 여부를 정한 뒤 정답과 비교해 미입력 0, 정답 1, 오답 2로 나눔. 오답만 빨간 배경으로 표시하고 DB에 기록함.
문제

문장 수준에서 틀린 부분을 찾는데 시간이 오래 걸리기 때문에 틀린 부분을 정확하게 알 수 있다면 채점 후 오답 정리할 때 시간을 절감할 수 있음.

해결

띄어쓰기를 제거할지 여부를 Remove 클래스로 분리해 채점기 세 종류가 같은 클래스를 공유함. 입력한 답안과 정답을 비교해 틀린 항목은 빨간 배경으로 표시함.

결과

채점 결과를 정답 1, 미입력 0, 오답 2로 저장함. 단일 값으로 배경색 표시와 오답 DB 기록을 함께 처리함.

결과 및 회고

결과

교육과정 기반 문제 풀기 기능 구현

오답노트 자동 기록 및 재학습 흐름 제공

Firebase를 활용한 오답 목록 백업

회고

교육과정 데이터가 전체 10,754줄 중 6,230줄을 차지함. 데이터 구조를 먼저 정하면 화면 코드와 채점 코드가 줄어듦을 확인함.

크로스 플랫폼 앱 설계에 대한 이해

라이선스