TIL-180511 자바 고객관리 프로그램.v3

오늘은 java.util.Scanner를 이용해 새로운 고객정보를 사용자로부터 입력받는 기능을 만들었다. 사용자는 프로그램이 사전에 준비한 질문에 대답을 입력하고, 그 대답은 새로운 인스턴스의 값으로 들어와 인스턴스가 생성! 여기에 while문을 통해 한번 실행 후 꺼지지 않도록 한다.

자바 고객관리 프로그램.v2 기능

  1. 계속해서 반복하기 위한 반복문 while
  2. 사용자에게 보여줄 메뉴 메소드 showMenu(), switch문 설정
    -Add to Customer
    -Exit Program
  3. 사용자에게 입력을 요구할 질문 출력
  4. 질문에 응답한 사용자의 입력값으로 customerInfo의 인스턴스 생성
  5. 생성된 인스턴스의 값을 출력 showCustomerInfo(), 확인

기능에 따른 구조설계

1. class CustomerInfo { }
-데이터타입 설정
-고객정보 출력 showCustomerInfo()

2. class Manage { }
-메뉴 작성 showMenu()
-사용자 입력값으로 인스턴스 생성/출력할 inputData()

3. main Method { }
-while문 반복
-showMenu()실행
-각 메뉴별 실행될 구문 작성 (switch문)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
import java.util.Scanner;
class CustomerInfo {
int no;
int bal;
int li;
public CustomerInfo(int no, int bal, int li){
this.no = no;
this.bal = bal;
this.li = li;
}
public void showCustomerInfo(){
System.out.println("No: " + no + "\n" + "bal:" + bal + "\n" + "li:" + li);
}
}
class CustomerManage2 {
// static을 붙이지 않으면 에러가 발생!!!
static Scanner key = new Scanner(System.in);
public static void showMenu(){
System.out.println("******************");
System.out.println("Please Select Menu");
System.out.println("1. Add to customer");
System.out.println("2. Exit program");
System.out.println("******************");
}
public static void inputData(){
System.out.print("Type New Customer NO: ");
int no = key.nextInt();
System.out.print("Input new customer's Bal: ");
int bal = key.nextInt();
System.out.print("Input new custoemr's Li:1 ");
int li = key.nextInt();
CustomerInfo newInfo = new CustomerInfo(no, bal, li);
System.out.println("******************");
System.out.println("Check and Make sure what you input");
newInfo.showCustomerInfo();
}
public static void main(String[] args){
// selection virable
int sel;
while(true){
showMenu();
sel = key.nextInt();
switch(sel){
case 1:
inputData();
break;
case 2:
System.out.println("----Exit----");
return;
}
}
}
}

1. 구조 설계의 어려움

v2에서 구현할 기능을 작성하는 것은 순조로웠으나, 구조를 설계할때에 한참을 헤맸다. 자바스크립트를 할때에도 그랬는데, 컴퓨터사고(?)가 거의 불가능하다시피 안되는 나로써는 어디에 메소드를 선언하고, 그 메소드를 어디서 실행하며 그 함수는 어디에서 받아온 값을 매개변수로 삼아 실행되는 것인지와 같은 구조 설계가 참으로!!! 약하다. v1은 복잡한 내용이 하나도 없어서 이렇게 짜면 어느 부분에서 참으로 불편하겠구나 했는데, v2는 어떤 장,단점이 있을지 파악하기 어렵다 :( 짜는 것도 뭐 힘들게 짰는데 뭐..암튼, 다른 사람이 이런 내용의 코드를 짰다면 어떤 식으로 설계했는지 한번 보고 싶다! 참고좀 해보게