Java
[IT국비지원교육_코딩_비전공자] HTML / Repository / SVN 백업 / 원격데스크톱 commit & update
coolcode
2022. 1. 24. 21:46
기능을 담당하는 서비스 클래스를 생성하여 학생 성적관리 콘솔 앱에 필요한 메서드를 만들었다
기본적으로 학생 목록을 출력하는 조회 메서드는 Student 객체로 list를 만들어주는
ArrayList 자료형을 사용했고 출력시에는 list의 size를 조건으로 하여 출력했다
그밖의 기본 CRUD에 해당하는 학생 등록과, 정보 수정, 삭제 기능을 하는 메서드도 추가 작업하였다
studentservice
package service;
import static student.StudentUtill.*;
import java.util.ArrayList;
import java.util.List;
import app.StudentEx;
import domain.Student;
// 01/17 : student 필드 정의, main 메서드 메뉴 정리
// 01/18 : 생성자 작성, 조회기능, 등록기능 구현
// 01/19 : toString 정의, 수정기능 구현
// 01/20 : package 분리, 모든 필드에 private 적용 (필요하다면 getter/setter제작 사용), 삭제 기능 구현
// Student : domain에 존재
// StudentEx : app에 존재
// StudentService : service에 존재
// StudentUtil : utils에 존재
// Object(this)toString
// 기능 담당 클래스
public class StudentService {
// Student[] students = new Student[10]; //학생들
List<Student>students = new ArrayList<Student>();
private int cnt;
{
String[]names = {"김경보", "김동엽", "김상현", "김승종", "김예찬", "김치형", "김태윤"};
for(int i = 0 ; i < names.length ; i++) {
students.add(new Student(220000 + cnt + 1 + "", names[cnt], getScore(),getScore(),getScore()));
}
System.out.println("임시 데이터 초기화 완료");
}
int getScore() {
return (int)(Math.random() * 41) + 60;
}
// >> student 자체가 참조형 타입 + 배열[] 또한 참조형 => student[]참조형+참조형
//==============================================================================
// students >> 하기 기능에서 다뤄야할 데이터
// 1. 조회하기
public void list() {
// 조회 기능 구현 (students안에 데이터가 있다는 것을 가정 하)
System.out.println("학번 이름 국어 영어 수학 총점 평균\r\n" +
"=================================================================");
for(int i = 0 ; i < students.size() ; i++) {
System.out.println(students.get(i));
}
}
// 2. 등록하기
public void register() {
// 등록 기능 구현
// 1. 데이터 입력받기
// 2. 입력 받은 데이터를 학생 타입의 인스턴스 생성
// 3. students 배열의 cnt 위치에 대입 후 cnt 1 증가
int students.add(null) = new Student(nextLine("학번 >"), nextLine("이름 >"),
nextInt("국어 >"), nextInt("영어 >"), nextInt("수학 >"));
}
// 3. 수정하기
public void modify() {
Student student = findBy(nextLine("수정할 학생의 학번 > "));
if(student == null) {
System.out.println("존재하지 않는 학번입니다");
return;
}
student.setName(nextLine("이름 >"));
student.setName(nextLine("국어 >"));
student.setName(nextLine("영어 >"));
student.setName(nextLine("수학 >"));
}
// 4. 삭제하기
public void remove() {
int idx = findIndexBy(nextLine("삭제할 학생의 학번 >"));
if (idx == -1) {
return;
}
System.arraycopy(students, idx+1 , students, idx, cnt-- - idx + 1);
}
// System.out.println("존재하지 않는 학번입니다");
// students.remove((findBy(nextLine("수정할 학생의 학번 > ")))
//학번을 입력받아 해당 학생의 내용을 삭제
//[1,null,3,4,5] >> 5-2?=3
//[1,2,null,4,5] >> 5-3?=2
private Student findBy(String no) {
int idx = findIndexBy(no);
if(idx == -1) {
return null;
}
return students[idx];
}
private int findIndexBy(String no) {
int ret = -1;
for(int i = 0; i < students.size() ; i++) {
if(students.get(i).getNo().equals(no)) {
ret = i;
break;
}
}
return ret;
}
}
// Student[] >> Student
// String[] >> String
// service.students[0] // >> service.students[0] 의 타입은 Students
// service.students[0] = new Student("220002","고길동", "80", "90", "50");
// System.out.println(service.students[0]); // > 출력하면 null값이 나온다
// 이름 - 타입 - 생성자(소속)
//
// 메인 메서드는 어떤 클래스 위치에서도 만들 수 있음
// 생성자 사용목적 > 인스턴스 변수값을 초기화 하기 위해
// 인스턴스변수를 만들기 위해서는 인스턴스를 만들어야 한다
// new 연산자를 사용해서 인스턴스를 생성한다
// 초기화방법 > 생성자를 사용한다
// 인스턴스 메서드이기때문에 인스턴스 변수에 대한 접근 제한이 없을것
// 각 필드값에 대한 접근