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
'코딩 > 셀프 체크' 카테고리의 다른 글
| 다중 for 으로 구구단 만들기 / 다중 for 제어문 (5) | 2023.10.19 |
|---|---|
| JAVA / 직원 출퇴근 로그 관리 시스템 / 초급 프로젝트 (0) | 2023.10.10 |
| 고객 정보 + 구매정보 입력하는 클래스 작성하며 복습을!! (0) | 2023.10.01 |
| 동물병원으로 복습해본 결과물!! (0) | 2023.10.01 |