Guide
KOJ (KNU Online Judge) 사용자 설명서 요약
이 문서는 KNU Online Judge (KOJ) 시스템의 주요 기능과 사용 방법을 요약한다. 문의 메일
1. 로그인 및 메인 화면
1.1. 로그인 화면
시스템 사용을 위해 로그인이 필요하다.

- 아이디 입력 창: 사용자의 아이디를 입력한다.
- 비밀번호 입력 창: 비밀번호를 입력한다.
- 비밀번호 숨김 해제: 입력한 비밀번호를 볼 수 있도록 전환한다.
- 로그인 버튼: 아이디와 비밀번호 입력 후 클릭하여 로그인한다.
1.2. 메인 화면
로그인 후 처음 보게 되는 화면으로, 주요 메뉴 접근 및 강의 목록을 표시한다.

- 상단 메뉴:
- 강의 목록: [강의 목록] 화면으로 이동한다.
- 채점 현황: [채점 현황] 화면으로 이동한다.
- 사용자 관리: [사용자 관리] 화면으로 이동한다. (관리자/교수 권한)
- 모드 전환: 라이트 모드와 다크 모드를 전환한다.
- 비밀번호 변경: 이름과 비밀번호를 수정할 수 있는 창을 연다.
- 로그아웃: 시스템에서 로그아웃한다.
- 화면 구성:
- 교수 목록: 접근 가능한 교수 목록을 보여준다.
- 진행 중인 강의 목록: 현재 진행 중인 강의들을 표시한다.
- 과거 강의 목록: 종료된 강의들을 표시한다.
- 강의 추가하기: 새 강의를 생성하는 창을 연다.
2. 강의 관리
2.1. 강의 목록
메인 화면에서 [강의 목록]을 선택하여 이동한다.

- 교수 목록: 특정 교수를 클릭하여 해당 교수의 강의 목록을 필터링한다.
- 강의 항목: 강의 제목, 담당 교수, 기간이 표시되며, 클릭 시 [강의 항목] 상세 페이지로 이동한다.
- 강의 생성: [강의 추가하기] 버튼으로 강의 생성 창을 열 수 있다.
- 강의 제목, 시작 날짜, 종료 날짜를 입력하여 새 강의를 생성한다.

- 과거 강의 목록: 종료 날짜가 지난 강의 목록을 보여준다.
2.2. 강의 항목
[강의 목록]에서 특정 강의를 선택하면 이동한다.

- 주요 기능:
- 강의 목록으로 돌아가기: 이전 [강의 목록] 화면으로 돌아간다.
- 성적 관리: 해당 강의의 [성적 관리] 페이지로 이동한다.
- 수강생 관리: 해당 강의의 [수강생 관리] 페이지로 이동한다.
- 강의 수정: 강의 제목, 시작/종료 날짜를 수정하는 창을 연다.
- 강의 삭제: 현재 강의를 삭제한다. (확인 메시지 표시)
- 실습 관리:
- 실습 목록: 강의에 포함된 실습 목록을 보여준다. 클릭 시 [실습 항목] 페이지로 이동한다.
- 실습 추가하기: 새 실습을 생성하는 창을 연다.
- 실습 제목, 공개 여부, 시작/종료 날짜를 설정한다.

- 실습 불러오기: 다른 교수나 강의에 생성된 실습을 복사해오는 창을 연다.
- 실습 시간 등 모든 상세 속성이 복사되므로 수정이 필요할 수 있다.

3. 실습 및 문제 관리
3.1. 실습 항목
[강의 항목]에서 특정 실습을 선택하면 이동한다.

- 주요 기능:
- 실습 목록으로 돌아가기: 이전 [강의 항목] 페이지로 돌아간다.
- 퀴즈 목록 / 문제 목록: 실습에 포함된 퀴즈나 문제 목록을 보여준다.
- 실습 수정: 실습 제목, 공개 여부, 시작/종료 날짜를 수정하는 창을 연다.
- 실습 삭제: 현재 실습을 삭제한다.
- 문제/퀴즈 추가하기: 목록 하단에서 새 문제나 퀴즈를 추가한다.
3.2. 문제 항목
[실습 항목]에서 특정 문제를 선택하면 이동한다.

