본문 바로가기
✨ Java/컬렉션 프레임워크(CollectionFramework)

자바(JAVA) - ArrayList 이용해 회원 관리 시스템 만들기

by 환풍 2023. 2. 15.
728x90
반응형
(1) 회원등록, (2) 회원정보조회, (3) 모든회원정보조회, (4) 회원삭제, (5) 회원비밀번호변경

컬렉션프레임워크의 ArrayList를 이용하여 회원관리 시스템을 만들어보았다.

 

Member1

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
package t10;
 
public class Member1 {
    private String id;
    private String name;
    private String pw;
 
    public Member1(String id, String name, String pw) {
        this.id = id;
        this.name = name;
        this.pw = pw;
    }
 
    public String getId() {
        return id;
    }
 
    public void setId(String id) {
        this.id = id;
    }
 
    public String getName() {
        return name;
    }
 
    public void setName(String name) {
        this.name = name;
    }
 
    public String getPw() {
        return pw;
    }
 
    public void setPw(String pw) {
        this.pw = pw;
    }
 
    @Override
    public String toString() {
        return "Member1{" +
                "id='" + id + '\'' +
                ", name='" + name + '\'' +
                ", pw='" + pw + '\'' +
                '}';
    }
}
 
cs

변수 id, name, pw 를 자료형 String으로 생성 후 매개변수를 갖는 생성자를 만들었다.

이후 값을 저장하고 초기화할 수 있도록 세터와 게터를 만들었다.

출력될 정보를 쉽게 toString( )을 이용해 만들어주었다.

 

MemberManage

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
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
package t10;
 
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
 
public class MemberManage {
    private Scanner sc;
    private List<Member1> memberList;  // 멤버리스트 만들거야.,
    // (아직 만들진 않음) 즉 선언만됨.
 
    public MemberManage(){
        memberList = new ArrayList<>();
        // (여기서 멤버리스트 만들었음.)
        sc= new Scanner(System.in);
    }
 
    //키보드로 입력받은 정보를 갖는 회원을 리턴.
    private Member1 getMember(){   // 밖에선 호출 못하도록 private를 씀.
        System.out.print("회원이름 : ");
        String name = sc.next();
 
        System.out.print("아이디 : ");
        String id = sc.next();
 
        System.out.print("비밀번호 : ");
        String pw = sc.next();
 
        Member1  m = new Member1(id, name, pw);
        return m;
    }
 
    // 회원등록
    public void regMember(){  //
        Member1 m = getMember();
        memberList.add(m);
    }
    
    //회원정보 조회
    public void showInfoByName(){
        boolean isFind = false;
        boolean isRun = true;
 
        while (isRun){
            System.out.print("정보를 조회할 이름 : ");
            String name = sc.next();
 
            for(int i=0; i<memberList.size(); i++){
                if(memberList.get(i).getName().equals(name)){
                    System.out.println(memberList.get(i));
                    /// toString으로 출력하는것과 동일.
                    isFind = true;
                    // isFind = !isFind;   위와 같다.
                    isRun  = false;
                    break;
                }
            }
            if(!isFind){
                System.out.println("일치하는 정보가 없습니다.");
            }
        }
 
    }
 
    
    // 모든 회원정보 조회
    public void showAllInfo(){
        for(Member1 member : memberList)
        {
            System.out.println(member);
        }
    }
    
    // 회원삭제
    public void deleteInfo(){
        System.out.print("삭제할 회원 아이디 : ");
        Scanner sc = new Scanner(System.in);
        String id = sc.next();
        for(int i=0; i<memberList.size(); i++)
        {
            if(memberList.get(i).getId().equals(id))
            {
                memberList.remove(i);
            }
        }
    }
    
    // 회원비밀번호 변경
    public void updateMemberInfo(){
        boolean isFind = false;
        boolean isRun = true;
 
        while (isRun){
            System.out.print("비밀번호 변경할 이름 : ");
            String name = sc.next();
 
            for(int i=0; i<memberList.size(); i++){
                if(memberList.get(i).getName().equals(name)){
                    System.out.print("비밀번호 : ");
                    String pw = sc.next();
                    memberList.get(i).setPw(pw);
 
                    isFind = true;
 
                    isRun  = false;
                    break;
                }
            }
            if(!isFind){
                System.out.println("일치하는 정보가 없습니다.");
            }
        }
 
    }
}
 
cs

코드가 굉장히 길다. 하나하나 살펴보자.

 

MemberManage 클래스에서 변수를 입력할 Scanner와 Member1클래스 정보가 담긴 List를 선언하였다.

 

생성자에서 변수로 선언한 입출력해주는 sc와 ArrayList를 활용해 memberList를 생성했다.

 

getMember 메소드에서 생성자에서 입력한 값이 리턴되며 이름과 아이디, 비밀번호가 저장되어 m에 저장된 후 리턴된다.

 

회원등록 )) Member1 클래스에 리턴되는 m 정보를 모두 담아 memberList에 저장할 수 있다.

 

회원정보 조회 )) 일치하는 정보가 없으면 무한으로 반복될 수 있게 while안에 문장들을 감쌌고,

 for문을 돌려 memberList에 위치한( get(i) ) 값의 name이 Scanner에서 출력된 name과 동일하면 memberList.get(i)과 같이 모든 정보를 출력하도록 코드를 짰고, while문을 빠져나오도록 했다.

 

모든 회원정보 조회 )) 클래스 Member1에 있는 값을 memberList 객체로 돌려 member의 값을 출력하도록 foreach문을 사용했다.

 

회원삭제 )) 회원정보 조회와 동일한 생각으로 코드를 짜주었고, remove를 이용해 삭제를 추가한 것 뿐이다.

 

회원비밀번호 변경 )) 회원 정보조회와 회원삭제 기능을 적절히 섞어 만들었는데, if문의 마지막에 memberList.get(i).setPw(pw)를 쓴것처럼 비밀번호를 새로 초기화시켜주었다.

 

TestMember2

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
package t10;
 
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
 
public class TestMember2 {
    public static void main(String[] args) {
        Scanner sc= new Scanner(System.in);
 
        // 멤버의 등록, 조회, 삭제 등의 기능을 사용하기 위해 생성.
        MemberManage m = new MemberManage();
        List<Member1> list = new ArrayList<>();
 
        while (true)
        {
 
            System.out.print("회원등록<1> 회원정보조회<2> 모든회원정보조회<3> 회원삭제<4> 회원비밀번호변경<5>");
 
            int n = sc.nextInt();
            if( n == 1)
            {
               // m.getMember();  // private 때문에 호출 불가.
                m.regMember();
            }
            else if( n == 2)
            {
                m.showInfoByName();
 
            }
            else if( n ==3 )
            {
                m.showAllInfo();
            }
            else if(n ==4 )
            {
                m.deleteInfo();
 
 
            }
            else if( n== 5)
            {
                m.updateMemberInfo();
            }
        }
    }
}
 
cs

 

실행결과

728x90
반응형

댓글