Đề tài Xây dựng Cổng thông tin quản lý thông tin sinh viên trường Đại học Hàng Hải

Mục lục: LỜI NÓI ĐẦU 5 CHƯƠNG I: TỔNG QUAN HỆ THỐNG 6 1.1. Cổng thông tin là gì?. 6 1.2. Ứng dụng của Cổng thông tin sinh viên trong trường đại học hiện nay: 8 1.3. Thực tế trường Đại học Hàng hải đặt ra: 10 1.4. Yêu cầu của đề tài: 11 a. Yêu cầu chung: 11 b. Yêu cầu chức năng với từng mảng: 14 CHƯƠNG II: PHÂN TÍCH THIẾT KẾ HỆ THỐNG 17 2.1. Sơ đồ phân rã chức năng: 17 2.1.1. Hệ thống: 17 2.1.2. Quản trị: 18 2.1.3. Sinh viên: 19 2.1.4. Giảng viên: 20 2.1.5. Nhân viên phòng đào tạo: 21 2.1.6. Nhân viên phòng hành chính: 21 2.1.7. Người dùng: 22 2.2. Sơ đồ mức ngữ cảnh: 22 2.3. Chức năng hệ thống: 23 2.3.1. Sơ đồ dữ liệu mức đỉnh chức năng hệ thống: 23 2.3.2. Sơ đồ dữ liệu mức dưới đỉnh chức năng hệ thống: 23 2.4. Chức năng quản trị: 24 2.4.1. Sơ đồ luồng dữ liệu mức đỉnh chức năng quản trị: 24 2.4.2. Sơ đồ luồng dữ liệu mức dưới đỉnh chức năng quản trị: 24 2.4.2.1. Chức năng cập nhật thông tin: 24 2.4.2.2. Chức năng tìm kiếm: 25 2.5. Chức năng người dùng là sinh viên: 26 2.5.1. Sơ đồ luồng dữ liệu mức đỉnh chức năng người dùng là sinh viên: 26 2.5.2. Sơ đồ luồng dữ liệu mức dưới đỉnh chức năng người dùng là sinh viên: 27 2.5.2.1. Chức năng xem thông tin: 27 2.5.2.2. Chức năng cập nhật thông tin: 28 2.5.2.3. Chức năng tìm kiếm: 29 2.5.2.4. Chức năng quản lý: 29 2.6. Chức năng người dùng là giảng viên: 30 2.6.1. Sơ đồ luồng dữ liệu mức đỉnh chức năng người dùng là giảng viên: 30 2.6.2. Sơ đồ luồng dữ liệu mức dưới đỉnh chức năng người dùng là giảng viên, nhân viên: 30 2.6.2.1. Chức năng xem thông tin: 30 2.6.2.2. Chức năng cập nhật: 31 2.6.2.3. Chức năng tìm kiếm: 32 2.6.2.3. Chức năng quản lý: 32 2.7. Chức năng Nhân viên phòng đào tạo: 33 2.7.1. Sơ đồ luồng dữ liệu mức đỉnh chức năng nhân viên phòng đào tạo: 33 2.7.2. Sơ đồ luồng dữ liệu mức dưới đỉnh chức năng nhân viên đào tạo: 34 2.7.2.1. Chức năng xem thông tin: 34 2.7.2.2. Chức năng cập nhật: 34 2.7.2.3. Chức năng tìm kiếm: 35 2.7.2.4. Chức năng quản lý: 35 2.8. Chức năng nhân viên phòng hành chính: 36 2.8.1. Sơ đồ luồng dữ liệu mức đỉnh chức năng người dùng là nhân viên phòng hành chính: 36 2.8.2. Sơ đồ luồng dữ liệu mức dưới đỉnh chức năng người dùng là nhân viên phòng hành chính: 36 2.8.2.1. Chức năng quản lý: 36 2.8.2.2. Chức năng cập nhật: 37 2.8.2.3. Chức năng tìm kiếm: 37 2.8.2.4. Chức năng quản lý: 38 2.9. Chức năng người dùng: 38 2.9.1. Sơ đồ luồng dữ liệu mức đỉnh chức năng người dùng: 38 2.9.2. Sơ đồ luồng dữ liệu mức dưới đỉnh chức năng người dùng: 39 2.9.2.1. Chức năng xem thông tin: 39 2.9.2.2. Chức năng tìm kiếm: 39 2.9.2.3. Chức năng liên hệ: 39 2.10. Sơ đồ thực thể - quan hệ: 40 2.10.1. Xác định các thực thể: 40 2.10.2. Quan hệ giữa các thực thể: 43 2.10.3. Sơ đồ thực thể - quan hệ ER: 48 2.11. Sơ đồ dữ liệu quan hệ: 48 2.11.1. Sơ đồ dữ liệu quan hệ: 48 2.11.2. Các bảng cơ sở dữ liệu: 50 CHƯƠNG III: CƠ SỞ LÝ THUYẾT VÀ CÔNG CỤ 57 3.1. Framework Yii: 57 3.1.1. Frame work: 57 3.1.1.1. Lịch sử phát triển: 57 3.1.1.2. Mô hình MVC: 58 3.1.2. Yii Framework: 64 3.1.2.1. Model – View – Controller trong Yii: 64 3.1.2.2. Dòng làm việc chuẩn: 65 3.1.2.3 Làm việc với cơ sở dữ liệu: 67 3.1.2.4. Làm việc với Form: 67 3.1.2.5. Các hỗ trợ của Yii: 68 3.1.2.6.Hiệu năng xử lý của Yii: 69 3.2. PHP VÀ LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG 70 3.2.1. Tổng quan về PHP. 70 3.2.2. Các kiểu lập trình trong PHP: 71 3.2.3. Một số khái niệm trong lập trình hướng đối tượng: 72 3.2.4. Biểu thức chính qui (Regular Expression): 73 3.2.4.1. Một số hàm hỗ trợ biểu thức chính qui: 74 3.2.4.2. Các ký hiệu biểu thức chính qui 76 3.2.5. Mảng (Array) 77 3.2.6. Một số phương thức thường sử dụng trong PHP. 80 3.3. Hệ quản trị MySQL: 80 3.3.1. Tổng quan về MySQL: 80 3.3.2. Một số hàm PHP cơ bản kết nối và tương tác với CSDL MySQL. 81 3.4. Các công cụ hỗ trợ ứng dụng và phát triển Website: 82 CHƯƠNG IV: CÀI ĐẶT CHƯƠNG TRÌNH. 83 4.1. Chức năng hệ thống: 83 4.2. Chức năng người dùng: 84 4.3. Chức năng quản trị: 85 4.4. Chức năng sinh viên: 88 4.5. Chức năng giảng viên: 92 4.6. Chức năng nhân viên hành chính: 94 LỜI NÓI ĐẦU Trong những năm cuối thế kỷ XX, đầu thế kỷ XXI ngành công nghệ thông tin đã có một bước phát triển thần kỳ. Hiện nay, tin học đã và đang được ứng dụng rộng rãi trong hầu hết các lĩnh vực của nền kinh tế trong mỗi quốc gia. Một nền kinh tế mạnh, một quốc gia mạnh đồng nghĩa với việc ở quốc gia đó công nghệ thông tin đã được ứng dụng và khai thác một cách hiệu quả. Việc ứng dụng rộng rãi của tin học đã đem lại những thành tựu vô cùng to lớn trong nhiều ngành, nhiều lĩnh vực khác nhau. Một trong các ứng dụng to lớn của ngành công nghệ thông tin đó là giúp cho việc trao đổi thông tin diễn ra dễ dàng hơn. Xã hội càng phát triển thì nhu cầu trao đổi thông tin càng lớn. Và cổng thông tin đã ra đời để đáp ứng nhu cầu đó. Cổng thông tin được dùng nhiều trong các trường đại học bởi những tiện ích vô cùng lớn mà nó mang lại. Cổng thông tin giúp cho việc quản lý thông tin sinh viên của nhà trường trở lên dễ dàng hơn, giúp cho việc trao đổi thông tin trong trường thuận tiện hơn. Điều đó rất cần thiết đối với các trường đại học có số lượng lớn nhân viên, giảng viên và sinh viên. Nhận thấy ứng dụng to lớn của cổng thông tin sinh viên, đồng thời xét thấy thực tế trường ĐH Hàng Hải rất phù hợp để áp dụng hệ thống cổng thông tin. Chúng em đã lựa chọn đề tài : “Xây dựng Cổng thông tin quản lý thông tin sinh viên trường ĐH Hàng Hải “ làm đề tài tốt nghiệp cho mình. Hy vọng rằng đề tài này sẽ giúp ích cho nhà trường.

