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
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
Đồ án tốt nghiệp Giáo viên hướng dẫn T.s: Nguyễn Cảnh Toàn
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
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
Đồ án tốt nghiệp Giáo viên hướng dẫn T.s: Nguyễn Cảnh Toàn
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.
3.1.1.1. 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.
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 hố 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….
3.1.1.2. 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
Đồ án tốt nghiệp Giáo viên hướng dẫn T.s: Nguyễn Cảnh Toà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.
- Ngồ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:
o Business Logic: thường là xử lý rule hay policy của nghiệp vụ cũng
như Business Workflows.
o 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
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:
o 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 …
o 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.
Đồ án tốt nghiệp Giáo viên hướng dẫn T.s: Nguyễn Cảnh Tồn
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:
PRESENTATION LAYER PRESENTATION LAYER CONTROLLER CONTROLLER VIEW VIEW MODEL MODEL DATA ACCESS LAYER DATA ACCESS LAYER BUSINESS LAYER BUSINESS LAYER 3 – tier architecture 3 – tier architecture MVC architecture MVC architecture
• 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ẽ)
Khác nhau
Đồ án tốt nghiệp Giáo viên hướng dẫn T.s: Nguyễn Cảnh Toàn 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 Controller Model Model View 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 hồn tồ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ó chun 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ó hồn tồ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
Đồ án tốt nghiệp Giáo viên hướng dẫn T.s: Nguyễn Cảnh Toàn 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:
3.1.2.1. 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 hố, đ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: