일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 반복문
- IF else
- 배열 array
- 유효성 검사
- switch-case
- 변수
- Scanner
- 삼항(조건) 연산자
- DropDown
- Math 함수
- 가위바위보 게임
- Do while
- count_program
- 논리 연산자
- 업다운 게임
- 간단한 연산
- 변수 기본형
- 형변환 연산자
- 접근제한자
- var 변수
- Style Sheet
- SQLIntegrityConstraintViolationException
- 할당 연산자
- 문자열 비교
- 표 구현
- 컬렉션프레임워크
- color code
- decimalformat
- 관계 연산자
- 객체 배열
Archives
- Today
- Total
무룩 공부방
[Java02] 추상 클래스 응용 (2) (Abstract Class) (Eclipse) 본문
IT/Java02_Intermediate
[Java02] 추상 클래스 응용 (2) (Abstract Class) (Eclipse)
moo_look 2023. 10. 7. 20:55# 성적처리 프로그램을 추상 클래스로 설계하여 코드를 수정하라
<AbsStudent>
package java02_intermediate.Abstract;
public class AbsStudent {
private int num;
private String name;
private int kor;
private int eng;
private int mat;
private int tot;
private double avg;
private String hak;
private int rank;
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
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 getMat() {
return mat;
}
public void setMat(int mat) {
this.mat = mat;
}
public int getTot() {
return tot;
}
public void setTot(int tot) {
this.tot = tot;
}
public double getAvg() {
return avg;
}
public void setAvg(double avg) {
this.avg = avg;
}
public String getHak() {
return hak;
}
public void setHak(String hak) {
this.hak = hak;
}
public int getRank() {
return rank;
}
public void setRank(int rank) {
this.rank = rank;
}
}
<AbsStudentMain>
package java02_intermediate.Abstract;
import java.util.Scanner;
public class AbsStudentMain {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
AbsStudentMethodImpl sm = new AbsStudentMethodImpl();
boolean chk = true;
while(chk) {
System.out.println("작업선택");
System.out.print("[1]입력 [2]출력 [3]검색 [4]삭제 [5]수정 [6]종료 >> ");
int menu = sc.nextInt();
switch(menu) {
case 1 :
sm.insert();
break;
case 2 :
sm.srcPrint();
sm.disPlayPrint();
break;
case 3 :
System.out.print("검색하고자 하는 번호 입력 >> ");
int num = sc.nextInt();
String searchCheck = sm.search(num);
System.out.println(searchCheck);
break;
case 4 :
System.out.print("삭제하고자 하는 번호 입력 >> ");
num = sc.nextInt();
boolean boolCheck = sm.delete(num);
if(boolCheck == true) System.out.println("[레코드 삭제완료!]");
else System.out.println("[삭제하고자 하는 레코드 없음.]");
break;
case 5 :
System.out.print("수정하고자 하는 번호 입력 >> ");
num = sc.nextInt();
int updateCheck = sm.update(num);
if(updateCheck == 1) {
System.out.println("수정되었습니다!");
}
else {
System.out.println("[수정하고자 하는 레코드 없음.]");
}
break;
case 6 :
chk = false;
System.out.println("프로그램 종료");
break;
}
}
sc.close();
}
}
<AbsStudentMethod>
package java02_intermediate.Abstract;
public abstract class AbsStudentMethod {
abstract public void srcPrint(); // 타이틀 출력
abstract public void insert(); // 입력
abstract public void totAvgHakPro(int lastStu); // 총점
abstract public void totAvgHakPro(); // 총점
abstract public void rankPro(); // 등수
abstract public void disPlayPrint(); // 레코드 출력
abstract public String search(int num); // 검색
abstract public boolean delete(int num); // 삭제
abstract public int update(int num); // 수정
}
<AbsStudentMethodImpl extends AbsStudentMethod>
package java02_intermediate.Abstract;
import java.util.ArrayList;
import java.util.Scanner;
public class AbsStudentMethodImpl extends AbsStudentMethod {
Scanner sc = new Scanner(System.in);
ArrayList<AbsStudent> list = new ArrayList<AbsStudent>();
@Override
public void srcPrint() {
System.out.println("\t\t성적표");
System.out.println("번호\t이름\t국어\t영어\t수학\t총점\t평균\t학점\t등수");
}
@Override
public void insert() {
// 입력받아서 가변배열에 객체를 저장
System.out.print("번호 이름 국어 영어 수학 입력 >> ");
int num = sc.nextInt();
String name = sc.next();
int kor = sc.nextInt();
int eng = sc.nextInt();
int mat = sc.nextInt();
AbsStudent stu = new AbsStudent();
stu.setNum(num);
stu.setName(name);
stu.setKor(kor);
stu.setEng(eng);
stu.setMat(mat);
list.add(stu);
int lastStu = list.lastIndexOf(stu);
totAvgHakPro(lastStu);
rankPro();
}
@Override
public void totAvgHakPro() { // 오버로딩 가능
// TODO Auto-generated method stub
}
@Override
public void totAvgHakPro(int lastStu) {
int tot = list.get(lastStu).getKor() + list.get(lastStu).getEng() + list.get(lastStu).getMat();
double avg = tot / 3.;
list.get(lastStu).setTot(tot);
list.get(lastStu).setAvg(avg);
if(list.get(lastStu).getAvg() >= 90) list.get(lastStu).setHak("A");
else if(list.get(lastStu).getAvg() >= 80) list.get(lastStu).setHak("B");
else if(list.get(lastStu).getAvg() >= 70) list.get(lastStu).setHak("C");
else if(list.get(lastStu).getAvg() >= 60) list.get(lastStu).setHak("D");
else list.get(lastStu).setHak("재시험");
}
// 등수구하기
@Override
public void rankPro() {
for(int i = 0; i < list.size(); i++) {
list.get(i).setRank(1);
int count = 1;
for(int j = 0; j < list.size(); j++) {
if(list.get(i).getTot() < list.get(j).getTot()) {
list.get(i).setRank(++count); // 증가후 저장
}
}
}
}
@Override
public void disPlayPrint() {
for(int i = 0; i < list.size(); i++) {
System.out.print(list.get(i).getNum()+"\t");
System.out.print(list.get(i).getName()+"\t");
System.out.print(list.get(i).getKor()+"\t");
System.out.print(list.get(i).getEng()+"\t");
System.out.print(list.get(i).getMat()+"\t");
System.out.print(list.get(i).getTot()+"\t");
System.out.print(list.get(i).getAvg()+"\t");
System.out.print(list.get(i).getHak()+"\t");
System.out.print(list.get(i).getRank()+"\n");
}
}
@Override
public String search(int numBun) {
for(int i = 0; i < list.size(); i++) {
if(numBun == list.get(i).getNum()) {
srcPrint();
int num = list.get(i).getNum();
String name = list.get(i).getName();
int kor = list.get(i).getKor();
int eng = list.get(i).getEng();
int mat = list.get(i).getMat();
int tot = list.get(i).getTot();
double avg = list.get(i).getAvg();
String hak = list.get(i).getHak();
int rank = list.get(i).getRank();
System.out.println(num+"\t"+name+"\t"+kor+"\t"+eng+"\t"+mat+"\t"+tot+"\t"+avg+"\t"+hak+"\t"+rank);
return "[검색완료!]";
}
}
return "[일치하는 번호가 없습니다.]";
}
@Override
public boolean delete(int numBun) {
for(int i = 0; i < list.size(); i++) {
if(numBun == list.get(i).getNum()) {
list.remove(i); //remove() 삭제하는 메서드
// 삭제를 하면 뒤에 있는 객체들이 앞으로 자동으로 옮겨짐
rankPro();
return true;
}
}
return false;
}
@Override
public int update(int numBun) {
for(int i = 0; i < list.size(); i++) {
if(numBun == list.get(i).getNum()) {
System.out.print("수정할 "+numBun+"번 이름 국어 영어 수학 입력 >> ");
String name = sc.next();
int kor = sc.nextInt();
int eng = sc.nextInt();
int mat = sc.nextInt();
list.get(i).setName(name);
list.get(i).setKor(kor);
list.get(i).setEng(eng);
list.get(i).setMat(mat);
totAvgHakPro(i);
rankPro();
return 1;
}
}
return 2;
}
}
'IT > Java02_Intermediate' 카테고리의 다른 글
[Java02] 27. 인터페이스 (2) (Interface) (Eclipse) (0) | 2023.10.08 |
---|---|
[Java02] 26. 인터페이스 (Interface) (Eclipse) (2) | 2023.10.08 |
[Java02] 25. 추상 클래스 응용 (1) (Abstract Class) (Eclipse) (0) | 2023.10.07 |
[Java02] 24. 추상 클래스(Abstract Class) (Eclipse) (0) | 2023.10.07 |
[Java02] 23. 오버라이딩(Overriding) (Eclipse) (0) | 2023.10.07 |