doc98 trang | Chia sẻ: lvcdongnoi | Lượt xem: 2848 | Lượt tải: 2download
Bạn đang xem trước 20 trang tài liệu Đề tài Xây dựng Cổng thông tin quản lý thông tin sinh viên trường Đại học Hàng Hải, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
ản_Nhóm. 5. Bài Viết. 6. Bài Viết Nhóm. 7. Bình Luận Bài Viết. 8. Thời Khoá Biểu 9. Điểm Học Kỳ. 10. Môn. 11. Loại Tin. 12. Tin Tức. 13. Cảnh Cáo. 14. Học Phí. 15. Tốt Nghiệp. 16. Ảnh. 17. Album. 18. Ảnh _ Album. 19. Ảnh _ Nhóm. 20. Bình Luận Ảnh. 21. Sinh Viên _ Môn Học _ Nhóm. 22. Tài Liệu. 23. Tài Liệu _ Nhóm. 24. Yêu cầu. Chi tiết các thực thể: 1. Tài khoản: Lưu trữ thông tin Tài Khoản của tất cả các đối tượng trong trường. Đối tượng ở đây ta hiểu bao gồm (Sinh Viên, Giảng Viên, Nhân Viên phòng Đào Tạo, Nhân viên phòng hành chính). Bao gồm các trường: Username, mật khẩu, họ đệm, tên, ngày sinh, giới tính, email, điện thoại, ảnh đại diện, địa chỉ, ngày tạo, trạng thái, ngày vào trường, mã quyền. 2. Quyền: Lưu trữ thông tin Quyền hạn của các tài khoản. Hệ thống hiện tại xây dựng để đáp ứng các quyền của sinh viên, giảng viên, nhân viên đào tạo, nhân viên phòng hành chính. Bao gồm các trường: mã quyền, tên quyền, trạng thái. 3. Nhóm: Lưu trữ thông tin của các nhóm trong trường (Nhóm ở đây là 1 khái niệm được mô hình hoá, ta hiểu 1 Khoa là 1 nhóm, 1 Lớp là 1 nhóm, 1 Hệ Học là 1 nhóm, 1 Loại Hình Đào Tạo là 1 nhóm, . . như vậy các khái niệm về Khoa, Lớp, Hệ Học. . sẽ bị mờ đi, ta chỉ tập trung vào người dùng cuối cùng là đối tượng sinh viên, tất cả thông tin chủ yếu sẽ tập trung để cho sinh viên biết được). Bao gồm các trường thông tin: mã nhóm, tên nhóm, mã tài khoản, ảnh đại diện, mô tả, quy tắc, vị trí GPS, ngày tạo. 4. Tài khoản_Nhóm: Lưu trữ thông tin các tài khoản thuộc nhóm nào trong trường, từ đây ta có thể biết được một đối tượng sẽ thuộc những nhóm nào trong trường (ví dụ: một sinh viên sẽ thuộc nhóm Lớp nào, Khoa nào…). Bao gồm các trường: mã tài khoản_nhóm, mã nhóm, mã tài khoản, trạng thái. 5. Bài viết: Lưu trữ thông tin tất cả các bài viết được gửi từ phòng đào tạo và phòng hành chính, ví dụ như thông báo về thời gian đóng học phí. . Bao gồm các trường: mã bài viết, tiêu đề, nội dung, ngày tạo, trạng thái, mã tài khoản. 6. Bình luận_bài viết: Lưu trữ thông tin tất cả các bình luận về bài viết của các đối tượng như sinh viên, giảng viên. . . Bao gồm các trường : mã bình luận, nội dung, mã tài khoản, ngày tạo, mã bài viết nhóm. 7. Bài viết_nhóm: Lưu trữ thông tin tất cả các bài viết được gửi giữa tài khoản và các nhóm, hoặc tài khoản với tài khoản, ví dụ bài viết gửi từ 1 tài khoản đến nhóm nào đó. . . Bao gồm các trường: Mã bài viết nhóm, mã bài viết, mã tài khoản, ngày chia sẻ, trạng thái, mã nhóm. 8. Ảnh: Lưu trữ tất cả các ảnh như ảnh đại diện, ảnh hoạt động. . . Bao gồm các trường: mã ảnh, mô tả, link, mã tài khoản, ngày tạo. 9. Album: Lưu trữ tất cả các album ảnh như ảnh đại diện. Bao gồm các trường: mã album, tên album, mô tả, ảnh đại diện, mã tài khoản, ngày tạo, ngày cập nhật. 10. Bình luận_ảnh: Lưu trữ tất cả các tin bình luận về ảnh của tài khoản hay nhóm. Bao gồm các trường: mã bình luận ảnh, nội dung, mã tài khoản, ngày tạo, mã ảnh nhóm. 11. Ảnh_album(Tổng hợp ảnh): Lưu trữ tất cả các ảnh cùng album. Bao gồm các trường: mã ảnh_album, mã ảnh, mã album, ngày tạo. 12. Ảnh_nhóm(Chia sẻ ảnh): Lưu trữ tất cả các ảnh của các nhóm. Bao gồm các trường: mã ảnh_nhóm, mã ảnh, mã nhóm, ngày chia sẻ, trạng thái. 13. Môn học: Lưu trữ tất cả các thông tin tất cả các môn học. Bao gồm các trường: mã môn học, tên môn học, số đơn vị học trình. 14. Điểm: Lưu trữ tất cả các thông tin về điểm của tất cả các môn học. Bao gồm các trường: mã điểm, mã tài khoản, mã môn học, điểm X, điểm Y, Điểm TK_Hệ 10, Điểm TK_Hệ 4, điểm chữ. 15. Học phí: lưu trữ thông tin về học phí của sinh viên. Bao gồm các trường: Mã tài khoản, còn nợ. 16. Cảnh cáo: Lưu trữ tất cả các thông tin cảnh cáo của sinh viên. Bao gồm các trường: mã cảnh cáo, mã tài khoản, cảnh cáo 1, cảnh cáo 2, cảnh cáo 3, ghi chú, năm, TBCHK, TBCTL, TCTL. 17. Tốt nghiệp: Lưu trữ tất cả các thông tin liên quan đến tốt nghiệp của sinh viên đã ra trường. Bao gồm các trường: mã tài khoản, xếp loại, danh hiệu, số vào sổ, nghành đào tạo, hệ đào tạo, ngày, tháng, năm, lớp. 18. Loại tin: Lưu trữ tất cả các loại tin. Bao gồm các trường: mã loại tin, tên loại tin, trạng thái, ghi chú. 19. Tin tức: Lưu trữ tất các cả thông tin về 1 tin tức. Bao gồm các trường: mã tin tức, mã loại tin, tiêu đề, nội dung, ảnh, tiêu đề ảnh, ngày tạo, trạng thái. 20. Sinh viên_Môn học_Nhóm: Lưu trữ tất cả các thông tin liên quan giữa sinh viên, môn học, nhóm ví dụ như sinh viên học môn nào tại 1 nhóm nào. Bao gồm các trường: mã sinh viên_môn học_nhóm, mã tài khoản, mã môn học, mã nhóm. 21. Thời khóa biểu: Lưu trữ tất cả các thông tin về thời khóa biểu của sinh viên. Bao gồm các trường: mã thời khóa biểu, mã môn học, mã lớp học phần, lớp học phần, thứ, tiết bắt đầu, số tiết, phòng học, ngày bắt đầu, ngày kết thúc. 22. Tài liệu: Lưu trữ tất cả các thông tin về tài liệu. Bao gồm các trường: mã tài liệu, tên tài liệu, mô tả, link, mã tài khoản, ngày tạo. 23. Tài liệu_nhóm: Lưu trữ tất cả các tài liệu của 1 nhóm nào đó. Bao gồm các trường: mã tài liệu_nhóm, mã tài liệu, mã nhóm, ngày chia sẻ. 24. Yêu cầu: Lưu trữ thông tin đăng ký yêu cầu gia nhập nhóm của 1 tài khoản nào đó. Bao gồm các trường: id, tiêu đề, nội dung, mã tài khoản, mã nhóm, xác nhận, ngày tạo. 2.10.2. Quan hệ giữa các thực thể: 1. Tài Khoản - Quyền: một Tài Khoản có một Quyền nào đó (có thể là sinh viên, giảng viên, giáo vụ khoa, …), một Quyền có thể có nhiều Tài Khoản khác nhau. Quan hệ giữa Tài Khoản và Quyền là quan hệ n – 1. 2. Tài khoản - Tài khoản_Nhóm: một Tài Khoản thuộc về nhiều Nhóm khác nhau(ví dụ: một Tài Khoản sinh viên thuộc về nhóm khoa, thuộc về nhóm lớp niên chế, nhóm lớp tín chỉ…), một Nhóm có nhiều Tài Khoản khác nhau (ví dụ: một nhóm Khoa Công nghệ thông tin có nhiều Tài Khoản sinh viên khác nhau). Vậy quan hệ giữa Tài Khoản và Nhóm là quan hệ n – n, nên để khử quan hệ này ta có thêm thực thể Tài khoản_Nhóm, quan hệ giữa Tài Khoản và Tài khoản_Nhóm là quan hệ 1 – n. 3. Nhóm - Tài khoản_Nhóm: một Tài Khoản thuộc về nhiều Nhóm khác nhau(ví dụ: một Tài Khoản sinh viên thuộc về nhóm khoa, thuộc về nhóm lớp niên chế, nhóm lớp tín chỉ…), một Nhóm có nhiều Tài Khoản khác nhau (ví dụ: một nhóm Khoa Công nghệ thông tin có nhiều Tài Khoản sinh viên khác nhau). Vậy quan hệ giữa Tài Khoản và Nhóm là quan hệ n – n, nên để khử quan hệ này ta có thêm thực thể Tài Khoản_Nhóm, quan hệ giữa Nhóm và Tài Khoản_Nhóm là quan hệ 1 – n. 4. Tài khoản - Cảnh cáo: một tài khoản có thể bị nhiều lần cảnh cáo, một cảnh cáo chỉ thuộc về 1 tài khoản nhất định nên quan hệ giữa Tài khoản và Cảnh cáo là quan hệ 1 - n. 5. Tài khoản - Học phí: một Tài Khoản sinh viên sẽ có một thông tin nợ Học Phí xác định, một thông tin nợ Học Phí thuộc về một Tài Khoản sinh viên, quan hệ giữa Tài Khoản và Học Phí là quan hệ 1 – 1: 6. Tài khoản - Tốt nghiệp: một Tài Khoản sinh viên sẽ có một thông tin Tốt Nghiệp xác định, một thông tin Tốt Nghiệp có mã xác định sẽ thuộc về một Tài Khoản sinh viên, quan hệ giữa Tài Khoản và Tốt Nghiệp là quan hệ 1 – 1: 7. Tài khoản - Bài viết: một tài khoản nhân viên có thể có nhiều bài viết, một bài viết chỉ thuộc một tài khoản nhân viên nhất định. 8. Tài khoản - Bình luận_Bài viết: một tài khoản có thể có nhiều bình luận cho một bài viết nhóm, một bình luận bài viết nhóm chỉ thuộc 1 tài khoản. 9. Tài khoản - Bài viết_Nhóm: một tài khoản nhân viên có thể có nhiều bài viết nhóm, một bài viết nhóm chỉ có thể của một tài khoản nhân viên, quan hệ giữa Tài khoản và Bài viết_Nhóm là quan hệ 1 - n. 10. Tài khoản - Ảnh: một tài khoản có thể có nhiều ảnh, một ảnh chỉ thuộc 1 tài khoản, quan hệ Tài khoản - Ảnh là quan hệ 1 - n. 11. Tài khoản - Album: một tài khoản có thể có nhiều album, một album chỉ thuộc một tài khoản duy nhất, quan hệ Tài khoản - Album là quan hệ 1 - n. 12. Tài khoản - Bình luận ảnh: một tài khoản có thể có nhiều bình luận cho nhiều ảnh, một bình luận ảnh chỉ thuộc một tài khoản, quan hệ Tài Khoản - Bình luận ảnh là quan hệ 1 - n. 13. Tài khoản - Điểm: một tài khoản có nhiều điểm, một điểm chỉ thuộc 1 tài khoản, quan hệ Tài khoản - Điểm là quan hệ 1 - n. 14. Tài khoản - Tài liệu: một tài khoản có thể có nhiều tài liệu, một tài liệu chỉ thuộc một tài khoản nhất định, quan hệ Tài khoản - Tài liệu là quan hệ 1 - n. 15. Tài khoản - Request: một tài khoản có thể có nhiều request, một request chỉ thuộc một tài khoản, quan hệ Tài khoản - Request là quan hệ 1 - n. 16. Nhóm - Bài viết_Nhóm: một nhóm chỉ thuộc nhiều Bài viết_Nhóm, một Bài viết_Nhóm chỉ có một nhóm, quan hệ Nhóm - Bài viết_nhóm là quan hệ 1 - n. 17. Ảnh_Nhóm - Nhóm: một Nhóm có nhiều ảnh_nhóm, một Ảnh_Nhóm chỉ thuộc một Nhóm, quan hệ Ảnh_Nhóm - Nhóm là quan hệ n - 1. 18. Nhóm - Tài liệu_Nhóm: một Nhóm có nhiều tài liệu_Nhóm, một Tài liệu_Nhóm chỉ thuộc một Nhóm, quan hệ Nhóm - Tài liệu_Nhóm là quan hệ 1 - n. 19. Tin tức - Loại tin: một tin tức chỉ thuộc một loại tin, một loại tin có thể có nhiều tin tức, quan hệ tin tức - loại tin là quan hệ n - 1. 20. Điểm - Môn học: Một điểm chỉ thuộc một môn học, một môn học chỉ có một điểm, quan hệ Điểm - Môn học là quan hệ 1 - 1. 2.10.3. Sơ đồ thực thể - quan hệ ER: Hình 2.39 Sơ đồ thực thể quan hệ ER 2.11. Sơ đồ dữ liệu quan hệ: 2.11.1. Sơ đồ dữ liệu quan hệ: Hình 2.40 Sơ đồ dữ liệu quan hệ 2.11.2. Các bảng cơ sở dữ liệu: 1. TaiKhoan (Tài Khoản): Bảng này lưu các thông tin về tài khoản của sinh viên, giảng viên, nhân viên. STT Tên trường Kiểu trường Độ rộng Null 1 MaTaiKhoan Varchar 11 2 TaiKhoan Varchar 50 3 MatKhau Varchar 32 4 HoDem Varchar 32 5 Ten Varchar 32 6 NgaySinh Varchar 15 7 GioiTinh Varchar 1 8 Email Varchar 100 X 9 DienThoai Varchar 15 X 10 DiaChi Varchar 100 X 11 AnhDaiDien Varchar 100 X 12 NgayTao Timestamp 13 TrangThai Tinyint Default = 1 14 NgayVaoTruong Varchar 15 X 15 MaQuyen Int 2. Quyen (Quyền): Bảng này lưu các thông tin về quyền hạn. STT Tên trường Kiểu trường Độ rộng Null 1 MaQuyen Int 11 2 TenQuyen Varchar 50 3. Nhom (Nhóm): Bảng này lưu các thông tin về Nhóm. STT Tên trường Kiểu trường Độ rộng Null 1 MaNhom Varchar 50 2 TenNhom Varchar 50 3 MaTaiKhoan Varchar 11 4 AnhDaiDien Varchar 100 x 5 MoTa Text x 6 NgayTao Timestamp 4. TaiKhoan_Nhom (Tài Khoản Nhóm): Bảng này lưu các thông tin liên quan giữa Tài Khoản và Nhóm. STT Tên trường Kiểu trường Độ rộng Null 1 MaTaiKhoan_Nhom Int 11 2 MaTaiKhoan Varchar 11 3 MaNhom Varchar 50 4 TrangThai TinyInt 1 Default = 1 5. BaiViet (Bài viết): Bảng này lưu các thông tin về bài viết của nhân viên gửi cho tài khoản . STT Tên trường Kiểu trường Độ rộng Null 1 MaBaiViet Int 11 2 TieuDe Text 3 NoiDung Text 4 NgayTao Timestamp 5 TrangThai TinyInt 1 Default = 1 6 MaTaiKhoan Varchar 11 6. BinhLuanBaiViet (Bình luận Bài viết): Bảng này lưu các thông tin về bình luận bài viết. STT Tên trường Kiểu trường Độ rộng Null 1 MaBinhLuan Int 11 2 NoiDung Text 3 MaTaiKhoan Varchar 11 4 NgayTao Timestamp 5 MaBaiViet_Nhom Int 11 7. BaiViet_Nhom (Bài viết Nhóm): Bảng này lưu các thông tin liên quan giữa Bài viết và Nhóm. STT Tên trường Kiểu trường Độ rộng Null 1 MaBaiViet_Nhom Int 11 2 MaBaiViet Int 11 3 MaTaiKhoan Varchar 11 x 4 NgayChiaSe Timestamp 5 TrangThai TinyInt 1 Default = 1 6 MaNhom Varchar 50 x 8. Anh (ảnh): Bảng này lưu các thông tin về ảnh. STT Tên trường Kiểu trường Độ rộng Null 1 MaAnh Int 11 2 MoTa Text x 3 Link Varchar 100 4 MaTaiKhoan Varchar 11 5 NgayTao Timestamp 9. Album: Bảng này lưu các thông tin về Album ảnh. STT Tên trường Kiểu trường Độ rộng Null 1 MaAlbum Int 11 2 TenAlbum Varchar 100 3 MoTa Text x 4 AnhDaiDien Varchar 100 x 5 MaTaiKhoan Varchar 11 6 NgayTao Timestamp 7 NgayCapNhat Timestamp x 10. BinhLuanAnh (Bình luận Ảnh): Bảng này lưu các bình luận về ảnh. STT Tên trường Kiểu trường Độ rộng Null 1 MaBinhLuanAnh Int 11 2 NoiDung Text 3 MaTaiKhoan Varchar 11 4 NgayTao Timestamp 5 MaAnh_Nhom Int 11 x 11. Anh_Album (TongHopAnh): Bảng này lưu tất cả các ảnh và album. STT Tên trường Kiểu trường Độ rộng Null 1 MaAnh_Album Int 11 2 MaAnh Int 11 3 MaAlbum Int 11 4 NgayTao Timestamp 12. Anh_Nhom (ChiaSeAnh) (Ảnh Nhóm): Bảng này lưu các ảnh thuộc Nhóm. STT Tên trường Kiểu trường Độ rộng Null 1 MaAnh_Nhom Int 11 2 MaAnh Int 11 3 MaNhom Varchar 11 x 4 NgayChiaSe Timestamp 5 TrangThai TinyInt 1 Default = 1 13. MonHoc (Môn học): Bảng này lưu các thông tin về môn học. STT Tên trường Kiểu trường Độ rộng Null 1 MaMonHoc Varchar 20 2 TenMonHoc Varchar 50 3 SoDonViHocTrinh Int 3 14. Diem (Điểm) : Bảng này lưu các thông tin về Điểm. STT Tên trường Kiểu trường Độ rộng Null 1 MaDiem Int 11 2 MaTaiKhoan Varchar 11 3 MaMonHoc Varchar 20 4 DiemX Varchar 5 x 5 DiemY Varchar 5 x 6 DiemTK_He10 Varchar 5 x 7 DiemTK_He4 Varchar 5 x 8 DiemChu Varchar 5 x 15. HocPhi (Học phí): Bảng này lưu các thông tin về học phí. STT Tên trường Kiểu trường Độ rộng Null 1 MaTaiKhoan Varchar 11 2 ConNo Int 10 16. CanhCao (Cảnh cáo): Bảng này lưu các thông tin về cảnh cáo. STT Tên trường Kiểu trường Độ rộng Null 1 MaCanhCao Varchar 11 2 MaTaiKhoan Varchar 11 3 CanhCao1 Varchar 10 X 4 CanhCao2 Varchar 10 X 5 CanhCao3 Varchar 10 X 6 GhiChu Varchar 50 X 7 Nam Int 10 X 8 TBCHK Varchar 50 X 9 TBCTL Varchar 50 X 10 TCTL Varchar 10 X 17. TotNghiep (Tốt nghiệp): Bảng này lưu các thông tin tốt nghiệp của sinh viên ra trường. STT Tên trường Kiểu trường Độ rộng Null 1 MaTaiKhoan Varchar 11 2 XepLoai Varchar 50 X 3 DanhHieu Varchar 50 X 4 SoVaoSo Varchar 50 X 5 NganhDaotao Varchar 11 X 6 HeDaoTao Varchar 11 X 7 Ngay Varchar 10 X 8 Thang Varchar 10 X 9 Nam Varchar 10 X 10 Lop Varchar 10 X 18. LoaiTin (Loại tin): Bảng này lưu các thông tin về loại tin. STT Tên trường Kiểu trường Độ rộng Null 1 MaLoaiTin Int 11 2 TenLoaiTin Varchar 100 3 TrangThai Int 2 4 GhiChu Varchar 200 x 19. TinTuc (Tin tức): Bảng này lưu các thông tin về tin tức. STT Tên trường Kiểu trường Độ rộng Null 1 MaTinTuc Int 11 2 MaLoaiTin Int 11 3 TieuDe Varchar 200 4 Tomtat Text 5 NoiDung Text 6 Anh Varchar 200 x 7 TieuDeAnh Varchar 200 X 8 NgayTao TimeStamp 9 TrangThai Int 2 20. SinhVien_MonHoc_Nhom (Sinh viên Môn học Nhóm): Bảng này lưu các thông tin liên quan giữa sinh viên, môn học, nhóm. STT Tên trường Kiểu trường Độ rộng Null 1 MaSV_Mh_Nhom Int 11 2 MaTaiKhoan Varchar 11 3 MaMonHoc Varchar 20 4 MaNhom Varchar 50 21. ThoiKhoaBieu (Thời khóa biểu): Bảng này lưu các thông tin về thời khóa biểu. STT Tên trường Kiểu trường Độ rộng Null 1 MaThoiKhoaBieu Int 11 2 MaMonHoc Varchar 20 3 MaNhom Varchar 50 4 Thu Varchar 10 5 TietBatDau Int 5 6 SoTiet Int 5 7 PhongHoc Varchar 50 8 NgayBatDau Varchar 20 9 NgayKetThuc Varchar 20 22. TaiLieu (Tài liệu): Bảng này lưu các thông tin về tài liệu. STT Tên trường Kiểu trường Độ rộng Null 1 MaTaiLieu Int 11 2 TenTaiLieu Varchar 50 3 MoTa Text 4 Link Varchar 200 5 MaTaiKhoan Varchar 11 6 NgayTao TimeStamp 23. TaiLieu_Nhom (Tài liệu Nhóm): Bảng này lưu các thông tin liên quan giữa tài liệu và nhóm. STT Tên trường Kiểu trường Độ rộng Null 1 MaTaiLieu_Nhom Int 11 2 MaTaiLieu Int 11 3 MaNhom Varchar 50 4 NgayChiaSe TimeStamp 24. Request (phản hồi): Bảng này lưu các thông tin phản hồi. STT Tên trường Kiểu trường Độ rộng Null 1 Id Int 11 2 TieuDe Text 3 NoiDung Text 4 MaTaiKhoan Varchar 11 5 MaNhom Varchar 50 6 XacNhan TinyInt 1 7 NgayTao TimeStamp CHƯƠNG III: CƠ SỞ LÝ THUYẾT VÀ CÔNG CỤ 3.1. Framework Yii: 3.1.1. Frame work: Khái niệm về frame work rất đa dạng, nhưng thường chia thành 3 loại sau: - Software framework: là tập các thư viện hoặc lớp có khả năng tái sử dụng nhiều lần cho hệ thống phần mềm, hoặc các hệ thống con trên nền một hệ tổng thể. - Application framework: là 1 software framework được sử dụng để triển khai các cấu trung cơ bản của một ứng dụng trên nền các hệ điều hành xác định. - Web application framework: là 1 software framework dùng để phát triển các website động, ứng dụng web hoặc các dịch vụ webservice. Các web application framework thường cung cấp các tính năng thông dụng của 1 sản phẩm web, ví dụ các tính năng liên quan đến truy xuất cơ sở dữ liệu, các khung mẫu của code nguồn, cơ chế quản lý session, bảo mật tập trung hay quan trọng nhất là cung cấp các cấu trúc code nguồn có khả năng tái sử dụng, minh bạch. Lịch sử phát triển: Vào thời điểm ra đời world wide web thực ra không tồn tại khái niệm web động, bởi bản thân www vào thời điểm đó dựa trên khái niệm một tập hợp các hypertext viết trên HTML được xuất bản trên các webserver. Bất kỳ sự chỉnh sửa hoặc tái xuất bản một trang nào đều phải được thực hiện trực tiếp bởi chính tác giả của trang đó. Về sau để cung cấp khả năng động cho các trang web, nghĩa là người dùng có thể tương tác trang thông qua dữ liệu nhập vào, chuẩn CGI(Common Gateway Interface) được ra đời, chuẩn này thực sự đã giúp cho các ứng dụng web ngày một phát triển. Người lập trình luôn muốn tích hợp vào webserver nhiều tính năng hơn để có thể xây dựng các ứng dụng web với khối lượng truy cập, nội dung truy cập ngày một phức tạp. Trên cơ sở đó rất nhiều các ứng dụng quản lý webserver xuất hiện, ví dụ như Apache Http Server là một trong các ứng dụng quản lý webserver nổi tiếng, nó hỗ trợ rất nhiều các mở rộng của các ngôn ngữ lập trình, cũng như các đặc tính mở rộng cho phép các webserver có thể quản lý được các nội dung động và các ứng dụng phức tạp. Cùng thời điểm các ứng dụng quản lý webserver xuất hiện, các ngôn ngữ lập trình cũng được phát triển dành riêng cho việc sử dụng trên web như ColdFusion, PHP, Active, Server Page, Ruby…. Cùng với thời gian càng ngày càng có nhiều các thư viện mở rộng được tích hợp hay hỗ trợ bởi các webserver, các thư viện này một phần giúp cho người lập trình bớt đi phần nào công việc cũng như cho phép hệ thống hoá việc xây dựng ứng dụng web một cách thống nhất, dần rà các thư viện hình thành những môi trường phát triển mà chúng ta gọi là các web application frame work như: Zend frame work, Ruby On Rails, CodeIniter, Yii Frame…. Mô hình MVC: 3.1.1.2.1. Tổng quan về mô hình MVC Bắt đầu vào những năm 70 của thế kỷ 20, tại phòng thí nghiệm Xerox PARC ở Palo Alto. Sự ra đời của giao diện đồ họa (Graphical User Interface) và lập trình hướng đối tượng (Object Oriented Programming) cho phép lập trình viên làm việc với những thành phần đồ họa như những đối tượng đồ họa có thuộc tính và phương thức riêng của nó. Không dừng lại ở đó, những nhà nghiên cứu ở Xerox PARC còn đi xa hơn khi cho ra đời cái gọi là kiến trúc MVC (viết tắt của Model – View – Controller). MVC là một mẫu thiết kế phần mềm được dùng để tổ chức các đoạn mã theo cách mà việc xử lý dữ liệu (business logic) và việc biểu diễn dữ liệu là tách rời nhau. Tiền đề nằm sau hướng tiếp cận này là nếu bussiness logic được nhóm vào trong một section thì giao diện và tương tác người dùng bao quanh dữ liệu có thể định dạng và tùy biến lại mà không có ảnh hưởng đến việc phải lập trình lại bussiness logic. (nghĩa là hình thức và nội dung là tách rời nhau, do đó khi thay đổi hình thức thể hiện thì không ảnh hưởng đến nội dung). Hầu hết các web application frame work đều dựa vào mô hình MVC. Kiến trúc này chia thành: các mô hình dữ liệu với các luật xử lý nghiệp vụ dựa trên giao diện người dùng. Tuỳ vào cách chúng xử lý dữ liệu, người ta có thể chia chúng thành: - Dạng “push-based”: các frame work sử dụng các action để yêu cầu xử lý, sau đó đẩy dữ liệu tới lớp hiển thị để biểu diễn kết quả. Strut, Django, Ruby on Rails hay Spring MVC là các frame work dạng này. - Ngoài ra các frame có thể dựa trên kiến trúc “pull-based”, nghĩa là ứng dụng sẽ bắt đầu từ lớp hiển thị, sau đó sẽ lấy dữ liệu từ nhiều điều khiển cần thiết để hiển thị, dạng này cho phép nhiều điều khiển có thể được truy xuất trong cùng một hiển thị. Các frame như Strut2, Lift, Tapestry, Jboss, Seam, Wicket và Stripes là thuộc dạng này. 3.1.1.2.2. Mô hình MVC đơn giản: Model: được giao nhiệm vụ cung cấp dữ liệu cho cơ sở dữ liệu và lưu dữ liệu vào các kho chứa dữ liệu. Tất cả các nghiệp vụ logic được thực thi ở Model. Dữ liệu vào từ người dùng sẽ thông qua View đến Controller và được kiểm tra ở Model trước khi lưu vào cơ sở dữ liệu. Việc truy xuất, xác nhận, và lưu dữ liệu là một phần của Model. Do có 2 vai trò tương đối tách biệt cho nên một Model thường được tách thành các lớp có các domain xử lý khác biệt: Business Logic: thường là xử lý rule hay policy của nghiệp vụ cũng như Business Workflows. Domain data: cung cấp/lưu trữ dữ liệu và việc chuyển đổi dữ liệu thành các dạng khác nhau theo yêu cầu. View: hiển thị các thông tin cho người dùng của ứng dụng và được giao nhiệm vụ cho việc nhận các dữ liệu vào từ người dùng, gửi đi các yêu cầu đến controller, sau đó là nhận lại các phản hồi từ controller và hiển kết quả cho người dùng. Các trang HTML, JSP, các thư viện thẻ và các file nguồn là một phần của thành phần View. Trong các Web Framework, View gồm 2 phần chính: Template file định nghĩa cấu trúc và cách thức trình bày dữ liệu cho user. Ví dụ như layout, color, windows … Logic xử lý cách áp dụng dữ liệu vào cấu trúc trình bày. Logic này có thể bao gồm việc kiểm tra định dạng dữ liệu, chuyển đổi định dạng dữ liệu sang một sạng dữ liệu trung gian, lựa chọn một cấu trúc hiện thị phù hợp. Controller: đảm nhiệm việc cập nhật bộ phận hiển thị (View) khi cần thiết. Bộ điều khiển này nhận dữ liệu nhập từ người dùng, truy xuất các thông tin cần thiết từ mô hình trong (Model), và cập nhật thích hợp phần hiển thị (View). Giao diện với người sử dụng phần mềm được thiết lập nhờ sự tương tác qua lại giữa View và Controller. Lưu ý: Mục đích của Controller không phải là thành phần trung gian để tách rời View khỏi Model. Trong thực tế, kiến trúc MVC tách rời dữ liệu và xử lý trung tâm khỏi phần trình bày thông qua cơ chế là Observer Pattern chứ không phải Controller. Nhiệm vụ của Controller là cầu nối giữa người dùng và ứng dụng, không phải giữa View và Model. 3.1.1.2.3. Ưu nhược điểm của MVC: Ưu điểm Một lợi điểm của phương pháp MVC là nó bắt buộc phải tạo ra một sự rành mạch trong liên kết giữa 3 thành phần Model, View và Controller trong ứng dụng. Duy trì được mối quan hệ rành mạch rõ ràng này khiến việc kiểm tra ứng dụng trở nên dễ dàng hơn, đồng thời trách nhiệm của từng thành phần được định nghĩa rõ ràng và cả ba đều làm việc ăn ý với nhau. Ứng dụng được phát triển một cách độc lập, không bị phụ thuộc giữa các thành phần, nên việc thêm hoặc xóa một module trong ứng dụng này khá dễ dàng và nhẹ nhàng hơn so với việc phát triển ứng dụng theo mô hình cũ. Có tính mở rộng do có thể thay thế từng thành phần 1 cách dễ dàng Hỗ trợ tốt hơn cho Test Driven Development (TDD) cài đặt các Unit Tests tự động, xác định và kiểm tra lại các yêu cầu trước khi bắt tay vào viết code. Hỗ trợ kết hợp rất tốt giữa người lập trình và người thiết kế giao diện. Nhược điểm Đối với dự án nhỏ việc áp dụng mô hình MVC gây cồng kềnh, tốn thời gian trong quá trình phát triển.Tốn thời gian trung chuyển dữ liệu của các tầng. 3.1.1.2.4. So sánh MVC với kiến trúc 3 tầng: Giống nhau Cả hai đều để tách rời programming core/business logic ra khỏi những phụ thuộc về tài nguyên và môi trường. Trong một ứng dụng nhỏ: Presentation thể hiện giống như chức năng của View và Controller. Business và Database thể hiện giống như chức năng của Model. Như thế nhìn ở góc độ này, thì MVC tương đương với kiến trúc 3 tầng (tất nhiên có chồng chéo như hình vẽ) PRESENTATION LAYER CONTROLLER VIEW MODEL DATA ACCESS LAYER BUSINESS LAYER 3 – tier architecture MVC architecture Khác nhau Trong 3-layers, quá trình đi theo chiều dọc, bắt đầu từ Presentation, sang Business Logic , rồi tới Data, và từ Data, chạy ngược lại BL rồi quay ra lại Presentation. So với kiến trúc 3 tầng, kiến trúc MVC có sự tách biệt tầng Presentation thành view và controller nên sơ đồ hoạt động của MVC có sự thay đổi như sau: Khi Controller bắt được yêu cầu (sự kiện) của người dùng thông qua view, controller sẽ điều hướng hoạt động của ứng dụng; Controllelr sẽ gọi đến model, truy cập cơ sở dữ liệu; Sau khi xử lý logic (hoặc dữ liệu), model sẽ thông báo các thay đổi trạng thái cho view thông qua Observer patern; View nhận thấy sự thay đổi sẽ tự động cập nhật lại trạng thái mới nhất và hiển thị cho người dùng. Trong kiến trúc này, sơ đồ hoạt động có dạng hình tam giác. Controller Model View Thông thường khi áp dụng thì người ta kết hợp cả 2: MVC được áp dụng bên phía Client. Sau đó 3 tier được áp dụng như bình thường trên hệ thống client-server. Việc có sử dụng hay là có bọc lẫn nhau giữa MVC và 3-tier là không hoàn toàn bắt buộc, ta có thể sử dụng MVC mà không cần đến 3-tier (với những ứng dụng nhỏ). 3.1.2. Yii Framework: Yii là một trong số các web application frame work, nó giúp người phát triển web xây dựng được các ứng dụng web phức tạp và triển khai một cách trực quan và chuẩn xác theo thời gian. Yii được phát âm giống từ Yee hoặc [Ji:], thường được cộng đồng mạng gọi là “Yes it is!”. Điều này thường được ví von khi người phát triển đắn đo xem framework có đáp ứng được các yêu cầu như: nó có nhanh không, co bảo mật không, có chuyên nghiệp không, có sẵn sàng cho việc phát triển website, có sự hỗ trợ không. Và câu trả lời của framework này luôn là “Yes it is!”. Yii là một web application framework dựa trên chuẩn open-source, nó hoàn toàn miễn phí. Yii được viết trên ngôn ngữ PHP5, nó thực sự chuẩn tắc, dễ dàng thiết kế, dễ dàng phát triển và hơn thế là nó giúp tiết kiệm thời gian. Việc phát triển ứng dụng web trên Yii, giống như việc phát triển các ứng dụng trên máy đơn, Yii hỗ trợ các khả năng mở rộng, bảo trì, kiểm thử và xuất bản ứng dụng một cách hiệu quả, nó thực sự thích hợp đối với mọi project từ đơn giản đến phức tạp. Yii ra đời vào khoảng năm 2008, và mang đầy đủ các đăc tính hỗ trợ sự phát triển các ứng dụng web trên nền tảng web 2.0. Nó được nhiều lập trình viên lựa chọn để phát triển các ứng dụng web từ đơn giản đến việc xây dựng các ứng dụng web tầm cỡ doanh nghiệp ở mức độ phức tạp. Việc ứng dụng Yii có thể tuân theo kiến trúc sau: Model – View – Controller trong Yii: Yii được phát triển dựa triên mẫu thiết kế MVC, đây là một chuẩn mở được sử dụng rỗng rãi trong thế giới lập trình web. MVC chia các xử lý nghiệp vụ khỏi giao diện, các phần của ứng dụng tồn tại một cách độc lập tương đối thông qua các giao tiếp được chuẩn tắc hoá, điều này cho phép người phát triển có thể chỉnh sửa từng phần của ứng dụng mà không là ảnh hưởng đến các phần khác. Trong Yii, Model biểu diễn thông tin và các luật xử lý nghiệp vụ; View chứa các phần tử biểu diễn giao diện như văn bản, các form nhập liệu; Controller là các điều khiển quản lý giao tiếp giữa model và view. Hình sau biểu diễn cấu trúc tĩnh của một ứng dụng xây trên nền Yii: 3.1.2.2. Dòng làm việc chuẩn: Hình sau biểu diễn một dòng làm việc chuẩn của các ứng dụng xây dựng trên Yii thông qua việc nhận và xử lý các yêu cầu của người sử dụng: Người sử dụng yêu cầu truy xuất web, ví dụ truy xuất địa chỉ và webserver sẽ tiếp nhận, xử lý yêu cầu thông qua một đoạn script mồi lưu trong index.php. Đoạn script mồi sẽ tạo một thể hiện của ứng dụng và thực thi nó. Ứng dụng sẽ lấy thông tin gửi đến từ yêu cầu của người sử dụng thông qua các thành phần request. Ứng dụng sẽ xác định yêu cầu của người sử dụng là đề cập đến controller và action nào thôn qua sự giúp đỡ của thành phần urlManager. Trong ví dụ này, controller được người sử dụng đề cập đến là PostController và hành động là show của controller đó. Ứng dụng tạo một thể hiện của controller được yêu cầu, sau đó trao quyền thực thi cho nó. Đến lượt mình, controller nhận thấy người sử dụng yêu cầu hành động show được cài đặt trong hàm actionShow của controller. Nó lập tức thực hiện hành động phù hợp nếu bộ lọc (quyền hạn, xác thực…) cho phép. Hành động show đọc model Post với id=1 từ cơ sở dữ liệu. Hành động yêu cầu view có tên show biểu diễn dữ liệu lưu trong model Post thu được. View sẽ đọc và hiển thị các thuộc tính của model Post. View có thể hiện một số widget (nếu có). View biểu diễn lại kết quả trong khung layout được quy định trước. Hành động kết thúc sau khi view biểu diễn xong kết quả và trả về cho người sử dụng. 3.1.2.3 Làm việc với cơ sở dữ liệu: Yii xây dựng trên các mở rộng mới nhất của PHP như: PHP Data Objects(PDO), Data Access Object(DAO) cho phép truy xuất dữ liệu của nhiều hệ quản trị cơ sở dữ liệu dựa trên một khung truy xuất thống nhất. Các ứng dụng triển khai trên Yii DAO có thể dễ dàng chuẩn qua lại các hệ quản trị cơ sở dữ liệu mà không cần thiết phải chỉnh sửa code truy xuất dữ liệu. Yii Query Builder là một cài đặt theo phương pháp hướng đối tượng, nó dùng để xây dựng các câu truy vấn SQL một cách thống nhất, việc này giúp làm giảm đáng kể sự tấn công SQL injection. Yii Active Record (AR) là một cài đặt theo chuẩn mở của Object-Relational Mapping (ORM), nó biểu diễn một bảng thành khái niệm lớp dựa trên tập hợp các thể hiện biểu diễn dòng. Yii AR cho phép người phát triển có thể thực hiện nhanh chóng các nghiệp vụ chuẩn như tạo, đọc, chỉnh sửa, xoá. Mặc dù Yii cung cấp rất nhiều các lớp đối tượng có sẵn cho phép quản lý, thao tác hầu hết các tác vụ liên quan đến cơ sở dữ liệu, nhưng người lập trình vẫn có khả năng sử dụng các thư viện tự phát triển trong ứng dụng xây dựng trên Yii hoặc các thư viện đến từ thành viên thứ ba. 3.1.2.4. Làm việc với Form: Lấy dữ liệu từ người sử dụng thông qua các form HMK là một trong các tác vụ chính của phát triển ứng dụng web. Bên cạnh việc thiết kế form, người lập trình cũng cần trình bày form với các dữ liệu có sẵn hoặc dữ liệu mặc định cũng như xác thực dữ liệu được nhập vào, hiển thị các thông báo lỗi và lưu dữ liệu được nhập vào cho các lần sử dụng sau. Các bước sau thường được thấy khi triển khai form trong Yii: Tạo một lớp Model biểu diễn các trường dữ liệu được thu thập. Tạo một hành động trong Controller dùng để xử lý các dữ liệu khi form được chuyển lên. Tạo một Form trong phần view gắn với hành động của Controller. 3.1.2.5. Các hỗ trợ của Yii: AJAX-enal led widget: Được tích hợp với jQuery, Yii hỗ trợ rất nhiều các widget được viết trên AJAX như các hộp nhật tự cập nhật, treeview, datagrid… Authentication and authorization: Yii hỗ trợ mạnh việc xác thực quyền hạn theo cấu trúc xác thực và điều khiển RBAC. Skinning and theming: Các ứng dụng trên Yii được thừa hưởng các mẫu thiết kế đẹp cùng cơ chế quản lý thiết kế linh động cho phép người lập trình nhanh chóng thay đổi giao diện khi cần. Web Services: Yii hỗ trợ cơ chế tự động source cho webservice, cũng như phần quản lý giao dịch. Internationalization and localization: Yii hỗ trợ đa ngôn ngữ và tuỳ biến theo vùng văn hoá. Layered caching scheme: Yii hỗ trợ việc cache dữ liệu, cache trang cũng như nội dung. Việc đó được thực hiện tự động, người lập trình không cần phải lo thực hiện nhiệm vụ này. Error handing and logging: Yii có cơ chế quản lý và thông báo lỗi thực sự hiệu quả, các lỗi được phân loại và tổng hợp theo các mục đích khác nhau. Security: Yii được trang bị nhiều cơ chế bảo mật khác nhau, nó giúp cho website của đơn vị tránh được nhiều kiểu tấn công như SQL injection, XSS, CSRF và cookie tampering. Unit and functionality testing: Yii hỗ trợ việc viết và thực thi các đơn vị kiểm thử như một bộ kiểm thử chuyên nghiệp. Tính năng này dựa trên PHPUnit và Slenium. Automatic code generation: Yii cung cấp một tập các tiện ích giúp tự động sinh code theo ý muốn của người lập trình ví dụ như các form nhập liệu, phần xây dựng, tạo cơ sở dữ liệu… Friendly with third-party code: Yii được thiết kế để có thể làm việc với tiện ích của hãng thứ 3, người lập trình có thể sử dụng code được viết từ PEAR hoặc Zend framework trong ứng dụng trên Yii. Detailed documentation: Các phương thức hoặc thuộc tính do Yii cung cấp đều được văn bản hoá. Điều này cho phép người lập trình dễ dàng hiểu được các tính năng có sẵn và ứng dụng chúng vào dự án của mình. Extension library: Yii cung cấp một tập thư viện mở rộng, điều này cho phép khả năng phát triển không ngừng của các sản phẩm triển khai trên Yii. 3.1.2.6.Hiệu năng xử lý của Yii: Yii là một framework có hiệu năng xử lý cao,sơ đồ dưới đây thể hiện hiệu quả của Yii khi so sánh với các framework thông dụng khác trên Yii: Yii thực thi mọi thứ khá nhanh vì nó dùng kỹ thuật load chậm các thư viện. Ví dụ: nó không load các class file cho đến khi lớp đó được sử dụng lần đầu tiên, nó cũng không tạo một đối tượng cho đến khi đối tượng được truy xuất lần đầu tiên; trong khi đó các framework khác gần như load tất cả các chức năng cho dù nó có sử dụng hay không. 3.2. PHP VÀ LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG 3.2.1. Tổng quan về PHP PHP được viết từ Hypertext Preprocessor, đây là một ngôn ngữ kịch bản mã nguồn mở sử dụng cho mục đích chung, đặc biệt thích hợp cho phát triển ứng dụng Web và có thể nhúng vào HTML. Hiện nay PHP được sử dụng rất rộng rãi. Mã PHP được thực thi ở phía Server, khi trình duyệt của người dùng truy cập một trang web có chứa một đoạn mã PHP thì trình duyệt nhận được trang kết quả đã xử lý từ Web Server, người dùng sẽ không thể biết được đoạn mã viết gì. Mã PHP được bao đóng trong cặp dấu hoặc . Tập tin PHP có phần mở rộng là .php và .php3. PHP tương tự JSP và ASP với tập thẻ lệnh dùng cho trang HTML. Điểm đặc biệt là PHP được phát triển hoàn toàn cho nền tảng Web. Chính vì vậy, mà các ứng dụng viết bằng PHP rất ngắn gọn so với VBScript hay JSP. Đây cũng chính là điểm mạnh của PHP so với Perl. Cú pháp PHP mượn từ nhiều ngôn ngữ khác như C, Java, Perl, … PHP có thể giao tiếp với nhiều hệ cơ sở dữ liệu như MySQL, MS Access, Sybase, Oracle, SQL Server,… Không chỉ có khả năng thao tác với cơ sở dữ liệu, PHP còn có nhiều khả năng khác như IMAP, SNMP, LDAP, XML, … PHP chạy trên hầu hết các nên tảng hệ thống. Trình máy chủ phân giải mã lệnh PHP có thể tải về miễn phí từ trang web chính thức của PHP. Có lẽ yếu tố hấp dẫn nhất của PHP là nó hoàn toàn miễn phí. Với máy tính cấu hình vừa phải chạy Linux, cài đặt Apache, PHP và MySQL, bạn sẽ có máy chủ có thể phục vụ được nhiều ứng dụng web tương đối. Toàn bộ chi phí hầu như chỉ là thời gian bạn bỏ ra để cài đặt phần mềm. PHP được xem là một thay thế cho Perl, PHP không thể làm được nhiều như Perl, thế nhưng chính sự hạn chế này làm cho PHP dễ học và dễ dùng. Nhiều nhà phát triển dùng kết hợp cả hai: Perl dùng cho những tác vụ chạy bên dưới còn PHP dùng cho việc xử lý bề mặt. Komodo của Active State Corp là công cụ miễn phí dùng để phát triển trang PHP. 3.2.2. Các kiểu lập trình trong PHP: Trong lập trình có hai kiểu lập trình chúng ta thường sử dụng đó là: lập trình hướng thủ tục và lập trình hướng đối tượng. Lập trình hướng thủ tục:  là cách lập trình để giải quyết vấn đề nào đó theo yêu cầu đưa ra và nó đi theo hướng giải quyết từng bước một đến khi đạt được kết quả. Kiểu lập trình hướng thủ tục còn được gọi là kiểu lập trình từ trên xuống hoặc lập trình theo hàm (function). Khi sử dụng kiểu lập trình này chúng ta không xây dựng sẵn các hàm xử lý mà chỉ tạo ra hàm khi gặp một vấn đề nào đó. Lập trình hướng đối tượng:  là kiểu lập trình dựa trên một nền tảng các lớp đã được xây dựng sẵn. Nghĩa là chúng ta phải xác định trước những gì sẽ phải làm, những trường hợp sẽ xảy ra để xây dựng lớp có những chức năng cần thiết cho quá trình xây dựng ứng dụng. 3.2.3. Một số khái niệm trong lập trình hướng đối tượng: Lớp (Class): một lớp có thể được hiểu là khuôn mẫu để tạo ra các đối tượng. Trong một lớp, người ta thường dùng các biến để mô tả các thuộc tính và các hàm để mô tả các phương thức của đối tượng. Khi đã định nghĩa được lớp, ta có thể tạo ra các đối tượng từ lớp này. Để việc sử dụng được dễ dàng, thông qua hệ thống hàm tạo (constructor), người ta dùng lớp như một kiểu dữ liệu để tạo ra các đối tượng. Ví dụ: Tạo class ConMeo Để tạo class cho đối tượng ConMeo chúng ta cần xác định 2 phần: Thuộc tính: Tên, tuổi, màu lông,… Hành động (phương thức): chạy, kêu, cắn, cào,… Đối tượng (Object): Thể hiện một lớp thành một thực thể nào đó. Có thể tạo nhiều đối tượng từ một lớp. Ví dụ: $conMeoA = new ConMeo(); $conMeoB = new ConMeo(); Ví dụ: Nhà tôi có một con mèo. Nhà bạn tôi có nuôi một con mèo. Các đối tượng khác nhau sẽ có đặc tính khác nhau. Ví dụ: Con mèo của tôi có tên là Mimi có lông màu trắng. Con mèo của bạn tôi có tên là Doremon có lông màu vàng. Tuy 2 con mèo trên có những đặc điểm khác nhau nhưng nó cùng là lớp con mèo. Thuộc tính (Attribute) và phương thức (Method): Thuộc tính Là các đặc tính, đặc điểm của một lớp. Thuộc tính bao gồm: Các biến: lưu trữ các giá trị. Biểu thức get và set: cho phép lấy và gán giá trị. Phương thức Là các hành động có thể được thực hiện từ lớp. Phương thức cũng giống như hàm nhưng là hàm riêng của lớp. Phương thức có thể nhận vào các tham số và trả về các giá trị. Tính kế thừa: là một ưu điểm của OOP nó giúp chúng ta mở rộng và phát triển chương trình mà không làm ảnh hưởng đến những thành phần đã có sẵn. 3.2.4. Biểu thức chính qui (Regular Expression): Biểu thức chính qui (Regular Expression) bắt nguồn từ ngôn ngữ Perl và hiện nay hầu như có trong tất cả ngôn ngữ lập trình. Là một phần rất quan trọng trong quá trình xử lý chuỗi và hỗ trợ các lập trình viên giảm bớt các dòng mã trong quá trình xử lý chuỗi bằng những biểu thức ngắn gọn nhưng đem lại kết quả như sự mong đợi. Nhưng để sử dụng tốt biểu thức chính qui (Regular Expression) thì không phải dễ dàng nếu chúng ta không đi đúng hướng và hiểu hết các kí hiệu của nó. Biểu thức chính qui (Regular Expression) thường sử dụng trong những trường hợp sau: Kiểm tra giá trị các phần tử trong Form. Xử lý yêu cầu phức tạp trong chuỗi như bóc tách, thay đổi nội dung, loại bỏ các ký tự không cần thiết. 3.2.4.1. Một số hàm hỗ trợ biểu thức chính qui: Tham chiếu Trong lập trình có hai loại biến chúng ta thường sử dụng truyền giá trị vào hàm đó là biến tham trị và biến tham chiếu. Biến tham trị: khi truyền giá trị vào hàm, mọi sự thay đổi của biến tham trị trong thân hàm không ảnh hưởng đến biến ban đầu. Biến tham chiếu: khi truyền giá trị vào hàm, thì giá trị của biến tham chiếu sẽ thay đổi bởi nội dung xử lý trong thân hàm được gọi. Ví dụ: <?php $phepCong = phepCong(10,5,$c); echo “” . $phepCong; echo “” . $c; function phepCong($a=0, $b=0, &$c=0){ $tong = $a + $b; $c = $tong + 10; Return $tong; } ?> preg_match Hàm preg_match trả về giá trị 1 nếu tìm được pattern trong chuỗi và trả về 0 nếu không tìm được. Hàm này trả về một mảng có một phần tử trong chuỗi. preg_match ($pattern, $subject, &$matches); $pattern: chứa mẫu cần tìm kiếm, nó được xem như một chuỗi. $subject: chứa chuỗi nguồn. &$matches: mảng tham chiếu biến này chứa phần tử được tìm thấy. <?php $subject = “abcdefasdasdasd”; $pattern = ‘#a#’; echo preg_match($pattern, $subject, $matches) . ‘’; print_r($matches); ?> preg_match_all Hàm preg_match_all trả về giá trị 1 nếu tìm được pattern trong chuỗi và trả về 0 nếu không tìm được. Hàm này trả về một mảng có nhiều phần tử trong chuỗi. preg_match_all($pattern, $subject, &$matches); Ví dụ <?php $subject = “abcdefasdasdasd”; $pattern = ‘#a#’; echo preg_match_all($pattern, $subject, $matches) . ‘’; echo ‘’; print_r($matches); echo ‘’; ?> Các ký hiệu biểu thức chính qui Ký tự Ý nghĩa ^ Đại diện cho ký tự đầu tiên của chuỗi $ Đại diện cho ký tự cuối cùng của chuỗi \ Hiển thị các ký tự đặc biệt như: $, *, ., \ . Đại diện cho ký tự bất kỳ, kể cả dấu cách “ ” [] Kí hiệu tập hợp [^] Dấu mũ đứng trước 1 tập hợp, mang ý nghĩa phủ định tập hợp đó () Đại diện cho tập hợp các mẫu con * Dấu * đại diện cho số lần xuất hiện của ký tự đứng trước nó từ 0 – n lần + Tương tự như dấu *, ký tự đứng trước dấu + có thể xuất hiện từ 1 – n lần ? Ký tự đứng trước dấu ? có thể xuất hiện từ 0 – 1 lần {} Đại diện cho số lần lặp lại ký tự đứng trước \w Đại diện cho các chữ cái, chữ số và dấu _ \W Phủ định của \w \s Lấy tập hợp các khoảng trắng \S Phủ định của \s, lấy tất cả các ký tự, trừ khoảng trắng \d Đại diện cho các chữ số \A Tương đương với dấu ^ \Z Tương đương với dấu $ 3.2.5. Mảng (Array) Mảng (Array) là một thành phần rất quan trọng trong bất kỳ ngôn ngữ lập trình nào. Thông thường khi lập trình web với PHP thuần chúng ta rất ít khi để ý đến kỹ thuật xử lý mảng điều đó làm hạn chế sự linh hoạt của ứng dụng. Đối với các ứng dụng được xây dựng trên nền Zend Framework, nếu chúng ta không sử dụng tốt mảng thì thật sự sẽ khó khăn để chúng ta có thể tối ưu mã của chương trình giúp cho ứng dụng của chúng ta chạy nhanh được. Mảng là gì? Như chúng ta đã biết, biến là một nơi để lưu trữ số hoặc chữ. Vấn đề là, biến chỉ có thể lưu trữ một giá trị duy nhất. Còn mảng là một biến đặc biệt, nó có thể lưu trữ nhiều giá trị trong một biến duy nhất. Ví dụ: chúng ta chỉ có thể lưu trữ một tên của nhân viên trong một biến. Nhưng đối với mảng chúng ta có thể lưu trữ hàng ngàn tên nhân viên khác nhau: <?php //sử dụng biến $employee_l = ‘Nguyễn Văn A’; //sử dụng mảng $arr_employee = array(); $arr_employee[] = ‘Nguyễn Văn A’; $arr_employee[] = ‘Nguyễn Văn B’; $arr_employee[] = ‘Nguyễn Văn C’; ?> Mảng có thể lưu trữ tất cả các giá trị biến của bạn dưới một tên duy nhất. Và bạn có thể truy cập giá trị bằng cách tham chiếu đến tên mảng. Mỗi phần từ mảng có chỉ số riêng (index) để chúng ta có thể truy cập chúng một cách dễ dàng. Trong PHP có 3 loại mảng: mảng số nguyên (Numeric array), mảng kết hợp (Associative array), mảng đa chiều (Multidimensional array). Mảng số nguyên Mảng số nguyên là mảng có chỉ số (index or key) là ở dạng số. Chúng ta thường gọi là mảng liên tục. Có 2 cách để tạo ra một mảng số nguyên: Ví dụ 1: $cars = array (“Saab”, “Volvo”, “BMW”, “Toyota”); Ví dụ 2: $cars[0] = “Saab”; $cars[1] = “Volvo”; $cars[2] = “BMW”; $cars[3] = “Toyota”; Mảng kết hợp Mảng kết hợp là một mảng mà chỉ số (index or key) là một giá trị, chỉ số có thể là chuỗi hoặc số. Khi lưu trữ dữ liệu vào các phần tử mảng, các phần tử đó được đặt tên cụ thể. Mảng kết hợp là một sự bổ sung cần thiết cho các thành phần mảng trong PHP vì có nhiều vấn đề mảng số nguyên không thể giải quyết được hết. Chúng ta vẫn thường gọi mảng kết hợp là mảng không liên tục. Ví dụ 1: $ages = array (“Tuan” => 32, “Quang” => 30, “Long” => 34); Ví dụ 2: $ages[“Tuan”] = 32; $ages[“Quang”] = 30; $ages[“Long”] = 34; Mảng đa chiều Mảng đa chiều là mảng mà mỗi phần tử trong mảng chính có thể là một mảng và mỗi phần tử trong mảng con cũng có thể là một mảng con khác. Chúng ta thường gọi mảng đa chiều là mảng lồng. Ví dụ: $students[“SV001”] = array (‘id’ => 1, ‘name’ => ‘Tuấn’, ‘points’ => array(10,5,8) ); $students[“SV002”] = array (‘id’ => 2, ‘name’ => ‘Tín’, ‘points’ => array(7,8,6) ); Xem cấu trúc mảng Để có thể thao tác tốt trên một mảng bất kỳ chúng ta phải đọc được cấu trúc mảng. Trong thực tế để đọc cấu trúc mảng, đối tượng, biến toàn cục của một hệ thống, … thường dùng khối lệnh sau: echo ‘’; print_r($arr_name); echo ‘’; 3.2.6. Một số phương thức thường sử dụng trong PHP. - Phương thức SESSION: được hiểu là khoảng thời gian người sử dụng giao tiếp với 1 ứng dụng. Một session được bắt đầu khi người sử dụng truy cập vào ứng dụng lần đầu tiên, và kết thúc khi người sử dụng thoát khỏi ứng dụng. Mỗi session sẽ có được cấp một định danh (ID) khác nhau và nội dung được lưu trong thư mục thiết lập trong file php.ini (tham số session.save_path). - Phương thức COOKEI: là 1 đoạn dữ liệu được ghi vào đĩa cứng hoặc bộ nhớ của máy người sử dụng. Nó được trình duyệt gởi ngược lên lại server mỗi khi browser tải 1 trang web từ server. Những thông tin được lưu trữ trong cookie hoàn toàn phụ thuộc vào website trên server. Mỗi website có thể lưu trữ những thông tin khác nhau trong cookie, ví dụ thời điểm lần cuối ta ghé thăm website, đánh dấu ta đã login hay chưa, v.v... 3.3. Hệ quản trị MySQL: 3.3.1. Tổng quan về MySQL: MySQL là một hệ CSDL được dùng khá phổ biến trên thế giới. Đặc điểm nổi bật của MySQL là tốc độ nhanh, dễ sử dụng, chạy trên nhiều hệ điều hành. * Các loại lệnh: MySQL gồm những lệnh giúp người sử dụng thực hiện những chức năng khác nhau. Các chức năng này được nhóm thành các loại sau: - Các lệnh mô tả dữ liệu. - Các lệnh thao tác dữ liệu. - Lệnh hỏi dữ liệu. - Các lệnh điều khiển thao tác. - Các lệnh quản trị cơ sở dữ liệu: Gồm các lệnh: + Tạo và duy trì CSDL. + Tạo và duy trì các phần. + Chuyển việc sử dụng tới các CSDL và các bảng. * Các thành tố: - Tên trường. - Kiểu dữ liệu (Data Type). - Hằng số (Constant). - Các từ khóa (Keyword). - Các lệnh (Expression). - Các điều kiện tìm kiếm (Search Conditions). - Các mệnh đề xác định phạm vi. * Các hàm trong MySQL: phân loại các hàm thành các lớp: - Các hàm tập hợp. - Các hàm chuỗi. - Các hàm ngày giờ. - Các hàm Logic. - Các hàm đặc biệt. * Liên kết: - Liên kết ngang bằng. - Liên kết không ngang bằng. - Liên kết ngoài. - Liên kết với chính nó. 3.3.2. Một số hàm PHP cơ bản kết nối và tương tác với CSDL MySQL. - mysql_connect(): Hàm tạo liên kết với máy chủ MySQL. - mysql_pconnect(): Hàm tạo liên kết bền vững với máy chủ MySQL. - mysql_close(): Hàm hủy bỏ liên kết tới máy chủ MySQL. - mysql_create_db(): Hàm tạo CSDL. - mysql_drop_db(): Hàm xóa CSDL. - mysql_select_db(): Hàm chọn CSDL hoạt động. - mysql_query(): Hàm gửi câu lệnh SQL tới máy chủ MySQL. - mysql_bd_query():Hàm gửi câu lệnh SQL tới máy chủ MySQL. … 3.4. Các công cụ hỗ trợ ứng dụng và phát triển Website: - HTML: Nắm bắt được các thẻ xử lý giao diện, cấu trúc, thuộc tính cấu hình nên khung trang web. Quan trọng nhất vẫn là các thẻ , , … ,… - CSS: Thiết kế giao diện cho Website. - JAVASCRIPT – JQUERY - AJAX: Thiết kế các sự kiện, hiệu ứng và quan trọng hơn là ta sẽ dung mã ajax để gửi dữ liệu … CHƯƠNG IV: CÀI ĐẶT CHƯƠNG TRÌNH. 4.1. Chức năng hệ thống: 4.1.1. Đăng nhập: - Người dùng sẽ được cấp 1 tài khoản để đăng nhập vào hệ thống, khi đăng nhập thành công, hệ thống sẽ thực hiện kiểm tra để phân quyền và ra những giao diện tương tác tương ứng. 4.1.2. Đăng xuất: - Khi tài khoản muốn thoát khỏi hệ thống sẽ thực hiện thoát khỏi hệ thống thông qua chức năng đăng xuất. 4.2. Chức năng người dùng: - Khi người dùng truy cập vào hệ thống, họ có thể xem các thông tin, thông báo từ phòng ban: đào tạo, hành chính. Có thể thực hiện tìm kiếm thông báo thông qua chức năng tìm kiếm. Và người dùng cũng sẽ được hỗ trợ, giải đáp về hệ thống thông qua chức năng hỗ trợ trực tuyến trên hệ thống. 4.3. Chức năng quản trị: - Người quản trị sẽ thực hiện đăng nhập vào hệ thống qua tài khoản admin và thực hiện các chức năng cập nhật: quyền, tài khoản, loại tin, tin tức, nhóm, thành viên nhóm, gửi thông báo, và quản lý thông báo đến và đã gửi… 4.3.1. Form quản lý quyền: 4.3.2. Form cập nhật quyền: 4.3.3. Form tạo mới quyền: 4.3.4. Form xóa quyền: 4.3.5. Form quản lý tài khoản: 4.3.6. Form tạo nhóm: 4.3.7. Form gửi thông báo: 4.4. Chức năng sinh viên: - Người dùng là sinh viên sẽ thực hiện đăng nhập vào hệ thống theo mã tài khoản được cấp. Khi đăng nhập vào hệ thống, sinh viên sẽ có các chức năng: xem thông báo đến, gửi thông báo, bình luận, tra cứu điểm, thời khóa biểu, thông tin cảnh cáo, nợ học phí, xem tin tức, thực hiện chia sẻ ảnh, download tài liệu…. 4.4.1. Form thông báo: 4.4.2. Form thời khóa biểu: 4.4.3. Form điểm: 4.4.4. Form thông tin khác: 4.4.5. Form tin tức: 4.4.6. Form chia sẻ ảnh: 4.5. Chức năng giảng viên: - Người dùng là giảng viên đăng nhập vào hệ thống sẽ có thể xem các thông báo, gửi phản hồi, quản lý thông báo đến, upload tài liệu, chia sẻ ảnh, cập nhật tài khoản... 4.5.1. Form thông báo: 4.5.2. Form tài liệu: 4.5.3. Form chia sẻ ảnh: 4.5.4. Form tạo nhóm: 4.6. Chức năng nhân viên hành chính: - Khi người dùng là nhân viên phòng hành chính đăng nhập vào hệ thống có thể xem các thông báo, gửi thông tin phản hồi, quản lý thông báo đã gửi, các thông báo đến, quản lý học phí, báo nợ học phí,.... 4.6.1. Form thông báo: 4.6.2. Form quản lý học phí: 4.6.3. Form cập nhật học phí: 4.6.4. Form báo nợ học phí: 4.6.5. Form tạo nhóm: KẾT LUẬN Trong thời gian làm đồ án tốt nghiệp, với sự cố gắng của bản thân, sự hướng dẫn tận tình của thầy giáo Ts. Nguyễn Cảnh Toàn và các thầy, các chuyên viên của trung tâm quản trị mạng trường Đại học Hàng hải Việt Nam đã giúp em hoàn thành đồ án tốt nghiệp này, từng bước xây dựng được hệ thống đáp ứng các yêu cầu hệ thống mà trường Đại học Hàng hải đặt ra. Cuối cùng, em xin chân thành cảm ơn sự hướng dẫn, giúp đỡ của thầy giáo Ts. Nguyễn Cảnh Toàn và các thầy, các chuyên viên của trung tâm quản trị mạng trường Đại học Hàng hải Việt Nam. Em cũng chân thành cảm ơn các thầy cô giáo trong khoa Công nghệ thông tin, trường Đại học Hàng Hải Việt Nam đã tận tình giảng dạy em trong suốt quá trình học ở trường, xin cảm ơn các bạn sinh viên đã nhiệt tình ủng hộ, giúp đỡ em trong thời gian học tập. Hải Phòng, tháng 12 năm 2011 Sinh viên Lê Hoàng Dương TÀI LIỆU THAM KHẢO Nguyễn Văn Ba, Phân tích thiết kế hệ thống thông tin, Đại học quốc gia Hà Nội, 2000; Trần Nguyên Phong, Giáo trình SQL, Đại học Khoa học Huế, 2004; Nguyễn Ngọc Bình Phương, Thái Thanh Phong Các giải pháp lập trình C#, Nhà xuất bản giao thông vận tải, 2006; Jay Greenspan and Brad Bulger, MySql/PHP Database Application. Website: yiiframework.com Jeffery Winesett, Agile Web Application Development with Yii and PHP5

Các file đính kèm theo tài liệu này:

  • doc76465225-Bao-Cao-Tot-Nghiep-Le-Hoang-Duong.doc