
주제: 여행 여정을 기록과 관리하는 SNS 서비스 1단계
순수 자바 프로젝트
달성 목표: Java 문법, 파일 입출력, 예외처리, 클래스 설계
여행의 여정 정보를 기록하고 조회하는 Java 애플리케이션 개발 (도메인 설계)
여행 정보(출발,도착,출발시각,도착시간)과 숙박(체크인,체크아웃) 화면 기능 설계
여행 정보와 특정 여행 정보의 여정 목록은 데이터 저장 경로에 파일 형태로 저장 (CSV, json 등)
여행자 관리 화면 기능 설계
프로젝트 정의서
1. 회원은 여러 여행 기록을 저장할 수 있습니다. 회원 가입은 다음 단계에서 고려하고 본 프로젝트는 여행과 여정을 기록하고 조회하는 기능을 구현하기로 한다.
2. 여행에는 여러 여정이 있을 수 있습니다. 여정정보는 이동정보(출발지, 목적지, 출발시간, 도착시간), 숙박정보(체크인, 체크아웃) 등의 종류를 포함할 수 있다.
3. 회원의 여행기록 목록이 출력되며, 각 여행기록 목록을 선택하면 상세한 여정기록이 출력됩니다.
4. 회원 및 여행기록은 향후 데이터베이스 테이블로 관리되어 지나 1단계 프로젝트에서는 여행별 여정 정보는 json이나 csv 파일로 관리됩니다.
5. 여행정보,여정정보 구조는 다음과 같습니다.

요구사항
- 개별 여행은 여러 여정 정보로 구성됩니다(여행: 여정 = 1: n).
- 여정 정보에는 이동 유형(출발지, 도착지, 출발 시간, 도착 시간) 및 숙박(체크인,체크아웃)이 포함될 수 있습니다.
- 여행 정보 및 특정 여행 정보의 여정 목록은 데이터 저장 경로(CSV, JSON 등)에
파일 형태로 저장됩니다.
- 객체지향 성격이 잘 들어날 수 있도록 클래스를 설계하자.
- 프로젝트 기능구현을 위한 필요한 메소드를 정의하고 구현해보자
세부기능 구현
1) 여행 및 여정 정보 기록기능
- 여행일정을 기록해야 한다.
- 하나의 여행에 여러 개의 여정 정보를 기록해야 한다.
- 여정 정보를 N개 입력 후 계속 기록 여부를 묻고(Y/N) 기록을 종료 할 수 있다.
2-2) 여행 및 여정 조회 하는 기능
- 여행 전체 리스트를 조회 할 수 있어야 한다.
- 여행 전체 리스트에서 확인된 여행 아이디를 입력하면 해당 여행 정보와여정 정보를 조회 할 수 있어야 한다.
- 여행정보와 여정 정보 조회는 JSON 파일에서, CSV 파일에서 각각 조회가가능해야 한다.
2-3) 예외처리
- 여행 정보가 없으면 오류 메시지를 출력한다.
- 여행에 여정이 없으면 추가할 수 있어야 한다.
- JSON, CSV 형식에 맞지 않으면 오류 메세지를 출력한다.
- 한글 문자가 깨지지 않도록 해야 한다.
위의 사항들에 맞게 프로젝트를 진행하였다.
환경 설정
java 버전: 17
빌드: gradle
파일구조
│
├─data
│ ├─csv
│ └─json
├─gradle
│ └─wrapper
└─src
└─main
└─java
└─org
└─ybe
├─domain
│ ├─itinerary
│ │ ├─controller
│ │ ├─dto
│ │ ├─model
│ │ ├─repository
│ │ ├─service
│ │ └─view
│ └─trip
│ ├─controller
│ ├─dto
│ ├─model
│ ├─repository
│ ├─service
│ └─view
└─global
├─common
├─exception
├─mapper
└─util
FlowChart

기능별 화면
1. 메인 메뉴

2. 여행 기록 화면

3. 여정 기록 화면

4. 여행 조회 화면

5. 여정 조회 화면

깃허브: https://github.com/Su-daa/Trip-Record-Service
GitHub - Su-daa/Trip-Record-Service: fc 과정 토이프로젝트 1
fc 과정 토이프로젝트 1. Contribute to Su-daa/Trip-Record-Service development by creating an account on GitHub.
github.com
이번 프로젝트를 진행 하면서 느낀점을 주저리주저리 적어보았다
자바 프로젝트를 진행한건 처음이었다
이번 프로젝트는 총 5명의 팀원과 함께 했는데 처음에 역할 분담을 하는 것 부터가 어려운 일이었다.
기능이 크게 4개로 쪼개진다고 생각했는데 데이터 저장하고 조회하는 것을 따로 하나로 빼서 총 5개의 기능으로 나눠서 각자 맡아서 진행 할 수 있었다.
5일간 진행했던 건데 매일 아침, 오후에 회의도 열심히 했다.
스프링이 아닌 순수 자바로만 mvc 패턴을 최대한 적용하려고 하니 컨트롤러에 대한 말들이 회의에서 늘 나왔던것 같다.
초반에 프로젝트 파일 구조를 짜는게 가장 고민할 거리도 많고 이걸 잘 정해야지 서로의 역할을 잘 분담해서 할 수 있었기에 제일 어려웠던 것 같다.
최대한 기능별로 메서드를 작성하고 이를 잘 활용하도록 노력을 많이 했던것 같다
두번째 프로젝트를 진행할 때는 스프링을 사용하게 될건데 그때까지 또 열심히 공부하고 있어야지.......!
'Backend > JAVA' 카테고리의 다른 글
[패캠]패스트캠퍼스X야놀자: 백엔드 개발 부트캠프_JAVA 과제2 (0) | 2023.09.04 |
---|---|
[패캠]패스트캠퍼스X야놀자: 백엔드 개발 부트캠프_JAVA 과제1 (0) | 2023.08.25 |
[패캠/JAVA] 상속 관계 객체 생성 및 초기화(동작 정보, 메서드) (0) | 2023.08.22 |
[패캠/JAVA] 상속 관계 객체 생성 및 초기화(상태정보) (0) | 2023.08.08 |
[패캠/JAVA] 자바 상속 (0) | 2023.08.08 |