본문 바로가기
Programming | Study/Java

세계나라 수도 사전&퀴즈

by jinju 2021. 3. 23.

 HashMap을 이용한 수도 사전&퀴즈 관리 프로그램

한 클래스에다가 했다가 코드가 너무 많고 복잡해서 먼저 패키지를 4가지로 나누기
메인뷰, 메소드, 모델, 실행

 

 실행 시 처음으로 보여지는 메인메뉴 화면

1을 입력받았을 시 사전 화면

 

 

2를 입력받았을 시 퀴즈 화면

그만을 눌렀을 시 메인메뉴로 돌아간다

 

3을 입력받았을 시 설정화면

사전에 데이터를 입력하거나 수정하거나 삭제

-1을 입력받았을 시

 

-2를 입력받았을 시

 

 

-3을 입력받았을 시

 

 

프로그램 종료 시

 

종료방법은 메인메뉴로 돌아가 4를 입력하여 종료하는 방법밖에 없다.

 

코드

메인메뉴 클래스

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
package com.capital.view;
 
import java.util.Scanner;
 
import com.capital.method.MainMethod;
 
public class Mainview {
    Scanner sc = new Scanner(System.in);
    MainMethod mthod = new MainMethod();
    
    public void mainview() {
        System.out.print("< 재밌는 세계나라 수도 사전 & 퀴즈 >");
        System.out.println("copyright@pearl");
        System.out.println("    1.사전   2.퀴즈   3.설정   4.종료");
        int num = sc.nextInt();
            switch(num) {
            case 1 : dic(); break
            case 2 : quiz(); break;
            case 3 : setting(); break;
            case 4 : finish(); break;
            default : System.out.println("잘못누르셨습니다. 메뉴에 있는 번호를 누르세요");
            new Mainview().mainview();
            }
    }
    
        public void dic() {
            System.out.println("1. 사전");
            System.out.println("종료 시 '그만'을 입력하세요");
            
            mthod.dicmethod();
            
        }
        
        public void quiz() {
            System.out.println("2. 퀴즈");
            System.out.println("종료 시 '그만'을 입력하세요");
            
            mthod.quizmethod();
        }
        
        public void setting() {
            System.out.println("3. 설정");
            System.out.println("종료 시 '그만'을 입력하세요");
            
            mthod.settmethod();
        }
        
        public void finish() {
            System.out.println("종료합니다.");
            System.exit(0);
        }
    
    }
cs

 

메소드 패키지로 나누기

메인메소드

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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
package com.capital.method;
 
import java.util.HashMap;
import java.util.Scanner;
import java.util.Set;
 
import com.capital.model.Nation;
import com.capital.view.Mainview;
 
public class MainMethod {
    Scanner sc = new Scanner(System.in);
    Nation na = new Nation();
    DicMethod dim = new DicMethod();
    InputMethod inm = new InputMethod();
    HashMap<StringString> map = na.getMap();
    
    public void dicmethod() {
        while(true) {
            System.out.println("대륙을 입력하세요");
            System.out.println("1.아시아   2.유럽  3.아메리카  4.전체보기 5.메뉴로");
            int num = sc.nextInt();
            switch(num) {
            case 1 : dim.asiaMethod(); break;
            case 2 : dim.europeMethod(); break;
            case 3 : dim.americaMethod(); break;
            case 4 : dim.dicAllMethod(); break;
            case 5 : new Mainview().mainview();
            default : System.out.println("잘못누르셨습니다. 메뉴에 있는 번호를 누르세요");
            new MainMethod().dicmethod();
            } 
        }
    }
    
    public void quizmethod() {
        Set<String> keys =map.keySet();
        Object [] array = (keys.toArray());
        
        while(true) {
            int index = (int)(Math.random()*array.length);
            
            String question = (String)array[index];
            String answer = map.get(question);
            
            System.out.println(question + "의 수도는 ?");
            String me = sc.next();
            if(me.equals("그만")){
                System.out.println("메뉴로 이동 합니다");
                new Mainview().mainview();
            }else if(me.equals(answer))
                System.out.println("정답입니다");
            else
                System.out.println("아닙니다! " + question + "의 수도는 " + answer + " 입니다!");
            
            
        
        }
    }
    
