Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Week3 Assignment - Eul97 #17

Open
wants to merge 7 commits into
base: eul97
Choose a base branch
from
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
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.landvibe.summercoding;
package com.landvibe;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
Expand Down
47 changes: 47 additions & 0 deletions src/main/java/com/landvibe/homework/AppConfig.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
package com.landvibe.homework;

import com.landvibe.homework.repository.MenuRepository;
import com.landvibe.homework.repository.OrderRepository;
import com.landvibe.homework.repository.UserRepository;
import com.landvibe.homework.repository.impl.MemoryMenuRepository;
import com.landvibe.homework.repository.impl.MemoryOrderRepository;
import com.landvibe.homework.repository.impl.MemoryUserRepository;
import com.landvibe.homework.service.MenuService;
import com.landvibe.homework.service.OrderService;
import com.landvibe.homework.service.UserService;
import com.landvibe.homework.service.impl.MenuServiceImpl;
import com.landvibe.homework.service.impl.OrderServiceImpl;
import com.landvibe.homework.service.impl.UserServiceImpl;

public class AppConfig {
private static final MenuRepository menuRepository = new MemoryMenuRepository();
private static final OrderRepository orderRepository = new MemoryOrderRepository();
private static final UserRepository userRepository = new MemoryUserRepository();
private static final MenuService menuService = new MenuServiceImpl(menuRepository);
private static final OrderService orderService = new OrderServiceImpl(orderRepository,menuRepository);
private static final UserService userService = new UserServiceImpl(userRepository);

public MenuRepository getMenuRepository() {
return menuRepository;
}

public OrderRepository getOrderRepository() {
return orderRepository;
}

public UserRepository getUserRepository() {
return userRepository;
}

public MenuService getMenuService() {
return menuService;
}

public OrderService getOrderService() {
return orderService;
}

public UserService getUserService() {
return userService;
}
}
102 changes: 100 additions & 2 deletions src/main/java/com/landvibe/homework/HomeworkMain.java
Original file line number Diff line number Diff line change
@@ -1,7 +1,105 @@
package com.landvibe.homework;

