이번주 프로젝트인 스타벅스의 키오스크의 흐름을 만들었다.
while let input = readLine(), let pressedNum = Int(input){
if pressedNum == 0 {
break
}
else if pressedNum == 1{
showMenu()
if let menuInput = readLine(), let menuNum = Int(menuInput){
if menuNum == 1{
showBeverage()
if let inputBevNum = readLine(), let bevNum = Int(inputBevNum){
if bevNum == 1{
showCoffees()
print("0. 뒤로가기")
}
else if bevNum == 2{
showFizzios()
print("0. 뒤로가기")
}
else if bevNum == 3{
showFrappuccions()
print("0. 뒤로가기")
}
}
}
else if menuNum == 2{
showFoods()
print("0. 뒤로가기")
}
else if menuNum == 3{
showGoods()
print("0. 뒤로가기")
}
}
}
}
지난번 만들었던 코드는 뒤로가기를 구현할 수는 있으나, if문 안에 무수한 if문을 만들어야 한다는 생각이 들었다.
class OrderProcess {
func choiceCategory() {
print("어서오세요. 스타벅스입니다.")
var pressedNumber: Int?
showMenu()
pressedNumber = Int(readLine()!)
if pressedNumber == 0 {
Void()
}
else if pressedNumber == 1 { // 음료 종류 출력
beverageChoice()
}
else if pressedNumber == 2 { // 푸드 출력
print("푸드메뉴")
for (var index, menu) in menuItems.enumerated() {
if menu.type == "Food" {
print("\(index - 8). \(menu.name) - 가격: \(menu.price)원")
index += index + 1
}
}
print("0. 뒤로가기")
var foodNumber: Int?
foodNumber = Int(readLine()!)
if foodNumber == 0 {
choiceCategory()
}
}
else if pressedNumber == 3 { // 상품 출력
print("상품메뉴")
for (var index, menu) in menuItems.enumerated() {
if menu.type == "Goods" {
print("\(index - 11). \(menu.name) - 가격: \(menu.price)원")
index += index + 1
}
}
print("0. 뒤로가기")
var goodsNumber: Int?
goodsNumber = Int(readLine()!)
if goodsNumber == 0 {
choiceCategory()
}
}
} // choiceCategory()
func beverageChoice() {
var pressedNumber: Int?
showBeverage()
pressedNumber = Int(readLine()!)
if pressedNumber == 0 {
choiceCategory()
}
else if pressedNumber == 1 { // 커피 메뉴 출력
print("커피메뉴")
for (var index, menu) in menuItems.enumerated() {
if menu.beverageType == "Coffee" {
print("\(index + 1). \(menu.name) - 가격: \(menu.price)원")
index += index + 1
}
}
print("0. 뒤로가기")
var coffeeNumber: Int?
coffeeNumber = Int(readLine()!)
if coffeeNumber == 0 {
beverageChoice()
}
}
else if pressedNumber == 2 { // 피지오 메뉴 출력
print("피지오메뉴")
for (var index, menu) in menuItems.enumerated() {
if menu.beverageType == "Fizzio" {
print("\(index - 2). \(menu.name) - 가격: \(menu.price)원")
index += index + 1
}
}
print("0. 뒤로가기")
var fizzioNumber: Int?
fizzioNumber = Int(readLine()!)
if fizzioNumber == 0 {
beverageChoice()
}
}
else if pressedNumber == 3 { // 프라푸치노 메뉴 출력
print("프라푸치노메뉴")
for (var index, menu) in menuItems.enumerated() {
if menu.beverageType == "Frappuccino" {
print("\(index - 5). \(menu.name) - 가격: \(menu.price)원")
index += index + 1
}
}
print("0. 뒤로가기")
var FrappuccinoNumber: Int?
FrappuccinoNumber = Int(readLine()!)
if FrappuccinoNumber == 0 {
beverageChoice()
}
}
} //beverageChoice
}
오늘 수정한 코드는 OrderProcess클래스 안에 메서드를 만들었다. 그리고 이전으로 돌아가는 일은 그때 필요한 메서드를 호출함으로써 뒤로가기를 구현했다.
이 코드에서 아쉬운 부분은 index부분인데, index를 호출하면 위에는 나와있지 않지만 메뉴에 적힌 순서의 index가 나왔다. 임시방편으로 그 순서에서 가감하여 1,2,3이 나오도록 했지만 다른 방법을 찾는 중이다.