alwaysY0ung / Univ-Study-Manager

0 stars 0 forks source link

[feature] 과제&시험DB #4

Closed alwaysY0ung closed 3 months ago

SoyunJung commented 4 months ago

[중간발표 전 상황보고] (may 25, 2024)

@eun1337 @alwaysY0ung @SoyunJung @eunseo0422 @rosy-n

구현 완료된 기능

  1. csv파일에 저장된 데이터를 과목명을 기준으로 탭을 분할해 JTable 표시
  2. JTable의 특정 열(column)에 대한 렌더링을 사용자 정의해 취사선택해 표시
  3. "관련URL" 하이퍼링크 형식 표시.
  4. "정보"는 클릭 시 csv의 "정보" 열의 내용을 정보를 팝업으로 표시
  5. JTable의 셀을 클릭하면 해당 열에 따라 URL을 열거나 상세 정보를 팝업으로 표시

    +'정보'의 긴 string 불러오는 관정에서 \n등의 공백과 쉼표로 발생하는 오류 해결됨

아직 구현 중인 기능

  1. "마감일"이 당일이거나 전날인 경우, "완료" 체크박스가 미체크 상태라면 "예고된 강의 내용" 열의 글자색이 빨간색으로 표시
  2. "+" 탭을 클릭하면 새로운 강의를 추가 (다이얼로그 나타내기, 테이블 추가하기까지만 구현) 이는 '과제 DB와 수업 DB에서 모두 가능하고, 한쪽에서 추가한다면 다른 쪽에도 반영이 되도록' 구현하는 것이 좋아보임
  3. 변동사항을 csv파일에 저장하는 기능
  4. 기준에 따른 필터 기능
  5. 기준에 따른 정렬 기능
SoyunJung commented 4 months ago

수업 DB랑 과제 DB랑 공유하는 class가 많고,

과제 DB에서는 DB + 과제 완료율에 따라 성장하는 나무 + 스크린샷 2024-05-25 224720 팝업 3종류 (캘린더 포함)이고 스크린샷 2024-05-25 224731 주제발표 준비하면서 보니 캘린더에는 인원이 아무도 배정되지 않았던데

아예 과제DB의 Jtable 부분을 수업DB의 Jtable 팀에서 같이 개발하고 기존 과제DB팀은 나무랑 저 캘린더팝업/블럭형팝업/Jtable형팝업 구현하는 건 어떤가요?

이러면 Jtable 구현 소통도 원활하고 캘린더뷰/기타팝업 구현인원도 해결되고 업무량도 균등하게 나눠질 것 같습니다! 중간발표 이후에 같이 이야기해서 정해봐요

alwaysY0ung commented 3 months ago

건의사항

git pull했을 때 실행환경이 다른 pc의 절대경로로 인해 매번 수정해야하는 번거로움이 있습니다. 상대경로로 수정함을 건의합니다.

SoyunJung commented 3 months ago

해야할일 1. '정보' 팝업에서 내용 변경하면 csv 파일에 반영되기 (자기 전에 제가 구현 완료했습니다)

  1. 여기 + 버튼으로 탭에 과목 추가하는 기능 만들기 image 3. 과제 행 추가하는 기능 만들기(자기 전에 제가 구현 완료했습니다)
  2. "마감일" 기준 오름차순으로 정렬하는 기능 만들기
  3. 완성하면 jframe to jpanel 작업하기 (간단함)
  4. 시간이 된다면, 우측 하단에 진행률에 따라 성장하는 나무 그림 그리는 기능 넣기 (그 위에 과제팀에서 제공하는 panel 불러오는 버튼 넣기) image
SoyunJung commented 3 months ago

과제db의 왼쪽 jtable은 제가 어제오늘 거의 다 해뒀는데 아직 못 한 기능이

~~1. + 버튼으로 탭에 과목 추가하는 기능(classDB와 연동되어야함. 즉, calssdb.csv에도 해당 과목이 1주차~15주차 생겨야함) 2. "마감일" 기준 오름차순으로 정렬하는 기능~~ (제가 구현했습니다) 3. 진행한 과제에 따른 나무** 4. 마무리. jframe to jpanel 작업 (제가 구현했습니다) 입니다.

