๐โ WELCOME !
Joy Restaurant์ chef๋ค์ ์ํ ๋ฉ๋ด๊ด๋ฆฌ ํ๋ก๊ทธ๋จ์ ๋ง๋ค์ด์ฃผ์ธ์!
๋ฉ๋ด๊ฐ ์์ฃผ ๋ฐ๋๊ณ ์ถ๊ฐ๋๋ Joy Restaurant์ ํน์ฑ์, Dish์ ์ถ๊ฐ, ์ ์ฒด ์กฐํ, ์ ๋ ฌ ์กฐํ, ๊ฒ์, ์์ , ์ญ์ ์ ๊ธฐ๋ฅ์ด ์์ด์ผํฉ๋๋ค.
๋ํ Course๋ก๋ ์ ๋ ฌ ๋ฐ ๊ฒ์์ด ๋์์ผ๋ฉด ์ข๊ฒ ๋ค์.
public class DishDTO {
// ํ๋
private String course;
private String dishName;
// ์์ฑ์
public DishDTO() {}
public DishDTO(String course, String dishName) {
this.course = course;
this.dishName = dishName;
}
// getter & setter
public String getCourse() {
return course;
}
public void setCourse(String course) {
this.course = course;
}
public String getDishName() {
return dishName;
}
public void setDishName(String dishName) {
this.dishName = dishName;
}
// ๋ฉ์๋
>>> toString() : ๋ฑ๋ก๋ ๊ฐ ๋ฆฌ์คํธ์ 16์ง์ ํด์ฌ์ฝ๋๊ฐ ๋ฌธ์์ด๋ก ๋ฐํ๋๊ฒ๋ ํ๋ ๋ฉ์๋ (์์ผ๋ฉด ์ฃผ์๊ฐ์ด ๋ฐํ๋จ)
@Override
public String toString() {
return "DishDTO [Course : " + course + " | DishName : " + dishName + "]";
}
}
public class DishController { // ์ ๋ณด์ ์ถ๊ฐ, ์ ์ฅ, ์์ , ์ญ์ ๋ฅผ ๋ด๋น (ArrayList)
// Dish ๋ชฉ๋ก์ ์ ์ฅํด๋๊ธฐ ์ํ ๋ฆฌ์คํธ (DishDTO๋ง ์ ์ฅ)
private List<DishDTO> dishList = new ArrayList<>();
// '[1] Dish ์ถ๊ฐ'๋ฅผ ์ํ ๋ฉ์๋
public void addList(DishDTO dish) {
dishList.add(dish);
}
// '[2] Dish ์ ์ฒด ์กฐํ'๋ฅผ ์ํ ๋ฉ์๋
public List<DishDTO> selecetList() { // Q1. List<DishDTO>๊ฐ ์ ์ฌ๊ธฐ์ ๋ฐํํ์ผ๋ก ์์๊น์? RestaurantMenu ํด๋์ค์์ SelectList()๋ฅผ ํธ์ถํ์ฌ Dish ๋ชฉ๋ก์ ๋ฆฌํดํด์ค ๋ List<DishDTO>์์์ฐธ์กฐํด์์ผํ๊ธฐ๋๋ฌธ (๋ฐํํ)
return dishList;
// ์์์ ์ ์ฅํด๋ Dish ๋ชฉ๋ก์ ๋ฆฌํดํด์ค
}
// '[4] Dish๋ช
์ผ๋ก ๊ฒ์'์ ์ํ ๋ฉ์๋
public List<DishDTO> searchDish(String dishName) {
// Dish๋ช
์ ๊ฒ์ํด์ ํด๋น ํค์๋๊ฐ ํฌํจ๋๋ Dish๋ค์ ๋ฆฌํด ๋ฐ๊ธฐ ์ํ ๋ฆฌ์คํธ ์์ฑ
List<DishDTO> searchList = new ArrayList<>();
for(DishDTO dishV : dishList) { // ์ ์ฅ๋ Dish ๋ชฉ๋ก์ ์ ๊ทผ
if(dishV.getDishName().contains(dishName)); {
// ๋งค๊ฐ๋ณ์๋ก ๋ค์ด์จ dishName์ด DishDTO์ DishName์ ํฌํจ๋์ด ์๋์ง์ ์ฌ๋ถ
searchList.add(dishV);
// ํด๋น ํค์๋๊ฐ ํฌํจ๋์ด์๋ ์๋ฆฌ๋ค๋ง, searchList์ ์ถ๊ฐ
}
}
return searchList;
// ์ถ๊ฐ ์๋ฃ๋ searchList ๋ฆฌํด
}
// '[5] Course๋ช
์ผ๋ก ๊ฒ์'์ ์ํ ๋ฉ์๋
public List<DishDTO> searchCourse(String course) {
// Course๋ช
์ ๊ฒ์ํด์ ํด๋น ํค์๋๊ฐ ํฌํจ๋๋ Course๋ค์ ๋ฆฌํด ๋ฐ๊ธฐ ์ํ ๋ฆฌ์คํธ ์์ฑ
List<DishDTO> searchList = new ArrayList<>();
for(DishDTO courseV : dishList) { // ์ ์ฅ๋ Dish ๋ชฉ๋ก์ ์ ๊ทผ
if(courseV.getCourse().contains(course)) {
// ๋งค๊ฐ๋ณ์๋ก ๋ค์ด์จ course๊ฐ DishDTO์ Course์ ํฌํจ๋์ด ์๋์ง์ ์ฌ๋ถ
searchList.add(courseV);
// ํด๋น ํค์๋๊ฐ ํฌํจ๋์ด์๋ ์ฝ์ค๋ค๋ง, searchList์ ์ถ๊ฐ
}
}
return searchList;
// ์ถ๊ฐ ์๋ฃ๋ searchList ๋ฆฌํด
}
// '[6] Dish ์ ๋ณด ์์ '์ ์ํ ๋ฉ์๋
public int editDish(String oldDishname, DishDTO editDish) { // : (์์ ํ Dish๋ช
, ์๋ก์ด Course๋ช
๋ฐ Dish๋ช
)
DishDTO old = null;
for(int i = 0; i < dishList.size(); i++) { // : Dish ๋ชฉ๋ก์ด ์ ์ฅ๋์ด ์๋ dishList์ ํ๋์ฉ ์ ๊ทผ
if(dishList.get(i).getDishName().equals(oldDishname)) { // : ์ ๊ทผํ ๋ชฉ๋ก ์ค ์์ ํ Dish๋ช
๊ณผ ์๋ฒฝํ ์ผ์นํ๋ ๊ฒ์ด ์๋ค๋ฉด,
old = dishList.set(i, editDish); // : ํด๋นํ๋ ์์น(i)์ ์๋ Dish๋ช
์ old์ ๋ฐํํ ๋ค RestaurantMenu ํด๋์ค์ editDish ๋ฉ์๋์์ ์จ editDish๋ก ์์
}
}
// set() ๋ฉ์๋๋ ์์ ์ , old์ ๊ฐ์ ๋ฐํํ๊ณ ์์ ๋จ. ๋ฐ๋ผ์ ๋ฐํ์ด ๋ ๊ฒฝ์ฐ๋ ์์ ์ด ๋์๋ค๋ ์๋ฏธ.
// old์ ๊ฐ์ด ๋ฐํ๋ ๊ฒฝ์ฐ 1 ๋ฆฌํด, ๋ฐํ๋์ง ์์ ๊ฒฝ์ฐ 0 ๋ฆฌํด
return old != null ? 1 : 0;
// : old ์ด์ null ์๋์ง? ์ = 1, ์๋ = 0
}
// '[7] Dish ์ญ์ '๋ฅผ ์ํ ๋ฉ์๋
public int removeDish(String dishname) { // : (์ญ์ ํ Dish๋ช
)
DishDTO old = null;
for(int i = 0; i < dishList.size(); i++) { // : Dish ๋ชฉ๋ก์ด ์ ์ฅ๋์ด ์๋ dishList์ ํ๋์ฉ ์ ๊ทผ
if(dishList.get(i).getDishName().equals(dishname)) { // : ์ ๊ทผํ ๋ชฉ๋ก ์ค ์ญ์ ํ Dish๋ช
๊ณผ ์๋ฒฝํ ์ผ์นํ๋ ๊ฒ์ด ์๋ค๋ฉด,
old = dishList.remove(i); // : ํด๋นํ๋ ์์น(i)์ ์๋ Dish๋ช
์ old์ ๋ฐํํ ๋ค ์ญ์
}
}
// remove() ๋ฉ์๋๋ ์ญ์ ์ , old์ ๊ฐ์ ๋ฐํํ๊ณ ์์ ๋จ. ๋ฐ๋ผ์ ๋ฐํ์ด ๋ ๊ฒฝ์ฐ๋ ์ญ์ ๊ฐ ๋์๋ค๋ ์๋ฏธ.
// old์ ๊ฐ์ด ๋ฐํ๋ ๊ฒฝ์ฐ 1 ๋ฆฌํด, ๋ฐํ๋์ง ์์ ๊ฒฝ์ฐ 0 ๋ฆฌํด
return old != null ? 1 : 0;
// : old ์ด์ null ์๋์ง? ์ = 1, ์๋ = 0
}
}
public class AscCourse implements Comparator<DishDTO> {
// ์ ๋ ฌ ์ค, '[2] Course๋ณ ์ค๋ฆ์ฐจ์ ์ ๋ ฌ'์ ์ํ ๋ฉ์๋ (๊ธฐ์ค)
@Override
public int compare(DishDTO o1, DishDTO o2) {
return o1.getCourse().compareTo(o2.getCourse());
}
}
public class DescDishName implements Comparator<DishDTO> {
// ์ ๋ ฌ ์ค, '[3] Dish๋ช
๋ด๋ฆผ์ฐจ์ ์ ๋ ฌ'์ ์ํ ๋ฉ์๋ (๊ธฐ์ค)
@Override
public int compare(DishDTO o1, DishDTO o2) {
return o2.getDishName().compareTo(o1.getDishName());
}
}
public class DescCourse implements Comparator<DishDTO>{
// ์ ๋ ฌ ์ค, '[4] Course๋ณ ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌ'์ ์ํ ๋ฉ์๋ (๊ธฐ์ค)
@Override
public int compare(DishDTO o1, DishDTO o2) {
return o2.getCourse().compareTo(o1.getCourse());
}
}
public class RestaurantMenu { // ์ฌ์ฉ์์๊ฒ ๋ณด์ฌ์ฃผ๋ ๊ฒ๋ค์ ์ถ๋ ฅํด์ฃผ๋ ๊ฒ ๋ด๋น
// DishController ๊ฐ์ฒด ์์ฑ
private DishController dishController = new DishController();
Scanner sc = new Scanner(System.in);
public void mainView() {
XXX :
while(true) {
System.out.println("");
System.out.println("======= Menu =======");
System.out.println("[1] Dish ์ถ๊ฐ");
System.out.println("[2] Dish ์ ์ฒด ์กฐํ");
System.out.println("[3] ์ ๋ ฌํ์ฌ ์กฐํ");
System.out.println("[4] Dish๋ช
์ผ๋ก ๊ฒ์");
System.out.println("[5] Course๋ช
์ผ๋ก ๊ฒ์");
System.out.println("[6] Dish ์ ๋ณด ์์ ");
System.out.println("[7] Dish ์ญ์ ");
System.out.println("[0] ํ๋ก๊ทธ๋จ ์ข
๋ฃ");
System.out.print("Menu ์ ํ : ");
int menu = sc.nextInt();
switch(menu) {
case 1: addList();
break;
case 2: selectList();
break;
case 3: sortList();
break;
case 4 : searchDish();
break;
case 5 : searchCourse();
break;
case 6 : editDish();
break;
case 7 : removeDish();
break;
case 0 : System.out.println("ํ๋ก๊ทธ๋จ์ ์ข
๋ฃํฉ๋๋ค :) ");
break XXX; // while๋ฌธ ์ข
๋ฃ
default : System.out.println("์ฌ๋ฐ๋ฅด์ง ์์ ๋ฒํธ์
๋๋ค. ๋ค์ ์
๋ ฅํด์ฃผ์ธ์ :( ");
break;
}
}
}
// '[1] Dish ์ถ๊ฐ'๋ฅผ ์ํ ๋ฉ์๋
public void addList() {
System.out.println("================= Dish ์ถ๊ฐ =================");
System.out.println(" Appetizer | Soup | Entree | Main | Dessert");
System.out.println("============================================");
sc.nextLine();
System.out.print("Course ์
๋ ฅ : ");
String course = sc.nextLine();
System.out.print("Dish ์
๋ ฅ : ");
String dish = sc.nextLine();
dishController.addList(new DishDTO(course, dish));
}
// '[2] Dish ์ ์ฒด ์กฐํ'๋ฅผ ์ํ ๋ฉ์๋
public void selectList() {
System.out.println("=============== Dish ์ ์ฒด ์กฐํ ===============");
// ์์์ ์์ฑํ dishcontroller ์ฐธ์กฐ ๋ณ์๋ก DishController์ selectList() ํธ์ถ
List<DishDTO> dishList = dishController.selectList(); // selectList()๋ก ๋ถํฐ dishList ๋ฆฌํด๋ฐ์
if (!dishList.isEmpty()) { // : dishList๊ฐ ๋น์ด์์ง ์์ ๊ฒฝ์ฐ,
for (DishDTO dish : dishList) {
System.out.println(dish); // dishList ๋ชฉ๋ก ์ถ๋ ฅ
}
} else {
System.out.println("๋ฑ๋ก๋ Dish๊ฐ ์์ต๋๋ค :("); // dishList๊ฐ ๋น์ด์์ ๊ฒฝ์ฐ์ ์ถ๋ ฅ๋ฌธ
}
}
// '[3] ์ ๋ ฌํ์ฌ ์กฐํ'๋ฅผ ์ํ ๋ฉ์๋
public void sortList() {
System.out.println("================ ์ ๋ ฌ ๋ฐฉ์ ์ ํ ================");
System.out.println("[1] Dish๋ช
์ค๋ฆ์ฐจ์ ์ ๋ ฌ");
System.out.println("[2] Course๋ณ ์ค๋ฆ์ฐจ์ ์ ๋ ฌ");
System.out.println("[3] Dish๋ช
๋ด๋ฆผ์ฐจ์ ์ ๋ ฌ");
System.out.println("[4] Course๋ณ ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌ");
System.out.print("Menu ์ ํ : ");
int menu = sc.nextInt();
ascDesc(menu);
}
// ์ ๋ ฌ ์ค, '[1] Dish๋ช
์ค๋ฆ์ฐจ์ ์ ๋ ฌ'๋ฐ 3๊ฐ์ง ์ ๋ ฌ๊ธฐ์ค ๋ฉ์๋๋ฅผ ํธ์ถํ๊ธฐ ์ํ ๋ฉ์๋
public void ascDesc(int menu) {
System.out.println("============== ์ ํ๋ ์ ๋ ฌ๋ก ์กฐํ ==============");
// ์์์ ์์ฑํ dishcontroller ์ฐธ์กฐ ๋ณ์๋ก DishController์ selectList() ํธ์ถ
List<DishDTO> dishList = dishController.selcetList(); // selcetList()๋ก ๋ถํฐ dishList ๋ฆฌํด๋ฐ์
// ์ ๋ ฌ ์ ์๋ณธ ๋ฐ์ดํฐ๋ฅผ ๋ณ๊ฒฝํ๋ฏ๋ก ์ฌ๋ณธ ๋ฐ์ดํฐ๋ฅผ ๋ณ๋๋ก ์์ฑ
List<DishDTO> sortList = new ArrayList<>();
sortList.addAll(dishList); // sortList๋ dishList์ ์ฌ๋ณธ
// addAll : Collection ํ์
์ธ์คํด์ค๋ฅผ ๋ฆฌ์คํธ์ ์ถ๊ฐ
if(menu == 1) {
// ์ต๋ช
ํด๋์ค ์ฌ์ฉ
sortList.sort(new Comparator<DishDTO>() {
@Override
public int compare(DishDTO o1, DishDTO o2) {
return o1.getDishName().compareTo(o2.getDishName());
}
});
// Comparator๋ฅผ ์์ํ ํด๋์ค(์ ๋ ฌ๊ธฐ์ค)๋ฅผ ์ฌ์ฉ
} else if (menu == 2) {
sortList.sort(new AscCourse()); //'[2] Course๋ณ ์ค๋ฆ์ฐจ์ ์ ๋ ฌ'์ ๊ธฐ์ค ๋ฉ์๋
} else if (menu == 3) {
sortList.sort(new DescDishName()); //'[3] Dish๋ช
๋ด๋ฆผ์ฐจ์ ์ ๋ ฌ'์ ๊ธฐ์ค ๋ฉ์๋
} else {
sortList.sort(new DescCourse()); //'[4] Course๋ณ ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌ'์ ๊ธฐ์ค ๋ฉ์๋
}
for(int i = 0; i < sortList.size(); i++) {
System.out.println(sortList.get(i)); // : sortList ์ธ๋ฑ์ค์ ์์๋ฅผ ๊ฐ์ ธ์ด
}
}
// '[4] Dish๋ช
์ผ๋ก ๊ฒ์'์ ์ํ ๋ฉ์๋
public void searchDish() {
System.out.println("============== Dish๋ช
์ผ๋ก ๊ฒ์ ==============");
sc.nextLine();
System.out.print("Dish๋ช
์
๋ ฅ : ");
List<DishDTO> searchList = dishController.searchDish(sc.nextLine()); // ์
๋ ฅ๋ฐ์ ๊ฐ์ ๋ฐ๋ก ๋งค๊ฐ๋ณ์๋ก ๋ณด๋
if(!searchList.isEmpty()) { // : searchList๊ฐ ๋น์ด์์ง ์์ ๊ฒฝ์ฐ,
for(int i = 0; i < searchList.size(); i++) {
System.out.println(searchList.get(i)); // : searchList ์ธ๋ฑ์ค์ ์์๋ฅผ ๊ฐ์ ธ์ด
}
} else {
System.out.println("๊ฒ์ ๊ฒฐ๊ณผ๊ฐ ์์ต๋๋ค :(");
}
}
// '[5] Course๋ช
์ผ๋ก ๊ฒ์'์ ์ํ ๋ฉ์๋
public void searchCourse() {
System.out.println("============== Course๋ณ๋ก ๊ฒ์ ==============");
System.out.println(" Appetizer | Soup | Entree | Main | Dessert");
System.out.println("============================================");
sc.nextLine();
System.out.print("Course ์
๋ ฅ : ");
List<DishDTO> searchList = dishController.searchCourse(sc.nextLine()); // ์
๋ ฅ๋ฐ์ ๊ฐ์ ๋ฐ๋ก ๋งค๊ฐ๋ณ์๋ก ๋ณด๋
if(!searchList.isEmpty()) {
for(int i = 0; i < searchList.size(); i++) {
System.out.println(searchList.get(i)); // : searchList ์ธ๋ฑ์ค์ ์์๋ฅผ ๊ฐ์ ธ์ด
}
} else {
System.out.println("๊ฒ์ ๊ฒฐ๊ณผ๊ฐ ์์ต๋๋ค :(");
}
}
// '[6] Dish ์ ๋ณด ์์ '์ ์ํ ๋ฉ์๋
public void editDish() {
System.out.println("============== Dish ์ ๋ณด ์์ ==============");
sc.nextLine();
System.out.print("์์ ํ Dish๋ช
: ");
String oldDishName = sc.nextLine();
System.out.println("============================================");
System.out.println(" Appetizer | Soup | Entree | Main | Dessert");
System.out.println("============================================");
System.out.print("์๋ก์ด Dish์ Course : ");
String newCourseName = sc.nextLine();
System.out.print("์๋ก์ด Dish๋ช
: ");
String newDishName = sc.nextLine();
DishDTO editDish = new DishDTO(newCourseName, newDishName); // editDish : ์๋ก์ด Dish๋ช
๋ฐ Dish๋ช
int result = dishController.editDish(oldDishName, editDish); // DishController ํด๋์ค์ editDish ๋ฉ์๋์ (์์ ํ Dish๋ช
, ์๋ก์ด Course๋ช
๋ฐ Dish๋ช
) ๋งค๊ฐ๋ณ์๋ก ์ ๋ฌ
// DishController ํด๋์ค์ editDish ๋ฉ์๋ ์คํ๋ ํ, ๋ฆฌํด๋ฐ์ result์ ๊ฐ์ 0๋๋ 1
if(result > 0) {
System.out.println("์์ ์ด ์๋ฃ๋์์ต๋๋ค :)");
} else {
System.out.println("์์ ํ Dish๋ฅผ ์ฐพ์ง ๋ชปํ์ต๋๋ค :(");
}
}
// '[7] Dish ์ญ์ '๋ฅผ ์ํ ๋ฉ์๋
public void removeDish() {
System.out.println("================ Dish ์ญ์ ================");
sc.nextLine();
System.out.print("์ญ์ ํ Dish๋ช
: ");
int result = dishController.removeDish(sc.nextLine()); // DishController ํด๋์ค์ editDish ๋ฉ์๋์ (์ญ์ ํ Dish๋ช
) ๋งค๊ฐ๋ณ์๋ก ์ ๋ฌ
// DishController ํด๋์ค์ removeDish ๋ฉ์๋ ์คํ๋ ํ, ๋ฆฌํด๋ฐ์ result์ ๊ฐ์ 0๋๋ 1
if (result > 0) {
System.out.println("์ญ์ ๊ฐ ์๋ฃ๋์์ต๋๋ค :)");
} else {
System.out.println("์ญ์ ํ Dish๋ฅผ ์ฐพ์ง ๋ชปํ์ต๋๋ค :(");
}
}
}
public class Application {
public static void main(String[] args) {
RestaurantMenu rm = new RestaurantMenu();
rm.mainView();
}
}