본문 바로가기
Programming/JAVA

[JAVA] 성적 처리

성적 처리






package Test2;

import java.util.Scanner;
 
class Name{
    //학생 이름 정보
    Name(){}
    private String name;
 
    public String getName() {return name;}
    public void setName(String name) {this.name = name;}
}
class Score{
    //국영수 점수
    Score(){}
    private int kor,eng,math;
 
    public int getKor() {return kor;}
    public void setKor(int kor) {this.kor = kor;}
 
    public int getEng() {return eng;}
    public void setEng(int eng) {this.eng = eng;}
 
    public int getMath() {return math;}
    public void setMath(int math) {this.math = math;}
}
class Student{
    //has - a, Name,Score 클래스를 가지고 있어야 함
    Name name;
    Score score;
    int total;
    double avg;
    Student(){
        name = new Name();
        score = new Score();
    }
    //합계, 평균
    int getSum() {
        total = score.getKor() + score.getEng() + score.getMath();
        return total;
    }
    double getAvg() {
        avg = total / 3.0
        return avg;
    }
    
    @Override    //toString 오버라이드 해줘서 전체 출력
    public String toString() {
        return "이름: "+name.getName()+
                "국어: "+score.getKor()+
                "영어: "+score.getEng()+
                "수학: "+score.getMath()+
                "총점: "+this.getSum()+
                "평균: "+this.getAvg()+"\n";
    }
     
    /* toStirng으로 배운것 써먹자
     * public String printAll() {
        return "이름: "+name.getName()+
                "국어: "+score.getKor()+
                "영어: "+score.getEng()+
                "수학: "+score.getMath()+
                "총점: "+this.getSum()+
                "평균: "+this.getAvg()+"\n";
    }*/
 
}
 
 
 
public class Grades {
    public static void main(String[] args) {
        //1.입력  2.출력  3.검색  4.수정  5.삭제
        int i=0;
        int num=0;
        int j;
        int move;
        String search;
        Student[] student = new Student[50];//Student 배열 선언
        Scanner scanner = new Scanner(System.in);
        /*for(int k=0; k<student.length; k++) {
            student[k] = new Student();
        } 객체를 왜 전체 안만드는지 */
        while(num != 6) {
            System.out.println("1.입력  2.출력  3.검색  4.수정  5.삭제  6.종료");
            num = scanner.nextInt();
            switch(num) {
            case 1:
                student[i] = new Student();    //객체 생성
                System.out.println("이름 입력 : " );
                student[i].name.setName(scanner.next());    //입력
                System.out.println("국어점수 입력 : " );
                student[i].score.setKor(scanner.nextInt());
                System.out.println("영어점수 입력 : " );
                student[i].score.setEng(scanner.nextInt());
                System.out.println("수학점수 입력 : " );
                student[i].score.setMath(scanner.nextInt());
                i++;//다음 배열 칸으로 넘어가기 위해
                break;
            case 2:
                /*for(int j=0; j<student.length; j++) {
                    System.out.println(student[j].printAll());
                }객체를 다 생성 하고 실행시  -> string: null, int : 0/ */
                Student temp;
                
                for (int k = 0; k < i-1; k++) {
                    for (int k2 = 0; k2 < i-1; k2++) {
                        if (student[k2].getSum() < student[k2+1].getSum()) {
                            temp = student[k2];
                            student[k2] = student[k2+1];
                            student[k2+1= temp;
                        }
                    }
                }
                for (int t = 0; t < i; t++) {
                    System.out.println(student[t].toString());
                }
                break;
            case 3:
                System.out.println("검색할 사람 : ");
                search = scanner.next();
                for ( j = 0; j < i; j++) {
                    if(student[j].name.getName().equals(search)) {
                        break//
                    }
                }
                System.out.println(student[j].toString());
                break;                                                
            case 4:
                System.out.println("수정 할 사람 : ");
                search = scanner.next();
                for ( j = 0; j < i; j++) {
                    if(student[j].name.getName().equals(search)) {
                        break;
                    }
                }
                System.out.println("수정 할 과목 : 1.국어 2.영어 3.수학 : ");
                int subjectSujung = scanner.nextInt();
                if(subjectSujung==1) {
                    System.out.println("국어 점수 수정 : ");
                    student[j].score.setKor(scanner.nextInt());
                }else if(subjectSujung==2) {
                    System.out.println("영어 점수 수정 : ");
                    student[j].score.setEng(scanner.nextInt());
                }else if(subjectSujung==3){
                    System.out.println("수학 점수 수정");
                    student[j].score.setMath(scanner.nextInt());
                }else {
                    System.out.println("잘못된 입력");
                }
                break;
            case 5:
                System.out.println("삭제 할 대상 : ");
                search = scanner.next();
                for (j = 0; j < i; j++) {
                
                    if(student[j].name.getName().equals(search)) {
                        break;    
                    }
                }
                
                for(move = j; move<i; move++) {
                    student[move] = student[move+1];
                }
                student[i-1= null;
                i--;    //널 나오지 않게
                break;
            case 6:
                System.out.println("종료");
                break;
            }
        }
 
    }
}


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

[JAVA] 경로  (1) 2018.04.15
[JAVA] 이칙(+,-) 계산기  (0) 2018.04.15
[JAVA] Wrapper Class  (0) 2018.04.14
[JAVA] 쓰레드(Thread)  (12) 2018.03.25
[JAVA] 데이터 타입 분류  (7) 2018.03.21