LỜI CẢM ƠN
Đầu tiên cho em gửi lời biết ơn sâu sắc đến cô giáo Th.S Phạm Thị
Thương đã định hướng, cung cấp tài liệu và tận tình giúp đỡ, động viên em
trong quá trình thực hiện đồ án. Cô đã dành nhiều thời gian và tâm huyết theo
sát, chỉ bảo em những mặt được và chưa được để em có thể hoàn thành đồ án
một cách tốt nhất. Em xin chân thành cảm ơn cô!
Em cũng xin chân thành cảm ơn thầy cô trong trường Đại học Công
nghệ thông tin và Truyền thông nói chung và các thầy cô giáo trong khoa Công
Nghệ Thông Tin, bộ môn Công Nghệ Phần Mềm nói riêng tận tình giảng dạy,
truyền đạt cho em những kiến thức, kinh nghiệm quý báu trong suốt thời gian
qua.
Mặc dù bản thân đã thực sự nỗ lực, cố gắng thực hiện đề tài nhưng không
tránh khỏi nhiều thiếu sót. Do vậy, em rất mong nhận được sự đóng góp quý báu
của toàn thể thầy cô và các bạn!
Em xin chân thành cảm ơn !
Sinh viên thực hiện
Lê Thị Huế
1
LỜI CAM ĐOAN
Em xin cam đoan rằng đây là bài đồ án tốt nghiệp của em, được sự hướng
dẫn từ Giáo viên Th.S Phạm Thị Thương – giảng viên trường đại học Công
nghệ thông tin và truyền thông Thái Nguyên, Đại học Thái Nguyên, các nội dung
nghiên cứu và kết quả trong đề tài này là trung thực và không sao chép từ các báo
cáo thực tập và đồ án khác trước đây. Những số liệu trong các bảng biểu phục vụ
cho việc phân tích, nhận xét, đánh giá được chính bản thân thu thập từ các nguồn
khác nhau được chỉ dẫn trong tài liệu tham khảo.
Nếu có bất kỳ sự gian lận nào em xin hoàn toàn chịu trách nhiệm trước
Hội đồng.
Thái Nguyên, ngày … tháng … năm 2016
Sinh viên
Lê Thị Huế
2
MỤC LỤC
LỜI CẢM ƠN .....................................................................................................1
LỜI CAM ĐOAN................................................................................................2
MỤC LỤC ..........................................................................................................3
DANH MỤC HÌNH ẢNH ...................................................................................6
DANH MỤC BẢNG ...........................................................................................8
LỜI MỞ ĐẦU .....................................................................................................9
CHƯƠNG 1: CƠ SỞ LÝ THUYẾT VÀ CÔNG CỤ THỰC HIỆN....................10
1.1 Giới thiệu về PHP và MySQL ..................................................................10
1.1.1 PHP? ..................................................................................................10
1.1.2 Hệ quản trị cơ sở dữ liệu MySQL.......................................................14
1.2 Giới thiệu tổng quan về PHP Framework: CodeIgniter .............................14
1.2.1 Cài đặt................................................................................................15
1.2.2 Mô hình MVC trong CodeIgniter .......................................................15
1.2.3 Dòng dữ liệu trong CodeIgniter..........................................................16
1.2.4 Các Thư viện trong CodeIgniter .........................................................17
1.3 Giới thiệu về UML ...................................................................................18
1.3.1 Khái niệm và đặc điểm của UML.......................................................18
1.3.2 Mô hình khái niệm của UML .............................................................18
CHƯƠNG 2: KHẢO SÁT VÀ PHÂN TÍCH THIẾT KẾ HỆ THỐNG..............22
2.1 Thực trạng của hệ thống ...........................................................................22
2.1.1 Giới thiệu về công ty ..........................................................................22
2.1.2 Đặt vấn đề ..........................................................................................22
2.1.3 Giải pháp............................................................................................24
2.1.4 Mô tả bài toán ....................................................................................24
2.2 Khảo sát thực trạng...................................................................................24
2.2.1 Khảo sát hệ thống...............................................................................24
2.2.2. Quy trình Học viên sử dụng website..................................................26
2.2.3 Quy trình Giáo viên sử dụng website..................................................27
2.2.4 Quy trình thực hiện quản trị hệ thống của quản trị viên ......................27
3
2.3 Thông tin đầu vào, đầu ra của bài toán .....................................................27
2.3.1 Các thông tin đầu vào.........................................................................27
2.3.2 Các thông tin đầu ra ...........................................................................28
2.4 Phân tích hệ thống ....................................................................................28
2.4.1 Biểu đồ UC mức tổng thể...................................................................28
2.4.2 Biểu đồ UC mức chi tiết.....................................................................30
2.5 Đặc tả một số UC chính............................................................................32
2.5.1 UC đăng ký thành viên.......................................................................32
2.5.2 UC đăng nhập hệ thống ......................................................................33
2.5.3 UC Tìm kiếm .....................................................................................34
2.5.4 UC đăng kí khóa học..........................................................................35
2.5.5 UC quản lý khóa học..........................................................................36
2.5.6 UC quản lý bài giảng..........................................................................37
2.5.7 UC quản lý tin tức ..............................................................................38
2.5.8 UC quản lý thành viên........................................................................39
2.5.9 UC quản lý bài kiểm tra .....................................................................40
2.5.10 UC thống kê báo cáo ........................................................................41
2.6 Biểu đồ Lớp .............................................................................................42
2.6.1 Biểu đồ lớp ca sử dụng đăng nhập......................................................42
2.6.2 Biểu đồ lớp ca sử dụng tìm kiếm ........................................................42
2.6.3 Biểu đồ lớp sử dụng quản lý khóa học................................................43
2.6.4 Biểu đồ lớp sử dụng quản lý bài giảng................................................43
2.6.5 Biểu đồ lớp sử dụng quản lý bài kiểm tra ...........................................44
2.6.6 Biểu đồ lớp sử dụng quản lý tin tức....................................................44
2.6.7 Biểu đồ lớp sử dụng quản lý thành viên..............................................45
2.7 Quan hệ giữa các bảng..............................................................................45
CHƯƠNG 3: XÂY DỰNG CHƯƠNG TRÌNH .................................................52
3.1 Giao diện chính ........................................................................................52
3.2 Giao diện duyệt khóa học .........................................................................52
3.3 Giao diện đăng ký khóa học .....................................................................53
4
3.4 Giao diện lớp học đã đăng ký ...................................................................53
3.5 Giao diện bài kiểm tra ..............................................................................54
3.6 Giao diện điểm của học viên....................................................................54
3.7 Giao diện đăng nhập quản lý hệ thống......................................................55
3.8 Giao diện quản lý khóa học ......................................................................55
3.9 Giao diện quản lý bài giảng ......................................................................56
3.10 Giao diện quản lý thi trực tuyến..............................................................56
KÊT LUẬN.......................................................................................................58
TÀI LIỆU THAM KHẢO .................................................................................60
5
DANH MỤC HÌNH ẢNH
Hình 1.1: Mô hình MVC trong CodeIgniter.......................................................15
Hình 1.2: Dòng dữ liệu trong CodeIgniter .........................................................16
Hình 1.3: Các thư viện trong CodeIgniter ..........................................................17
Hình 2.1: Biểu đồ UC mức tổng thể...................................................................30
Hình 2.2: Biểu đồ UC chi tiết tác nhân quản trị hệ thống ...................................30
Hình 2.3: Biểu đồ UC chi tiết tác nhân giáo viên ...............................................31
Hình 2.4: Biểu đồ UC chi tiết tác nhân học viên ................................................31
Hình 2.5: Biểu đồ Trình tự UC đăng kí thành viên.............................................32
Hình 2.6: Biểu đồ Trình tự UC đăng nhập hệ thống...........................................33
Hình 2.7: Biểu đồ trình tự UC tìm kiếm.............................................................34
Hình 2.8: Biểu đồ trình tự UC đăng ký khóa học ...............................................35
Hình 2.9: Biểu đồ trình tự UC quản lý khóa học ................................................36
Hình 2.10: Biểu đồ trình tự UC quản lý bài giảng..............................................37
Hình 2.11: Biểu đồ trình tự UC quản lý tin tức ..................................................38
Hình 2.12: Biểu đồ Trình tự cho tác vụ quản lý thành viên ................................39
Hình 2.13: Biểu đồ Trình tự cho tác vụ quản lý thành viên ................................40
Hình 2.14: Biểu đồ trình tự UC thống kê báo cáo ..............................................41
Hình 2.15: Biểu đồ lớp ca sử dụng đăng nhập....................................................42
Hình 2.16: Biểu đồ lớp ca sử dụng tìm kiếm......................................................42
Hình 2.17: Biểu đồ lớp ca sử dụng quản lý khóa học .........................................43
Hình 2.18: Biểu đồ lớp ca sử dụng quản lý bài giảng .........................................43
Hình 2.19: Biểu đồ lớp ca sử dụng quản lý bài kiểm tra.....................................44
Hình 2.20: Biểu đồ lớp ca sử dụng quản lý tin tức .............................................44
Hình 2.21: Biểu đồ lớp ca sử dụng quản lý thành viên .......................................45
Hình 2.22: Quan hệ giữa các bảng .....................................................................51
Hình 3.1: Màn hình trang chủ ............................................................................52
Hình 3.2: Giao diện khóa học ............................................................................52
Hình 3.3: Giao diện đăng ký khóa học...............................................................53
Hình 3.4: Giao diện lớp học đã đăng ký.............................................................53
6
Hình 3.5: Giao diện bài kiểm tra........................................................................54
Hình 3.6: Giao diện điểm...................................................................................54
Hình 3.7: Giao diện đăng nhập quản lý hệ thống ...............................................55
Hình 3.8: Giao diện quản lý khóa học................................................................55
Hình 3.9: Giao diện quản lý bài giảng................................................................56
Hình 3.10: Giao diện thêm mới bài kiểm tra ......................................................56
Hình 3.11: Giao diện thêm mới câu hỏi .............................................................57
Hình 3.12: Giao diện danh sách đề thi ...............................................................57
7
DANH MỤC BẢNG
Bảng 2.1: Mô tả dữ liệu bảng comment .............................................................45
Bảng 2.2: Mô tả dữ liệu bảng enrollment...........................................................46
Bảng 2.3: Mô tả dữ liệu bảng post .....................................................................46
Bảng 2.4: Mô tả dữ liệu bảng post_meta............................................................47
Bảng 2.5: Mô tả dữ liệu bảng tits.......................................................................47
Bảng 2.6: Mô tả dữ liệu bảng user .....................................................................47
Bảng 2.7: Mô tả dữ liệu bảng answer.................................................................48
Bảng 2.8: Mô tả dữ liệu bảng qbank ..................................................................48
Bảng 2.9: Mô tả dữ liệu bảng result ...................................................................49
Bảng 2.10: Mô tả dữ liệu bảng quiz ...................................................................50
Bảng 2.11: Mô tả dữ liệu bảng level_quiz..........................................................50
Bảng 2.12: Mô tả dữ liệu bảng group.................................................................50
Bảng 2.13: Mô tả dữ liệu bảng options ..............................................................50
8
LỜI MỞ ĐẦU
Ngày nay ứng dụng công nghệ thông tin và việc tin học hóa được xem là
một trong những yếu tố mang tính quyết định trong hoạt động của các chính phủ,
tổ chức, doanh nghiệp, cũng như các trường đại học, cao đẳng, các trang thông
tin, giải trí, nó đóng vai trò hết sức quan trọng có thể tạo ra những bước đột phá
mạnh mẽ.
Học trực tuyến là một hình thức học mới được chú ý trong thời gian gần
đây, nó đáp ứng nhu cầu học hỏi của những người không có nhiều thời gian và
tiền bạc để tham gia các khóa học trực tuyến khác. Vì vậy lợi ích đầu tiên có thể
kể đến đó là giảm thiểu chi phí. Nếu như tham gia một khóa học trực tiếp với
giáo viên tại lớp học bạn phải bỏ ra 3 triệu đồng thì với khóa học trực tuyến bạn
có thể tiết kiệm cho mình 2.7 triệu đồng. Quả là một con số lý tưởng cho những
ai eo hẹp về tài chính. Nội dung khóa học như nhau, kiến thức được truyền đạt
giống nhau chỉ cần bạn chăm chỉ và học thật sự thì hiệu quả của học trực tuyến
có khi còn tốt hơn so với việc bạn đến lớp. Lợi ích thứ hai mà khóa học trực
tuyến mang đến đó là tiết kiệm thời gian. Nếu bình thường bạn mất đến 1h30
phút thì với khóa học này bạn có thể sử dụng thời gian đó để làm những việc bạn
chưa hoàn thành trong ngày. Học trực tuyến đang dần trở thành một trào lưu
trong cuộc sống năng động, tuy nhiên không phải lúc nào bạn cũng có thể đạt
hiệu quả cao nhất. Vì không có sự quản lý giám sát của thầy cô có thể làm cho
bạn lơ là học tập. Thế nên, nếu chọn cho mình khóa học trực tuyến hãy trung
thực với chính mình để quyết tâm theo đuổi đến cùng.
Nhận thấy những lợi ích và tầm quan trọng mà các khóa học trực tuyến
mang lại, em đã lựa chọn và thực hiện đề tài “XÂY DỰNG WEBSITE HỌC
LẬP TRÌNH TRỰC TUYẾN CHO CÔNG TY PHẦN MỀM TRỰC TUYẾN
MINH ĐỨC”. Nội dung đề được chia làm 3 chương:
Chương 1: Cơ sở lý thuyết và công cụ thực hiện.
Chương 2: Khảo sát và phân tích thiết kế hệ thống.
Chương 3: Xây dựng website.
9
CHƯƠNG 1:
CƠ SỞ LÝ THUYẾT VÀ CÔNG CỤ THỰC HIỆN
1.1 Giới thiệu về PHP và MySQL
1.1.1 PHP?
PHP(Hypertext Preprocessor) là một ngôn ngữ lập trình kịch bản hay một
loại mã lệnh chủ yếu được dùng để phát triển các ứng dụng viết cho máy chủ, mã
nguồn mở, dùng cho mục đích tổng quát. Nó rất thích hợp với web và có thể dễ
dàng nhúng vào trang HTML. Do được tối ưu hóa cho các ứng dụng web, tốc độ
nhanh, nhỏ gọn, cú pháp giống C và Java, dễ học và thời gian xây dựng sản phẩm
tương đối ngắn hơn so với các ngôn ngữ khác nên PHP đã nhanh chóng trở thành
một ngôn ngữ lập trình web phổ biến nhất thế giới.
Cặp thẻ sẽ đánh đấu sự bắt đầu và sự kết thúc của phần mã
PHP qua đó máy chủ biết để xử lý và dịch mã cho đúng. Đây là một điểm khá
tiện lợi của PHP giúp cho việc viết mã PHP trở nên khá trực quan và dễ dàng
trong việc xây dựng phần giao diện ứng dụng HTTP.
Ngôn ngữ, các thư viện, tài liệu gốc của PHP được xây dựng bởi cộng
đồng và có sự đóng góp rất lớn của Zend Inc., công ty do các nhà phát triển lõi
của PHP lập nên nhằm tạo ra một môi trường chuyên nghiệp để đưa PHP phát
triển ở quy mô doanh nghiệp.
Lịch sử phát triển của PHP
PHP được phát triển từ một sản phẩm có tên là PHP/FI. PHP/FI do
Rasmus Lerdorf tạo ra năm 1995, ban đầu được xem như là một tập con đơn giản
của các mã kịch bản Perl để theo dõi tình hình truy cập đến bản sơ yếu lý lịch của
ông trên mạng. Ông đã đặt tên cho bộ mã kịch bản này là 'Personal Home Page
Tools'. Khi cần đến các chức năng rộng hơn, Rasmus đã viết ra một bộ thực thi
bằng C lớn hơn để có thể truy vấn tới các cơ sở dữ liệu và giúp cho người sử
dụng phát triển các ứng dụng web đơn giản. Rasmus đã quyết định công bố mã
nguồn của PHP/FI cho mọi người xem, sử dụng cũng như sửa các lỗi có trong nó
đồng thời cải tiến mã nguồn.
10
PHP/FI, viết tắt từ "Personal Home Page/Forms Interpreter", bao gồm một
số các chức năng cơ bản cho PHP như ta đã biết đến chúng ngày nay. Nó có các
biến kiểu như Perl, thông dịch tự động các biến của form và cú pháp HTML
nhúng. Cú pháp này giống như của Perl, mặc dù hạn chế hơn nhiều, đơn giản và
có phần thiếu nhất quán.
Vào năm 1997, PHP/FI 2.0, lần viết lại thứ hai của phiên bản C, đã thu hút
được hàng ngàn người sử dụng trên toàn thế giới với xấp xỉ 50.000 tên miền đã
được ghi nhận là có cài đặt nó, chiếm khoảng 1% số tên miền có trên mạng
Internet. Tuy đã có tới hàng nghìn người tham gia đóng góp vào việc tu chỉnh mã
nguồn của dự án này thì vào thời đó nó vẫn chủ yếu chỉ là dự án của một người.
PHP/FI 2.0 được chính thức công bố vào tháng 11 năm 1997, sau một thời
gian khá dài chỉ được công bố dưới dạng các bản beta. Nhưng không lâu sau đó,
nó đã được thay thế bởi các bản alpha đầu tiên của PHP 3.0.
PHP 3
PHP 3.0 là phiên bản đầu tiên cho chúng ta thấy một hình ảnh gần gũi với
các phiên bản PHP mà chúng ta được biết ngày nay. Nó đã được Andi Gutmans
và Zeev Suraski tạo ra năm 1997 sau khi viết lại hoàn toàn bộ mã nguồn trước
đó. Lý do chính mà họ đã tạo ra phiên bản này là do nhận họ thấy PHP/FI 2.0 hết
sức yếu kém trong việc phát triển các ứng dụng thương mại điện tử mà họ đang
xúc tiến trong một dự án của trường đại học. Trong một nỗ lực hợp tác và bắt đầu
xây dựng dựa trên cơ sở người dùng đã có của PHP/FI, Andi, Rasmus và Zeev đã
quyết định hợp tác và công bố PHP 3.0 như là phiên bản thế hệ kế tiếp của
PHP/FI 2.0 và chấm dứt phát triển PHP/FI 2.0.
Một trong những sức mạnh lớn nhất của PHP 3.0 là các tính năng mở rộng
mạnh mẽ của nó. Ngoài khả năng cung cấp cho người dùng cuối một cơ sở hạ
tầng chặt chẽ dùng cho nhiều cơ sở dữ liệu, giao thức và API khác nhau, các tính
năng mở rộng của PHP 3.0 đã thu hút rất nhiều nhà phát triển tham gia và đề xuất
các mô đun mở rộng mới. Hoàn toàn có thể kết luận được rằng đây chính là điểm
mấu chốt dẫn đến thành công vang dội của PHP 3.0. Các tính năng khác được
11
giới thiệu trong PHP 3.0 gồm có hỗ trợ cú pháp hướng đối tượng và nhiều cú
pháp ngôn ngữ nhất quán khác.
Ngôn ngữ hoàn toàn mới đã được công bố dưới một cái tên mới, xóa bỏ
mối liên hệ với việc sử dụng vào mục đích cá nhân hạn hẹp mà cái tên PHP/FI
2.0 gợi nhắc. Nó đã được đặt tên ngắn gọn là 'PHP', một kiểu viết tắt hồi quy của
"PHP: Hypertext Preprocessor".
Vào cuối năm 1998, PHP đã phát triển được con số cài đặt lên tới hàng
chục ngàn người sử dụng và hàng chục ngàn Website báo cáo là đã cài nó. Vào
thời kì đỉnh cao, PHP 3.0 đã được cài đặt cho xấp xỉ 10% số máy chủ Web có
trên mạng Internet.
PHP 3.0 đã chính thức được công bố vào tháng 6 năm 1998, sau thời gian
9 tháng được cộng đồng kiểm nghiệm.
PHP 4
Vào mùa đông năm 1998, ngay sau khi PHP 3.0 chính thức được công bố,
Andi Gutmans và Zeev Suraski đã bắt đầu bắt tay vào việc viết lại phần lõi của
PHP. Mục đích thiết kế là nhằm cải tiến tốc độ xử lý các ứng dụng phức tạp, và
cải tiến tính mô đun của cơ sở mã PHP. Những ứng dụng như vậy đã chạy được
trên PHP 3.0 dựa trên các tính năng mới và sự hỗ trợ khá nhiều các cơ sở dữ liệu
và API của bên thứ ba, nhưng PHP 3.0 đã không được thiết kế để xử lý các ứng
dụng phức tạp như thế này một cách có hiệu quả.
Một động cơ mới, có tên 'Zend Engine' (ghép từ các chữ đầu trong tên của
Zeev và Andi), đã đáp ứng được các nhu cầu thiết kế này một cách thành công và
lần đầu tiên được giới thiệu vào giữa năm 1999. PHP 4.0, dựa trên động cơ này
và đi kèm với hàng loạt các tính năng mới bổ sung, đã chính thức được công bố
vào tháng 5 năm 2000, gần 2 năm sau khi bản PHP 3.0 ra đời. Ngoài tốc độ xử lý
được cải thiện rất nhiều, PHP 4.0 đem đến các tính năng chủ yếu khác gồm có sự
hỗ trợ nhiều máy chủ Web hơn, hỗ trợ phiên làm việc HTTP, tạo bộ đệm thông
tin đầu ra, nhiều cách xử lý thông tin người sử dụng nhập vào bảo mật hơn và
cung cấp một vài các cấu trúc ngôn ngữ mới.
12
Với PHP 4, số nhà phát triển dùng PHP đã lên đến hàng trăm nghìn và
hàng triệu site đã công bố cài đặt PHP, chiếm khoảng 20% số tên miền trên mạng
Internet.
Nhóm phát triển PHP cũng đã lên tới con số hàng nghìn người và nhiều
nghìn người khác tham gia vào các dự án có liên quan đến PHP như PEAR,
PECL và tài liệu kĩ thuật cho PHP.
PHP 5
Sự thành công hết sức to lớn của PHP 4.0 đã không làm cho nhóm phát
triển PHP tự mãn. Cộng đồng PHP đã nhanh chóng giúp họ nhận ra những yếu
kém của PHP 4 đặc biệt với khả năng hỗ trợ lập trình hướng đối tượng (OOP), xử
lý XML, không hỗ trợ giao thức máy khách mới của MySQL 4.1 và 5.0, hỗ trợ
dịch vụ web yếu. Những điểm này chính là mục đích để Zeev và Andi viết Zend
Engine 2.0, lõi của PHP 5.0. Ngày 29 tháng 6 năm 2003, PHP 5 Beta 1 đã chính
thức được công bố để cộng đồng kiểm nghiệm. Đó cũng là phiên bản đầu tiên
của Zend Engine 2.0. Phiên bản Beta 2 sau đó đã ra mắt vào tháng 10 năm 2003
với sự xuất hiện của hai tính năng rất được chờ đợi: Iterators, Reflection nhưng
namespaces một tính năng gây tranh cãi khác đã bị loại khỏi mã nguồn. Ngày 21
tháng 12 năm 2003: PHP 5 Beta 3 đã được công bố để kiểm tra với việc phân
phối kèm với Tidy, bỏ hỗ trợ Windows 95, khả năng gọi các hàm PHP bên trong
XSLT, sửa chữa nhiều lỗi và thêm khá nhiều hàm mới. PHP 5 bản chính thức đã
ra mắt ngày 13 tháng 7 năm 2004 sau một chuỗi khá dài các bản kiểm tra thử bao
gồm Beta 4, RC 1, RC2, RC3. Mặc dù coi đây là phiên bản sản xuất đầu tiên
nhưng PHP 5.0 vẫn còn một số lỗi trong đó đáng kể là lỗi xác thực HTTP.
Ngày 14 tháng 7 năm 2005, PHP 5.1 Beta 3 được PHP Team công bố
đánh dấu sự chín muồi mới của PHP với sự có mặt của PDO, một nỗ lực trong
việc tạo ra một hệ thống API nhất quán trong việc truy cập cơ sở dữ liệu và thực
hiện các câu truy vấn. Ngoài ra, trong PHP 5.1, các nhà phát triển PHP tiếp tục
có những cải tiến trong nhân Zend Engine 2, nâng cấp modun PCRE lên bản
PCRE 5.0 cùng những tính năng và cải tiến mới trong SOAP, streams và SPL.
13
PHP 6
Hiện nay phiên bản tiếp theo của PHP đang được phát triển, PHP 6 bản sử
dụng thử đã có thể được download tại địa chỉ http://snaps.php.net. Phiên bản
PHP 6 được kỳ vọng sẽ lấp đầy những khiếm khuyết của PHP ở phiên bản hiện
tại, ví dụ: hỗ trợ namespace (hiện tại các nhà phát triển vẫn chưa công bố rõ ràng
về vấn đề này), hỗ trợ Unicode, sử dụng PDO làm API chuẩn cho việc truy cập
cơ sở dữ liệu, các API cũ sẽ bị đưa ra thành thư viện PECL...
1.1.2 Hệ quản trị cơ sở dữ liệu MySQL
MySQL là hệ quản trị cơ sở dữ liệu tự do nguồn mở phổ biến nhất thế giới
và được các nhà phát triển rất ưa chuộng trong quá trình phát triển ứng dụng. Vì
MySQL là cơ sở dữ liệu tốc độ cao, ổn định, dễ sử dụng, có tính khả chuyển,
hoạt động trên nhiều hệ điều hành cung cấp một hệ thống lớn các hàm tiện ích rất
mạnh. Với tốc độ và tính bảo mật cao, MySQL rất thích hợp cho các ứng dụng có
truy cập CSDL trên internet. MySQL miễn phí hoàn toàn cho nên có thể tải về
MySQL từ trang chủ. Nó có nhiều phiên bản cho các hệ điều hành khác nhau:
phiên bản Win32 cho các hệ điều hành dòng Windows, Linux, Mac OS X, Unix,
FreeBSD, NetBSD, Novell NetWare, SGI Irix, Solaris, SunOS, ...
MySQL là một trong những ví dụ rất cơ bản về Hệ Quản trị Cơ sở dữ liệu
quan hệ sử dụng ngôn ngữ truy vấn có cấu trúc(SQL).
MySQL được sử dụng cho việc bổ trợ PHP, Perl và nhiều ngôn ngữ khác,
nó làm nơi lưu trữ những thông tin trên các trang web viết bằng PHP hay Perl…
1.2 Giới thiệu tổng quan về PHP Framework: CodeIgniter
CodeIgniter là một nền tảng ứng dụng web nguồn mở được viết bằng
ngôn ngữ PHP bởi Rick Ellis(CEO của EllisLab, Inc). Phiên bản đầu tiên được
phát hành ngày 28.02.2006, phiên bản hiện tại: 1.7.2 (phát hành ngày
11.09.2009). Ý tưởng xây dựng CodeIgniter được dựa trên Ruby on Rails, một
nền tảng ứng dụng web được viết bằng ngôn ngữ Ruby. Hiện tại, CodeIgniter
đang được phát triển bởi ExpressionEngine Development Team thuộc EllisLab,
Inc.
14
1.2.1 Cài đặt
Hướng dẫn cài đặt:
Download bộ nguồn CodeIgniter tại website http://codeigniter.com/,
phiên bản hiện tại: CodeIgniter-3.0.
Mở tập tin application/config/config.php bằng một chương trình soạn
thảo, thay đổi giá trị $config['base_url']. Đây là đường dẫn tuyệt đối đến thư mục
CodeIgniter trên server.
Nếu ứng dụng có tương tác với cơ sở dữ liệu, thiết lập các giá trị cần
thiết trong tập tin application/config/database.php.
Upload tất cả thư mục và tập tin của CodeIgniter lên server.
Để nâng cao tính bảo mật hệ thống, người dùng có thể đổi tên thư mục
system củaCodeIgniter. Sau khi đổi tên, người dùng phải thay đổi giá trị biến
$system_folder trong tập tin index.php.
1.2.2 Mô hình MVC trong CodeIgniter
Model-View-Control (MVC) là một kiến trúc phần mềm, hiện đang được
xem là một mẫu thiết kế trong công nghệ phần mềm. Mô hình MVC tách biệt
phần xử lý dữ liệu ra khỏi phần giao diện, cho phép phát triển, kiểm tra và bảo trì
các thành phần một cách độc lập.
Hình 1.1: Mô hình MVC trong CodeIgniter
Theo đó:
Model thể hiện các cấu trúc dữ liệu. Các lớp thuộc thành phần Model
thường thực hiện các tác vụ như truy vấn, thêm, xóa, cập nhật dữ liệu. Khi dữ
liệu trong Model thay đổi, thành phần View sẽ được cập nhật lại.
View là thành phần thể hiện dữ liệu trong Model thành các giao diện
tương tác với người sử dụng. Một Model có thể có nhiều View tùy thuộc vào các
mục đích khác nhau.
15
Controller đóng vai trò trung gian giữa Model và View. Thông tin
người dùng từ View được gửi cho Controller xử lý, sau đó Controller tương tác
với Model để lấy dữ liệu được yêu cầu, sau cùng Controller trả dữ liệu này về
cho View.
Mô hình MVC thường được sử dụng trong các ứng dụng web, vì thành
phần View (mã HTML/XHTML) được sinh ra từ các ngôn ngữ lập trình web.
Model sẽ trả dữ liệu về phía Controller, sau đó Controller sinh mã
HTML/XHTML để thể hiện trên View.
1.2.3 Dòng dữ liệu trong CodeIgniter
Hình 1.2: Dòng dữ liệu trong CodeIgniter
Tập tin index.php đóng vai trò làm controller đầu vào, thiết lập các tài
nguyên cần thiết cho hệ thống.
Routing: Quy trình điều hướng giúp xác định các yêu cầu và hướng xử lý
đối với chúng.
Caching: Nếu dữ liệu được yêu cầu đã được lưu trong bộ đệm,
CodeIgniter sẽ trả dữ liệu trong bộ đệm về phía client. Quá trình xử lý kết thúc.
Security: Dữ liệu trước khi được chuyển đến các Controller sẽ được lọc để
phòng chống XXS hoặc SQL Injection.
Application Controller: Controller xử lý dữliệu nhận được bằng cách gọi
đến các Models, Libraries, Helpers, Plugins…có liên quan.
View: Dữ liệu được chuyển qua View để hiển thị cho người dùng. Nếu
chức năng caching được bật, dữ liệu sẽ được lưu trong cache cho những lần yêu
cầu tiếp theo.
16
1.2.4 Các Thư viện trong CodeIgniter
Sức mạnh của CodeIgniter nằm ở các thư viện xây dựng sẵn. Hiện tại,
CodeIgniter hỗ trợ người dùng 26 thư viện sau:
Hình 1.3: Các thư viện trong CodeIgniter
17
1.3 Giới thiệu về UML
1.3.1 Khái niệm và đặc điểm của UML
UML là ngôn ngữ mô hình hóa thống nhất(Unified Modeling Language),
trước hết nó là mô tả ký pháp thống nhất, ngữ nghĩa và các định nghĩa về
metamodel(mô tả định nghĩa chính ngôn ngữ mô hình hóa), nó không mô tả
phương pháp phát triển. UML được sử dụng để hiển thị, đặc tả, xây dựng và làm
tài liệu các vật phẩm của quá trình phân tích xây dựng hệ thống phần mềm theo
hướng đối tượng. UML được sử dụng cho mọi tiến trình phát triển phần mềm,
xuyên suốt vòng đời phát triển và độc lập với các công nghệ cài đặt hệ thống.
UML là ngôn ngữ chuẩn để viết các kế hoạch chi tiết phần mềm. Nó phù
hợp cho việc mô hình hóa các hệ thông tin doanh nghiệp, các ứng dụng phân tán
trên nền Web, hệ thống nhúng thời gian thực… Các khung nhìn của ngôn ngữ
được quan sát từ góc độ phát triển và triển khai hệ thống, nó không khó sử dụng
và dễ hiểu. UML là ngôn ngữ mô hình được cả con người và máy sử dụng.
Đặc điểm của UML
UML là ngôn ngữ.
UML là ngôn ngữ để hiển thị.
UML làm ngôn ngữ đặc tả.
UML là ngôn ngữ dễ xây dựng.
UML là ngôn ngữ tài liệu.
1.3.2 Mô hình khái niệm của UML
Phần tử mô hình UML
Các khối hình thành mô hình UML gồm ba loại như sau: phần tử, quan hệ
và biểu đồ. Phần tử là trừu tượng căn bản trong mô hình, các quan hệ gắn các
phần tử này lại với nhau, còn biểu đồ nhóm tập hợp các phần tử. Trong UML có
bốn loại phần tử mô hình, đó là cấu trúc, hành vi, nhóm và chú thích. Các phần tử
này là các khối để xây dựng hướng đối tượng cơ bản của UML.
Phần tử cấu trúc là các danh từ trong mô hình UML. Chúng là bộ phận
tĩnh của mô hình để biểu diễn các thành phần khái niệm hay vật lý. Có bảy loại
18
phần tử cấu trúc, đó là: lớp, giao diện, phần tử cộng tác, trường hợp sử dụng(Use
Case), lớp tích cực(active class), thành phần, nút(node).
Phần tử hành vi là bộ phận động của mô hình UML. Chúng là các động
từ của mô hình, biểu diễn hành vi theo thời gian và không gian. Có hai loại chính
là tương tác và máy trạng thái.
Phần tử nhóm là bộ phận tổ chúc của mô hình UML. Chỉ có một phần
tử thuộc nhóm này có tên là gói(package). Gói là cơ chế đa năng để tổ chức các
phần tử của nhóm. Các phần tử cấu trúc, hành vi và ngay cả phần tử nhóm có thể
cho vào gói.
Các quan hệ trong UML
Có bốn loại quan hệ trong UML, bao gồm quan hệ phụ thuộc, kết hợp,
khái quát và hiện thực hóa.Chúng là cơ sở để xây dựng mọi quan hệ trong UML.
Phụ thuộc(dependency): Phụ thuộc là quan hệ ngữ nghĩa hai phần tử
trong đó thay đổi phần tử độc lập sẽ tác động đến ngữ nghĩa của phần tử phụ
thuộc.
Kết hợp(association): Kết hợp là quan hệ cấu trúc để mô tả tập liên kết.
Khi đối tượng của lớp này gửi/nhận thông điệp đến/từ đối tượng của lớp kia thì
gọi đó là quan hệ kết hợp.
Khái quát hóa(generalization): Khái quát hóa là quan hệ đặc biệt khái
quát hóa mà trong đó đối tượng cụ thể sẽ kế thừa các thuộc tính và phương pháp
của đối tượng tổng quát.
Hiện thực hóa(realization): Hiện thực hóa là quan hệ ngữ nghĩa giữa giao
diện và lớp(hay thành phần) hiện thực lớp, giữa UC và hợp tác hiện thực UC.
Kiểu dữ liệu
Kiểu dữ liệu không phải là phần tử mô hình trong UML. Kiểu dữ liệu cơ
sở là kiểu dữ liệu không có cấu trúc. UML có các kiểu dữ liệu sau:
Boolean: là kiểu đếm với hai giá trị True và False.
Biểu thức(Expression): là xâu ký tự có cú pháp.
Tính nhiều (Multiplicity): là tập không rỗng của các số nguyên dương
và ký tự * (để biểu thị tính nhiều vô hạn).
19
Tên(Name): là xâu ký tự cho khả năng đặc tả phần tử.
Số nguyên(Integer): là kiểu cơ bản và là phần tử của tập vô hạn các số
nguyên âm và dương.
Xâu(String): là trật tự của các ký tự, được sử dụng là tên.
Thời gian(Time): xâu ký tự biểu dirn giá trị tuyệt đối hay khoảng tương
tương đối.
Không lý giải(Uninterpreted): là ‘cái gì đó’ mà ý nghĩa của nó phụ
thuộc và lĩnh vực.
Biểu đồ UML
Biểu đồ UML là biểu diễn đồ họa tập hợp các phần tử mô hình. Vẽ biểu
đồ để biểu diễn hệ thống đang xây dựng dưới các góc độ quan sát khác nhau. Có
thể hiểu biểu đồ là ánh xạ của hệ thống. Một phần tử có thể xuất hiện trong một
hay nhiều biểu đồ. Về lý thuyết thì biểu đồ có thể bao gồm tổ hợp vô số phần tử
đồ họa và quan hệ vừa mô tả trên. UML cho khả năng xây dựng một vài kiểu
biểu đồ trực quan để biểu diễn các khía cạnh khác nhau của hệ thống, bao gồm
biểu đồ trường hợp sử dụng, biểu đồ trình tự, biểu đồ cộng tác, biểu đồ lớp, biểu
đồ biến đổi trạng thái, biểu đồ thành phần, biểu đồ triển khai.
Biểu đồ trường hợp sử dụng(Use case- UC)
Biểu đồ này chỉ ra tương tác giữa UC và tác nhân. UC biểu diễn các chức
năng hệ thống. Tác nhân con người hay hệ thống khác cung cấp hay thu nhận
thông tin từ hệ thống đang được xây dựng. Biểu đồ UC tập trung vào quan sát
trạng thái tĩnh của các UC trong hệ thống. Biểu đồ loại này chỉ ra tác nhân nào
khởi động UC và khi nào tác nhân nhận thông tin từ hệ thống.
Biểu đồ trình tự(Sequence)
Biểu đồ trình tự chỉ ra các luồng chức năng xuyên qua các UC, nó là biểu
đồ mô tả tương tác giữa các đối tượng và tập trung vào mô tả trật tự các thông
điệp thời gian.
Biểu đồ cộng tác (Collabaration)
Biểu đồ cộng tác chỉ ra các thông tin như biểu đồ trình tự theo cách khác,
nó tập trung vào tổ chức cấu trúc của các đối tượng gửi và nhận thông điệp. Biểu
20
- Xem thêm -