ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TINKHOA CÔNG NGHỆ PHẦN MỀM KHÓA LUẬN TỐT NGHIỆP NGHIÊN CỨU MỘT SỐ THUẬT TOÁN XẾP LỊCH XÂY DỰNG ỨNG DỤNG XẾP THỜI KHÓA BI
Trang 1ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA CÔNG NGHỆ PHẦN MỀM
KHÓA LUẬN TỐT NGHIỆP
NGHIÊN CỨU MỘT SỐ THUẬT TOÁN XẾP LỊCH
XÂY DỰNG ỨNG DỤNG XẾP THỜI KHÓA BIỂU
CHO TRƯỜNG THPT
Giảng viên hướng dẫn: PGS TS VŨ THANH NGUYÊN
THS NGUYỄN ĐĂNG KHOA
Sinh viên thực hiện : KHƯƠNG SĨ TOÀN 07520363
LÊ NGUYỄN TẤN ĐẠT 07520076 Lớp: CÔNG NGHỆ PHẦN MỀM 02
Khóa: 2007-2012
TP Hồ Chí Minh, tháng 7 năm 2012
Trang 2MỞ ĐẦU
Trong bối cảnh hiện nay, nhu cầu sử dụng Internet cũng như việc kinh doanh, trao đổi, mua bán, học tập, làm việc, nghiên cứu, giải trí v v…trên máy tính là vô hạn
Việc sử dụng các ứng dụng cho nhu cầu thực tế là rất nhiều Các ứng dụng CNTT
đã trnên rất phổ biến trong công việc học tập
Hiện nay các trường THPT việc ứng dụng các ứng dụng CNTT để quản lý, sắp xếp đã trở nên phổ biến Với việc các trường ngày càng đông học sinh thì việc cơ sở vật chất của mỗi trường đều phải tăng lên tương ứng Công việc xếp lịch học và giảng dạy cho học sinh và giáo viên trở nên nặng nề rắc rối đối với người xếp lịch bằng tay
Tại trường THPT Tam Phú KP5 Phường Tam Phú Quận Thủ Đức cũng gặp trường hợp như vậy Việc có nhiều lớp học, học sinh, giáo viên…đã làm nhân viên gặp khó khăn Vì vậy việc cấp thiết xây dựng một phần mềm có khả năng tự động xếp thời khóa biểu, phân công giảng dạy cho toàn trường
Chính vì vậy nhóm đề tài luận văn tốt nghiệp chúng tôi xin được trình bày báo cáo luận văn tốt nghiệp : Nghiên cứu một số thuật toán xếp lịch và xây dựng chương trình xếp thời khóa biểu ứng dụng cho trường THPT Tam Phú
Trang 3LỜI CẢM ƠN
Chúng tôi xin chân thành cảm ơn Khoa Công nghệ Phần Mềm, trường Đại học Công Nghệ Thông Tin, Đại học Quốc gia Tp Hồ Chí Minh đã tạo điều kiện thuận lợi và tốt nhất cho chúng tôi học tập trong suốt 5 năm qua và thực hiện đề tài tốt nghiệp này
Chúng tôi xin bày tỏ lòng biết ơn sâu sắc đến thầy Vũ Thanh Nguyên và thầy Nguyễn Đăng Khoa đã tận tình, nhiệt tình hướng dẫn, chỉ bảo chúng tôi trong suốt quá trình thực hiện đề tài
Chúng tôi xin chân thành cám ơn quý Thầy Cô trong Khoa Công nghệ Phần Mềm đã tận tình giảng dạy, trang bị cho chúng tôi những kiến thức quý báu trong những năm học vừa qua
Chúng tôi cũng xin chân thành cảm ơn phòng kế hoạch trường THPT Tam Phú đã cung cấp cho chúng tôi nhiều thông tin quý báu để chúng tôi thực hiện xây dựng đề tài này
Chúng con xin chân thành cảm ơn Cha Mẹ đã luôn động viên, ủng hộ vật chất lẫn tinh thần trong suốt quãng đường đại học của chúng con
Chúng tôi xin cảm ơn sự quan tâm, giúp đỡ và ủng hộ của anh chị, bạn bè trong quá trình thực hiện khóa luận
Mặc dù đã cố gắng hoàn thành khóa luận trong phạm vi và khả năng cho phép nhưng chắc chắn sẽ không tránh khỏi những thiếu sót Chúng tôi rất mong nhận được sự thông cảm, góp ý và tận tình chỉ bảo của quý Thầy Cô và các bạn
Trang 4NHẬN XÉT (Của giảng viên hướng dẫn)
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
TpHCM, ngày … tháng …… năm ……
Giảng viên hướng dẫn [Ký tên và ghi rõ họ tên]
Trang 5NHẬN XÉT (Của giảng viên phản biện)
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
TpHCM, ngày … tháng …… năm ……
Giảng viên phản biện [Ký tên và ghi rõ họ tên]
Trang 6ĐỀ CƯƠNG CHI TIẾT
Tên Đề Tài: Nghiên cứu một số thuật toán xếp lịch Ứng dụng xây dựng chương trình
xếp thời khóa biểu cho trường THPT
Giáo viên hướng dẫn:
PGS Ts Vũ Thanh Nguyên
Ths Nguyễn Đăng Khoa
Thời gian thực hiện: (từ ngày nhận đề tài đến ngày 20/8/2012 )
Sinh viên thực hiện:
Khương Sĩ Toàn 07520363
Lê Nguyễn Tấn Đạt 07520076
Loại đề tài: Tìm hiểu nghiên cứu thuật toán và xây dựng ứng dụng
Nội Dung Đề Tài:
Nghiên cứu một số thuật toán về xếp thời khóa biểu Xây dựng phần mềm xếp thời khóa biểu cho trường TPHP Tam Phú
Có thể áp dụng cho các trường THPT khác
Kế Hoạch Thực Hiện:
15/03/2012 – 15/4/2012: Xây dựng ý tưởng và tìm hiểu thuật toán tô màu
o Khương Sĩ Toàn: Tìm hiểu thông tin về THPT Tam Phú và mô hình hóa ứng dụng xếp thời khóa biểu
Trang 7o Lê Nguyễn Tấn Đạt: Nghiên cứu thuật toán tô màu
Mục tiêu và kế hoạch chi tiết cho đề tài
15/4/2012 – 15/05/2012: Thiết kế dữ liệu và xây dựng xếp lịch bán tự động
o Khương Sĩ Toàn : Thiết kế dữ liệu, xây dựng bán tự động
o Lê Nguyễn Tấn Đạt: Nghiên cứu giải thuật di truyền
15/05/2012 – 15/06/2012: phát triển thêm cho chương trình
o Khương Sĩ Toàn : Áp dụng tự động xếp lịch
o Lê Nguyễn Tấn Đạt: Áp dụng tự động xếp lịch
15/06/2012 – 15/07/2012: sửa lỗi và phát triển phần mềm
o Khương Sĩ Toàn : sửa lỗi và phát triển phần mềm
o Lê Nguyễn Tấn Đạt: sửa lỗi và phát triển
5 07 20 2 – 5 08 20 2: viết báo cáo và hoàn thiện
o Khương Sĩ Toàn : viết báo cáo và hoàn thiện
o Lê Nguyễn Tấn Đạt: viết báo cáo và hoàn thiện
SV Thực hiện
Trang 8Chương 2 THUẬT TOÁN TÔ MÀU VÀ GIẢI THUẬT DI TRUYỀN 3
2.2 Thuật toán tô màu trong xếp thời khóa biểu 7
2.4 Giải thuật di truyền trong xếp thời khóa biểu 11
Chương 3 PHẦN MỀM TỰ ĐỘNG SẮP XẾP THỜI KHÓA BIỂU 15
Trang 93.4.2 Các ràng buộc mềm 35
3.6 Một số thuật toán quan trọng của phần mềm 36
Chương 4 CÁC VẤN ĐỀ XẢY RA VÀ HƯỚNG GIẢI QUYẾT 47
4.1 Các vấn đề xảy ra trong quá trình phát triển 47
Trang 11SƠ ĐỒ 3.1 Sơ đồ luồng dữ liệu yêu cầu Lập danh sách lớp học
SƠ ĐỒ 3.2 Sơ đồ luồng dữ liệu yêu cầu Lập danh sách môn học
SƠ ĐỒ 3.3 Sơ đồ luồng dữ liệu yêu cầu Lập danh sách giáo viên
SƠ ĐỒ 3.4 Sơ đồ luồng dữ liệu yêu cầu Lập danh sách khối lớp
SƠ ĐỒ 3.5 Sơ đồ luồng dữ liệu yêu cầu Phân công học tập
SƠ ĐỒ 3.6 Sơ đồ luồng dữ liệu yêu cầu Sắp xếp thời khóa biểu
SƠ ĐỒ 3.7 Sơ đồ lớp ở mức phân tích
SƠ ĐỒ 3.8 Thiết kế dữ liệu
HÌNH 3.1 Mô hình 1-tier, 3-layers
HÌNH 3.2 Việc trao đổi liên lạc giữa các layer
HÌNH 3.3 Sự phụ thuộc giữa các layer
HÌNH 3.4 Form nhập lớp học
HÌNH 3.5 Form phân các phòng dùng chung
HÌNH 3.6 Form tự động phân phòng dùng chung
HÌNH 3.7 Form phân công giảng dạy cho giáo viên
HÌNH 3.8 Form tự động phân công giảng dạy
HÌNH 3.9 Form xếp thời khóa biểu
HÌNH 3.10 Form tự động xếp thời khóa biểu
HÌNH 3.11 Form thời khóa biểu lớp học
HÌNH 3.12 Form thời khóa biểu giáo viên
Trang 12Chương 1: TỔNG QUAN
1.1 Giới thiệu đề tài
Hiện nay trong các trường học bao gồm các cấp bậc phổ thông và chuyên nghiệp việc quản lý phân công giảng dạy và học tập đã trở nên khó khăn khi con người sử dụng bằng các phương thức thông thường Do các trường đã có nhiều học sinh, sinh viên và cơ
sở vật chất của mỗi trường đã tăng lên tương ứng Nhu cầu cấp thiết hiện tại là chúng ta cần xây dựng một ứng dụng có thể tự động phân công và sắp xếp lịch học, lịch giảng dạy sao cho hợp lý và tiết kiệm thời gian và công sức nhiều nhất có thể mà vẫn đảm bảo được tính đúng đắn như làm bằng tay
Vì vậy nhóm luận văn tốt nghiệp chúng tôi đã xây dựng phần mềm sắp xếp thời khóa biểu cho trường THPT(cụ thể là THPT Tam Phú) Dựa trên các thuật toán xếp lịch như tô màu, di truyền và một số thuật toán khác
1.2 Mục tiêu của đề tài
Mục tiêu của đề tài là tìm hiểu, nghiên cứu các thuật toán xếp lịch và ứng dụng
nó để xây dựng phần mềm có khả năng xếp thời khóa biểu tự động và bán tự động Phần mềm phải đảm bảo các yêu cầu sau:
Lưu trữ các thông tin lớp học, môn học, giáo viên, khối lớp Cho phép sửa xóa
Lưu trữ thông tin trường học, học kỳ…
Lưu trữ thông tin về lịch rảnh của giáo viên: rảnh bận …
Phân công giảng dạy cho giáo viên bao gồm tự động và bán tự động
Sắp xếp thời khóa biểu bao gồm tự động và bán tự động
Hiện thị thời khóa biểu lớp học, lịch dạy của giáo viên
Lưu dữ liệu ở dạng excel
1.3 Yêu cầu
Phần mềm cần đảm bảo các yêu cầu tối thiểu của luận văn là thực hiên phân công xếp lịch tự động mà vẫn thỏa mãn các ràng buộc
Trang 13 Phần mềm có thể linh hoạt thích ứng với những thay đổi của trường
Phần mềm cần có tính tiện dụng và trực quan
Phần mềm có thể tích hợp với các ứng dụng văn phòng
Trang 14Chương 2: THUẬT TOÁN TÔ MÀU VÀ GIẢI THUẬT DI TRUYỀN
2.1 Giới thiệu thuật toán tô màu
Bài toán tô màu đồ thị và sắc số đồ thị: cho trước một số nguyên dương P, ta nói rằng đồ thị G có P sắc có nghĩa là: chỉ bằng P màu khác nhau ta có thể tô màu tất cả các đỉnh sao cho 2 đỉnh liền kề bất kỳ có màu khác nhau Khi số p nhỏ nhất thì ta gọi P là sắc
số của đồ thị và việc tìm cách tô P màu lên đồ thị chính là bài toán tô màu đồ thị
Bậc của một đỉnh bằng số đỉnh có liên hệ với nó (liền kề với nó)
* Thuật toán:
Lặp lại các bước sau cho đến khi nào tô màu hết các đỉnh:
Bước 1: chọn đỉnh có bậc cao nhất tô màu i
Bước 2: hạ bậc:
o Đỉnh đã tô màu: bậc = 0
o Những đỉnh có liên hệ: bâc:= bậc – 1
Bước 3: đánh dấu những đỉnh có liên hệ (bậc vừa trừ đi ) cấm tô màu i
2.2 Thuật toán tô màu trong bài toán xếp thời khóa biểu
Việc xếp thời khóa biểu trước hết phải thỏa mãn các yêu cầu tối thiểu, đó là không
bị trùng và không bị quá tiết trong tuần Hay nói cách khác là phải thỏa mãn các ràng buộc sau:
Một lớp không được học hơn một môn trong cùng một tiết
Một giáo viên không được dạy hơn một lớp trong cùng một tiết
Một phòng chỉ có thể dùng cho một lớp trong một tiết
Số tiết học trong tuần của một lớp không được lớn hơn số tiết học qui định trong tuần
Trang 15Vì phòng học ở trường THPT là cố định với mỗi lớp nên ta chỉ cần quan tâm đến các phòng dùng chung (như phòng vi tính, thực hành…) trong thuật toán
Để thỏa mãn các yêu cầu trên Ta cần dùng thuật toán tô màu để phân nhóm cho các phân công (mỗi phân công là một bộ “lớp-môn-giáo viên”) Sau khi phân nhóm, các phân công cùng một nhóm phải xếp chung một tiết, các phân công khác nhóm phải xếp ở những tiết khác nhau, và số nhóm phải là nhỏ nhất để tốn ít tiết nhất có thể Sẽ có một số môn học mà học nhiều hơn tiết trong tuần, vì vậy sẽ có một số phân công mà có lớp, môn, giáo viên giống nhau và tất nhiên là không được xếp cùng một tiết
*Thuật toán:
Xem mỗi phân công là một đỉnh Bậc của một phân công là số phân công khác không được xếp cùng một tiết với nó (có cùng lớp hoặc cùng giáo viên hoặc cùng phòng dùng chung), hay nói cách khác là có liên hệ với nó
Mỗi phân công có một danh sách các nhóm trùng (không được xếp phân công đó vào các nhóm thuộc danh sách), ban đầu rỗng
Lặp lại các bước sau cho đến khi tất cả các phân công đều được xếp nhóm:
Bước 1: Chọn phân công có bậc cao nhất xếp vào nhóm đầu tiên không có trong danh sách các nhóm trùng của nó
Bước 2: hạ bậc:
o Phân công đã xếp nhóm: bậc = 0
o Những phân công có liên hệ: bâc:= bậc – 1
Bước 3: Thêm nhóm tiết vừa chọn vào danh sách các nhóm trùng của các phân công có liên hệ
Trang 16 PC5: 10C-Toán-GV01
PC6: 10C-Sinh vật-GV03
PC7: 10D-Ngoại ngữ-GV04
PC8: 10D-Văn-GV02
Lúc này bậc của các phân công này sẽ là:
PC1: bậc=3 (max), có liên hệ với PC2(cùng lớp), PC3(cùng GV), PC5(cùng GV)
Trang 202.3 Giới thiệu giải thuật di truyền (Genetic Algorithm - GA)
Các thuật giải di truyền được thực hiện thay đổi theo bài toán cụ thể, nhưng chúng chia sẻ chung cấu trúc tiêu biểu sau: Thuật giải hoạt động bằng cách cập nhật liên tục tập giả thuyết – được gọi là quần thể Ở mỗi lần lặp, tất cả các cá thể trong quần thể được ước lượng tương ứng với hàm thích nghi Rồi quần thể mới được tạo ra bằng cách lựa chọn có xác suất các cá thể thích nghi tốt nhất từ quần thể hiện tại Một số trong những cá thể được chọn được đưa nguyên vẹn vào quần thể kế tiếp Những cá thể khác được dùng làm cơ sở để tạo ra các cá thể con bằng cách áp dụng các tác động di truyền: lai ghép và đột biến
GA( Fitness, Fitness_threshold, p, r, m)
{
// Fitness: hàm gán thang điểm ước lượng cho một giả thuyết // Fitness_threshold: Ngưỡng xác định tiêu chuẩn dừng giài thuật tìm kiếm // p: Số cá thể trong quần thể giả thuyết
// r: Phân số cá thể trong quần thể được áp dụng toán tử lai ghép ở mỗi
bước
Trang 21// m: Tỉ lệ cá thể bị đột biến
Khởi tạo quần thể: P Tạo ngẫu nhiên p cá thể giả thuyết
Ước lượng: Ứng với mỗi h trong P, tính Fitness(h)
while [max Fitness(h)] < Fitness_threshold do
Tạo thế hệ mới, PS
1 Chọn cá thể: chọn theo xác suất (1 – r)p cá thể trong quần thể P
thêm vào P S Xác suất Pr(h i ) của giả thuyết h i thuộc P được tính
bởi công thức:
1
( )Pr( )
( )
i
j j
Fitness h h
Fitness h
2 Lai ghép: chọn lọc theo xác suất
2
rp cặp giả thuyết từ quần thể
P, theo Pr(h i ) đã tính ở bước trên Ứng với mỗi cặp <h 1 , h 2 >, tạo
ra hai con bằng cách áp dụng toán tử lai ghép Thêm tất các các
con vào P S
3 Đột biến: Chọn m% cá thể của PS với xác suất cho mỗi cá thể là như nhau Ứng với mỗi cá thể biến đổi một bit được chọn ngẫu nhiên trong cách thể hiện của nó
4 Cãp nhật: P PS.
5 Ước lượng: Ứng với mỗi h trong P, tính Fitness(h)
Trả về giả thuyết trong P có độ thích nghi cao nhất
}
Bảng 3.1 Thuật giải di truyền mẫu
Chi tiết về thuật giải di truyền xem ở phần phụ lục
2.4 Giải thuật di truyền trong việc xếp thời khóa biểu
Mục đích của việc xếp thời khóa biểu là xếp các phân công (các bộ “lớp-môn-giáo
viên”) vào các tiết trong tuần Ví dụ 27 tiết (tất nhiên số tiết này là linh động tùy thuộc vào lúc khởi tạo dữ liệu học kỳ)
Sau khi sử dụng thuật toán tô màu, ta có được 27 nhóm phân công, mỗi nhóm chứa các phân công phải xếp cùng một tiết, các phân công thuộc các nhóm khác nhau phải xếp vào các tiết khác nhau Nếu xếp 27 nhóm này vào 27 tiết thì sẽ đáp ứng được không bị trùng(trùng lớp, trùng giáo viên)
Trang 22Vấn đề là xếp các nhóm phân công này vào các tiết theo thứ tự như thế nào để thời khóa biểu hợp lý hơn.Ví dụ 5 tiết toán cùng 1 lớp mà xếp vào 5 tiết liên tiếp thì khó cho học sinh Nói cách khác ta cần phải tìm cách xếp thỏa mãn nhiều nhất các ràng buộc mềm sau:
Các môn học 2,3 tiết trong tuần thì một ngày chỉ có một tiết đối với một lớp, các ngày có các tiết này cách nhau ít nhất 2 ngày
Các môn học 4 tiết trở lên trong tuần thì một ngày tối đa 3 tiết, các tiết cùng ngày liền nhau, các tiết khác ngày cách nhau ít nhất 2 ngày
Càng nhiều ràng buộc mềm được thỏa mãn thì cách xếp càng hợp lý
Xếp 27 nhóm phân công vào 27 tiết trong tuần, nghĩa là sẽ có tất cả 27! cách xếp Đây là một con số vô cùng lớn Nếu dùng phương pháp vét cạn xét hết tất cả các trường hợp để tìm cách xếp hợp lý nhất thì sẽ tốn kém tài nguyên và thời gian
Vì vậy nhóm sử dụng giải thuật di truyền để tìm ra thứ tự xếp hợp lý Kết quả tìm được không phải là kết quả tối ưu nhưng sẽ là kết quả tốt và không cần xét hết các trường hợp
Mỗi cá thể sẽ là một cách xếp, là một thứ tự thể hiện cách sắp xếp 27 nhóm phân công vào 27 tiết trong tuần Được biểu diễn bằng một danh sách có 27 vị trí lưu các tiết.Ví dụ:
Trang 23 Tìm vị trí a2 = h2.indexOf(h1[a])
Đổi chổ h1[a] và h2[a]
Đổi chỗ h1[a1] và h2[a2]
Trang 24H sau khi đột biến:
1 2 3 7 5 6 4 8 9 …
adaptive: hàm tính độ thích nghi của 1 cá thể
maxAdaptive: độ thích nghi tối đa Được tính bằng cách giả sử không có vi phạm
ràng buộc mềm nào ở tất cả các tiết trong tuần
adaptive_threshold = 0.8 * maxAdaptive: Ngưỡng xác định tiêu chuẩn dừng giài
thuật tìm kiếm
highestAdaptive: độ thích nghi cao nhất trong quần thể hiện tại
m: Tỉ lệ cá thể bị đột biến
*Thuật toán:
Khởi tạo quần thể: P Tạo ngẫu nhiên 27 cá thể
Ước lượng: Ứng với mỗi h trong P, tính adaptive(h)
while highestAdaptive < adaptive_threshold do
Tạo thế hệ mới, PS
1 Chọn cá thể: chọn theo xác suất các cá thể trong quần thể P thêm
vào P S Xác suất chọn Pr(h i ) của cá thể h i thuộc P được tính bởi
công thức:
Pr(hi)=adaptive(hi)/maxAdaptive()
2 Lai ghép: chọn lọc theo xác suất các cặp giả thuyết từ quần thể P,
theo Pr(h i ) đã tính ở bước trên Ứng với mỗi cặp <h 1 , h 2 >, tạo ra hai
con bằng cách áp dụng toán tử lai ghép Thêm tất các các con vào
P S
3 Đột biến: Chọn m% cá thể của PS với xác suất cho mỗi cá thể là như nhau Ứng với mỗi cá thể được chọn áp dụng toán tử đột biến cho nó
4 Cãp nhật: P PS.
Trang 25 Trả về cá thể trong P có độ thích nghi cao nhất
Trang 26Chương 3: PHẦN MỀM TỰ ĐỘNG SẮP XẾP THỜI KHÓA BIỂU
3.1 Giới thiệu trường THPT Tam Phú
Địa chỉ: 3 đường Phú Châu, khu phố 5, phường Tam Phú quận Thủ Đức
Email internet: c3tamphu.tphcm@moet.edu.vn
Hiệu trưởng: Ông Trần Anh Dũng
Phó Hiệu trưởng: Ông Nguyễn Văn Chiến - Ông Trần Văn Long - Bà Lê Thanh
Trang 27Bảng 3.2 Tình hình giáo viên trường Tam Phú
Vào đầu mỗi học kỳ, trường cần xây dựng một thời khóa biểu cho việc học tập và giảng dạy Ở trường THPT thì mỗi lớp học 5 tiết một ngày, học buổi sáng hoặc chiều.Có thể sẽ có một ngày học ít hơn 5 tiết, thông thường là vào thứ 5 Ngoài ra, có một số tiết đặc biệt là tiết chào cờ và sinh hoạt lớp, thông thường là vào thứ 2 và thứ 7
Một số yêu cầu linh động của trường THPT Tam Phú
Linh động về số tiết học trong tuần: trong tuần từ thứ hai đến thứ bảy có
6 ngày, mỗi ngày học 5 tiết, như vậy trong tuần một lớp có thể học tối đa 30 tiết Tuy nhiên, thông thường còn có một số môn học đặc biệt như chào cờ, sinh hoạt lớp đã chiếm chỗ của vài tiết Ngoài ra còn có ngày học ít tiết hơn những ngày khác ( thường là vào thứ năm) Vì vậy trong tuần một lớp chỉ học khoảng 27 tiết Số tiết này là một tham số được cung cấp lúc khởi tạo
dữ liệu học kỳ, và chương trình sẽ linh động xếp thời kháo biểu theo tham
số này
Linh động về vị trí của các môn học đặc biệt: thông thường môn chào cờ
được sếp vào tiết đầu của ngày thứ hai đối với các lớp học buổi sáng, tiết cuối của ngày thứ hai đối với các lớp học buổi chiều Môn sinh hoạt lớp được xếp vào tiết cuối của ngày thứ bảy Tuy nhiên vị trí các môn này không nên xếp cố định mà cần phải có thể linh động thay đổi theo điều kiện cụ thể của trường Vì vậy, vị trí các môn đặc biệt cũng sẽ là các tham số được cung cấp lúc khởi tạo dữ liệu, và chương trình sẽ linh động theo
Trang 28 Linh động về ngày học ít: tương tự, ngày học ít tiết hơn những ngày khác
cũng là một tham số và có thể linh động được Những ngày khác sẽ học 5 tiết, và số tiết còn lại sẽ là của ngày học ít Vì vậy số tiết của ngày học ít sẽ tùy thuộc vào số tiết học trong tuần
Linh động về số tiết dạy tối đa trong tuần của giáo viên: được chia ra số
tiết dạy tối đa buổi sáng và số tiết dạy tối đa buổi chiều Khi phân công dạy học cho giáo viên, không được phân công nhiều hơn số tiết tối đa này Số tiết tối đa này cũng sẽ là tham số linh động và có thể thay đổi được
3.2 Môi trường ứng dụng phần mềm
Phần mềm được viết trên môi trường Net Framework và MS SQL Server 2005
3.3 Mô hình hóa
3.3.1 Mô hình 1-tier, 3-layers
Hình 3.1 Mô hình 1-tier, 3-layers Vai trò của các layer
Trang 29 GUI (Presentation) Layer: Nhập liệu và trình bày dữ liệu, có thể bao gồm các bước kiểm tra dữ liệu trước khi gọi Business Logic Layer
Business Logic Layer: Kiểm tra các yêu cầu nghiệp vụ trước khi cập nhật
dữ liệu, quản lý các Transaction, quản lý các concurrent access
Data Access Layer: Kết nối CSDL, tìm kiếm, thêm, xóa, sửa,…trên CSDL Việc trao đổi liên lạc giữa các layer
Hình 3.2 Việc trao đổi liên lạc giữa các layer
Sự phụ thuộc giữa các layer
Trang 30Hình 3.3 Sự phụ thuộc giữa các layer Tính chất của mô hình 3 layer
Giảm sự kết dính giữa các thực thể phần mềm(decoupling)
Tái sử dụng
Chia sẽ trách nhiệm
3.3.2 Sơ đồ luồng dữ liệu
Sơ đồ luồng dữ liệu thể hiện cho yêu cầu Lập danh sách lớp học :
Trang 31Sơ đồ 3.1 Sơ đồ luồng dữ liệu yêu cầu Lập danh sách lớp học
Mô tả chi tiết:
D1: thông tin do người dùng nhập(mã lớp, tên lớp)
Thiết bị nhập
Thiết bị xuất
Lập danh sách lớp học
Bộ nhớ phụ
D1 D2
D3
D4 D5 D6
Trang 32 B5: lưu D4 vào bộ nhớ phụ
B6: xuất danh sách ra thiết bị xuất
B7: đóng kết nối CSDL
B8: end
Sơ đồ luồng dữ liệu thể hiện cho yêu cầu Lập danh sách môn học :
Sơ đồ 3.2 Sơ đồ luồng dữ liệu yêu cầu Lập danh sách môn học
Mô tả chi tiết:
D : thông tin do người dùng nhập(mã môn học, tên môn học….)
Thiết bị nhập
Thiết bị xuất
Lập danh sách môn học
Bộ nhớ phụ
D1 D2
D3
D4 D5 D6
Trang 34Sơ đồ 3.3 Sơ đồ luồng dữ liệu yêu cầu Lập danh sách giáo viên
Mô tả chi tiết:
D : thông tin do người dùng nhập(mã giáo viên, họ tên….)
Thiết bị nhập
Thiết bị xuất
Lập danh sách giáo viên
Bộ nhớ phụ
D1 D2
D3
D4 D5 D6
Trang 35 B5: lưu D4 vào bộ nhớ phụ
B6: xuất danh sách ra thiết bị xuất
B7: đóng kết nối CSDL
B8: end
Sơ đồ luồng dữ liệu thể hiện cho yêu cầu Lập danh sách khối lớp :
Sơ đồ 3.4 Sơ đồ luồng dữ liệu yêu cầu Lập danh sách khối lớp
Mô tả chi tiết:
D : thông tin do người dùng nhập(mã khối , tên khối….)
Thiết bị nhập
Thiết bị xuất
Lập danh sách khối lớp
Bộ nhớ phụ
D1 D2
D3
D4 D5 D6
Trang 36Sơ đồ luồng dữ liệu thể hiện cho yêu cầu Phân công học tập
Sơ đồ 3.5 Sơ đồ luồng dữ liệu yêu cầu phân công học tập
Người dùng thủ thư
Thiết bị nhập
Thiết bị xuất
Phân công học tập
Bộ nhớ phụ
D1 D2
D3
D4 D5 D6