참고한 링크
https://edu-coding.tistory.com/162
2번째 시도 결과 : 실패
File 클래스와 객체생성을 이용했을 때 문제점
① File클래스는 입출력만 가능 (수정, 검색 불가)
② 객체 생성하여 txt파일에 담으면 글자가 깨짐
👍 클래스 파일 1페이지에 모두 작성
👍 클래스 총 2개 사용 (Student / Test)
package secondtry;
import java.util.Scanner;
이름/학번/국어/수학/영어점수 받아서 객체 생성
class Student {
String name = null;
String number = null;
int kor;
int eng;
int math;
public Student(String name, String number, int kor, int eng, int math) {
this.name = name;
this.number = number;
this.kor = kor;
this.eng = eng;
this.math = math;
}
} // end of class Student
- 데이터 : Student객체 / count변수(인덱스번호)로 배열생성하여 데이터 처리
- 메뉴판/입력/보기/검색/수정 : 각 메서드를 생성하여 처리
- main : while(true) 무한반복문으로 작성
public class Test {
static Scanner scan = new Scanner(System.in);
Student[] stu = new Student[10];
int count = 0;
번호메뉴판 출력해주는 메소드
public void menu() {
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("#########################");
System.out.println();
}//menu()
이름,학번,국어,영어,수학점수를 Scanner로 받아서 Student객체배열 생성
추가내용
✅ print내용에 공백추가 : "이름 :"
public void insert() {
System.out.print("이름: ");
String name = scan.next();
System.out.print("학번: ");
String number = scan.next();
System.out.print("국어: ");
int kor = scan.nextInt();
System.out.print("영어: ");
int eng = scan.nextInt();
System.out.print("수학: ");
int math = scan.nextInt();
stu[count] = new Student(name, number, kor, eng, math);
count++;
}//insert()
'이름'을 입력받아 인덱스값을 조회하고
/ 같은 인덱스에 있는 객체변수값을 출력함
추가내용 생각해보기
❓ 검색이름이 없을 경우이름을 다시 입력해주세요
출력하기
public void search() {
System.out.print("이름 입력 :");
String name = scan.next();
System.out.println("########## 학생 검색 정보 ##########");
System.out.println("이름\t학번\t국어\t영어\t수학");
for (int i = 0; i < count; i++) {
if (stu[i].name.equals(name)) {
System.out.print(stu[i].name + "\t");
System.out.print(stu[i].number + "\t");
System.out.print(stu[i].kor + "\t");
System.out.print(stu[i].eng + "\t");
System.out.print(stu[i].math + "\t");
System.out.println();
break;
}//if
}//for i
System.out.println();
}//search()
'이름'을 입력받아 인덱스값을 조회하고
/ 해당 인덱스의 값을 다시 scanner로 받아서 저장
추가내용 생각해보기
❓ 검색이름이 없을 경우이름을 다시 입력해주세요
출력하기
public void update() {
int point = 0;
System.out.print("이름 입력 :");
String name = scan.next();
System.out.println("########## 학생 정보 수정 ##########");
for (int i = 0; i < count; i++) {
if (stu[i].name.equals(name)) {
point = i;
break;
}//if
}//for
System.out.print("학번:");
stu[point].number = scan.next();
System.out.print("국어:");
stu[point].kor = scan.nextInt();
System.out.print("영어:");
stu[point].eng = scan.nextInt();
System.out.print("수학:");
stu[point].math = scan.nextInt();
System.out.println();
}//update()
현재 생성된 배열을 인덱스 순서대로 출력
public void show() {
System.out.println("########## 학생 정보리스트 보기 ##########");
System.out.println("이름\t학번\t국어\t영어\t수학");
for (int i = 0; i < count; i++) {
System.out.print(stu[i].name + "\t");
System.out.print(stu[i].number + "\t");
System.out.print(stu[i].kor + "\t");
System.out.print(stu[i].eng + "\t");
System.out.print(stu[i].math + "\t");
System.out.println();
}
System.out.println();
}//show()
- Test객체 생성
- su변수에 번호입력받기
- while(true)무한반복문
- t1.menu() : 메뉴 출력
- 입력받은 숫자에 따라 해당 메서드 실행
추가내용 생각해보기
✅ 1~5가 아닌 숫자를 입력했을 때 안내메시지 출력
public static void main(String[] args) {
Test t1 = new Test();
int su;
while (true) {
t1.menu();
System.out.print("번호 입력 : ");
su = scan.nextInt();
if (su == 5)
break;
if (su == 1)
t1.insert();
if (su == 2)
t1.show();
if (su == 3)
t1.search();
if (su == 4)
t1.update();
if (!(su>=1 && su<=5))
System.out.println("1~5사이 숫자만 입력해주세요");
System.out.println();
}//while
System.out.println("프로그램 종료");
}//end of Main
}//end of class Test