Phân hệ ĐKMH cho phép sinh viên gia nhập vào hệ thống logon để xem thời khoá biểu dự kiến của khoá học , lựa chọn môn học và đăng ký môn học.. CÁC RÀNG BUỘC - R1 : Một sinh viên đăng ký
Trang 1PHÂN HỆ ĐĂNG KÝ MÔN HỌC
CHƯƠNG 1 :
PHÂN TÍCH VÀ THIẾT KẾ
I MỤC ĐÍCH:
Phân hệ Đăng ký môn học (ĐKMH) có 2 nhiệm vụ chính :
- Quản lý việc đăng ký môn học của sinh viên Phân hệ ĐKMH cho phép sinh viên gia nhập vào hệ thống (logon) để xem thời khoá biểu dự kiến của khoá học , lựa chọn môn học và đăng ký môn học
- Xử lý việc ĐKMH của sinh viên Mục đích chính của phân hệ này là : cập nhật lưu trữ, xếp lịch ĐKMH một cách hợp lý
II CÁC RÀNG BUỘC
- (R1) : Một sinh viên đăng ký những Nhóm lớp môn học không được trùng thời khóa biểu (TKB) với nhau Một Nhóm lớp môn học chỉ học một môn học
- (R2) : Giải quyết ưu tiên cho những sinh viên đăng ký đúng ngành
- (R3) : Không xếp đăng ký những môn học không hợp lệ hay đã bị vi phạm môn học tiên quyết, môn học song hành, môn học trước
- (R4) : Ưu tiên xếp theo nguyện vọng ĐKMH của sinh viên Tuy nhiên khi không thể đáp ứng nguyện vọng do lớp hết chỗ, thì giải quyết cho sinh viên học vào một buổi khác mà môn học có mở Để có thể lưu ý đến nguyện vọng đăng ký, các môn học sẽ được xét theo thứ tự đăng ký môn học của sinh viên
- (R5) : Điều hoà số lần thay thế nhóm lớùp giưã các sinh viên, tránh trường hợp
một sinh viên bị đổi qua nhiều nhóm trong khi sinh viên khác hoàn toàn được xét theo nguyện vọng Ràng buộc này chỉ có tính tương đối
Số lần thay thế nhóm lớp : khi không thể đáp ứng được nguyện vọng đăng
ký vào một nhóm lớp môn học cuả sinh viên do nhóm lớp hết chỗ hay bị huỷ thì ta sẽ tìm một nhóm lớp khác thích hợp để thay thế nhóm lớp sinh viên đăng ký Số lần thay thế nhóm lớp cuả một sinh viên càng ít thì thời khoá biểu cuả sinh viên càng tốt
- (R6) : Sinh viên không được phép đăng ký quá số tín chỉ tối đa / học kỳ.
- (R7) : Một sinh viên có số giờ học không vượt quá Số giờ tối đa / ngày cho
phép (nếu có chỉ định) Thường tiêu chuẩn này không bắt buộc phải tuân theo Tiêu chuẩn này thường được dùng để đánh giá mức độ tốt của các nhóm môn
Trang 2học trong trường hợp không thể đáp ứng nguyện vọng ĐKMH của sinh viên
do lớp hết chỗ và từ đó chọn ra lớp thay thế tốt nhất cho sinh viên
- (R8) : Tránh tiết liên tục giữa 2 buổi (nếu có chỉ định ) Tương tự như trên , tiêu chuẩn này chỉ dùng để tham khảo
- (R9) : Số sinh viên được phép đăng ký trong một nhóm lớp môn học được tính theo công thức sau:
So_sv = si_so * (1 + )
: hệ số nghỉ học tối đa cuả sinh viên Các môn học khác nhau sẽ có hệ số khác nhau Chọn =0 cho môn học thí nghiệm, thực hành, các môn học khác thường có =0.1 Người sử dụng có thể thay đổi hệ số này
- (R10) : Số lượng sinh viên tối thiểu cuả một môn học Nếu số lượng sinh viên thấp hơn chuẩn tối thiểu này, nhóm lớp môn học sẽ không được tổ chức Những sinh viên học nhóm lớp này sẽ được chuyển sang học những nhóm lớp khác cuả môn học
III HƯỚNG GIẢI QUYẾT
Như ta đã biết , xét ĐKMH dựa trên thời khoá biểu dự kiến do phân hệ xếp thời khoá biểu tạo nên Vấn đề xét ĐKMH cũng gần giống như xếp thời khoá biểu, do đó ta khó có thể tìm được một phương án tối ưu nhất để xét ĐKMH Vì thế em chọn hướng phát triển công cụ cung cấp các tuỳ chọn cho phép người sử dụng có thể chọn lưạ, đánh giá dữ liệu và điều chỉnh các tiêu chuẩn nhằm mục đích làm cho quá trình xếp thời khoá biểu đăng ký môn học tối ưu
III.1 Sơ đồ các luồng công việc
NHẬP DỮ LIỆU ĐĂNG KÝ MÔN
HỌC
KIỂM TRA CÁC RÀNG BUỘC VỀ MÔN
HỌC ĐĂNG KÝ
Trang 3a) Nhập dữ liệu đăng ký môn học: mỗi sinh viên sẽ có môt tài khoản
riêng Vào thời điểm đăng ký môn học sinh viên sẽ được phép log vào hệ thống xem thời khoá biểu, chọn môn học và đăng ký môn học Trong khoảng thời gian đó sinh viên có thể vào thay đổi môn học đăng ký Cho phép mỗi sinh viên có tối đa 2 lần vào đăng ký hay chỉnh sửa môn học đăng ký để tránh trường hợp sinh viên vào sửa đổi đăng ký nhiều lần Sau khoảng thời gian đăng ký môn học hệ thống sẽ khoá lại ,cấm sinh viên vào đăng ký hay sửa đổi môn học đăng ký Trong thời gian này sinh viên có thể log vào hệ thống để xem kết quả đăng ký môn học
b) Kiểm tra các ràng buộc về môn học đăng ký: đánh dấu các môn học vi
phạm môn học trước/ tiên quyết, môn học song hành
c) Thống kê dữ liệu sinh viên đăng ký trên từng môn học :dựa trên dữ
liệu thống kê được từ đó ta có thể quyết định huỷ bỏ một nhóm lớp
KIỂM TRA CÁC RÀNG BUỘC VỀ MÔN
HỌC ĐĂNG KÝ
THỐNG KÊ CÁC DỮ LIỆU SINH VIÊN
ĐĂNG KÝ TRÊN TỪNG MÔN HỌC
XẾP THỜI KHOÁ BIỂU ĐĂNG KÝ
MÔN HỌC CHO SINH VIÊN
XÉT VÉT ĐĂNG KÝ MÔN HỌC CHO
SINH VIÊN
PHÂN TỔ
Trang 4môn học Nếu số lượng sinh viên đăng ký quá ít so với số lượng sinh viên dự kiến ta nên huỷ bỏ bớt một nhóm lớp môn học trước khi xét đăng ký Điều này giúp hạn chế số lần thay thế nhóm so với trường hợp huỷ nhóm lớp sau khi xét đăng ký Nhóm lớp bị huỷ vì không đủ số lượng sinh viên mở lớp (vi phạm ràng buộc R10)
d) Xếp thời khoá biểu ĐKMH cho sinh viên:
- Giải quyết ưu tiên cho những sinh viên đăng ký đúng ngành Trong một Khoá ngành ta chia đều số sinh viên đăng ký đúng ngành vào tất cả các luồng
- Xét ĐKMH dựa theo nguyện vọng đăng ký môn học của sinh viên Trường hợp nhóm lớp hết chỗ hay bị huỷ ta đánh dấu lại
e) Xét vét đăng ký môn học cho sinh viên : bước này tập trung xét các
môn học chưa xếp được cho sinh viên do nhóm lớp sinh viên (A) đăng ký đã hết chỗ
- Xác định các luồng còn Chọn những sinh viên học đúng ngành từ các luồng đầy cho vào những luồng còn trống Việc này giúp giải quyết một số chỗ cho những sinh viên chưa xếp được
- Sau đó xét lại đăng ký môn học cho những sinh viên chưa xếp được
- Đối với những nhóm lớp vẫn chưa xếp được ta chọn nhóm lớp khác thích hợp – không trùng thời khoá biểu với các môn học đã xét Thay thế nhóm lớp cũ bằng nhóm lớp mới đã tìm được
- Trường hợp không thể tìm được một nhóm lớp nào thích hợp vì tất cả các nhóm khác đều trùng thời khoá biểu, ta tìm một sinh viên (B) thuộc nhóm lớp sinh viên A muốn đăng ký mà có khả năng thay thế một nhóm lớp khác Khi đó ta sẽ hoán chuyển vị trí của hai sinh viên này: sinh viên A được đặt vào chỗ cuả sinh viên B, sinh viên B sẽ được thay thế một nhóm lớp khác thích hợp
- Khi chọn sinh viên thích hợp để thay thế, cần chọn ra những sinh viên có số lần thay thế nhóm lớp ít nhất Đánh giá này giúp cân bằng số lần thay thế giữa các sinh viên đăng ký môn học tránh trường hợp một sinh viên bị thay thế nhóm quá nhiều trong khi các sinh viên khác (sinh viên diện không được ưu tiên) hoàn toàn được xếp theo nguyện vọng
f) Phân tổ: sau khi xét ĐKMH cho sinh viên , ta phân tổ cho từng nhóm
lớp môn học theo nguyên tắc:
- Các nhóm lớp học trong các phòng đặt biệt ( như phòng thí nghiệm, thực hành, sân thể dục ) : không phân tổ
- Các nhóm lớp học trong các phòng bình thường : dựa vào tiêu chuẩn sỉ số sinh viên/tổ (SS_TO), hệ số tách min (HS_MIN) và hệ số tách max (HS_MAX) ta xác định:
Nếu sỉ số nhóm < SS_TO*HS_MIN : chia làm một tổ
Nếu SS_TO*HS_MIN < sỉ số nhóm < SS_TO*HS_MAX: chia làm 2 tổ
Trang 5 Nếu sỉ số nhóm > SS_TO*HS_MAX : lấy sỉ số tổ bằng SS_TO
Số sinh viên còn lại của nhóm =sỉ số nhóm – SS_TO Tiếp tục xét cho đến hết nhóm
III.2 Thiết kế dữ liệu:
Phân hệ ĐKMH sử dụng các bảng sau:
Bảng VI_PHAM : lưu các loại mã vi phạm của môn học đăng ký
VI_PHẠM(MA_VP, TEN)
Thuộc tính:
- MA_VP : mã vi phạm ( ví dụ : 0, 1, 2, … )
- TEN : tên của vi phạm ( ví dụ : vi phạm quan hệ môn học trước/tiên quyết…)
Bảng DKMH : lưu các phiếu ĐKMH
- MA_SV : mã sinh viên
- MA_MH : mã môn học
- MA_VP : mã vi phạm
- MA_NGANH : mã ngành
- NAM_VAO_TRUONG : năm vào trường
- NHOM : nhóm
- NHOM_TO : nhóm tổ
Bảng SS_PHONG : lưu sỉ số hiện tại của các nhóm lớp môn học
- MA_PHONG : chỉ nhóm lớp môn học (ví dụ : ‘MT199511 501095’ )
- SI_SO : sỉ số hiện tại của nhóm lớp môn học
Bảng DANH_GIA : lưu giữ điểm đánh giá kết quả đăng ký môn học hiện tại của sinh viên
- MA_SV : mã sinh viên
- DIEM_DG : điểm đánh giá
Bảng TKB_SV : là bảng dùng để xác định thời khoá biểu bận giờ của các sinh viên Bảng TKB_SV bao gồm 7 trường đại diện cho 7 ngày trong tuần của sinh viên Mỗi ngày có 12 tiết và được khởi gán giá trị ban đầu bằng ‘0’ Khi xét đăng ký môn học , nhóm môn học nào hợp lệ ta sẽ đánh dấu vào lịch học nhóm lớp đó vào thời khoá biểu của sinh viên Bảng TKB_SV được thiết
Trang 6kế nhằm mục đích tạo sự dễ dàng và tăng tốc độ truy xuất khi xếp đăng ký môn học
- MA_SV : mã sinh viên
- T2, T3, T4, T5, T6, T7, CN : lưu giữ lịch học của sinh viên
III.3 Các tiêu chuẩn xét đăng ký môn học:
- Số tín chỉ tối đa / học kỳ : Sinh viên không được phép đăng ký quá số tín chỉ tối đa / học kỳ.
- Số tiết tối đa / ngày
- Hệ số dôi nhóm môn học bình thường : số sinh viên được phép đăng ký nhóm môn học thường được tính theo công thức:
Sỉ số nhóm=sỉ số * hệ số dôi nhóm môn học bình thường
- Hệ số dôi nhóm môn học đặt biệt : môn học đặt biệt được định nghĩa là những môn học học ở những phòng đặt biệt như các môn thí nghiệm, thực hành, thể dục Sỉ số sinh viên được phép đăng ký các môn học này được tính theo công thức :
Sỉ số nhóm=sỉ số * hệ số dôi nhóm môn học đặt biệt
Vì các phòng thí nghiệm, thực hành thường có số chỗ cố định nên hệ số dôi nhóm môn học đặt biệt thường bằng 0 Tuỳ vào dữ liệu thống kê, cho phép người sử dụng có thể sửa đổi hệ số này
- Sỉ số sinh viên/ nhóm tổ : đây là một trong các tiêu chuẩn để phân tổ
- Hệ số min tách tổ : tiêu chuẩn phân tổ
- Hệ số max tách tổ : tiêu chuẩn phân tổ
- Sỉ số tố thiểu mở lớp
III.4 Các chiến lược xét đăng ký môn học trên cơ sở dữ liệu phân bố:
Phiếu đăng ký môn học của sinh viên được lưu giữ ở hai site : site MT và site DT Có 4 phương án để chạy xét đăng ký môn học:
a) Chạy tập trung: với phương án này dữ liệu đăng ký môn học ở 2 site sẽ được chép về phòng Đào tạo Vì toàn bộ dữ liệu đều được tập trung ở một chỗ nên thời gian xét đăng ký môn học sẽ rất nhanh, nhưng phải trả giá cho những chi phí khác Thường số lượng sinh viên của cả trường rất lớn nên thời gian chép dữ liệu và dung lượng cần để lưu trữ dữ liệu ở site PDT là rất nhiều Ngoài ra trong suốt thời gian sao chép dữ liệu ứng dụng sẽ chiếm đường truyền, làm ảnh hưởng các user khác muốn log vào hệ thống
b) Chạy tập trung trên dữ liệu phân bố : quá trình xét đăng ký môn học vẫn được thực hiện ở phòng DT ,nhưng không chép dữ liệu về mà thực hiện các phép chọn phân bố Ở phương án này quá trình xét đăng ký môn học sẽ diễn
Trang 7ra khá chậm , đặt biệt là nếu phiếu đăng ký của sinh viên phải xét lại nhiều lần vì thế số lần thực hiện các phép chọn phân bố cũng sẽ trở nên rất lớn, làm giảm hiệu suất của ứng dụng
c) Kết hợp giưã hai phương án trên: dựa vào tần suất sử dụng và hệ số chọn của ứng dụng mà ta quyết định chọn phương án a hay b Thường dữ liệu đăng ký môn học rất bất kỳ , vì thế ta khó có thể đánh giá chính xác tần suất và hệ số chọn của ứng dụng Sự lựa chọn giữa hai phương án này chỉ có tính tương đối d) Thực hiện nhiều quá trình xét đăng ký môn học ở nhiều nơi song song: phương án này khá tốt vì tận dụng được tài nguyên của hệ thống, nhưng khó thực hiện Sử dụng phương án này cần đề ra một chiến lược quản lý giao dịch và dữ liệu hợp lý nhằm tránh vấn đề tranh chấp các tài nguyên dùng chung
- Để có thể xét ĐKMH một cách nhanh chóng do số lượng sinh viên xét ĐKMH quá lớn ta nên chia công việc này cho nhiều máy (server) thực hiện Mỗi máy sẽ xét cho từng phiếu ĐKMH riêng biệt tức là xét cho các sinh viên riêng biệt Trong trường hợp sinh viên khoa này đăng ký môn học của khoa khác đặt ở nơi (site) khác sẽ dẫn đến đụng độ về nhóm lớp xét cho sinh viên
Ví dụ :
- Sinh viên A đăng ký nhóm MH1, MH2
- Sinh viên B đăng ký nhóm MH1, MH3
Khi xét đăng ký đồng thời cho 2 sinh viên ở hai nơi ta điều phải sử dụng thông tin về số lượng sinh viên hiện có trong nhóm MH1 Nêùu số lượng sinh viên hiện có của nhóm < sỉ số tối đa cho phép của nhóm : nhóm còn trống -> cho phép sinh viên vào nhóm và cập nhật lại số lượng nhóm Giả sử số lượng sinh viên của nhóm là 20, quá trình xét ĐKMH ở 2 nơi cùng lúc đọc số lượng nhóm Sau đó quá trình xét ĐKMH 1 kiểm tra, tăng số lượng nhóm lên 21 và cập nhật Tương tự quá trình xét ĐKMH 2 cũng kiểm tra , thấy hợp lệ và cập nhật lại số lượng nhóm bằng 21 Như vậy, kết quả số lượng nhóm chỉ tăng lên 1 trong khi thêm 2 sinh viên Quá trình xét ĐKMH ở hai nơi cùng tranh chấp trên 1 phần tử dữ liệu Để tránh trường hợp này,trước khi đọc dữ liệu ta khoá (lock) vùng dữ liệu đó lại, sau khi cập nhật dữ liệu mới ta gỡ khoa.ù
IV PHÂN QUYỀN
Phân hệ ĐKMH sử dụng 3 vai trò:
User của site MT : được phép log vào site MT để xem thời khoá biểu dự kiến, chọn và đăng ký môn học , đồng thời xem kết quả đăng ký môn học
User của site DT : dược phép log vào site DT và cũng có những quyền tương tự như đối với user của site MT
Admin : cũng log vào phân hệ ĐKMH nhưng có quyền khác so với các user của từng site Admin log vào hệ thống để duyệt xét phiếu ĐKMH của tất cả các sinh viên đồng thời lập lịch đăng ký môn học ở các học kỳ sau
Trang 8Cùng là phân hệ ĐKMH nhưng những user khác nhau sẽ có quyền khác nhau, vì thế ứng dụng sẽ mở ra những giao diện khác nhau
Trang 9CHƯƠNG 2 :
CÁC CHỨC NĂNG TRONG
PHÂN HỆ
CHỨC NĂNG THỐNG KE Â :
Chức năng: thống kê số lượng sinh viên đăng ký theo môn học trước và sau khi đăng ký được, đồng thới cho phép người sử dụng huỷ bỏ một nhóm lớp môn học nếu như số lượng sinh viên đăng ký không đủ để mở lớp
Input:
Tính số sinh viên dựa vào bảng DKMH
Lấy thông tin về các nhóm thời khóa biểu từ bảng GV_LOP_MH
Output:
Xem dữ liệu thống kê
Huỷ bỏ một nhóm lớp môn học
- Khi huỷ bỏ một nhóm lớp môn học, nếu chưa xét nhóm lớp môn học -> chỉ cần đánh dấu huỷ nhóm lớp môn học đó trong bảng GV_LOP_MH (bảng lưu thời khoá biểu) Ngược lại nếu như xét nhóm môn học đó rồi -> xoá toàn bộ các sinh viên tham gia học nhóm lớp đó Việc làm này rất nguy hiểm vì nó sẽ gây ảnh hưởng đến kết quả đăng ký môn học của các sinh viên và nhóm lớp
bị huỷ sẽ không có khả năng khôi phục lại Vì thế cần thông báo cho người sử dụng rõ ràng trước khi thực hiện
Thiết kế giao diện:
Trang 10Form gồm 4 khối thông tin:
Khối trên cùng hiển thị khoá ngành, gồm 3 trường MA_NGANH, NAM_VAO_TRUONG, DOT và số sinh viên đăng ký học đầy đủ tất cả các môn học thuộc khoá ngành đó Người sử dụng truy vấn theo từng khoá ngành để thống kê từng nhóm lớp môn học Khối này sử dụng bảng GV_LOP_MH và DKMH ,chỉ có thể truy vấn để xem
Khối dưới cùng bên trái hiển thị tất cả các nhóm lớp môn học thuộc khoá ngành đó, đồng thời cho biết số nhóm lớp và số sinh viên dự kiến của môn học được hiện sáng Người sử dụng có thể truy vấn theo từng nhóm lớp môn học để xem các dữ liệu thống kê Khối này sử dụng bảng GV_LOP_MH và chỉ để xem
Khối ở giữa bên phải hiển thị dữ liệu thống kê trước khi xét DKMH Từ đó cho phép người sử dụng xem xét và huỷ bỏ một nhóm lớp môn học Khối này sử dụng bảng DKMH và chỉ để xem
Khối cuối cùng ở góc trái bên phải hiển thị dữ liệu thống kê sau khi xét DKMH Khối này sử dụng bảng DKMH và chỉ để xem
II.CHỨC NĂNG XÉT ĐĂNG KÝ MÔN HỌC
II.1 Form xét đăng ký theo dữ liệu nhập
Chức năng:
Cung cấp 2 tuỳ chọn cho người sử dụng để xét ĐKMH:
- Xét theo khoá ngành
- Xét theo toàn bộ dữ liệu
Xem thời khoá biểu đã xét
Input:
- Dữ liệu lấy từ bảng DKMH, GV_LOP_MH, SS_PHONG
Output:
- Trả về thời khoá biểu cho các sinh viên
- Cập nhật lại các bảng SS_PHONG, TKB_SV, DKMH, DANH_GIA
Thiết kế giao diện: