티스토리 뷰

LANGUAGE/JAVA

[JAVA] 성적 처리

진심스테이크 2018. 3. 20. 22:31

 

성적 처리 프로그램

1. 입력 - 한명씩

2. 전체 출력 / 오름차순으로 출력

3. 검색 - 이름 검색 / 성적 (국어, 영어, 수학, 총점) 검색

4. 수정 - 이름을 받아서 각 과목 수정

5. 삭제 - 이름을 받아서 삭제

 

import java.util.Scanner;

class Name { //이름
    private String name;

    public void setName(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }
}

class Score { //점수
    private int score;

    public int getScore() {
        return score;
    }

    public void setScore(int score) {
        this.score = score;
    }

}

class Student { //has ~a관계로 상속
    private Name name;
    private Score kor;
    private Score eng;
    private Score math;
    private int total;
    private float avg;

    Student() {
        name = new Name();
        kor = new Score();
        eng = new Score();
        math = new Score();
    }

    public Name getName() {
        return name;
    }

    public void setName(Name name) {
        this.name = name;
    }

    public Score getKor() {
        return kor;
    }

    public void setKor(Score kor) {
        this.kor = kor;
    }

    public Score getEng() {
        return eng;
    }

    public void setEng(Score eng) {
        this.eng = eng;
    }

    public Score getMath() {
        return math;
    }

    public void setMath(Score math) {
        this.math = math;
    }

    public int getTotal() {
        total = kor.getScore() + eng.getScore() + math.getScore();
        return total;
    }

    public void setTotal(int total) {
        this.total = total;
    }

    public float getAvg() {
        avg = total / 3.f;
        return avg;
    }

    public void setAvg(float avg) {
        this.avg = avg;
    }

    @Override
    public String toString() {
        return "이름 : " + name.getName() + " 국어 : " + kor.getScore() + " 영어 : " + eng.getScore() + " 수학 : "
                + math.getScore() + " 총점 : " + this.getTotal() + " 평균 : " + this.getAvg() + "\n";
    }

}

public class Grade {
    static Scanner sc = new Scanner(System.in);
    public static Student[] s = new Student[50];
    public static int num = 0;

    public static void input() {
        s[num] = new Student(); // 생성자
        System.out.print("이름 : ");
        s[num].getName().setName(sc.next());
        System.out.print("국어 : ");
        s[num].getKor().setScore(sc.nextInt());
        System.out.print("영어 : ");
        s[num].getEng().setScore(sc.nextInt());
        System.out.print("수학 : ");
        s[num].getMath().setScore(sc.nextInt());
    }

    public static void output() {
        for (int i = 0; i < num; i++) {
            System.out.println("이름 : " + s[i].getName().getName());
            System.out.println("국어 : " + s[i].getKor().getScore());
            System.out.println("영어 : " + s[i].getEng().getScore());
            System.out.println("수학 : " + s[i].getMath().getScore());
            System.out.println("총점 : " + s[i].getTotal());
            System.out.println("평균 : " + s[i].getAvg());
            System.out.println("------------------");
        }

        System.out.println("정렬 - 점수 기준");
        Student tmp;
        for (int i = 0; i < num; i++) {
            for (int j = 0; j < num - 1; j++) {
                if (s[j].getTotal() < s[j + 1].getTotal()) {
                    tmp = s[j];
                    s[j] = s[j + 1];
                    s[j + 1] = tmp;
                }
            }
        }
        for (int i = 0; i < num; i++) {
            System.out.println(s[i]);
        }
    }

    public static void search() {
        System.out.print("검색  - 1.이름  2.성적 : ");
        int c = sc.nextInt();
        if (c == 1) {
            System.out.print("이름 검색 : ");
            String n = sc.next();
            for (int i = 0; i < num; i++) {
                if (s[i].getName().getName().equals(n)) {
                    System.out.println(s[i]);
                    break;
                }
            }
        } else if (c == 2) {
            System.out.print("성적 - 1.국어  2.영어  3.수학  4.총점  : ");
            int si = sc.nextInt();
            switch (si) {
            case 1: // 국어
                System.out.print("국어 검색 : ");
                int k = sc.nextInt();
                for (int i = 0; i < num; i++) {
                    if (s[i].getKor().getScore() == k) {
                        System.out.println(s[i]);
                    }
                }
                break;
            case 2: // 영어
                System.out.print("영어 검색 : ");
                int e = sc.nextInt();
                for (int i = 0; i < num; i++) {
                    if (s[i].getEng().getScore() == e) {
                        System.out.println(s[i]);
                    }
                }
                break;

            case 3: // 수학
                System.out.print("수학 검색 : ");
                int m = sc.nextInt();
                for (int i = 0; i < num; i++) {
                    if (s[i].getMath().getScore() == m) {
                        System.out.println(s[i]);
                    }
                }
                break;

            case 4:// 총점
                System.out.print("총점 검색 : ");
                int t = sc.nextInt();
                for (int i = 0; i < num; i++) {
                    if (s[i].getTotal() == t) {
                        System.out.println(s[i]);
                    }
                }
                break;
            }
        }
    }

    public static void fix() {
        System.out.print("수정 할 이름 입력 : ");
        String f = sc.next();
        for (int i = 0; i < num; i++) {
            if (s[i].getName().getName().equals(f)) {
                System.out.print("수정 - 1.국어  2.영어  3.수학 : ");
                int f2 = sc.nextInt();
                switch (f2) {
                case 1: // 국어
                    System.out.print("국어 : ");
                    s[i].getKor().setScore(sc.nextInt());
                    break;
                case 2: // 영어
                    System.out.print("영어 : ");
                    s[i].getEng().setScore(sc.nextInt());
                    break;
                case 3: // 수학
                    System.out.print("수학 : ");
                    s[i].getMath().setScore(sc.nextInt());
                    break;
                }
            }
        }
    }

    public static void delete() {
        if (num == 0) {
            System.out.println("삭제할 내역이 없습니다");
        } else {
            System.out.print("삭제 할 이름 검색 : ");
            String d = sc.next();
            for (int i = 0; i < num; i++) {
                if (s[i].getName().getName().equals(d)) {
                    for (int j = i; j < num; j++) {
                        s[j] = s[j + 1];
                    }
                    num--;
                    break;
                }
            }
        }
    }

    public static void main(String[] args) {
        while (true) {
            System.out.println("1.입력  2.출력  3.검색  4.수정  5.삭제  6.끝내기");
            System.out.print("선택 : ");
            int choose;
            choose = sc.nextInt();
            while (choose != 6) {
                switch (choose) {
                case 1: // 입력
                    input();
                    num++;
                    break;

                case 2: // 출력
                    output();
                    break;

                case 3: // 검색
                    search();
                    break;

                case 4: // 수정
                    fix();
                    break;

                case 5: // 삭제
                    delete();
                    break;

                case 6: // 끝내기
                    break;
                }
                break;
            }
        }
    }
}

'LANGUAGE > JAVA' 카테고리의 다른 글

[JAVA] CLASS - 클래스  (0) 2018.03.21
[JAVA] 문자열 계산기  (0) 2018.03.21
[JAVA] ARRAY - 배열  (0) 2018.03.20
[JAVA] THIS  (0) 2018.03.20
[JAVA] BASIC THINGS  (0) 2018.03.19
댓글