BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC PHENIKAA CỘNG HOÀ XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc lập - Tự do - Hạnh phúc - Tính cấp thiết của đề tài: Đề tài thể hiện năng lực của sinh viên trong ti
quan
Lý do chọn đề tài
Khi internet ra đời, không ai nghĩ rằng nó sẽ phát triển đến ngày hôm nay, nó len lỏi đến mọi ngóc ngách trong cuộc sống, trở thành 1 phần không thể thiếu Chỉ cần ngồi nhà và cả thế giới trong tầm tay bạn Cũng như vậy, khi internet đã trở nên phổ biến, việc mua bán qua mạng phát triển cũng phát triển theo đó Xong bên cạnh đó, việc nắm bắt tìm hiểu, phân tích nhu cầu tiêu dùng là một phần vô cùng quan trọng, nó giúp người tiêu dùng dễ dàng chọn lựa sản phẩm phù hợp, giúp các nhà kinh doanh quyết định đón đầu xu thế của khách hàng
Bên cạnh đó, việc phát triển website đi kèm những tính năng nâng cao giúp tối ư hóa việc trải nghiệm website của người dùng cũng là cách giúp website phát triển 1 cách bền vững và có hiệu quả.
Mục đích phát triển đề tài
Đề tài được phát triển nhằm mục đích thương mại điện tử, quản lý việc mua bán thông qua mạng internet, nâng cao trải nghiệm sử dụng website của người dùng qua đó đưa thương hiệu đến rộng rãi với người dùng hơn.
Ý nghĩa thực tiễn
Phát triển sản phẩm công nghệ phù hợp với nhu cầu của xã hội, qua đó rèn luyện, trau dồi, phát triển kiến thức của bản thân nhằm đáp ứng nhu cầu của các
Copies for internal use only in Phenikaa University nhà tuyển dụng sau khi ra trường, tạo ra sản phẩm thực tế có giá trị sử dụng trong cuộc sống.
Đặt bài toán
Bài toán đặt ra: Xây dựng website bán hàng bao gồm các chức năng của 1 website bán hàng đơn thuần
Qua quá trình khảo sát các nguồn thông tin từ thầy giáo hướng dẫn, bạn bè, những người có kinh nghiệm trong phát triển website, trải nghiệm thực tế trên 1 số website bán hàng trực tuyến có thương hiệu như Shopee, ebay, thegioididong, em phân tích bài toán:
1.5.1 Chức năng Đây là website bán hàng và giới thiệu sản phẩm của cửa hàng, công ty đến người dùng với các thông tin chi tiết mặt hàng, hình ảnh mô tả sản phẩm, giá cả, khuyến mại, ưu đãi với người mua hàng Website cần bao gồm các chức năng sau:
- Cho phép nhập hàng hóa vào CSDL
- Hiển thị danh sách các mặt hàng hóa
- Hiển thị các mặt hàng người dùng đã chọn sau quá trình tìm hiểu sản phẩm
- Hiển thị thông tin khách hàng
- Thống kê các khách hàng mua hàng trong khoảng thời gian nhất định
Ngoài ra, còn có thêm chức năng phát triển 1 số tính năng nâng cao như gợi ý mua hàng, tìm kiếm sản phẩm,
- Phần thứ nhất: Khách hàng
Khách hàng có nhu cầu mua hàng, họ sẽ tìm kiếm mặt hàng trên website, khi quyết định mua sẽ đặt hàng thông qua giao diện website Đơn hàng sẽ được chuyển về cho cửa hàng, công ty Vì vậy giao diện khách hàng cần có chức năng sau:
Copies for internal use only in Phenikaa University
Giao diện người dùng thân thiện, người dùng dễ sử dụng , những đợt giảm giá khuyến mại nhằm đánh mạnh vào nhu cầu, tâm lý mua sắm của người dùng Việc người dùng sử dụng website của bạn thêm một giây là gia tăng thêm tỷ lệ mua hàng của khách hàng
Hiển thị các danh sách các mặt hàng để khách xem xong và muốn đặt hàng, cần có giao diện đặt hàng cho người dùng bao gồm các thông tin về hàng hóa đã chọn, số lượng, số tiền, tổng tiền đơn hàng, các thông tin cá nhân của khách hàng để phục vụ việc liên lạc lại với khách hàng
Ngoài ra có thể phát triển một trang phản hồi khách hàng nhằm thu thập ý kiến, câu hỏi của khách hàng, phục vụ việc phát triển, giải đáp các thắc mắc của khách hàng
- Phần thứ hai: Giao diện quản trị
Người làm chủ ứng dụng được cấp tài khoản riêng để có thể kiểm soát toàn các hoạt động của ứng dụng Về phần này có các chức năng chính:
- Chức năng thêm , sửa , xóa các mặt hàng,
- Tiếp nhận đơn hàng của khách hàng và xử lý đơn hàng
- Một số chức năng nâng cao theo yêu cầu như tạo giao diện menu động, tùy chỉnh theo ý người quản trị website,
Giao diện quản trị nên làm đơn giản, tập trung vào các chức năng, đơn giản, dễ sử dụng
Các giai đoạn phát triển
+ Kiến thức thực tế còn hạn chế
+ Công nghệ biến đổi theo từng đơn vị thời gian nên cần có chiến lược phát triển, thời gian và công sức tìm hiểu
+ Triển khai bài toán theo hướng hoạt động cá nhân nên chưa có sự giao lưu ý tưởng
Copies for internal use only in Phenikaa University
+ Tự tìm dành thời gian tìm hiểu những công nghệ mới, giao lưu, học hỏi từ những người có kinh nghiệm trong ngành công nghệ thông tin và giáo viên hướng dẫn
Copies for internal use only in Phenikaa University
Cơ sở lý thuyết
Khái niệm về thương mại điện tử
Cùng với sự bùng nổ về internet thì thuật ngữ thương mại điện tử (TMĐT) đã ra đời Có rất nhiều định nghĩa về thương mại điện tử như là:
Theo Tổ chức Thương mại thế giới (WTO): "Thương mại điện tử bao gồm việc sản xuất, quảng cáo, bán hàng và phân phối sản phẩm được mua bán và thanh toán trên mạng Internet, nhưng được giao nhận một cách hữu hình, cả các sản phẩm giao nhận cũng như những thông tin số hoá thông qua mạng Internet"
Theo Uỷ ban Thương mại điện tử của Tổ chức hợp tác kinh tế châu Á Thái Bình Dương (APEC): "Thương mại điện tử là công việc kinh doanh được tiến hành thông qua truyền thông số liệu và công nghệ tin học kỹ thuật số"
Nhưng hiểu một cách tổng quát, TMĐT là việc tiến hành một phần hay toàn bộ hoạt động thương mại bằng những phương tiện điện tử TMĐT vẫn mang bản chất như các hoạt động thương mại truyền thống Tuy nhiên, thông qua các phương tiện điện tử mới, các hoạt động thương mại được thực hiện nhanh hơn, hiệu quả hơn, giúp tiết kiệm chi phí và mở rộng không gian kinh doanh
TMĐT càng được biết tới như một phương thức kinh doanh hiệu quả từ khi Internet hình thành và phát triển Chính vì vậy, nhiều người hiểu TMĐT theo nghĩa cụ thể hơn là giao dịch thương mại, mua sắm qua Internet và mạng (ví dụ mạng Intranet của doanh nghiệp)
2.1.1 Lợi ích của việc sử dụng thương mại điện tử
Có thể hiểu được rằng bằng cách sử dụng phương tiện này sẽ giúp ích cho người sử dụng môi trường mạng trong việc tìm kiếm đối tác, nắm bắt được thông tin trên thị trường, giảm chi phí tiếp thị và giao dịch nhằm mở rộng quy mô sản xuất hoạt động kinh doanh trong thương trường
Cơ hội đạt lợi nhuận:
Nắm bắt được nhiều thông tin phong phú, giúp cho các doanh nghiệp nhờ đó mà có thể đề ra các chiến lược sản xuất và kinh doanh thích hợp với xu thế
Copies for internal use only in Phenikaa University phát triển trong và ngoài nước.Đối với những doanh nghiệp vừa và nhỏ có cơ hội mở rộng đối tác trên thị trường, nắm tình hình thị trường mà nhờ đó sẽ được biết đến tên tuổi Hiện nay thương mại điện tử đang được nhiều người quan tâm và thu hút rất hiều thương gia doanh nghiệp trên thế giới, vì đó là một trong những động lực phát triển doanh nghiệp và cho cả nước
Giảm thiểu các hoạt động kinh doanh:
Giảm chi phí sản xuất , chi phí văn phòng, chi phí thuê mặt bằng….Bên cạnh đó không cần tốn nhiều nhân viên để quản lý và mua bán giao dịch.Thương mại điện tử giúp giảm chi phí bán hàng và tiếp thị mà chỉ thông qua môi trường Web một nhân viên vẫn có thể giao dịch với nhiều đối tác, khách hàng đồng thời còn trưng bày, giới thiệu catalog đủ loại hàng hóa, xuất xứ của từng loại sản phẩm Do đó giảm được chi phí in ấn cho các catalog và giao dịch mua bán.Điều quan trọng nhất là giảm được thời gian trao đổi đáng kể cho khách hàng và doanh nghiệp Chỉ trong thời gian ngắn mà doanh nghiệp có thể nắm bắt được thị hiếu khách hàng và thị trường thay đổi mà nhanh chóng kịp thời củng cố và đáp ứng cho nhu cầu đó
Qua thương mại điện tử giúp các doanh nghiệp có thể củng cố quan hệ hợp tác, thiết lập các quan hệ tốt hơn với bạn hàng, người dùng Đồng thời ngày càng có điều kiện nâng cao uy tín trên thị trường
2.1.2 Các yêu cầu trong thương mại điện tử
Trong việc phát triển thương mại dựa trên hệ thống thông tin thì trước hết phải có một kĩ thuật máy tính điện tử hiện đại, server, phần mềm hỗ trợ vững chắc những trang thiết bị tương đối hoàn thiện và đảm bảo thông tin bảo mật chống virus và cách phòng chống những nguy cơ bị xâm nhập ảnh hưởng quốc gia phù hợp với từng doanh nghiệp và theo đúng chuẩn mực do doanh nghiệp đề ra
Tạo mối quan hệ bằng sự tin cậy:
Copies for internal use only in Phenikaa University
Giới thiệu ngôn ngữ lập trình Nodejs
Đó là yếu tố tất yếu của nhà doanh nghiệp muốn kinh doanh lâu dài
Bảo mật và an toàn:
Tin cậy là trọng tâm của bất kỳ giao tiếp thương mại nào, không những thể hiện giữa các phòng ban, thực hiện đúng luật pháp của các doanh nghiệp mà còn với khách hàng bằng sự tin tưởng về vấn đề sản phẩm hay phàn nàn, khiếu nại Đó là yếu tố tất yếu của nhà doanh nghiệp muốn kinh doanh lâu dài
Bảo vệ quyền lợi khách hàng :
Trong môi trường Internet là nơi các doanh nghiệp đầu tư sử dụng, trình bày sản phẩm, mua bán trao đổi thông tin hàng hóa thì vấn đề bản quyền là cần thiết giúp cho các doanh nghiệp an tâm, đảm bảo trong công việc phát triển và đồng thời ngăn chặn việc xâm phạm bản quyền, phiên dịch trái phép hay ăn cắp”chất xám” Do vấn đề mua bán trên mạng, việc xem hàng hóa thông qua sử dụng hình ảnh thì chất lựơng và vấn đề thực tế bên trong sản phẩm đó là như thế nào thì không ai biết được do đó phải đề ra luật lệ và quy định đối với những người mua bán qua mạng
2.2 Giới thiệu về ngôn ngữ lập trình NodeJs
Nodejs là một nền tảng phát triển độc lập được công ty Joyent xây dựng và phát triển Ra mắt vào năm 2009 tại california (Mỹ), nodejs được xây dựng ở trên Javascript Runtime của Chrome Nodejs được dùng để thiết kế các ứng dụng internet có khả năng mở rộng, Nodejs được viết bằng JavaScript Làm web bán hàng bằng nodejs có tốc độ xử lý khá cao và tiết kiệm dung lượng
2.2.2 Một số tính năng của Nodejs
- Phần code của nodejs được viết bằng C++ nên có tốc độ xử lý nhanh và hiệu năng khá cao
Copies for internal use only in Phenikaa University
- Nodejs tạo ra các ứng dụng web có realtime thời gian thực và tốc độ load nhanh, mượt
- Nodejs thường được sử dụng để viết các web bán hàng có lượng truy cập lớn, các ứng dụng mở rộng nhanh, tạo ra các dự án startup nhanh nhất
- Nodejs có thể chạy được trên các trình duyệt như: OS X, Microsoft Windows, Linux
- Nodejs có thể xây dựng một website độc lập, nhanh chóng hơn vì nó là một Platform
- NodeJS được xem là một máy chủ đơn luồng và không có khả năng hỗ trợ đa luồng
2.2.3 Các chức năng của Nodejs
Trong Nodejs, bạn có thể tạo, mở, xóa, đọc các tệp tin khi đang truy cập trên máy chủ
Nodejs có thể tạo ra nội dung cho các trang web động
Làm web bán hàng bằng nodejs có thể thu thập các dữ liệu theo yêu cầu
NodeJS thực hiện sửa, truy vấn, xóa, thêm các dữ liệu trong các hệ cơ sở như: MongoDB, Microsoft SQL Server, MySql, PostgreSQL
2.2.4 Một số ứng dụng viết bằng Nodejs
Nhờ có tốc độ truy cập nhanh, xử lý thông tin tốt, nodejs có thể tham gia xây dựng một số ứng dụng sau:
Fast File Upload: Đây là những chương trình có tốc độ truy cập upload file cao Websocket server: Đây là máy chủ của các ứng dụng như game server, online server,…
Ad server: Nodejs thường được dùng trong máy chủ quảng cáo
Any Real-time Data Application: Đây là những ứng dụng chia nhỏ ứng dụng lớn thành các ứng dụng nhỏ và kết nối chúng lại với nhau Các ứng dụng này đều có yêu cầu cao về tốc độ thực hiện trong thời gian nhất định
2.2.5 Tại sao nên làm web bán hàng bằng nodejs?
Các doanh nghiệp, cửa hàng nên sử dụng nó làm web bán hàng bằng nodejs vì các lý do sau đây:
Copies for internal use only in Phenikaa University
Giới thiệu Reactjs
Nhờ có kết nối bất đồng bộ nên Nodejs có tốc độ xử lý nhanh Nodejs có thể xử lý cùng lúc hàng nghìn lượt truy cập
Các web sử dụng bộ code nodejs dễ dàng mở rộng Đây là một tính năng mà các doanh nghiệp đều hướng đến
Reactjs là một thư viện JavaScript mã nguồn mở Reactjs được Facebook sáng lập Với tốc độ mã hoá nhanh, Reactjs tạo ra những sản phẩm web có tốc độ truy cập nhanh, hiệu quả và đầy tính hấp dẫn Tuy nhiên mục đích Reactjs không chỉ là tạo ra những ứng dụng web nhanh mà còn phải đơn giản và có độ mở rộng cao Vậy nên những bộ mẫu code web bán hàng reactjs có tốc độ truy cập nhanh, mượt
Sức mạnh của Reactjs xuất phát từ những phần riêng lẻ Vậy nên, bạn không cần làm việc trên toàn ứng dụng web, Reactjs cho phép một developer phá vỡ theme phức tạp thành các giao diện đơn giản
2.3.2 Các tính năng của web bán hàng Reactjs
Trong Reactjs, sử dụng JSX để thiết kế bố cục trang web So JavaScript, JSX tối ưu hoá mã code và cho phép trích dẫn HTML (xem thêm HTML vs HTML5) Với Redus, web bán hàng Reactjs xây dựng được thể thống nhất
Sử dụng luồng dữ liệu 1 chiều, giúp cho trang web có tốc độ truy cập nhanh, load mượt
Sử dụng Virtual-DOM, web trở nên tối ưu về tốc độ truy cập tăng lên đáng kể Do Virtual-DOM vừa đóng vai trò là Model, vừa đóng vai trò là View nên mọi sự thay đổi trên Model đã kéo theo sự thay đổi trên View và ngược lại
Trong web Reactjs, các component được tạo một cách dynamically, mỗi thành phần đều cần thuộc tính key duy nhất (unique)
Copies for internal use only in Phenikaa University
Giới thiệu về HTML, CSS, Javascript
HTML (HyperText Markup Language) là loại ngôn ngữ đánh dấu siêu văn bản được sử dụng trong việc phát triển các trang web
Tuy nhiên đừng hiểu lầm HTML là ngôn ngữ lập trình vì nó thực chất chỉ là một cách xác định cấu trúc, ý nghĩa và mục đích của các phân tử trên trang web, như các phần tử văn bản, hình ảnh, liên kết, bằng cách sử dụng các thẻ Ví dụ: nếu bạn muốn tạo một đoạn văn bản, chỉ cần sử dụng thẻ
, nếu bạn muốn tạo tiêu đề cho trang web sử dụng ngay thẻ
Nhiệm vụ chính của HTML xây dựng cấu trúc siêu văn bản trên một trang web và khai báo các tập tin kỹ thuật số như hình ảnh, video, âm thanh Ngoài ra, HTML còn có các công dụng quan trọng khác, bao gồm:
● Phân chia và định dạng nội dung: chia đoạn, định dạng và nhấn mạnh văn bản, đặt tiêu đề, ngắt dòng, tạo danh sách, và tạo ký tự đặc biệt
● Tạo liên kết và chèn hình ảnh: bao gồm liên kết nội bộ và liên kết ngoài web, ảnh minh họa, thu hút người dùng
● Tạo các kiểu mẫu: gồm cách hiển thị các đoạn văn bản, hình ảnh, bảng,…giúp cho trang web đồng nhất và dễ dàng quản lý hơn
● Xác định các thuộc tính của trang web: bao gồm màu sắc, kích thước, vị trí và các thông tin khác
Vậy CSS trong HTML, CSS, JavaScript là gì? Có phải cũng là một ngôn ngữ để thiết kế web? Đúng vậy, CSS (Cascading Style Sheets) là một ngôn ngữ thiết kế được sử dụng trong thiết kế trang web để mô tả cách trình bày, bố cục và phong cách của nội dung trên trang web CSS giúp tạo ra các trang web chuyên nghiệp và dễ đọc hơn Lưu ý rằng,CSS không phải ngôn ngữ lập trình
Nếu ví HTML là bức tường thì CSS giống như lớp sơn trang trí HTML cung cấp các công cụ cơ bản để cấu trúc nội dung trên trang web còn CSS giúp
Copies for internal use only in Phenikaa University định dạng (style) nội dung này để nó được hiển thị cho người dùng theo đúng ý định thiết kế Ba phong cách chính của CSS gồm:
● Internal CSS: Là phong cách được đặt trực tiếp trong thẻ của trang web, cho phép chỉnh sửa các phong cách của trang web nhanh chóng và dễ dàng Tuy nhiên, nó chỉ ảnh hưởng đến trang web đó, không áp dụng cho các trang khác
● Inline CSS: Bạn có thể thêm phong cách trực tiếp vào mỗi phần tử HTML trên trang web bằng thuộc tính “style”, cho phép dễ dàng chỉnh sửa phong cách của phần tử mà không cần truy cập trực tiếp vào file CSS
● External CSS: Cho phép bạn tạo file CSS riêng biệt và áp dụng nó cho nhiều trang web khác nhau Bạn có thể chỉnh sửa phong cách trong file CSS để thay đổi toàn bộ trang web, qua đó bạn giúp cải thiện tốc độ tải trang web, giảm thiểu thời gian và công sức để thay đổi phong cách của trang web
- Vai trò của CSS là gì?
Vai trò của CSS trong lập trình web có thể kể đến như:
● Xác định phong cách và định nghĩa nội dung dưới dạng văn bản HTML trên trang web
● Tạo ra trang web tương thích với nhiều thiết bị khác nhau
● Tạo ra bố cục, hiệu ứng và sự độc đáo để thu hút, tăng tính tương tác và trải nghiệm của người dùng
● Điều khiển định dạng và tái sử dụng các kiểu dáng và phong cách giúp tiết kiệm thời gian và công sức
● Giúp giảm thiểu lượng mã nguồn và tăng tốc độ tải trang
JavaScript là một trong những ngôn ngữ lập trình phổ biến nhất hiện nay
Nó được tạo ra bởi Brendan Eich (1995) và trở thành một phần quan trọng của các trang web hiện đại JavaScript giúp biến những trang web tĩnh trở nên động, tạo ra sự tương tác và cải thiện hiệu suất của máy chủ Nó làm cho các tính năng như
Copies for internal use only in Phenikaa University
Slideshow, Pop-up quảng cáo, cùng tính năng Autocomplete của Google trở nên dễ dàng và thuận tiện hơn Đồng thời, sự kết hợp giữa JavaScript, HTML và CSS giúp tăng cường trải nghiệm người dùng và cải thiện giao diện của trang web
● Tạo bố cục chuyển động với thư viện ảnh và hiệu ứng động
● Xây dựng các trò chơi, hoạt hình 2D hoặc 3D, và các ứng dụng cơ sở dữ liệu phức tạp để tăng tính tương tác trên trang web
● Tăng cường hành vi người dùng bằng các tính năng như xác nhận hộp thoại, các lời kêu gọi hành động, và các tính năng tương tác khác
● Kiểm soát mặc định của trình duyệt bằng cách thay đổi các hành vi mặc định của trình duyệt, chẳng hạn như xử lý các biểu mẫu đăng ký và đăng nhập của người dùng
● Hỗ trợ việc xử lý dữ liệu phía máy khách (client-side), giảm tải cho máy chủ và tăng tốc độ xử lý trang
Giới thiệu về MongoDB
MongoDB là một hệ quản trị cơ sở dữ liệu (Database Management System
- DBMS) phi tuyến tính (NoSQL) phổ biến, được phát triển bởi MongoDB, Inc
Nó được thiết kế để lưu trữ và quản lý dữ liệu trong các tài liệu JSON tương tự với BSON (Binary JSON), cho phép lưu trữ dữ liệu có cấu trúc linh hoạt và mở rộng dễ dàng Dưới đây là một số điểm chính về MongoDB:
Cấu trúc dữ liệu linh hoạt: MongoDB không yêu cầu cấu trúc cố định cho dữ liệu, cho phép bạn lưu trữ các tài liệu với các trường khác nhau trong cùng một bộ sưu tập (collection) Điều này rất hữu ích cho các ứng dụng có dữ liệu thay đổi thường xuyên
Tài liệu JSON/BSON: Dữ liệu trong MongoDB được biểu diễn dưới dạng các tài liệu JSON (JavaScript Object Notation) hoặc BSON (Binary JSON), là một phiên bản nhị phân của JSON Điều này giúp MongoDB hiệu quả hơn trong việc lưu trữ và truy xuất dữ liệu so với các hệ quản trị cơ sở dữ liệu SQL truyền thống
Copies for internal use only in Phenikaa University
Mã nguồn mở và cộng đồng mạnh mẽ: MongoDB là một dự án mã nguồn mở với một cộng đồng lớn của các nhà phát triển và người dùng Điều này đồng nghĩa với việc có sẵn nhiều tài liệu, tài liệu học tập và hỗ trợ từ cộng đồng
Tích hợp dễ dàng: MongoDB cung cấp các giao diện và thư viện cho nhiều ngôn ngữ lập trình, bao gồm Python, Node.js, Java, và nhiều ngôn ngữ khác Điều này giúp phát triển ứng dụng dễ dàng và linh hoạt
Replication và Sharding: MongoDB hỗ trợ sao chép dữ liệu (replication) và chia nhỏ dữ liệu (sharding) để tăng tính sẵn sàng và khả năng mở rộng của hệ thống Điều này rất hữu ích cho các ứng dụng đòi hỏi độ tin cậy và khả năng mở rộng cao
Query mạnh mẽ: MongoDB hỗ trợ các truy vấn phức tạp và mạnh mẽ, bao gồm truy vấn theo điều kiện, truy vấn theo mảng, và nhiều tính năng khác để truy xuất dữ liệu theo cách hiệu quả
Sử dụng cho nhiều ứng dụng: MongoDB phù hợp cho nhiều loại ứng dụng, bao gồm các ứng dụng web, ứng dụng di động, phân tích dữ liệu, và nhiều tình huống lưu trữ dữ liệu đa dạng
Tích hợp bảo mật: MongoDB cung cấp các tính năng bảo mật như xác thực, quyền hạn truy cập và mã hóa dữ liệu để bảo vệ dữ liệu của bạn
MongoDB đã trở thành một trong những hệ quản trị cơ sở dữ liệu NoSQL phổ biến nhất trên thị trường, và nó được sử dụng rộng rãi trong nhiều ứng dụng và dự án công nghệ khác nhau
Mô hình MVC (Model-View-Controller) là một kiến trúc phát triển phần mềm phổ biến được sử dụng để tổ chức mã nguồn trong ứng dụng web và các ứng dụng khác Mô hình này chia ứng dụng thành ba phần chính, mỗi phần có một trách nhiệm cụ thể trong quá trình xây dựng và hoạt động của ứng dụng Dưới đây là giới thiệu về ba phần chính của kiến trúc MVC:
Copies for internal use only in Phenikaa University
- Model đại diện cho dữ liệu và quản lý nó Đây là nơi bạn định nghĩa các cấu trúc dữ liệu, truy cập cơ sở dữ liệu, xử lý logic kinh doanh và cung cấp dữ liệu cho các phần khác của ứng dụng
- Model không biết gì về cách dữ liệu được hiển thị hoặc được tương tác với người dùng Nó hoàn toàn độc lập với giao diện người dùng và quyết định cách dữ liệu nên được lưu trữ và truy xuất
- View là phần của ứng dụng hiển thị dữ liệu cho người dùng Nó đảm nhận vai trò biểu diễn dữ liệu từ Model và hiển thị nó dưới dạng giao diện người dùng Các thành phần giao diện, chẳng hạn như trang web, biểu đồ, hoặc các thành phần khác, thuộc về phần này
- View không chứa logic kinh doanh hoặc dữ liệu thay đổi Nó chỉ biết cách hiển thị dữ liệu mà Model cung cấp
- Controller là trung tâm điều khiển của ứng dụng Nhiệm vụ của nó là xử lý các yêu cầu từ người dùng và tương tác với Model và View tương ứng Controller là nơi thực hiện logic ứng dụng và quyết định cách dữ liệu nên được hiển thị
Giới thiệu MVC
3.1 Các tác nhân của hệ thống
STT Tên tác nhân Ý nghĩa
1 Người quản lý Người quản lý là người có toàn quyền tương tác với hệ thống, quyền sử dụng tất cả các chức năng mà website xây dựng, điều khiển và kiểm soát mọi hoạt động của website
2 Người dùng Người dùng ở đây là những người truy cập vào website, có thể đăng ký làm thành viên hoặc không Người dùng chỉ có một số quyền nhất định đối với website
3.2 Các chức năng của hệ thống
STT Tên chức năng Ý nghĩa
1 Đăng nhập Chức năng này mô tả chức năng đăng nhập vào hệ thống của người dùng hoặc admin
2 Đăng ký Chức năng này mô tả chức năng đăng ký tài khoản làm thành viên của người dùng hoặc admin
3 Đặt mua Chức năng này mô tả chức năng đặt mua sản phẩm tại website cửa hàng
4 Thanh toán Chức năng này mô tả chức năng thanh toán tiền của người dùng
5 Xem thông tin sản phẩm
Chức năng này mô tả chức năng xem thông tin sản phẩm có trên website
6 Tìm kiếm sản phẩm Chức năng này mô tả chức năng tìm kiếm sản phẩm theo ý của người dùng
Copies for internal use only in Phenikaa University
Phân tích hệ thống
Các chức năng của hệ thống
STT Tên chức năng Ý nghĩa
1 Đăng nhập Chức năng này mô tả chức năng đăng nhập vào hệ thống của người dùng hoặc admin
2 Đăng ký Chức năng này mô tả chức năng đăng ký tài khoản làm thành viên của người dùng hoặc admin
3 Đặt mua Chức năng này mô tả chức năng đặt mua sản phẩm tại website cửa hàng
4 Thanh toán Chức năng này mô tả chức năng thanh toán tiền của người dùng
5 Xem thông tin sản phẩm
Chức năng này mô tả chức năng xem thông tin sản phẩm có trên website
6 Tìm kiếm sản phẩm Chức năng này mô tả chức năng tìm kiếm sản phẩm theo ý của người dùng
Copies for internal use only in Phenikaa University
7 Quản lý thông tin người dùng
Chức năng này mô tả chức năng quản lý các thông tin như quản lý người dùng của admin
8 Quản lý thông tin sản phẩm
Chức năng này mô tả chức năng quản lý các sản phẩm như quản lý người dùng của admin
9 Bán hàng Chức năng này mô tả chức năng bán hàng trực tuyến của admin
10 Quản lý đơn hàng Chức năng này mô tả chức năng thống kê đơn hàng của admin
Lược đồ Usecase hệ thống
Hình 3.1: Biểu đồ usecase tổng quan
Copies for internal use only in Phenikaa University
Hình 3.2: Biểu đồ usecase người dùng
Hình 3.3: Biểu đồ use case admin
Usecase phân rã chức năng
3.4.1 Usecase Đăng ký đăng nhập
Copies for internal use only in Phenikaa University
Hình 3.4: Biểu đồ use case phân rã chức năng đăng nhập
3.4.2 Usecase Quản lý thông tin cá nhân
Hình 3.5: Biểu đồ use case phân rã chức năng quản lý thông tin
3.4.3 Usecase Quản lý danh sách người dùng
Copies for internal use only in Phenikaa University
Hình 3.6: Biểu đồ use case phân rã chức năng quản lý danh sách người dùng
3.4.4 Usecase Quản lý danh mục sản phẩm
Hình 3.7: Biểu đồ use case phân rã chức năng quản lý danh mục
Hình 3.8: Biểu đồ use case phân rã chức năng mua hàng
3.4.6 Usecase Quản lý đơn hàng
Copies for internal use only in Phenikaa University
Hình 3.9: Biểu đồ usecase phân rã chức năng quản lý đơn hàng
Đặc tả Usecase
Tiến hành đặc tả các UC theo từng hệ con (từng nhóm chức năng) như sau:
3.5.1 Hệ thống đăng ký, đăng nhập
3.5.1.1 Đặc tả usecase đăng ký thành viên
Mô tả Cho phép khách xem đăng ký thành viên của hệ thống
-Khách xem chọn mục đăng ký -Form đăng ký hiển thị
-Khách nhập thông tin cá nhân cần thiết vào Form đăng ký -Nhấn nút đăng ký
-Hệ thống thông báo kết quả quá trình nhập thông tin cá nhân.Nếu thông tin nhập không chính xác thì yêu cầu khách hàng nhập lại.Nếu nhập chính xác thì thực hiện b6
-Hệ thống cập nhật thông tin khách hàng vào danh sách người dùng
Hậu điều kiện Khách hàng trở thành người dùng của hệ thống
3.5.1.2 Đặc tả usecase đăng nhập
Mô tả UC cho phép thành viên đăng nhập vào hệ thống
Copies for internal use only in Phenikaa University
Tiền điều kiện Thành viên chưa đăng nhập vào hệ thống
1.Thành viên chọn chức năng đăng nhập 2.Form đăng nhập hiển thị
3.Nhập email,mật khẩu vào form 4.Hệ thống kiểm tra
5.Nếu việc đăng nhập thành công thì sẽ vào hệ thống trang chủ người dùng.Nếu nhập email và mật khẩu sai thì chuyển sang nhánh A1
Luồng nhánh A1 Thành viên đăng nhập không thành công:
1.Hiển thị thông báo đăng nhập không thành công 2.Hệ thống yêu cầu nhập lại email , mật khẩu 3.Hệ thống quay về luồng sự kiện chính 4.UC kết thúc
Hậu điều kiện Thành viên đăng nhập thành công
3.5.2 Hệ thống xem thông tin
3.5.2.1 Đặc tả use case xem thông tin giỏ hàng
Mô tả Cho phép khách hàng xem thông tin về giỏ hàng của mình
Tiền điều kiện Khách hàng đăng nhập
1.Khách hàng chọn chức năng xem giỏ hàng 2.Hệ thống hiển thị thông tin giỏ hàng của khách hàng hiện tại
3 Trang xem thông tin giỏ hàng hiển thị 4.UC kết thúc
Hậu điều kiện Khách hàng xem được giỏ hàng cá nhân
3.5.2.2 Xem thông tin đơn hàng
Tác nhân Người quản lý
Copies for internal use only in Phenikaa University
Mô tả Cho phép quản lý xem thông tin về đơn hàng lưu trữ trong hệ thống
Tiền điều kiện Người quản lý đăng nhập
1.Người quản lý chọn đơn hàng 2.Hệ thống hiển thị thông tin các đơn hàng 3.UC kết thúc
Hậu điều kiện Xem được các đơn hàng
3.5.2.3 Xem thông tin sản phẩm
Tác nhân Người quản lý, người dùng
Mô tả Cho phép quản lý, người dùng xem thông tin về sản phẩm trong cửa hàng
Tiền điều kiện Không cần đăng nhập
1.Người quản lý,khách hàng chọn sản phẩm cần xem 2.Hệ thống hiển thị thông tin về sản phẩm đã chọn 3.Người quản lý, Khách hàng xem thông tin về sản phẩm đã hiển thị
Hậu điều kiện Xem được thông tin sản phẩm
3.5.2.4 Xem thông tin cá nhân
Tác nhân Thành viên của hệ thống , bao gồm: người quản lý, khách hàng đăng ký tài khoản
Mô tả Cho phép quản lý khách hàng xem thông tin cá nhân của mình
Tiền điều kiện Người quản lý, thành viên đăng nhập
1.Thành viên chọn vào mục xem thông tin cá nhân 2.Hệ thống hiển thị thông tin cá nhân
3.Hệ thống cung cấp liên kết để thành viên sửa đổi thông tin cá nhân
Copies for internal use only in Phenikaa University
Hậu điều kiện Xem được thông tin cá nhân
3.5.3 Hệ thống quản lý thông tin
3.5.3.1 Đặc tả sửa thông tin cá nhân
Tác nhân Thành viên của hệ thống , bao gồm: người quản lý, khách hàng đăng ký tài khoản
Mô tả Cho phép thành viên thay đổi thông tin cá nhân (thông tin đăng ký)
Tiền điều kiện Người quản lý, thành viên đăng nhập
1.Thành viên chọn vào mục xem thông tin cá nhân
2 Thành viên chọn vào sửa thông tin cá nhân 3.Hệ thống hiển thị form sửa thông tin với các thông tin cũ 4.Thành viên nhập thông tin mới
5.Nhấn nút cập nhật 6.Hệ thống lưu thông tin 7.Hệ thống thông báo thành công 8.UC kết thúc
Hậu điều kiện Thành viên hoàn thành sửa thông tin cá nhân
3.5.3.2 Đặc tả UC quản lý sản phẩm
Tác nhân Người quản lý
Mô tả Cho phép quản lý thêm, sửa, xóa các sản phẩm trong danh mục
Tiền điều kiện Người quản lý đăng nhập vào hệ thống
1.Người quản lý chọn kiểu động tác lên sản phẩm: thêm sản phẩm, xóa sản phẩm, thay đổi thông tin sản phẩm
A.Thay đổi thông tin sản phẩm 1.1 Hệ thống hiển thị form thông tin sản phẩm 1.2 Người quản lý nhập thông tin sản phẩm muốn thay đổi 1.3 Nhấn nút lưu thông tin
1.4 Lưu thông tin sản phẩm
Copies for internal use only in Phenikaa University
B.Xóa sản phẩm 1.1 Người quản lý chọn sản phẩm cần xóa 1.2 Nhấn nút xóa để thực hiện
1.3 Hệ thống hiển thị thông báo xác nhận xóa.Nếu quản lý nhấn đồng ý thì thực hiện 1.4 Nếu không đồng ý thực hiện 1.5
1.4 Thôn báo sản phẩm xóa thành công 1.5 Hệ thống hiển thị danh sách sản phẩm
C Thêm sản phẩm 1.1 Hệ thống hiển thị form thông tin sản phẩm 1.2 Người quản lý nhập thông tin sản phẩm 1.3 Nhấn nút lưu thông tin
1.4 Lưu thông tin sản phẩm
Hậu điều kiện Các thông tin sản phẩm được cập nhật vào dữ liệu
3.5.3.3 Đặc tả UC quản lý thành viên(người dùng)
Tác nhân Người quản lý
Mô tả Cho phép quản lý thêm, sửa, xóa các người dùng trong danh mục
Tiền điều kiện Người quản lý đăng nhập vào hệ thống
1.Người quản lý chọn kiểu động tác lên sản phẩm: xóa người dùng, thay đổi thông tin người dùng
A.Thay đổi thông tin người dùng 1.1 Hệ thống hiển thị form thông tin người dùng 1.2 Người quản lý nhập thông tin người dùng muốn thay đổi 1.3 Nhấn nút lưu thông tin
1.4 Lưu thông tin người dùng B.Xóa người dùng
1.1 Người quản lý chọn người dùng cần xóa 1.2 Nhấn nút xóa để thực hiện
Copies for internal use only in Phenikaa University
1.3 Hệ thống hiển thị thông báo xác nhận xóa.Nếu quản lý nhấn đồng ý thì thực hiện 1.4 Nếu không đồng ý thực hiện 1.5
1.4 Thông báo người dùng xóa thành công 1.5 Hệ thống hiển thị danh sách người dùng
Hậu điều kiện Các thông tin sản phẩm được cập nhật vào dữ liệu
3.5.4.1 Đặc tả usecase mua hàng
Mô tả UC cho phép khách hàng chọn sản phẩm cần mua để đưa vào giỏ hàng
Tiền điều kiện Khách hàng đăng nhập
1.Khách hàng xem những sản phẩm muốn mua 2.Khách hàng nhấn chọn mua
2.Hệ thống hiển thị các sản phẩm có trong mục đã chọn ở giỏ hàng
3.Khách hàng chọn sản phẩm cụ thể cần mua 4.Nhấn mua hàng
Hậu điều kiện Khách hàng mua hàng
3.5.4.2 Đặc tả usecase thanh toán
Mô tả UC cho phép khách hàng tạo đơn hàng để thanh toán giỏ hàng
Tiền điều kiện Khách hàng chọn sản phẩm vào giỏ hàng
1.Khách hàng tạo đơn hàng 2.Form thanh toán xuất hiện, hệ thống hiển thị đơn hàng và một số thông tin mặc định của đơn hàng
Copies for internal use only in Phenikaa University
3.Khách hàng nhận tiếp các thông tin: họ tên, địa chỉ, số điện thoại
4.Nhấn thanh toán 5.UC kết thúc
Hậu điều kiện Khách hàng thanh toán thành công
3.6 Biểu đồ hoạt động của các usecase
Hình 3.10 :Biểu đồ hoạt động UC đăng ký
Hình 3.11 :Biểu đồ hoạt động UC đăng nhập
3.6.3 Copies for internal use only in Phenikaa University UC sửa thông tin cá nhân
Hình 3.12 :Biểu đồ hoạt động UC sửa thông tin cá nhân
3.6.4 UC quản lý danh sách thành viên
Hình 3.13:Biểu đồ hoạt động UC sửa thông tin cá nhân
3.6.5 UC quản lý danh mục sản phẩm
Tương tự Uc quản lý danh sách thành viên
3.6.6 Copies for internal use only in Phenikaa University UC mua hàng, tiếp nhận đơn hàng và xử lý
Hình 3.14:Biểu đồ hoạt động UC mua hàng
3.7.1 Usecase đăng ký thành viên
Copies for internal use only in Phenikaa University
Hình 3.15 :Biểu đồ tuần tự của UC đăng ký thành viên
Copies for internal use only in Phenikaa University
Hình 3.16 :Biểu đồ tuần tự của UC đăng nhập thành viên
3.7.3 Usecase sửa thông tin cá nhân
Hình 3.17 :Biểu đồ tuần tự của UC sửa thông tin cá nhân
3.7.4 Usecase quản lý danh sách thành viên
Hình 3.18 :Biểu đồ tuần tự của UC quản lý danh sách thành viên(người dùng)
Copies for internal use only in Phenikaa University
3.7.5 Use Case mua hàng, tiếp nhận và xử lý đơn hàng
Hình 3.19 :Biểu đồ tuần tự của UC mua hàng
Copies for internal use only in Phenikaa University
Biểu đồ tuần tự
3.7.1 Usecase đăng ký thành viên
Copies for internal use only in Phenikaa University
Hình 3.15 :Biểu đồ tuần tự của UC đăng ký thành viên
Copies for internal use only in Phenikaa University
Hình 3.16 :Biểu đồ tuần tự của UC đăng nhập thành viên
3.7.3 Usecase sửa thông tin cá nhân
Hình 3.17 :Biểu đồ tuần tự của UC sửa thông tin cá nhân
3.7.4 Usecase quản lý danh sách thành viên
Hình 3.18 :Biểu đồ tuần tự của UC quản lý danh sách thành viên(người dùng)
Copies for internal use only in Phenikaa University
3.7.5 Use Case mua hàng, tiếp nhận và xử lý đơn hàng
Hình 3.19 :Biểu đồ tuần tự của UC mua hàng
Copies for internal use only in Phenikaa University
Triển khai hệ thống
Thiết kế giao diện
Hình 4.1: Màn hình đăng nhập
Hình 4.2: Màn hình đăng ký
Copies for internal use only in Phenikaa University
Hình 4.3: Màn hình trang chủ
Hình 4.4: Màn hình trang chi tiết sản phẩm
Copies for internal use only in Phenikaa University
Hình 4.5: Màn hình giỏ hàng
Hình 4.6: Màn hình thông tin người dùng
Copies for internal use only in Phenikaa University
Hình 4.7: Màn hình quản lý người dùng
Hình 4.8: Màn hình quản lý sản phẩm
Kết quả thực hiện kiểm thử
- Giả định: username = ”ADMIN”, pass =”123456”
- Mục đích: kiểm thử chức năng đăng ký tài khoản
- Pre-conditions: thực hiện được chức năng đăng ký tài khoản
STT Mô tả Kết quả mong đợi Kết quả thực tế Pass/Fail
Không nhập dữ liệu 1 hoặc nhiều trường
Hiển thị thông báo lỗi không được để trống các trường,
Hiển thị thông báo lỗi không được để trống các trường
Copies for internal use only in Phenikaa University bắt buộc, bấm button đăng ký email,cofim password, password email,confirm password, password
2 Nhập tên tài khoản đã có
Hiển thị thông báo lỗi tên người dùng đã có hãy chọn một tên khác
Hiển thị thông báo lỗi tên người dùng đã có hãy chọn một tên khác
Nhập đúng các trường nhưng sai địa chỉ email
Hiển thị thông báo lỗi sai địa chỉ email
Hiển thị thông báo lỗi sai địa chỉ email Pass
Nhập đầy đủ dữ liệu các trường
Hiển thị thông báo bạn đã đăng ký thành công
Hiển thị thông báo bạn đã đăng ký thành công
- Mục đích: kiểm thử chức năng đăng nhập vào hệ thống
- Pre-conditions: thực hiện được chức năng đăng nhập vào hệ thống
STT Mô tả Kết quả mong đợi Kết quả thực tế Pass/Fail
Không nhập dữ liệu cho các trường bấm button login
Hiển thị thông báo lỗi không được để trống các trường email và mật khẩu
Hiển thị thông báo lỗi vui lòng điền vào trường email hoặc mật khẩu
Nhập sai tên đăng nhập hoặc mật khẩu
Hiển thị thông báo lỗi nhập sai tên đăng nhập hoặc mật khẩu
Hiển thị thông báo lỗi nhập sai tên đăng nhập hoặc mật khẩu
Nhập đúng tên đăng nhập và mật khẩu
Thực hiện chuyển trang với quyền tương ứng
Thực hiện chuyển trang với quyền tương ứng
Copies for internal use only in Phenikaa University
4.2.3 Kiểm thử thêm sản phẩm
- Giả định: người dùng đã truy cập vào hệ thống
- Mục đích: kiểm thử các chức năng trong lớp sản phẩm và xem có đúng với mô tả tài liệu
+ Thực hiện được chức năng thêm sản phẩm vào bảng
+ Khi người dùng điền không đầy đủ thông tin sẽ trả về
STT Mô tả Kết quả mong đợi Kết quả thực tế Pass/Fail
Không nhập dữ liệu tất cả các trường và kích nút thêm mới
Hiển thị thông báo lỗi “bạn chưa nhập dữ liệu”
Hiển thị thông báo vui lòng điền vào trường này (tất cả các trường bị bỏ trống) pass
Nhập đầy đủ các trường thông tin sản phẩm
Xuất hiện thông báo thêm mới thành công
Nhập thành công chuyển qua danh sách sản phẩm hiển thị lên table pass
4.2.4 Kiểm thử cập nhật sản phẩm
- Giả định: người dùng đã truy cập vào hệ thống
- Mục đích: kiểm thử cập nhật các thông tin sản phẩm
+ Cập nhật được dữ liệu đã nhập đồng thời cập nhật dữ liệu mới vào bảng + Cập nhật những thay đổi dữ liệu thiếu sẽ in ra thông báo cho người dùng
STT Mô tả Kết quả mong đợi Kết quả thực tế Pass/Fail
Copies for internal use only in Phenikaa University
Cập nhật sửa dữ liệu sản phẩm nhưng thiếu thông tin 1 trong các trường
Cập nhật thất bại thông tin sản phẩm
Thông báo vui lòng điền vào trường này
Cập nhật đầy đủ thông tin dữ liệu sản phẩm khi sửa
Hiển thị hiện thông báo
Hiển thị chi tiết thông tin sản phẩm đã sửa thành công
Cập nhật khi điền không đúng định dạng
Xuất hiện thông báo người dùng điền không đúng kiểu định dạng thông tin sản phẩm
Tự nhận định bắt buộc đúng kiểu định dạng(số hoặc chữ)
4.2.5 Kiểm thử xóa sản phẩm
- Giả định: người dùng đã truy cập vào hệ thống
- Mục đích: kiểm thử chức năng xóa sản phẩm
- Pre-conditions: xóa toàn bộ thông tin sản phẩm thành công
STT Mô tả Kết quả mong đợi Kết quả thực tế Pass/Fail
Chọn dữ liệu trong danh sách sản phẩm và nhấn nút xóa
Xuất hiện thông báo “xóa sản phẩm thành công”
Xóa thành công sản phẩm bị mất trên danh sách sản phẩm
4.2.6 Kiểm thử tìm kiếm sản phẩm
- Giả định: người dùng đã truy cập vào hệ thống
- Mục đích: kiểm thử chức năng tìm kiếm sản phẩm
- Pre-conditions: tìm kiếm hiển thị ra thông tin sản phẩm
Copies for internal use only in Phenikaa University
STT Mô tả Kết quả mong đợi Kết quả thực tế Pass/Fail
Nhập sản phẩm cần tìm kiếm và xem thông tin sản phẩm
Xuất hiện sản phẩm cần tìm
Xuất hiện sản phẩm cần tìm Pass
Nhập sai sản phẩm hoặc chưa nhập sản phẩm cần tìm
“không tìm thấy sản phẩm cần tìm”
Không xuất hiện thông tin sản phẩm đó
4.2.7 Kiểm thử xóa người dùng
- Giả định: người dùng đã truy cập vào hệ thống
- Mục đích: kiểm thử chức năng xóa thông tin người dùng
- Pre-conditions: xóa toàn bộ thông tin người dùng thành công
STT Mô tả Kết quả mong đợi Kết quả thực tế Pass/Fail
Chọn dữ liệu trong danh sách sản phẩm và nhấn nút xóa
Xuất hiện thông báo “xóa khách hàng thành công”
Xóa thành công sản phẩm bị mất trên danh sách khách hàng
Copies for internal use only in Phenikaa University
Tổng quát
Tổng kết về dự án
Hệ thống xây dựng website bán hàng trực tuyến được xây dựng nhằm mục đích giúp doanh nghiệp vừa và nhỏ có thể: Quản lý, vận hành và thống kê hoạt động kinh doanh các mặt hàng điện tử online Tạo ra nơi cung cấp các mặt hàng điện tử mới nhất trên thị trường, đồng thời việc tìm kiếm, thanh toán nhanh gọn
- Phân tích và thiết kế Database
- Nắm được một ngôn ngữ lập trình
- Xây dựng được cơ sở dữ liệu và giao diện cho chương trình bằng hệ quản trị cơ sở dữ liệu
- Quản lý được số lượng sản phẩm
- Chương trình không hoạt động được trong trình trạng không có internet
- Thiếu kinh nghiệm trong việc phát triển dự án nên gặp nhiều vấn đề về cách tổ chức dự án và thời gian thực hiện
- Một số chức năng chưa được tối ưu
Link dự án: https://github.com/TuanDuong1412/Backendd-ECO https://github.com/TuanDuong1412/Frontend-ECO Hướng phát triển
- Chỉnh sửa giao diện đẹp mắt, trực quan, tối ưu hóa hiển thị và độ mượt mà của các trang người dùng
- Nâng cấp thêm chức năng thanh toán thông qua ngân hàng, ví điện tử
- Đăng nhập Website bằng tài khoản Google, Facebook…
- Xây dựng và hoàn thiện chức năng trao đổi trực tiếp với khách hàng bằng chatbox
Copies for internal use only in Phenikaa University