BỘ CÔNG THƯƠNG TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP THỰC PHẨM TP HỒ CHÍ MINH KHOA CÔNG NGHỆ THÔNG TIN ***** ᴥ ᴥ *****⸙ BÁO CÁO ĐỀ TÀI HỆ THỐNG QUẢN LÝ HỌC TẬP BÁO CÁO MÔN HỌC HỆ QUẢN TRỊ ORACLE Giảng viên hướng[.]
Trang 1BỘ CÔNG THƯƠNG TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP THỰC PHẨM TP HỒ CHÍ MINH
KHOA CÔNG NGHỆ THÔNG TIN
***** ᴥ ᴥ ***** ⸙
BÁO CÁO ĐỀ TÀI
HỆ THỐNG QUẢN LÝ HỌC TẬP
BÁO CÁO MÔN HỌC
HỆ QUẢN TRỊ ORACLE Giảng viên hướng dẫn: Nguyễn Đình Thành
Sinh viên thực hiện:
2001200621 – Hồ Đình Luân
2001206980 – Trần Hoàng Thông
2001202071 - Tiêu Hữu Hậu
2001200290 – Phùng Đức Quang
2001207111 – Trần Thanh Nhạc
Trang 2TP HCM, NĂM 2023 BẢNG ĐÁNH GIÁ KẾT QUẢ THỰC HIỆN
CÔNG VIỆC NHÓM ST
T
2 Trần Hoàng Thông Word, Chỉnh sửa, Function, Procduce 18%
Trang 4MỞ ĐẦU
Trong trường học công tác quản lý học tập của sinh viên đóng một vai trò hết sức quan trọng, nó phản ánh chất lượng dạy và học ở các trường đó là quá trình theo dõi và đánh giá kết quả lao động của thầy và trò Nếu đánh giá đúng đó sẽ giúp cho Ban giám hiệu chỉ một cách hiệu quả và kích thích được phong trào thi đua dạy, ngược lại lại nếu đánh giá không đúng nó sẽ ảnh hưởng tiêu cực đến chất lượng giảng dạy của thầy và kết quả học tập của trò Hiện nay, ở các trường bộ quản lý điểm và hồ sơ, phải xử lý một lượng khá lớn đống sổ sách giấy tờ và công việc tính toán điểm của sinh viên nhưng điều làm bằng phương pháp thủ công đơn thuần vì vậy nó chếm rất lớn thời gian và công sức Mặc dù công sức bỏ ra lớn nhưng hiệu quả công việc lại không cao và sai sót lớn Dẫn đến tình trạng không công bằng trong đánh giá giữa các học sinh với nhau và ảnh hưởng tiêu cực đến chất lượng giảng dạy của nhà trường Để hạn chế những thiếu sót trên, phần mềm quản lý học tập này giúp bộ phận quản lý khắc phục, giải quyết công việc một cách thuận lợi, nhanh chóng và tránh được các sai sót trong quá trình xử lý điểm của học sinh
Trang 5CHƯƠNG 1
TỔNG QUAN
1.1 GIỚI THIỆU
Cùng với sự phát triển của xã hội thì công nghệ thông tin đã và đang triển khai các ứng dụng trên địa bàn toàn quốc, dần tiến tới tin học hóa tất cả các hoạt động trong lĩnh vực của các ngành nghề Máy tính thực sự là công cụ đáng tin cậy không thể thiếu được trong mọt hoạt động của xã hội trong thời đại thông tin hiện nay Chính vì vậy việc quản lý học tập ở các trường phải được tin học hóa toàn bộ, không còn phải theo lối thủ công trong việc khai thác thông tin và chiếm nhiều thời gian lưu trữ
1.2 MỤC ĐÍCH
– Giảm bới thời gian ghi chép, không gây nhầm lẫn, thiếu chính xác
– Thực hiện tìm kiếm sửa dữ liệu rất thuận tiện
– Tận dụng tối khả năng tính đã có
– Mọi công việc cập nhật, điều chỉnh, tìm kiếm, tra cứu điều được thực hiện nhanh chóng, chính xác, tiết kiệm thời gian
1.3 PHẠM VI ĐỀ TÀI
a Cập nhật thông tin:
- Cập nhật thông tin về sinh viên
- Cập nhật thông tin giáo viên
b Lưu thông tin:
- Lưu thông tin về học sinh
- Lưu thông tin về giáo viên
Trang 6CHƯƠNG 2
PHÂN TÍCH
Một người dùng có thể đăng kí, đăng nhập, đăng xuất một tài khoản duy nhất
Admin có thể tạo lớp học, sửa hay xóa lớp học đó
Mỗi Admin có thể quản lí những lớp của mình tạo ra
Admin có thể thêm học sinh, giáo viên vào mỗi lớp học, và mỗi lớp học có thể
có nhiều giáo viên giảng dạy
Mỗi giáo viên có thể tham gia dạy nhiều lớp, với 1 môn nào đó
Mỗi học sinh sẽ thuộc về một lớp nào đó
Mỗi người dùng có thể thêm, sửa, xóa thông tin của bản thân
Giáo viên có thể xem thông tin các lớp mình dạy, danh sách học sinh các lớp đó
Học sinh có thể xem thông tin các lớp mình học
2.1 Các đối tượng dữ liệu cần lưu, các thuộc tính
GiaoVien(MaGiaoVien, TenGV, GioiTinh, NgaySinh, QueQuan, SDT,
TrinhDo, Email, idTaiKhoan)
GiangDay(MaGiaoVien, MaLopHoc, MonHoc)
LopHoc(MaLopHoc, TenLopHoc, DiaDiem, idAdmin)
Admin(idAdmin, Email, idTaiKhoan)
TaiKhoan(idTaiKhoan, TenTaiKhoan, MatKhau)
SinhVien(MaSV, TenSV, GioiTinh , NgaySinh, QueQuan, Email, MaLopHoc,
idTaiKhoan)
2.2 Mối liên kết giữa các đối tượng
11 (mộtmột): Quan hệ giữa giáo viên tài khoản, sinh viên tài khoản, admin -tài khoản là 1-1
1-n (một-nhiều): Quan hệ giữa lớp học - học sinh là 1-n
Trang 7 n-n (nhiều nhiều): Quan hệ giữa giáo viên - lớp học là n-n.
2.3 Các nghiệp vụ chính
Các tác nhân chính của hệ thống: Admin, giáo viên, học sinh
Các chức năng chính:
Admin:
o Thêm, sửa, xóa lớp học
o Thêm học sinh, giáo viên vào lớp học
Giáo viên, học sinh:
o Thêm, sửa, xóa thông tin cá nhân
o Xem thông tin các lớp mình dạy (hoặc học)
2.4 Các ràng buộc cần có
Khóa chính(MaGiaoVien, MaLopHoc, idAdminid, TaiKhoan, MaSV)
Khóa ngoại(idTaiKhoan, idAdmin, idTaiKhoan, MaLopHoc, idTaiKhoan)
2.5 Các ràng buộc ngữ nghĩa
Giới tính của giáo viên và sinh viện chỉ thuộc 1 trong 2 giá trị “Nam” hoặc “Nữ”
Tuổi của sinh viên phải lớn hơn 18
Trang 8CHƯƠNG 3
THIẾT KẾ HỆ THỐNG
3.1 Bảng
a Admin
Trang 9b Class
Trang 10c Student
Trang 11d Student_subject
Trang 12e Subject
Trang 13f Teacher
Trang 14g User
Trang 153.2 Thủ tục
a Admin
create PROCEDURE procInsertAdmin (
EMAIL IN VARCHAR2 ,
USER_ID IN NUMBER ,
OUTPUT OUT VARCHAR2 )
IS
x NUMBER := 0 ;
BEGIN
IF EMAIL IS NULL
THEN
OUTPUT := 'ERROR, COLUMN EMAIL IS NOT NULL' ;
RETURN ;
END IF ;
IF USER_ID IS NULL
THEN
OUTPUT := 'ERROR, COLUMN USER_ID IS NOT NULL' ;
RETURN ;
END IF ;
SELECT COUNT (*)
INTO x
FROM USER_ u
WHERE U ID = USER_ID ;
IF ( x = 0 )
THEN
OUTPUT := 'ERR, USER DOES NOT EXIST' ;
RETURN ;
END IF ;
IF OUTPUT IS NULL
THEN
INSERT INTO ADMIN_ EMAIL , USER_ID )
VALUES ( EMAIL , USER_ID );
IF SQL FOUND
THEN
COMMIT ;
OUTPUT := 'SUCCESS, ADD ADMIN' ;
DBMS_OUTPUT PUT_LINE ( 'SUCCESS, ADD ADMIN' );
ELSE
OUTPUT := 'ERROR, ADD ADMIN' ;
DBMS_OUTPUT PUT_LINE ( 'ERROR, ADD ADMIN' );
END IF ;
END IF ;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT PUT_LINE ( 'ERROR, ADD ADMIN' );
DBMS_OUTPUT PUT_LINE ( 'SQLCODE = ' || SQLCODE || 'SQLERRM = '' ' ||
SQLERRM || '''' );
ROLLBACK ;
RAISE ;
END ;
Trang 16b Class
create PROCEDURE procInsertClass (
CLASS_NAME IN VARCHAR2 ,
ADDRESS IN VARCHAR2 ,
ADMIN_ID IN NUMBER ,
OUTPUT OUT VARCHAR2 )
IS
x NUMBER := 0 ;
BEGIN
IF CLASS_NAME IS NULL
THEN
OUTPUT := 'ERROR, COLUMN CLASS_NAME IS NOT NULL' ;
RETURN ;
END IF ;
IF ADDRESS IS NULL
THEN
OUTPUT := 'ERROR, COLUMN ADDRESS IS NOT NULL' ;
RETURN ;
END IF ;
IF ADMIN_ID IS NULL
THEN
OUTPUT := 'ERROR, COLUMN ADDRESS IS NOT NULL' ;
RETURN ;
END IF ;
SELECT COUNT (*)
INTO x
FROM ADMIN_ a
WHERE a ID = ADMIN_ID ;
IF ( x = 0 )
THEN
OUTPUT := 'ERROR, ADMIN DOES NOT EXIST' ;
RETURN ;
END IF ;
IF OUTPUT IS NULL
THEN
INSERT INTO CLASS_ CLASS_NAME , ADDRESS , ADMIN_ID )
VALUES ( CLASS_NAME , ADDRESS , ADMIN_ID );
IF SQL % FOUND
THEN
COMMIT ;
OUTPUT := 'SUCCESS, ADD CLASS' ;
DBMS_OUTPUT PUT_LINE ( 'SUCCESS, ADD CLASS' );
ELSE
OUTPUT := 'ERROR, ADD CLASS' ;
DBMS_OUTPUT PUT_LINE ( 'ERROR, ADD CLASS' );
END IF ;
END IF ;
Trang 17WHEN OTHERS THEN
DBMS_OUTPUT PUT_LINE ( 'ERROR, ADD CLASS' );
DBMS_OUTPUT PUT_LINE ( 'SQLCODE = ' || SQLCODE || ' SQLERRM = ''' ||
SQLERRM || '''' );
ROLLBACK ;
RAISE ;
END ;
3.3 Function
a Tính điểm trung bình
create function FUNC_mediumScore ( STUDENT_ID_IN IN NUMBER )
return FLOAT
is
mediumScore FLOAT := 0 ;
SS STUDENT_SUBJECT_ % rowtype ;
CURSOR LIST_SS IS
SELECT SS *
FROM DEMO STUDENT_ S
JOIN STUDENT_SUBJECT_ SS on S ID = SS STUDENT_ID
WHERE SS STATUS 1
AND S ID = STUDENT_ID_IN ;
countRow NUMBER := 0 ;
begin
OPEN LIST_SS ;
LOOP
FETCH LIST_SS INTO SS ;
EXIT WHEN LIST_SS % NOTFOUND ;
mediumScore := mediumScore + (( SS TEST_SCORE * 0.3 ) + ( SS FINAL_EXAM_SCORE *
0.7 ));
countRow := countRow + 1 ;
END LOOP ;
CLOSE LIST_SS ;
IF countRow = 0 then
countRow := 1 ;
end if ;
RETURN mediumScore / countRow ;
end ;
b Tính điểm trung bình cao nhất
create FUNCTION FUNC_TALLESTMEDIUMSCORE ( CLASS_ID_IN IN NUMBER )
RETURN FLOAT
IS
tallestMediumScore FLOAT := 0 ;
S STUDENT_ % ROWTYPE ;
mediumScore FLOAT := 0 ;
CURSOR LIST_S IS
SELECT S *
FROM STUDENT_ S
JOIN CLASS_ C ON C ID = S CLASS_ID
WHERE
C ID = CLASS_ID_IN ;
BEGIN
Trang 18OPEN LIST_S ;
LOOP
FETCH LIST_S INTO S ;
EXIT WHEN LIST_S % NOTFOUND ;
mediumScore := DEMO FUNC_MEDIUMSCORE ( ID );
IF ( mediumScore > tallestMediumScore ) THEN
tallestMediumScore := mediumScore ;
END IF ;
END LOOP ;
CLOSE LIST_S ;
RETURN tallestMediumScore ;
END ;
3.4 Trigger
a Kiểm tra tuổi
create trigger TEACHER_AGE_CHECK
before insert or update
on TEACHER_
for each row
DECLARE
difference NUMBER ;
BEGIN
SELECT EXTRACT ( YEAR FROM SYSDATE ) - EXTRACT ( YEAR FROM : new DATE_OF_BIRTH ) into
difference FROM DUAL ;
dbms_output put_line ( 'Tuổi hiện tại là: ' || difference );
IF ( difference 18 )
THEN
dbms_output put_line ( 'Chưa đủ 18 tuổi' );
raise_application_error (- 20000 , 'Chưa đủ 18 tuổi' );
END IF ;
END ;
b Kiểm tra email
create trigger TEACHER_EMAIL_CHECK
before insert or update
on TEACHER_
for each row
DECLARE
T TEACHER_ % ROWTYPE ;
CURSOR LIST_T IS
SELECT T *
Trang 19FROM TEACHER_ T ;
BEGIN
OPEN LIST_T ;
LOOP
FETCH LIST_T INTO T ;
EXIT WHEN LIST_T % NOTFOUND ;
IF ( EMAIL = : NEW EMAIL )
THEN
DBMS_OUTPUT PUT_LINE ( 'EMAIL ALREADY EXISTS' );
DELETE FROM USER_ U
WHERE U ID = : NEW USER_ID ;
IF SQL % FOUND THEN
DBMS_OUTPUT PUT_LINE ( 'SUCCESS, DELETE AUTO USER' );
ELSE
DBMS_OUTPUT PUT_LINE ( 'ERROR, DELETE AUTO USER' );
END IF ;
RAISE_APPLICATION_ERROR (- 20000 , 'EMAIL ALREADY EXISTS' );
END IF ;
END LOOP ;
CLOSE LIST_T ;
END ;