Skip to content

loche01/algomeokja-java-swing

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

183 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

알고먹자 - 식단·운동 관리 프로그램 (Java Swing, MySQL)

알고먹자는 사용자가 식단과 운동을 기록하고, 하루 동안 섭취한 칼로리와 영양소, 운동 기록, 체중 목표를 한곳에서 관리할 수 있는 Java Swing 기반 데스크톱 프로그램입니다.

아침·점심·저녁 등 식사별로 음식을 검색해 식단을 기록할 수 있으며, 운동 종류와 운동 시간을 입력해 운동 기록을 저장할 수 있습니다. 저장한 기록은 날짜별로 확인할 수 있고, 목표 체중을 설정하여 현재 진행 상황을 확인할 수 있습니다.

2025년 4인 팀 프로젝트로 개발했으며, 프로젝트 종료 후 기존 프로젝트를 다시 실행하고 분석하면서 실행 환경, 보안, 데이터 처리, 기능 오류 및 UI/UX를 개인적으로 개선했습니다.


📌 프로젝트 개요

  • 프로젝트명: 알고먹자
  • 개발 기간: 2025.01.20 ~ 2025.02.20
  • 프로젝트 형태: 4인 팀 프로젝트 / 프로젝트 종료 후 개인 개선
  • 팀원: 석인철, 이상민, 성연오, 박민경
  • 역할: 팀장
  • GitHub: 현재 저장소
  • 상세 포트폴리오: 알고먹자 프로젝트 상세 보기

📱 주요 기능

🍽️ 식단 관리

  • 아침·점심·저녁 등 식사 종류 선택
  • 음식 검색 및 상세 영양정보 조회
  • 음식 중량 조절
  • 선택한 음식 식단에 추가 및 삭제
  • 식단 기록 중량 조절
  • 선택한 음식 식단에 추가 및 삭제
  • 식단 기록 저장
  • 일일 칼로리 및 탄수화물·단백질·지방 섭취량 확인

🏃 운동 관리

  • 운동 카테고리별 목록 조회
  • 운동 이름 검색
  • 운동 상세 정보 확인
  • 운동 시간과 현재 체중을 기준으로 예상 소모 칼로리 계산
  • 운동 기록 저장

🎯 목표 관리

  • 시작 체중 및 목표 체중 설정
  • 목표 기간 설정
  • 현재 목표 진행률 확인
  • 목표 정보 수정

📅 기록 확인

  • 월간 캘린더 이동
  • 날짜별 식단 기록 조회
  • 날짜별 운동 기록 조회

👤 회원 관리

  • 회원가입 및 로그인
  • 아이디 찾기
  • 비밀번호 재설정
  • 회원정보 수정
  • 신체정보 관리

📢 공지사항

  • 사용자 공지사항 목록 및 상세 조회
  • 관리자 공지사항 작성·수정·삭제
  • 공지사항 첨부파일 관리

🛠️ 사용 기술

Application

  • Java 21 - 애플리케이션 기능 구현
  • Java Swing - 데스크톱 GUI 구성

Database

  • MySQL - 회원, 음식, 식단, 운동, 목표, 공지사항 데이터 관리
  • JDBC / MySQL Connector/J - Java 애플리케이션과 MySQL 연동

Structure & Security

  • DAO Pattern - 화면 로직과 데이터베이스 접근 코드 분리
  • PBKDF2 - 회원 비밀번호 해싱 및 검증

Development Environment

  • Eclipse
  • JDK 21
  • Git
  • GitHub

🏆 내가 기여한 부분

1️⃣ 팀장 및 프로젝트 진행 조율

  • 4인 팀 프로젝트의 팀장 역할 수행
  • 프로젝트 기능 구성과 역할 분담 조율
  • 팀원들과 개발 진행 상황 공유 및 기능별 작업 조율
  • 프로젝트 최종 발표 담당

2️⃣ 식단 관리 기능 개발

식단 관리 기능 전반을 담당했습니다.

  • 식사 종류 선택
  • 음식 검색 및 조회
  • 음식 상세 영양정보 확인
  • 음식 중량 조절
  • 선택한 음식 식단 추가 및 삭제
  • 식단 기록 저장
  • 일일 섭취 칼로리 및 영양소 확인

3️⃣ 목표 관리 기능 개발

  • 시작 체중 및 목표 체중 설정
  • 목표 기간 설정
  • 목표 진행 상황 확인
  • 목표 정보 수정

4️⃣ 회원 관리 기능 개발

  • 회원가입
  • 로그인
  • 아이디·비밀번호 찾기
  • 회원정보 수정
  • 신체정보 관리

5️⃣ 운동 관리 및 기록 조회 공동 개발

  • 운동 목록 및 운동 기록 기능 개발에 일부 참여
  • 운동 화면 간 데이터 전달 및 기능 연동
  • 캘린더 기반 식단·운동 기록 조회 기능을 팀원과 공동 개발

