본문 바로가기
프로젝트

수강생의 과목별 회차 점수 수정.

by wjdtmdgjs 2024. 8. 2.
// 수강생의 과목별 회차 점수 수정
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에 들어가서 과목 타입값을 받아오는 것!