JAVA / 학교 학생 정보 관리 시스템 & 초급 프로젝트 / ArrayList & Scanner

    목차

School Class (학교 클래스)

package school_system;

 

public class School {

 

private String name; // 학교 이름

private String phone; // 학교 연락처

private String address; // 학교 주소

 

public School() {

this.name = "서울 콜킴 고등학교"; // 학교 이름

this.phone = "02-2222-4444"; // 학교 연락처

this.address = "서울 강북구 삼양동"; // 학교 주소

}

 

public String getName() {

return name;

}

public String getPhone() {

return phone;

}

public String getAddress() {

return address;

}

}

 

Student class (학생 클래스)

package school_system;

import java.util.Scanner;

import java.util.ArrayList;

 

public class Student {

Scanner sc; // 선언

ArrayList<Student> list; // ArrayList 생성 / Student에 넣기

 

boolean check;

 

Student() {

list = new ArrayList(); // ArrayList 생성

sc = new Scanner(System.in);

}

 

private int num; // 학번

private String name; // 학생 이름

private int age; // 학생 나이

private String phone; // 학생 연락처

 

public Student(String name, int age, String phone, int num) {

 

this.name = name;

this.age = age;

this.phone = phone;

this.num = num;

}

 

// 입력하기

void input() {

 

Student newStudent = new Student();

 

for (int i = 0; i < 1; i++) {

System.out.println("학번을 입력하세요: ");

newStudent.num = sc.nextInt();

sc.nextLine();

 

System.out.println("이름을 입력하세요: ");

newStudent.name = sc.nextLine();

 

System.out.println("나이를 입력하세요: ");

newStudent.age = sc.nextInt();

sc.nextLine();

 

System.out.println("연락처를 입력하세요: ");

newStudent.phone = sc.nextLine();

}

 

// 중복 학번 확인

boolean isDuplicate = false;

for (Student student : list) {

if (student.getNum() == newStudent.getNum()) {

isDuplicate = true;

break;

}

}

 

if (isDuplicate) {

System.out.println("이미 존재하는 학번입니다. 다시 시도하세요.");

} else {

// 중복이 아닌 경우에만 리스트에 추가

list.add(newStudent);

System.out.println("학생 정보가 추가되었습니다.");

}

}

 

// 해당 학생 정보 삭제

public void deleteStudent() {

System.out.println("삭제할 학생의 학번을 입력하세요: ");

int studentNum = sc.nextInt();

sc.nextLine();

 

boolean found = false;

for (Student student : list) {

if (student.getNum() == studentNum) {

found = true;

list.remove(student);

System.out.println("학생 정보가 삭제되었습니다.");

break;

}

}

 

// 잘못된 정보 입력시

if (!found) {

System.out.println("해당 학번의 학생을 찾을 수 없습니다.");

}

}

 

// 학생 정보 수정

public void Change() {

System.out.println("학번을 입력하세요: ");

int studentNum = sc.nextInt();

sc.nextLine();

 

boolean found = false;

for (Student student : list) {

if (student.getNum() == studentNum) {

found = true;

 

System.out.println("변경할 정보를 선택하세요:");

System.out.println("1. 이름 변경");

System.out.println("2. 나이 변경");

System.out.println("3. 연락처 변경");

int choice = sc.nextInt();

sc.nextLine();

 

switch (choice) {

case 1:

System.out.println("새로운 이름을 입력하세요: ");

String newName = sc.nextLine();

student.setName(newName);

System.out.println("이름이 변경되었습니다.");

break;

case 2:

System.out.println("새로운 나이를 입력하세요: ");

int newAge = sc.nextInt();

sc.nextLine();

student.setYear(newAge);

System.out.println("나이가 변경되었습니다.");

break;

case 3:

System.out.println("새로운 연락처를 입력하세요: ");

String newPhone = sc.nextLine();

student.setGrade(newPhone);

System.out.println("연락처가 변경되었습니다.");

break;

default:

System.out.println("올바른 선택이 아닙니다.");

}

break;

}

}

 

if (!found) {

System.out.println("해당 학번의 학생을 찾을 수 없습니다.");

}

}

 

// 해당 학생 정보 출력

public void StudentShowInfo() {

System.out.println("==== 학생 정보 ====");

System.out.println("학번: " + num);

System.out.println("학생 이름: " + name);

System.out.println("학생 나이: " + age);

System.out.println("연락처: " + phone);

System.out.println("================");

}

public Student getStudentByNum(int studentNum) {

for (Student student : list) {

if (student.getNum() == studentNum) {

return student;

}

}

return null; // 학생을 찾을 수 없는 경우

}

 

// 모든 학생 정보 출력

public void ShowAllStudents() {

if (list.isEmpty()) {

System.out.println("등록된 학생 정보가 없습니다.");

return;

}

 

System.out.println("==== 전체 학생 정보 ====");

for (Student student : list) {

student.StudentShowInfo(); // 모든 학생 정보 출력 호출하기

System.out.println("===========================");

}

}

 

public int getNum() {

return num;

}

 

public void setNum(int num) {

this.num = num;

}

 

public String getName() {

return name;

}

 

public void setName(String name) {

this.name = name;

}

 

public int getYear() {

return age;

}

 

public void setYear(int age) {

this.age = age;

}

 

public String getGrade() {

return phone;

}

 

public void setGrade(String phone) {

this.phone = phone;

}

 

// 학교 상세 정보 출력

public static void printSchoolInfo() {

School school = new School();

System.out.println("==== 학교 상세 정보 ====");

System.out.println("학교 이름: " + school.getName());

System.out.println("학교 연락처: " + school.getPhone());

System.out.println("학교 주소: " + school.getAddress());

System.out.println("=======================");

}

}

 