- 주요 기능:
- 문제 목록으로 돌아가기: 이전 [실습 항목] 페이지로 돌아간다.
- 문제 확인: 마크다운 형식으로 작성된 문제 설명을 보여준다.
- 제출 목록: 해당 문제에 제출된 코드 목록을 보여준다. (채점 번호, 상태, 제출자, 언어 등)
- 코드 제출: 코드 제출 창을 연다. 문제 유형에 따라 창이 다르다.
- 코드 제출 문제: 코드 직접 입력 또는 파일 업로드. (C, C++, Java, Python 선택)
- 클래스 구현 문제: Java 클래스 파일(.java)을 업로드한다.
main.java파일은 자동으로 제외된다. - 빈칸 채우기 문제: 코드 내의 빈칸을 채워 제출한다.
- 코드 제출 문제: 코드 직접 입력 또는 파일 업로드. (C, C++, Java, Python 선택)
- 테스트케이스: 테스트케이스 확인 및 관리 창을 연다.
- 점수, 실행 인자, 표준 입력/출력을 확인하고 삭제할 수 있다.
- 새 테스트케이스를 추가할 수 있으며, 입력/출력 파일을 업로드할 수 있다.

- 문제 수정: 문제 제목, 제한 시간, 메모리 제한, 마크다운 내용 등을 수정하는 창을 연다.
- 문제 삭제: 현재 문제를 삭제한다.
4. 성적 및 수강생 관리
4.1. 성적 관리
[강의 항목]에서 [성적 관리]를 선택하면 이동한다.

- 필터링:
- 실습 선택: 성적표에 표시할 실습을 선택한다. (다중 선택 가능)
- 수강생 선택: 성적표에 표시할 수강생을 선택한다. (다중 선택 가능)
- 수강생 검색: 이름으로 특정 수강생을 검색하여 찾을 수 있다.
- 성적표: 선택된 수강생과 실습을 기준으로 성적표(총점 및 실습별 점수)가 표시된다.
- CSV 다운로드: 현재 조회된 성적표를 .csv 파일로 다운로드한다.
4.2. 수강생 관리
[강의 항목]에서 [수강생 관리]를 선택하면 이동한다.

- 수강생 추가 (직접 입력):
- 학생 이름, 학번, 권한(학생, TA)을 입력하여 추가한다.
- 학번만 입력 시 [사용자 관리]에서 일치하는 사용자를 찾아 자동으로 이름을 입력해준다.
- 신규 학생의 초기 비밀번호는 '학번+1234'이며, 기존 학생의 비밀번호는 변경되지 않는다.

- 수강생 추가 (엑셀 업로드):
- 엑셀 서식을 다운로드 받아 학생 목록을 작성한 후, 파일을 업로드하여 일괄 추가한다.

- 수강생 정보 수정:
- 학생 이름, 학번, 권한을 수정하거나 비밀번호를 '학번+1234'로 초기화할 수 있다.

- 수강생 삭제: 강의에서 해당 수강생을 삭제한다.
5. 기타 기능
5.1. 채점 현황
메인 화면에서 [채점 현황]을 선택하면 이동한다.

- 조회: 교수, 강의, 제출자별로 채점 현황을 필터링하여 조회할 수 있다.
- 채점 목록: 채점 번호, 문제, 제출 상태, 제출자, 언어 정보를 테이블로 보여준다.
- 제출 상태: 정답, 오답, 컴파일 에러, 실행 중, 내부 에러 중 하나로 표시된다.
- 새로고침: 실시간 채점 현황을 확인하기 위해 목록을 새로고침한다.
- 상세보기:
- 제출된 코드의 상세 채점 결과를 보여준다.
- 컴파일 에러 시 에러 로그를 확인할 수 있다.
- 오답 시 테스트케이스별 결과(입력, 출력, 정답)를 보여준다. (정답은 비공개일 수 있음)


5.2. 사용자 관리
메인 화면에서 [사용자 관리]를 선택하면 이동한다. (관리자/교수 권한)

- 기능:
- 사용자 목록: 시스템의 모든 사용자(이름, 학번, 권한)를 보여준다.
- 이름 검색: 이름으로 사용자를 검색한다.
- 사용자 추가: 새 사용자를 시스템에 추가한다. (이름, 사용자 유형, 학번 입력)
- 초기 비밀번호는 '학번+1234'이다.

- 사용자 정보 수정: 사용자의 유형(학생/교수, 관리자로는 변경 불가)을 수정하거나 비밀번호를 초기화한다.
- 관리자(admin) 계정 정보는 수정이 불가능하다.

- 사용자 삭제: 시스템에서 사용자를 삭제한다.










