Professional Documents
Culture Documents
ðỀ TÀI :
NGHIÊN CỨU XÂY DỰNG HỆ THỐNG WEBSITE
QUẢN LÝ ðÀO TẠO TÍN CHỈ CHO ðẠI HỌC ðÀ NẴNG
Mã số : 02T4-15
02T4-21
Ngày bảo vệ : 13/06/2007 – 15/06/2007
ðÀ NẴNG, 05/2007
LỜI CẢM ƠN
Trước hết, chúng con xin cảm ơn cha mẹ, những người ñã có công sinh
thành, dưỡng dục chúng tôi ñến ngày hôm nay.
Chúng tôi xin chân thành cảm ơn các thầy cô trong khoa Công nghệ
Thông tin, các thầy cô giảng dạy trong trường ðại học Bách khoa ðà Nẵng
ñã truyền ñạt những kiến thức quý báu cho chúng tôi trong những năm học
vừa qua. ðặc biệt, chúng tôi xin chân thành cảm ơn thầy giáo Huỳnh Hữu
Hưng - thuộc bộ môn Mạng máy tính, khoa Công nghệ Thông tin, trường
ðại học Bách khoa ðà Nẵng ñã tận tình hướng dẫn, ñộng viên và giúp ñỡ
chúng tôi trong suốt thời gian thực hiện ñề tài.
Chúng tôi cũng xin chân thành cảm ơn anh Nguyễn Thanh Nam, chuyên
viên phòng ðào tạo và Công tác Sinh viên, trường ðại học Bách khoa ðà
Nẵng ñã giúp ñỡ, hỗ trợ số liệu và tư vấn về nghiệp vụ quản lý sinh viên
cho chúng tôi trong thời gian làm ñề tài.
Cuối cùng, xin chân thành cảm ơn bạn bè gần xa, bạn bè trong khoa
Công nghệ Thông tin ñã giúp ñỡ, chia sẻ kiến thức cũng như kinh nghiệm
và tài liệu cho chúng tôi trong quá trình nghiên cứu thực hiện ñề tài này.
Một lần nữa, xin chân thành cảm ơn!
1 Những nội dung trong luận văn này là do tôi thực hiện dưới sự
hướng dẫn trực tiếp của thạc sĩ Huỳnh Hữu Hưng.
2 Mọi tham khảo dùng trong luận văn ñều ñược trích dẫn rõ ràng tên
tác giả, tên công trình, thời gian, ñịa ñiểm công bố.
3 Mọi sao chép không hợp lệ, vi phạm quy chế ñào tạo, hay gian trá,
tôi xin chịu hoàn toàn trách nhiệm.
Sinh viên,
Lê Văn Minh
Nguyễn Minh Quang
MỤC LỤC
TỔNG QUAN ðỀ TÀI ...................................................................................1
I. Bối cảnh ñề tài ...................................................................................................... 1
II. Mục ñích ............................................................................................................... 2
III. Hướng nghiên cứu................................................................................................. 2
CƠ SỞ LÝ THUYẾT.......................................................................................4
I. Lập trình Java trong môi trường Web ................................................................... 4
I.1. Một số khái niệm liên quan ñến Web............................................................ 4
I.2. Kết nối cơ sở dữ liệu...................................................................................... 9
II. Mô hình phát triển ứng dụng Web ...................................................................... 11
II.1. Kiến trúc mô hình 1 ..................................................................................... 11
II.2. Kiến trúc mô hình 2 (Model – View – Controller)...................................... 12
III. Ngôn ngữ mô hình hóa thống nhất (UML) ......................................................... 12
III.1. Giới thiệu UML ....................................................................................... 12
III.2. UML và các giai ñoạn của chu trình phát triển phần mềm...................... 15
PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG................................................ 17
I. Phân tích hiện trạng............................................................................................. 17
II. Phân tích chức năng của hệ thống....................................................................... 29
II.1. Các tác nhân (actor) ..................................................................................... 29
II.2. Usecase của admin....................................................................................... 29
II.3. Usecase của giáo viên.................................................................................. 34
II.4. Usecase của sinh viên .................................................................................. 36
III. Thiết kế ............................................................................................................... 39
III.1. Sơ ñồ lớp (class diagram) ........................................................................ 39
III.2. Sơ ñồ thành phần (component diagram).................................................. 43
III.3. Sơ ñồ triển khai (deployment diagram) ................................................... 44
XÂY DỰNG CHƯƠNG TRÌNH VÀ KẾT QUẢ ðẠT ðƯỢC ................ 45
I. Xây dựng chương trình ....................................................................................... 45
I.1. Xây dựng dữ liệu ......................................................................................... 45
I.2. Xây dựng giao diện...................................................................................... 56
I.3. Xây dựng gói theo mô hình MVC ............................................................... 58
I.4. Các giải pháp ............................................................................................... 61
II. Kết quả ñạt ñược ................................................................................................. 69
KẾT LUẬN.................................................................................................... 75
I. ðánh giá kết quả ................................................................................................. 75
I.1. Về mặt lý thuyết........................................................................................... 75
I.2. Về mặt chương trình.................................................................................... 75
II. Hướng phát triển ................................................................................................. 76
II.1. Về mặt lý thuyết........................................................................................... 76
II.2. Về mặt chương trình.................................................................................... 76
DANH MỤC HÌNH VẼ
Bảng 1 – Một số thẻ (tag) thường sử dụng trong ngôn ngữ HTML .......................................... 4
Bảng 2 – Các lệnh của giao thức HTTP .................................................................................... 5
Bảng 3 – Các tùy chọn của chỉ thị page..................................................................................... 8
Bảng 4 – Các hành ñộng trong JSP ........................................................................................... 9
Bảng 5 – Chi tiết từng loại khóa học ....................................................................................... 19
Bảng 6 – ðiểm rèn luyện quy ñổi ............................................................................................ 20
Bảng 7 – Mã của một số trường thuộc ðH ðà Nẵng............................................................... 21
Bảng 8 – Mã của các khoa....................................................................................................... 22
Bảng 9 – Mã của các ngành thuộc ñại học Bách Khoa ðà Nẵng ............................................ 23
Bảng 10 – Bảng tblChiTietDiemCuaSinhVien ....................................................................... 48
Bảng 11 – Bảng tblChiTietKhungChuongTrinh...................................................................... 48
Bảng 12 – Bảng tblChiTietHocPhan ...................................................................................... 49
Bảng 13 – Bảng tblDiemCuaSinhVien.................................................................................... 49
Bảng 14 – Bảng tblDonVi ....................................................................................................... 49
Bảng 15 – Bảng tblGiaoVien................................................................................................... 50
Bảng 16 – Bảng tblHocKy....................................................................................................... 51
Bảng 17 – Bảng tblHocKyHienHanh ...................................................................................... 51
Bảng 18 – Bảng tblHocPhan.................................................................................................... 51
Bảng 19 – Bảng tblKhoa.......................................................................................................... 51
Bảng 20 – Bảng tblKhoaHoc................................................................................................... 52
Bảng 21 – Bảng tblKhungChuongTrinh.................................................................................. 52
Bảng 22 – Bảng tblLoaiDiem .................................................................................................. 52
Bảng 23 – Bảng tblLopHocPhan ............................................................................................. 52
Bảng 24 – Bảng tblLopHocPhan ............................................................................................. 53
Bảng 25 – Bảng tblNganh........................................................................................................ 53
Bảng 26 – Bảng tblNhomLopHocPhan ................................................................................... 53
Bảng 27 – Bảng tblPhongHoc ................................................................................................. 53
Bảng 28 – Bảng tblQuanHe..................................................................................................... 53
Bảng 29 – Bảng tblQuanHeHocPhan ...................................................................................... 54
Bảng 30 – Bảng tblSinhVienDangKy...................................................................................... 54
Bảng 31 – Bảng tblThoiKhoaBieu .......................................................................................... 54
Bảng 32 – Bảng tblThoiKhoaBieuSinhVien ........................................................................... 54
Bảng 33 – Bảng tblSinhVien ................................................................................................... 55
Bảng 34 – Biểu diễn quan hệ theo danh sách ñỉnh kề ............................................................. 62
Bảng 35 – Bảng quan hệ học phần .......................................................................................... 63
Bảng 36 – Nội dung một class ñọc file excel .......................................................................... 68
DANH MỤC TỪ VIẾT TẮT
Nền giáo dục của nước ta ñang từng bước cải cách và phát triển. ñại học ðà Nẵng là một
trong ba trọng ñiểm trong việc phát triển nền giáo dục ñại học của nước ta.
Trong quá trình phát triển của mình, ñại học ðà Nẵng ñang chuyển dần từ ðào tạo theo
niên chế sang ðào tạo theo tín chỉ. Quản lý ñào tạo tín chỉ tuy là một công việc khó khăn và
phức tạp nhưng công việc này vô cùng quan trọng; quản lý tốt thì chất lượng ñào tạo ñược
nâng cao.
Hiện tại, việc quản lý ñào tạo tín chỉ tại ðại học ðà Nẵng ñang gặp một số khó khăn, xuất
phát từ nhiều nguyên nhân khác nhau: mới ñầu chuyển sang ñào tạo tín chỉ, hệ thống quản lý
mới xây dựng, chưa thống nhất,… và việc quản lý này vẫn còn mang nhiều ảnh hưởng của hệ
thống quản lý niên chế hiện có. Sinh viên phải ñăng ký môn học bằng tay, việc kiểm tra xung
ñột về thời khóa biểu của sinh viên không ñược thực hiện trong quá trình ñăng ký. Sinh viên
vẫn chưa biết ñược quan hệ của các học phần, học phần nào nên học trước học phần nào nên
học sau… Việc quản lý của nhân viên quản trị cũng gặp nhiều khó khăn như xây dựng khung
chương trình, xây dựng thời khóa biểu, nhập ñiểm…
Bài toán ñặt ra lúc này là làm sao ñể xây dựng ñược một hệ thống website quản lý ñào tạo
tín chỉ ñáp ứng ñược tất cả nhu cầu cho giáo viên, sinh viên và quản trị viên. Cụ thể là hệ
thống website phải có những chức năng sau:
− Hệ thống cho phép giáo viên dễ dàng biết ñược thời khóa biểu của mình và danh sách
các lớp học phần mà mình dạy, cụ thể là giáo viên sẽ dạy ở phòng nào, môn gì vào
thời ñiểm hiện tại.
− Hệ thống cho phép sinh viên dễ dàng biết ñược ñiểm của mình, số tín chỉ mà mình ñã
ñạt ñược, biết ñược rằng nên ñăng ký môn học nào trước và cuối cùng là cho phép
sinh viên ñăng ký một lớp học phần.
− Hệ thống còn giúp quản trị viên dễ dàng cập nhật các thông tin liên quan ñến ñào tạo,
dễ dàng xây dựng khung chương trình và dễ dàng xây dựng thời khóa biểu cho các lớp
học phần mà không lo xung ñột về thời gian.
Nghiên cứu lý thuyết xây dựng một hệ thống website tác nghiệp bằng công nghệ Java, cụ
thể là JSP và Servlet.
Công cụ xây dựng hệ thống website: Sun Java JDK 1.5, Sun IDE NetBean 4.1, Apache
Tomcat 5.5, Microsoft SQL Server 2000 Service Pack 4, Microsoft Visio 2003 beta.
− Giáo viên xem thời khóa biểu: Sau khi ñăng nhập, giáo viên xem ñược thời khóa
biểu của mình, cụ thể là giáo viên có thể biết ñược trong tuần mình sẽ phải dạy những
lớp nào, ở phòng nào vào những thời gian nào.
− Giáo viên xem danh sách lớp học phần: Giáo viên có thể xem danh sách các lớp
học phần mà mình dạy. Cụ thể là có thể xem ñược số lượng sinh viên tối ña, số lượng
sinh viên tối thiểu và số lượng sinh viên hiện tại.
− Sinh viên xem khung chương trình: Sinh viên xem khung chương trình mà mình
cần học. Cụ thể là sinh viên có thể biết ñược trong một học kỳ cụ thể, mình sẽ phải
học những môn nào.
− Sinh viên xem học phần và quan hệ học phần: Sinh viên có thể xem danh sách các
học phần và quan hệ giữa chúng. Các học phần này ñược trình bày ở dạng cây ñể sinh
viên dễ dàng biết ñược học phần nào nên học trước và học phần nào nên học sau.
− Sinh viên xem ñiểm: Sinh viên xem ñiểm của mình. Cụ thể là sinh viên có thể biết
ñược ñiểm của từng học phần mà mình ñã học, biết ñược số tín chỉ mình ñã ñạt ñược
và biết ñược mình ñã hoàn tất bao nhiêu phần của quá trình học ñại học tại trường.
− Sinh viên ñăng ký lớp học phần: Sinh viên xem danh sách các lớp học phần ñang
ñược mở trong học kỳ hiện hành ñể từ ñó ñăng ký vào một trong các lớp ñó. Quá trình
ñăng ký này sẽ ñược kiểm tra chặt chẽ các ràng buộc. Ngoài ra, sinh viên có thể hủy
bỏ một lớp học phần mà mình ñã ñăng ký.
− Sinh viên xem thời khóa biểu: Sinh viên xem thời khóa biểu trong học kỳ hiện
hành.
− Nhân viên quản trị upload các danh sách liên quan: Nhân viên quản trị (admin)
sau khi ñăng nhập sẽ có chức năng upload, chức năng này cho phép upload danh sách
giáo viên, sinh viên, lớp học, phòng học, học phần và các thông tin khác. Các danh
sách này ñược lưu ở dạng file excel và tự ñộng ñược cập nhật vào cơ sở dữ liệu.
− Nhân viên quản trị cập nhật thông tin: Nhân viên quản trị dễ dàng cập nhật thông
tin của ñối tượng bất kỳ liên quan ñến quá trình quản lý ñào tạo.
− Nhân viên quản trị xây dựng khung chương trình: Nhân viên quản trị dễ dàng xây
dựng khung chương trình cho từng khóa học của từng ngành.
− Nhân viên quản trị xây dựng thời khóa biểu: Nhân viên quản trị dễ dàng xây dựng
thời khóa biểu cho từng lớp học phần mà không lo ngại xung ñột thời khóa biểu.
Với kết quả dự kiến ñạt ñược của chương trình, luận văn ñược tổ chức thành các chương
cụ thể như sau:
Chương 1. Cơ sở lý thuyết: Giới thiệu tổng quan lý thuyết và công cụ thực hiện ñể tài.
Trong chương này, chúng tôi trình bày lý thuyết xây dựng một hệ thống website bằng ngôn
ngữ JSP theo mô hình Model View Controller.
Chương 2. Phân tích thiết kế hệ thống: Trong chương này, chúng tôi trình bày về phân
tích hiện trạng, phân tích hệ thống và thiết kế hệ thống.
Chương 3. Xây dựng chương trình và kết quả ñạt ñược: Trong chương này, chúng tôi trình
bày các bước xây dựng chương trình và các kết quả ñạt ñược.
CƠ SỞ LÝ THUYẾT
<html> </html> Cặp thẻ này quy ước mở ñầu và kết thúc cho tài liệu HTML. Nội dung của
HTML ñược ñặt giữa hai thẻ này.
<b>, <i> Thẻ ñịnh dạng in ñậm và in nghiêng của một chuỗi văn bản trong tài liệu.
<body> </body> Thẻ ñịnh dạng phần thân của tài liệu HTML.
<table> </table> Thẻ ñịnh dạng một bảng trong tài liệu HTML.
<tr> </tr> Thẻ ñịnh dạng một hàng trong bảng của tài liệu HTML
<td> </td> Thẻ ñịnh dạng một ô trong một bảng của tài liệu HTML
Bảng 1 – Một số thẻ (tag) thường sử dụng trong ngôn ngữ HTML
I.1.3. ðịa chỉ ñịnh vị tài nguyên Url (Uniform Resource Locator)
Url (Uniform Resource Locator) là ñịa chỉ ñịnh vị tài nguyên thống nhất, ñịa chỉ này trỏ tới
vị trí tài nguyên trên máy chủ. ðịa chỉ này gồm 4 phần: phần giao thức (protocol), phần ñịa
chỉ máy chủ (address), số hiệu cổng của dịch vụ và phần ñường dẫn tương ñối ñến nơi chứa
tài nguyên.
GET Yêu cầu lấy nội dung trang dữ liệu từ Web Server
I.1.7. Servlet
Công nghệ Servlet là cơ sở ñể triển khai các ứng dụng Web sử dụng ngôn ngữ lập trình
Java, là công nghệ quan trọng, cơ bản ñể triển khai ứng dụng Web: Java Server Page.
Servlet là một lớp Java có thể ñược load ñộng và ñược chạy bởi một Web Server ñặc biệt.
Một Web Server hiểu ñược Servlet ñược gọi là servlet container hay servlet engine.
Servlet tương tác với client thông qua mô hình request-response dựa trên HTTP. Bởi vì
công nghệ Servlet dựa trên HTTP nên servlet container cũng phải hỗ trợ HTTP hay một giao
thức tương tự như HTTPS (HTTP over SSL) ñể bảo mật hơn.
Cách thức servlet làm việc: Một Servlet sẽ ñược nạp bởi servlet container khi lần ñầu tiên
servlet ñược yêu cầu. Servlet sẽ xử lý các yêu cầu người sử dụng và trả về hồi ñáp ñến servlet
container. Sau ñó servlet vẫn ở trong bộ nhớ ñể ñợi các yêu cầu khác nó sẽ ñược unload khi
servlet container thấy bộ nhớ còn ít.
− Nạp Servlet: Một Servlet có thể nạp vào bộ nhớ ở 3 thời ñiểm khác nhau: khi server
khởi ñộng, khi người quản trị yêu cầu hoặc khi trình duyệt triệu gọi Servlet từ máy
khách. ðể nạp Servlet, trình chủ Web server cần phải biết tên lớp của Servlet. Thông
thường tên lớp của Servlet (tên file .class) cũng là tên mà trình duyệt dùng triệu gọi
Servlet khi bạn thực hiện quá trình ñăng ký và ánh xạ. Tuy nhiên, bạn cũng có thể ánh
xạ ñổi tên Servlet khác với tên file *.class của nó thậm chí ñổi tên tiếp ñầu ngữ dùng
ñể triệu gọi Servlet. Khi có một yêu cầu triệu gọi Servlet, trình chủ Web Server sẽ
xem Servlet ñã nạp vào bộ nhớ hay chưa, nếu chưa nó sẽ nạp Servlet vào bộ nhớ. Một
khi Servlet ñược nạp, Web Server sẽ tiến ñến giai ñoạn khởi tạo Servlet
− Khởi tạo Servlet: Trình chủ Web Server khởi tạo Servlet bằng cách gọi ñến phương
thức init() mà Servlet cài ñặt. Phương thức này ñược gọi một lần duy nhất.
− Thực thi Servlet: Khi trình duyệt gọi hoặc các trang JSP triệu gọi Servlet thông qua
ñịa chỉ URL, trình chủ Web Server sẽ chính thức gọi Servlet thực thi thông qua các
phương thức như doGet(), doPost() hoặc service(). Sau khi các phương thức này thực
thi xong, Servlet vẫn giữ lại trong bộ nhớ ñể phục vụ cho lần triệu gọi tiếp theo. ðiều
này giúp cho Servlet thực thi nhanh hơn.
− Dọn dẹp Servlet: Servlet không giữ lại trong bộ nhớ vĩnh viễn, sẽ ñến lúc cần loại bỏ
Servlet ra khỏi bộ nhớ. Trước khi chấm dứt, Web Server sẽ triệu gọi ñến phương thức
destroy() của Servlet.
Cú pháp của JSP cho thêm các thẻ XML mới, gọi là JSP actions - hành ñộng JSP. Những
"hành ñộng JSP" này ñược dùng ñể khởi ñộng chức năng sẵn có, là những chức năng ñã ñược
xây dựng trước. Cộng thêm vào ñó, công nghệ còn cho phép chúng ta tạo ra các thư viện thẻ
JSP (JSP tag libraries), là những cái ñóng vai trò vào việc mở rộng các thẻ HTML hay XML
tiêu chuẩn. Thư viện thẻ (Tag libraries) là phương pháp mở rộng khả năng của một máy chủ
web trong khi những mở rộng ñó không phụ thuộc vào hệ nền (về cả cấu trúc máy cũng như
hệ ñiều hành ñược dùng).
Trước khi hiển thị ra trình duyệt, tập tin JSP phải ñược biên dịch thành Servlet, dùng bộ
biên dịch JSP (JSP compiler). Bộ biên dịch JSP có thể tạo servlet thành mã nguồn Java trước,
rồi biên dịch mã nguồn ra tập tin .class dùng bộ biên dịch Java, hoặc có thể trực tiếp tạo mã
byte code cho servlet từ trang JSP.
Một trang JSP có thể ñược phân thành từng phần nhỏ như sau:
− các phần tử kịch bản JSP (scripting elements) và các biến (variables), ví dụ:
− <% scriptlet %>
− <%= expression %>
− <%! declaration %>
− hành ñộng JSP (JSP actions)
− thẻ tùy biến (custom tags)
Các chỉ thị JSP bao gồm:
− include – Chỉ thị include thông báo cho bộ biên dịch JSP cho nhập toàn bộ nội dung
của một tập tin vào trong nội dung hiện có. Việc làm này tương tự như việc chúng ta
lấy nội dung của tập tin ñó dán trực tiếp vào trong nội dung của tập tin ñang dùng
− page – Có nhiều tùy chọn với chỉ thị page.
− out (xuất) – JSPWriter sử dụng nó ñể ghi dữ liệu vào luồng dữ liệu hồi âm (response
stream).
− page (trang) – Bản thân servlet.
− pageContext (ngữ cảnh của trang) – Một PageContext là một thực thể có chứa dữ liệu
liên kết với toàn bộ trang web. Một trang HTML nào ñấy có thể ñược truyền qua
nhiều trang JSP.
− request (yêu cầu) – ðối tượng yêu cầu HTTP.
− response (hồi âm) – ðối tượng hồi âm HTTP.
− session (phiên giao dịch) – ðối tượng phiên giao dịch HTTP. Cái này có thể ñược
dùng ñể theo dõi tin tức về một người dùng, từ yêu cầu này ñến yêu cầu khác
Hình 2 – JDBC kết nối trực tiếp với trình ñiều khiển
I.2.2. Kết nối thông qua cầu nối ODBC (Open Database Connectivity)
ODBC (Open Source Connectivity) là cách kết nối tổng quát nhất ñến mọi hệ cơ sở dữ liệu
thông qua trình quản lý ODBC của Windows. Mỗi hệ cơ sở dữ liệu sẽ cung cấp một trình
ñiều khiển có khả năng ñọc hiểu ñược cơ sở dữ liệu của chúng. Trình ñiều khiển này sẽ ñược
ñăng ký với bộ quản lý ODBC. Tất cả các lệnh truy xuất cơ sở dữ liệu sau ñó ñược thực thi
bằng lệnh SQL. Java cho bạn sử dụng JDBC ñể gọi ODBC và bằng cách này bạn có thể kiểm
soát nhiều hệ quản trị cơ sở dữ liệu khác nhau. Quan hệ cầu nối JDBC-ODBC ñược thể hiện
ở hình dưới. Sun cung cấp sẵn thư viện JDBC-ODBC kèm theo bộ JDK và bạn có thể dùng
miễn phí.
Java Application,
Applet, Servlet
JDBC Driver
ODBC
Database Driver
CSDL
I.2.3. Kết nối thông qua ứng dụng mạng trung gian
Ngày nay các ứng dụng ñều gắn liền với mạng Internet. Theo mô hình lập trình phân tán,
ứng dụng mạng trung gian (middle-ware) trên một máy chủ sẽ chịu trách nhiệm kết nối
CSDL. Nhiệm vụ của trình khách là sử dụng những trình ñiều khiển JDBC gọn nhẹ, có khả
năng giao tiếp với ứng dụng trung gian qua Internet ñể truy vấn dữ liệu.
Hình 4 – JDBC kết nối thông qua các ứng dụng mạng trung gian
Hình 5 – Mô hình 1
Cấu trúc Mô hình 1 rất ñơn giản, một request tạo bởi JSP hoặc Servlet và sau ñó JSP hoặc
Servlet kia sẽ xử lý request, kiểm tra tính hợp lệ dữ liệu, xử lý các nguyên tắc tác nghiệp và
tạo ra một response. Mặc dù ñơn giản, nhưng Mô hình 1 không thích hợp ñể phát triển những
ứng dụng lớn bởi vì chắc hẳn một số lượng lớn các hàm sẽ ñươc nhân bản trong mỗi trang
JSP. Không những thế, Mô hình 1 còn không cần thiết phải có sự liên kết giữa bussiness logic
và presentation logic của ứng dụng. Khi kết hợp business logic với presentation logic làm cho
nó khó có thể ñưa vào một “view” mới hay một ñiểm truy cập mới trong ứng dụng. Ví dụ như
trong một giao diện HTML, bạn muốn thêm vào một giao diện mới như Wireless Markup
Language (WML) cho truy cập không dây thì việc ñó là rất khó.
Tầm quan trọng của mô hình ñã ñược lĩnh hội một cách thấu ñáo trong hầu như tất cả các
ngành khoa học kỹ thuật từ nhiều thế kỷ nay. Bất kỳ ở ñâu, khi muốn xây dựng một vật thể
nào ñó, ñầu tiên người ta ñã tạo nên các bản vẽ ñể quyết ñịnh cả ngoại hình lẫn phương thức
hoạt ñộng của nó. Chẳng hạn các bản vẽ kỹ thuật thường gặp là một dạng mô hình quen
thuộc. Mô hình nhìn chung là một cách mô tả của một vật thể nào ñó. Vật ñó có thể tồn tại
trong một số giai ñoạn nhất ñịnh, dù ñó là giai ñoạn thiết kế hay giai ñoạn xây dựng hoặc chỉ
là một kế hoạch. Nhà thiết kế cần phải tạo ra các mô hình mô tả tất cả các khía cạnh khác
nhau của sản phẩm. Ngoài ra, một mô hình có thể ñược chia thành nhiều hướng nhìn, mỗi
hướng nhìn trong số chúng sẽ mô tả một khía cạnh riêng biệt của sản phẩm hay hệ thống cần
ñược xây dựng. Một mô hình cũng có thể ñược xây dựng trong nhiều giai ñoạn và ở mỗi giai
ñoạn, mô hình sẽ ñược bổ sung thêm một số chi tiết nhất ñịnh.
Mô hình thường ñược mô tả trong ngôn ngữ trực quan, ñiều ñó có nghĩa là ña phần các
thông tin ñược thể hiện bằng các ký hiệu ñồ họa và các kết nối giữa chúng, chỉ khi cần thiết
một số thông tin mới ñược biểu diễn ở dạng văn bản; Theo ñúng như câu ngạn ngữ "Một bức
tranh nói nhiều hơn cả ngàn từ". Tạo mô hình cho các hệ thống phần mềm trước khi thực sự
xây dựng nên chúng, ñã trở thành một chuẩn mực trong việc phát triển phần mềm và ñược
chấp nhận trong cộng ñồng làm phần mềm giống như trong bất kỳ một ngành khoa học kỹ
thuật nào khác. Việc biểu diễn mô hình phải thõa mãn các yếu tố sau:
Nói tóm lại, mô hình hóa một hệ thống nhằm mục ñích:
− Hình dung một hệ thống theo thực tế hay theo mong muốn của chúng ta .
− Chỉ rõ cấu trúc hoặc ứng xử của hệ thống.
− Tạo một khuôn mẫu hướng dẫn nhà phát triển trong suốt quá trình xây dựng hệ thống.
− Ghi lại các quyết ñịnh của nhà phát triển ñể sử dụng sau này.
UML là một ngôn ngữ mô hình hoá thống nhất có phần chính bao gồm những ký hiệu hình
học, ñược các phương pháp hướng ñối tượng sử dụng ñể thể hiện và miêu tả các thiết kế của
một hệ thống. Nó là một ngôn ngữ ñể ñặc tả, trực quan hoá, xây dựng và làm sưu liệu cho
nhiều khía cạnh khác nhau của một hệ thống có nồng ñộ phần mềm cao. UML có thể ñược sử
dụng làm công cụ giao tiếp giữa người dùng, nhà phân tích, nhà thiết kế và nhà phát triển
phần mềm.
Trong quá trình phát triển có nhiều công ty ñã hỗ trợ và khuyến khích phát triển UML có
thể kể tới như : Hewlett Packard, Microsoft, Oracle, IBM, Unisys.
− Mô hình hoá các hệ thống sử dụng các khái niệm hướng ñối tượng.
− Thiết lập một kết nối từ nhận thức của con người ñến các sự kiện cần mô hình hoá.
− Giải quyết vấn ñề về mức ñộ thừa kế trong các hệ thống phức tạp, có nhiều ràng buộc
khác nhau.
− Tạo một ngôn ngữ mô hình hoá có thể sử dụng ñược bởi người và máy.
III.2. UML và các giai ñoạn của chu trình phát triển phần mềm
III.2.1. Giai ñoạn nghiên cứu sơ bộ
UML ñưa ra khái niệm Use Case ñể nắm bắt các yêu cầu của khách hàng (người sử dụng).
UML sử dụng biểu ñồ Use case (Use Case Diagram) ñể nêu bật mối quan hệ cũng như sự
giao tiếp với hệ thống.
Qua phương pháp mô hình hóa Use case, các tác nhân (Actor) bên ngoài quan tâm ñến hệ
thống sẽ ñược mô hình hóa song song với chức năng mà họ ñòi hỏi từ phía hệ thống (tức là
Use case). Các tác nhân và các Use case ñược mô hình hóa cùng các mối quan hệ và ñược
miêu tả trong biểu ñồ Use case của UML. Mỗi một Use case ñược mô tả trong tài liệu, nó sẽ
ñặc tả các yêu cầu của khách hàng: Anh ta hay chị ta chờ ñợi ñiều gì ở phía hệ thống mà
không hề ñể ý ñến việc chức năng này sẽ ñược thực thi ra sao.
việc viết code có thể sẽ thành một trở ngại cho việc tạo ra các mô hình chính xác và ñơn giản.
Giai ñoạn xây dựng là một giai ñoạn riêng biệt, nơi các mô hình ñược chuyển thành code.
Một số những thành phần chủ yếu của ngôn ngữ UML:
− Hướng nhìn (view): Hướng nhìn chỉ ra những khía cạnh khác nhau của hệ thống cần
phải ñược mô hình hóa. Một hướng nhìn không phải là một bản vẽ, mà là một sự trừu
tượng hóa bao gồm một loạt các biểu ñồ khác nhau. Chỉ qua việc ñịnh nghĩa của một
loạt các hướng nhìn khác nhau, mỗi hướng nhìn chỉ ra một khía cạnh riêng biệt của hệ
thống, người ta mới có thể tạo dựng nên một bức tranh hoàn thiện về hệ thống. Cũng
chính các hướng nhìn này nối kết ngôn ngữ mô hình hóa với quy trình ñược chọn cho
giai ñoạn phát triển.
− Biểu ñồ (diagram): Biểu ñồ là các hình vẽ miêu tả nội dung trong một hướng nhìn.
UML có tất cả 9 loại biểu ñồ khác nhau ñược sử dụng trong những sự kết hợp khác
nhau ñể cung cấp tất cả các hướng nhìn của một hệ thống.
− Phần tử mô hình hóa (model element): Các khái niệm ñược sử dụng trong các biểu
ñồ ñược gọi là các phần tử mô hình, thể hiện các khái niệm hướng ñối tượng quen
thuộc. Ví dụ như lớp, ñối tượng, thông ñiệp cũng như các quan hệ giữa các khái niệm
này, bao gồm cả liên kết, phụ thuộc, khái quát hóa. Một phần tử mô hình thường ñược
sử dụng trong nhiều biểu ñồ khác nhau, nhưng nó luôn luôn chỉ có một ý nghĩa và một
kí hiệu.
− Cơ chế chung: Cơ chế chung cung cấp thêm những lời nhận xét, bổ sung các thông
tin cũng như các quy tắc ngữ pháp chung về một phần tử mô hình; chúng còn cung
cấp thêm các cơ chế ñể có thể mở rộng ngôn ngữ UML cho phù hợp với một phương
pháp xác ñịnh (một quy trình, một tổ chức hoặc một người dùng).
Một tín chỉ ñược qui ñịnh bằng 15 tiết học lý thuyết hoặc 30 tiết thảo luận trên lớp, bài
tập, thí nghiệm hoặc 45 - 60 tiết thực tập, kiến tập, chuẩn bị khoá luận.
Như vậy, nếu trong một học kỳ có 15 tuần thực học thì tín chỉ là một tiết lý thuyết hoặc 2
tiết bài tập, thực hành, thảo luận hoặc 3 ñến 4 tiết thực tập, kiến tập, chuẩn bị khoá luận trong
một tuần và kéo dài trong suốt học kỳ.
Ðể tiếp thu ñược một tiết học lý thuyết trên lớp sinh viên cần khoảng 2 - 3 tiết chuẩn bị,
một tiết học thực hành hoặc bài tập cần 1 - 2 tiết chuẩn bị. Một tiết học trên lớp ñược quy
ñịnh là 45 phút.
Mỗi học phần thực hành có khối lượng từ 1 ñến 3 tín chỉ, mỗi học phần lý thuyết hoặc học
phần có cả lý thuyết và thực hành có khối lượng từ 2 ñến 5 tín chỉ.
Một học phần phải ñược bố trí giảng dạy trọn vẹn và phân bố ñều trong một học kỳ. Khoá
luận hay ñồ án tốt nghiệp là một học phần ñặc biệt, có khối lượng tương ñương 10 - 15 tín chỉ
(cụ thể xem ðiều 28).
Kiến thức trong mỗi học phần ñược thiết kế kiểu môñun theo từng môn học hoặc ñược kết
cấu dưới dạng tổ hợp từ nhiều môn học thành một môn học mới. Mỗi học phần phải ñược ký
hiệu bằng một mã riêng do trường qui ñịnh.
− Học phần tự chọn bắt buộc là học phần chứa ñựng những mảng nội dung chính yếu
của ngành hay nhóm ngành ñào tạo, mà sinh viên bắt buộc phải chọn một số lượng
xác ñịnh trong số nhiều học phần tương ñương ñược quy ñịnh cho ngành ñó.
− Học phần tự chọn tự do là học phần sinh viên có thể tự do ñăng ký học hay không tùy
theo nguyện vọng.
Theo nội dung và tính chất tương ñối giữa các mảng kiến thức, các học phần trên có thể
ñược chia ra:
− Học phần tiên quyết ñối với học phần X là học phần bắt buộc sinh viên phải học
trước học phần X và thi ñạt mới ñược theo học học phần X.
Ký hiệu: Y X
− Học phần học trước ñối với học phần X là học phần sinh viên phải học trước học
phần X mới ñược học học phần X, cho dù kết quả thi có thể không ñạt.
Y X
Ký hiệu:
− Học phần song hành ñối với học phần X là học phần sinh viên có thể theo học ñồng
thời với học phần X.
Ký hiệu: Y SH X
− Học phần tích lũy là học phần có kết quả cuối cùng của học phần ñạt từ ñiểm 5 trở
lên. Tổng số tín chỉ của các học phần này tính từ lúc bắt ñầu khoá học ñến thời ñiểm
xét, gọi là số tín chỉ tích luỹ.
− Học phần tương ñương ñối với học phần X, là học phần có nội dung và thời lượng
ñáp ứng ñược yêu cầu của học phần X, cụ thể là có nội dung giống nhau từ 80% trở
lên và có số tín chỉ tương ñương hoặc lớn hơn.
− Một học kỳ chính có 15 tuần thực học, 1 tuần kiểm tra giữa kỳ và 3 tuần thi;
− Ngoài các học kỳ chính, tùy theo ñiều kiện, trường có thể tổ chức thêm học kỳ hè dành
cho những sinh viên thi không ñạt ở các học kỳ chính ñược ñăng ký học lại và những
sinh viên học giỏi có ñiều kiện kết thúc sớm chương trình ñào tạo. Một học kỳ hè có
từ 4 ñến 6 tuần thực học và một tuần thi.
− ðiểm trung bình chung tích lũy (ðTBCTL) là ñiểm trung bình chung của tất cả các
học phần mà sinh viên ñã ñăng ký học và dự thi cũng như các học phần ñược bảo lưu
và tương ñương ñược miễn tính từ ñầu khoá học cho ñến thời ñiểm xét.
− ðiểm rèn luyện quy ñổi (ðRLqñ) là ñiểm quy ñổi từ kết quả rèn luyện của sinh viên.
Theo Quy chế ñánh giá kết quả rèn luyện của học sinh, sinh viên các Trường ðại học,
Cao ñẳng, Trung học chuyên nghiệp hệ chính quy ban hành theo Quyết ñịnh số
42/2002/Qð-BGD&ðT ngày 21/10/2002 của Bộ trưởng Bộ Giáo dục và ðào tạo, mức
quy ñổi ñược tính như sau:
I.7.2. Chương trình ñào tạo bao gồm 2 khối kiến thức
− Khối kiến thức giáo dục ñại cương (GDðC) gồm các học phần thuộc các lĩnh vực:
khoa học xã hội và nhân văn, khoa học tự nhiên và toán, ngoại ngữ, giáo dục quốc
phòng và giáo dục thể chất, nhằm trang bị cho sinh viên nền học vấn rộng ñể tiếp thu
tốt kiến thức chuyên môn, tạo tiềm lực cho người ñược ñào tạo dễ dàng thích nghi với
môi trường làm việc, tự cập nhật kiến thức trước tình hình phát triển nhanh của khoa
học và công nghệ.
− Khối kiến thức giáo dục chuyên nghiệp (GDCN) gồm các học phần cơ sở, ngoại ngữ
phục vụ chuyên ngành và các học phần chuyên môn nhằm cung cấp cho người học
những kiến thức và kỹ năng nghề nghiệp ban ñầu cần thiết.
I.9. Mã khoa
Mã khoa: 3 ký tự, có dạng U D D
− U: Mã trường.
− DD: Số thứ tự khoa trong trường.
I.9.1. Mã ngành
Mã ngành: 5 ký tự, có dạng U D D N S
− UDD: Mã khoa.
− N: Số thứ tự ngành trong khoa.
− S: Mã chuyên ngành (ngành chung thì S=0 ).
10410 Công nghệ Nhiệt – ðiện lạnh Công nghệ Nhiệt- ðiện lạnh
10420 Thiết bị năng lượng (Dự kiến) Công nghệ Nhiệt- ðiện lạnh
10430 Kỹ thuật nhiệt lạnh (Dự kiến) Công nghệ Nhiệt- ðiện lạnh
Xây dựng dân dụng và công nghiệp Xây dựng Dân dựng & công
11010
nghiệp
Kiến trúc Xây dựng Dân dựng & công
11020
nghiệp
Công nghệ Môi trường Xây dựng Dân dựng & công
11030
nghiệp
Kỹ thuật ñô thị (Dự kiến) Xây dựng Dân dựng & công
11040
nghiệp
11110 Xây dựng Thủy lợi - Thủy ñiện Xây dựng TL-Tð
11120 Kinh tế Xây dựng và Quản lý Dự án Xây dựng TL-Tð
11130 Cảng và Công trình ven bờ (Dự kiến) Xây dựng TL-Tð
11140 Công trình thủy ñiện (Dự kiến) Xây dựng TL-Tð
Quản lý và Khai thác Tài nguyên nước (Dự Xây dựng TL-Tð
11150
kiến)
Xây dựng Cơ sở hạ tầng nông thôn (Dự Xây dựng TL-Tð
11160
kiến)
− 3 ký số "101" ñầu tiên: có nghĩa học phần này thuộc Khoa Cơ Khí.
− Số "007" tiếp theo: có nghĩa ñây là học phần ñược ñánh số thứ tự 007 trong Khoa ñó.
− Ký số "0" cuối cùng: có nghĩa ñây là học phần dạy cho toàn trường (ví dụ: các môn
Mác - LêNin).
− 3 ký số "101" tiếp theo: có nghĩa lớp này thuộc Khoa Cơ Khí của trường.
− 2 ký tự “04” là mã ngành Cơ khí chế tạo trong khoa cơ khí.
− 1 ký số "2" tiếp theo: có nghĩa ñây là lớp sinh hoạt ñược ñánh số thứ tự 2 trong Khoa
Cơ Khí của trường .
− 2 ký số "05" ñầu tiên: có nghĩa lớp này thuộc khoá học vào trường năm 2005.
− Ký số "1" tiếp theo: có nghĩa lớp này thuộc hệ chính quy.
− Ký số "1" tiếp theo nữa: có nghĩa lớp này thuộc cấp ñại học.
U D D M M M Z K K S S
U D D N S L K K H C S S
− 10210 (tương ứng với UDDNS): sinh viên thuộc Ngành Công nghệ thông tin.
− 1 (tương ứng với L): lớp số 1.
− 06 (tương ứng với KK): khóa 2006 – 2011.
− 1 (tương ứng với H): hệ chính qui.
− 1 (tương ứng với C): cấp ñào tạo - ñại học
− 15 (tương ứng với SS): số thứ tự của sinh viên trong lớp sinh hoạt là 15.
Bước 1: Phòng ñào tạo sẽ phát hành “Chương trình ñào tạo khóa 2006 – 2011” vào ñầu
năm học. Tài liệu này là kế hoạch học tập của sinh viên của tất cả các ngành khóa 06. Tài liệu
này bao gồm khung chương trình, danh sách các học phần, quan hệ các học phần, các quy
ñịnh liên quan ñến dạy, học, ñánh giá và các vấn ñề liên quan.
Bước 2: Phòng ñào tạo sẽ phát hành “Sổ tay sinh viên” trước mỗi học kỳ cho sinh viên.
Tài liệu này gồm tất cả các lớp học phần và chi tiết lớp học phần ñược dạy trong học kỳ ñó.
Các lớp học phần này ñược chia thành nhóm và mỗi nhóm tương ứng với một lớp niên chế.
Trong tài liệu này, phòng ñào tạo gợi ý cho sinh viên mỗi khoa nên ñăng ký vào những nhóm
nào cho hợp lý. Sinh viên sẽ dựa vào tài liệu này ñể chọn ra lớp học phần mà mình cần.
Bước 3: Phát hành mẫu ñăng ký lớp học phần. Mẫu ñăng ký này ñược phát theo từng lớp
sinh hoạt. Mẫu ñăng ký này là một bảng gồm nhiều dòng và nhiều cột. Cột ñầu tiên là tên sinh
viên của lớp, các cột tiếp theo tương ứng với các học phần có mở lớp trong học kỳ hiện hành.
Sinh viên sẽ ghi mã lớp học phần (thực chất là mã nhóm) tại ô có học phần tương ứng cần
ñăng ký.
Bước 4: Sinh viên ñăng ký và nộp lại cho phòng ñào tạo. Sinh viên sẽ ñiền vào các ô
tương ứng mã nhóm lớp học mà mình cần ñăng ký rồi nộp cho phòng ñào tạo.
Bước 5: Kiểm tra ñiều kiện ràng buộc. Như ta ñã biết, các học phần có quan hệ với nhau.
Bước này kiểm tra học phần cần ñăng ký liệu có cần phải học trước một số học phần khác hay
không, nếu có thì sinh viên ñó ñã học hoặc ñã vượt qua các học phần ràng buộc hay không.
Nếu có sự xung ñột nghĩa là sinh viên vẫn chưa học hoặc không thể vượt qua học phần ràng
buộc thì phòng quy trình sẽ chuyển sang bước 6. Ngược lại, quy trình sẽ chuyển sang bước 7.
Bước 6: Thông báo lỗi cho sinh viên. Vì kế hoạch ñào tạo của trường rất chặt chẽ nên,
thông thường có rất ít sinh viên không ñáp ứng yêu cầu về các ràng buộc học phần. Do ñó,
phòng ñào tạo sẽ phát hành thông báo cho những sinh viên vẫn chưa ñăng ký ñược và dán ở
từng khoa. Sinh viên ñọc ñược thông báo này sẽ liên hệ với phòng ñào tạo ñể chỉnh sửa cho
phù hợp. Nghĩa là sinh viên sẽ thực hiện lại bước 4.
Bước 7: Kiểm tra xung ñột thời khóa biểu. Bước này kiểm tra liệu thời khóa biểu của sinh
viên có bị xung ñột hay không. Nghĩa là kiểm tra xem có hiện tượng trong cùng một thời
ñiểm, sinh viên có học 2 lớp học phần khác nhau hay không. Nếu có xung ñột thì tiến trình sẽ
chuyển sang bước 6. Ngược lại tiến trình sẽ chuyển sang bước 8.
Bước 8: Kiểm tra số lượng từng lớp học phần. Khi ñăng ký, sinh viên không hề biết ñược
có bao nhiêu người cùng ñăng ký như mình vào một lớp học phần do ñó sẽ có hiện tượng số
sinh viên ñăng ký vào lớp học phần vượt quá số lượng cho phép của lớp học phần ñó. Nếu số
lượng sinh viên ñăng ký vượt quá số lượng cho phép thì tiến trình chuyển sang bước 9.
Ngược lại, tiến trình sẽ chuyển sang bước 10.
Bước 9: Kiểm tra số lượng sinh viên vượt quá mức. Nếu số lượng không ñáng kể thì
phòng ñào tạo sẽ phát hành thông báo và tiến trình sẽ quay lại bước 6.
Bước 10: Tự ñiều chỉnh số lượng. Trong trường hợp số lượng ñăng ký vượt trội, phòng
ñào tạo sẽ ñiều chỉnh số lượng cho phù hợp. Việc ñiều chỉnh này là rất khó khăn.
Bước 11: Xác nhận ñăng ký thành công. Khi tất cả các bước trên ñều hoàn tất, phòng ñào
tạo sẽ phát hành cho sinh viên danh sách các lớp mà sinh viên ñã ñăng ký ñể sinh viên thực
hiện việc nộp học phí.
Admin
Chỉnh sửa học kỳ
Chỉnh sửa học phần
và quan hệ Upload danh sách Upload danh sách
lớp sinh hoạt Học Phần
Upload ñiểm
Chỉnh sửa lớp học
phần
Chỉnh sửa khung
chương trình Danh sách lớp học
phần
a. Usecase Admin ðăng nhập: Usecase này cho phép người dùng sử dụng tên và mật
khẩu của mình ñể ñăng nhập vào hệ thống với quyền admin trước khi thực hiện các chức
năng quản lý.
− Dòng sự kiện chính: Usecase này bắt ñầu khi người dùng muốn ñăng nhập vào hệ
thống.
1. Người dùng chọn chức năng ñăng nhập hoặc bắt ñầu vào trang web của admin.
2. Hệ thống hiển thị form ñăng nhập.
3. Người dùng nhập tên và mật khẩu.
4. Hệ thống sẽ kiểm tra tên, mật khẩu tương ứng ñể lấy ra quyền truy cập tương ứng
và cho phép người dùng ñăng nhập vào hệ thống với quyền admin nếu kiểm tra
thành công
− Dòng sự kiện khác: Tên hoặc mật khẩu không hợp lệ. Trong dòng sự kiện chính, nếu
người dùng nhập sai tên hoặc mật khẩu thì hệ thống sẽ hiển thị một thông báo lỗi. Hệ
thống sẽ hiển thị form ñăng nhập và người dùng sẽ bắt ñầu lại dòng sự kiện chính.
Người dùng có thể thoát khỏi hệ thống bằng cách tắt chương trình browser.
− Các yêu cầu ñặc biệt: không có.
− ðiều kiện tiên quyết: Người dùng phải ở trạng thái chưa ñăng nhập mới có thể thực
hiện ñược chức năng này.
− ðiều kiện chuyển tiếp: Nếu usecase thành công, người dùng sẽ ñăng nhập vào hệ
thống với quyền admin. Ngược lại, trạng thái của hệ thống sẽ không thay ñổi.
− Biểu ñồ hoạt ñộng (Activity Diagram)
1: Click LogIn
2: Load Page
4: Ấn nút Submit
5: Log In
− Dòng sự kiện chính: Usecase này bắt ñầu khi admin thực hiện updoad ñiểm của sinh
viên.
5. Admin chọn chức năng upload ñiểm.
6. Hệ thống ñưa ra form ñể admin nhập ñường dẫn file excel hoặc thực hiện chức
năng browse ñể tìm file.
7. Admin click vào nút upload.
8. Hệ thống ở phía client sẽ thực hiện việc upload file excel ñó ñến server.
9. Hệ thống ở phía server thực hiện việc ñọc file excel và trả về phía client danh sách
sinh viên và ñiểm của sinh viên.
2: Load Page
4: Upload file
ðăng nhập
2. Hệ thống ở phía server truy vấn cơ sở dữ liệu ñể lấy ra thời khóa biểu tương ứng
của giáo viên rồi trả về client.
Click xem thời khóa biểu [Loi neu chua dang nhap]
Hình 14 – Activity Diagram của usecase giáo viên xem thời khóa biểu
− Biều ñồ trình tự (Sequence Diagram)
Hình 15 – Sequence Diagram của usecase giáo viên xem thời khóa biểu
Xem ñiểm
Sinh viên
Xem thời khóa biểu
2. Hệ thống ở phía server truy vấn cơ sở dữ liệu ñể lấy ra danh sách các lớp học phần
hiện có và vẫn còn chỗ ñể ñăng ký rồi trả về phía client.
3. Hệ thống ở phía client sẽ hiển thị danh sách các lớp học phần.
− ðiều kiện chuyển tiếp: Nếu usecase thành công, hệ thống sẽ hiển thị thời khóa biểu ở
dạng bảng ở phía client. Nếu không, trạng thái hệ thống không ñổi.
− Biểu ñồ hoạt ñộng (Activity Diagram)
[Het cho]
Hình 17 – Activity Diagram của usecase sinh viên ñăng ký lớp học phần
1: Click ðăng ký
2: Page Load
9: Trả về lỗi nếu chưa ñạt các học phần tiên quyết
11: Trả về lỗi nếu các chưa từng học các học phần học trước
Hình 18 – Sequence Diagram của usecase sinh viên ñăng ký lớp học phần
III. Thiết kế
III.1. Sơ ñồ lớp (class diagram)
Vì số lượng lớp (class) của hệ thống rất nhiều nên không thể ñặt tất cả các lớp cũng như
quan hệ giữa chúng vào trong một hình vẽ. Do ñó chúng tôi trình bày phần này theo nhóm các
quan hệ.
III.1.1. Sinh viên và các quan hệ với lớp sinh hoạt ngành, khóa học
Nganh
-maNganh : string
-tenNganh : string
-maTruongDT : string
-maNganhDT : string KhoaHoc
-khoi : string 1..*
-maKhoaHoc : string
-moTa : string -tenKhoaHoc : string
-soTinChi : int -namVaoTruong : int
-soHocKy : int
1..1
1..*
LopSinhHoat
-maLopSinhHoat : string
1..1
-maNganh : string
-tenLop : string
-moTa : string
-maKhoaHoc : long
1..*
1..1
SinhVien
-maHS : string
-maLopNienChe : string
Hình 19 – Class Diagram: Sinh viên, Lớp sinh hoạt, Ngành, Khóa học
NhomLopHocPhan
-maNhom : string
-tenNhom : string
-maNganh : string LopHocPhan
-maLopHP : string HocKy
-tenLop : string
-maNhomLopHocPhan : string -maHocKy : long
1..* -hocKy : int
-maHocPhan : string
1..1 -moTa : string -namHoc : int
-status : long -moTa : string
+thietLapHocKyHienHanh() : int
1..* 1..*
1..1 1..1
PhongHoc
-maPhongHoc : long
-tenPhong : string ChiTietLopHocPhan 1..*
1..* GiaoVien
-trucThuocDonVi : string -maChiTietLopHocPhan : long
-maGiaoVien : string
-tinhTrang : string -maLopHocPhan : string
-hoLot : string
-maHocKy : long
-tenGiaoVien : string
-maGiaoVien : string 1..1
-email : string
-maPhongHoc : long
-maKhoa : string
1..1 -maThoiKhoaBieu : long
-soLuongToiThieu : int
ThoiKhoaBieu -soLuongToiDa : int
-maThoiKhoaBieu : long 1..1 -soLuongHienTai : int
-mon : long
-tue : long 1..*
-wed : long
-thu : long
-fri : long
-sat : long
-sun : long
SinhVien
LopHocPhanTheoKy
-maSinhVien : string 1..*
-maLopHocPhanTheoHocKy : long
-maLopNienChe : string
1..* -maHocPhan : string
-maHocKy : long
1..1 1..1
SinhVienDangKy
-maSinhVienDangKy : long
-maSinhVien : string
-maLopHocPhanTheoKy : long
-maNopTien : long
-ngayDangKy : Date
-thuTuDangKy : int
ChiTietDiemCuaSinhVien
-maChiTietDiemCuaSinhVien : long
-maDiemCuaSinhVien : long
-maLoaiDiem : long
-soDiem : float 1..1
-ghiChu : string
User Interface
Business Logic
Data Access
Database Driver
Database
Client 1 Client 2
-TCP/IP
-TCP/IP
Web Server
-Database Driver
Database Server
Mô tả các bảng:
Header
Top Menu
Footer
Hình 37 – Header
Hình 38 – Footer
Hình 39 – Right Pane, Giáo viên Left Menu, Sinh viên Left Menu
adminLogin.jsp adminViewCayQuanHeHocPhan.jsp
adminLogout.jsp adminViewDanhSachSinhVienDangKy.jsp
adminUploadSinhVien.jsp adminViewDonVi.jsp
adminUploadGiaoVien.jsp adminViewGiaoVien.jsp
adminUploadPhongHoc.jsp adminViewHocKy,jsp
adminUploadKhoa.jsp adminViewHocPhan.jsp
adminUploadNganh.jsp adminViewKhoa.jsp
adminUploadDonVi.jsp adminViewKhungChuongTrinh.jsp
adminUploadHocPhan.jsp adminViewLopHocPhan.jsp
adminUploadLopHocPhan.jsp adminViewLopSinhHoat.jsp
adminUploadLopSinhHoat.jsp adminViewNganh.jsp
adminUploadDiem.jsp adminViewNhomLopHocPhan.jsp
adminChangePassword.jsp adminViewPhongHoc.jsp
adminViewSinhVien.jsp adminViewQuanHeHocPhan.jsp
login.jsp viewCayQuanHeHocPhan.jsp
logout.jsp viewThoiKhoaBieu.jsp
changePassword.jsp viewKhungChuongTrinh.jsp
viewLopHocPhanDangKy.jsp viewDiem.jsp
viewLopHocPhanHienCo.jsp
giaoVienLogin.jsp giaoVienViewLopHocPhan.jsp
giaoVienLogout.jsp giaoVienViewThoiKhoaBieu.jsp
giaoVienChangePassword.jsp
ChiTietDiemSinhVien.class KhungChuongTrinh.class
ChiTietKhungChuongTrinh.class LoaiDiem.class
ChiTietLopHocPhan.class LopHocPhan.class
DiemSinhVien.class LopSinhHoat.class
DonVi.class Nganh.class
GiaoVien.class NhomLopHocPhan.class
HocKy.class PhongHoc.class
HocPhan.class QuanHe.class
Khoa.class QuanHeHocPhan.class
KhoaHoc.class SinhVien.class
ThoiKhoaBieu.class SinhVienDangKy.class
ThoiKhoaBieuCuaSinhVien.class
AdminBean.class UploadBean.class
UserBean.class EncryptBean.class
ReadExcel.class MyUtil.class
DAOChiTietDiemSinhVien.class DAOKhungChuongTrinh.class
DAOChiTietKhungChuongTrinh.class DAOLoaiDiem.class
DAOChiTietLopHocPhan.class DAOLopHocPhan.class
DAODiemSinhVien.class DAOLopSinhHoat.class
DAODonVi.class DAONganh.class
DAOGiaoVien.class DAONhomLopHocPhan.class
DAOHocKy.class DAOPhongHoc.class
DAOHocPhan.class DAOQuanHe.class
DAOKhoa.class DAOQuanHeHocPhan.class
DAOKhoaHoc.class DAOSinhVien.class
DAOThoiKhoaBieu.class DAOSinhVienDangKy.class
DAOThoiKhoaBieuCuaSinhVien.class
AdminController.class UserController.class
b. Mô tả bài toán: Cho trước một tập các học phần, một tập các quan hệ, cho trước một
danh sách sinh viên và bản ñiểm của sinh viên. Yêu cầu: với một sinh viên, khi ñăng
ký một lớp học phần, hãy kiểm tra xem sinh viên ñó có ñáp ứng ñủ yêu cầu về ràng
buộc các học phần hay không.
c. Giải pháp: Gọi ñồ thị có hướng G = (V,E) ñể ñặc tả các học phần và quan hệ giữa
chúng. Trong ñó, V là tập các ñỉnh với mỗi ñỉnh là một học phần và E là tập các cung
với mỗi cung ñặc trưng cho quan hệ giữa chúng, trong ñó trọng số của mỗi cung chính
là mã quan hệ giữa các học phần. Từ ñó suy ra, việc sinh viên học hoặc vượt qua các
học phần tại trường ñại học sẽ tương ứng với việc một người ñã ñi qua ñược các ñỉnh
trên ñồ thị; quá trình sinh viên ñó học tại trường chính là ñoạn ñường mà sinh viên ñó
ñi ñược; học phần mà sinh viên ñăng ký ñể học chính là ñỉnh tiếp theo trên ñồ thị mà
sinh viên ñó phải ñi. Và như vậy, bài toán lúc này trở thành kiểm tra xem với ñoạn
ñường ñã ñi ñược của một sinh viên vào thời ñiểm hiện tại, sinh viên ñó có thể ñi tiếp
ñến ñỉnh xác ñịnh nào ñó hay không. ðồ thị G ñược ñặc tả như hình.
Biểu diễn bài toán vào hệ thống: ñể biểu diễn ñồ thị này vào máy tính ñể xử lý, chúng ta
có 3 phương pháp:
1. Ma trận cạnh kề: Toàn bộ ñồ thị ñược biểu diễn bằng ma trận NxN, với N là số ñỉnh
của ñồ thị, giá trị mỗi ô trong ma trận ñặc trưng cho trọng số của ñồ thị. Với ví dụ trên thì ma
trận cạnh kề như sau:
0 1 0 2 0 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
A = 0 0 1 0 0 3 0
0 0 0 0 0 0 0
0 0 0 3 0 0 0
0 0 0 0 0 0 0
Phương pháp này có ưu ñiểm là việc truy xuất nhanh chóng. Trong trường hợp các học
phần có thêm một hoặc nhiều quan hệ mới thì cũng dễ dàng cập nhật. Tuy nhiên phương pháp
này cũng có những hạn chế. ðể mô tả ma trận này trong máy tính thì phải yêu cầu một cấu
trúc lớn, chẳng những thế, cấu trúc này lại khó thay ñổi. Trên thực tế, các hệ thống hiện tại có
dung lượng bộ nhớ hạn chế trong khi các học phần lại nhiều và có xu hương tăng lên. Bên
cạnh ñó việc biểu diễn ñồ thị bằng ma trận cạnh kề trở nên phí phạm nếu số cạnh trong ñồ thị
thưa thớt. Thực tế thì chương trình ñào tạo tín chỉ ñang mới chuyển từ ñào tạo niên chế sang
do ñó các học phần không có sự ràng buộc nhiều, nên việc biểu diễn này sẽ rất phí phạm. Với
những lý do trên, phương pháp biểu diễn ñồ thị bằng ma trận cạnh kề thực sự không tối ưu.
2. Danh sách ñỉnh kề: Với mỗi ñiểm, chúng ta sử dụng m danh sách ñể biểu diễn những
ñiểm kề nó, mỗi danh sách thể hiện một loại quan hệ. Với ví dụ trên thì m bằng 3 và ñồ thị
ñược biểu diễn thành danh sách ñỉnh kề như sau:
Học Học phần học Học phần Học phần
phần trước tiên quyết song hành
A B D
B
C C
D F
E
F D
G
Bảng 34 – Biểu diễn quan hệ theo danh sách ñỉnh kề
Phương pháp này có ưu ñiểm là tiết kiệm tài nguyên lưu trữ nhất. ðối với những trường
hợp số cạnh thưa thớt và các trọng số không thay ñổi nhiều thì phương pháp này rất hiệu quả.
Tuy nhiên, trong trường hợp số lượng quan hệ tăng lên (nghĩa là trọng số có sự thay ñổi), thì
việc xử lý sẽ rất khó khăn. Bên cạnh ñó, việc xử lý trên nhiều danh sách cùng một lúc sẽ làm
cho hệ thống làm việc chậm lại.
3. Danh sách cạnh: Toàn bộ ñồ thị ñược lưu trữ theo danh sách các cạnh, mỗi cạnh
ñược ñặc tả bằng một ñỉnh xuất phát, một ñỉnh ñích và trọng số. Những học phần có liên quan
ñến các học phần khác ñược lưu bởi 1 cạnh của ñồ thị. Với ví dụ trên thì ñồ thị ñược biểu
diễn thành danh sách cạnh như sau:
Phương pháp này có ưu ñiểm là danh sách cạnh chỉ cần ñược lưu trữ trong một danh sách,
nên việc truy xuất, cập nhật sẽ ñược dễ dàng. Những ñỉnh ñộc lập thì không cần lưu trữ nên sẽ
tiết kiệm ñáng kể tài nguyên bộ nhớ. Trong trường hợp một ñỉnh có rất nhiều cung (nghĩa là
bậc của ñỉnh ñó khá lớn) thì phương pháp này trở nên phí phạm hơn so với phương pháp danh
sách ñỉnh kề.
Với thực tế bài toán này, chúng tôi chọn phương pháp thứ 3 với các lý do sau:
− ðối với vấn ñề lưu trữ, mỗi học phần thường chỉ cần 1 ñến 2 môn học trước hoặc tiên
quyết, do ñó bậc của một ñỉnh thường không vượt quá 5. Với ví dụ trên thì ñỉnh có
bậc cao nhất là ñỉnh D (bậc 3). Vì bậc của một ñỉnh không quá lớn nên việc lưu trữ sẽ
không quá phí phạm.
− ðối với vấn ñề xử lý, việc xử lý liên quan ñến quan hệ giữa các học phần ñược thực
hiện trong 2 thời ñiểm: thời ñiểm ñầu tiên là thời ñiểm ñầu mỗi khóa học khi nhân
viên ñào tạo cập nhật chương trình học và các ràng buộc kèm theo và thời ñiểm thứ
hai là thời ñiểm ñầu kỳ khi sinh viên ñăng ký học phần cho kỳ tới. ðối với thời ñiểm
ñầu tiên thì việc xử lý là thêm học phần và thêm quan hệ, trong thời ñiểm này, việc
truy cập là không nhiều. ðối với thời ñiểm thứ hai thì việc xử lý là truy xuất ñể kiểm
tra, trong thời ñiểm này các truy cập của sinh viên là rất nhiều. Việc thiết kế lưu trữ
theo phương pháp danh sách cạnh nói trên tuy không thuận tiện cho việc thêm các
quan hệ nhưng hoàn toàn thuận lợi cho việc truy xuất dữ liệu tương ứng.
− Với thiết kế này, chúng ta dễ dàng hiển thị quan hệ giữa các học phần theo dạng cây
phân cấp. Từ ñó sinh viên có thể dễ dàng xem và biết ñược học phần nào là tiên quyết,
học phần nào cần học trước ñể có kế hoạch học tập hợp lý.
d. Nội dung thuật toán (viết bằng giả ngữ):
− Input: Danh sách các ñỉnh (học phần), danh sách các cạnh (quan hệ giữa các học
phần), mã sinh viên, ñoạn ñường mà sinh viên ñã ñi ñược (bảng ñiểm của sinh viên),
ñỉnh ñích (học phần cần ñăng ký).
− Output: Yes/No. Nghĩa là, sinh viên có ñi tiếp ñến ñỉnh ñích hay không, hoặc sinh
viên ñó có ñược phép ñăng ký học phần ñó hay không.
− Method:
1. Tìm trong danh sách cạnh những cạnh có ñỉnh cuối là ñỉnh ñích.
2. Nếu không tìm thấy (nghĩa là ñỉnh ñó ñộc lập, hay học phần cần ñăng ký là học
phần ñộc lập) trả về “Yes”, ngược lại, tiếp tục bước 3.
3. Với từng cạnh thu ñược, kiểm tra trong ñỉnh ñầu của mỗi cạnh, không có ñỉnh nào
nằm trong ñoạn ñường mà sinh viên ñã ñi (nghĩa là sinh viên ñã học qua học phần
ñó) thì trả về “No”, ngược lại, trả về “Yes”.
Hình 52 – Kiểm tra xung ñột thời khóa biểu bằng AND bit (không xung ñột)
Hình 53 – Kiểm tra xung ñột thời khóa biểu bằng AND bit (có xung ñột)
ðể cập nhật quỹ thời của sinh viên sau khi ñăng ký lớp học phần, chúng ta sử dụng toán tử
OR ñể OR các cặp bit tương ứng trong từng số nguyên của 2 ñối tượng với nhau.
Hình 54 – Cập nhật quỹ thời gian của sinh viên sau khi ñăng ký
ðể cập nhật quỹ thời gian của sinh viên sau khi sinh viên thực hiện hủy bỏ một lớp học
phần chúng ta chỉ cần thực hiện toán tử AND NOT các cặp bit tương ứng trong từng số
nguyên của 2 ñối tượng với nhau.
Mon Tue Wed Thu Fri Sat Mon Tue Wed Thu Fri Sat Mon Tue Wed Thu Fri Sat
-
Hình 55 – Cập nhật quỹ thời gian của sinh viên sau khi hủy bỏ lớp học phần
Dữ liệu từ
hệ thống hiện tại
CSDL Oracle
CSDL Access
Bước 1: Chương trình quản lý hiện tại sử dụng chức năng report ñể xuất dữ liệu trong
cơ sở dữ liệu cụ thể của mình sang file excel (*.xls).
Bước 2: Module ánh xạ dữ liệu sẽ ñọc file excel, sau ñó kiểm tra ràng buộc.
Bước 3: Module ánh xạ dữ liệu sẽ ghi vào cơ sở dữ liệu chỉ ñịnh thông qua cầu nối dữ
liệu.
c. Cấu trúc module ánh xạ dữ liệu: Module ánh xạ dữ liệu này ñược xây dựng bằng
ngôn ngữ Java trên nền JDK 1.5 nên có cấu trúc như sau:
− JExcel API: là một Java API cho phép những ứng dụng Java có thể ñọc những bảng
tính Excel và có thể tạo những bảng tính Excel. Thêm vào ñó, nó còn chứa những kỹ
thuật cho phép ứng dụng Java có thể vừa ñọc một bảng tính vừa thay ñổi một số cell
trên bảng tính, và ghi ra một bảng tính mới. JExcel API ñược công bố miễn phí tại ñịa
chỉ http://jexcelapi.sourceforge.net và thành phần chính của nó là gói jxl.jar
− Class ñọc file excel: Class này do chúng tôi cài ñặt ñể vừa ñọc vừa kiểm tra ràng buộc
dữ liệu từ file excel. Nội dung class này như sau:
import java.io.File;
import java.util.Date;
import jxl.*;
...
Workbook workbook = Workbook.getWorkbook(new File("myfile.xls"));
// Khi ñã có sự truy cập vào workbook, bạn có thể truy cập vào một sheet cụ
thể nào ñó. Sheet ñầu tiên có chỉ mục là 0, sheet thứ hai có chỉ mục là 1 và cứ tiếp
tục như thế.
Sheet sheet = workbook.getSheet(0);
//Khi ñã có một sheet , bạn có thể bắt ñầu truy cập các cell của sheet. Bạn có
thể lấy nội dung của cell là một xâu bằng cách sử dụng phương thức getContents().
Trong ví dụ dưới ñây A1 là text cell, B2 là giá trị số , B2 là ngày.
Cell a1 = sheet.getCell(0,0);
Cell b2 = sheet.getCell(1,1);
Cell c2 = sheet.getCell(2,1);
II.2. Admin có thể thiết kế thời khóa biểu của một lớp học phần
Hình 58 – Trang thiết kế thời khóa biểu của lớp học phần
II.3. Admin có thể upload các loại danh sách liên quan
Hình 60 – Trang Web hiển thị danh sách sau khi upload thành công
Admin nếu muốn cập nhật danh sách vào cơ sở dữ liệu thì click vào nút Update Database.
II.4. Giáo viên có thể xem thời khóa biểu của chính minh
II.5. Giáo viên có thể xem lớp học phần mình dạy
Hình 63 – Trang xem cây quan hệ học phần của sinh viên
II.7. Sinh viên có thể xem ñiểm học phần mình ñã học
giáo viên, sinh viên, lớp học, phòng học, học phần và các thông tin khác. Các danh
sách này ñược lưu ở dạng file excel và tự ñộng ñược cập nhật vào cơ sở dữ liệu.
− Nhân viên quản trị cập nhật thông tin: Nhân viên quản trị dễ dàng cập nhật thông
tin của ñối tượng bất kỳ liên quan ñến quá trình quản lý ñào tạo.
− Nhân viên quản trị xây dựng khung chương trình: Nhân viên quản trị dễ dàng xây
dựng khung chương trình cho từng khóa học của từng ngành.
− Nhân viên quản trị xây dựng thời khóa biểu: Nhân viên quản trị dễ dàng xây dựng
thời khóa biểu cho từng lớp học phần mà không lo ngại xung ñột thời khóa biểu.
So với hệ thống website hiện nay thì các chức năng của hệ thống này ưu việt hơn hẳn. Hệ
thống website hiện nay chỉ có chức năng sinh viên xem ñiểm, hoàn toàn không có chức năng
cho giáo viên.
Hệ thống vẫn chưa quản lý việc thanh toán học phí. Do ñó, trong tương lai, chúng tôi sẽ
phát triển chức năng này. Thậm chí, với ñiều kiện thương mại ñiện tử ñang phát triển hiện
nay, chúng tôi sẽ phát triển chức năng này thành thanh toán qua mạng bằng hệ thống ngân
hàng.
Với giải pháp ánh xạ dữ liệu, việc chuyển dữ liệu từ file Excel vào CSDL rất dễ dàng. Bên
cạnh ñó, bảng ñiểm của sinh viên hiện tại ñược ghi bằng phương pháp ñánh dấu như trắc
nghiệm và có thể ñọc tự ñộng bằng máy OpScan. Với hai nền tảng này, chúng tôi sẽ phát triển
tiếp module ñọc ñiểm tự ñộng, nghĩa là nhân viên ñào tạo chỉ cần ñưa danh sách vào máy
OpScan, máy sẽ ñọc và cho ra bảng ñiểm ở dạng file excel. File này sẽ ñược ñọc và cập nhật
vào cơ sở dữ liệu. ðây là hướng nghiên cứu rất có giá trị.
Hiện tại, hệ thống chỉ ñược kiểm tra trong phạm vi hẹp. Trong tương lai, nếu áp dụng cho
ðại học ðà Nẵng thì rất có thể sẽ bị quá tải vì lượng sinh viên, giáo viên truy cập sẽ rất lớn.
Vấn ñề này mở ra hướng phát triển mới, phát triển hệ thống này thành một hệ phân tán ñể áp
dụng cho toàn bộ các trường trực thuộc ðại học ðà Nẵng.
[1] “Chương trình ñào tạo khóa 2006 – 2011” – ðại học ðà Nẵng, 2006.
[2] “Sổ tay sinh viên khóa 06 học kỳ 2” – ðại học Bách khoa ðà Nẵng, 2006.
[3] Lý thuyết ñồ thị và toàn rời rạc – Nguyễn ðức Nghĩa & Nguyễn Tô Thành.
[4] Lập trình Java tập 2 – Phương Lan.
[5] Java for the Web with Servelet, JSP, and EBJ – Budi Kurniawan – New Riders
Publishing, April 12, 2002.
[6] Web Development with Java Server Pages – Duane K. Fields, Mark A. Kolb,
Shawn Bayern – Maning.
[7] UML for Java Programmer - Robert Cecil Martin – Object Mentor Inc.
[8] Deploying Applications with Java and UML – Paul R. Reed Jr. – Addison Wesley
[9] http://www.javavietnam.org
[10] http://dut1.ud.edu.vn
[11] http://java.sun.com
[12] http://jexcelapi.sourceforge.net