main

package school_system;

import java.util.Scanner;

 

public class Test {

 

public static void main(String[] args) {

Student studentManager = new Student();

Scanner scanner = new Scanner(System.in);

 

while (true) {

System.out.println("==== 학생 관리 프로그램 ====");

System.out.println("1) 학생 등록");

System.out.println("2) 학생 삭제");

System.out.println("3) 해당 학생 정보 출력");

System.out.println("4) 학생 전체 정보 출력");

System.out.println("5) 학교 상세 정보 출력");

System.out.println("6) 학생 정보 수정하기");

System.out.println("0) 프로그램 종료");

System.out.println("==== 숫자 키를 입력하세요 >>>");

 

int choice;

if (scanner.hasNextInt()) {

choice = scanner.nextInt();

scanner.nextLine();

} else {

System.out.println("잘못된 입력입니다. 숫자를 입력하세요.");

scanner.nextLine();

continue;

}

 

switch (choice) {

case 1:

studentManager.input();

break;

case 2:

studentManager.deleteStudent();

break;

case 3:

System.out.println("학번을 입력하세요: ");

int studentNum = scanner.nextInt();

scanner.nextLine();

 

Student studentToShow = studentManager.getStudentByNum(studentNum);

 

if (studentToShow != null) {

studentToShow.StudentShowInfo(); // 해당 학생 정보 출력 호출

} else {

System.out.println("해당 학번의 학생을 찾을 수 없습니다.");

}

break;

 

case 4:

studentManager.ShowAllStudents();

break;

case 5:

Student.printSchoolInfo(); // Student 호출

break;

 

case 6:

studentManager.Change();

break;

 

case 0:

System.out.println("프로그램을 종료합니다.");

scanner.close();

System.exit(0);

break;

default:

System.out.println("올바른 선택이 아닙니다. 다시 선택하세요.");

}

}

}

}

 

출력 결과

==== 학생 관리 프로그램 ====

1) 학생 등록

2) 학생 삭제

3) 해당 학생 정보 출력

4) 학생 전체 정보 출력

5) 학교 상세 정보 출력

6) 학생 정보 수정하기

0) 프로그램 종료

==== 숫자 키를 입력하세요 >>>

 

