017 프로젝트

EWS

영단어 학습 데스크톱 애플리케이션

2학년 Java 프로젝트 수업에서 진행한 영단어 학습 데스크톱 애플리케이션입니다. 영단어 시험을 준비하며 느낀 불편함을 바탕으로, 학습-테스트-결과 확인-오답 관리 흐름을 구현했습니다.

  • Java AWT/Swing 기반 데스크톱 애플리케이션 구현
  • 학습, 테스트, 결과 확인, 오답 저장과 재시험 흐름 구성
  • 목표한 기능을 모두 구현하고 수업 최고점 달성
01

EWS는 영단어를 반복 학습하고 테스트한 뒤, 틀린 단어를 다시 확인할 수 있도록 만든 Java 데스크톱 애플리케이션입니다.

학습 화면에서는 단어를 순서대로 확인하고, 테스트 화면에서는 뜻을 보고 영단어를 입력한 뒤 결과 화면에서 정답과 오답을 확인합니다.

02

언어

Java

프레임워크

AWT / Swing

데이터베이스

MySQL

MySQL Connector/J

5.1.45

개발환경

Eclipse

Oxygen

도구

HeidiSQL

03
  • 프로젝트 참여 3명
04

당시 영단어 시험을 준비하며 느낀 불편함을 해결하는 데 초점을 맞춘 프로젝트입니다.

단어를 단순히 외우는 것에서 끝내지 않고, 테스트 이후 다시 공부해야 하는 단어를 따로 확인하고 저장할 수 있도록 기능을 설계했습니다.

05

주요 범위는 영단어 학습, 단어 테스트, 결과 확인, 오답 단어 확인, 오답 저장, 오답 재시험, 단어 추가와 검색입니다.

코드 기준으로 학습 화면은 MySQL에서 단어를 무작위로 가져와 보여주고, 테스트 화면은 30개 단어에 대한 입력 결과를 확인합니다. 결과 화면에서는 정답과 오답 개수를 보여주며, 오답 단어 화면에서는 틀린 단어를 다시 확인하거나 `Incorrect_Word.txt` 파일로 저장할 수 있습니다.

06

프로젝트 팀장을 맡았고, 전체 디자인 구성과 SW/TW/MV/RW 페이지 기능 구현, 데이터베이스 설계와 구현을 담당했습니다.

코드 기준으로는 학습 화면, 테스트 화면, 더보기 화면, 오답 화면, 결과 화면의 흐름이 나뉘어 있으며, 각 화면 전환과 단어 데이터 조회/수정 흐름이 함께 구현되어 있습니다.

07
  • 전체 화면 디자인과 버튼 이미지 기반 UI 구성
  • SW 학습 화면과 TW 테스트 화면 구현
  • MV 더보기 화면과 단어 추가·검색 기능 구현
  • RW 오답 단어 화면과 오답 저장·재시험 흐름 구현
  • MySQL 기반 단어 데이터 조회와 오답 상태 업데이트 흐름 구현
08

Java AWT/Swing 기반으로 각 화면을 `JFrame` 클래스로 구성했습니다. 메인 화면에서는 학습과 더보기로 진입하고, 학습 화면에서는 일정 시간마다 단어를 보여주거나 다음 단어로 이동할 수 있게 했습니다.

데이터는 `VocaDAO`를 통해 MySQL의 `eng_voca` 데이터베이스에 연결합니다. 단어 조회, 단어 추가, 오답 상태 업데이트가 DAO를 통해 처리되며, `passed` 값을 기준으로 오답 단어와 재시험 대상 단어를 구분합니다.

오답 화면에서는 틀린 단어 목록을 테이블로 보여주고, 저장 버튼을 통해 오답 단어를 `Incorrect_Word.txt` 파일로 내보내는 흐름도 구현되어 있습니다.

09

기능 자체는 비교적 빠르게 풀어냈지만, GUI를 의도한 대로 배치하고 화면 흐름을 정리하는 과정이 어려웠습니다. Java AWT/Swing 안에서 학습, 테스트, 결과, 오답 화면을 자연스럽게 이어야 했고, 버튼 이미지와 화면 전환도 직접 맞춰야 했습니다.

주제 자체가 내가 필요하다고 느껴 제안한 것이었기 때문에, 어떤 기능을 최종 범위로 둘지 정의하는 것도 쉽지 않았습니다. 또한 팀 내 역할별 참여도에 차이가 있어, 팀장으로서 진행 상황을 맞추고 참여를 끌어내는 과정도 부담으로 남았습니다.

10

최종적으로 목표했던 기능은 모두 구현했고, 이 프로젝트 역시 수업에서 최고점을 받았습니다. 처음으로 내가 정한 목표 기능을 100% 완성했다는 점에서 만족도가 컸습니다.

다만 코드 구조나 UI 완성도는 지금 돌아보면 아쉬움이 남습니다. 수업에서 배운 스택 안에서 문제를 풀어야 했기 때문에 선택지는 제한적이었지만, 그 제한 안에서 원하는 흐름을 끝까지 구현해본 경험은 이후 프로젝트를 진행하는 데 좋은 기준이 되었습니다.