Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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
50 changes: 50 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -467,3 +467,53 @@ public class StationRepository {
## 📝 License

This project is [MIT](https://github.com/woowacourse/java-subway-map-precourse/blob/master/LICENSE.md) licensed.

<br>

## 구현할 기능 목록
- 메인 화면 출력 기능
- 메뉴 선택전 출력 기능
- 메뉴 선택 기능
<br><br>
- 역 관리 화면 출력 기능
- 역 메뉴 선택 기능
<br><br>
- 역 등록전 출력 기능
- 역 입력 기능
- 역 이름 중복 확인 기능
- 역 이름 길이 확인 기능
- 역 등록 결과 출력 기능
<br><br>
- 역 목록 조회 기능
<br><br>
- 역 삭제 기능
- 역 이름 존재 확인 기능
- 역 노선 등록 확인 기능
- 역 삭제 결과 출력 기능
<br><br>
- 돌아가기 기능
- 종료하기 기능
<br><br>
- 노선 관리 화면 출력 기능
- 노선 입력 기능
<br><br>
- 노선 등록전 출력 기능
- 노선 입력 기능
- 노선 이름 중복 확인 기능
- 노선 이름 길이 확인 기능
- 노선 상행 종점 입력전 출력 기능
- 노선 상행 종점 입력 기능
- 노선 하행 종점 입력전 출력 기능
- 노선 하행 종점 입력 기능
- 노선 등록 결과 출력 기능
<br><br>
- 노선 목록 조회 기능
<br><br>
- 노선 삭제 기능
- 노선 존재 확인 기능
- 노선 삭제 결과 출력 기능
<br><br>
- 구간 등록 기능
- 구간 삭제 기능
<br><br>
- 지하철 노선도 출력 기능
39 changes: 39 additions & 0 deletions src/main/java/subway/Application.java
Original file line number Diff line number Diff line change
@@ -1,10 +1,49 @@
package subway;

import subway.controller.*;
import subway.init.InitData;
import subway.ui.*;

import java.util.Scanner;

public class Application {
private static final String MAIN_MENU_QUIT_VALUE = "Q";
private static final String MAIN_MENU_SELECT_STATION = "1";
private static final String MAIN_MENU_SELECT_LINE = "2";
private static final String MAIN_MENU_SELECT_SECTION = "3";
private static final String MAIN_MENU_SELECT_MAP = "4";

public static void main(String[] args) {
final Scanner scanner = new Scanner(System.in);
// TODO: 프로그램 구현
InitData.startInitWork();
while(true) {
MainUI.printScreen();
String select = MainController.selectMenu(scanner);
if(select.equals(MAIN_MENU_QUIT_VALUE)) {
MainUI.printQuit();
break;
}
executeMenu(select, scanner);
}
}

private static void executeMenu(String select, Scanner scanner) {
if(select.equals(MAIN_MENU_SELECT_STATION)) {
StationUI.printScreen();
StationController.selectMenu(scanner);
}
if(select.equals(MAIN_MENU_SELECT_LINE)) {
LineUI.printScreen();
LineController.selectMenu(scanner);
}
if(select.equals(MAIN_MENU_SELECT_SECTION)) {
SectionUI.printScreen();
SectionController.selectMenu(scanner);
}
if(select.equals(MAIN_MENU_SELECT_MAP)) {
MapUI.printScreen();
MapController.selectMenu(scanner);
}
}
}
8 changes: 8 additions & 0 deletions src/main/java/subway/controller/LineController.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package subway.controller;

import java.util.Scanner;

public class LineController {
public static void selectMenu(Scanner scanner) {
}
}
41 changes: 41 additions & 0 deletions src/main/java/subway/controller/MainController.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
package subway.controller;

import java.util.Scanner;

public class MainController {
private static final int INPUT_LENGTH = 1;
private static final int MIN_MAIN_MENU_VALUE = 1;
private static final int MAX_MAIN_MENU_VALUE = 4;
private static final String QUIT_VALUE = "Q";
private static final String INFO = "[INFO] ";
private static final String ERROR = "[ERROR] ";
private static final String INPUT_VALUE_ERROR_MESSAGE = "입력값이 잘못되었습니다.";

public static String selectMenu(Scanner scanner) {
String input = scanner.next();
validateInput(input);
return input;
}

private static void validateInput(String input) {
if(input.equals(QUIT_VALUE)) {
return;
}
if(input.length() == INPUT_LENGTH && Character.isDigit(input.charAt(0))) {
int select = Integer.parseInt(input);
if(select >= MIN_MAIN_MENU_VALUE && select <= MAX_MAIN_MENU_VALUE) {
return;
}
}
printError(INPUT_VALUE_ERROR_MESSAGE);
}

private static void printError(String message) {
System.out.println(ERROR + message);
throw new IllegalStateException();
}

private static void printInfo(String message) {
System.out.println(INFO + message);
}
}
8 changes: 8 additions & 0 deletions src/main/java/subway/controller/MapController.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package subway.controller;

import java.util.Scanner;

public class MapController {
public static void selectMenu(Scanner scanner) {
}
}
9 changes: 9 additions & 0 deletions src/main/java/subway/controller/SectionController.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package subway.controller;

import java.util.Scanner;

public class SectionController {
public static void selectMenu(Scanner scanner) {

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

import java.util.Scanner;

public class StationController {
public static void selectMenu(Scanner scanner) {
}
}
12 changes: 12 additions & 0 deletions src/main/java/subway/domain/Line.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
package subway.domain;

import java.util.ArrayList;
import java.util.List;

public class Line {
private String name;

Expand All @@ -12,4 +15,13 @@ public String getName() {
}

// 추가 기능 구현
private List<Station> stationList = new ArrayList<>();

public void add(Station station) {
stationList.add(station);
}

public int size() {
return stationList.size();
}
}
25 changes: 21 additions & 4 deletions src/main/java/subway/domain/LineRepository.java
Original file line number Diff line number Diff line change
@@ -1,9 +1,6 @@
package subway.domain;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Objects;
import java.util.*;

public class LineRepository {
private static final List<Line> lines = new ArrayList<>();
Expand All @@ -19,4 +16,24 @@ public static void addLine(Line line) {
public static boolean deleteLineByName(String name) {
return lines.removeIf(line -> Objects.equals(line.getName(), name));
}

public static boolean contains(String name) {
for(int i=0; i<lines().size(); i++) {
final Line line = lines().get(i);
if(line.getName().equals(name)) {
return true;
}
}
return false;
}

public static Optional<Line> findByName(String name) {
for(int i=0; i<lines().size(); i++) {
final Line line = lines().get(i);
if(line.getName().equals(name)) {
return Optional.of(line);
}
}
return Optional.empty();
}
}
25 changes: 21 additions & 4 deletions src/main/java/subway/domain/StationRepository.java
Original file line number Diff line number Diff line change
@@ -1,9 +1,6 @@
package subway.domain;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Objects;
import java.util.*;

public class StationRepository {
private static final List<Station> stations = new ArrayList<>();
Expand All @@ -19,4 +16,24 @@ public static void addStation(Station station) {
public static boolean deleteStation(String name) {
return stations.removeIf(station -> Objects.equals(station.getName(), name));
}

public static boolean contains(String name) {
for(int i=0; i<stations().size(); i++) {
final Station station = stations().get(i);
if(station.getName().equals(name)) {
return true;
}
}
return false;
}

public static Optional<Station> findByName(String name) {
for(int i=0; i<stations().size(); i++) {
final Station station = stations().get(i);
if(station.getName().equals(name)) {
return Optional.of(station);
}
}
return Optional.empty();
}
}
41 changes: 41 additions & 0 deletions src/main/java/subway/init/InitData.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
package subway.init;

import subway.domain.Line;
import subway.domain.LineRepository;
import subway.domain.Station;
import subway.domain.StationRepository;

public class InitData {
final static String stationNames[] = {"교대역", "강남역", "역삼역", "남부터미널역", "양재역", "양재시민의숲역", "매봉역"};
final static String lineNames[] = {"2호선", "3호선", "신분당선"};

public static void startInitWork() {
createStationAndLine();
enrollStationToLine();
}

private static void createStationAndLine() {
for (String stationName : stationNames) {
StationRepository.addStation(new Station(stationName));
}
for (String lineName : lineNames) {
LineRepository.addLine(new Line(lineName));
}
}

private static void enrollStationToLine() {
final Line line1 = LineRepository.findByName(lineNames[0]).get();
line1.add(StationRepository.findByName(stationNames[0]).get());
line1.add(StationRepository.findByName(stationNames[1]).get());
line1.add(StationRepository.findByName(stationNames[2]).get());
final Line line2 = LineRepository.findByName(lineNames[1]).get();
line2.add(StationRepository.findByName(stationNames[0]).get());
line2.add(StationRepository.findByName(stationNames[3]).get());
line2.add(StationRepository.findByName(stationNames[4]).get());
line2.add(StationRepository.findByName(stationNames[6]).get());
final Line line3 = LineRepository.findByName(lineNames[2]).get();
line3.add(StationRepository.findByName(stationNames[1]).get());
line3.add(StationRepository.findByName(stationNames[4]).get());
line3.add(StationRepository.findByName(stationNames[5]).get());
}
}
13 changes: 13 additions & 0 deletions src/main/java/subway/ui/CommonUI.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package subway.ui;

public class CommonUI {
private final static String BEFORE_SELECT_MENU_VALUE = "## 원하는 기능을 선택하세요.";
private final static String SUB_MENU_BACK = "B. 돌아가기\n";

public static void printBeforeSelectMenu() {
System.out.println(BEFORE_SELECT_MENU_VALUE);
}
public static void printSubMenuBack() {
System.out.println(SUB_MENU_BACK);
}
}
11 changes: 11 additions & 0 deletions src/main/java/subway/ui/LineUI.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package subway.ui;

public class LineUI {
private final static String LINE_TITLE = "## 노선 관리 화면";
private final static String LINE_MENU_ADD = "노선 등록";
private final static String LINE_MENU_REMOVE = "노선 삭제";
private final static String LINE_MENU_FIND = "노선 조회";

public static void printScreen() {
}
}
30 changes: 30 additions & 0 deletions src/main/java/subway/ui/MainUI.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package subway.ui;

public class MainUI {
private final static String MAIN_TITLE = "## 메인 화면";
private final static String MAIN_MENU_STATION = "1. 역 관리";
private final static String MAIN_MENU_LINE = "2. 노선 관리";
private final static String MAIN_MENU_SECTION_ = "3. 구간 관리";
private final static String MAIN_MENU_STATION_MAP = "4. 지하철 노선도 출력";
private final static String MAIN_MENU_QUIT = "Q. 종료\n";
private static final String INFO = "[INFO] ";
private static final String QUIT_MESSAGE= "지하철 노선도가 종료되었습니다.";

public static void printScreen() {
printMainMenu();
CommonUI.printBeforeSelectMenu();
}

private static void printMainMenu() {
System.out.println(MAIN_TITLE);
System.out.println(MAIN_MENU_STATION);
System.out.println(MAIN_MENU_LINE);
System.out.println(MAIN_MENU_SECTION_);
System.out.println(MAIN_MENU_STATION_MAP);
System.out.println(MAIN_MENU_QUIT);
}

public static void printQuit() {
System.out.println(INFO + QUIT_MESSAGE);
}
}
9 changes: 9 additions & 0 deletions src/main/java/subway/ui/MapUI.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package subway.ui;

public class MapUI {
private final static String MAP_TITLE = "## 지하철 노선도";

public static void printScreen() {

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

public class SectionUI {
private final static String SECTION_TITLE = "## 구간 관리 화면";
private final static String SECTION_MENU_ADD = "구간 등록";
private final static String SECTION_MENU_REMOVE = "구간 삭제";

public static void printScreen() {

}
}
Loading