    public void settmethod() {
        System.out.println("    1)입력  2)수정   3)삭제   4)메뉴로");
        
        while(true) {
        int su = sc.nextInt();
        
        if(su == 1 ) {
            System.out.println("1)입력");
            
            inm.insert();
            
        }else if (su == 2) {
            System.out.println("2)수정");
            inm.update();
 
            
        }else if (su ==3) {
            System.out.println("3)삭제");
            
                    inm.delete();
        }else if( su ==4){
            new Mainview().mainview();
            
        }else{
            System.out.println("없는 번호 입니다. 메뉴있는 번호를 누르세요");
            
        }
        
        }
        
    }
    
    
 
}
 
cs

 

사전 메소드

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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
package com.capital.method;
 
import java.util.HashMap;
import java.util.Scanner;
 
import com.capital.model.Nation;
import com.capital.model.Nation2;
import com.capital.view.Mainview;
 
public class DicMethod {
    Scanner sc = new Scanner(System.in);
    Nation2 na2 = new Nation2();
    HashMap<StringString> map2 = na2.getMap2();
    
    
    
    public void asiaMethod() {
        na2.asia();
        System.out.println("나라를 입력하세요");
        String nara = sc.next();
        if(nara.equals("그만")) {
            System.out.println("메뉴로 이동 합니다.");
            new Mainview().mainview();
            
        }
        String result =map2.get(nara);
        if(result == null) {
            System.out.println(nara + "은/는 입력되지 않았습니다.");
            
        }else {
            System.out.println(nara +"의 수도는 " + result + " 입니다.");
        }
    }
    
    public void americaMethod() {
        na2.america();
        System.out.println("나라를 입력하세요");
        String nara = sc.next();
        if(nara.equals("그만")) {
            System.out.println("메뉴로 이동 합니다.");
            new Mainview().mainview();
            
        }
        String result =map2.get(nara);
        if(result == null) {
            System.out.println(nara + "은/는 입력되지 않았습니다.");
            
        }else {
            System.out.println(nara +"의 수도는 " + result + " 입니다.");
        }
        
    }
    
    public void europeMethod() {
        na2.europe();
        System.out.println("나라를 입력하세요");
        String nara = sc.next();
        if(nara.equals("그만")) {
            System.out.println("메뉴로 이동 합니다.");
            new Mainview().mainview();
            
        }
        String result =map2.get(nara);
        if(result == null) {
            System.out.println(nara + "은/는 입력되지 않았습니다.");
            
        }else {
            System.out.println(nara +"의 수도는 " + result + " 입니다.");
        }
        
    }
    
    public void dicAllMethod() {
        Nation na = new Nation();
        HashMap<StringString> map = na.getMap();
        for(String key : map.keySet()){
            String value = map.get(key);
            System.out.println(key+" : "+value);
 
        }
        System.out.println("종료 시 '그만'을 입력하세요");
        String nn = sc.next();
        if(nn.equals("그만")) {
            System.out.println("메뉴로 이동 합니다.");
            new Mainview().mainview();
            
        }
        
    }
}
 
cs

 

설정 메소드

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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
package com.capital.method;
 
import java.util.HashMap;
import java.util.Scanner;
 
import com.capital.model.Nation;
import com.capital.view.Mainview;
 
public class InputMethod {
    Scanner sc = new Scanner(System.in);
    Nation na = new Nation();
    HashMap<StringString> map = na.getMap();
    