import com.landvibe.homework.entity.User;
import com.landvibe.homework.service.MenuService;
import com.landvibe.homework.service.OrderService;
import com.landvibe.homework.service.UserService;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class HomeworkMain {
public static void main(String[] args) {
System.out.println("hello world");
private static final BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
private static final AppConfig appconfig = new AppConfig();
private static final UserService userService = appconfig.getUserService();
private static final OrderService orderService = appconfig.getOrderService();
private static final MenuService menuService = appconfig.getMenuService();

public static void main(String[] args) throws IOException {
init();
userOperation();
}

static void init() {
menuService.createMenu("짜장면", 6000);
menuService.createMenu("간짜장", 7000);
menuService.createMenu("짬뽕", 6500);
menuService.createMenu("볶음밥", 7000);
menuService.createMenu("탕수육", 12000);

}

static void userOperation() throws IOException {
while (true) {
System.out.println("무엇을 할까요 ?");
System.out.println("1. 유저 선택");
System.out.println("2. 유저 목록");
System.out.println("3. 유저 생성");
System.out.println("4. 프로그램 종료");
System.out.println("원하는 작업의 숫자를 입력해 주세요");
int op = Integer.parseInt(bf.readLine());
if (op == 1) {
System.out.println("선택하실 유저의 이름을 입력해 주세요");
String name = bf.readLine();
User user = userService.findByName(name);
if (user == null) {
System.out.println("존재하지 않는 유저입니다\n");
} else {
menuOperation(user);
}
} else if (op == 2) {
userService.printUserList();
} else if (op == 3) {
System.out.println("생성할 유저 이름을 입력해 주세요");
String name = bf.readLine();
System.out.println("초기 금액을 입력해 주세요");
int credit = Integer.parseInt(bf.readLine());
userService.createUser(name, credit);
} else if (op == 4) {
System.out.println("안녕히가세요 ~");
return;
} else {
System.out.println("ERROR : 1에서 4사이의 수를 입력해 주세요\n");
}
}
}

static void menuOperation(User user) throws IOException {
while (true) {
System.out.println("무엇을 할까요 ?");
System.out.println("1. 메뉴판 보기");
System.out.println("2. 주문하기");
System.out.println("3. 내 주문 내역 보기");
System.out.println("4. 전체 주문 내역 보기");
System.out.println("5. 내 잔고 보기");
System.out.println("6. 돈벌기");
System.out.println("7. 유저 선택 화면으로");

int cmd = Integer.parseInt(bf.readLine());
if (cmd == 1) {
menuService.printAllMenu();
} else if (cmd == 2) {
System.out.println("어떤 메뉴를 주문하시겠습니까? 주문번호 혹은 메뉴명을 적어주세요");
String menuName = bf.readLine();
orderService.createOrder(user, menuService.findMenu(menuName));
} else if (cmd == 3) {
orderService.printOrderList(user);
} else if (cmd == 4) {
orderService.printOrderList();
} else if (cmd == 5) {
userService.checkCredit(user);
} else if (cmd == 6) {
System.out.println("얼마나 버시겠어요 ? 숫자를 입력해 주세요");
int value = Integer.parseInt(bf.readLine());
userService.earnCredit(user, value);
} else if (cmd == 7) {
System.out.println("유저 선택 화면으로 이동합니다 \n");
return;
} else {
System.out.println("올바르지 않은 입력입니다");
}
}
}
}

46 changes: 46 additions & 0 deletions src/main/java/com/landvibe/homework/entity/Menu.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
package com.landvibe.homework.entity;

public class Menu {
private Long id;
private String name;
private Integer price;

public Menu(Long id, String name, Integer price) {
this.id = id;
this.name = name;
this.price = price;
}

public Long getId() {
return id;
}

public void setId(Long id) {
this.id = id;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public Integer getPrice() {
return price;
}

public void setPrice(Integer price) {
this.price = price;
}

public void print() {
System.out.println(this.name + " " + this.price + "원");
}

@Override
public String toString() {
return id + ". " + name + " " + price + "원";
}
}
43 changes: 43 additions & 0 deletions src/main/java/com/landvibe/homework/entity/Order.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
package com.landvibe.homework.entity;

public class Order {

private Long id;
private Menu menu;
private User user;

public Order(Long id, Menu menu, User user) {
this.id = id;
this.menu = menu;
this.user = user;
}

public Long getId() {
return id;
}

public void setId(Long id) {
this.id = id;
}

public Menu getMenu() {
return menu;
}

public void setMenu(Menu menu) {
this.menu = menu;
}

public User getUser() {
return user;
}

public void setUser(User user) {
this.user = user;
}

@Override
public String toString() {
return "이름 : " + user.getName() + "\n메뉴 : " + menu.getName() + ", 가격 : " + menu.getPrice();
}
}
65 changes: 65 additions & 0 deletions src/main/java/com/landvibe/homework/entity/User.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
package com.landvibe.homework.entity;

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

public class User {

private Long id;
private String name;
private Integer credit;
private List<Order> orderList;

public User(Long id, String name, Integer credit) {
this.id = id;
this.name = name;
this.credit = credit;
this.orderList = new ArrayList<>();
}

public Long getId() {
return id;
}

public void setId(Long id) {
this.id = id;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public Integer getCredit() {
return credit;
}

public void setCredit(Integer credit) {
this.credit = credit;
}

public List<Order> getOrderList() {
return orderList;
}

public void setOrderList(List<Order> orderList) {
this.orderList = orderList;
}

public void work(int value) {
this.credit += value;
}

@Override
public String toString() {
return "이름 : " + name + "\n잔액 : " + credit;
}

public void addOrder(Order order) {
orderList.add(order);
credit -= order.getMenu().getPrice();
}
}
17 changes: 17 additions & 0 deletions src/main/java/com/landvibe/homework/repository/MenuRepository.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package com.landvibe.homework.repository;

import com.landvibe.homework.entity.Menu;

import java.util.List;

public interface MenuRepository {
Long getCount();

void save(Menu menu);

Menu findById(Long menuId);

Menu findByName(String menuName);

List<Menu> findAll();
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package com.landvibe.homework.repository;

import com.landvibe.homework.entity.Order;

import java.util.List;

public interface OrderRepository {

Long getCount();

void save(Order order);

List<Order> findAll();

List<Order> findOrderByUser(Long userId);
}
18 changes: 18 additions & 0 deletions src/main/java/com/landvibe/homework/repository/UserRepository.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package com.landvibe.homework.repository;

import com.landvibe.homework.entity.User;

import java.util.List;

public interface UserRepository {

void save(User user);

User findById(Long userId);

User findByName(String userName);

Long getCount();

List<User> findAll();
}
Loading