// 수강생의 과목별 회차 점수 수정
public static void updateRoundScoreBySubject() {
String studentId = getInputStudentId();
//for문 학생숫자 50회 돌아감
for (int i = 0; i < CampManagementApp.scoreStore.size(); i++) {
Score bigScore = CampManagementApp.scoreStore.get(i);
//studentId 일치하는 학생 찾음 (50 개)
if (bigScore.getStudentId().equals(studentId)) {
String subjectId = getInputSubjectId();
//그중에 입력한 과목 id가 있는지 확인 없으면 안듣는거
//듣는다면 회차수 10개 만큼 나옴
if (bigScore.getSubjectId().equals(subjectId)) {
System.out.println("회차입력");
Scanner sc2 = new Scanner(System.in);
int round = sc2.nextInt();
//10개중 해당 회차를 찾아서 들어가기
if (bigScore.getRound() == round) {
System.out.println("(점수, 등급)은 (" + bigScore.getScore() + ", " + bigScore.getGrade() + ")입니다.");
System.out.println("");
System.out.println("몇 점으로 수정하시겠습니까?");
Scanner sc3 = new Scanner(System.in);
int newScore = sc2.nextInt();
//0<=점수<=100 인지 확인
if (0 <= newScore && newScore <= 100) {
bigScore.setScore(newScore);
//필수과목인지 체크!
if(/*필수과목이면*/){
if (95 <= newScore) {
bigScore.setGrade("A");
} else if (90 <= newScore) {
bigScore.setGrade("B");
} else if (80 <= newScore) {
bigScore.setGrade("V");
} else if (70 <= newScore) {
bigScore.setGrade("D");
} else if (60 <= newScore) {
bigScore.setGrade("E");
} else {
bigScore.setGrade("F");
}
}else if(/*선택과목이면*/)
{if (90 <= newScore) {
bigScore.setGrade("A");
} else if (80 <= newScore) {
bigScore.setGrade("B");
} else if (70 <= newScore) {
bigScore.setGrade("V");
} else if (60 <= newScore) {
bigScore.setGrade("D");
} else if (50 <= newScore) {
bigScore.setGrade("E");
} else {
bigScore.setGrade("F");
}
}else{
System.out.println("필수/선택 똑바로 입력");
}
}
}
}
}
}
}
package model;
public class Score {
private String scoreId; // 점수 ID
private String studentId; // 수강생 ID
private String subjectId; // 과목 ID
private int round; // 회차 (1~10)
private int score; // 점수 (0~100)
private String grade; // 등급 (점수 등록 시 자동 추가되어야 함)
// 생성자
public Score(String scoreId, String studentId, String subjectId, int round, int score, String grade) {
this.scoreId = scoreId;
this.studentId = studentId;
this.subjectId = subjectId;
this.round = round;
this.score = score;
this.grade = grade;
}
// Getter
public String getScoreId() { return scoreId; }
public String getStudentId() { return studentId; }
public String getSubjectId() { return subjectId;}
public int getRound() { return round; }
public int getScore() { return score; }
public String getGrade() { return grade; }
public void setScore(int score) { this.score = score; }
public void setGrade(String grade) { this.grade = grade; }
}
import model.Score;
import model.Student;
import model.Subject;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Scanner;
public class CampManagementApp {
// 데이터 저장소
static List<Student> studentStore;
static List<Subject> subjectStore;
static List<Score> scoreStore;
// 과목 타입
public static final String SUBJECT_TYPE_MANDATORY = "MANDATORY";
public static final String SUBJECT_TYPE_CHOICE = "CHOICE";
// index 관리 필드
static int studentIndex;
public static final String INDEX_TYPE_STUDENT = "ST";
static int subjectIndex;
public static final String INDEX_TYPE_SUBJECT = "SU";
static int scoreIndex;
public static final String INDEX_TYPE_SCORE = "SC";
// 스캐너
static Scanner sc = new Scanner(System.in);
public static void main(String[] args) {
setInitData();
try {
displayMainView();
} catch (Exception e) {
System.out.println("\n오류 발생!\n프로그램을 종료합니다.");
}
}
// 초기 데이터 생성
private static void setInitData() {
studentStore = new ArrayList<>();
subjectStore = List.of(
new Subject(
sequence(INDEX_TYPE_SUBJECT),
"Java",
SUBJECT_TYPE_MANDATORY
),
new Subject(
sequence(INDEX_TYPE_SUBJECT),
"객체지향",
SUBJECT_TYPE_MANDATORY
),
new Subject(
sequence(INDEX_TYPE_SUBJECT),
"Spring",
SUBJECT_TYPE_MANDATORY
),
new Subject(
sequence(INDEX_TYPE_SUBJECT),
"JPA",
SUBJECT_TYPE_MANDATORY
),
new Subject(
sequence(INDEX_TYPE_SUBJECT),
"MySQL",
SUBJECT_TYPE_MANDATORY
),
new Subject(
sequence(INDEX_TYPE_SUBJECT),
"디자인 패턴",
SUBJECT_TYPE_CHOICE
),
new Subject(
sequence(INDEX_TYPE_SUBJECT),
"Spring Security",
SUBJECT_TYPE_CHOICE
),
new Subject(
sequence(INDEX_TYPE_SUBJECT),
"Redis",
SUBJECT_TYPE_CHOICE
),
new Subject(
sequence(INDEX_TYPE_SUBJECT),
"MongoDB",
SUBJECT_TYPE_CHOICE
)
);
scoreStore = new ArrayList<>();
}
// index 자동 증가
static String sequence(String type) {
switch (type) {
case INDEX_TYPE_STUDENT -> {
studentIndex++;
return INDEX_TYPE_STUDENT + studentIndex;
}
case INDEX_TYPE_SUBJECT -> {
subjectIndex++;
return INDEX_TYPE_SUBJECT + subjectIndex;
}
default -> {
scoreIndex++;
return INDEX_TYPE_SCORE + scoreIndex;
}
}
}
private static void displayMainView() throws InterruptedException {
boolean flag = true;
while (flag) {
System.out.println("\n==================================");
System.out.println("내일배움캠프 수강생 관리 프로그램 실행 중...");
System.out.println("1. 수강생 관리");
System.out.println("2. 점수 관리");
System.out.println("3. 프로그램 종료");
System.out.print("관리 항목을 선택하세요 : ");
int input = sc.nextInt();
switch (input) {
case 1 -> displayStudentView(); // 수강생 관리
case 2 -> displayScoreView(); // 점수 관리
case 3 -> flag = false; // 프로그램 종료
default -> {
System.out.println("잘못된 입력입니다.\n되돌아갑니다!");
Thread.sleep(2000);
}
}
}
System.out.println("프로그램을 종료합니다.");
}
// 수강생 관리
private static void displayStudentView() {
boolean flag = true;
while (flag) {
System.out.println("==================================");
System.out.println("수강생 관리 실행 중...");
System.out.println("1. 수강생 등록");
System.out.println("2. 수강생 목록 조회");
System.out.println("3. 메인 화면 이동");
System.out.print("관리 항목을 선택하세요 : ");
int input = sc.nextInt();
switch (input) {
case 1 -> ManagementStudent.createStudent(); // 수강생 등록
case 2 -> ManagementStudent.inquireStudent(); // 수강생 목록 조회
case 3 -> flag = false; // 메인 화면 이동
default -> {
System.out.println("잘못된 입력입니다.\n메인 화면 이동...");
flag = false;
}
}
}
}
// 점수 관리
private static void displayScoreView() {
boolean flag = true;
while (flag) {
System.out.println("==================================");
System.out.println("점수 관리 실행 중...");
System.out.println("1. 수강생의 과목별 시험 회차 및 점수 등록");
System.out.println("2. 수강생의 과목별 회차 점수 수정");
System.out.println("3. 수강생의 특정 과목 회차별 등급 조회");
System.out.println("4. 메인 화면 이동");
System.out.print("관리 항목을 선택하세요 : ");
int input = sc.nextInt();
switch (input) {
case 1 -> ManagementScore.createScore(); // 수강생의 과목별 시험 회차 및 점수 등록
case 2 -> ManagementScore.updateRoundScoreBySubject(); // 수강생의 과목별 회차 점수 수정
case 3 -> ManagementScore.inquireRoundGradeBySubject(); // 수강생의 특정 과목 회차별 등급 조회
case 4 -> flag = false; // 메인 화면 이동
default -> {
System.out.println("잘못된 입력입니다.\n메인 화면 이동...");
flag = false;
}
}
}
}
}
package model;
public class Subject {
private String subjectId; // 과목 ID
private String subjectName; // 과목 이름
private String subjectType; // 과목 타입(필수/선택)
// 생성자
public Subject(String seq, String subjectName, String subjectType) {
this.subjectId = seq;
this.subjectName = subjectName;
this.subjectType = subjectType;
}
// Getter
public String getSubjectId() {
return subjectId;
}
public String getSubjectName() {
return subjectName;
}
public String getSubjectType() {
return subjectType;
}
}
@@@@구현못한부분
과목 id 를 입력 받은것으로 Subject에 들어가서 과목 타입값을 받아오는 것!
'프로젝트' 카테고리의 다른 글
팀프로젝트 Try 해볼것!(트러블슈팅, 플로우차트) (0) | 2024.08.08 |
---|---|
수강생의 과목별 회차 점수 수정.(final) (0) | 2024.08.07 |
수강생의 과목별 회차 점수 수정 pt3. (예외 잡기) (0) | 2024.08.06 |
수강생의 과목별 회차 점수 수정.(pt2) (0) | 2024.08.06 |
계산기 (0) | 2024.07.30 |