Java.swing으로 작업했던 FoodOrder클래스를 Java.scanner로 변환해봤다.
FoodOrder클래스는 음식을 주문하여 총 결제금액을 알려주는 간단한 프로그램이다.
수업에서는 Java.swing을 이용하여 다음과 같이 만들었다.
메뉴는 짬뽕, 우동, 짜장면 총 3개이고 가격은 모두 5천원으로 동일하게 설정했다.
코드는 다음과 같다.
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class FoodOrder {
private static int count;
private static final int PRICE = 5000;
private static JTextField t1;
private static JLabel result;
private static JLabel center;
private static void btnAction(ActionEvent e) {
count++;
t1.setText(count + "개");
result.setText("결제금액: " + (5000 * count) + "원");
String imgName = e.getActionCommand();
ImageIcon img = new ImageIcon("images/" + imgName+ ".png");
center.setIcon(img);
}
public static void main(String[] args) {
JFrame f = new JFrame("음식점 주문 화면");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.getContentPane().setBackground(Color.GREEN);
f.setSize(823, 574);
f.getContentPane().setLayout(null);
JLabel lblNewLabel = new JLabel("개수:");
lblNewLabel.setFont(new Font("굴림", Font.BOLD, 20));
lblNewLabel.setBounds(489, 37, 68, 46);
// JTextField t1 = new JTextField();
t1 = new JTextField();
t1.setBackground(Color.YELLOW);
t1.setFont(new Font("굴림", Font.BOLD, 40));
t1.setBounds(556, 32, 239, 44);
t1.setColumns(10);
// JLabel center = new JLabel("");
center = new JLabel("");
ImageIcon img = new ImageIcon("images/짜장면.png");
center.setIcon(img);
center.setBounds(124, 96, 559, 368);
// JLabel result = new JLabel("결제금액: ");
result = new JLabel("결제금액: ");
result.setForeground(Color.RED);
result.setFont(new Font("굴림", Font.BOLD, 30));
result.setBounds(124, 464, 555, 61);
JButton btnNewButton = new JButton("짬뽕");
btnNewButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
btnAction(e);
// count++;
// t1.setText(count + "개");
// result.setText("결제금액: " + (5000 * count) + "원");
// ImageIcon img2 = new ImageIcon("images/짬뽕.png");
// center.setIcon(img2);
}
});
btnNewButton.setBackground(Color.MAGENTA);
btnNewButton.setFont(new Font("굴림", Font.BOLD, 27));
btnNewButton.setBounds(12, 10, 142, 66);
JButton btnNewButton_1 = new JButton("우동");
btnNewButton_1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
btnAction(e);
// count++;
// t1.setText(count + "개");
// result.setText("결제금액: " + (5000 * count) + "원");
// ImageIcon img3 = new ImageIcon("images/우동.png");
// center.setIcon(img3);
}
});
btnNewButton_1.setFont(new Font("굴림", Font.BOLD, 27));
btnNewButton_1.setBackground(Color.ORANGE);
btnNewButton_1.setBounds(166, 10, 142, 66);
JButton btnNewButton_2 = new JButton("짜장면");
btnNewButton_2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
btnAction(e);
// count++;
// t1.setText(count + "개");
// result.setText("결제금액: " + (5000 * count) + "원");
// center.setIcon(img);
}
});
btnNewButton_2.setFont(new Font("굴림", Font.BOLD, 27));
btnNewButton_2.setBackground(Color.CYAN);
btnNewButton_2.setBounds(320, 10, 142, 66);
f.getContentPane().add(lblNewLabel);
f.getContentPane().add(t1);
f.getContentPane().add(center);
f.getContentPane().add(result);
f.getContentPane().add(btnNewButton);
f.getContentPane().add(btnNewButton_1);
f.getContentPane().add(btnNewButton_2);
f.setVisible(true);
}
}
처음에는 각 버튼마다 이벤트를 작성하였는데, 이후
버튼이벤트의 공통 프로세스는 btnAction 메서드로 만들었다. // 기존 코드는 주석 처리함
scanner로 변환하며 하기 내용을 수정, 추가해보았다.
1) Food 클래스 생성
2) Food 타입의 menu 배열 생성
3) 각 메뉴별 가격 다르게 설정
Food.java
public class Food {
private String name;
private int price;
private int count;
public Food() {
}
public Food(String name, int price) {
this.name = name;
this.price = price;
}
public int getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
public int getCount() {
return count;
}
public void setCount(int count) {
this.count = count;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "Food{" +
"name='" + name + '\'' +
", price=" + price +
", count=" + count +
'}';
}
}
FoodOrder2.java
import java.util.Scanner;
public class FoodOrder2 {
static Food[] menu = new Food[10];
public static int totalCount;
public static int totalPrice;
public static void order(int num) {
int count = menu[num - 1].getCount();
menu[num - 1].setCount(count + 1);
totalCount++;
totalPrice += menu[num - 1].getPrice();
}
public static void main(String[] args) {
menu[0] = new Food("짜장면", 7000);
menu[1] = new Food("짬뽕", 8000);
menu[2] = new Food("우동", 6000);
while (true) {
Scanner s = new Scanner(System.in);
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("====================================");
int choice = s.nextInt();
s.nextLine();
switch (choice) {
case 1, 2, 3:
order(choice);
break;
case 4:
System.out.println("============ 주문한 메뉴 ============");
if (totalCount == 0) {
System.out.println("주문하신 메뉴가 없습니다.");
} else {
for (int i = 0; i < menu.length; i++) {
if (menu[i] != null && menu[i].getCount() != 0 ) {
System.out.println(menu[i].getName() + ": " + menu[i].getCount());
}
}
System.out.println("결제하실 금액은 " + totalPrice + "원입니다.");
}
System.out.println("====================================");
break;
case 5:
System.out.println("====================================");
System.out.println("주문하신 메뉴는 총 "+totalCount+"개입니다.");
System.out.println("결제하실 금액은 " + totalPrice + "원입니다. 감사합니다.");
System.out.println("====================================");
for(int i=0; menu[i] != null; i++){
menu[i].setCount(0);
}
totalCount = 0;
totalPrice = 0;
for(int i=0; menu[i] != null; i++){
System.out.println(menu[i].getCount());
}
return;
case 6:
System.out.println("주문이 취소되었습니다.");
return;
default:
System.out.println("잘못 입력하셨습니다. 다시 입력해주세요.");
}
}
}
}
본 포스팅은 멀티캠퍼스의 멀티잇 백엔드 개발(Java)의 교육을 수강하고 작성되었습니다.