Tải bản đầy đủ (.docx) (18 trang)

Phân hệ đăng ký môn học

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (323.93 KB, 18 trang )

PHÂ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
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Ý
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Ổ
chuẩn này thường được dùng để đánh giá mức độ tốt của các nhóm môn họ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

a) 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 mô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ổ.
• 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 kế 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 ra 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.

×