2.3.1 Khái niệm về mô hình MVC
9
Mô hình MVC (Model - View - Controller) là một kiến trúc phần mềm hay mô hình thiết kế được sử dụng trong kỹ thuật phần mềm. Nó giúp cho các developer tách ứng dụng của họ ra 3 thành phần khác nhau Model, View và Controller. Mỗi thành phần có một nhiệm vụ riêng biệt và độc lập với các thành phần khác. Đây là mô hình chuẩn giúp tạo nên một cấu trúc mã hợp lý để xây dựng các ứng dụng. 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à làm việc theo dự án.
2.3.2 Các thành phần trong mô hình MVC
Hình 2.2 – Thành phần mô hình MVC
- Model (Tầng dữ liệu): là nơi 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. Dữ liệu vào từ người dùng thông qua View đến Controller và được kiểm tra ở Model trước khi đưa vào cơ sở dữ liệu.
- View (Tầng giao diện): 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 mô hình có thể có nhiều View phụ thuộc vào các mục đích khác nhau. Hay, View là lớp hiển thị dữ liệu ra bên ngoài cho người dùng xem.
10
- Controller (Tầng điều khiển): đó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 dó 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. Hay, Controller là lớp điều khiển, có chức năng điều khiển các hành vi, yêu cầu.
2.3.3 Mô hình MVC hoạt động như thế nào?
Hình 2.3 – Mô hình hoạt động của MVC Mô tả luồng sự kiện được xử lý trong MVC:
- User tương tác với View, bằng cách nhấp vào nút điều khiển, người dùng gửi yêu cầu đi.
- Controller nhận và điều hướng chúng đến đúng phương thức xử lý ở Model. - Model nhận thông tin và thực thi các yêu cầu.
Khi Model hoàn tất việc xử lý, View sẽ nhận kết quả từ Model và hiển thị lại cho người dùng.
2.3.3 Ưu điểm và nhược điểm của mô hình MVC
Ưu điểm:
- Phát triển phần mềm: mô hình MVC thể hiện tính chuyên nghiệp trong lập trình, phân tích thiết kế. Hỗ trợ ứng dụng phát triển nhanh, đơn giản và dễ dàng nâng cấp…
11
- Bảo trì: mô hình MVC có các module xử lý của hệ thống với từng nhiệm vụ riêng và độc lập với nhau, điều đó giúp mô hình MVC dễ dàng trong việc nâng cấp và bảo trì.
Nhược điểm:
- Đối với những 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 thành phần, ảnh hưởng đến tốc độ xử lý của hệ thống khi sử dụng.
2.4 PHP FRAMEWORK 2.4.1 Framework là gì? 2.4.1 Framework là gì?
Khái niệm: một cấu trúc mới của ngôn ngữ giúp phát triển các phần mềm, một thư viện được xây dựng sẵn để người lập trình sử dụng.
12
2.4.2 Tại sao chúng ta phải sử dụng Framework?
- Tăng tốc quá trình phát triển ứng dụng. - Giảm thời gian và sự nỗ lực để có một dự án.
- Cung cấp sẵn các module cần thiết để xây dựng một project.
- Dễ nâng cấp, sửa chữa do có sự phân hóa rõ ràng của mô hình MVC.
2.4.3 Thành phần cơ bản của một Framework
- Code Library: thư viện source code giúp các lập trình viên tra cứu về lập trình. Hỗ trợ 30 ngôn ngữ lập trình: C#, Java, VB, PHP, Javascript…
- Scripting Language: sử dụng ngôn ngữ kịch bản. - API: sử dụng các hàm API xây dựng sẵn.
2.5 CAKEPHP FRAMEWORK
Hình 2.5 – Trang chủ của CakePHP Framework
CakePHP là một lựa chọn tuyệt vời cho những lập trình viên có kiến thức nâng cao về PHP. CakePHP dựa trên cùng một nguyên tắc thiết kế với Ruby on Rails, là một framework mạnh về khía cạnh rapid development, giúp lập trình viên đẩy nhanh quá trình phát triển ứng dụng của họ. Với các hệ thống hỗ trợ, tính đơn giản và môi trường mở cao đã giúp cho CakePHP trở thành một trong những framework phổ biến nhất hiện nay.
2.5.1 CakePHP là gì?
CakePHP là một Framework mã nguồn mở, miễn phí dành cho việc phát triển các ứng dụng web bằng ngôn ngữ PHP. CakePHP cung cấp một framework cho người sử dụng PHP phát triển những ứng dụng web nhanh, mạnh mà không mất tính linh hoạt.
13
2.5.2 Một số tính năng của CakePHP
- Nguồn mở, miễn phí, có cộng đồng sử dụng và hỗ trợ rộng lớn. - Tương thích PHP4 và PHP5
- Xây dựng theo mô hình MVC - Đa ngôn ngữ
- Sinh code tự động - Caching
- Phân quyền cho người dùng, nhóm người dùng (ACL) - Kiểm tra ràng buộc dữ liệu, cung cấp khả năng bắt lỗi.
- Xây dựng nhiều thư viện hỗ trợ cho View như: Ajax, HTML Form, Javascript… - Xây dựng nhiều thư viện hỗ trợ cho Controller: Email, Security, Session, Cookies,
Request Handling.
- Dễ dàng viết thêm thư viện hỗ trợ, liên kết với ứng dụng khác thông qua Vendors. - Cho phép tạo ra các URL rõ ràng, dễ hiểu.
- Hỗ trợ nhiều hệ quản trị CSDL, đa giao diện.
2.5.3 Mô hình MVC trong CakePHP
CakePHP hoạt động theo mô hình MVC. Mô hình này chia ứng dụng ra làm 3 phần chính: Model, View và Controller.
- Model: mô tả dữ liệu của ứng dụng. Trên Model, bạn có thể thiết lập các ràng buộc dữ liệu, quan hệ giữa các bảng. Ngoài ra, chúng ta còn có thể kiểm tra dữ liệu trước khi lưu vào CSDL tại Model.
- Controller: xử lý và điều hướng các yêu cầu của client. Tại Controller, bạn sẽ viết các hàm còn gọi là function. Các hàm này sẽ xử lý các yêu cầu của dữ liệu được gửi đến từ UML và Form. Hoặc là Controller sẽ thao tác thông qua Model và sau khi Controller xử lý xong các yêu cầu, thì nó sẽ gửi dữ liệu lên View.
- View: đảm nhận hiển thị thông tin được xử lý gởi từ Controller đến, và dữ liệu trên View sẽ hiển thị dưới dạng Html.
14
Cách thức hoạt động của mô hình MVC: Khi một client hay người dùng sử dụng trình duyệt web để gửi yêu cầu đến ứng dụng bằng cách nhấp vào đường link hoặc submit một Form trên View thì sẽ có một thành phần trong CakePHP gọi là Dispatcher, thành phần này sẽ kiểm tra để xác định Controller nào sẽ thực thi yêu cầu này và sẽ gởi yêu cầu đến Controller tương ứng. Khi yêu cầu được gởi đến Controller, thì hoặc là Controller sẽ xử lý ngay tại Controller, nó có thể so sánh dữ liệu hoặc kiểm tra dữ liệu được gởi đến hoặc sử dụng Model tương ứng để truy xuất vào trong CSDL. Sau khi lấy được dữ liệu, Controller sẽ qua một số bước xử lý nữa hoặc là đưa dữ liệu này ra View. View sẽ hiển thị dữ liệu nhận được lên trình duyệt web.
Để hiểu rõ hơn về mô hình MVC trong CakePHP, ta tiến hành tìm hiểu ví dụ sau:
Hình 2.7 – Ví dụ về mô hình MVC trong CakePHP Ta có liên kết http://abc.com/product/view/10
User A click vào 1 liên kết có dạng http://abc.com/products/view/10 thì : Trình duyệt sẽ gởi yêu cầu tới server
Bộ phận điều vận Dispatcher (một thành phần của CakePHP) kiểm tra phần tử
products/view/10 và gởi yêu cầu tới controller tương ứng
Tham số thứ 1: ta có Controllerproduct
Tham số thứ 2: ta có view là tên của 1 action của Controllerproduct sẽ được gọi để thực thi 1 hành động nào đó
Tham số thứ 3: ta có 1 giá trị 10, thông thường tham số thứ 3 có thể có hoặc không, tùy vào mục đích sử dụng, ở đây tôi có tham số = 10 để xem sản phẩm có id = 10
Mô tả bằng lời qua ví dụ trên:
Vào địa chỉ http://abc.com/ để xem sản phẩm có id=10
Tại sao lại dùng mô hình MVC?
Vì mô hình giúp chúng ta xây dựng ứng dụng nhanh chóng Dễ bảo trì, module hóa
MVC tách các tác vụ của ứng dụng thành các thành phần riêng lẻ, giúp ta dễ dàng thêm mới (hoặc thay đổi) các tính năng mà không làm ảnh hưởng đến các thành phần khác.
15
2.5.4 So sánh giữa CakePHP Framework và Zend Framework
Bảng 2.1: So sánh CakePHP Framework và Zend Framework
CakePHP Framework Zend Framework
Phù hợp với những người mới bắt đầu đến các lập trình viên PHP chuyên nghiệp.
Đòi hỏi người dùng phải có kiến thức sâu về PHP. Người mới học khó có thể tiếp cận. Là một nguồn mở nên khả năng mở rộng
cao, hỗ trợ cộng đồng rộng lớn.
Cộng đồng chỉ là công ty phát triển. Tiết kiệm được chi phí. Tốn nhiều chi phí.
Được dùng cho các ứng dụng vừa và nhỏ với tốc độ xử lí nhanh.
Sử dụng cho những dự án lớn nhưng tốc độ xử lí chậm.
Hoạt động dựa theo nguyên tắc sẵn có, tập trung nhiều vào phát triển nhanh các ứng dụng web, khá đơn giản và dễ sử dụng. Là một trong những Framework phổ biến nhất hiện nay.
Hoạt động phức tạp, gói ứng dụng lớn. Hỗ trợ nhiều thư viện, người dùng phải tự định nghĩa rất nhiều. Cấu hình phức tạp, đòi hỏi phải bền vững.
Nhìn chung, CakePHP và Zend Framework đang phát triển nhanh chóng và đều đáp ứng tốt để sử dụng theo yêu cầu của chúng ta.
16
CHƯƠNG 3: NỘI DUNG VÀ KẾT QUẢ NGHIÊN CỨU
3.1 PHÂN TÍCH, THIẾT KẾ 3.1.1 Mô tả hệ thống 3.1.1 Mô tả hệ thống
Hệ thống quản lý kinh doanh công ty Trách Nhiệm Hữu Hạn Một Thành Viên Nông Nghiệp Cờ Đỏ cung cấp những chức năng cần thiết cho người sử dụng để tiến hành giao dịch mua bán, quản lý tiến trình phát triển của công ty cũng như theo dõi tình hình hoạt động của các nhà máy/ kho.
Đối với khách hàng, hệ thống cung cấp cho khách hàng về thông tin về các mặt hàng của công ty. Thông tin các mặt hàng bao gồm: tên các mặt hàng, đơn vị tính, giá mặt hàng, hình ảnh minh họa …Bên cạnh đó, khách hàng có thể tìm kiếm thông tin các mặt hàng, đưa ra nhận xét góp ý. Khi khách hàng tiến hành đặt mua các mặt hàng, cách thức đặt mua đơn giản, thuận lợi cho khách hàng. Khách hàng không cần đăng nhập vào hệ thống, khách hàng vẫn có thể đặt mua mặt hàng đó và hệ thống chỉ yêu cầu khách hàng gửi lại một số thông tin cần thiết để thuận lợi trong quá trình giao dịch. Tuy nhiên, khi khách hàng đăng nhập vào hệ thống, khách hàng có thể thực hiện các chức năng: xem các đơn đặt hàng, xem các hợp đồng, đánh giá sản phẩm, hệ thống yêu cầu khách hàng cập nhật thông tin chính xác để khách hàng có được các quyền lợi.
Đối với người quản trị, khi vào trang quản trị hệ thống bắt buộc phải đăng nhập để đảm bảo tính bảo mật. Người quản trị được hệ thống cung cấp các chức năng: cập nhật giá và thông tin các mặt hàng (thêm, chỉnh sửa, xóa), cập nhật thông tin nhân viên, phân quyền cho nhân viên, quản lý thông tin khách hàng, quản lý các đơn đặt hàng của khách hàng, tiến hành lập hóa đơn, hợp đồng, xem xét các trường hợp bồi thường hợp đồng cho khách hàng, thống kê doanh thu của công ty, số lượng bán ra, số lượng tồn, lập kế hoạch sản xuất theo quyết định của ban giám đốc, quản lý các hoạt động của các nhà máy/kho… Bên cạnh đó, người quản trị có thể thống kê trực quan hơn khi thực hiện chức năng thống kê theo biểu đồ.
Đối với nhà máy/ kho, hệ thống sẽ cung cấp một tài khoản để đăng nhập khi vào trang quản trị. Hệ thống cung cấp các chức năng: nhập liệu (nhập số lượng mua vào của từng nhà máy/ kho theo từng ngày), xem các kế hoạch sản xuất từ công ty triển khai để có kế hoạch mua bán hiệu quả đem lại lợi nhuận cho công ty.
17
3.1.2 Mô hình phân rã chức năng đối với trang giao diện khách hàng
18
3.1.3 Mô hình phân rã chức năng đối với trang quản trị
Hình 3.2 – Mô hình phân rã chức năng quản trị
3.1.4 Sơ đồ Use Case (Use Case Diagram)
3.1.3.1Mô hình Use Case các chức năng về khách hàng
Trong sơ đồ Use Case tác nhân “khách hàng” có các chức năng như: “đăng ký”, “đăng nhập”, “tìm kiếm mặt hàng”, “xem danh sách các mặt hàng”, “thêm mặt hàng vào giỏ hàng”, “góp ý thắc mắc”.
19
- Chức năng “xem danh sách các mặt hàng” được khách hàng sử dụng khi vào trang web, có nhu cầu muốn tìm kiếm mặt hàng và xem thông tin về các mặt hàng. Khi xem thông tin về mặt hàng khách hàng có thể sử dụng thêm các chức năng mở rộng như xem nhanh các mặt hàng, xem chi tiết các mặt hàng và tìm kiếm các mặt hàng. Trong quá trình xem thông tin về các mặt hàng, nếu khách hàng đã đăng nhập vào hệ thống thì khách hàng có thể đặt mua chúng. Bên cạnh đó, khi khách hàng muốn chỉnh sửa mặt hàng đã chọn trong đơn đặt hàng, khách hàng sử dụng chức năng cập nhật mặt hàng để chỉnh sửa.
- Chức năng “đăng ký thành viên” và “đăng nhập”: khi khách hàng đăng ký thành viên khách hàng phải vào email của mình để xác nhận và kích hoạt tài khoản và khi kích hoạt thành công thì tài khoản của khách hàng đã đăng ký thành công và được sử dụng trong trang web.
- Chức năng “ đặt hàng”: khách hàng có thể thực hiện chức năng này ngay cả khi đã đăng nhập vào hệ thống hoặc không cần đăng nhập vào hệ thống và khi khách hàng đăng nhập sẽ được cấp quyền để sử dụng các chức năng cần thiết như xem, cập nhật số lượng mặt hàng, hủy đơn đặt hàng. Bên cạnh đó, khách hàng còn có thể xem trước về các điều khoản để thuận tiện trong việc tiến hành ký kết hợp đồng.
20
21
3.1.3.2 Đặc tả một số chức năng chính của sơ đồ Use Case khách hàng
Đăng ký thành viên:
Bảng 3.1: Đặc tả chức năng “Đăng ký thành viên”
Tác nhân Khách hàng
Mô tả Cho phép khách hàng đăng ký tài khoản để truy cập vào hệ thống.
Tiền điều kiện Khách hàng chưa đăng nhập vào hệ thống.
Luồng sự kiện 1. Khách hàng nhấp vào nút đăng ký. 2. Hiển thị form đăng ký.
3. Khách hàng nhập thông tin đăng ký. 4. Hệ thống kiểm tra các thông tin đã nhập. 5. Thông báo đăng ký thành công hoặc thất bại.
Hậu điều kiện Khi đăng ký thành công, khách hàng trở thành thành viên của công ty.
Góp ý thắc mắc:
Bảng 3.2: Đặc tả chức năng “Góp ý thắc mắc”
Tác nhân Khách hàng
Mô tả Cho phép khách hàng góp ý thắc mắc.
Tiền điều kiện Khách hàng đăng nhập thành công vào hệ thống.
Luồng sự kiện 1. Khách hàng chọn vào mục góp ý, thắc mắc. 2. Hiển thị form góp ý.
3. Khách hàng nhập thông tin góp ý. 4. Thông báo góp ý thành công.
Hậu điều kiện Khi góp ý thành công, trang admin đã nhận được nội dung góp ý của khách hàng.
Xem danh sách các mặt hàng:
Bảng 3.3: Đặc tả chức năng “Xem danh sách các mặt hàng”
Tác nhân Khách hàng
Mô tả Cho phép khách hàng xem thông tin các mặt hàng.
Tiền điều kiện Không yêu cầu
Luồng sự kiện 1. Khi khách hàng nhấp vào nút xem thông tin mặt hàng. 2. Hệ thống hiển thị thông tin chi tiết của từng mặt hàng.
3. Hệ thống cho phép khách hàng thêm mặt hàng vào trong giỏ hàng.
Hậu điều kiện Các mặt hàng hiển thị đầy đủ hình ảnh, thông tin, giá cả một cách