성적 처리
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 |