학생 정보 등록하지 않는 상태에서 전체 정보 출력해보면 ??

4

등록된 학생 정보가 없습니다.

등록된 정보가 없다고 뜹니다~!

 

 

 

학생 정보 정상적으로 추가되었습니다.

==== 숫자 키를 입력하세요 >>>

1

학번을 입력하세요:

301

이름을 입력하세요:

김영민

나이를 입력하세요:

19

연락처를 입력하세요:

010-2222-4444

학생 정보가 추가되었습니다.

 

 

 

 

일부러 중복된 학번을 입력해서 학생 등록을 시도해봤는데요~! 

이미 존재하는 학번이라고 뜨면서 다시시도하라고 출력됩니다.

==== 숫자 키를 입력하세요 >>>

1

학번을 입력하세요:

301

이름을 입력하세요:

JJ

나이를 입력하세요:

19

연락처를 입력하세요:

010-3232-3232

이미 존재하는 학번입니다. 다시 시도하세요.

 

 

 

 

 

(학번  302 추가해놓고)

 

 

전체 학생 정보 보기 4번을 입력하면
학교에 등록된 전체 학생 정보 출력됩니다.

==== 숫자 키를 입력하세요 >>>

4

==== 전체 학생 정보 ====

==== 학생 정보 ====

학번: 301

학생 이름: 김영민

학생 나이: 19

연락처: 010-2222-4444

================

===========================

==== 학생 정보 ====

학번: 302

학생 이름: JJ

학생 나이: 19

연락처: 010-3232-3232

================

 

 

 

 

 

 

 

해당 학생 정보 찾아보기 단계로 넘어가볼게요~

 

일부러 등록하지않는 학번을 입력해봤습니다

해당 학번의 학생을 찾을수 없다고 출력됩니다

==== 숫자 키를 입력하세요 >>>

3

학번을 입력하세요:

3333

해당 학번의 학생을 찾을 수 없습니다.

 

 

 

 

 

등록된 학번을 입력하면 301학번의 학생정보가 출력됩니다

==== 숫자 키를 입력하세요 >>>

3

학번을 입력하세요:

301

==== 학생 정보 ====

학번: 301

학생 이름: 김영민

학생 나이: 19

연락처: 010-2222-4444

================

 

 

 

6) 학생 정보 수정하기

학생 정보 수정을 해보겠습니다

 

 

일부러 등록하지 않은 학번을 입력하니 찾을수없다고 출력됩니다~!

==== 숫자 키를 입력하세요 >>>

6

학번을 입력하세요:

33333

해당 학번의 학생을 찾을 수 없습니다.

 

 

학생 정보 이름을 수정하고

==== 숫자 키를 입력하세요 >>>

6

학번을 입력하세요:

301

변경할 정보를 선택하세요:

1. 이름 변경

2. 나이 변경

3. 연락처 변경

1

새로운 이름을 입력하세요:

CollKim

이름이 변경되었습니다.

 

해당 학생 정보출력해보니 정상적으로 이름이 바뀐것을 확인할수가 있습니다

==== 숫자 키를 입력하세요 >>>

3

학번을 입력하세요:

301

==== 학생 정보 ====

학번: 301

학생 이름: CollKim

학생 나이: 19

연락처: 010-2222-4444

================

 

 

 

학교 상세 정보를 정상적으로 출력이 됩니다

==== 숫자 키를 입력하세요 >>>

5

==== 학교 상세 정보 ====

학교 이름: 서울 콜킴 고등학교

학교 연락처: 02-2222-4444

학교 주소: 서울 강북구 삼양동

=======================

 

 

 

등록된 case 숫자외 다른숫자를 입력한상태

==== 숫자 키를 입력하세요 >>>

3232

올바른 선택이 아닙니다. 다시 선택하세요.

 

문자열으로 입력하면?

==== 숫자 키를 입력하세요 >>>

아아

잘못된 입력입니다. 숫자를 입력하세요.

 

 

 

 

 

감사합니다~~! 

 

 

JAVA 클래스 / ArrayList / Scanner