수기로 쓰인 코드를 인식해 채점을 진행해 주는 어플리케이션입니다. OCR을 이용해 손으로 쓰인 글자들을 인식하고 인식된 글자들을 코드파일로 변환합니다. 그 후 코드를 실행해 Output과 사용자가 미리 설정한 정답을 비교해 채점을 진행합니다.
실행 영상 : https://youtu.be/TtMPOGwlVdQ
- 실행
- apk 파일을 실행하여 설치합니다.
- H-Judge 아이콘을 터치하여 프로그램을 실행합니다.
- 회원가입
- 로그인 액티비티에서 'SIGN IN' 버튼을 터치하여 회원가입 액티비티로 이동합니다.
- ID, 비밀번호, email, 소속기관을 입력하고 하단의 'SIGN IN' 버튼을 터치하여 회원가입을 완료합니다.
- 로그인
- 로그인 액티비티에서 ID와 비밀번호를 입력하고 'LOG IN' 버튼을 눌러 접속합니다.
- 로그아웃
- 메인 액티비티에서 오른쪽 상단의 'Log Out'을 터치하여 로그아웃합니다.
- 강의 생성
- 메인 액티비티에서 '+' 버튼을 선택하여 강의생성 액티비티로 이동합니다.
- 강의명, 분반을 입력합니다.
- 학번과 학생이름을 입력하고 오른쪽의 '+' 버튼을 선택하여 학생을 추가합니다.
- 모든 학생이 추가되면 '등록' 버튼을 눌러 강의를 생성합니다.
- 시험 등록
- 메인 액티비티에서 각 강의를 선택하여 강의 액티비티로 이동합니다.
- 강의 액티비티에서 오른쪽 하단의 '시험 등록' 버튼을 터치하여 시험등록 다이얼로그를 띄웁니다.
- 시험등록 다이얼로그에 시험 이름을 입력하고 등록 버튼을 눌러 시험을 등록합니다.
- 문제 등록
- 강의 액티비티에서 각 시험을 선택하여 시험 액티비티로 이동합니다.
- '+' 버튼을 선택하여 문제등록 액티비티로 이동합니다.
- 언어를 선택하고 문제의 정보와 배점을 입력합니다.
- input과 output을 입력하고 '+'버튼을 눌러 테스트 케이스를 추가합니다.
- 등록버튼을 눌러 문제 등록을 마칩니다.
- 답안 등록
- 강의 액티비티에서 왼쪽 하단의 '답안 등록' 버튼을 터치하여 답안등록 액티비티로 이동합니다.
- 답안 등록 액티비티에서 '시험'을 터치하여 시험을 선택합니다.
- '문제'를 터치하여 문제를 선택합니다.
- 등록 열에 'X'버튼을 터치하여 답안선택 다이얼로그를 띄웁니다.
- '선택'을 터치하여 이미지 선택 화면을 띄웁니다.
- 답안으로 제출할 이미지를 선택합니다.
- '선택확인'을 눌러 제대로 이미지가 선택되었는지 확인힙나다.
- '등록'을 눌러 이미지를 제출합니다.
- 등록 열에 'X'버튼이 'Done'으로 바뀌는 것을 확인합니다.
- 모든 학생에 대해 4~9 과정을 반복한 후 왼쪽 하단의 '채점'버튼을 눌러 채점을 요청합니다.
- 오른쪽 하단의 '완료'버튼을 선택하여 강의 액티비티로 이동합니다.
- 시험 결과 확인
- 시험 액티비티에서 '[시험이름]으로 이동' 버튼을 터치하여 시험결과 액티비티로 이동합니다.
- 시험 결과를 확인합니다.
- 만약 문제 채점이 모두 완료되지 않았다면 '[시험문제]가 아직 채점되지 않았습니다' 라는 글씨를 볼 수 있습니다.
- 문제 결과 확인
- 시험 액티비티에서 '[문제 번호]' 버튼을 터치하여 문제결과 액티비티로 이동합니다.
- 문제 결과를 확인합니다.
- 모든 학생이 채점되지 않았다면 '아직 채점이 진행되지 않았습니다.' 라는 글씨를 볼 수 있습니다.
- Apache Tomcat을 실해시켜 localhost 구동이 가능하도록 합니다.
- Detect.java를 실햏시켜 채점을 대기시킵니다.
- DatabseRead.jsp와 getTestCase.jsp를 실행시켜 채점이 필요한 문제 정보를 읽어오고 그 문제에 대한 input과 output을 가져옵니다.
첨부된 코드에서 GoogleVisionApi 폴더에 있는 자바 프로젝트는 Google Cloud Vision API에서 제공하는 코드입니다. 부분 무료 API인지라 개인 보안키를 받아서 해당 프로젝트에 설정이 되어야만 실행이 가능한 탓에 외부 환경에서 실행이 안됩니다. 그 프로젝트 안에 같이 있는 CompileExam.java는 채점역할을 수행하는 코드입니다. Test2는 자바 동적 웹 프로젝트이고 웹서버의 역할을 담당하는 코드들이 포함되어있습니다.
branch에서 master branch는 서버쪽 코드를, app branch는 어플리케이션쪽 코드입니다.