Tên đề tài: Xây dựng ứng dụng Bán hàng cho các cửa hàng tạp hoá Sinh viên thực hiện: Nguyễn Thành Nhân Mã SV: 1911505310242 Lớp: 19T2 Nội dung tóm tắt: Ứng dụng bán hàng cho các cửa hàn
Chương 1: Tổng quan đề tài
Giới thiệu lý do và các mục tiêu mà đề tài cần giải quyết, phạm vi nghiên cứu của đề tài Giới thiệu tóm tắt nội dung sẽ được trình bày trong các chương trình tiếp theo
Nghiên cứu, tìm hiểu và đưa ra lý do chọn đề tài, mục tiêu và mục đích khi xây dựng và phát triển đề tài Xác định rỏ phạm vi và đối tượng hướng đến, giải pháp công nghệ để triển khai, xây dựng đề tài, đồng thời phân tích đặc tả yêu cầu nghiệp vụ.
Chương 2: Cơ sở lý thuyết
Tìm hiểu, giới thiệu tổng quan về ngôn ngữ lập trình JavaScript, công nghệ React Native, và hệ quản trị cơ sở dữ liệu MySQL.
Chương 3: Phân tích thiết kế hệ thống
Phân tích các tác nhân và chức năng của từng tác nhân của hệ thống Thiết kế sơ đồ Usecase, sơ đồ hoạt động, sơ đồ ERD Thiết kế cơ sở dữ liệu Xây dựng kịch bản cho từng Usecase hệ thống.
Chương 4: Kết quả triển khai hệ thống
Xây dựng giao diện và chức năng của ứng dụng
Phần kết luận
Kết luận chung cho các chương trong đồ án Trình bày những vấn đề đã giải quyết đồng thời trình bày hướng phát triển
Giới thiệu hệ quản trị cơ sở dữ liệu MySQL
Tổng quan
MySQL là một hệ quản trị cơ sở dữ liệu quan hệ mã nguồn mở phổ biến Nó được phát triển bởi một nhóm các nhà phát triển tại Oracle Corporation MySQL được xây dựng trên mô hình quan hệ, trong đó dữ liệu được lưu trữ trong các bảng có quan hệ với nhau thông qua các khóa ngoại
MySQL có cơ chế kiểm soát quyền truy cập của người dùng cho phép quản lý nhiều cơ sở dữ liệu khác nhau Mỗi người dùng được xác định bằng tên đăng nhập và mật khẩu duy nhất để truy cập vào các cơ sở dữ liệu được chỉ định.
MySQL được sử dụng cho việc bổ trợ NodeJs, PHP, Perl, và nhiều ngôn ngữ khác, làm nơi lưu trữ những thông tin trên các trang web viết bằng NodeJs, PHP hay Perl,
2.1.2 Ưu điểm khi sử dụng MySQL
MySQL được tối ưu hóa để cung cấp hiệu suất cao cho các hoạt động đọc và ghi dữ liệu Nó sử dụng các kỹ thuật tối ưu hóa truy vấn và chỉ mục để đảm bảo truy vấn được thực hiện nhanh chóng và hiệu quả Điều này rất quan trọng khi bạn có một ứng dụng có lượng truy cập lớn hoặc xử lý dữ liệu phức tạp
Hệ thống quản lý giao dịch mạnh mẽ và hỗ trợ các tính năng bảo mật như phân quyền và mã hóa dữ liệu Nó cũng có khả năng sao lưu và phục hồi dữ liệu, giúp bảo vệ dữ liệu của bạn khỏi sự mất mát và giúp phục hồi sau các sự cố
Cho phép bạn tạo và quản lý các cơ sở dữ liệu lớn với hàng nghìn bảng và triệu hàng tỷ bản ghi Nó cung cấp tính năng phân tán và sao chép để tăng tính sẵn có và khả năng mở rộng của hệ thống
API (Application Programming Interface) đóng vai trò trung gian giữa các ứng dụng, cho phép chúng giao tiếp với nhau Sự hiện diện của API thể hiện rõ trong những hành động hàng ngày như sử dụng Facebook, nhắn tin tức thời hay kiểm tra thời tiết trên điện thoại.
Kiến trúc API thường được giải thích dưới dạng máy chủ và máy khách Ứng dụng gửi yêu cầu được gọi là máy khách, còn ứng dụng gửi phản hồi được gọi là máy chủ
Như vậy, trong ví dụ về thời tiết, cơ sở dữ liệu của cơ quan thời tiết là máy chủ còn ứng dụng di động là máy khách API hoạt động theo 4 cách khác nhau, tùy vào thời điểm và lý do chúng được tạo ra
Cách hoạt động của API: a) API SOAP Các API này sử dụng Giao thức truy cập đối tượng đơn giản Máy chủ và máy khách trao đổi thông đệp bằng XML Đây là loại API kém linh hoạt được dùng phổ biến trước đây b) API RPC Những API này được gọi là Lệnh gọi thủ tục từ xa Máy khách hoàn thành một hàm (hoặc thủ tục) trên máy chủ còn máy chủ gửi kết quả về cho máy khách c) API Websocket API Websocket là một bản phát triển API web hiện đại khác sử dụng các đối tượng JSON để chuyển dữ liệu API WebSocket hỗ trợ hoạt động giao tiếp hai chiều giữa ứng dụng máy khách và máy chủ Máy chủ có thể gửi thông điệp gọi lại cho các máy khách được kết nối, điều này khiến loại API này hiệu quả hơn API REST d) API REST Đây là loại API phổ biến và linh hoạt nhất trên web hiện nay Máy khách gửi yêu cầu đến máy chủ dưới dạng dữ liệu Máy chủ dùng dữ liệu đầu vào từ máy khách này
Giới thiệu ngôn ngữ lập trình Java Script JavaScript rất phổ biến được dùng để tạo ra các trang web tương tác Được tích hợp và nhúng vào HTML giúp website trở nên sống động hơn JavaScript đóng vai trò như một phần của trang web, thực thi cho phép Client-Side Script từ phía người dùng cũng như phía máy chủ (Nodejs) tạo ra các trang web động Là một ngôn ngữ lập trình thông dịch với khả năng hướng đến đối tượng Là một ngôn ngữ bậc cao, có các giao diện lập trình ứng dụng (API) để làm việc với văn bản, ngày tháng, biểu thức chính quy, cấu trúc dữ liệu tiêu chuẩn và Mô hình đối tượng tài liệu (DOM).
Ứng dụng của JavaScript
- Thay đổi nội dung HTML như tìm một phần tử của HTML và dùng để thay đổi nội dung của phần từ (Internal HTML) sang nội dung thuộc Javascript
- Tiến hành lưu trữ và truy xuất cho các giá trị - Thực hiện tải và sử dụng những mô-đun ở bên ngoài
- Thực hiện xác định và gọi cho các hàm
- Tiến hành viết trình xử lý cho các sự kiện để có thể đáp ứng với tất cả người dùng và những sự kiện khác.
Cách hoạt động của JavaScript
Khi trình duyệt tải một trang web chứa mã JavaScript, trình duyệt sẽ tải mã đó và xử lý nó từ trên xuống dưới, tuần tự theo thứ tự mà mã được đặt trong tài liệu HTML
JavaScript được sử dụng để xử lý sự kiện và phản ứng với hành động người dùng trên trang web khi người dùng tương tác với trang
JavaScript có khả năng thay đổi nội dung và giao diện người dùng của trang web bằng cách truy cập vào Document Object Model (DOM) DOM cho phép JavaScript thêm, xóa hoặc sửa đổi nội dung của các phần tử HTML, cũng như thay đổi kiểu dáng và tạo hiệu ứng động.
JavaScript cho phép kết nối với các API và tương tác với dữ liệu từ máy chủ bằng các phương thức như XMLHttpRequest, Fetch API hay giao thức WebSocket Thông qua các phương thức này, JavaScript có thể gửi yêu cầu đến máy chủ và xử lý dữ liệu trả về.
React Native là một framework mã nguồn mỡ được sáng tạo bởi Facebook Nó được sử dụng để phát triển ứng dụng di động Android, IOS, Web bằng cách cho phép các nhà phát triển sử dụng React cùng với môi trường ứng dụng gốc (native) React native cũng giống như React vậy chúng sử dụng các native components thay vì các web components Sự ra đời của React Native là lời giải đáp cho bài toán về hiệu năng và tối ưu hóa ngôn ngữ cho mọi nền tảng di động Vì vậy để hiểu về cấu trúc của React native chúng ta cần phải có các kiến thức cơ bản với các khái niệm cơ bản của React như là
JSX, components, props hay là state
Với những ưu điểm của mình mà JavaScript được các ông lớn như Google, Facebook,… hỗ trợ trong việc phát triển để cho ra đời các library hay framework JavaScript nổi tiếng hiện nay như: AngularJS, ReactJS và React Native, VueJS, NuxtJS, NextJS, Jquery, NodeJS …
Ưu điểm
Ưu điểm của React Native có rất nhiều, trong đó có 4 nội dung chính bao gồm:
Phát triển ứng dụng di động cho cả iOS và Android từ một mã nguồn duy nhất Điều này giúp tiết kiệm thời gian và công sức phát triển
React Native sử dụng JavaScript, một ngôn ngữ lập trình phổ biến và dễ tiếp cận Điều này có nghĩa là bạn có thể sử dụng kiến thức và kỹ năng JavaScript hiện có của mình để phát triển ứng dụng React Native mà không cần học một ngôn ngữ mới
Cộng đồng React Native rất lớn và phong phú, cung cấp rất nhiều gói thư viện sẵn có để giúp bạn xây dựng các tính năng phức tạp một cách nhanh chóng
Sử dụng bridge, công cụ kết nối mã JavaScript với các thành phần giao diện người dùng trên nền tảng di động, giúp tăng hiệu suất và cải thiện thời gian phản hồi so với các ứng dụng lai di động thông thường.
Nhược điểm
Với những ưu điểm tiện dụng, người học lập trình có thể dễ học thì React Native cũng có những nhược điểm cơ bản Trong đó, nó được thể hiện qua:
Một số chức năng cụ thể mà bạn có thể cần phải sử dụng mã native hoặc giao diện lập trình ứng dụng (API) riêng của từng nền tảng
Mặc dù React Native có hiệu suất vượt trội so với các ứng dụng lai truyền thống, nhưng nó vẫn không thể đạt được hiệu suất tương tự như các ứng dụng di động được viết bằng mã gốc.
Hiệu năng kém hơn so với khi sử dụng native app
Vì sử dụng JavaScript nên chưa có sự bảo mật an toàn
Khả năng tùy biến trong một số module chưa thật sự tốt
Không thích hợp khi ứng dụng vào các app cần khả năng tính toán cao
Giới thiệu
NodeJs một môi trường runtime chạy JavaScript đa nền tảng và có mã nguồn mở, được sử dụng để chạy các ứng dụng web bên ngoài trình duyệt của client Nền tảng này được phát triển bởi Ryan Dahl vào năm 2009, được xem là một giải pháp hoàn hảo cho các ứng dụng sử dụng nhiều dữ liệu nhờ vào mô hình hướng sự kiện (event-driven) không đồng bộ
Khi bạn connect đến một server truyền thống, chẳng hạn Apache, nó sẽ sinh ra một thread mới để xử lý request Ở các ngôn ngữ như PHP hay Ruby, mỗi một phép toán I/O (ví dụ truy cập database) sẽ chặn execution trên code của bạn cho đến khi phép toán đó hoàn thành Nói cách khác, server sẽ đợi cho đến khi database được duyệt xong mới xử lý kết quả Nếu có những request mới, server lại tiếp tục sinh những thread mới để xử lý chúng Điều này dẫn đến nguy cơ kém hiệu quả, khi một lượng lớn thread được tạo ra sẽ khiến cho hệ thống trở nên chậm chạp, tệ hơn nữa có thể khiến site bị sập Cách thông thường để giải quyết tình trạng này là bổ sung thêm server.
Mô hình hoạt động của nodejs
Hình 2.1: Mô hình hoạt động của Nodejs
Node.js là single-threaded và dựa trên sự kiện, nghĩa là nó xử lý các sự kiện theo thứ tự nhận được Khi một yêu cầu đến, máy chủ sẽ bắt đầu xử lý nó Nếu cần thực hiện toán tử I/O, thay vì chờ đợi kết quả, máy chủ sẽ đăng ký một callback và tiếp tục xử lý sự kiện tiếp theo Khi toán tử I/O hoàn tất, máy chủ sẽ chạy callback để tiếp tục xử lý yêu cầu ban đầu Mô hình hoạt động này của Node.js sử dụng thư viện libuv để thực hiện hoạt động không đồng bộ (non-blocking), cho phép máy chủ xử lý đồng thời nhiều kết nối đến Để mở rộng quy mô một ứng dụng Node.js, thông thường người ta sử dụng chiến lược clone ứng dụng và chia sẻ công việc giữa các bản sao Node.js thậm chí còn cung cấp mô-đun tích hợp sẵn để hỗ trợ việc thực hiện chiến lược clone này trên một máy chủ duy nhất.
Công cụ sử dụng phát triển hệ thống
Giới thiệu về Visual Studio Code
Là một trình biên tập lập trình code miễn phí dành cho Windows, Linux và macOS, Visual Studio Code được phát triển bởi Microsoft Nó được xem là một sự kết hợp hoàn hảo giữa IDE và Code Editor
Visual Studio Code hỗ trợ chức năng debug, đi kèm với Git, có syntax highlighting, tự hoàn thành mã thông minh, snippets, và cải tiến mã nguồn Nhờ tính năng tùy chỉnh, Visual Studio Code cũng cho phép người dùng thay đổi theme, phím tắt, và các tùy chọn khác
Một số tính năng nổi bật Hỗ trợ nhiều ngôn ngữ lập trình Hỗ trợ đa nền tảng Ít dung lượng, nhẹ Tính năng mạnh mẽ Cung cấp kho tiện ích mở rộng Kho lưu trữ an toàn
Visual Studio Code hỗ trợ nhiều ứng dụng web Ngoài ra, nó cũng có một trình soạn thảo và thiết kế website
Lưu trữ dữ liệu dạng phân cấp Hỗ trợ viết Code
Visual Studio Code có tích hợp thiết bị đầu cuối, giúp người dùng khỏi phải chuyển đổi giữa hai màn hình hoặc trở về thư mục gốc khi thực hiện các thao tác
Người dùng Visual Studio Code có thể mở cùng lúc nhiều tệp tin và thư mục – mặc dù chúng không hề liên quan với nhau
Intellisense: có thể phát hiện nếu bất kỳ đoạn mã nào không đầy đủ Thậm chí, khi lập trình viên quên không khai báo biến, Intellisense sẽ tự động giúp họ bổ sung các cú pháp còn thiếu
: PHÂN TÍCH THIẾT KẾ HỆ THỐNG Đặc tả chức năng
Xác định các tác nhân
Đề tài gồm 3 tác nhân:
Các yêu cầu chức năng
Khách vãng lai Tìm kiếm Đăng ký thành viên
Khách thành viên Đăng nhập / đăng xuất Cập nhập thông tin cá nhân Tìm kiếm hàng hoá
Mua sản phẩm Thêm/ Cập nhật địa chỉ giao hàng Xem đơn hàng đã giao/ chưa giao
− Quản lý tài khoản người dùng
− Quản lý doanh thu cửa hàng
− Quản lý danh sách sản phẩm
Sơ đồ Usecase
Hình 3.1: Sơ đồ usecase tổng quát
Kịch bản cho Usecase
STT Tên Usecase Đăng nhập
1 Mô tả Người dùng cần phải đăng nhập để sử dụng ứng dụng 2 Tác nhân Quản trị viên, Khách thành viên
3 Đầu vào Email và Mật khẩu
4 Đầu ra Đăng nhập thành công
5 Các bước thực hiện 1 Nhập Email
2 Nhập Mật khẩu 3 Nhấn nút Đăng nhập 6 Các bước phát sinh Người dùng nhập sai Email hoặc Mật khẩu -> Thông báo lỗi không đúng Email hoặc Mật khẩu 7 Trưởng hợp ngoại lệ
Usecase “Quản lý tài khoản”
STT Tên Usecase Quản lý tài khoản
1 Mô tả Thêm, sửa, xóa thông tin người dùng trên hệ thống
2 Tác nhân Quản trị viên
3 Đầu vào Quản trị viên đã đăng nhập thành công 4 Đầu ra Hệ thống thông báo thực hiện chức năng thành công 5 Các bước thực hiện Bước 1: Chủ cửa hàng nhấn vào nút “Quản lý tài khoản” - Bắt đầu use case Bước 2: Chủ cửa hàng chọn chức năng muốn thực hiện (Thêm mới tài khoản, chỉnh sửa tài khoản, hoặc Xóa tài khoản)
1 Chủ cửa hàng chọn chức năng “Thêm mới”
2 Nhập thông tin tài khoản thêm mới 3 Chủ cửa hàng chọn nút “Thêm mới”
4 Hệ thống thông báo thêm mới thành công - Kết thúc usecase
1 Chủ cửa hàng chọn tài khoản cần sửa 2 Chủ cửa hàng chọn nút “Chỉnh sửa”
3 Người dùng nhập thông tin cần sửa 4 Người dùng chọn nút “Xác nhận”
5 Hệ thống xuất thông báo đã chỉnh sửa tài khoản thành công - Kết thúc use case
1 Chủ cửa hàng chọn tài khoản cần xoá 2 Chủ cửa hàng chọn nút “Xoá”
Hệ thống thông báo Xoá tài khoản thành công - Kết thúc use case
6 Các bước phát sinh 7 Trưởng hợp ngoại lệ
Usecase “Quản lý danh sách sản phẩm”
STT Tên Usecase Quản lý danh sách sản phẩm
1 Mô tả Thêm, sửa, xóa thông tin sản phẩm trên hệ thống
2 Tác nhân Quản trị viên
3 Đầu vào Quản trị viên đã đăng nhập thành công 4 Đầu ra Hệ thống thông báo thực hiện chức năng thành công 5 Các bước thực hiện Bước 1: Chủ cửa hàng nhấn vào nút “Quản lý danh sách sản phẩm” - Bắt đầu use case Bước 2: Người quản lý chọn chức năng muốn thực hiện (Thêm mới, chỉnh sửa, hoặc Xóa sản phẩm)
1 Nhập tên sản phẩm 2 Nhập giá tiền 3 Nhấn Upload hình ảnh sản phẩm
4 Nhấn nút Thêm mới -> Hệ thống thông báo
“Bạn có muốn thêm sản phẩm không” -> Nhấn nút thêm -> Hệ thống thông báo đã thêm sản phẩm thành công -> Kết thúc Usecase
1 Nhấn chọn Checkbox một hoặc nhiều sản phẩm cần xóa
2 Nhấn nút xóa -> Hệ thống thông báo “Bạn có muốn xóa phẩm không” -> Nhấn nút xóa -> Kết thúc Usecase
1 Chọn sản phẩm cần cập nhật 2 Nhập tên sản phẩm
3 Nhập giá tiền 4 Upload hình ảnh sản phẩm Nhấn nút cập nhật -> Hệ thống thông báo cập nhật sản
C 3 Nhấn nút Hủy -> Hệ thống quay lại bước 1
Usecase “Quản lý đơn hàng”
STT Tên Usecase Quản lý đơn hàng
1 Mô tả Thêm, Xóa, Cập nhật và Phân loại đơn hàng
2 Tác nhân Quản trị viên
3 Đầu vào Quản trị viên đã đăng nhập thành công 4 Đầu ra Hệ thống thông báo thực hiện chức năng thành công
5 Các bước thực hiện Bước 1: Chủ cửa hàng nhấn vào nút “Quản lý đơn hàng” - Bắt đầu use case Bước 2: Người quản lý chọn chức năng muốn thực hiện (Thêm, Xóa, Cập nhật và Phân loại đơn hàng)
1 Chọn đơn hàng cần thêm 2 Nhấn nút thêm -> Hệ thống thông báo thêm đơn hàng thành công -> Kết thúc Usecase
1 Nhấn chọn Checkbox một hoặc nhiều đơn hàng cần xóa
2 Nhấn nút xóa -> Hệ thống thông báo “Bạn có muốn xóa đơn hàng không” -> Nhấn xóa -> Hệ thống thông báo xóa thành công -> Kết thúc Usecase
1 Chọn đơn hàng cần cập nhật 2 Cập nhật tên đơn hàng 3 Cập nhật giá tiền đơn hàng
Nhấn nút cập nhật -> Hệ thống thông báo cập nhật thành công
6 Các bước phát sinh 7 Trưởng hợp ngoại lệ
3.2.3 Sơ đồ hoạt động (Activity Diagram) Actor quản trị viên, khách thành viên đăng nhập
Hình 3.2: Sơ đồ hoạt động đăng nhập
Sơ đồ hoạt động Mua sản phẩm
Hình 3.3: Sơ đồ hoạt động Mua sản phẩm
Sơ đồ hoạt động Cập nhật thông tin người dùng
Hình 3.4: Sơ đồ hoạt động Cập nhật thông tin người dùng
Sơ đồ hoạt động Quản lý tài khoản
Hình 3.5: Sơ đồ hoạt động Quản lý tài khoản
Sơ đồ hoạt động Quản lý danh sách sản phẩm
Hình 3.6: Sơ đồ hoạt động Quản lý danh sản phẩm
Sơ đồ tuần tự
Hình 3.7: Sơ đồ tuần tự Quản lý tài khoản
Sơ đồ tuần tự Quản lý danh sách sản phẩm
Sơ đồ tuần tự Quản lý đơn hàng
Hình 3.9: Sơ đồ tuần tự Quản lý đơn hàng
Sơ đồ tuần tự Thêm địa chỉ giao hàng
Sơ đồ tuần tự Đăng nhập
Hình 3.11: Sơ đồ tuần tự Đăng nhập
Hình 3.12: Sơ đồ hệ thống
Sơ đồ ERD
Thiết kế cơ sở dữ liệu
Thuộc tính Giải thích Kiểu dữ liệu Ghi chú roleID Mã Quyền int Khóa chính, tự động tăng roleName Tên Quyền Varchar(30)
Bảng người dùng có các thuộc tính sau: userID là mã người dùng kiểu int, là khóa chính tự động tăng; userName là tên người dùng kiểu varchar(25); passWord là mật khẩu kiểu varchar(255); fullName là họ và tên kiểu varchar(50); email là địa chỉ email kiểu varchar(255); phone là số điện thoại kiểu varchar(11); address là địa chỉ kiểu varchar(30).
Birthday Ngày sinh date roleID Mã Quyền int Khóa ngoại
Thuộc tính Giải thích Kiểu dữ liệu Ghi chú productID Mã sản phẩm Varchar (7) Khóa chính productName Tên sản phẩm Nvarchar (30) price Giá tiền Varchar (10)
Quantity Số lượng Int stockQuantity Số lượng tồn Int expirationDate Hạn sử dụng Datetime
Unit Đơn vị Varchar (30) productDescription Mô tả sản phẩm Nvarchar (255) productStatus Tình trạng sản phẩm
Nvarchar (30) categoryID Mã danh mục Varchar(11) Khoá ngoại wareHouseID Mã kho hàng Varchar(7) Khoá ngoại importPrice Giá nhập Decimal importDate Ngày nhập Date dateManufactured Ngày sản xuất Date
Thuộc tính Giải thích Kiểu dữ liệu Ghi chú imageID Mã hình ảnh Varchar (7) Khóa chính imageURL Đường dẫn Varchar (255) productID Mã sản phẩm Varchar (7) Khoá ngoại
Thuộc tính Giải thích Kiểu dữ liệu Ghi chú orderID Mã đơn hàng Varchar (7) Khóa chính orderStatus Tình trạng đơn hàng
Nvarchar (2) payMethod Phương thức thanh toán
The `Varchar (45)` data type is used to store the `totalPrice` of the order as a string with a maximum length of 45 characters The `Decimal` data type is used to store the `orderDate` as a fixed-precision numeric value The `Datetime` data type is used to store both the `deliveryDate` and the `orderDate` as dates and times Finally, the `Int` data type is used to store the `userID` and `userAddressID` as integers These fields are foreign keys that reference the `User` and `UserAddress` tables, respectively.
Bảng Chi tiết đơn hàng
Thuộc tính Giải thích Kiểu dữ liệu Ghi chú orderDetailID Mã chi tiết đơn hàng
Varchar(11) Khóa chính orderID Mã đơn hàng Varchar(11) Khoá ngoại quantity Số lượng int productID Mã sản phẩm Varchar(50) Khoá ngoại
Bảng 3.6: Bảng Chi tiết đơn hàng
Thuộc tính Giải thích Kiểu dữ liệu Ghi chú categoryID Mã danh mục Varchar(11) Khoá chính
Thuộc tính Giải thích Kiểu dữ liệu Ghi chú
CartID Mã giỏ hàng int Khoá chính, tự động tăng productID Mã sản phẩm Varchar(7) Khóa ngoại, tự động tăng userID Mã người dùng int Khóa ngoại, tự động tăng quantity Số lượng int
Thuộc tính Giải thích Kiểu dữ liệu Ghi chú productID Mã sản phẩm Varchar (7) Khóa chính productName Tên sản phẩm Nvarchar (30) importQuantity Số lượng nhập hàng
Int exportQuantity Số lượng xuất hàng Int stockQuantity Số lượng tồn Int dateImport Ngày nhập hàng Datetime dateExport Ngày xuất hàng Datetime
Bảng Địa chỉ người dùng
Thuộc tính Giải thích Kiểu dữ liệu Ghi chú userAddressID Mã địa chỉ người dùng int Khoá chính, tự động tăng userNameAddress Địa chỉ người dùng varchar(100) userID Mã người dùng int Khóa ngoại, tự động tăng
WardsID Mã Phường/ Xã int Khóa ngoại, tự động tăng
Bảng 3.10: Bảng Địa chỉ người dùng
Thuộc tính Giải thích Kiểu dữ liệu Ghi chú provinceID Mã tỉnh/ thành int Khóa chính, tự động tăng nameProvince Tên tỉnh/ thành int
Thuộc tính Giải thích Kiểu dữ liệu Ghi chú districtID Mã quận/ huyện int Khóa chính, tự động tăng provinceID Mã tỉnh/ thành int Khóa ngoại, tự động tăng
Thuộc tính Giải thích Kiểu dữ liệu Ghi chú
WardsID Mã phường/ xã int Khoá chính, tự động tăng districtID Mã quận/ huyện int Khóa ngoại, tự động tăng provinceID Mã tỉnh/ thành int Khóa ngoại, tự động tăng nameWard Tên phường/ xã Varchar (64)
Thuộc tính Giải thích Kiểu dữ liệu Ghi chú userID Mã người dùng int Khóa chính, tự động tăng supplierName Tên nhà cung cấp Nvarchar (50) supplierAddress Địa chỉ nhà cung cấp
Nvarchar (50) supplierPhone SĐT nhà cung cấp Varchar (11) supplierEmail Email nhà cung cấp
Bảng 3.14: Bảng nhà cung cấp
: KẾT QUẢ TRIỂN KHAI HỆ THỐNG
Giao diện người dùng
Hình 4.2: Giao diện đăng ký tài khoản
Hình 4.3: Giao diện đăng nhập tài khoản
Giao diện Chi tiết sản phẩm
Hình 4.4: Giao diện Chi tiết sản phẩm
Hình 4.6: Giao diện Thanh toán
Hình 4.7: Giao diện Thanh toán thành công
Hình 4.8: Giao diện Tài khoản
Hình 4.9: Giao diện Đơn hàng
Hình 4.10: Giao diện Tìm kiếm
Giao diện Thông tin cá nhân
Hình 4.11: Giao diện thông tin cá nhân
Giao diện Danh sách địa chỉ
Hình 4.12: Giao diện Danh sách địa chỉ
Giao diện Cập nhật địa chỉ
Hình 4.13: Giao diện Cập nhật địa chỉ