본문 바로가기
✨ Java/클래스 (Class)

자바(JAVA) - 클래스 (Class) StudentManage 학생 관리 <프로젝트>

by 환풍 2023. 2. 10.
728x90

학생 관리 프로젝트 ( StudnetManage )

이번에는 Java 클래스로 배웠던 프로젝트를 해보려고 한다.
학생 관리 프로그램이며,
최대 3명의 학생을 저장하여 임의로 학생의 정보를 변경할 수 있는 프로그램을 제작하였다.

 

 

Student 클래스

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
package stu_manage;
 
public class Student {
    private String name;
    private int age;
    private String grade;
    private String tell;
 
    public Student(String name, int age, String tell, String grade) {
        this.name = name;
        this.age = age;
        this.tell =tell;
        this.grade = grade;
    }
 
    //학생의 모든 정보를 출력하는 메소드
    // 이름 : 장길동, 나이 : 30 , 연락처 : 010-0000-0000 ,학점 : B
    public void printInfo()
    {
        System.out.println("이름 : " + name + ", 나이 : " + age + ", 연락처 : " + tell + ", 학점 : " + grade);
    }
 
    public String getName()
    {
        return name;
    }
 
    public String getTell()
    {
        return tell;
    }
 
    public void setTell(String tell) {
        this.tell = tell;
    }
    public void setName()
    {
 
    }
}
 
cs

학생의 이름, 나이, 학점, 연락처를 변수로 설정하고,

매개변수로 받도록 생성자를 만들어주었다.

이후 학생의 모든 정보를 출력해주는 메소드와 이름과 연락처를 초기화해주는 setter를 설정해주었다.

 

StudentManage 클래스

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
117
118
119
120
121
122
123
124
package stu_manage;
 
import stu_manage.Student;
 
import java.util.Scanner;
 
public class StudentManage {
    Scanner sc;
    Student[] students;
    int index = 0;
 
    public StudentManage(){
        sc = new Scanner(System.in);
        students = new Student[3];
        index = 0;
    }
    // 학생 등록
    public void regStudent(){
        //학생이 3명을 초과하면 등록 금지 !
        if(index < 3){
            System.out.println("학생 등록을 시작합니다. 학생 정보를 입력하세요.");
            System.out.print("이름 : ");
            String name = sc.next();
            System.out.print("나이 : ");
            int age = sc.nextInt();
            System.out.print("연락처 : ");
            String tell = sc.next();
            System.out.print("학점 : ");
            String grade = sc.next();
 
            //입력받은 정보를 가진 학생 객체를 생성.
            Student stu = new Student(name, age, tell, grade);
 
            //생성한 객체를 배열에 저장.
            students[index] = stu;
            index++;
 
        }
        else {
            System.out.println(" 더이상 등록이 불가합니다.");
        }
 
 
    }
 
    // 학생 정보 변경( 연락처)
    public void setStuInfo(){
        boolean flag= true;
 
 
        while (flag)
            {
                System.out.print("변경할 학생의 이름을 입력하세요 :");
                String name= sc.next();
 
                    for(int i=0; i<index; i++)
                    {
 
 
                    if (students[i].getName().equals(name))
                    {
                        System.out.print("변경할 연락처를 입력하세요 : ");
                        String tell = sc.next();
                        students[i].setTell(tell);
                        flag = false;
                        break;
                    }
 
                    }
                    if(index==0){
                        System.out.println("등록된 학생이 없습니다.");
                        break;
                    }
                    if(flag) {
                        System.out.println("변경할 학생이 없습니다.");
                    }
            }
 
    }
    // 학생 정보 출력
    public void showStuInfo(){
        boolean flag = true;
        while(flag)
        {
            System.out.print("정보를 열람할 학생 : ");
            String inputName = sc.next();
 
            for(int i = 0; i<index; i++)
            {
                if(students[i].getName().equals(inputName))
                {
                    System.out.println();
                    System.out.println("요청하신 학생의 정보입니다.");
                    students[i].printInfo();
                    flag = false;
                    break;
                }
            }
            if(flag)
            {
                System.out.println("해당하는 학생이 존재하지 않습니다. 다시 입력 하세요.");
            }
 
 
        }
    }
 
 
    public void showAllInfo()
    {
        if(index == 0){
            System.out.println("현재 등록된 학생이 없습니다.");
        }
        else
        {
            System.out.println("모든 학생의 정보입니다. 현재 총 학생 수는 " + index + "명 입니다.");
            for(int i = 0; i<index; i++)
            {
                students[i].printInfo();
            }
        }
 
    }
}
cs

먼저 학생관리 생성자에 학생이 3자리 들어갈 공간을 만들어주었고, 이때 index를 0으로 선언과 동시에 초기화했다.

1번의 학생 등록 메소드를 만들고, 한명씩 등록될 때마다 index가 하나씩 올라가고,

index의 값이 3이되면 더이상 등록할 수 없도록 구현하였다.

 

2번의 학생 정보 변경 메소드를 만들어 while문을 시작해 변경 할 학생이 있으면 변경, 없으면 while문을 빠져나가도록 break 걸어주었고, set으로 변경할 연락처를 입력한 후 , Student 클래스에서 받는 get값에 넣어주었다.

 

3번의 학생 정보 출력 메소드에서 student 클래스에 있는 학생 이름과 직접 타이핑한(inputName)이 동일한지 비교했고,

동일하면 break를 걸어 해당 학생의 모든 정보를 출력하도록 구현하였다.

 

4번의 모든 학생 정보 출력 메소드에서 해당 Student의 index값에 위치한 모든 학생의 정보를 출력한 결과를 출력했다.

 

StudentTest 클래스. (Main 메소드가 포함)

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 stu_manage;
 
import com.sun.source.tree.CaseTree;
 
import java.util.Scanner;
 
public class StudentTest {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        StudentManage sm  = new StudentManage();
 
        System.out.println(" 학생 관리 프로그램을 실행합니다.");
        while (true)
        {
 
            System.out.print("1)학생등록 2)학생정보변경(연락처) 3)학생정보출력 4)모든학생정보출력 5)프로그램 종료 :");
 
            int option=sc.nextInt();
 
            switch (option)
            {
                case 1:
                {
                    sm.regStudent();
 
                    System.out.println();
                    break;
                }
                case 2:
                {
                    sm.setStuInfo();
                    break;
                }
                case 3:
                {
                    sm.showStuInfo();
                    break;
                }
                case 4:
                {
                    sm.showAllInfo();
                    break;
                }
                case 5:
                {
                    System.out.println("시스템 종료");
                    System.exit(0);
                }
            }
        }
    }
}
 
cs

Main 메소드내에서 Student 클래스와 StudentManage 클래스를 조립해주어 하나하나 실행되도록 코드를 구현하였다.

while문을 걸어 무한 반복하도록 하였고,

첫 출력 문에서 숫자 5를 눌르면 while을 빠져나가며 시스템을 종료시키는데까지 구현하여 프로젝트를 완료하였다.

 

제가 클래스를 공부하는데 있어 많은 도움을 줄 수 있었고,

혹시라도 클래스를 공부하는 사람이 있다면 꼭 한번 도전해보길 바랍니다.

반응형

댓글