Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
e6f0a89
docs : 기능구현목록 목차 정리
KOREAparksh Dec 10, 2020
3cac417
docs : 기능구현목록 목차 정리
KOREAparksh Dec 15, 2020
801762b
feat : 메인메뉴 출력 기능 구현
KOREAparksh Dec 15, 2020
6587628
docs : 기능구현목록 수정
KOREAparksh Dec 15, 2020
1e147ad
refactor : menu enum을 새 패키지에 추가, 기존 menu클래스 삭제 및 enum 분할
KOREAparksh Dec 15, 2020
fdecfe2
refactor : menu 이름들을 MenuList로 분할
KOREAparksh Dec 15, 2020
60906bd
feat : 관리 화면 메뉴 출력 기능 구현
KOREAparksh Dec 15, 2020
9f120ae
feat : 지하철 노선도 클래스 생성
KOREAparksh Dec 15, 2020
96488ab
feat : 메인화면 사용자 입력 기능 구현
KOREAparksh Dec 15, 2020
d9ab16c
feat : 메인화면 사용자 입력 유효성 검사 기능 구현
KOREAparksh Dec 15, 2020
5fc1ae9
refactor : 데이터 패키지 생성 및 기존 클래스 패키지 이동
KOREAparksh Dec 15, 2020
1183af7
refactor : 클래스 이름 변경 DataList -> ServiceList
KOREAparksh Dec 15, 2020
4f8f315
feat : 각 기능 관리 출력메세지 구현
KOREAparksh Dec 15, 2020
72820e8
refactor : 각 기능 클래스 분리 및 출렴함수 수정
KOREAparksh Dec 15, 2020
d72cac2
refactor : 클래스 분리에 따른 입력함수 및 유효성검사 수정
KOREAparksh Dec 15, 2020
978c431
feat : 입력 기다리는 문장 출력 구현
KOREAparksh Dec 15, 2020
45c78a7
feat : 역 이름 입력 기능 구현
KOREAparksh Dec 15, 2020
46aff8d
feat : 역 이름 등록 기능 구현
KOREAparksh Dec 15, 2020
c99b732
feat : 역 이름 조회 기능 구현
KOREAparksh Dec 15, 2020
98c25b2
feat : 역 이름 삭제 기능 구현
KOREAparksh Dec 15, 2020
e12200a
feat : 노선 등록, 삭제, 조회 기능 구현
KOREAparksh Dec 15, 2020
42ce69f
feat : 노선 초기 데이터 저장 구현
KOREAparksh Dec 15, 2020
b8da0aa
feat : 구간 삭제 기능 구현
KOREAparksh Dec 15, 2020
01ed952
docs : 기능구현목록 수정
KOREAparksh Dec 15, 2020
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
52 changes: 52 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,58 @@

# 기능구현 목록

- 상수 관리 클래스

### View
- 입력 클래스
- [x] 기능 선택 입력 함수
- [x] 메인뷰 입력함수
- [x] 기능뷰 입력함수

- 출력 클래스
- [x] 메인 화면 출력 함수
- [x] 역, 노선, 구간 관리 화면 출력함수
- [x] 선택한 기능 질문 출력함수
- [x] 기능결과(INFO) 출력함수
- [x] 에러 출력함수
- [ ] 지하철 노선도 출력함수

### 비즈니스 로직
- 역 관리
- 역 등록
- [x] 중복된 이름 불가
- [x] 이름은 2글자 이상
- 역 삭제
- [ ] 노선에 등록된 역은 삭제 불가
- [x] 역 조회

- 노선 관리
- 노선 등록
- [x] 중복 이름 불가
- [x] 이름은 2글자 이상
- [ ] 상,하 종점역은 달라야 한다
- [x] 노선 삭제
- [x] 노선 조회

- 구간 관리
- 구간 등록
- [ ] 등록되어 있는 노선인지 확인
- [ ] 등록된 역인지 확인
- [ ] 입력받은 순서가 올바른 순서인지 확인
- 구간 삭제
- [ ] 등록된 노선인지 확인
- [ ] 노선에 등록된 역인지 확인


