ระบบการลงทะเบียนนักเรียน (แอปพลิเคชัน SRS)
ข้อมูลทั่วไป:
สถาปัตยกรรมระดับสูง:
- เราติดตามสถาปัตยกรรม Model View Controller (MVC) เพื่อใช้แอปพลิเคชัน SRS
- ดู
- การใช้ JSP (หน้าเซิร์ฟเวอร์ Java) เพื่อสร้าง GUI ส่วนหน้าเพื่อโต้ตอบกับผู้ใช้
- ผู้ควบคุม
- การใช้ Java Servlets เพื่อเรียกคลาส Operator DB และเปลี่ยนเส้นทางไปยังหน้า JSP ที่เหมาะสม
- แบบอย่าง
- การใช้การเชื่อมต่อ JDBC และการโทรตามขั้นตอน dB ที่เกี่ยวข้องเพื่อดำเนินการตามคำขอของผู้ใช้
- JSPS เป็นหน้าเว็บแบบไดนามิกที่เราสามารถเขียน HTML และรหัส Java
- การใช้วิธี HTTP "โพสต์" เพื่อถ่ายโอนองค์ประกอบแบบฟอร์มจากส่วนหน้าไปยังแบ็กเอนด์
- ฟังก์ชั่นทุกฟังก์ชันจะถูกนำไปใช้ในไฟล์แยกต่างหาก (JSP, Servlet, คลาสการทำงานของ DB) สำหรับ modularity
- จัดการข้อความที่แสดงผ่าน DBMS_OUTPUT จากแบ็กเอนด์ในรหัส JAVA DBMS_OUTPUT GET_LINE ขั้นตอนการโทร
- การตรวจสอบขั้นพื้นฐานเช่นรายการฟิลด์ว่างจะทำที่ด้านหน้า
- ฟังก์ชั่นส่วนใหญ่ในการจัดการข้อมูล DB และการตรวจสอบที่เกี่ยวข้องจะถูกนำไปใช้ที่ด้านแบ็คเอนด์
แผนขั้นตอนการพัฒนาและกิจกรรม:
- เราทำตามขั้นตอนด้านล่างระหว่างขั้นตอนการวางแผนโครงการของแอปพลิเคชัน SRS:
- กล่าวถึงและตัดสินใจที่จะใช้ JSP เป็น Frontend, JDBC Connectivity และ Oracle PL/SQL Backend
- กล่าวถึงและตัดสินใจใช้เครื่องมือควบคุมเวอร์ชัน "BitBucket" เพื่อรักษาซอร์สโค้ดโครงการทั้งสำหรับส่วนประกอบแบ็กเอนด์และส่วนประกอบ
- กล่าวถึงและตัดสินใจที่จะใช้ IDE นักพัฒนา PL/SQL เพื่อพัฒนาวัตถุฐานข้อมูลเช่นแพ็คเกจขั้นตอนฟังก์ชั่นลำดับทริกเกอร์และกรณีทดสอบ (สคริปต์ SQL)
- กล่าวถึงและตัดสินใจที่จะใช้ Eclipse IDE เพื่อพัฒนาโครงการเว็บแอปพลิเคชันรวมถึง JSPS, Java Servlets และ Java JDBC การเชื่อมต่อคลาสโมเดลที่เกี่ยวข้อง
| วันนัดพบ | สถานที่ประชุม | กิจกรรม |
|---|
| 6 พ.ย. 2018 | ห้องประชุมห้องสมุด | สร้างที่เก็บ BitBucket และแพ็คเกจพื้นฐานสำหรับ SRS [NM] ขั้นตอนที่รวมอยู่ในการแสดง tuples ตาราง [VM] การดำเนินการตามขั้นตอนเพื่อรับรายละเอียด TA โดยใช้ ClassID [DP] |
| 10 พ.ย. 2018 | ห้องประชุมห้องสมุด | กรณีทดสอบสำหรับ“ class_ta” และการจัดรูปแบบรหัส [VM] รวมเคอร์เซอร์ REF ใน show_tables + กรณีทดสอบ [DP] ประชากรข้อมูลสำหรับกรณีทดสอบและการตั้งค่าโครงการ Java Web [NM] |
| 11 พ.ย. 2018 | ห้องประชุมห้องสมุด | รวมถึงการดำเนินการตามขั้นตอน“ หลักสูตรวิชาบังคับก่อน” [NM] รวมการใช้งานบางส่วน - ขั้นตอน“ ลงทะเบียนนักเรียน” [VM] ใช้ฟิลด์ตารางแสดงผลในการเชื่อมต่อ Java และ DB [DP] |
| 12 พ.ย. 2018 | ห้องประชุมห้องสมุด | การใช้งานบางส่วนของ“ การลงทะเบียนดร็อป” โดยไม่ต้องทริกเกอร์ [DP] การทดสอบฟังก์ชั่น“ show_students” ที่ด้านหน้าด้านหน้า [VM] การแก้ไขข้อบกพร่อง DB“ show_students” และกรณีทดสอบ [NM] |
| 13 พ.ย. 2018 | ห้องประชุมห้องสมุด | การใช้งานและการทดสอบ“ การลงทะเบียนนักเรียน” จากแบ็กเอนด์และด้านหน้า [DP] [VM] [NM] |
| 14 พ.ย. 2018 | ห้องประชุมห้องสมุด | การดำเนินการตรวจสอบความถูกต้อง 8 สำหรับขั้นตอนการลงทะเบียน _student [DP] กรณีทดสอบ + สคริปต์ SQL ที่เกี่ยวข้องเพื่อตรวจสอบการลงทะเบียนของนักเรียน [NM] การใช้งานฟังก์ชั่นรายละเอียด TA ที่ Frontend [VM] |
| 15 พ.ย. 2018 | ห้องประชุมห้องสมุด | การทดสอบทริกเกอร์ขณะลงทะเบียนนักเรียนที่ Backend [VM] การดำเนินการตามข้อกำหนดเบื้องต้นของคลาสการแสดงผลที่ Frontend [DP] รหัสบางส่วนและการทดสอบของนักเรียนลบที่ Frontend [NM] |
| 19 พ.ย. 2018 | ห้องประชุมห้องสมุด | การใช้งานร่วมกันของการลงทะเบียนและลบการลงทะเบียนนักเรียนด้วยการทดสอบที่สมบูรณ์จากส่วนหน้าและแบ็กเอนด์ [DP] [VM] [NM] |
| 26 พ.ย. 2018 | ห้องประชุมห้องสมุด | การดำเนินการรวมของนักเรียนลบด้วยการทดสอบที่สมบูรณ์จากส่วนหน้าและแบ็กเอนด์ [DP] [VM] [NM] |
| 28 พ.ย. 2018 | ห้องประชุมห้องสมุด | การทดสอบอย่างละเอียดของขั้นตอนทั้งหมดทริกเกอร์และข้อบกพร่องคงที่เข้าด้วยกันจากส่วนหน้าและด้านแบ็กเอนด์ [NM] [VM] [DP] |
| 29 พ.ย. 2018 | ห้องประชุมห้องสมุด | รายงานโครงการและการตั้งค่า DB ขั้นสุดท้ายสำหรับการสาธิต [VM] [NM] [DP] |
- บทบาทและความรับผิดชอบของสมาชิกในทีม:
- สมาชิกในทีมทุกคนทำงานร่วมกันในห้องประชุมเดียวกันเพื่อพัฒนาและทดสอบแอปพลิเคชัน SRS จาก Frontend และ Backend Side
- กิจกรรมที่ทำโดยสมาชิกในทีมถูกกล่าวถึงในตารางข้างต้นพร้อมกับชื่อย่อที่เกี่ยวข้อง
- Nitesh Mishra [NM]
- Dipika Suresh Patil [DP]
- Vidhi Mewada [VM]
โครงร่างของรหัส Backend PL-SQL
ชื่อแพ็คเกจ db - student_registration_system
ขั้นตอนในการแสดง tuples จากแต่ละตารางเจ็ด ขั้นตอนเหล่านี้ส่งคืนเคอร์เซอร์ REF เป็นพารามิเตอร์ที่ใช้ที่ด้านหน้าด้านหน้าเพื่อแสดง tuples ของตารางเดซิเบลเจ็ดตาราง
- ขั้นตอน 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_prerequisites (ref_cursor_prerequisites out ref_cursor);
- ขั้นตอน show_logs (ref_cursor_logs out ref_cursor);
ประเภททั่วโลก -
- พิมพ์ ref_cursor เป็นเคอร์เซอร์อ้างอิง;
- เคอร์เซอร์อ้างอิงนี้จะถูกส่งคืนจากแต่ละขั้นตอนเป็นแบบสอบถามเลือก
ขั้นตอนในการแสดง B#ชื่อและชื่อสุดท้ายของ TA สำหรับอินพุต ClassID
- Procedure class_ta (classid_in ในคลาสประเภท classid%, ta_b#_out out classes.ta_b#%ประเภท, first_name_out out นักเรียน. first_name%ประเภท, last_name_out out นักเรียน. last_name%ประเภท);
- การตรวจสอบ:
- หากชั้นเรียนไม่มี TA รายงาน "ชั้นเรียนไม่มี TA"
- หาก classID ที่ให้ไว้นั้นไม่ถูกต้อง (เช่นไม่ใช่ในตารางคลาส) รายงาน "classID ไม่ถูกต้อง"
ขั้นตอนการส่งคืนหลักสูตรเบื้องต้นทั้งทางตรงและทางอ้อมทั้งหมด
- Procedure class_preereq (dept_code_in ในวิชาบังคับก่อนหน้า. dept_code%, หลักสูตร#_in ในวิชาบังคับก่อนหลักสูตร#%, pre_req_out out varchar2);
- การตรวจสอบ:
- หากมี (dept_code, หลักสูตร#) ไม่ถูกต้องให้รายงาน "dept_code || หลักสูตร# ไม่มีอยู่"
ขั้นตอนจัดการการลงทะเบียนของนักเรียนในชั้นเรียน
- ขั้นตอนการลงทะเบียน _student (b#_in ในนักเรียนประเภท B#%, classid_in ในชั้นเรียนประเภท classid%);
- การตรวจสอบ:
- หากนักเรียนไม่ได้อยู่ในตารางนักเรียนให้รายงาน "B# ไม่ถูกต้อง"
- หาก ClassID ไม่ได้อยู่ในตารางคลาสให้รายงาน "ClassID ไม่ถูกต้อง"
- หากชั้นเรียนไม่ได้เสนอในภาคการศึกษาปัจจุบัน (เช่นฤดูใบไม้ร่วงปี 2018) ให้ปฏิเสธการลงทะเบียนและรายงาน "ไม่สามารถลงทะเบียนเรียนในชั้นเรียนจากภาคการศึกษาก่อนหน้านี้"
- หากชั้นเรียนเต็มแล้วก่อนที่จะมีการร้องขอการลงทะเบียนให้ปฏิเสธคำขอลงทะเบียนและรายงาน "คลาสเต็มแล้ว"
- หากนักเรียนอยู่ในชั้นเรียนแล้วให้รายงาน "นักเรียนอยู่ในชั้นเรียนแล้ว"
- หากนักเรียนลงทะเบียนในชั้นเรียนอีกสี่ชั้นในภาคการศึกษาเดียวกันและในปีเดียวกันรายงาน "นักเรียนจะได้รับการลงทะเบียนใหม่มากเกินไป" แต่ยังอนุญาตให้นักเรียนลงทะเบียน
- หากนักเรียนได้ลงทะเบียนในชั้นเรียนอีกห้าชั้นในภาคการศึกษาเดียวกันและในปีเดียวกันรายงาน "นักเรียนไม่สามารถลงทะเบียนเรียนได้มากกว่าห้าชั้นในภาคการศึกษาเดียวกัน" และปฏิเสธการลงทะเบียน
- หากนักเรียนยังไม่จบหลักสูตรที่จำเป็นต้องมีอย่างน้อยเกรด C ให้ปฏิเสธการลงทะเบียนและรายงาน "ข้อกำหนดเบื้องต้นไม่พอใจ"
ขั้นตอนจัดการการลบนักเรียนจากตารางการลงทะเบียน
- ขั้นตอน delete_student_enrollment (b#_in ในนักเรียนประเภท#%, classid_in ในชั้นเรียนประเภท 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
โครงร่างของ Frontend และ Java Code
- ด้านล่างนี้เป็นตัวอย่างโครงสร้างไดเรกทอรีสำหรับ Java Dynamic Web Project โดยใช้โมเดล View View Controller สถาปัตยกรรม:
