(1-3) [Java] 학생관리 프로그램 만들기

씩씩한 조약돌·2022년 12월 25일
0

미니프로젝트🤹

목록 보기
2/21

참고한 링크
https://edu-coding.tistory.com/162


2번째 시도 결과 : 실패
File 클래스와 객체생성을 이용했을 때 문제점
① File클래스는 입출력만 가능 (수정, 검색 불가)
② 객체 생성하여 txt파일에 담으면 글자가 깨짐


다른 사람 코드 분석해보기

👍 클래스 파일 1페이지에 모두 작성
👍 클래스 총 2개 사용 (Student / Test)


package secondtry;

import java.util.Scanner;

1. Student클래스

이름/학번/국어/수학/영어점수 받아서 객체 생성

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

2. Test 클래스

  • 데이터 : Student객체 / count변수(인덱스번호)로 배열생성하여 데이터 처리
  • 메뉴판/입력/보기/검색/수정 : 각 메서드를 생성하여 처리
  • main : while(true) 무한반복문으로 작성

(1) Scanner객체 생성

(2) Student객체 배열 생성

(3) count변수에 객체 인덱스를 입력

public class Test {
	static Scanner scan = new Scanner(System.in);
	Student[] stu = new Student[10];
	int count = 0;

(4) menu()

번호메뉴판 출력해주는 메소드

	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()

(5) insert()

이름,학번,국어,영어,수학점수를 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()

(7) update()

'이름'을 입력받아 인덱스값을 조회하고
/ 해당 인덱스의 값을 다시 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()

(8) show()

현재 생성된 배열을 인덱스 순서대로 출력

	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()

(9) main()

  • 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

3일차 후기

  1. 하고 싶은 것이 아닌 할 수 있는 범위 내에서 방법을 찾아보기 (File클래스사용 대신 객체 배열 생성 이용하기)
  2. 최대한 쉽게 구조를 짜기 (메서드를 이용하면 한 번 짠 코드를 여러번 이용할 수 있음)
  3. Arraylist로 구현하는 방법도 찾아보기
  4. 구조를 확인하였으니, 4번째엔 스스로 코드 작성해보기
profile
씩씩하게 공부중 (22.11~)

0개의 댓글