- 지하철 노선도 출력
- [ ] 노선이 없을 경우 None 출력


# 지하철 노선도 미션
- 지하철 역과 노선을 관리하는 지하철 노선도 기능을 구현한다.



<br>

## 🚀 기능 요구사항
Expand Down
14 changes: 14 additions & 0 deletions src/main/java/Utils/Validator.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package Utils;

import subway.Constant;

import java.util.IllformedLocaleException;

public class Validator {

public static void checkDataLength(String data){
if(data.length() < Constant.MINIMUM_LENGTH){
throw new IllegalArgumentException(Constant.ILLEGAL_ARGUMENT_EXCEPTION_MINIMUM_LENGTH);
}
}
}
4 changes: 4 additions & 0 deletions src/main/java/subway/Application.java
Original file line number Diff line number Diff line change
@@ -1,10 +1,14 @@
package subway;

import subway.domain.SubwayMap;

import java.util.Scanner;

public class Application {
public static void main(String[] args) {
final Scanner scanner = new Scanner(System.in);
// TODO: 프로그램 구현

new SubwayMap(scanner); /**프로그램 시작*/
}
}
39 changes: 39 additions & 0 deletions src/main/java/subway/Constant.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
package subway;

public class Constant {

public static final String VIEW_HEADER = "## ";
public static final String VIEW_FORMAT = "%s. %s\n";
public static final String MAIN_VIEW_HEADER = "메인 화면";
public static final String STATION_LIST_HEADER = "역 목록";
public static final String LINE_LIST_HEADER = "노선 목록";
public static final String RESULT_HEADER = "[INFO] ";
public static final String ILLEGAL_ARGUMENT_EXCEPTION_HEADER = "[ERROR] ";
public static final String BACK_KEY = "B";
public static final int MINIMUM_LENGTH = 2;

public static final String ASKING_FUNCTION_INPUT_FUNCTION_ORDER = "원하는 기능을 선택하세요.";

public static final String INPUT_DATA_REGISTER_FORMAT = "등록할 %s 이름을 입력하세요.\n";
public static final String INPUT_DATA_DELETE_FORMAT = "삭제할 %s 이름을 입력하세요.\n";

public static final String INPUT_SECTION_LINE_DATA_REGISTER_FORMAT = "노선을 입력하세요.\n";
public static final String INPUT_SECTION_LINE_DATA_DELETE_FORMAT = "삭제할 구간의 노선을 입력하세요.\n";
public static final String INPUT_SECTION_STATION_DATA_REGISTER_FORMAT = "역 이름을 입력하세요.\n";
public static final String INPUT_SECTION_STATION_DATA_DELETE_FORMAT = "삭제할 구간의 역을 입력하세요.\n";

public static final String MANAGEMENT_VIEW_HEADER_FORMAT = "%s 관리 화면\n";
public static final String MANAGEMENT_VIEW_BODY_FORMAT = "%s. %s %s\n";
public static final String MANAGEMENT_VIEW_BODY_BACK_FORMAT = "%s. %s\n";

public static final String ILLEGAL_ARGUMENT_EXCEPTION_INVALID_MENU_ORDER = "선택할 수 없는 기능입니다.";
public static final String ILLEGAL_ARGUMENT_EXCEPTION_MINIMUM_LENGTH = "이름은 "+MINIMUM_LENGTH+" 글자 이상입니다.";

public static final String REGISTER_DUPLICATE_DATA_ERROR_FORMAT = "이미 등록된 %s 이름입니다.";
public static final String REGISTER_RESULT_FORMAT = "%s이 등록되었습니다.";
public static final String DELETE_DATA_ERROR_FORMAT = "등록되지 않은 %s 이름입니다.";
public static final String DELETE_RESULT_FORMAT = "%s이 삭제되었습니다.";

public static final String FIND_EMPTY_LIST = "등록된 %s이 없습니다.";

}
15 changes: 0 additions & 15 deletions src/main/java/subway/domain/Line.java