6️⃣ 데이터베이스 공동 설계

  • 팀원 전원이 함께 데이터베이스 설계
  • 팀장으로서 프로젝트 주요 기능을 기준으로 초기 DB 구조의 틀 제안
  • 팀원들과 테이블 구성과 데이터 관계를 논의하며 설계 방향 조율

🔧 프로젝트 종료 후 개인 개선

팀 프로젝트 종료 후 기존 프로젝트를 다시 실행하고 코드를 분석하면서 당시 부족했던 부분을 개인적으로 개선했습니다.

1️⃣ 실행 환경 재구성

  • Apple Silicon macOS 환경에서 Eclipse 프로젝트 재구성
  • Temurin JDK 21 환경 설정
  • MySQL 및 MySQL Connector/J 연결 환경 구성
  • 외부 라이브러리 경로를 프로젝트 상대 경로 기준으로 정리

2️⃣ DB 설정 및 민감정보 관리

  • DB 접속 정보를 db.properties로 분리
  • .gitignore를 통해 로컬 DB 설정 파일 추적 제외
  • Git 히스토리에 남아 있던 민감정보 정리
  • 공개 저장소용 DB 스키마 및 설정 문서 정리

3️⃣ 로그인 및 비밀번호 보안 개선

  • PBKDF2 기반 비밀번호 해싱 적용
  • 회원가입과 로그인에서 동일한 방식으로 비밀번호 저장·검증
  • 일반 사용자와 관리자 로그인 흐름 점검

4️⃣ 식단 저장 트랜잭션 처리

  • 여러 식단 데이터를 하나의 JDBC 트랜잭션으로 처리
  • 저장 과정에서 오류 발생 시 전체 롤백
  • 일부 데이터만 저장되는 상황 방지

5️⃣ 운동 기능 및 화면 흐름 개선

  • 운동 목록에서 카테고리 선택 화면으로 돌아가는 기능 추가
  • 유산소·코어 카테고리 조회 흐름 정리
  • 선택한 운동 정보 전달 및 운동 기록 저장 흐름 수정
  • 운동 입력값 초기화 및 뒤로가기 동작 개선
  • 운동 목록 카드 렌더링 문제 수정

6️⃣ UI/UX 개선

  • 공통 색상·글꼴·버튼·카드 스타일 정리
  • 화면별 여백 및 입력 영역 배치 개선
  • 신체정보 화면의 컴포넌트 겹침 문제 수정
  • 식단 목록 데이터 개수에 따라 높이가 변경되는 동적 레이아웃 적용
  • 운동 목록의 카드 및 텍스트 잘림 문제 수정

7️⃣ GitHub 저장소 정리

  • 공개 저장소에 불필요한 테스트 코드 및 작업용 문서 정리
  • DB 스키마와 DAO의 테이블·컬럼 정합성 점검
  • 실행 환경 및 DB 설정 문서 정리
  • 기능별 작업 이력을 Git 커밋으로 관리

🚀 실행 환경 및 실행 방법

필요 환경

항목 기준
JDK Eclipse Temurin JDK 21
IDE Eclipse IDE for Java Developers
DB MySQL
JDBC Driver MySQL Connector/J
프로젝트 형식 Eclipse Java Project

실행 순서

  1. 저장소를 내려받습니다.
  2. Eclipse에서 Existing Projects into Workspace로 프로젝트를 가져옵니다.
  3. MySQL Connector/J를 내려받아 lib/mysql-connector-j.jar로 배치합니다.
  4. MySQL에서 sql/schema.sql을 실행하여 데이터베이스 스키마를 구성합니다.
  5. src/db.properties.example을 복사하여 src/db.properties를 생성하고 로컬 DB 접속 정보를 입력합니다.
  6. Eclipse에서 JDK 21이 적용되어 있는지 확인합니다.
  7. src/main/MainFrame.java를 Java Application으로 실행합니다.

실제 DB 접속 정보가 포함된 src/db.properties 파일은 Git에 포함되지 않습니다.


📚 관련 문서


📔 프로젝트 상세 보기

프로젝트 기능, 팀 프로젝트 당시 담당 역할, 프로젝트 종료 후 개인 개선 과정과 트러블슈팅에 대한 상세 내용은 아래 포트폴리오에서 확인할 수 있습니다.

👉 알고먹자 상세 포트폴리오


📌 현재 범위

  • 창 크기는 440x956으로 고정되어 있으며 반응형 크기 조절은 지원하지 않습니다.
  • 휴대폰 확인은 가입정보 대조 방식이며 실제 SMS 인증 서비스는 연동하지 않았습니다.
  • 공개 스키마에는 관리자 계정이 포함되어 있지 않습니다.

📄 라이선스

이 프로젝트는 MIT License를 따릅니다.

About

Java Swing 기반 식단·운동 기록 및 건강 관리 데스크톱 애플리케이션

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages