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<String, String> 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<String, String> 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<String, String> 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<String, String> 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<String, String> map = new HashMap<String, String>();
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<String, String> 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<String, String> map2 = new HashMap<String, String>();
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<String, String> 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 |
댓글