~~5. classdb에 assignmentdb의 기능을 옮겨붙이고 추가 기능을 구현합니다. (1) "음성기록"을 "관련URL" 열처럼 하이퍼링크로 처리한다. (2) ClassDb 열의 "관련파일"을 assignmentdb의 "관련파일"과 완전히 동일하게 처리한다. 즉, 파일을 입력받고 그 파일을 실행할건지 안 할 건지 바꿀 건지 안 할 건지 물어본다. (3) "To-Do"의 경우 AssignmentDb의 "과제명"처럼, 클릭하여 팝업으로 전체 내용 볼 수 있고 수정할 수 있게 한다. 이때 csv에 수정사항을 반영(저장)하는 과정에서 오류가 없도록 한다. AssignmentDB에는 저장할 때 오류가 나지 않으니 이를 참고하면 된다. (4) "예고된 강의 내용"의 경우에도 AssignmentDb의 "과제명"처럼, 클릭하여 팝업으로 전체 내용 볼 수 있고 수정할 수 있게 한다. 이때 csv에 수정사항을 반영(저장)하는 과정에서 오류가 없도록 한다. AssignmentDB에는 저장할 때 오류가 나지 않으니 이를 참고하면 된다. (5) AssignmnetDb처럼, Jtable에서의 변경사항을 csv 파일에 반영(저장)한다. 이때 오류가 없도록 한다. AssignmentDb의 경우 오류 없이 잘 저장되므로 이를 참고하면 된다.~~ (여기까지 제가 구현 완료했습니다) (6) "관련과제"와 같이 과제와 관련된 열은 "Assignmentdb.csv와 연동되도록 처리해야한다. 1) assignment_db.csv의 "마감일"과 class_db.csv의 "수업일"을 보고, class_db의 "수업일" 중 "수업일"이 assignment_db의 "마감일"보다 미래이면서 동시에 가장 가까운 미래인 경우, 그 class_db의 "수업일"의 행에 해당하는 class_db의 "과제/시험" 칸에, 지금 비교한 assignment_db의 "마감일"의 행의 "과제명"을 기록(저장)한다. 2) 1번의 작업은 AssignmentDb.java 코드에서, "마감일" 열에 해당하는 칸이 수정될 때마다 업데이트 되어야한다. 3) 그리고 "과제/시험"의 칸을 클릭하면, 해당하는 과제의 "정보" 팝업이 떠야한다.

(7) + 버튼으로 탭에 과목 추가하는 기능(assignmentdb와 연동되어야함. 즉, assignmentdb.csv에도 해당 과목의 행이 생겨야함) (제가 구현 완료했습니다)

classdb와 assignmnetdb가 완성되면,

  1. main에 합친 후

  2. (1. 로그인 부분 코드 수정) 회원가입할 때 즉시, 아이디_1_1_AssignmentDB.csv 아이디_1_1_ClassDB.csv 아이디_1_2_AssignmentDB.csv 아이디_1_2_ClassDB.csv 아이디_2_1_AssignmentDB.csv 아이디_2_1_ClassDB.csv 아이디_2_2_AssignmentDB.csv 아이디_2_2_ClassDB.csv 아이디_3_1_AssignmentDB.csv 아이디_3_1_ClassDB.csv 아이디_3_2_AssignmentDB.csv 아이디_3_2_ClassDB.csv 아이디_4_1_AssignmentDB.csv 아이디_4_1_ClassDB.csv 아이디_4_2_AssignmentDB.csv 아이디_4_2_ClassDB.csv 파일을 생성한다. (상대경로 첫 단계에 바로 만들어도 된다)

AssignmentDB의 열은 완료 과제명 마감일 관련수업 과제종류 성적비율 환산점수 과제만점 내 점수 관련파일 관련URL 정보 이고 ClassDB의 열은 강의명 주차 예고된 강의 내용 복습 과제/시험 음성기록 관련파일 To-Do 완료여부 수업일 이다. 각 csv에는 생성됨과 동시에 자동으로 열이 지정되어야한다.

(2. 로그인 부분 코드 수정) 로그인할 때, 기존의 아이디 (빈칸) PW (빈칸) 입력칸 아래에 학기선택 (JComboBox)를 제공한다. 선택지는 다음 8개이다. 1-1학기 1-2학기 2-1학기 2-2학기 3-1학기 3-2학기 4-1학기 4-2학기

(3.) 선택된 결과에 따라, AssignmentDB와 ClassDB에서 불러오는 csv파일은 각각 String assignment_csvFile = "아이디_학년_학기_AssignmentDB.csv" String class_csvFile = "아이디_학년_학기_ClassDB.csv" 로 지정해 불러온다.

이 기능 구현합니다

  1. 7번이 완료되면 csv파일 교체 (DB교체. 즉 학기 전환) 탭을 바로 구현할 수 있습니다.
SoyunJung commented 3 months ago

이제(assignment). + 버튼으로 탭에 과목 추가하는 기능(classDB와 연동되어야함. 즉, calssdb.csv에도 해당 과목이 1주차~15주차 생겨야함)

이거랑

(class) + 버튼으로 탭에 과목 추가하는 기능(assignmentdb와 연동되어야함. 즉, assignmentdb.csv에도 해당 과목의 행이 생겨야함)

이거 구현 완료되면 바로 jframe to panel 한 다음에 (제가 구현 완료했습니다)

(assignment) 진행한 과제에 따른 나무 도 만들고

(class) "관련과제"와 같이 과제와 관련된 열은 "Assignmentdb.csv와 연동되도록 처리해야한다. 1) assignment_db.csv의 "마감일"과 class_db.csv의 "수업일"을 보고, class_db의 "수업일" 중 "수업일"이 assignment_db의 "마감일"보다 미래이면서 동시에 가장 가까운 미래인 경우, 그 class_db의 "수업일"의 행에 해당하는 class_db의 "과제/시험" 칸에, 지금 비교한 assignment_db의 "마감일"의 행의 "과제명"을 기록(저장)한다. 2) 1번의 작업은 AssignmentDb.java 코드에서, "마감일" 열에 해당하는 칸이 수정될 때마다 업데이트 되어야한다. 3) 그리고 "과제/시험"의 칸을 클릭하면, 해당하는 과제의 "정보" 팝업이 떠야한다.

마지막에 이거 구현할 수 있습니다 그리고 뒷부분 구현 가능