This file was deleted.

32 changes: 32 additions & 0 deletions src/main/java/subway/domain/Services.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
package subway.domain;

import subway.domain.management.LineManager;
import subway.domain.management.SectionManager;
import subway.domain.menu.MainMenu;
import subway.domain.management.StationManager;

import java.util.Scanner;

public class Services {

public static void doService(String inputData, Scanner scanner) {
if (inputData.equals(MainMenu.STATION.getOrder())) {
StationManager stationManager = new StationManager(scanner);
stationManager.doStationManagement();
return;
}
if (inputData.equals(MainMenu.LINE.getOrder())) {
LineManager lineManager = new LineManager(scanner);
lineManager.doStationManagement();
return;
}
if (inputData.equals(MainMenu.SECTION.getOrder())) {
SectionManager sectionManager = new SectionManager(scanner);
sectionManager.doStationManagement();
return;
}
if (inputData.equals(MainMenu.MAP.getOrder())) {

}
}
}
69 changes: 69 additions & 0 deletions src/main/java/subway/domain/SubwayMap.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
package subway.domain;

import subway.Constant;
import subway.domain.data.Line;
import subway.domain.data.LineRepository;
import subway.domain.data.Station;
import subway.domain.data.StationRepository;
import subway.domain.menu.MainMenu;
import subway.view.InputView;
import subway.view.OutputView;

import java.util.Scanner;

public class SubwayMap {

private Scanner scanner;
private LineRepository lineRepository;
private StationRepository stationRepository;

public SubwayMap(Scanner scanner) {
this.scanner = scanner;
initData();
startService();
}

private void initData() {
initStation();
initLine();
}

private void initLine() {
String[] initLineData = {
"2호선", "3호선", "신분당선"};
for(String lineName : initLineData){
LineRepository.addLine(new Line(lineName));
}
}

private void initStation() {
String[] initStationData = {
"교대역", "강남역" ,"역삼역" ,"남부터미널역", "양재역", "양재시민의숲역", "매봉역"};
for(String stationName : initStationData){
StationRepository.addStation(new Station(stationName));
}
}

private void startService() {
while (true) {
OutputView.printMainView();
String inputData = selectService();
if (inputData.equals(MainMenu.END.getOrder())){
return;
}
Services.doService(inputData, scanner);
}
}

private String selectService() {
try {
OutputView.printAskingFunction(Constant.ASKING_FUNCTION_INPUT_FUNCTION_ORDER);
return InputView.inputMainMenu(scanner);
} catch (IllegalArgumentException e){
OutputView.printError(e.getMessage());
return selectService();
}
}


}
47 changes: 47 additions & 0 deletions src/main/java/subway/domain/data/Line.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
package subway.domain.data;

import java.util.List;
import java.util.Objects;

public class Line {
private String name;
private Station firstStation;
private Station lastStation;
private List<Station> stations;

public Line(String name) {
this.name = name;
}

public String getName() {
return name;
}

public Station getFirstStation() {
return firstStation;
}

public Station getLastStation() {
return lastStation;
}

public List<Station> getStations() {
return stations;
}

public void initLineSection(Station firstStation, Station lastStation, List<Station> stations){
this.firstStation = firstStation;
this.lastStation = lastStation;
this.stations = stations;
}

public void addSection(Station station, int position){

}

public boolean deleteSection(String name) {
return stations.removeIf(station -> Objects.equals(station.getName(), name));
}

// 추가 기능 구현
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package subway.domain;
package subway.domain.data;

import java.util.ArrayList;
import java.util.Collections;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package subway.domain;
package subway.domain.data;

public class Station {
private String name;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package subway.domain;
package subway.domain.data;

import java.util.ArrayList;
import java.util.Collections;
Expand Down
Loading