1. 예외처리 응용해서 과제 다시 풀기
<강좌 상세정보 출력 메소드>
* 예외를 안쓸 경우
null을 반환할 때 - 강좌객체 or null이 반환됨
-> control에서 course가 null이 아닐때 화면에 출력, else이면 "해당하는 강좌가 존재하지 않음" 출력
if(course != null) { } else { }
if( courseList.isEmpty() { } ) 이런식으로 따져줘야돼
예외를 발생시켜서 -> 예외를 일괄처리할거야
service에서 예외를 위임하면 -> 그 메소드를 호출한 측으로 던짐 -> 그 메소드를 호출한 control의 메소드 -> 이 메소드를 호출한 측으로 던짐 -> 메뉴() 메소드 에서 예외 일괄처리
오류가 발생할 것으로 예상되는 애들 = while문 내
예외가 발생하면 -> 자바가상머신까지 가면 프로그램이 종료되어버리니까
거기까지 가지 않도록 잡아야함(catch)
-> 어디서 잡냐 ? -> 일괄처리를 할 수 있는 곳(예외발생이 예상되는 곳)
<강좌별 수강신청 정보 조회하기 (수강신청 객체, 학생객체) >
서로 다른 타입의 객체를 다뤄야 할 때
(같은 타입의 객체를 저장 -> 리스트
다른 타입의 객체를 저장 -> 1) map 2) 또다른 객체를 만들어서 )
1) 또다른 객체를 만들기
public class CourseSummary { <--- 또 다른 객체
private Course course;
private List<Student> student;
}
public class getCourseSummary(String code) {
...
(Course와 List<student> 조회하기)
...
CourseSummary summary = new CourseSummary();
summary.setCourse(course);
summary.setStudent(student);
}
2) Map 이용 (또 객체를 만들 필요 없음)
Map<String, Object> map = service.getCourseSummary(code);
이렇게 해서 map.put을 통해 두 객체를 map에 넣고, 꺼내서 씀
-VO (Course)
public class Course {
private String code;
private String title;
private String dept;
private int grade;
private String professor;
private int quota;
private int reqCount;
public Course() {}
public Course(String code, String title, String dept, int grade, String professor, int quota) {
super();
this.code = code;
this.title = title;
this.dept = dept;
this.grade = grade;
this.professor = professor;
this.quota = quota;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getDept() {
return dept;
}
public void setDept(String dept) {
this.dept = dept;
}
public int getGrade() {
return grade;
}
public void setGrade(int grade) {
this.grade = grade;
}
public String getProfessor() {
return professor;
}
public void setProfessor(String professor) {
this.professor = professor;
}
public int getQuota() {
return quota;
}
public void setQuota(int quota) {
this.quota = quota;
}
public int getReqCount() {
return reqCount;
}
public void setReqCount(int reqCount) {
this.reqCount = reqCount;
}
@Override
public String toString() {
return "Course [code=" + code + ", title=" + title + ", dept=" + dept + ", grade=" + grade + ", professor="
+ professor + ", quota=" + quota + ", reqCount=" + reqCount + "]";
}
}
-VO(Student)
public class Student {
private String id;
private String name;
private String dept;
private int grade;
public Student() {}
public Student(String id, String name, String dept, int grade) {
super();
this.id = id;
this.name = name;
this.dept = dept;
this.grade = grade;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getDept() {
return dept;
}
public void setDept(String dept) {
this.dept = dept;
}
public int getGrade() {
return grade;
}
public void setGrade(int grade) {
this.grade = grade;
}
@Override
public String toString() {
return "Student [id=" + id + ", name=" + name + ", dept=" + dept + ", grade=" + grade + "]";
}
}
-VO(CourseRequest)
public class CourseRequest {
private int no;
private String code;
private String title;
private String dept;
private int grade;
private String professor;
private String id;
private String name;
private boolean isCanceled;
public CourseRequest() {}
public CourseRequest(int no, String code, String title, String dept, int grade, String professor, String id,
String name) {
super();
this.no = no;
this.code = code;
this.title = title;
this.dept = dept;
this.grade = grade;
this.professor = professor;
this.id = id;
this.name = name;
}
public int getNo() {
return no;
}
public void setNo(int no) {
this.no = no;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getDept() {
return dept;
}
public void setDept(String dept) {
this.dept = dept;
}
public int getGrade() {
return grade;
}
public void setGrade(int grade) {
this.grade = grade;
}
public String getProfessor() {
return professor;
}
public void setProfessor(String professor) {
this.professor = professor;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public boolean isCanceled() {
return isCanceled;
}
public void setCanceled(boolean isCanceled) {
this.isCanceled = isCanceled;
}
@Override
public String toString() {
return "CourseRequest [no=" + no + ", code=" + code + ", title=" + title + ", dept=" + dept + ", grade=" + grade
+ ", professor=" + professor + ", id=" + id + ", name=" + name + ", isCanceled=" + isCanceled + "]";
}
}
-SchoolException
public class SchoolException extends RuntimeException {
private static final long serialVersionUID = -4309126405868086271L;
public SchoolException(String message) {
super(message);
}
public SchoolException(Throwable cause) {
super(cause);
}
public SchoolException(String message, Throwable cause) {
super(message, cause);
}
}
-CourseRequestApp
import app.controller.CourseRequestController;
public class CourseRequestApp {
public static void main(String[] args) {
new CourseRequestController().실행();
}
}
-CourseController
import java.util.List;
import java.util.Map;
import app.exception.SchoolException;
import app.service.CourseRequestService;
import app.vo.Course;
import app.vo.CourseRequest;
import app.vo.Student;
import utils.KeyboardReader;
public class CourseRequestController {
private KeyboardReader keyboard = new KeyboardReader();
private CourseRequestService service = new CourseRequestService();
public void 실행() {
메뉴();
}
private void 메뉴() {
while(true) {
try {
System.out.println("-------------------------------------------------------------------------");
System.out.println("1.강좌등록 2.학생등록 3.모든강좌출력 4.강좌상세정보출력 ");
System.out.println("5.수강신청 6.수강취소 7.나의수강목록출력 8.강좌별현황출력 9.교수별현황출력 0.종료");
System.out.println("-------------------------------------------------------------------------");
System.out.println();
System.out.print("## 메뉴선택: ");
int menuNo = keyboard.getInt();
System.out.println();
switch(menuNo) {
case 1: 강좌등록(); break;
case 2: 학생등록(); break;
case 3: 모든강좌출력(); break;
case 4: 강좌상세정보출력(); break;
case 5: 수강신청(); break;
case 6: 수강취소(); break;
case 7: 나의수강목록출력(); break;
case 8: 강좌별수강신청현황출력(); break;
case 9: 교수별수강신청현황출력(); break;
case 0: System.exit(0);
}
} catch (SchoolException ex) {
System.out.println("### [오류] " + ex.getMessage());
} catch (Exception ex) {
System.out.println("### [오류] 알 수 없는 오류가 발생하였습니다.");
}
System.out.println();
System.out.println();
System.out.println();
}
}
private void 강좌등록() {
System.out.println("<< 신규 강좌 등록 >>");
System.out.println();
System.out.print("## 강좌코드 입력: ");
String code = keyboard.getString();
System.out.print("## 강좌제목 입력: ");
String title = keyboard.getString();
System.out.print("## 담당학과 입력: ");
String dept = keyboard.getString();
System.out.print("## 해당학년 입력: ");
int grade = keyboard.getInt();
System.out.print("## 담당교수 입력: ");
String professor = keyboard.getString();
System.out.print("## 모집정원 입력: ");
int quota = keyboard.getInt();
System.out.println();
Course course = new Course(code, title, dept, grade, professor, quota);
service.addCourse(course);
System.out.println("### [완료] 강좌가 등록되었습니다.");
}
private void 학생등록() {
System.out.println("<< 신규 학생 등록 >>");
System.out.println();
System.out.print("## 아이디 입력: ");
String id = keyboard.getString();
System.out.print("## 이름 입력: ");
String name = keyboard.getString();
System.out.print("## 학과 입력: ");
String dept = keyboard.getString();
System.out.print("## 학년 입력: ");
int grade = keyboard.getInt();
System.out.println();
Student student = new Student(id, name, dept, grade);
service.addStudent(student);
System.out.println("### [완료] 학생이 등록되었습니다.");
}
private void 모든강좌출력() {
System.out.println("<< 모든 강좌정보 출력 >>");
System.out.println();
List<Course> courses = service.getAllCourse();
System.out.println("코드\t제목\t\t담당교수\t정원\t신청자");
for (Course course : courses) {
System.out.print(course.getCode() + "\t");
System.out.print(course.getTitle() + "\t");
System.out.print(course.getProfessor() + "\t");
System.out.print(course.getQuota() + "\t");
System.out.println(course.getReqCount());
}
}
private void 강좌상세정보출력() {
System.out.println("<< 강좌 상세 정보 출력 >>");
System.out.println();
System.out.print("## 강좌코드 입력: ");
String code = keyboard.getString();
System.out.println();
Course course = service.getCourseDetail(code);
System.out.println("### 강좌 상세정보");
System.out.println("강좌코드 : " + course.getCode());
System.out.println("강좌제목 : " + course.getTitle());
System.out.println("담당학과 : " + course.getDept());
System.out.println("해당학년 : " + course.getGrade());
System.out.println("담당교수 : " + course.getProfessor());
System.out.println("모집정원 : " + course.getQuota() + "명");
System.out.println("신청자수 : " + course.getReqCount() + "명");
}
private void 수강신청() {
System.out.println("<< 수강 신청 >>");
System.out.println();
System.out.print("## 강좌코드 입력: ");
String code = keyboard.getString();
System.out.print("## 학생 아이디 입력: ");
String id = keyboard.getString();
service.addCourseRequest(code, id);
System.out.println("### [완료] 수강신청이 완료되었습니다.");
}
private void 수강취소() {
System.out.println("<< 수강 취소 >>");
System.out.println();
System.out.print("## 수강신청 순번 입력: ");
int no = keyboard.getInt();
service.cancelCourseRequest(no);
System.out.println("### [완료] 수강취소가 완료되었습니다.");
}
private void 나의수강목록출력() {
System.out.println("<< 나의 수강신청 목록 출력 >>");
System.out.println();
System.out.print("## 아이디 입력: ");
String id = keyboard.getString();
System.out.println();
List<CourseRequest> courseRequestList = service.getMyCourseRequestList(id);
if (courseRequestList.isEmpty()) {
throw new SchoolException("학생 아이디: " + id + ", 해당 학생이 수강신청한 과목이 존재하지 않습니다.");
}
System.out.println("순번\t코드\t제목\t\t학과\t담당교수\t취소여부");
for (CourseRequest courseRequest : courseRequestList) {
System.out.print(courseRequest.getNo() + "\t");
System.out.print(courseRequest.getCode() + "\t");
System.out.print(courseRequest.getTitle() + "\t");
System.out.print(courseRequest.getDept() + "\t");
System.out.print(courseRequest.getProfessor() + "\t");
System.out.println(courseRequest.isCanceled());
}
}
@SuppressWarnings("unchecked")
private void 강좌별수강신청현황출력() {
System.out.println("<< 강좌별 수강신청 현황 출력 >>");
System.out.println();
System.out.print("## 강좌코드 입력: ");
String code = keyboard.getString();
System.out.println();
Map<String, Object> map = service.getCourseSummary(code);
Course course = (Course) map.get("course");
List<Student> requestStudentList = (List<Student>) map.get("students");
System.out.println("### 강좌 상세정보");
System.out.println("강좌코드 : " + course.getCode());
System.out.println("강좌제목 : " + course.getTitle());
System.out.println("담당학과 : " + course.getDept());
System.out.println("해당학년 : " + course.getGrade());
System.out.println("담당교수 : " + course.getProfessor());
System.out.println("모집정원 : " + course.getQuota() + "명");
System.out.println("신청자수 : " + course.getReqCount() + "명");
System.out.println();
if (!requestStudentList.isEmpty()) {
System.out.println("### 수강 신청 학생 목록");
System.out.println("아이디\t이름\t학과\t학년");
for (Student student : requestStudentList) {
System.out.print(student.getId() + "\t");
System.out.print(student.getName() + "\t");
System.out.print(student.getDept() + "\t");
System.out.println(student.getGrade());
}
}
}
@SuppressWarnings("unchecked")
private void 교수별수강신청현황출력() {
System.out.println("<< 교수별 수강신청 현황 출력 >>");
System.out.println();
System.out.print("## 교수이름 입력: ");
String professor = keyboard.getString();
System.out.println();
List<Map<String, Object>> result = service.getProfessorSummary(professor);
for (Map<String, Object> map : result) {
Course course = (Course) map.get("course");
System.out.println("### 강좌 상세정보");
System.out.println("강좌코드 : " + course.getCode());
System.out.println("강좌제목 : " + course.getTitle());
System.out.println("담당학과 : " + course.getDept());
System.out.println("해당학년 : " + course.getGrade());
System.out.println("담당교수 : " + course.getProfessor());
System.out.println("모집정원 : " + course.getQuota() + "명");
System.out.println("신청자수 : " + course.getReqCount() + "명");
System.out.println();
List<Student> requestStudentList = (List<Student>) map.get("students");
if (!requestStudentList.isEmpty()) {
System.out.println("### 수강 신청 학생 목록");
System.out.println("아이디\t이름\t학과\t학년");
for (Student student : requestStudentList) {
System.out.print(student.getId() + "\t");
System.out.print(student.getName() + "\t");
System.out.print(student.getDept() + "\t");
System.out.println(student.getGrade());
}
}
System.out.println();
System.out.println();
}
}
}
-CourseService
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.atomic.AtomicInteger;
import app.exception.SchoolException;
import app.vo.Course;
import app.vo.CourseRequest;
import app.vo.Student;
public class CourseRequestService {
private List<Course> courseList = new ArrayList<>();
private List<Student> studentList = new ArrayList<>();
private List<CourseRequest> courseRequestList = new ArrayList<>();
private AtomicInteger atom = new AtomicInteger(1001);
public CourseRequestService() {
addCourse(new Course("C_001", "컴퓨터 일반", "컴공", 1, "이교수", 10));
addCourse(new Course("C_002", "프로그램 기초", "컴공", 1, "이교수", 10));
addCourse(new Course("C_003", "프로그램 응용", "컴공", 1, "이교수", 10));
addCourse(new Course("C_004", "데이터베이스", "컴공", 1, "김교수", 10));
addCourse(new Course("C_005", "동역학 기초", "기계", 1, "최교수", 10));
addCourse(new Course("C_006", "정역학 기초", "기계", 1, "홍교수", 10));
addCourse(new Course("C_007", "열역학 기초", "기계", 1, "정교수", 10));
addStudent(new Student("hong", "홍길동", "컴공", 1));
addStudent(new Student("kim", "김유신", "컴공", 1));
addStudent(new Student("kang", "강감찬", "기계", 1));
addStudent(new Student("ahn", "안중금", "기계", 1));
addStudent(new Student("ryu", "류관순", "기계", 1));
}
/*
* 과정등록 시나리오
* 1. 신규 강좌정보(Course 객체)를 전달받는다.
* 2. 신규 강좌코드와 같은 코드로 등록된 강좌가 존재하면 예외를 발생시킨다.
* 3. 같은 코드가 존재하지 않으면 신규 강좌정보를 ArrayList에 추가한다.
*/
public void addCourse(Course course) {
for (Course savedCourse : courseList) {
String savedCourseCode = savedCourse.getCode();
String code = course.getCode();
// 같은 코드가 존재하면 예외를 발생시킨다.
if (savedCourseCode.equals(code)) {
throw new SchoolException("강좌코드 중복: " + code + ", 동일한 강좌코드가 이미 등록되어 있습니다.");
}
}
courseList.add(course);
}
/*
* 학생등록 시나리오
* 1. 신규 학생정보(Student객체)를 전달받는다.
* 2. 신규 학생의 아이디와 같은 아이디로 등록된 학생정보가 존재하면 예외를 발생시킨다.
* 3. 같은 아이디가 존재하지 않으면 신규 학생정보를 ArrayList에 추가한ㄷ.
*/
public void addStudent(Student student) {
for (Student savedStudent : studentList) {
String savedId = savedStudent.getId();
String id = student.getId();
// 동일한 아이디가 존재하면 예외를 발생시킨다.
if (savedId.equals(id)) {
throw new SchoolException("학생 아이디 중보: " + id + ", 동일한 아이디의 학생정보가 이미 등록되어 있습니다.");
}
}
studentList.add(student);
}
/*
* 모든 개설 강좌정보를 제공하는 시나리오
* 1. 강좌정보가 저장된 ArrayList객체를 참조하는 참조변수의 주소값을 반환한다.
*
*/
public List<Course> getAllCourse() {
return courseList;
}
/*
* 강좌 상세정보를 제공하는 시나리오
* 1. 조회할 강좌코드를 전달받는다.
* 2. 강좌 list의 모든 강좌정보의 코드와 전달받은 코드를 비교한다.
* 3. 같은 코드가 존재하면, 해당 강좌정보를 반환한다.
* 4. 동일한 코드가 존재하지 않으면, 예외를 발생시킨다.
*/
public Course getCourseDetail(String code) {
for (Course savedCourse : courseList) {
// 조회할 강좌코드와 저장된 강좌코드가 일치하면 해당 강좌정보를 반환하고 메소드 종료
if (savedCourse.getCode().equals(code)) {
return savedCourse;
}
}
// 입력한 코드와 같은 코드가 존재하지 않으면 예외를 발생시킨다.
throw new SchoolException("강좌코드: " + code + ", 강좌정보가 존재하지 않습니다.");
}
/*
*수강신청 시나리오
* 1. 강좌코드와 학생아이디를 전달받는다.
* 2. 강좌코드로 해당하는 강좌정보를 조회한다.
* 3. 학생코드로 해당하는 학생정보를 조회한다.
* 4. 해당강좌의 모집정원과 신청자수가 동일하면 예외를 발생시킨다.
* 5. 해당강좌를 이미 수강신청했으면 예외를 발생시킨다.
* 6. 수강신청정보를 저장하는 CourseRequest객체를 생성한다.
* 7. 2번, 3번에서 획득한 강좌정보와 학생정보에서 필요한 정보를 가져와서 생성된 CourseRequest객체에 저장한다.
* 8. 수강신청정보가 저장된 CourseRequest객체를 ArrayList에 저장한다.
* 9. 1번에서 획득한 강좌저오의 신청자수를 1 증가시킨다.
*/
public void addCourseRequest(String code, String id) {
Course course = getCourseDetail(code);
Student student = getStudentDetail(id); //아래에 추출된 메소드 있음
if (course.getQuota() == course.getReqCount()) {
throw new SchoolException("정원 초과: " + code + ", 이 강좌는 모집이 완료되었습니다.");
}
if (isAlreadyCourseRequest(code, id)) { //아래에 추출된 메소드 있음
throw new SchoolException("수강신청 중복: " + code + ", " + id + ", 이미 신청한 강좌입니다.");
}
CourseRequest courseRequest = new CourseRequest();
courseRequest.setNo(atom.getAndIncrement());
courseRequest.setCode(course.getCode());
courseRequest.setTitle(course.getTitle());
courseRequest.setDept(course.getDept());
courseRequest.setGrade(course.getGrade());
courseRequest.setProfessor(course.getProfessor());
courseRequest.setId(student.getId());
courseRequest.setName(student.getName());
courseRequestList.add(courseRequest);
course.setReqCount(course.getReqCount() + 1);
}
/*
* 수강취소 시나리오
* 1. 수강신청 순번을 전달받는다.
* 2. 해당 수강신청 순번으로 수강신청정보가 존재하는지 확인하고, 존재하지 않으면 예외를 발생시킨다.
* 3. 수강신청 순번에 해당하는 수강신청정보를 조회한다.
* 4. 수강신청정보의 취소여부가 이미 true로 설정되어 있으면 예외를 발생시킨다.
* 5. 수강신청정보의 취소여부를 true로 변경한다.
* 6. 수강신청정보의 강좌코드로 강좌정보를 조회한다.
* 7. 강좌정보의 신청자수를 1 감소시킨다.
*/
public void cancelCourseRequest(int no) {
if (!isExistCourseRequest(no)) { // if의 조건문이 true일때 실행하는데, false여야 ! 붙여서 true가 됨
throw new SchoolException("수강신청 순번: " + no + ", 수강신청 정보가 존재하지 않습니다.");
}
CourseRequest courseRequest = getCourseRequest(no);
if (courseRequest.isCanceled()) {
throw new SchoolException("수강신청 순번: " + no + ", 이미 수강취소 처리된 강좌입니다.");
}
courseRequest.setCanceled(true);
Course course = getCourseDetail(courseRequest.getCode());
course.setReqCount(course.getReqCount() - 1);
}
/*
* 내가 수강신청한 강좌 조회하기 시나리오
* 1. 학생아이디를 전달받는다.
* 2. 수강신청정보를 저장한 ArrayList객체를 생성한다.
* 3. 수강신청리스트에서 수강신청정보 중에서 학생아이디가 일치하는 정보를 찾아서 2번에서 생성한 list객체에 저장한다.
* 4. 조회된 수강신청 정보를 반환한다.
*/
public List<CourseRequest> getMyCourseRequestList(String id) {
List<CourseRequest> myCourseRequestList = new ArrayList<>();
for (CourseRequest courseRequest : courseRequestList) {
if (courseRequest.getId().equals(id)) {
myCourseRequestList.add(courseRequest);
}
}
return myCourseRequestList;
}
/*
* 강좌별 수강신청 정보 조회하기 시나리오
* 1. 강좌코드를 전달받는다.
* 2. 강좌정보와 수강신청학생정보를 저장할 Map객체를 생성한다.
* 3. 전달받은 강좌코드의 강좌정보를 조횐하고, Map객체에 저장한다.
* 4. 해당 강좌에 수강신청한 학생정보를 여러개 저장할 수 있는 ArrayList객체를 생성한다.
* 5. 수강신청정보 목록에서 수강신청정보를 하나씩 가져온다.
* 5-1. 저장된 수강신청정보의 강좌코드를 조회한다.
* 5-2. 저장된 수강신청정보가 신청취소 상태가 아니고, 저장된 수강신청정보의 강좌코드와 전달받은 강좌코드가 일치하는지 확인한다.
* 5-3. 저장된 수강신청정보에서 학생 아이디를 조회한다.
* 5-4. 학생 아이디로 학생정보를 조회한다.
* 5-5. 조회된 학생정보를 4번에서 생성한 ArrayList객체에 저장한다.
* 6. 4번에서 생성한 ArrayList객체를 Map에 저장한다.
*/
public Map<String, Object> getCourseSummary(String code) {
// 코드에 해당하는 강좌를 찾는다
Course course = getCourseDetail(code);
// 수강신청한 학생리스트를 담을 학생리스트를 새로 만들고
List<Student> requestStudentList = new ArrayList<>();
// 수강신청리스트에서 수강신청 객체를 하나 뽑아서
for (CourseRequest savedCourseRequest : courseRequestList) {
// 리스트중에서 뽑은 수강신청객체의 코드를 변수에 저장
String savedCourseCode = savedCourseRequest.getCode();
// 수강신청객체가 취소된 강좌가 아니고 + 수강신청객체의 코드가 입력한 코드와 일치하면
if (!savedCourseRequest.isCanceled() && savedCourseCode.equals(code)) {
// 이 수강신청객체의 아이디로 해당하는 학생객체를 찾아서 새로 만든 수강신청한 학생리스트에 추가
String requestStudentId = savedCourseRequest.getId();
Student student = getStudentDetail(requestStudentId);
requestStudentList.add(student);
}
}
// 맵의 course 키의 값으로 course 객체를 넣는다. 이 완성된 학생리스트를 맵의 students 키의 값으로 넣는다.
Map<String, Object> map = new HashMap<>();
map.put("course", course);
map.put("students", requestStudentList);
return map;
}
/*
* 교수별 개설강좌에 대한 수강신청 조회하기 시나리오
* 1. 교수이름을 전달받는다.
* 2. 강좌목록에서 해당 교수가 개설한 강좌를 검색한다. (한 교수의 강좌가 여러개 일 수 있음)
* 3. 강좌의 강좌코드를 조회한다.
* 4. 강좌코드로 강좌별 수강신청정보(Map<String, Object>)을 조회한다.
* 5. 조회된 강좌별 수강신청정보(Map<String, Object>)을 List<Map<String, Object>> 객체에 추가한다.
*/
public List<Map<String, Object>> getProfessorSummary(String professor) {
List<Map<String, Object>> result = new ArrayList<>(); // Map<String,Object>가 여러개
// 강좌리스트에서 강좌객체를 뽑아서,
for (Course course : courseList) {
// 강좌객체에 있는 교수랑 입력한 교수가 같으면 해당 교수가 개설한 강좌
if (course.getProfessor().equals(professor)) {
// 해당 교수가 개설한 강좌의 코드 조회
String code = course.getCode();
// 위에서 구현한 강좌 코드를 전달해서 강좌별 수강신청 정보를 조회하는 메소드 실행(Map<String,Object>)
// 강좌정보, 해당 강좌를 신청한 학생리스트가 저장된 Map객체가 획득
Map<String, Object> courseSummary = getCourseSummary(code);
result.add(courseSummary);
}
}
return result;
}
private Student getStudentDetail(String id) {
for (Student student : studentList) {
if (student.getId().equals(id)) {
return student;
}
}
throw new SchoolException("학생아이디: " + id + ", 학생정보가 존재하지 않습니다.");
}
private boolean isAlreadyCourseRequest(String code, String id) {
for (CourseRequest courseRequest : courseRequestList) {
if (courseRequest.getCode().equals(code) && courseRequest.getId().equals(id)) {
return true;
}
}
return false;
}
private CourseRequest getCourseRequest(int no) {
for (CourseRequest courseRequest : courseRequestList) {
if (courseRequest.getNo() == no) {
return courseRequest;
}
}
return null;
}
private boolean isExistCourseRequest(int no) {
for (CourseRequest courseRequest : courseRequestList) {
if (courseRequest.getNo() == no) {
return true;
}
}
return false;
}
}
1. 강좌등록
2. 학생등록
3. 모든강좌출력
4. 강좌상세정보출력
5.수강신청, 6.수강취소, 7.나의수강목록
8.강좌별현황출력
9.교수별현황
'수업내용 > Java' 카테고리의 다른 글
[2022.11.08.화] JSP 내장객체, JSP 요청객체 (0) | 2022.11.08 |
---|---|
[2022.10.11.화] 예외처리 활용 (0) | 2022.10.11 |
[2022.10.07.금] 예외처리 (0) | 2022.10.07 |
[2022.10.06.목] List 실습, Map<K, V> 인터페이스 (0) | 2022.10.06 |
[2022.10.05.수] 콜렉션(List<E>) (0) | 2022.10.05 |