CHƯƠNG 4: CÔNG NGHỆ VÀ THỰC HIỆN 4.1 Giới thiệu công nghệ
Hiện nay có rất nhiều công cụ cũng như ngôn ngữ để lập trình như PHP, ASP, ASP.NET, JPS…). Mỗi ngôn ngữ có một sức mạnh riêng. Có những ngôn ngữ dễ dàng phát triển và thời gian code nhanh chóng, có những ngôn ngữ thì phức tạp. Có những ngôn ngữ thì được nhiều nhà cung server web hỗ trợ . Có những ngôn ngữ mà nhà phát triển web phải trả phí cho công ty sáng lập. Chính vì vậy mà hiện nay tồn tại nhiều xu hướng, tuy nhiên bản thân nhận thấy PHP là một ngôn ngữ mà nguồn mở, và miễn phí, có tốc độ chạy nhanh, hệ quản trị cơ sở dữ liệu đi kèm là MySql mạnh mẽ không kém gì SQL. Nếu như chúng ta xây dựng một web site trên nền ASP dot Net sẽ phải trả phí cho Microsoft. Hơn nữa, công cụ và công nghệ hỗ trợ cho PHP rất phong phú và đa dạng, có sử dụng công nghệ AJAX giúp cho trình duyệt thân thiện hơn với người sử dụng( do không cần phải load lại website).
Từ những điểm trên bản thân em đã chọn PHP và hệ quản trị cơ sở dữ liêu MySQL.
4.1.1 Sơ lược về ngôn ngữ PHP
PHP (viết tắt quy hồi “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 quat. 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 cho các ứng dụng web, tốt độ 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ữ lập trình 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 trên thế giới.
Chương trình PHP hoạt động như thế nào? Trước tiên chúng ta hãy tìm hiểu cách thức hoạt động của hệ trình duyệt (Web Client) và máy chủ cung cấp dịch vụ Web (Web server ):
Bước 1: Trình duyệt gửi một yêu cầu HTTP đến máy chủ, yêu cầu một file nào đó Bước 2: Máy chủ sẽ chuyển yêu cầu này đến chương trình xử lý tương ứng, chính là chương trình Web server.
Bước 3: Web server phân tích chuỗi yêu cầu nhận được, kiểm tra xem trình duyệt ở máy khách yêu cầu gì. Nếu đó là các file bình thường (không phải là các file chứa các đoạn mã script thực thi phía máy chủ), nó sẽ tìm kiếm file đó và trả về cho trình duyệt ở máy khách. Còn nếu đó là các file chứa các đoạn mã script thực thi phía máy chủ (các chương trình CGI, hay các file thư viện liên kết động ISAPI, hoặc các file *.asp hay *.php), nó sẽ triệu gọi chương trình thực thi các đoạn mã này. Chương trình này sẽ chịu trách nhiệm chạy các đoạn mã, trả chúng về cho Web server dưới khuôn dạng của HTML. Sau đó, Web server mới trả kết quả lấy được cho trình duyệt.
• Như vậy, chương trình của bạn phải được thực thi trên máy chủ, sau đó mới được trả về cho trình duyêt. Và đây chính là cái gọi là "Trang Web động". Không như các trang web tĩnh, trang web động cho phép bạn có sự tương tác với máy chủ thông qua các đoạn script thực thi phía server. Nhờ có sự tương tác này, bạn có thể truy xuất cơ sở dữ liệu, lấy thông tin người sử dụng, điều khiển các hoạt động khác...
4.1.2 Tại sao chọn ngôn ngữ lập trình PHP
Chính những đặc điểm nổi trội ở trên mà bản thân đã lựa chọn PHP là ngôn ngữ phát triển hệ thống Website quản lý và bán hàng. Hơn hết, bản thân trong thời gian học tại trường Đại Học Thủy Lợi Khoa Công Nghệ Thông Tin đã được thầy giáo dạy về ngôn ngữ này. Bản thân tin rằng thầy là người đi trước, sẽ đưa ra một tầm nhìn bao quát hơn. Và mong rằng qua hệ thống này để khẳng định lại kiến thức em đã học được từ thầy cô.
Bản thân nhận thấy rằng, PHP là một ngôn ngữ khá dễ học, hay cũng có thể do nhà trường, khoa đã tạo nên nền móng chính là ngôn ngữ lập trình C++. Việc lập trình PHP khá gần với C++. Trong khi bản thân có tư tưởng lập trình C++ khá tốt. Hơn
nữa hiện nay có khá nhiều Framework viết bằng PHP, nó đáng để chúng ta học vì Frameword nếu đi xâu vào nhân của nó thấy rằng sự thông minh trong các thuật toán.
4.1.3 Tại sao hệ thống không dùng Framework
Có thể nói ngày nay nói đến lập trình PHP thì hầu như các lập trình viên đều nghĩ tới công cụ phát triển là PHP Framework. Framework tạo ra cho người phát triển web không phải tốn thời gian viết lại các thao tác cơ bản, được phát triển qua nhiều giai đoạn và ngày càng chặt chẽ, kiểm soát tốt. Tuy nhiên bản thân Framework cũng chỉ là một công nghệ và chúng thay đổi theo từng ngày, điều này đôi khi khiến cho người lập trình viên thay vì suy nghi thuật toán lại đi tìm cách sử dụng trong các Helper khi được nâng cấp version. Điều này vô hình đã để lại những hệ lụy tác động tới tư duy người lập trình. Hơn hết bản thân em là một sinh viên, chắc chắn rằng còn nhiều bỡ ngỡ, và số lần code bằng PHP là quãng thời gian không nhiều. Việc viết lại các dòng lệnh, hay đơn giản nghiền ngẫm thuật toán để xử lý vấn đề sẽ đem lại cho em kỹ năng tư duy tốt hơn, hơn nữa tạo cho người sinh viên nhớ lâu hơn về cú pháp, các hàm trong ngôn ngữ này. Bởi bản thân nhận ra một điều rằng, có gõ nhiều mới nhớ được lâu, và bởi không phải ai cũng chỉ học một ngôn ngữ, có nhiều ngôn ngữ lập trình em đã học, Nếu chúng ta không có thời gian nghiền ngẫm code thì sau một thời gian quay lại với ngôn ngữ này ta sẽ quên hết các hàm, việc tìm lại để sử dụng nó sẽ mất thời gian. Do vậy đồ án này chính thời điểm để em rèn luyện tư duy lập trình, tự tạo cho mình các hàm, các tham số phù hợp. Dẫu biết chắc chắn rằng em còn phải học nhiều qua các modul mà những Framework phát triển.
Framework tạo ra món ăn thật ngon miêng, thật chất lượng và chế biến thật nhanh. Để rồi những sinh viên công nghệ lại mãi chạy theo công nghệ và cuối cùng không bao giờ họ tạo ra cái của riêng mình. Nền tảng của Framework cũng chỉ là PHP thuần mà thôi, vậy tại sao ta không rèn luyện cho mình để tự ta xây dựng các hàm ngày một tốt hơn. Em tin rằng đó mới là phong cách của một người đi tìm bản
chất của vấn đề. Đó mới là người tạo ra công nghệ. Và hơn hết để tư duy không bao giờ ngủ quên.
4.2 Công cụ thực hiện
+ Hệ thống được viết hoàn toàn bằng trình Editor Notepad++. Việc viết băng trình soạn thảo này sẽ làm người lập trình nhớ cú pháp nhiều hơn, thích ứng với mọi điều kiện khi không có phần mềm hỗ trợ giảm sự phụ thuộc vào những trình soạn thảo có gợi ý cú pháp.
+Trình duyệt Chrome và Firefox làm máy Client.
+ Sử dụng Xampp trên hệ điều hành Windows làm web server. Phiên bản 1.7.7. PHP 5.3.8. Mysql phiên bản 5.0.8 .
CHƯƠNG 5: KIỂM THỬ VÀ ĐÁNH GIÁ 5.1 Kiểm thử đơn vị
5.1.1 Về phía khách hàng
5.1.1 Kiểm thử modules đăng ký
Hệ thống được xây dựng với đặc điểm là :
Tên Username: là duy nhất trong hệ thống.
Mật khẩu: yêu cầu tốt thiểu 6 ký tự nhằm tăng tính bảo mật cho khách hàng.
So sánh trường mật khẩu và nhập lại mật khẩu khớp nhau.
Địa chỉ Email: được xây dựng có kiểm tra tính hợp lên của một địa chỉ Email. Số điện thoai: được được xây dựng với thuộc tính là dữ liệu số(digits).
Ngày: được xây dựng tính hợp lệ từ giá trị 1 đến 31. Tháng : được xây dựng tính hợp lên là 1 đến 12. Năm: được xây dựng dữ liệu vào là nhỏ hơn 2012.
Tiến hành thử các dữ liệu Username: hoangthanhcid (usernam này đã có trên hệ thống), kết quả hệ thống trả về thông báo username đã tồn tại:
Hình 17: Kiểm thử Form đăng ký
Tương tự cho trường mật khẩu: nếu mật khẩu nhập lại, mật khẩu đầu tiên khớp nhau và lớn hơn 6 ký tự thì thỏa mãn . Ta sẽ kiểm tra tính đúng đắn của sự so sánh này. Dữ liệu vào là mật khẩu có 5 ký tự. Kết quả thông báo của hệ thống như sau:
Hình 18: Kiểm thử Form đăng ký
Sau khi thử nhiều tập dữ liệu khách, nhận thấy hệ thống không gặp phải bất kỳ lỗi, hay sự không tương thích nào. Vậy kiểm thử modules kết thúc với sự thành công.
5.1.2 Tiếp tục với modul mua hàng
Theo thiết kế, hệ thống cho phép khách hàng mua hàng thông qua nút mua hàng trên modules sản phẩm, hoặc modules chi tiết sản phẩm. Mỗi một lần nhấn nút mua hàng, thông tin về sản phẩm đó sẽ hiển thị trên giỏi hàng, khách hàng có thể mua thêm sản phẩm. Nếu sản phẩm đó đã mua rồi, hệ thống tự động tăng số lượng sản phẩm đó trong giỏi hàng khách hàng lên 1 đơn vị. Khách hàng có thể cập nhập số lượng các sản phẩm trong giỏ hàng, có thể hủy một sản phẩm, hoặc cả giỏ hàng.
Như vậy với các đặc điểm trên, lần lượt thử các dữ liệu, kết quả trả về theo đúng thiết kế. Kiểm thử đơn vị thành công không có lỗi nào được ghi lại.
5.1.3 Kiểm thử tính chặt chẽ trong việc xóa các bản ghi
Trong hệ thống, phía nhà quản lý. Mọi thông tin của khách hàng được lưu trữ trong bảng Customers. Mỗi hóa đơn mà khách hàng mua hàng đều chứa id của bảng Customers.Hoặc tai bảng Comment cũng chứa id của bảng Customers. Như vậy nếu bản Id của khách hàng trong bảng Customers xóa đi thì đồng nghĩa với việc liên quan đến dữ liệu cả ở bảng hóa đơn và các comment. Tức là xóa usernam khách hàng đồng nghĩa dữ liệu về giỏ hàng, comment cũng được xóa. Tuy nhiên, ở phía nhà quản lý, đôi khi họ muốn giữ lại thông tin về hóa đơn để lấy đó làm thông tin về năng lực bán hàng, doanh số bán hàng. Điều đó tức là xóa bản ghi thông tin khách hàng thì có thể không xóa thông tin về giỏ hàng của khách hàng. Chính vì thế, hệ thông được xây dựng với lời nhắc và thuật toán cho phép nhân viên chọn xóa tài khoản khách hàng song vẫn có thể chọn xóa toàn bộ thông tin liên quan đến khách hàng hoặc chỉ xóa username khách hàng mà không xóa thông tin về giỏ hàng mà khách hàng đã mua.
Trước những chức năng đó của hệ thống, thử với tập giá trị sau: +Trong quản lý thành viên có Username : hihi
Hình 19: Kiểm thử tính chặt chẽ xóa bản ghi(username)
+Trong quản lý kinh doanh(chứa giỏ hàng) ta có một yêu cầu mua hàng của khách hàng tên: Hoàng Phi Hồng
Hình 20: Kiểm thử tính chặt chẽ trong xóa bản ghi(giỏ hàng)
Ta tiến nhấn nút xóa trong trang quản lý thành viên thấy hiện thông bảo hỏi có xóa Username: hihi này không? Hệ thống cũng đưa ra lời nhắc về việc xóa dữ liệu sẽ xóa hết thông tin liên quan đến Username này. Nhấn “Cancel”thấy hệ thống hủy bỏ. Nhấn “OK” hiện thông báo có 2 trường hợp xóa tất dữ liệu liên quan đến khách hàng nhấn ok, nhấn “cancel” chỉ để xóa Username và giữ lại thông tin liên quan như thông tin giỏ hàng,hoặc comment trên một hàng hóa nào đó của khách hàng. Tiến hành thử nhấn “OK” nhận thấy mọi dữ liêu trong quản lý thành viên không còn Username: hihi . Trong phần quản lý kinh doanh cũng không thấy bất kỳ hóa đơn nào liên quan đến Username này nữa. Thử nghiệm với trường hợp khách và tập giá trị khác thấy kết quả trả về chính xác. Kết luận: Hệ thống làm việc đúng, không phát hiên lỗi phát sinh. Kiểm định modules này thành công.
Tiến hành tương tự với một số chức năng khách, quá trình kiểm định với một tập các dữ liệu thay đổi. Nhận thấy không phát sinh lỗi trong quá trình hệ thống thực hiên.
Kết Luận: Quá trình kiểm thử đơn vị các modules diễn ra với các tập giá trị khác nhau, nhận thấy các modules đều hoạt động đúng và không phát sinh lỗi. Như vậy khép lại quá trình kiểm định đơn vị các modules với thành công.
5.1.4 Kiến trúc hệ thống
Hệ thống được xây dựng lên từ các modules tách rời giữa cách chức năng. Việc làm này làm cho hệ thống trở lên rõ ràng và dễ bảo trì thay đổi mà không làm thay đổi các chức năng và modules khác. Giả sử hệ thống có mục tin tức, mục sản phẩm, giỏi hàng. Mỗi một mục được phân tách riêng rẽ và được gọi khi file index.php triệu gọi. Trong mỗi modules các chức năng thêm, sửa, xóa cũng được tách riêng trên mỗi modules. Làm cho code trở lên mạch lạc và trong sáng. Hơn nữa, các hàm sử lý cũng được tách riêng cho mỗi chức năng, muốn xóa thì gọi file riêng biệt. Sự lắp ghép các modules được thực hiện qua hàm Include(), để xử lý gọi các chức năng sử dụng câu lệnh Switch().
Việc thiết kế hệ thống như vậy sẽ làm cho sự phát triển chức năng cho website dễ dàng hơn bao giờ hết. Chẳng hạn như phát triển thêm tính năng thanh toán trực tuyến lúc đó ta chỉ cần quan tâm modules giỏ hàng. Sự sai sót của modules này khi phát triển cũng không làm các modules khách sụp đổ.
5.2.1 Chạy Trang Chủ
5.2.2 Trang danh mục nhóm sản phẩm
Hình 22: Giao diện trang nhóm sản phẩm
5.2.4 Trang đăng nhập
5.2.5 Trang thông tin của khách hàng
5.2.6 Trang tìm kiếm
5.2.7 Trang Giỏ hàng
5.2.8 Trang điền thông tin của khách hàng để mua hàng(hoặc đăng nhập nếu có tài khoản)có tài khoản) có tài khoản)
Hình 28: Giao diện cung cấp thông tin để mua hàng(hoặc đăng nhập ,đăng ký nếu khách hàng muốn)
5.2.9 Trang đăng ký thành viên của khách hàng
5.2.10 Trang quản lý sản phẩm của nhà quản lý(sau khi đã đăng nhập, giao diện đăng nhập tương tự giao diện dăng nhập của khách hàng)diện đăng nhập tương tự giao diện dăng nhập của khách hàng) diện đăng nhập tương tự giao diện dăng nhập của khách hàng)
Hình 30: Giao diện quản lý sản phẩm Website
5.2.12 Trang quản lý tin tức của nhà quản lý
5.2.13 Trang quản lý kinh doanh
5.2.14 Trang quản lý thêm sản phẩm
Hình 34 : Giao diện thêm sản phẩm của nhân viên
Quá trình chạy toàn hệ thống, hệ thống chạy chuẩn xác về đường link, đúng với chức năng mà hệ thống đã xây dựng. Các modules liên kết với nhau để xử lý
đúng với chức năng cung cấp cho người dùng. Từ đó kết luận kiểm thử hệ thống thành công với các dữ liệu đưa ra.
5.3 Đánh giá, so sánh kết quả với một số hệ thống tương tự
Sau một thời gian thực hiện xây dựng ” Website quản lý, bán máy tính và các thiết bị liên quan” em đã hoàn thành với tinh thần nghiêm túc, các kinh nghiệm tích lũy được cho bản thân. Hơn hết, với sự chỉ bảo và giúp đỡ của cô giáo Th.S Trần Thị Minh Hoàn em đã thu hoạch được những kết quả khả quan. Website hoạt động ổn đinh, về cơ bản đáp ứng được mua hàng đơn giản, tìm kiếm thông tin sản phẩm theo các thuộc tính sản phẩm giúp khách hàng tìm kiếm được sản phẩm theo ý muốn. Khách hàng đăng nhập và xem thông tin của mình hoặc sửa đổi khi thay đổi địa chỉ…vv. Hơn nữa, form đăng ký được gợi ý các cấu trúc đúng để khách hàng không mất công nhập lại với việc sử dụng validate form dữ liệu. Hệ thống kênh tin