has a관계를 활용하여 저번에 만들었던 성적관리 프로그램을 계승해 봤다.
import java.util.Scanner;
class Name{//data Class : 독립적
private String name;
public Name() {}
public Name(String name) {this.name=name;}
//필드명에 바로접근하는건 안좋은 습관으로 getter와setter을 활용하는게 좋다.
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
class Subject{//data Class : 독립적 //
private int score;
public Subject() {}
public Subject(int score) {this.score=score;}
public int getScore() {
return score;
}
public void setScore(int score) {
this.score = score;
}
}
public class GradeManager { //data 관리클래스
private Name name;
private Subject kor,math,eng;// 과목 성적들을 기입한다
private float avg;
private int total;
public GradeManager() {
name=new Name();
kor=new Subject();
math=new Subject();
eng=new Subject();
}
public GradeManager(String name,int kor,int eng,int math) {
this.name=new Name(name);
this.kor=new Subject(kor);
this.eng=new Subject(eng);
this.math=new Subject(math);
total=this.getKor()+this.getEng()+this.getMath();
avg=total/3.f;
}
void setName(String name) {
this.name.setName(name);
}
public String getName() {
return name.getName();
}
public int getKor() {
return kor.getScore();
}
public void setKor(int kor) {
this.kor.setScore(kor);
}
public int getMath() {
return math.getScore();
}
public void setMath(int math) {
this.math.setScore(math);
}
public int getEng() {
return eng.getScore();
}
public void setEng(int eng) {
this.eng.setScore(eng);
}
public float getAvg() {
return avg=getTotal()/3.f; // == total/3.0f;
}
public void setAvg(float avg) {
this.avg = avg;
}
public int getTotal() {
return total=kor.getScore()+eng.getScore()+math.getScore();
}
}
import java.util.Scanner;
public class Studentes {
private GradeManager[ ] stu;
private int pos;
Studentes(int num){
pos=0;
stu=new GradeManager[num];
for(int i=0;i<stu.length;i++) {
stu[i]=new GradeManager(); //크기만 큼 개체 성적관리 클래스 개체생성
}
}
public void setStuInfo(String name,int kor,int eng,int math) { 성적 기입
stu[pos].setName(name);
stu[pos].setKor(kor);
stu[pos].setEng(eng);
stu[pos].setMath(math);
pos++;
}
public void disp() { //화면 출력
for(int i=0;i<pos;i++) {
System.out.print("이름: "+stu[i].getName()+"\t");
System.out.print("국어: "+stu[i].getKor()+"\t");
System.out.print("영어: "+stu[i].getEng()+"\t");
System.out.println("수학: "+stu[i].getMath()+"\t");
System.out.println("총점:"+stu[i].getTotal()+"\t"+"평균:"+stu[i].getAvg()+"\t" );
}
}
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int num;
System.out.println("몇명 성적관리하시겠습니까?");
num=sc.nextInt();
Studentes st=new Studentes(num);
for(int i=0;i<num;i++) {
System.out.println("이름입력");
String na=sc.next();
System.out.println("국어성적");
int kor=sc.nextInt();
System.out.println("영어성적");
int eng=sc.nextInt();
System.out.println("수학성적");
int math=sc.nextInt();
st.setStuInfo(na,kor,eng,math);
}
st.disp();
}
}'Java기초' 카테고리의 다른 글
| [Java] Interface and Inner Class (0) | 2022.07.05 |
|---|---|
| [Java]동적바인딩 정적바인딩 (0) | 2022.07.05 |
| [Java]클래스활용 성적관리프로그램(getter and setter)+has ~ a관계이해 (0) | 2022.06.28 |
| [Java] 성적처리 프로그램심화(array이해하기 (0) | 2022.06.24 |
| [Java] 2,3차원배열 For문활용 + foreach문 활용 실습 (0) | 2022.06.24 |
댓글