        public void insert() {
            int n = map.size();
            System.out.println("현재 " + n + "개 나라와 수도가 입력되어 있습니다.");
                n++;
            while(true) {
                
                System.out.println(n+"번째 입력하기");
                System.out.print("나라 입력 : ");
                String country = sc.next(); 
                
                if(map.containsKey(country)) { 
                    System.out.println(country + "는 이미 있습니다!");
                    continue;
                }else if(country.equals("그만")) {
                    System.out.println("메뉴로 이동합니다.");
                    new Mainview().mainview();
                }
                System.out.print("수도 입력 : ");
                String capital = sc.next();
                System.out.println("입력 되었습니다");
            
            map.put(country, capital);
                n++;
            }
            
        }
 
        public void update() {
            while(true) {
                System.out.println("수정할 나라 이름 입력");
                String nara = sc.next();
                if(nara.equals("그만")) {
                    System.out.println("메뉴로 이동합니다.");
                    new Mainview().mainview();
                }
                String result =map.get(nara);
                if(result == null) {
                    System.out.println(nara + "은/는 없습니다.");
                }else if(result != null) {
                System.out.println("수정할 수도 입력");
                String sudo = sc.next();
                 System.out.println(map.get(nara) + "->" + sudo);
                 System.out.println("변경 됐습니다.");
                 map.replace(nara, sudo);
            
                }
            }
        
    }
    
        public void delete() {
            while(true) {
            System.out.println("삭제할 나라명 입력 : ");
            String nara = sc.next();
            //String result = map.get(nara);
            if(map.containsKey(nara)) {
                map.remove(nara);
                System.out.println("삭제 되었습니다.");
 
            }else if(nara.equals("그만")) {
                System.out.println("메뉴로 이동합니다.");
                new Mainview().mainview();
            }else {
            
                System.out.println(nara + " 은/는 입력되지 않았습니다.");
            }
            }
            
        
    }
 
 
}
 
cs

 

데이터 모델

hashMap 사용

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
package com.capital.model;
 
import java.util.HashMap;
 
public class Nation {
 
    private HashMap<StringString> map = new HashMap<StringString>();
    
    public Nation() {
        map.put("한국",  "서울");
        map.put("미국""워싱턴 D.C");
        map.put("스페인""마드리드");
        map.put("프랑스""파리") ;
        map.put("영국""런던");
        map.put("그리스""아테네");
        map.put("독일""베를린");
        map.put("일본""도쿄");
        map.put("중국""베이징");
        map.put("러시아""모스크바");
    
    }
    
    public HashMap<StringString> getMap(){
        return map;
    }
}
 
cs
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
package com.capital.model;
 
import java.util.HashMap;
 
public class Nation2 {
    
    private HashMap<StringString> map2 = new HashMap<StringString>();
    
        public void asia() {
        map2.put("한국",  "서울");
    
 
 
 
        map2.put("일본""도쿄");
        map2.put("중국""베이징");
 
    
    }
        public void america() {
            map2.put("미국""워싱턴 D.C");
            map2.put("캐나다""오타와");
        }
        
        public void europe() {
            map2.put("독일""베를린");
            map2.put("스페인""리스본");
            map2.put("프랑스""파리") ;
            map2.put("영국""런던");
        }
        
    
    public HashMap<StringString> getMap2(){
        return map2;
    }
}
 
cs

모델 클래스가 두개인 이유는 대륙을 나누고 싶기도 한데 방법은 잘 모르겠고,, 한계가 여기까지라서...ㅠㅠ

 

메인메뉴 실행시키는 메소드

1
2
3
4
5
6
7
8
9
10
11
12
package com.capital.run;
 
import com.capital.view.Mainview;
 
public class Run {
 
    public static void main(String[] args) {
        new Mainview().mainview();
 
    }
 
}
cs

 

 

-어쩌다 만들어본 아마추어 프로젝트,,,, 오류없이 실행되는 것에 의의를 두었다...

'Programming | Study > Java' 카테고리의 다른 글

[Java] txt파일 읽기  (0) 2021.08.18
계산기 프로그램  (2) 2021.03.23
컴퓨터랑 가위 바위 보 하기  (2) 2021.03.23
스케줄 관리 프로그램  (0) 2021.03.23
카드 번호 맞추기  (2) 2021.03.23

댓글