학생 등록 시스템 (SRS 응용 프로그램)
일반 정보 :
고급 아키텍처 :
- SRS 응용 프로그램을 구현하기 위해 MVC (Model View Controller) 아키텍처를 따랐습니다.
- 보다
- JSP (Java Server 페이지)를 사용하여 Frontend GUI를 생성하여 사용자와 상호 작용합니다.
- 제어 장치
- Java Servlet을 사용하여 DB 운영자 클래스를 호출하고 결과를 적절한 JSP 페이지로 리디렉션합니다.
- 모델
- 사용자의 요청을 수행하기 위해 JDBC 연결을 사용하고 해당 DB 절차를 호출합니다.
- JSP는 HTML과 Java 코드를 작성할 수있는 동적 웹 페이지입니다.
- HTTP 방법 "Post"를 사용하여 양식 요소를 프론트 엔드에서 백엔드로 전송합니다.
- 모든 기능은 모듈 식을 위해 별도의 파일 (JSP, Servlet, DB Operation Class)으로 구현됩니다.
- Java Code DBMS_OUTPUT GET_LINE 프로 시저 호출의 백엔드에서 DBMS_OUTPUT를 통해 표시된 처리 메시지.
- 빈 필드 항목과 같은 기본 유효성 검사는 프론트 엔드 측에서 수행됩니다.
- DB 데이터 조작 및 관련 유효성 검사에 대한 대부분의 기능은 백엔드 측에서 구현됩니다.
개발 단계 및 활동 :
- 우리는 SRS 응용 프로그램의 프로젝트 계획 단계에서 아래 단계를 따랐습니다.
- JSP를 Frontend, JDBC Connectivity 및 Oracle PL/SQL 백엔드로 사용하기로 결정했습니다.
- "Bitbucket"버전 제어 도구를 사용하여 백엔드 및 프론트 엔드 구성 요소 모두에 대한 프로젝트 소스 코드를 유지하기로 결정했습니다.
- PL/SQL 개발자 IDE를 사용하여 패키지, 프로 시저, 기능, 시퀀스, 트리거 및 테스트 케이스 (SQL 스크립트)와 같은 데이터베이스 개체를 개발하기로 결정했습니다.
- Eclipse IDE를 사용하여 JSP, Java Servlets 및 Java JDBC Connectivity 관련 모델 클래스를 포함한 웹 응용 프로그램 프로젝트를 개발하기로 결정했습니다.
| 회의 날짜 | 회의 위치 | 활동 |
|---|
| 2018 년 11 월 6 일 | 도서관 회의실 | SRS [NM] 용 비트 벅켓 리포지토리 및 기본 패키지를 만들었습니다. 테이블 튜플 [VM]을 표시하는 절차가 포함되어 있습니다. ClassID [DP]를 사용하여 TA 세부 사항을 얻기위한 절차 구현. |
| 2018 년 11 월 10 일 | 도서관 회의실 | "class_ta"및 코드 형식 [VM]에 대한 테스트 케이스. show_tables + it'd test case [dp]에 ref cursor 포함. 테스트 사례 및 Java 웹 프로젝트 설정 [NM]의 데이터 모집단. |
| 2018 년 11 월 11 일 | 도서관 회의실 | "전제 조건"절차 [NM]의 구현이 포함되었습니다. 부분 구현 포함 -“학생 등록”절차 [VM]. Java 및 DB Connectivity에서 디스플레이 테이블 필드를 구현했습니다 [DP]. |
| 2018 년 11 월 12 일 | 도서관 회의실 | 트리거 [DP]가없는 "드롭 등록"의 부분 구현. 프론트 엔드 측에서 "Show_students"기능 테스트 [VM]. "show_students"DB 결함 및 테스트 사례의 수정 [NM]. |
| 2018 년 11 월 13 일 | 도서관 회의실 | 백엔드 및 프론트 엔드 측 [DP] [VM] [NM]에서 "학생 등록"의 구현 및 테스트. |
| 2018 년 11 월 14 일 | 도서관 회의실 | enroll_student 프로 시저 [DP]에 대한 검증 8 구현 8. 학생 등록 [NM]을 확인하기위한 테스트 사례 + 관련 SQL 스크립트. Frontend [VM]에서 TA 세부 기능의 구현. |
| 2018 년 11 월 15 일 | 도서관 회의실 | 백엔드 [VM]에 학생을 등록하는 동안 트리거 테스트. Frontend [DP]에서 디스플레이 클래스 전제 조건의 구현. Frontend [NM]에서 삭제 학생의 부분 코드 및 테스트. |
| 2018 년 11 월 19 일 | 도서관 회의실 | Frontend and Backend [VM] [NM]에서 완전한 테스트를 통해 등록 및 삭제 학생 등록 구현. |
| 2018 년 11 월 26 일 | 도서관 회의실 | Frontend and Backend [DP] [VM] [NM]에서 완전한 테스트를 통해 DELETE 학생의 결합 된 구현. |
| 2018 년 11 월 28 일 | 도서관 회의실 | 모든 절차, 트리거 및 고정 결함에 대한 철저한 테스트 및 백엔드 측에서 [NM] [VM] [DP]. |
| 2018 년 11 월 29 일 | 도서관 회의실 | 데모 [VM] [NM] [DP]에 대한 프로젝트 보고서 및 최종 DB 설정. |
- 팀원 역할 및 책임 :
- 모든 팀원은 동일한 회의실에서 함께 일하면서 프론트 엔드 및 백엔드 측면에서 SRS 애플리케이션을 개발하고 테스트했습니다.
- 팀 구성원이 수행 한 활동은 각각의 이니셜과 함께 위 표에서 언급됩니다.
- Nitesh Mishra [NM]
- Dipika Suresh Patil [DP]
- Vidhi Mewada [VM]
백엔드 PL-SQL 코드 개요
DB 패키지 이름 -Phulate_REGISTRATION_SYSTEM
7 개의 테이블 각각에서 튜플을 표시하는 절차. 이 절차는 7 개의 DB 테이블의 튜플을 표시하기 위해 프론트 엔드 측에서 사용되는 Out 매개 변수로 Ref Cursor를 반환합니다.
- 절차 show_students (ref_cursor_students Out ref_cursor);
- 절차 show_tas (ref_cursor_tas out ref_cursor);
- 절차 show_courses (ref_cursor_courses out ref_cursor);
- 절차 show_classes (ref_cursor_classes out ref_cursor);
- 절차 show_enrollments (ref_cursor_enrollments out ref_cursor);
- 절차 show_perrejitites (ref_cursor_perrequisites out ref_cursor);
- 절차 show_logs (ref_cursor_logs out ref_cursor);
글로벌 유형 -
- 유형 ref_cursor는 ref cursor입니다.
- 이 Ref Cursor는 개별 절차에서 선택 쿼리로 반환됩니다.
입력 classID에 대한 TA의 B#, 이름 및 성을 표시하는 절차.
- 절차 class_ta (class.class.classId%유형의 classId_in, ta_b#_out class.ta_b#%유형, First_name_out out.first_name%유형, last_name_out widen.last_name%유형);
- 검증 :
- 수업에 TA가없는 경우 "클래스에는 TA가 없습니다."
- 제공된 classID가 유효하지 않은 경우 (즉, 클래스 테이블이 아닌) "ClassID가 유효하지 않습니다"를보고합니다.
절차는 모든 직간접 전제 조건 과정을 반환합니다.
- 절차 class_prereq (전제 조건의 dept_code_in.dept_code%유형, 전제 조건의 코스#_in .course#%유형, pre_req_out out varchar2);
- 확인:
- 제공된 (dept_code, course#)가 유효하지 않은 경우 "dept_code || 코스#이 존재하지 않습니다"를보고하십시오.
절차는 학생의 등록을 수업에 처리합니다.
- 절차 enroll_student (학생의 b#_in.b#%유형, class.classid%유형);
- 검증 :
- 학생이 학생 테이블에 있지 않으면 "B#은 유효하지 않습니다"를보고하십시오.
- ClassID가 클래스 테이블에 있지 않으면 "ClassID가 유효하지 않습니다"를보고하십시오.
- 현재 학기 (예 : 2018 년 가을)에 수업이 제공되지 않으면 등록 및 보고서를 거부하고 "이전 학기부터 수업에 등록 할 수 없습니다".
- 등록 요청 전에 클래스가 이미 가득 차면 등록 요청을 거부하고 "클래스가 이미 가득 찼습니다"라고보고하십시오.
- 학생이 이미 수업 중이라면 "학생은 이미 수업 중입니다."
- 학생이 같은 학기와 같은 해에 이미 4 개의 다른 수업에 등록한 경우 "학생은 새로운 등록으로 과부하가 걸립니다." 그러나 여전히 학생이 등록 할 수 있습니다.
- 같은 학기와 같은 해에 학생이 이미 5 개의 다른 수업에 등록한 경우, "학생들은 같은 학기에 5 개 이상의 수업에 등록 할 수 없습니다." 등록을 거부하십시오.
- 학생이 최소한 C 등급의 필수 전제 조건 과정을 완료하지 않은 경우 등록을 거부하고 "전제 조건이 만족스럽지 않음"을보고하십시오.
절차는 등록 테이블에서 학생의 삭제를 처리합니다.
- 절차 delete_student_enrollment (학생의 b#_in.b#%유형, class.classid%유형);
- 검증 :
- 학생이 학생 테이블에 있지 않으면 "B#은 유효하지 않습니다"를보고하십시오.
- ClassID가 클래스 테이블에 있지 않으면 "ClassID가 유효하지 않습니다"를보고하십시오.
- 학생이 수업에 등록하지 않으면 "학생은 수업에 등록하지 않습니다"라고보고하십시오.
- 2018 년 가을에 수업이 제공되지 않으면 드롭 시도를 거부하고 "현재 학기에 등록 만 삭제할 수 있습니다."
- 수업에서 학생을 철회하면 다른 수업에 대한 전제 조건 요구 사항을 위반하는 경우, 드롭 시도를 거부하고 "다른 클래스가 등록한 학생이 전제 조건으로 사용하기 때문에 낙하는 허용되지 않습니다." 다른 모든 경우에, 학생은 수업에서 떨어질 것입니다.
- 수업이 학생의 마지막 수업 인 경우 "이 학생은 수업에 등록하지 않습니다."
- 학생이 수업에서 마지막 학생이라면 "수업에는 이제 학생이 없습니다"라고보고하십시오.
절차는 주어진 B#을 기준으로 학생 테이블에서 학생의 삭제를 처리합니다.
- 절차 delete_student (학생의 b#_in.b#%유형);
- 확인:
- 학생이 학생 테이블에 있지 않으면 "B#은 유효하지 않습니다"를보고하십시오.
관련 DB 객체 -이 객체는 패키지의 일부가 아니며 응용 프로그램에 사용됩니다.
- 로그 테이블에 새 로그 레코드가 삽입 될 때 로그#을 자동으로 생성하는 시퀀스.
- 등록 테이블 항목의 삭제시 로그 테이블에 입력하려면 트리거됩니다.
- trig_on_del_enroll_ins_logs
- 등록 테이블 항목의 삭제시 클래스 테이블에서 클래스 크기를 줄이기위한 트리거.
- trig_on_del_enroll_upd_classes
- 학생 테이블 항목 삭제시 TA 테이블 항목을 삭제하는 트리거.
- trig_on_del_students_del_ta
- TA 테이블 항목의 삭제시 로그 테이블에 입력하려면 트리거됩니다.
- TA 테이블 항목의 삭제시 클래스 테이블에서 TA 열 항목을 늘리게하려면 트리거됩니다.
- trig_on_del_tas_upd_classes
- 등록 테이블 항목의 삽입에 로그 테이블에 입력하려면 트리거됩니다.
- trig_on_ins_enroll_ins_logs
- 등록 테이블 삽입시 수업 테이블에서 클래스 크기를 늘리는 트리거.
- trig_on_ins_enroll_upd_classes
- 클래스 테이블 항목의 업데이트시 로그 테이블에 항목을 트리거합니다.
- trig_on_upd_classes_ins_logs
- 학생 항목 삭제시 등록을 삭제하는 트리거.
- trig_on_del_stud_del_enroll
프론트 엔드 및 Java 코드의 개요
- 다음은 모델보기 컨트롤러 아키텍처 모델을 사용한 Java Dynamic 웹 프로젝트를위한 디렉토리 구조 스 니펫입니다.
