You are on page 1of 131

BỘ GIÁO DỤC VÀ ĐÀO TẠO

TRƯỜNG ĐẠI HỌC NHA TRANG


KHOA CÔNG NGHỆ THÔNG TIN

ĐỒ ÁN TỐT NGHIỆP
XÂY DỰNG ỨNG DỤNG BÁN HÀNG ONLINE TRÊN ANDROID

Giảng viên hướng dẫn: TS. Phạm Thị Thu Thúy


Sinh viên thực hiện: Nguyễn Như Ý
Mã số sinh viên: 56131778

Khánh Hòa - 2018


TRƯỜNG ĐẠI HỌC NHA TRANG
KHOA CÔNG NGHỆ THÔNG TIN
BỘ MÔN HỆ THỐNG THÔNG TIN

TRANG BÌA

ĐỒ ÁN TỐT NGHIỆP
XÂY DỰNG ỨNG DỤNG BÁN HÀNG ONLINE TRÊN ANDROID

GVHD: TS. Phạm Thị Thu Thúy


SVTH: Nguyễn Như Ý
MSSV: 56131778

Khánh Hòa, tháng 06/2018


i
GIẤY QUYẾT ĐỊNH

ii
TRƯỜNG ĐẠI HỌC NHA TRANG
Khoa/viện:Khoa Công nghệ Thông tin
PHIẾU THEO DÕI TIẾN ĐỘ VÀ ĐÁNH GIÁ ĐỀ TÀI / KHÓA LUẬN TỐT
NGHIỆP
(Dùng cho CBHD và nộp cùng báo cáo ĐA/KLTN của sinh viên)

Tên đê tài: Xây dựng ứng dụng bán hàng online trên Android
Giảng viên hướng dẫn: TS. Phạm Thị Thu Thúy
Sinh viên được hướng dẫn: Nguyễn Như Ý MSSV: 56131778
Khóa: Khóa 56 Ngành: Công nghệ thông tin
Nhận xét
Lần KT Ngày Nội dung
của GVHD
1
2
3
4
Kiểm tra giữa tiến
độ của Trưởng BM
Đánh giá công việc
Ngày kiểm tra: hoàn thành:……%: Ký tên
……………...……… Được tiếp tục:  ……………….…….
Không tiếp tục: 
5
6
7
Nhận xét chung (sau khi sinh viên hoàn thành ĐA/KL):
…………………………………………………………………………………………
…………………………………………………………………………………….……
…………………………………………………………………………………………
Điểm hình thức:……/10 Điểm nội dung:......./10 Điểm tổng kết:………/10
Đồng ý cho sinh viên: Được bảo vệ:  Không được bảo vệ: 

Khánh Hòa, ngày…….tháng…….năm 2018


Cán bộ hướng dẫn
(Ký và ghi rõ họ tên)

iii
TRƯỜNG ĐẠI HỌC NHA TRANG
Khoa/Viện:……………………………….

PHIẾU CHẤM ĐIỂM ĐỒ ÁN/ KHÓA LUẬN TỐT NGHIỆP


(Dành cho cán bộ chấm phản biện)
1. Họ tên người chấm:…………………………………………………….
2. Sinh viên/ nhóm sinh viên thực hiện ĐA/KLTN (sĩ số trong nhóm:……….)
(1)…………………………………………………..MSSV: ...........................................
(2)…………………………………………………..MSSV: ...........................................
(3)…………………………………………………..MSSV: ...........................................
(4)…………………………………………………..MSSV: ...........................................
(5)…………………………………………………..MSSV: ...........................................
Lớp: 56-HTTT Ngành: Công nghệ thông tin
3. Tên đề tài...........................................................................................................................
....................................................................................................................................................
4. Nhận xét
- Hình thức: ....................................................................................................................
.........................................................................................................................................
.........................................................................................................................................
- Nội dung: …………………………………………………………………………….
……………………………………………….…………………………………………
………………………………………………………………….………………………
………………………………………………………………….………………………
…………………………………………………………………………………….……
…………………………………………………………………………………….……
…………………………………………………………………………………………
………….………………………………………………………………………………
………….………………………………………………………………………………
Điểm hình thức:……/10 Điểm nội dung:...../10 Điểm tổng kết:……/10
Đồng ý cho sinh viên: Được bảo vệ: Không được bảo vệ:
Khánh Hòa, ngày…….tháng………năm………..
Cán bộ chấm phản biện
(Ký và ghi rõ họ tên)

iv
TRƯỜNG ĐẠI HỌC NHA TRANG
Khoa/viện:……………………………….

PHIẾU CHẤM CỦA HỘI ĐỒNG BẢO VỆ ĐA/KLTN


(Dùng cho thành viên Hội đồng bảo vệ ĐA/KLTN)
1. Họ tên thành viên HĐ:
.......................................................................................................................
Chủ tịch: Thư ký: Ủy viên:
2. Tên đề tài ..................................................................................................................................
.......................................................................................................................................................
3. Họ tên sinh viên thực hiện:
(1)…………………………………………………………MSSV:................................
(2)…………………………………………………………MSSV:................................
(3)…………………………………………………………MSSV:................................
(4)…………………………………………………………MSSV:................................
(5)…………………………………………………………MSSV:................................
4. Phần đánh giá và cho điểm của thành viên hội đồng (theo thang điểm 10)
a) Hình thức, bố cục bài báo cáo (sạch, đẹp, cân đối giữa các phần,…) : ………
b) Nội dung bản báo cáo (thể hiện mục tiêu, kết quả,…) : ………
c) Trình bày (đầy đủ, ngắn gọn, lưu loát, không quá thời gian…) : ………
d) Trả lời các câu hỏi của người chấm (đúng/sai) : ………
e) Trả lời các câu hỏi của thành viên hội đồng (đúng/sai) : ………
f) Thái độ, cách ứng xử, mức độ tự tin : ……....
g) Nắm vững nội dung đề tài : ……....
h) Nắm vững những vấn đề liên quan đề tài :……….
i) Tính sáng tạo khoa học của sinh viên :……….
Tổng cộng : ……....
Điểm trung bình của các cột điểm trên:……./10 (làm tròn đến 1 số lẻ)

Cán bộ chấm điểm


(Ký và ghi rõ họ tên)

v
LỜI CAM ĐOAN
Tôi xin cam đoan đây là công trình nghiên cứu của riêng tôi và được sự hướng
dẫn khoa học của TS. Phạm Thị Thu Thúy. Các nội dung nghiên cứu, kết quả trong đề
tài này là trung thực và chưa công bố dưới bất kỳ hình thức nào trước đây. Mọi tham
khảo dùng trong luận văn đều được trích dẫn rõ ràng tên tác giả, tên công trình, thời
gian, địa điểm công bố.

Nếu phát hiện có bất kỳ sự gian lận nào tôi xin hoàn toàn chịu trách nhiệm về nội
dung của mình. Trường Đại học Nha Trang không liên quan đến những vi phạm tác
quyền, bản quyền do tôi gây ra trong quá trình thực hiện (nếu có).

vi
LỜI CẢM ƠN
Đầu tiên tôi xin cám ơn nhà trường đã tạo môi trường tốt nhất cho tôi có thể thuận
lợi nghiên cứu thực hiện đề tài. Tôi xin cám ơn thầy cô, cha mẹ và các bạn- những người
đã luôn bên cạnh tiếp thêm động lực để tôi có thể hoàn thành đề tài.

Tôi xin cám ơn tập thể 56TH2 (Lớp 56 Công nghệ thông tin 2 - Khoa Công nghệ
thông tin – Đại học Nha Trang) – một tập thể đã luôn cùng tôi trải qua những tháng
ngày sinh viên tươi đẹp, giúp tôi có những kỷ niệm đáng nhớ nhất.

Tôi xin chân thành cám ơn thầy cô Khoa Công nghệ thông tin – Trường Đại học
Nha Trang – những người đã dùng hết tâm huyết của để truyền tải những kiến thức quý
báu của nhân loại cho sinh viên chúng tôi trong thời gian học tập tại trường. Xin cảm ơn
quý thầy cô.

Tôi xin cảm ơn sâu sắc đến TS. Phạm Thị Thu Thúy – Giảng viên, Trưởng Khoa
Khoa Công nghệ thông tin – Trường Đại học Nha Trang – đã hỗ trợ và hướng dẫn tận
tình. Nhờ sự chỉ dẫn nhiệt tình của cô nên tôi mới có thể hoàn thành đề tài này. Một lần
nữa tôi xin chân thành cám ơn cô.

Với tấm lòng biết ơn sâu sắc một lần nữa tôi xin được tỏ lòng biết ơn chân thành
đến các thầy, các cô, bạn bè, cha mẹ, đã luôn động viên, thúc đẩy tôi. Tôi xin sẽ luôn cố
gắng học tập và làm việc hơn nữa để xứng đáng với những gì mà thầy cô và ba mẹ đã
kỳ vọng. Góp phần vào việc nâng cao uy tín, chất lượng của nhà trường.

Tôi xin chân thành cảm ơn tất cả!

Nha Trang, ngày 25 tháng 06 năm 2018

Nguyễn Như Ý

vii
TÓM TẮT ĐỒ ÁN
Với mức độ phức tạp và quy mô ứng dụng, cộng thêm vấn đề thời gian cho nên
đề tài “Xây dựng ứng dụng bán hàng online trên Android” chỉ dừng ở mức tìm hiểu lập
trình Mobile Application trên Android Studio, Web ASP.NET trên C#, SOAP Web
Services trên C#, cơ sở dữ liệu trên Microsoft Sql Server và áp dụng thực nghiệm xây
dựng ứng dụng bán hàng online trên Android.

Ứng dụng bán hàng online trên Android với mục đích cung cấp cho các nhà kinh
doanh công cụ để bán hàng, quảng bá thương hiệu của họ đến khắp mọi miền trên đất
nước, đồng thời giúp cho khách hàng của họ có thể chọn mua những sản phẩm đẹp, uy
tín và có giá cả hợp lý.

Do còn một số hạn chế nên ứng dụng chỉ dừng lại ở mức thanh toán trực tiếp
thông qua các nhà vận chuyển. Trong tương lai, hệ thống sẽ phát triển theo hướng thương
mại điện tử (với hình thức thanh toán qua thẻ tín dụng, tài khoản ngân hàng, thẻ mua
hàng trực tuyến).

viii
MỤC LỤC
TRANG BÌA.................................................................................................................... i

GIẤY QUYẾT ĐỊNH ..................................................................................................... ii

PHIẾU THEO DÕI TIẾN ĐỘ VÀ ĐÁNH GIÁ ĐỀ TÀI / KHÓA LUẬN TỐT
NGHIỆP......................................................................................................................... iii

PHIẾU CHẤM ĐIỂM ĐỒ ÁN/ KHÓA LUẬN TỐT NGHIỆP ................................... iv

PHIẾU CHẤM CỦA HỘI ĐỒNG BẢO VỆ ĐA/KLTN ................................................v

LỜI CAM ĐOAN .......................................................................................................... vi

LỜI CẢM ƠN ............................................................................................................... vii

TÓM TẮT ĐỒ ÁN ...................................................................................................... viii

MỤC LỤC ..................................................................................................................... ix

DANH SÁCH HÌNH .................................................................................................... xii

DANH SÁCH BẢNG BIỂU ...................................................................................... xvii

DANH SÁCH CÁC TỪ VIẾT TẮT ......................................................................... xviii

PHẦN MỞ ĐẦU .............................................................................................................1

CHƯƠNG 1. TỔNG QUAN VỀ ĐỀ TÀI .......................................................................2

Đặt vấn đề ..........................................................................................................2

Lý do chọn đề tài................................................................................................2

Xác định các yêu cầu của đề tài .........................................................................2

Phương pháp nghiên cứu ...................................................................................4

Ý nghĩa khoa học và thực tiễn ...........................................................................4

CHƯƠNG 2. CƠ SỞ LÝ THUYẾT VÀ CÁC CÔNG NGHỆ HỖ TRỢ .......................5

Sơ đồ Use case ...................................................................................................5

Máy chủ ảo VPS ................................................................................................6

Java và công cụ lập trình Android Studio ..........................................................7

SOAP Web Services và công cụ lập trình Microsoft Visual Studio................11

ix
Tổng quan SQL Server ....................................................................................15

Tổng quan GitHub ...........................................................................................16

CHƯƠNG 3. PHÂN TÍCH THIẾT KẾ HỆ THỐNG BÁN HÀNG .............................18

Phân tích theo sơ đồ Use Case .........................................................................18

Sơ đồ Use Case tổng quát ............................................................................18

Sơ đồ Use Case chi tiết ................................................................................19

Thiết kế cơ sở dữ liệu.......................................................................................28

Xây dựng các bảng dữ liệu...........................................................................28

Mô hình dữ liệu ............................................................................................36

CHƯƠNG 4. XÂY DỰNG HỆ THỐNG BÁN HÀNG ................................................37

Phần người dùng ..............................................................................................37

Xây dựng màn hình khởi động .....................................................................37

Xây dựng màn hình đăng ký, đăng nhập ......................................................39

Xây dựng màn hình trang chủ ......................................................................43

Xây dựng màn hình tìm kiếm........................................................................45

Xây dựng màn hình danh mục sản phẩm .....................................................47

Xây dựng màn hình danh sách sản phẩm ....................................................48

Xây dựng màn hình sản phẩm ......................................................................50

Xây dựng màn hình giảm giá .......................................................................54

Xây dựng màn hình giỏ hàng .......................................................................55

Xây dựng màn hình nhập thông tin người nhận hàng .................................56

Xây dựng màn hình chọn phương thức vận chuyển .....................................57

Xây dựng màn hình kết quả đặt hàng ..........................................................59

Xây dựng màn hình tài khoản ......................................................................60

Phần quản trị ....................................................................................................63

Xây dựng quản trị đăng nhập ......................................................................63

Xây dựng quản trị đơn hàng ........................................................................64


x
Xây dựng quản trị sản phẩm ........................................................................66

Xây dựng quản trị loại sản phẩm .................................................................68

Xây dựng quản trị ảnh trình chiếu ...............................................................70

Xây dựng quản trị thương hiệu ....................................................................72

Xây dựng quản trị giảm giá .........................................................................73

Xây dựng quản trị nhập hàng hóa ...............................................................76

Xây dựng quản trị kho hàng .........................................................................79

Xây dựng báo cáo doanh thu .......................................................................81

Xây dựng quản trị nhân viên ........................................................................82

CHƯƠNG 5. KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN TOÀN HỆ THỐNG.............85

Kết luận đồ án ..................................................................................................85

Kết quả đạt được ..........................................................................................85

Hạn chế tồn tại .............................................................................................86

Hướng phát triển ..............................................................................................86

DANH MỤC TÀI LIỆU THAM KHẢO ......................................................................87

PHỤ LỤC 1 CÁC TÀI KHOẢN QUẢN TRỊ MẶC ĐỊNH..........................................89

PHỤ LỤC 2 HƯỚNG DẪN CÀI ĐẶT .........................................................................90

PHỤ LỤC 3 HƯỚNG DẪN SỬ DỤNG .......................................................................91

xi
DANH SÁCH HÌNH
Hình 2.1 Amazon EC2.[1] ...............................................................................................6
Hình 2.2 Giao diện quản lý VPS trên Amazon.[3] ..........................................................7
Hình 2.3 Giao diện thiết lập mở port trên Amazon.[2] ...................................................7
Hình 2.4 Giao diện tạo một dự án mới. ...........................................................................8
Hình 2.5 Một số thư viện đã được thêm vào dự án. ........................................................9
Hình 2.6 Thiết kế giao diện bằng mã xml. ......................................................................9
Hình 2.7 Tương tác với giao diện màn hình bằng mã xử lý Java. ................................10
Hình 2.8 Giao diện cửa sổ Android Profiler..................................................................10
Hình 2.9 Giao diện phân tích mã xử lý trên cửa sổ Android Profiler. ..........................11
Hình 2.10 Giới thiệu Visual Studio. ..............................................................................12
Hình 2.11 Giao diện cửa sổ tạo một Web Service Application mới. ............................13
Hình 2.12 Mã tạo một WebMethod. ..............................................................................13
Hình 2.13 Mô tả cách thực thi một WebMethod. ..........................................................14
Hình 2.14 Thanh công cụ Debug. ..................................................................................14
Hình 2.15 Cửa sổ Diagnostic Tool. ...............................................................................15
Hình 2.16 Giới thiệu SQL Server. .................................................................................15
Hình 2.17 Giới thiệu GitHub. ........................................................................................16
Hình 3.1 Sơ đồ Use Case tổng quát của hệ thống. ........................................................18
Hình 3.2 Sơ đồ Use Case khách hàng quản lý sản phẩm. .............................................19
Hình 3.3 Sơ đồ Use Case khách hàng xem trang chủ. ..................................................20
Hình 3.4 Sơ đồ Use Case khách hàng xem danh mục sản phẩm...................................20
Hình 3.5 Sơ đồ Use Case khách hàng quản lý giỏ hàng................................................21
Hình 3.6 Sơ đồ Use Case khách hàng quản lý đơn hàng...............................................21
Hình 3.7 Sơ đồ Use Case người quản trị quản lý nhập hàng hóa. .................................22
Hình 3.8 Sơ đồ Use Case người quản trị quản lý sản phẩm. .........................................22
Hình 3.9 Sơ đồ Use Case người quản trị quản lý loại sản phẩm. ..................................23
Hình 3.10 Sơ đồ Use Case người quản trị quản lý ảnh trình chiếu. ..............................24
Hình 3.11 Sơ đồ Use Case người quản trị quản lý thương hiệu. ...................................24

xii
Hình 3.12 Sơ đồ Use Case người quản trị quản lý giảm giá. ........................................25
Hình 3.13 Sơ đồ Use Case người quản trị quản lý kho hàng. .......................................25
Hình 3.14 Sơ đồ Use Case người quản trị quản lý doanh thu. ......................................26
Hình 3.15 Sơ đồ Use Case người quản trị quản lý đơn hàng. .......................................26
Hình 3.16 Sơ đồ Use Case người quản trị quản lý nhân viên. ......................................27
Hình 3.17 Mô hình dữ liệu. ...........................................................................................36
Hình 4.1 Giao diện màn hình khởi động ứng dụng. ......................................................37
Hình 4.2 Mã xử lý C# lấy danh mục sản phẩm. ............................................................38
Hình 4.3 Mã xử lý ksoap2 trên Java giao tiếp với server. .............................................38
Hình 4.4 Mã xử lý lưu trữ dữ liệu và chuyển màn hình. ...............................................38
Hình 4.5 Giao diện màn hình đăng ký. ..........................................................................39
Hình 4.6 Mã xử lý C# thực hiện đăng ký tài khoản khách hàng mới. ..........................40
Hình 4.7 Mã xử lý Java kiểm tra và gửi dữ liệu lên server. ..........................................40
Hình 4.8 Nội dung bên trong luồng xử lý asynctask_dang_ky. ....................................41
Hình 4.9 Giao diện màn hình đăng nhập. ......................................................................41
Hình 4.10 Giao diện màn hình khôi phục mật khẩu. .....................................................42
Hình 4.11 Giao diện màn hình trang chủ. .....................................................................43
Hình 4.12 Mã xử lý Java thực thi lấy ảnh trình chiếu. ..................................................44
Hình 4.13 Mã xử lý Control ViewFlipper trên Java để hiển thị ảnh trình chiếu...........44
Hình 4.14 Mã xử lý Control Recyclerview trên Java. ...................................................45
Hình 4.15 Giao diện màn hình tìm kiếm. ......................................................................45
Hình 4.16 Mã xử lý Java kiểm tra thông tin tìm kiếm. .................................................46
Hình 4.17 Giao diện màn hình danh mục sản phẩm. ....................................................47
Hình 4.18 Mã xử lý Control GridView trên Java. .........................................................47
Hình 4.19 Giao diện mà hình danh sách sản phẩm. ......................................................48
Hình 4.20 Mã xử lý C# thực thi truy vấn lấy danh sách sản phẩm theo yêu cầu. .........49
Hình 4.21 Mã xử lý Control GridView trên Java. .........................................................49
Hình 4.22 Mã xử lý tạo Control Dialog và thiết lập sắp xếp trên Java. ........................50
Hình 4.23 Mã xử lý thu thập yêu cầu lấy danh sách sản phẩm trên java. .....................50
xiii
Hình 4.24 Giao diện màn hình sản phẩm. .....................................................................51
Hình 4.25 Mã xử lý Java trong luồng thực thi giao tiếp với server. .............................52
Hình 4.26 Mã xử lý Control ViewPager trên Java. .......................................................52
Hình 4.27 Mã xử lý tạo Control Dialog phong_to trên Java. ........................................52
Hình 4.28 Mã xử lý Java lấy nội dung ảnh từ Internet và hiển thị Dialog phong_to. ...52
Hình 4.29 Mã xử lý Java thực hiện chia sẻ sản phẩm. ..................................................53
Hình 4.30 Mã xử lý Control Recyclerview hiển trị đánh giá trên Java. ........................53
Hình 4.31 Giao diện màn hình giảm giá........................................................................54
Hình 4.32 Mã xử lý Java hiển thị từng chương trình giảm giá khi nhấp chọn..............54
Hình 4.33 Giao diện màn hình giỏ hàng........................................................................55
Hình 4.34 Mã xử lý Control Recyclerview hiển thị giỏ hàng trên Java. .......................56
Hình 4.35 Mã xử lý hiển thị cửa sổ nhập mã giảm giá trên Java. .................................56
Hình 4.36 Giao diện màn hình nhập thông tin người nhận hàng. .................................56
Hình 4.37 Giao diện màn hình chọn phương thức vận chuyển. ....................................57
Hình 4.38 Mã xử lý C# lấy danh sách phương thức vận chuyển. .................................58
Hình 4.39 Mã xử lý Java nhận về danh sách phương thức vận chuyển. .......................58
Hình 4.40 Mã xử lý Java hiển thị danh sách phương thức vận chuyển.........................58
Hình 4.41 Giao diện màn hình kết quả đặt hàng. ..........................................................59
Hình 4.42 Mã xử lý Java trong luồng xử lý gửi thông tin đơn hàng lên server. ...........59
Hình 4.43 Mã xử lý kiểm tra kết quả trả đặt hàng trên Java. ........................................60
Hình 4.44 Giao diện tab thông tin tài khoản. ................................................................60
Hình 4.45 Mã xử lý Java tạo luồng xử lý doi_mat_khau_nguoi. ..................................61
Hình 4.46 Giao diện tab đơn hàng của tôi. ....................................................................61
Hình 4.47 Mã xử lý Java hiển thị danh sách đơn hàng đã đặt. ......................................61
Hình 4.48 Mã xử lý Java hiển thị thông báo khi thao tác hủy đơn hàng. ......................62
Hình 4.49 Giao diện tab danh sách yêu thích. ...............................................................62
Hình 4.50 Mã xử lý Java hiển thị danh sách mong muốn. ............................................63
Hình 4.51 Giao diện trang đăng nhập quản trị. .............................................................63
Hình 4.52 Giao diện trang quản trị danh sách trạng thái đơn hàng. ..............................64
xiv
Hình 4.53 Giao diện trang quản trị danh sách đơn hàng. ..............................................64
Hình 4.54 Giao diện trang quản trị chi tiết đơn hàng. ...................................................65
Hình 4.55 Giao diện trang quản trị danh sách sản phẩm. ..............................................66
Hình 4.56 Giao diện trang quản trị cập nhật thông tín sản phẩm. .................................66
Hình 4.57 Giao diện trang chi tiết sản phẩm. ................................................................67
Hình 4.58 Giao diện trang danh sách ảnh của sản phẩm. ..............................................67
Hình 4.59 Giao diện trang thêm sản phẩm. ...................................................................68
Hình 4.60 Giao diện trang danh mục sản phẩm. ...........................................................68
Hình 4.61 Giao diện thêm danh mục sản phẩm. ...........................................................69
Hình 4.62 Giao diện sửa loại sản phẩm. ........................................................................69
Hình 4.63 Giao diện danh sách sản phẩm trong danh mục sản phẩm. ..........................70
Hình 4.64 Giao diện danh sách ảnh trình chiếu. ...........................................................70
Hình 4.65 Giao diện sửa ảnh trình chiếu. ......................................................................71
Hình 4.66 Giao diện trang thêm ảnh trình chiếu. ..........................................................71
Hình 4.67 Giao diện trang danh sách thương hiệu. .......................................................72
Hình 4.68 Giao diện trang sửa thương hiệu. .................................................................72
Hình 4.69 Giao diện trang thêm thương hiệu. ...............................................................73
Hình 4.70 Giao diện trang danh sách chương trình giảm giá. .......................................73
Hình 4.71 Giao diện trang thêm chương trình giảm giá................................................74
Hình 4.72 Giao diện trang cập nhật chương trình giảm giá. .........................................74
Hình 4.73 Giao diện danh sách sản phẩm của chương trình giảm giá. .........................75
Hình 4.74 Giao diện thêm sản phẩm vào chương trình giảm giá. .................................75
Hình 4.75 Giao diện trang sửa thông tin sản phẩm giảm giá. .......................................76
Hình 4.76 Giao diện trang danh sách phiếu nhập..........................................................76
Hình 4.77 Giao diện trang thêm phiếu nhập. ................................................................77
Hình 4.78 Giao diện trang sửa phiếu nhập. ...................................................................77
Hình 4.79 Giao diện trang danh sách sản phẩm trong phiếu nhập. ...............................78
Hình 4.80 Giao diện trang thêm sản phẩm vào phiếu nhập. .........................................78
Hình 4.81 Giao diện trang sửa thông tin sản phẩm trong phiếu nhập. ..........................79
xv
Hình 4.82 Giao diện trang danh sách kho hàng. ...........................................................79
Hình 4.83 Giao diện trang cập nhật thông tin kho hàng................................................80
Hình 4.84 Giao diện trang danh sách sản phẩm trong kho hàng. ..................................80
Hình 4.85 Giao diện trang thêm kho hàng. ...................................................................81
Hình 4.86 Giao diện trang báo cáo doanh thu. ..............................................................81
Hình 4.87 Giao diện trang in doanh thu. .......................................................................82
Hình 4.88 Mã xử lý hiển trị trang in doanh thu. ............................................................82
Hình 4.89 Giao diện trang danh sách nhân viên............................................................83
Hình 4.90 Giao diện trang cập nhật thông tin nhân viên. ..............................................83
Hình 4.91 Giao diện trang thêm nhân viên. ..................................................................84

xvi
DANH SÁCH BẢNG BIỂU
Bảng 3.1 Nội dung bảng khu_vuc. ................................................................................28
Bảng 3.2 Nội dung bảng loai_san_pham. ......................................................................28
Bảng 3.3 Nội dung bảng thuong_hieu. ..........................................................................28
Bảng 3.4 Nội dung bảng san_pham. ..............................................................................29
Bảng 3.5 Nội dung bảng danh_sach_anh_cua_san_pham. ...........................................29
Bảng 3.6 Nội dung bảng danh_sach_loai_san_pham_cua_san_pham. .........................29
Bảng 3.7 Nội dung bảng tinh_trang_nguoi ...................................................................30
Bảng 3.8 Nội dung bảng nguoi. .....................................................................................30
Bảng 3.9 Nội dung bảng kho_hang. ..............................................................................31
Bảng 3.10 Nội dung bảng chi_tiet_kho_hang. ..............................................................31
Bảng 3.11 Nội dung bảng phieu_nhap_hang_hoa.........................................................31
Bảng 3.12Nội dung bảng chi_tiet_phieu_nhap. ............................................................32
Bảng 3.13 Nội dung bảng giam_gia. .............................................................................32
Bảng 3.14 Nội dung bảng danh_sach_san_pham_giam_gia. ........................................32
Bảng 3.15 Nội dung bảng danh_sach_mong_muon. .....................................................33
Bảng 3.16 Nội dung bảng danh_gia. .............................................................................33
Bảng 3.17 Nội dung bảng phuong_thuc_van_chuyen...................................................33
Bảng 3.18 Nội dung bảng tinh_trang_don_hang...........................................................34
Bảng 3.19 Nội dung bảng don_hang. ............................................................................34
Bảng 3.20 Nội dung bảng chi_tiet_don_hang. ..............................................................35
Bảng 3.21 Nội dung table anh_trinh_chieu. ..................................................................35

xvii
DANH SÁCH CÁC TỪ VIẾT TẮT
C# C sharp

VPS Virtual Private Server

XML eXtensible Markup Language

IIS Internet Information Services

HDD Hard Disk Drive

SOAP Simple Object Access Protocol

CSDL Cơ sở dữ liệu

W3C World Wide Web Consortium

SQL Structured Query Language

CPU Central Processing Unit

RDBMS Relational Database Management System

SSH Secure Socket Shell

xviii
PHẦN MỞ ĐẦU
Ngày nay với sự phát triển của nền kinh tế, đời sống người dân ngày càng nâng
cao, nhu cầu mua bán của người dân ngày càng nhiều. Sự cạnh giữa các nhà cung cấp,
cửa hàng ngày càng trở nên gay gắt. Với mục đích đáp ứng nhu cầu của khách hàng,
cung cấp dịch vụ nhằm phát triển kinh doanh, hình thức bán hàng thông qua ứng dụng
tên thiết bị di động ngày càng trở nên phát triển, thu hút lượng khách lớn, phạm vi phục
vụ rộng rãi, hình thức quảng cáo đơn giản, tiện sử dụng, dễ dàng cập nhật thông tin và
có thể đáp ứng nhu cầu mua sắm của khách hàng vào bất cứ thời gian nào. Do vậy việc
xây dựng ứng dụng cho phép bán hàng trực tuyến trên điện thoại di động sử dụng hệ
điều hành Android là điều rất cần thiết.

Nội dung chính của bài báo gồm 5 chương:

Chương 1. Tổng quan đề tài

Bước đầu tiên để thực hiện đề tài đó là ta phải hiểu rõ về đề tài, do vậy chương
này sẽ trình bày những nội dung cần thiết để làm rõ đề tài.

Chương 2 Cơ sở lý thuyết và các công nghệ hỗ trợ

Trình bày lý thuyết cơ bản và các ngôn ngữ lập trình, các công hỗ trợ và các công
nghệ cần thiết để sử dụng xây dựng hệ thống.

Chương 3 Phân tích thiết kế hệ thống bán hàng

Trình bày sơ đồ Use Case tổng quát, sơ đồ Use Case chi tiết từng chức năng, mô
hình dữ liệu tổng quát và nội dung các bảng trong cơ sở dữ liệu.

Chương 4 Xây dựng hệ thống bán hàng

Trình bày chi tiết nội dung xây dựng hệ thống từ phần người dùng đến phần quản
trị hệ thống.

Chương 5 Kết luận và hướng phát triển toàn hệ thống

Trình bày kết quả đạt được sau khi triển khai thành công hệ thống và hướng phát
triển sau này.

1
CHƯƠNG 1. TỔNG QUAN VỀ ĐỀ TÀI
Trong bất kỳ một đề tài nào thì việc đầu tiên luôn là làm rõ đề tài, chương này sẽ
trình bày những nội dung cơ bản và cần thiết nhất để làm rõ những vấn đề liên quan đến
đề tài. Các nội dung chính được trình bày bao gồm đặt vấn đề, lý do chọn đề tài, xác
định yêu cầu của đề tài, phương pháp nghiên cứu, ý nghĩa khoa học và thực tiễn.

Đặt vấn đề


Trong lĩnh vực bán hàng, nhờ ứng dụng của Công nghệ thông tin mà nhiều
phương pháp bán hàng mới được ra đời. Trong số các phương pháp mới đó, bán hàng
trực tuyến thông qua điện thoại thông minh là phương pháp nổi trội hơn cả. Bán hàng
trực tuyến thông qua điện thoại thông minh – nhà bán hàng có thể nhanh chóng quảng
bá thương hiệu, chất lượng, uy tín của mình đến khắp mọi miền đất nước và bán các mặt
hàng đã nhập về, đồng thời người mua cũng dễ dàng tìm, mua những sản phẩm ưa thích
mà không cần bước chân ra khỏi nhà. Chính những lợi ích to lớn mà phương pháp này
mang lại nên nhiều nhà bàn hàng trực tuyến đã ra đời, họ thường sử dụng mạng xã hội
Facebook để bán hàng nên chưa có sự hợp lý và chặt chẽ, vì họ thường quản lý hàng
trăm sản phẩm, đơn hàng và ghi chép lại bằng tay, bằng sổ sách rất cực nhọc và tốn rất
nhiều thời gian. Chính vì thế vấn đề đặt ra là cần phải có một hệ thống bán hàng trực
tuyến mà nhà bán hàng có thể dễ dàng quản lý một cách chặt chẽ và nhanh chóng.

Lý do chọn đề tài


Vì thấy sự cần thiết phải sử dụng điện thoại thông minh để bán hàng và được sự
hướng dẫn của TS. Phạm Thị Thu Thúy, em đã chọn đề tài: “Xây dựng ứng dụng bán
hàng online trên Android” làm đề tài cho đồ án tốt nghiệp của mình.

Xác định các yêu cầu của đề tài


- Tìm hiểu cách xây dựng một vps (máy chủ ảo) lưu trữ Web Services, trang web quản
trị và cơ sở dữ liệu.
- Tìm hiểu cách phân tích thiết kế hệ thống bán hàng online đơn giản để xây dựng cơ
sở dữ liệu, xây dựng Web Services và các chức năng của ứng dụng.
- Tìm hiểu cơ bản lập trình ứng dụng trên Android.
- Tìm hiểu cơ bản lập trình cho SOAP Web Services trên Asp.net C#.

2
- Tìm hiểu cách hoạt động của các Control (là các thành phần như EditText và Button
được khai báo trong tập giao tin giao diện màn mình xml) trong Android Studio và các
Control bên ngoài do người phát triển biên soạn để xây dựng giao điện.
- Tìm hiểu cách sử dụng xml để quản lý các Control sao cho Control có sự sắp xếp,
lồng ghép hợp lý để tạo nên giao diện của ứng dụng thân thiện với người dùng.
- Tìm hiểu cách sử dụng java để tương tác với giao diện xml, giao tiếp với SOAP Web
Services để trao đổi dữ liệu.
- Tìm hiểu cách sử dụng dữ liệu dạng json để trao đổi dữ liệu giữa các màn hình và
giữa ứng dụng với Web Services.
- Nghiên cứu cách sử dụng Github để lưu trữ source code của ứng dụng.
- Tạo máy chủ ảo và cài Internet Information Services (IIS).
- Mở port cho vps để trở thành thành vps hositng.
- Thiết kế cơ sở dữ liệu và tạo lập dữ liệu demo lưu trữ trên phần mềm Microsoft Sql
Server.
- Thiết kế và cài đặt SOAP Web Services trên môi trường Asp.Net C#.
- Sử dụng Android Studio thiết kế giao diện cho ứng dụng bán hàng online bằng ngôn
ngữ xml.
- Sử dụng Android Studio làm công cụ để lập trình và kết nối với SOAP Web Services
cho ứng dụng bán hàng online bằng ngôn ngữ lập trình java.
- Xây dựng hệ thống bán hàng với các chức năng chính:

 Hiển thị các loại sản phẩm và các sản phẩm đang bán.
 Hỗ trợ khách hàng tìm kiếm, sắp xếp các sản phẩm.
 Hỗ trợ giá sản sản phẩm cho khách hàng bằng chương trình giảm giá.
 Hỗ trợ khách hàng tự quản lý thông tin tài khoản, các đơn hàng họ đã đặt, danh sách
sản phẩm họ mong muốn.
 Hiển thị chi tiết sản phẩm và cho phép khách hàng gửi đánh giá về sản phẩm.
 Hỗ trợ khách hàng chọn sản phẩm, áp dụng mã giảm giá, chọn địa chỉ giao hàng,
chọn phương thức vận chuyển và đặt hàng nhanh chóng.
 Cho phép khách hàng hủy đơn hàng trong một số trường hợp.
 Hỗ trợ người quản trị hệ thống quản lý đơn hàng, sản phẩm, loại sản phẩm, ảnh quảng
cáo, thương hiệu, chương trình giảm giá, nhập hàng hóa, kho hàng và báo cáo doanh
thu.

3
- Sử dụng GitHub làm kho lưu trữ source code của ứng dụng.

Phương pháp nghiên cứu


- Một số phương pháp nghiên cứu đã sử dụng trong quá trình xây dựng đề tài:

 Phương pháp nghiên cứu thực tiễn: bằng quan sát, điều tra và thực nghiệm từ một số
ứng dụng bán hàng hiện có trên kho ứng dụng CHPLAY của GOOGLE.
 Phương pháp nghiên cứu lý thuyết: bằng cách xem và thu thập thông tin từ những đề
tài bán hàng khác trên thư viện, trên internet.

Ý nghĩa khoa học và thực tiễn


Trong nền kinh tế hiện nay, khi đề tài triển khai và được đưa vào sửa dụng có thể
giúp hàng triệu nhà bán hàng tiếp cận được với nhiều khách hàng hơn, nâng cao nhất
lượng bán hàng, tăng nhanh doanh số bán hàng, góp phần vào xây dựng nền kinh tế và
quá trình công nghiệp hóa hiện đại hóa của đất nước.

4
CHƯƠNG 2. CƠ SỞ LÝ THUYẾT VÀ CÁC CÔNG NGHỆ HỖ TRỢ
Trong một đề tài tốt nghiệp hay một dự án thực tế từ khách hàng, thì việc xác
định rõ những lý thuyết cần thiết và các công nghệ hỗ trợ cho phép thực hiện đề tài là
một điều rất quan trọng. Chương này sẽ trình bày những nội dung chính bao gồm lý
thuyết và các công nghệ, công cụ liên quan để có thể thực hiện đề tài.

Sơ đồ Use case
Use Case là gì?

Use case là một kỹ thuật được dùng trong kỹ thuật phần mềm và hệ thống để nắm
bắt yêu cầu chức năng của hệ thống. Use case mô tả sự tương tác đặc trưng giữa người
dùng bên ngoài (actor) và hệ thống. Nó thể hiện ứng xử của hệ thống đối với bên ngoài,
trong một hoàn cảnh nhất định, xét từ quan điểm của người sử dụng. Nó mô tả các yêu
cầu đối với hệ thống, có nghĩa là những gì hệ thống phải làm chứ không phải mô tả hệ
thống làm như thế nào. Tập hợp tất cả Use case của hệ thống sẽ mô tả tất cả các trường
hợp mà hệ thống có thể được sử dụng.[15]

- Giữa các Actor và Use Case trong biểu đồ Use Case có các kiểu mối quan hệ khác
nhau.

Quan hệ giao tiếp (Association) giữa Actor và Use Case: cho biết có một kết
hợp giữa một Actor và một Use Case. Nghĩa là con người hoặc hệ thống, trong vai trò
Actor này, sẽ giao tiếp với các thể hiện của Use Case, tham gia chuỗi các sự kiện được
Use Case biểu diễn. Use Case được cài đặt thành một vài Module chương trình và các
Actor sẽ sử dụng chương trình này bằng cách nhập thông tin vào, nhận thông tin ra. Một
Actor có thể được kết hợp với một hoặc nhiều Use Case và một Use Case có thể được
kết hợp với một hoặc nhiều Actor. Quan hệ giao tiếp giữa Actor và Use Case biểu diễn
bởi mũi tên hay đường thẳng nối Actor với Use Case.

Quan hệ bao gồm (Include) giữa các Use Case: đôi khi một Use Case có các
tính năng của một Use Case khác, khi đó tồn tại quan hệ Include (bao gồm) giữa chúng.
Quan hệ Include được vẽ bằng một mũi tên đứt nét hướng đến Use Case thứ hai, kèm
theo từ «include» đặt bên cạnh mũi tên. Điều này tránh được tình trạng cùng một chuỗi
hành động lại định nghĩa trong nhiều Use Case. Use case bao gồm sẽ tiếp tục chuỗi hành
động tại điểm mà nó Include, sau đó quay lại và tiếp tục quá trình tạm dừng trước đó.

5
Quan hệ mở rộng (Extend) giữa các Use Case: trong khi quan hệ Include là quan
hệ Use Case này chứa Use Case khác, thì quan hệ Extend là quan hệ mở rộng một Use
Case. Trong một điều kiện nào đó, một Use Case cần được mở rộng bằng một Use Case
khác, nghĩa là nếu điều kiện thỏa mãn thì Use Case mở rộng mới thực hiện. Quan hệ
được vẽ bằng một mũi tên đứt nét hướng đến Use Case được mở rộng và từ «extend»
được đặt bên cạnh mũi tên.

Máy chủ ảo VPS


Máy chủ ảo VPS là gì?

VPS (Virtual Private Server) là dạng máy chủ ảo được tạo ra bằng phương pháp
phân chia một máy chủ vật lý thành nhiều máy chủ khác nhau có tính năng tương tự như
máy chủ riêng (dedicated server), chạy dưới dạng chia sẻ tài nguyên từ máy chủ vật lý
ban đầu đó. Mỗi VPS là một hệ thống hoàn toàn riêng biệt, có một phần CPU riêng,
dung lượng RAM riêng, dung lượng ổ HDD riêng, địa chỉ IP riêng và hệ điều hành riêng,
người dùng có toàn quyền quản lý root và có thể restart lại hệ thống bất cứ lúc nào.[13]

Xây dựng và cấu hình VPS trên Amazon

Hình 2.1 Amazon EC2.[1]

Truy cập vào trang web https://aws.amazon.com/ec2/?nc2=h_ls xem hướng


dẫn và tiến hành thực hiện đăng ký để nhận miễn phí dùng thử VPS trong một năm.

6
Hình 2.2 Giao diện quản lý VPS trên Amazon.[3]

Hình 2.2 mô tả kết quả sau khi tạo tài khoản và VPS thành công.

Hình 2.3 Giao diện thiết lập mở port trên Amazon.[2]

Hình 2.3 mô tả kết quả sau các thiết lập cần thiết để mở port cho VPS, cần phải
cài đặt Internet Information Services (IIS) và Microsoft Sql Server lên VPS thì VPS mới
thực sự trở thành webhosting.

Java và công cụ lập trình Android Studio


Java là gì?

Java là một Ngôn ngữ lập trình và là một Platform.

Ngôn ngữ lập trình: Java là một ngôn ngữ lập trình được kế thừa trực tiếp từ
C/C++ và là một ngôn ngữ lập trình hướng đối tượng.

Platform: Bất cứ môi trường phần cứng hoặc phần mền nào mà trong đó một
chương trình chạy, thì được biết đến như là một Platform. Với môi trường runtime riêng
cho mình là JRE và API, Java được gọi là Platform.[11]

7
Android Studio là gì?

Android Studio là một phần mềm bao gồm các bộ công cụ khác nhau, dùng để
phát triển ứng dụng chạy trên thiết bị sử dụng hệ điều hành Android, như các loại điện
thoại smartphone. Android Studio được đóng gói với một bộ code editor, debugger, các
công cụ performance tool và một hệ thống build/deploy (trong đó có trình giả lập
simulator để giả lập môi trường của thiết bị điện thoại trên máy tính) cho phép các lập
trình viên có thể nhanh chóng phát triển các ứng dụng từ đơn giản tới phức tạp. [14]

Tạo một dự án mới

Hình 2.4 Giao diện tạo một dự án mới.

Android Studio hỗ trợ tốt nhất người dùng dễ dàng tạo một dự án mới, trong quá
trình tạo Android Studio cho phép người dùng chọn các thiết lập cần thiết như chọn
phiên bản của hệ điều hành Android mà ứng dụng sẽ chạy, chọn các giao diện mặc định
được thiết lập sẵn hay tự thiết lập.

8
Bổ sung thư viện cho dự án

Hình 2.5 Một số thư viện đã được thêm vào dự án.

Một dự án Android luôn sử dụng các thư viện ngoài để giảm thiểu thời gian
coding cũng như chi phí phát triển, đảm bảo tính tái sử dụng. Việc thêm thư viện hay
một module vào dự án Android hiện nay là không khó và cực kỳ dễ dàng khi Gradle
được tích hợp sử dụng trong một dự án Android. Để hiểu rõ hơn, chúng ta sẽ tạo một
project Android. Mặc định, chúng ta sẽ có một file app/build.gradle khi project được tạo
ra. Gradle cung cấp một số cách để khai báo sử dụng thư viện bên thứ 3. Tuy nhiên cách
thông thường và hay được sử dụng là dạng 'group:name:version'. Ở các phiên bản gradle
trước thì chúng ta sẽ sử dụng từ khóa compile, với phiên bản mới chúng ta sử dụng từ
khóa implementation.[8]

Xây dựng giao diện xml

Hình 2.6 Thiết kế giao diện bằng mã xml.

Giao diện màn hình của ứng dụng được thiết kế và lưu trữ dưới dạng file xml,
trong file xml này là sự bố trí các Control theo một trật tự nhất định. Android Studio hỗ
trợ người dùng xây dựng giao diện, cho phép người dùng thiết kế giao diện dưới dạng
9
kéo và thả các Control hoặc viết code bố trí các Control trực tiếp lên file giao diện xml.
Trên mỗi Control có thuộc tính ID, lập trình viên sẽ sử dụng ID đó để viết code java
tương tác, điều khiển Control.

Tương tác với giao diện bằng ngôn ngữ lập trình java
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
public class MainActivity extends AppCompatActivity {
TextView TVHT;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TVHT = (TextView) findViewById(R.id. TVHT) ;
TVHT.setText("Nguyễn Như Ý");
}

Hình 2.7 Tương tác với giao diện màn hình bằng mã xử lý Java.

Sử dụng đoạn mã setContentView(R.layout.activity_main); để chọn giao diện


xml cần tương tác.

Để liên kết Control trong giao diện với code xử lý trong java, sử dụng phương
thức findViewById.

Để điều khiển Control trong giao diện để hiển thị chuỗi “Nguyễn Như Ý”, sử
dụng phương thức setText.

Kiểm tra và xác định lỗi tiềm ẩn memory leak

Hình 2.8 Giao diện cửa sổ Android Profiler.

Android Studio cho phép lập trình viên mở của sổ Android Profiler để xem phần
trăm CPU, dung lượng băng thông internet, dung lượng bộ nhớ RAM mà app đang sử
dụng trên điện thoại di động, nhờ đó dễ dàng phát hiện những lỗi tiềm ẩn.

10
Hình 2.9 Giao diện phân tích mã xử lý trên cửa sổ Android Profiler.

Android Studio có khả năng cho phép lập trình viên chụp lại một khoản thời gian
mà app sử dụng bộ nhớ RAM trên điện thoại di động, rồi phân tích những đoạn mã xử
lý nào đang thực thi, đang chiếm dung lượng bộ nhớ RAM để tiến hành kiểm tra và khắc
phục. Đây là công cụ mạnh nhất mà Google đã tích hợp vào Android Studio giúp lập
trình viên xử lý lỗi memory leak.

SOAP Web Services và công cụ lập trình Microsoft Visual Studio


Tổng quan Web Services

Theo định nghĩa của W3C (World Wide Web Consortium), Web service là một
hệ thống phần mềm được thiết kế để hỗ trợ khả năng tương tác giữa các ứng dụng trên
các máy tính khác nhau trong môi trường Internet thông qua các giao diện (Interface)
chung và sự gắn kết được mô tả bằng XML.[7]

Web service là tài nguyên phần mềm có thể xác định bằng địa chỉ url để thực
hiện các chức năng và đưa thông tin ra cho người dùng

Web service được tạo ra bằng cách lấy các chức năng và đóng gói chúng sao cho
các ứng dụng khác dễ dàng tìm thấy và truy cập tới các dịch vụ mà nó cung cấp, đồng
thời vẫn có thể yêu cầu thông tin từ các dịch vụ khác.

Ứng dụng cơ bản của Web service là tích hợp các hệ thống và là một trong những
hoạt động chính khi phát triển hệ thống. Trong hệ thống này, các ứng dụng cần được
tích hợp với cơ sở dữ liệu (CSDL) và các ứng dụng khác, người sử dụng sẽ giao tiếp với
CSDL để tiến hành phân tích và lấy dữ liệu.
11
Giao thức truyền thông điệp SOAP

SOAP viết tắt cho cụm từ - Simple Object Access Protocol. Trong kiến trúc phân
tầng của Web Service, SOAP nằm ở tầng Packaging, SOAP là một giao thức đóng gói
cho các dữ liệu chia sẻ giữa các ứng dụng. Xét về cơ bản, SOAP là XML, chính vì thế
SOAP là một ứng dụng cụ thể của XML. SOAP được xây dựng lên từ các chuẩn XML
như XML Schema và XML Namespaces dùng cho việc định nghĩa SOAP và các chức
năng của nó.[10]

Xây dựng SOAP Web Services trên ASP.NET C# bằng công cụ lập trình Visual
studio

Microsoft Visual Studio 2015 là một môi trường phát triển tích hợp từ Microsoft.
Nó được sử dụng để phát triển chương trình máy tính cho Microsoft Windows, cũng
như các trang web, các ứng dụng web và các dịch vụ web. Visual Studio sử dụng nền
tảng phát triển phần mềm của Microsoft như Windows API, Windows Forms, Windows
Presentation Foundation, Windows Store và Microsoft Silverlight.[14]

Hình 2.10 Giới thiệu Visual Studio.

Microsoft Visual Studio bao gồm một trình soạn thảo mã hỗ trợ IntelliSense cũng
như cải tiến mã nguồn. Trình gỡ lỗi tích hợp hoạt động cả về trình gỡ lỗi mức độ mã
nguồn và gỡ lỗi mức độ máy. Công cụ tích hợp khác bao gồm một mẫu thiết kế các hình
thức xây dựng giao diện ứng dụng, thiết kế web, thiết kế lớp và thiết kế giản đồ cơ sở
dữ liệu. Nó chấp nhận các plug-in nâng cao các chức năng ở hầu hết các cấp bao gồm
thêm hỗ trợ cho các hệ thống quản lý phiên bản (như Subversion) và bổ sung thêm bộ

12
công cụ mới như biên tập và thiết kế trực quan cho các miền ngôn ngữ cụ thể hoặc bộ
công cụ dành cho các khía cạnh khác trong quy trình phát triển phần mềm.

Hình 2.11 Giao diện cửa sổ tạo một Web Service Application mới.

Microsoft Visual Studio hỗ trợ mạnh mẽ cho lập trình viên xây dựng Web
Service, hình 2.11 mô tả việc tạo một dự án ASP.NET Web Service Application trên
Microsoft Visual Studio.

Thao tác với Web Service

Xây dựng một phép tính thông qua Web Service ASP.Net, viết chương trình tính
tổng của hai số nguyên. Trong file Service1.asmx.cs khai báo một hàm tính tổng hai số
nguyên như sau:

[WebMethod]
public int TongHaiSoNguyen(int a, int b)
{
return (a + b);
}

Hình 2.12 Mã tạo một WebMethod.

Hình 2.12 mô tả một phương thức cho phép nhập vào hai số a và b, sau đó trả về
kết quả tổng của a + b.

13
Hình 2.13 Mô tả cách thực thi một WebMethod.

Khi tiến hành chạy chương trình trên trình duyệt, sẽ nhìn thấy giao diện giống
như hình 2.13, tiến hành chọn và thao tác với phương thức “TongHaiSoNguyen” để thực
hiện tính tổng hai số nguyên.[10]

Kiểm tra và xác định lỗi

Debug trong Visual Studio cho phép chạy chương trình theo từng bước để xem
sự thay đổi giá trị của biến, trả về của hàm qua đó phát hiện những lỗi logic trong chương
trình.

Một số thành phần cơ bản: Breakpoints là điểm mà chương trình sẽ dừng lại để
cho phép bạn chạy từng bước các dòng code, các cửa sổ theo dõi biến hỗ trợ lập trình
viên theo dõi sự thay đổi của biến hoặc hàm cho mỗi bước chạy và nếu một biến có sự
thay đổi giá trị thì sẽ có màu đỏ để phân biệt, thanh công cụ Debug cung cấp các nút
lệnh để bạn thực hiện Debug chương trình, cửa sổ Call Stack chứa lời gọi hàm trong
ngăn xếp, cửa sổ Diagnostic Tool chứa các công cụ chẩn đoán nâng cao như cung cấp
biểu đồ thời gian thực bộ nhớ và CPU mà chương trình sử dụng. [9]

Hình 2.14 Thanh công cụ Debug.

14
Hình 2.15 Cửa sổ Diagnostic Tool.

Tổng quan SQL Server

Hình 2.16 Giới thiệu SQL Server.

SQL Server là gì?

SQL Server là một hệ quản trị cơ sở dữ liệu quan hệ (Relational Database


Management System (RDBMS) ) sử dụng câu lệnh SQL (Transact-SQL) để trao đổi dữ

15
liệu giữa máy Client và máy cài SQL Server. Một RDBMS bao gồm databases, database
engine và các ứng dụng dùng để quản lý dữ liệu và các bộ phận khác nhau trong
RDBMS.[6]

SQL Server được tối ưu để có thể chạy trên môi trường cơ sở dữ liệu rất lớn
(Very Large Database Environment) lên đến Tera-Byte và có thể phục vụ cùng lúc cho
hàng ngàn user. SQL Server có thể kết hợp “ăn ý” với các server khác như Microsoft
Internet Information Server (IIS), E-Commerce Server, Proxy Server.

Các thành phần cơ bản trong SQL Server

SQL Server được cấu tạo bởi nhiều thành phần như Database Engine, Reporting
Services, Notification Services, Integration Services, Full Text Search Service. Các
thành phần này khi phối hợp với nhau tạo thành một giải pháp hoàn chỉnh giúp cho việc
lưu trữ và phân tích dữ liệu một cách dễ dàng.

Tổng quan GitHub

Hình 2.17 Giới thiệu GitHub.

GitHub là gì?

GitHub là một dịch vụ cung cấp kho lưu trữ mã nguồn Git dựa trên nền web cho
các dự án phát triển phần mềm. GitHub cung cấp cả phiên bản trả tiền lẫn miễn phí cho
các tài khoản. Các dự án mã nguồn mở sẽ được cung cấp kho lưu trữ miễn phí.[12]

Cách thức làm việc với GitHub

Làm việc với GitHub nói riêng hay hệ thống GIT nói chung có 2 workflow chính
là local workflow và server workflow.

16
Bạn có thể làm mọi chuyện thay đổi source code ở local, sau khi đã thay đổi
xong, bạn sẽ commit những thay đổi đó lên server và bản lên server phải là bản hoàn
chỉnh một tính năng nào đó, hoặc sửa lỗi bug xong, kiểm xong hoặc ít nhất bản đó phải
chạy được. Không được commit code dở dang, chưa qua kiểm tra lên repository server
sẽ làm ảnh hưởng đến các thành viên khác, ngược lại bạn có thể làm điều đó ở repository
local.

17
CHƯƠNG 3. PHÂN TÍCH THIẾT KẾ HỆ THỐNG BÁN HÀNG
Phân tích thiết kế hệ thống là bước quan trọng hàng đầu trong việc xây dựng một
hệ thống, trong chương này sẽ trình bày nội dung phân tích hệ thống bán hàng trên
Android theo sơ đồ Use Case và thiết kế cơ sở dữ liệu.

Phân tích theo sơ đồ Use Case


Sơ đồ Use Case tổng quát
Sơ đồ Use Case tổng quát mô tả hệ thống. Hệ thống cơ bản được chia làm hai
phần: phần khách hàng và phần người quản trị hệ thống.

Hình 3.1 Sơ đồ Use Case tổng quát của hệ thống.

Khách hàng có thể thực hiện các chức năng xem trang chủ, cập nhật thông tin tài
khoản, xem danh mục sản phẩm, quản lý giỏ hàng, quản lý đơn hàng, quản lý sản phẩm,
xem chương trình giảm giá, đăng ký, khôi phục mật khẩu.

Người quản trị có thể thực hiện các chức năng quản lý nhập hàng hóa, quản lý
sản phẩm, quản lý loại sản phẩm, quản lý ảnh trình chiếu, quản lý thương hiệu, quản lý
giảm giá, quản lý kho hàng, báo cáo doanh thu, quản lý đơn hàng, quản lý nhân viên.

18
Sơ đồ Use Case chi tiết
- Khách hàng quản lý sản phẩm

Hình 3.2 Sơ đồ Use Case khách hàng quản lý sản phẩm.

Khách hàng quản lý sản phẩm extend các chức năng quản lý danh sách mong
muốn, tìm kiếm sản phẩm và xem danh sách sản phẩm.

Quản lý danh sách mong muốn extend các chức năng thêm và xóa sản phẩm trong
danh sách mong muốn.

Xem danh sách sản phẩm extend chức năng xem chi tiết sản phẩm.

Tìm kiếm sản phẩm extend các chức năng tìm theo thương hiệu, tìm theo tên sản
phẩm, tìm theo giá sản phẩm, tìm theo loại sản phẩm, tìm theo trung bình số sao đánh
giá.

19
- Khách hàng xem trang chủ

Hình 3.3 Sơ đồ Use Case khách hàng xem trang chủ.

Khách hàng xem trang chủ include các chức năng xem ảnh trình chiếu, xem đánh
giá, xem thương hiệu tốt nhất, xem danh mục ưa thích, xem sản phẩm năm sao ưa thích.

- Khách hàng xem danh mục sản phẩm

Hình 3.4 Sơ đồ Use Case khách hàng xem danh mục sản phẩm.

Khách hàng xem danh mục sản phẩm extend các chức năng xem 200 danh mục
có sản phẩm được mua nhiều nhất và xem danh mục cấp không.

Chức năng xem danh mục cấp không include xem danh mục cấp một và xem
thương hiệu được mua nhiều nhất.

Chức năng xem danh mục cấp một include chức năng xem danh mục cấp hai.

20
- Khách hàng quản lý giỏ hàng

Hình 3.5 Sơ đồ Use Case khách hàng quản lý giỏ hàng.

Khách hàng quản lý giỏ hàng extend các chức năng thêm sản phẩm, xóa sản
phẩm, tăng số lượng sản phẩm, giảm số lượng sản phẩm, áp dụng mã giảm giá cho sản
phẩm, hủy mã giảm giá cho sản phẩm trong giỏ hàng.

- Khách hàng quản lý đơn hàng

Hình 3.6 Sơ đồ Use Case khách hàng quản lý đơn hàng.

Khách hàng quản lý đơn hàng extend các chức năng tạo đơn hàng hoặc xem danh
sách đơn hàng.

Tạo đơn hàng include nhập địa chỉ giao hàng, nhập địa chỉ giao hàng include
chọn phương thức vận chuyển.

Xem danh sách đơn hàng extend chọn đơn hàng, chọn đơn hàng include hủy đơn
hàng và xem chi tiết đơn hàng.

21
- Người quản trị quản lý nhập hàng hóa

Hình 3.7 Sơ đồ Use Case người quản trị quản lý nhập hàng hóa.

Người quản trị quản lý nhập hàng hóa extend tạo phiếu nhập và xem danh sách
phiếu nhập.

Xem danh sách phiếu nhập extend chọn phiếu nhập. Chọn phiếu nhập extend sửa
phiếu nhập, xóa hiếu nhập, chọn sản phẩm thêm vào phiếu nhập, xem danh sách số
lượng sản phẩm trong mỗi phiếu nhập, sửa sản phẩm trong phiếu nhập, xóa sản phẩm
trong phiếu nhập.

- Người quản trị quản lý sản phẩm

Hình 3.8 Sơ đồ Use Case người quản trị quản lý sản phẩm.

Người quản trị quản lý sản phẩm extend thêm sản phẩm, xem danh sách sản
phẩm.
22
Xem danh sách sản phẩm extend chọn sản phẩm. Chọn sản phẩm extend sửa sản
phẩm, xóa sản phẩm, thêm ảnh sản phẩm và xem danh sách ảnh của sản phẩm.

Xem danh sách ảnh của sản phẩm extend xóa ảnh và sửa ảnh.

- Người quản trị quản lý loại sản phẩm

Hình 3.9 Sơ đồ Use Case người quản trị quản lý loại sản phẩm.

Người quản trị quản lý loại sản phẩm extend thêm loại sản phẩm và xem danh
sách loại sản phẩm.

Xem danh sách loại sản phẩm extend xóa loại sản phẩm và chọn loại sản phẩm.
Chọn loại sản phẩm extend sửa loại sản phẩm, thêm sản phẩm vào danh sách và xem
danh sách sản phẩm của loại sản phẩm.

Xem danh sách sản phẩm của loại sản phẩm extend thêm sản phẩm vào danh sách
và xóa sản phẩm trong danh sách.

23
- Người quản trị quản lý ảnh trình chiếu

Hình 3.10 Sơ đồ Use Case người quản trị quản lý ảnh trình chiếu.

Người quản trị quản lý ảnh trình chiếu extend thêm ảnh trình chiếu và xem danh
sách ảnh trình chiếu. Xem danh sách ảnh trình chiếu extend xóa ảnh trình chiếu và sửa
ảnh trình chiếu.

- Người quản trị quản lý thương hiệu

Hình 3.11 Sơ đồ Use Case người quản trị quản lý thương hiệu.

Người quản trị quản lý thương hiệu extend xem danh sách thương hiệu và thêm
thương hiệu.
Xem danh sách thương hiệu extend sửa và xóa thương hiệu.

24
- Người quản trị quản lý giảm giá

Hình 3.12 Sơ đồ Use Case người quản trị quản lý giảm giá.

Người quản trị quản lý chương trình giảm giá extend thêm chương trình giảm giá
và xem danh sách chương trình giảm giá.

Xem danh sách chương trình giảm giá xóa chương trình giảm giá và chọn chương
trình giảm giá. Chọn chương trình giảm giá extend sửa chương trình giảm giá và xem
danh sách sản phẩm trong chương trình giảm giá.

xem danh sách sản phẩm trong chương trình giảm giá extend thêm, xóa, sửa sản
phẩm trong chương trình giảm giá.

- Người quản trị quản lý kho hàng

Hình 3.13 Sơ đồ Use Case người quản trị quản lý kho hàng.

25
Người quản trị quản lý kho hàng extend thêm kho hàng và xem danh sách kho
hàng.

Xem danh sách kho hàng extend sửa kho hàng, xóa kho hàng và xem danh sách
số lượng sản phẩm trong kho.

- Người quản trị quản lý doanh thu

Hình 3.14 Sơ đồ Use Case người quản trị quản lý doanh thu.

Người quản trị quản lý doanh thu extend chọn khoản thời gian. Chọn khoản thời
gian extend hiển thị doanh thu.

- Người quản trị quản lý đơn hàng

Hình 3.15 Sơ đồ Use Case người quản trị quản lý đơn hàng.

26
Người quản trị quản lý đơn hàng extend xem danh sách trạng thái đơn hàng. Xem
danh sách trạng thái đơn hàng extend chọn trạng thái đơn hàng. Chọn trạng thái đơn
hàng extend xem danh sách đơn hàng. Xem danh sách đơn hàng extend chọn đơn hàng.

Chọn đơn hàng extend xem chi tiết đơn hàng, in hóa đơn, cập nhật trạng thái đơn
hàng.

Cập nhật trạng thái đơn hàng extend xác nhận đơn hàng, hủy đơn hàng, xác nhận
đã thanh toán.

- Người quản trị quản lý nhân viên

Hình 3.16 Sơ đồ Use Case người quản trị quản lý nhân viên.

Người quản trị quản lý nhân viên extend thêm nhân viên, cập nhật thông tin nhân
viên, xóa nhân viên.

27
Thiết kế cơ sở dữ liệu
Xây dựng các bảng dữ liệu
 Bảng khu_vuc

Bảng 3.1 Nội dung bảng khu_vuc.

Thuộc tính Ý nghĩa Kiểu dữ liệu


id_khu_vuc Id khu vực int
ma_khu_vuc Mã khu vực int
ten_khu_vuc Tên khu vực nvarchar(50)
loai_khu_vuc Loại khu vực(Tỉnh/Huyện) nvarchar(10)
id_khu_vuc_cha Id khu vực cha int

 Bảng loai_san_pham

Bảng 3.2 Nội dung bảng loai_san_pham.

Thuộc tính Ý nghĩa Kiểu dữ liệu


id_loai_san_pham Id loại sản phẩm int
ten_loai_san_pham Tên loại sản phẩm nvarchar(50)
anh_loai_san_pham Đường dẫn ảnh nvarchar(100)
bieu_tuong_loai_san_pham Mã unicode biểu tượng nvarchar(10)
cap_do_loai_san_pham Cấp loại sản phẩm int
id_cha_loai_san_pham Id loại sản phẩm cha int

 Bảng thuong_hieu

Bảng 3.3 Nội dung bảng thuong_hieu.

Thuộc tính Ý nghĩa Kiểu dữ liệu


id_thuong_hieu Id thương hiệu int
ten_thuong_hieu Tên thương hiệu nvarchar(50)
anh_thuong_hieu Đường dẫn ảnh nvarchar(100)

28
 Bảng san_pham

Bảng 3.4 Nội dung bảng san_pham.

Thuộc tính Ý nghĩa Kiểu dữ liệu


id_san_pham Id sản phẩm int
id_thuong_hieu Id thương hiệu int
ten_san_pham Tên sản phẩm nvarchar(50)
anh_san_pham Đường dẫn ảnh nvarchar(100)
gia_cao Giá cao money
gia_ban_ra Giá bán ra money
gia_nhap_san_pham Giá lúc nhập về money
mo_ta_san_pham Mã html mô tả chi tiết sản phẩm nvarchar(1000)
dac_tinh_san_pham Mã html mô tả đặc tính sản phẩm nvarchar(1000)
khoi_luong_san_pham Khối lượng sản phẩm int
da_co_vat Đã có VAT hay chưa bit
ngay_cap_nhat Ngày cập nhật sản phẩm datetime

 Bảng danh_sach_anh_cua_san_pham

Bảng 3.5 Nội dung bảng danh_sach_anh_cua_san_pham.

Thuộc tính Ý nghĩa Kiểu dữ liệu


id_anh Id ảnh int
id_san_pham Id sản phẩm int
duong_link_anh Đường dẫn ảnh nvarchar(100)

 Bảng danh_sach_loai_san_pham_cua_san_pham

Bảng 3.6 Nội dung bảng danh_sach_loai_san_pham_cua_san_pham.

Thuộc tính Ý nghĩa Kiểu dữ liệu


id_san_pham Id sản phẩm int
id_loai_san_pham Id loại sản phẩm int

29
 Bảng tinh_trang_nguoi

Bảng 3.7 Nội dung bảng tinh_trang_nguoi

Thuộc tính Ý nghĩa Kiểu dữ liệu


id_tinh_trang_nguoi Id tình trạng người int
ten_tinh_trang Tên tình trạng người nvarchar(50)

 Bảng nguoi

Bảng 3.8 Nội dung bảng nguoi.

Thuộc tính Ý nghĩa Kiểu dữ liệu


id_nguoi Id người int
id_tinh_trang_nguoi Id tình trạng người int
email_nguoi Địa chỉ email varchar(50)
mat_khau_nguoi Mật khẩu varchar(30)
ten_nguoi Họ và tên nvarchar(50)
ngay_sinh Ngày sinh datetime
dia_chi_nguoi Địa chỉ nvarchar(100)
sdt_nguoi Số điện thoại varchar(15)
gioi_tinh_nguoi Giới tính bit
ngay_tao_nguoi Ngày tạo datetime
Phân biệt khách hàng, nhân viên, người
la_nhan_vien int
quản trị

30
 Bảng kho_hang

Bảng 3.9 Nội dung bảng kho_hang.

Thuộc tính Ý nghĩa Kiểu dữ liệu


id_kho_hang Id kho hàng int
id_khu_vuc Id khu vực (huyện) int
ten_kho_hang Tên kho nvarchar(50)
dia_chi_kho_hang_chi_tiet số nhà, tên đường, xã nvarchar(50)
dien_tich_kho Diện tích kho int
ngay_tao_kho Ngày tạo kho datetime
ghi_chu_kho Ghi chú nvarchar(100)

 Bảng chi_tiet_kho_hang

Bảng 3.10 Nội dung bảng chi_tiet_kho_hang.

Thuộc tính Ý nghĩa Kiểu dữ liệu


id_kho_hang Id kho hàng int
id_san_pham Id sản phẩm int
so_luong Số lượng sản phẩm int
ngay_nhap_vao_kho Ngày nhập vào kho datetime

 Bảng phieu_nhap_hang_hoa

Bảng 3.11 Nội dung bảng phieu_nhap_hang_hoa.

Thuộc tính Ý nghĩa Kiểu dữ liệu


id_phieu_nhap Id phiếu nhập int
id_kho_hang Id kho nhập vào int
id_nguoi Id người (nhân viên nhập) int
ngay_tao_phieu Ngày tạo phiếu nhập datetime
mo_ta_nguon_nhap Mô tả nguồn nhập nvarchar(300)

31
 Bảng chi_tiet_phieu_nhap

Bảng 3.12Nội dung bảng chi_tiet_phieu_nhap.

Thuộc tính Ý nghĩa Kiểu dữ liệu


id_phieu_nhap Id phiếu nhập int
id_san_pham Id sản phẩm int
so_luong_nhap Số lượng sản phẩm int

 Bảng giam_gia

Bảng 3.13 Nội dung bảng giam_gia.

Thuộc tính Ý nghĩa Kiểu dữ liệu


id_giam_gia Id giảm giá int
ma_giam_gia Mã giảm giá varchar(5)
ten_giam_gia Tên giảm giá nvarchar(50)
ly_do_giam_gia Lý do giảm giá nvarchar(100)
thoi_diem_bat_dau_giam_gia Thời điểm bắt đầu giảm giá datetime
thoi_diem_ket_thuc_giam_gia Thời điểm kết thúc giảm giá datetime

 Bảng danh_sach_san_pham_giam_gia

Bảng 3.14 Nội dung bảng danh_sach_san_pham_giam_gia.

Thuộc tính Ý nghĩa Kiểu dữ liệu


id_san_pham id sản phẩm áp dụng int
id_giam_gia id giảm giá int
phan_tram_giam Phần trăm giảm float
giam_toi_da Số tiền giảm tối đa money

32
 Bảng danh_sach_mong_muon

Bảng 3.15 Nội dung bảng danh_sach_mong_muon.

Thuộc tính Ý nghĩa Kiểu dữ liệu


id_san_pham Id sản phẩm int
id_nguoi Id người int

 Bảng danh_gia

Bảng 3.16 Nội dung bảng danh_gia.

Thuộc tính Ý nghĩa Kiểu dữ liệu


id_danh_gia Id đánh giá int
id_san_pham Id sản phẩm int
id_nguoi Id khách hàng int
da_mua Đã mua hay chưa bit
tieu_de_danh_gia Tiêu đề đánh giá nvarchar(50)
so_sao_danh_gia Số sao đánh giá int
noi_dung Nội dung đánh giá nvarchar(300)
ngay_viet_danh_gia Ngày viết đánh giá datetime

 Bảng phuong_thuc_van_chuyen

Bảng 3.17 Nội dung bảng phuong_thuc_van_chuyen.

Thuộc tính Ý nghĩa Kiểu dữ liệu


id_ptvc Id phương thức vận chuyển int
ten_ptvc Tên phương thức vận chuyển nvarchar(50)
ngay_cap_nhat Ngày cập nhật datetime

33
 Bảng tinh_trang_don_hang

Bảng 3.18 Nội dung bảng tinh_trang_don_hang.

Thuộc tính Ý nghĩa Kiểu dữ liệu


id_ttdh Id trạng thái đơn hàng int
ten_ttdh Tên trạng thái đơn hàng nvarchar(50)

 Bảng don_hang

Bảng 3.19 Nội dung bảng don_hang.

Thuộc tính Ý nghĩa Kiểu dữ liệu


id_don_hang Id đơn hàng int
id_nguoi Id người đặt int
id_ttdh Id trạng thái đơn hàng int
id_ptvc Id phương thức vận chuyển int
id_khu_vuc Id khu vực int
ma_van_chuyen Mã vận chuyển varchar(10)
phi_van_chuyen Phí vận chuyển money
phi_thu_ho Phí thu hộ money
tong_tien Tổng tiền thanh toán money
ngay_tao_don_hang Ngày tạo đơn hàng datetime
ngay_xac_nhan_don_hang_thanh_cong Ngày xác nhận thành công datetime
đơn hàng
so_ngay_giao_gan_nhat Số ngày dự kiến giao gần float
nhất
so_ngay_giao_xa_nhat Số ngày dự kiến giao xa float
nhất
dia_chi_nhan_hang_chi_tiet số nhà, tên đường, xã nvarchar(50)

34
 Bảng chi_tiet_don_hang

Bảng 3.20 Nội dung bảng chi_tiet_don_hang.

Thuộc tính Ý nghĩa Kiểu dữ liệu


id_don_hang Id đơn hàng int
id_san_pham Id sản phẩm int
ma_giam_gia Mã giảm giá varchar(5)
so_luong Số lượng mua int
gia_san_pham Giá sản phẩm bán ra money
gia_da_giam Giá sau khi giảm money

 Bảng anh_trinh_chieu

Bảng 3.21 Nội dung table anh_trinh_chieu.

Thuộc tính Ý nghĩa Kiểu dữ liệu


id_anh Id ảnh int
duong_link_anh Đường dẫn ảnh nvarchar(100)

35
Mô hình dữ liệu
loai_san_pham danh_sach_san_pham_giam_gia
id_loai_san_pham
anh_trinh_chieu danh_sach_loai_san_pham_cua_san_pham id_san_pham
id_anh id_san_pham ten_loai_san_pham id_giam_gia
duong_link_anh id_loai_san_pham anh_loai_san_pham phan_tram_giam
bieu_tuong_loai_san_pham giam_toi_da
cap_do_loai_san_pham
phieu_nhap_hang_hoa id_cha_loai_san_pham
id_phieu_nhap san_pham tinh_trang_nguoi
id_kho_hang id_san_pham id_tinh_trang_nguoi
id_nguoi id_thuong_hieu ten_tinh_trang
chi_tiet_kho_hang
ngay_tao_phieu ten_san_pham
id_kho_hang
mo_ta_nguon_nhap anh_san_pham
id_san_pham
gia_cao thuong_hieu
so_luong id_thuong_hieu
gia_ban_ra
ngay_nhap_vao_kho ten_thuong_hieu
gia_nhap_san_pham
anh_thuong_hieu
mo_ta_san_pham_html
chi_tiet_phieu_nhap
id_phieu_nhap dac_tinh_san_pham

id_san_pham khoi_luong_san_pham_gram

so_luong_nhap da_co_vat
ngay_cap_nhat

kho_hang danh_sach_mong_muon
id_kho_hang id_san_pham
id_khu_vuc id_nguoi
ten_kho_hang
phuong_thuc_van_chuyen nguoi
dia_chi_kho_hang_chi_tiet id_ptvc id_nguoi
tinh_trang_don_hang
dien_tich_kho ten_ptvc id_tinh_trang_nguoi id_ttdh
ngay_tao_kho ngay_cap_nhat email_nguoi ten_ttdh
ghi_chu_kho mat_khau_nguoi
ten_nguoi
ngay_sinh

giam_gia don_hang dia_chi_nguoi


id_don_hang
id_giam_gia sdt_nguoi chi_tiet_don_hang
id_nguoi id_don_hang
ma_giam_gia gioi_tinh_nguoi
id_ttdh id_san_pham
ten_giam_gia ngay_tao_nguoi
id_ptvc ma_giam_gia
ly_do_giam_gia la_nhan_vien
id_khu_vuc so_luong
thoi_diem_bat_dau_giam_gia
ma_van_chuyen gia_san_pham
thoi_diem_ket_thuc_giam_gia
phi_van_chuyen gia_da_giam
phi_thu_ho
khu_vuc tong_tien danh_gia
id_danh_gia
id_khu_vuc ngay_tao_don_hang danh_sach_anh_cua_san_pham
ma_khu_vuc id_san_pham id_anh
ngay_xac_nhan_don_hang_than...
ten_khu_vuc id_nguoi id_san_pham
so_ngay_giao_gan_nhat
loai_khu_vuc da_mua duong_link_anh
so_ngay_giao_xa_nhat
id_khu_vuc_cha tieu_de_danh_gia
dia_chi_nhan_hang_chi_tiet
so_sao_danh_gia
noi_dung
ngay_viet_danh_gia

Hình 3.17 Mô hình dữ liệu.

36
CHƯƠNG 4. XÂY DỰNG HỆ THỐNG BÁN HÀNG
Hệ thống bán hàng trên điện thoại Android bao bồm hai phần chính là phần người
dùng trên điện thoại và phần quản trị trên web.

Phần người dùng


Để thu hút được người dùng, ứng dụng trên điện thoại phải có giao diện bắt mắt
và thân thiện với người dùng.

Phần này sử dụng công cụ lập trình Android Studio, ngôn ngữ lập trình giao diện
cho từng màn hình là Xml và ngôn ngữ lập trình để xử lý là Java.

Trong phần này sẽ trình bày nội dung xây dựng các màn hình, từ việc bố trí giao
diện đến xử lý chức năng.

Xây dựng màn hình khởi động


Giao diện Xml của màn hình khởi động bao gồm các Control cơ bản như
LinearLayout và ImageView. ImageView được thiết lập Animation để tự xoay khi đang
tải dữ liệu.

Layout nói chung là thành phần định nghĩa cấu trúc giao diện người dùng hay nói
cách khác là thành phần quyết định đến giao diện của một màn hình trong ứng dụng
Android. Ở màn hình này Layout chính được sử dụng là LinearLayout.

Hình 4.1 Giao diện màn hình khởi động ứng dụng.

37
 Chức năng: tạo ra thời gian chờ cho ứng dụng lấy dữ liệu danh mục sản phẩm từ
server.
 Mô tả: khi khởi chạy màn hình khởi động, logo sẽ thực hiện việc xoay tròn cho đến
khi lấy thành công dữ liệu danh mục sản phẩm.
 Code xử lý trên server

connect connect = new connect();


SqlDataAdapter adap = new SqlDataAdapter("proc_danh_sach_loai_san_pham_cap_0 ",
connect.getconnect());
DataTable ds = new DataTable();
adap.Fill(ds);

Hình 4.2 Mã xử lý C# lấy danh mục sản phẩm.

Hình 4.2 mô tả việc sử dụng thủ tục lưu trữ để lấy danh mục cấp không.

 Code xử lý trên Android Studio


SoapObject requests = new SoapObject(thiet_lap_server.NAME_SPACE, Method_DN);
if(PARAM_DN != null)
requests.addProperty(PARAM_DN, input);
SoapSerializationEnvelope envelope = new
SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet=true;
envelope.setOutputSoapObject(requests);
HttpTransportSE httpTransportSE = new
HttpTransportSE(thiet_lap_server.SERVER_URL);
httpTransportSE.call(thiet_lap_server.NAME_SPACE+Method_DN, envelope);
SoapPrimitive data = (SoapPrimitive) envelope.getResponse();
return data.toString();

Hình 4.3 Mã xử lý ksoap2 trên Java giao tiếp với server.

Hình 4.3 mô tả việc sử dụng thư viện ksoap2 Android Studio để trao đổi dữ liệu
với server.
SharedPreferences.Editor sua=Luu_tru.edit();
sua.putString("menu", s);
sua.commit();
Intent intent = new Intent(mang_hinh_splash.this,dang_ki_dang_nhap.class);
startActivity(intent);
finish();

Hình 4.4 Mã xử lý lưu trữ dữ liệu và chuyển màn hình.

Hình 4.4 mô tả việc sau khi lấy dữ liệu danh mục sản phẩm thành công, hệ thống
sẽ lưu trữ và chuyển sang màn hình đăng ký, đăng nhập.

38
Xây dựng màn hình đăng ký, đăng nhập
Giao diện đăng ký và đăng nhập được xây dựng trên cùng một file xml, bố trí các
Control LinearLayout, TextView để tạo tab chuyển đổi giữa đăng ký và đăng nhập khi
nhấn chọn từng tab trên màn hình điện thoại.

Sử dụng các Control TextInputLayout, EditText, RadioGroup để bố trí các trường


cho phép nhập dữ liệu.

- Màn hình đăng ký

Hình 4.5 Giao diện màn hình đăng ký.

 Chức năng: cho phép khách hàng tạo tài khoản truy cập vào ứng dụng.
 Mô tả: khách hàng nhập các thông tin cần thiết như tên, địa chỉ email, mật khẩu, chọn
giới tính, chọn ngày sinh, nhập địa chỉ, nhập số điện thoại. Email dùng để đăng nhập
vào ứng dụng, đồng thời cũng dùng email để khôi phục mật khẩu trong trường hợp khách
hàng quên mất mật khẩu của mình.
 Code xử lý trên server

39
if (kiem_tra_email_ton_tai(nguoi_dang_ki.getemail_nguoi()) == false)
{
int id_tinh_trang_nguoi = 11111;
bool la_nhan_vien = false;
var info = TimeZoneInfo.FindSystemTimeZoneById("SE Asia Standard Time");
DateTimeOffset localServerTime = DateTimeOffset.Now;
DateTimeOffset localTime = TimeZoneInfo.ConvertTime(localServerTime, info);
//time hien tai localTime.DateTime.ToString()
//return localTime.DateTime.ToString();
//1.id
int id_nguoi = khoi_tao_id_nguoi();
nguoi_them(id_nguoi, 11111, nguoi_dang_ki.getemail_nguoi(),
nguoi_dang_ki.getmat_khau_nguoi(),
nguoi_dang_ki.getten_nguoi(), nguoi_dang_ki.getngay_sinh(),
nguoi_dang_ki.getdia_chi_nguoi(),
nguoi_dang_ki.getsdt_nguoi(), nguoi_dang_ki.getgioi_tinh_nguoi(),
localTime.DateTime.ToString(), false);
if (kiem_tra_email_ton_tai(nguoi_dang_ki.getemail_nguoi()) == true)
return new thong_bao(true,"Xin chúc mừng! Đăng kí thành công! Vui lòng đăng
nhập lại!", new System.Dynamic.ExpandoObject()).ParserJSon();
else return new thong_bao(false, "đăng kí không thành công, thử lại sau", new
System.Dynamic.ExpandoObject()).ParserJSon(); ;
}
else return new thong_bao(false, "đăng kí không thành công, email đã tồn tại!", new
System.Dynamic.ExpandoObject()).ParserJSon(); ;

Hình 4.6 Mã xử lý C# thực hiện đăng ký tài khoản khách hàng mới.

Hình 4.6 mô tả công việc kiểm tra dữ liệu đăng ký của khách hàng, sử dụng thủ
tục lưu trữ để tạo tài khoản cho khách hàng và thông báo kết quả trả về cho ứng dụng.

 Code xử lý đăng ký trong Android Studio


if(kiem_tra_du_lieu()==true)
{
boolean gioi_tinh;
if(rb_gioi_tinh_nam.isChecked()==true) gioi_tinh=true;
else gioi_tinh=false;
nguoi nguoi = new nguoi(
et_dia_chi_mail.getText().toString(),
ma_hoa.ma_hoa(et_mat_khau.getText().toString()),
et_ho_ten.getText().toString(),
et_ngay_sinh.getText().toString(),
et_dia_chi.getText().toString(),
et_sdt.getText().toString(),
gioi_tinh
);
new asynctask_dang_ky("dang_ky_nguoi_dung", "json")
.execute(gson.toJson(nguoi));
}

Hình 4.7 Mã xử lý Java kiểm tra và gửi dữ liệu lên server.

Hình 4.7 mô tả công việc kiểm tra tính hợp lệ của dữ liệu mà khách hàng đăng
ký, rồi gửi lên server thông qua luồng xử lý asynctask_dang_ky.

40
protected String doInBackground(String... strings) {
if(!isConnected()||isFinishing()) cancel(true);
try{
String input=strings[0];
SoapObject requests = new SoapObject(thiet_lap_server.NAME_SPACE,
Method_DN);
if(PARAM_DN != null)
requests.addProperty(PARAM_DN, input);
SoapSerializationEnvelope envelope = new
SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet=true;
envelope.setOutputSoapObject(requests);
HttpTransportSE httpTransportSE = new
HttpTransportSE(thiet_lap_server.SERVER_URL);
httpTransportSE.call(thiet_lap_server.NAME_SPACE+Method_DN, envelope);
SoapPrimitive data = (SoapPrimitive) envelope.getResponse();
if(!isConnected()||isFinishing()) cancel(true);
return data.toString();
}
catch (Exception ex)
{
Log.e("loi",ex.toString());
}
return null;
}

Hình 4.8 Nội dung bên trong luồng xử lý asynctask_dang_ky.

Hình 4.8 mô tả việc sử dụng thư viện ksoap2 Android Studio để giao tiếp với
server.

- Màn hình đăng nhập

Hình 4.9 Giao diện màn hình đăng nhập.

41
 Chức năng: cho phép khách hàng sử dụng tài khoản của họ truy cập vào ứng dụng,
khôi phục mật khẩu trong trường hợp khách hàng quên, đồng thời sau khi tắt ứng dụng
và truy cập lại trạng thái đã đăng nhập vẫn được lưu trữ lại.
 Mô tả: thông qua những chức năng cần thiết nêu trên, sẽ giúp khách hàng có thể thuận
lợi đăng nhập vào ứng dụng mà không bị trở ngại nào.

- Màn hình khôi phục mật khẩu

Hình 4.10 Giao diện màn hình khôi phục mật khẩu.

 Chức năng: cho phép khách hàng sử dụng email của họ để khôi phục mật khẩu trong
trường hợp họ quên mất mật khẩu.
 Mô tả: khi nhập email và nhấp vào nút khôi phục mật khẩu, khách hàng phải truy
cập vào email và lấy mã khôi phục từ một địa chỉ email khác gửi đến.

42
Xây dựng màn hình trang chủ
Các thành phần chính trong giao diện màn hình trang chủ bao gồm Control
NestedScrollView để làm khung chứa cho phép cuộn, ViewFlipper để hiển thị ảnh trình
chiếu, các RecyclerView để hiển thị các danh sách.

Hình 4.11 Giao diện màn hình trang chủ.

 Chức năng: hiển thị ảnh trình chiếu, chương trình giảm giá, các thương hiệu tốt nhất,
các danh mục ưa thích, các sản phẩm ưa thích, đồng thời có thể tương tác với từng các
mục để xem chi tiết bên trong.

43
 Mô tả: giúp khách hàng có cái nhìn tổng quan về ứng dụng, để biết có chương trình
giảm giá đang diễn ra, danh mục sản phẩm nào được yêu thích, thương hiệu nào được
nhiều người đánh giá cao, sản phẩm nào có nhiều người ưa chuộng.
 Code xử lý trong Android Studio
String input = strings[0];
SoapObject requests = new SoapObject(thiet_lap_server.NAME_SPACE, Method_DN);
if (PARAM_DN != null)
requests.addProperty(PARAM_DN, input);
SoapSerializationEnvelope envelope = new
SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet = true;
envelope.setOutputSoapObject(requests);
HttpTransportSE httpTransportSE = new
HttpTransportSE(thiet_lap_server.SERVER_URL);
httpTransportSE.call(thiet_lap_server.NAME_SPACE + Method_DN, envelope);
SoapPrimitive data = (SoapPrimitive) envelope.getResponse();
anh_trinh_chieu[] ds_ctgg_tmp = gson.fromJson(data.toString(),
anh_trinh_chieu[].class);
ArrayList<anh_trinh_chieu> dsctgg = new
ArrayList<anh_trinh_chieu>(Arrays.asList(ds_ctgg_tmp));
if(!isConnected()||isFinishing()) cancel(true);
return dsctgg;

Hình 4.12 Mã xử lý Java thực thi lấy ảnh trình chiếu.

Hình 4.12 mô tả việc sử dụng thư viện ksoap2 Android Studio để giao tiếp với
server và lấy dữ liệu dạng string về, sau đó chuyển về dạng dữ liệu ArrayList.
viewFlipper.setFlipInterval(5000);
viewFlipper.setAutoStart(true);
Animation animation_slide_in =
AnimationUtils.loadAnimation(getApplicationContext(), R.anim.slide_in_right);
Animation animation_slide_out =
AnimationUtils.loadAnimation(getApplicationContext(), R.anim.slide_out_right);
viewFlipper.setInAnimation(animation_slide_in);
viewFlipper.setOutAnimation(animation_slide_out);
for(int i = 0; i < dsctgg.size(); i++)
{
ImageView imageView = new ImageView(getApplicationContext());

Picasso.with(getApplicationContext()).load(dsctgg.get(i).getLink()).fit().into(im
ageView);
imageView.setScaleType(ImageView.ScaleType.FIT_XY);
viewFlipper.addView(imageView);
}

Hình 4.13 Mã xử lý Control ViewFlipper trên Java để hiển thị ảnh trình chiếu.

Hình 4.13 mô tả việc thiết lập các thuộc tính, animation cho viewFlipper, đồng
thời sử dụng thư viện Picasso để lấy dữ liệu hình ảnh từ internet về và đưa vào
viewFlipper để trình chiếu.

44
bcdDongMhTrangChuNtkhl = new bcd_dong_mh_trang_chu_ntkh(this,ds_ctgg);
RV_ntkh.addItemDecoration(new tao_khoang_trong_doc(3));
RV_ntkh.setHasFixedSize(true);
RV_ntkh.setLayoutManager(new LinearLayoutManager(this,
LinearLayoutManager.VERTICAL, false));
RV_ntkh.setAdapter(bcdDongMhTrangChuNtkhl);
RV_ntkh.setNestedScrollingEnabled(false);
thiet_lap_thoi_gian(ds_ct_gg.get(0).getThoi_diem_bat_dau_giam_gia(),
ds_ct_gg.get(0).getThoi_diem_ket_thuc_giam_gia());

Hình 4.14 Mã xử lý Control Recyclerview trên Java.

Hình 4.14 mô tả việc thiết lập dữ liệu và xử lý hiển thị chương trình giảm giá.
Các thành phần khác của Màn hình như “Thương hiệu tốt nhất”, ”Danh mục ưa
thích”, “Top sản phẩm yêu thích năm sao” cũng được xây dựng tương tự như các mã
xử lý trong hình 4.14.

Xây dựng màn hình tìm kiếm


Các Control chính được sử dụng trong màn hình tìm kiếm là Toolbar, EditText,
TextView, TagContainerLayout. Vì TagContainerLayout không có sẵn trong Android
Studio nên phải thêm thư viện co.lujun:androidtagview vào để có thể sử dụng Control
TagContainerLayout. Control TagContainerLayout được sử dụng để hiển thị lịch sử tìm
kiếm.

Hình 4.15 Giao diện màn hình tìm kiếm.

 Chức năng: cho phép khách hàng tìm kiếm sản phẩm theo từ khóa nhập vào, đồng
thời có thể xem hoặc xóa các từ khóa đã tìm kiếm trước đó.

45
 Mô tả: việc nhập từ khóa để tìm kiếm cho phép khách hàng có thể tự do tương tác với
hệ thống một cách tốt nhất, đồng thời hệ thống cũng lưu lại lịch sử tìm kiếm giúp cho
khách hàng có thể dễ dàng sử dụng lại từ khóa tìm kiếm trước đó của họ.
 Code xử lý trong Android Studio
if(et_nd_tk.getText().toString().trim()!=null&&et_nd_tk.getText().toString().trim
()!=""&&
et_nd_tk.getText().toString().trim().length()!=0){
TCL_lstk.addTag(et_nd_tk.getText().toString());
ds_ls_tk.add(new tag(et_nd_tk.getText().toString()));
SharedPreferences.Editor sua=Luu_tru.edit();
sua.putString("lich_su_tim_kiem", gson.toJson(ds_ls_tk));
sua.commit();
//chuyển trang
Intent intent = new Intent(mang_hinh_tim_kiem.this,
mang_hinh_ds_san_pham.class);
yeu_cau yeu_cau = new tao_yeu_cau().getYeu_cau();
yeu_cau.getBo_loc().setTim_kiem(et_nd_tk.getText().toString());
intent.putExtra("yeu_cau",gson.toJson(yeu_cau));
startActivity(intent);
}

Hình 4.16 Mã xử lý Java kiểm tra thông tin tìm kiếm.

Hình 4.16 mô tả việc kiểm tra tính hợp lệ của từ khóa tìm kiếm, nếu hợp lệ hệ
thống sẽ lưu lại đồng thời gửi thông tin tìm kiếm sang màn hình danh sách sản phẩm để
xử lý.

46
Xây dựng màn hình danh mục sản phẩm
Các Control chính được sử dụng trong màn hình danh mục sản phẩm là ListView,
ExpandableListView. ListView được sử dụng để hiển thị danh mục cấp không nằm dọc
bên trái, ExpandableListView để hiển thị thương hiệu, danh mục cấp một và danh mục
cấp hai.

Hình 4.17 Giao diện màn hình danh mục sản phẩm.

 Chức năng: hiển thị và cho phép chọn các danh mục sản phẩm theo từng nhóm.
 Mô tả: Khách hàng có thể chọn các danh mục từ trái sang phải để xem các thương
hiệu và danh mục nhỏ hơn.
 Code xử lý trong Android Studio
bcd_dmn_cdcb = new
bcd_dong_menu_cdcb(this,danh_sach_lsp_c0.get(0).getDanh_sach_chi_danh_cho_ban());
gv_dslsp_cdcb.setAdapter(bcd_dmn_cdcb);
gv_dslsp_cdcb.setNumColumns(3);

Hình 4.18 Mã xử lý Control GridView trên Java.

Hình 4.18 mô tả việc xử lý và thiết lập hiển thị cho danh mục “Chỉ dành cho
bạn”, các nhóm danh mục sản phẩm khác có cũng có mã xử lý tương đối giống với mã
xử lý trong hình 4.18.

47
Xây dựng màn hình danh sách sản phẩm
Các Control chính được sử dụng trong màn hình danh sách sản phẩm là
DrawerLayout, RelativeLayout, RecyclerView, RatingBar, TagContainerLayout.

Vì TagContainerLayout không có sẵn trong Android Studio nên phải thêm thư
viện co.lujun:androidtagview.

DrawerLayout được sử dụng làm layout chính và RelativeLayout được sử dụng


để bố trí danh sách sản phẩm và một RelativeLayout khác được sử dụng để bố trí bộ lọc.

RatingBar được sử dụng để hiển thị số sao, TagContainerLayout được sử dụng


để hiển thị các loại sản phẩm và các thương hiệu.

Hình 4.19 Giao diện mà hình danh sách sản phẩm.

 Chức năng: hiển thị và cho phép chọn các sản phẩm, cho phép tự động hiển thị thêm
sản phẩm khi lướt xuống, lướt lên đầu danh sách bằng nút nhấn, sắp xếp theo đánh giá,
giá sản phẩm và độ ưa thích, đồng thời cũng cho phép lọc và tìm kiếm trong danh sách
giúp thu hẹp phạm vi sản phẩm mà khác hàng cần tìm.
 Mô tả: Thông qua các chức năng trên, khách hàng có thể dễ dàng tìm được sản phẩm
ưng ý.
 Code xử lý trên server

48
yeu_cau_ds yeu_cau_ds;
yeu_cau_ds = JsonConvert.DeserializeObject<yeu_cau_ds>(json_yeu_cau_ds);
connect connect = new connect();
DataTable ds = new DataTable();
SqlConnection ketnoi = new SqlConnection(connect.getconnect());
SqlCommand lenh = new SqlCommand(truy_van_sql(yeu_cau_ds), ketnoi);
ketnoi.Open();
SqlDataAdapter data = new SqlDataAdapter(lenh);
data.Fill(ds);
return DataTableToJSONWithJSONNet(ds);

Hình 4.20 Mã xử lý C# thực thi truy vấn lấy danh sách sản phẩm theo yêu cầu.

Hình 4.20 mô tả việc chuyển dữ liệu chuỗi json nhận từ ứng dụng trên điện thoại
gửi lên thành yêu cầu, thực hiện phân tích chuyển yêu cầu thành câu lệnh SQL để truy
vấn và trả về danh sách sản phẩm.

 Code xử lý trong Android Studio


RV_dong_ds_san_pham.setHasFixedSize(true);
RV_dong_ds_san_pham.addItemDecoration(new tao_khoang_trong(7));
StaggeredGridLayoutManager staggeredGridLayoutManager = new
StaggeredGridLayoutManager(2, LinearLayoutManager.VERTICAL);
RV_dong_ds_san_pham.setLayoutManager(staggeredGridLayoutManager); // set
LayoutManager to RecyclerView
bcd_d_dssp_rv = new
bcd_dong_dssp_recyclerview(getApplicationContext(),danh_sach_san_pham) ;
RV_dong_ds_san_pham.setAdapter(bcd_d_dssp_rv);

Hình 4.21 Mã xử lý Control GridView trên Java.

Hình 4.21 mô tả việc xử lý và thiết lập hiển thị danh sách sản phẩm, bố trí các
sản phẩm hiển thị dạng lưới và tạo khoảng cách giữa các sản phẩm để không bị dính liền
với nhau.

49
dialog = new Dialog(mang_hinh_ds_san_pham.this);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
dialog.setContentView(R.layout.poup_sap_xep_mang_hinh_ds_san_pham);
dialog.setCancelable(false);
rv_popup_sx_mhdssp = (RecyclerView) dialog.findViewById(R.id.rv_popup_sx_mhdssp);
bcd__popup_sap_xep_mhdssp = new
bcd_dong_popup_sap_xep_mhdssp(mang_hinh_ds_san_pham.this,sap_xep);
RecyclerView.LayoutManager layoutManager = new
LinearLayoutManager(mang_hinh_ds_san_pham.this);
rv_popup_sx_mhdssp.setLayoutManager(layoutManager);
rv_popup_sx_mhdssp.setAdapter(bcd__popup_sap_xep_mhdssp);
ItemTouchHelper.Callback callback = new SimpleItemTouchHelperCallback(new
ItemTouchListenner() {
@Override
public void onMove(int oldPosition, int newPosition) {
bcd__popup_sap_xep_mhdssp.onMove(oldPosition, newPosition);
}

@Override
public void swipe(int position, int direction) {
bcd__popup_sap_xep_mhdssp.swipe(position, direction);
}
});
ItemTouchHelper itemTouchHelper = new ItemTouchHelper(callback);
itemTouchHelper.attachToRecyclerView(rv_popup_sx_mhdssp);

Hình 4.22 Mã xử lý tạo Control Dialog và thiết lập sắp xếp trên Java.

Hình 4.22 mô tả việc khởi tạo một cửa sổ hay còn gọi là Dialog, để hiển thị các
nội dung cấn sắp xếp, đồng thời cũng mô tả thiết lập cho phép người dùng kéo, thả để
thay đổi trật tự sắp xếp.
yeu_cau.getBo_loc().setGia_sp(yeu_cau_phu.getBo_loc().getGia_sp());
yeu_cau.getBo_loc().setDanh_gia(yeu_cau_phu.getBo_loc().getDanh_gia());
yeu_cau.getBo_loc().setTim_kiem(yeu_cau_phu.getBo_loc().getTim_kiem());
RV_dong_ds_san_pham.getLayoutManager().scrollToPosition(0);
yeu_cau.getBo_loc().setPhan_trang(new phan_trang(0,20));
new asynctask_tai_xuly_load("khoi_tao_trang_danh_sach","json_yeu_cau_ds", 3)
.execute(gson.toJson(yeu_cau));

Hình 4.23 Mã xử lý thu thập yêu cầu lấy danh sách sản phẩm trên java.

Hình 4.23 mô tả việc xử lý gửi dữ liệu lên từ bộ lọc lên server để xử lý thông qua
luồng xử lý asynctask_tai_xuly_load.

Xây dựng màn hình sản phẩm


Các Control chính được sử dụng trong màn hình sản phẩm là DrawerLayout,
NestedScrollView, ViewPager, WebView, RecyclerView.

DrawerLayout được sử dụng làm layout chính, sử dụng NestedScrollView để bố


trí cuộn các thành phần của chi tiết sản phẩm như tổng quan, thông tin sản phẩm, đánh
giá.

50
ViewPager được dùng để hiển thị danh sách ảnh của sản phẩm, WebView được
dùng để hiển thị phần giới thiệu sản phẩm và đặc tính sản phẩm.

Hình 4.24 Giao diện màn hình sản phẩm.

 Chức năng: xem các thông tin chi tiết sản phẩm như hình ảnh, tên, giá, mô tả, đánh
giá của sản phẩm, cho phép phóng to ảnh sản phẩm, chia sẻ sản phẩm lên mạng xã hội
Facebook, hoặc gmail. Đồng thời cho phép khách hàng đưa sản phẩm vào danh sách sản
phẩm mong muốn, hoặc đánh giá sản phẩm.

51
 Mô tả: Thông qua các chức năng trên, khách hàng có thể dễ dàng biết được thông tin
chi tiết về sản phẩm, tạo môi trường thuận tiện nhất cho phép khách hàng tìm hiểu rõ về
sản phẩm đã chọn.
 Code xử lý trong Android Studio
String input=strings[0];
SoapObject requests = new SoapObject(thiet_lap_server.NAME_SPACE, Method_DN);
if(PARAM_DN != null)
requests.addProperty(PARAM_DN, input);
SoapSerializationEnvelope envelope = new
SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet=true;
envelope.setOutputSoapObject(requests);
HttpTransportSE httpTransportSE = new
HttpTransportSE(thiet_lap_server.SERVER_URL, 800000);
httpTransportSE.call(thiet_lap_server.NAME_SPACE+Method_DN, envelope);
SoapPrimitive data = (SoapPrimitive) envelope.getResponse();
return new Gson().fromJson(data.toString(), san_pham.class) ;

Hình 4.25 Mã xử lý Java trong luồng thực thi giao tiếp với server.

Hình 4.25 mô tả việc sử dụng thư viện ksoap2 để xử lý gửi và nhận dữ liệu từ
server sau đó sử dụng thư viện Gson để chuyển dữ liệu sang dạng phần tử.
bcd_dsasp = new bcd_dong_slide_anh_san_pham(sp.getDanh_sach_anh(),
mang_hinh_san_pham.this);
viewPager.setAdapter(bcd_dsasp);

Hình 4.26 Mã xử lý Control ViewPager trên Java.

Hình 4.26 mô tả việc thiết lập để hiển thị danh sách ảnh của sản phẩm.
phong_to = new Dialog(mang_hinh_san_pham.this);
phong_to.requestWindowFeature(Window.FEATURE_NO_TITLE);
phong_to.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
phong_to.setContentView(R.layout.poup_phong_to_anh);
phong_to.setCancelable(false);

WindowManager.LayoutParams lWindowParams = new WindowManager.LayoutParams();


lWindowParams.copyFrom(phong_to.getWindow().getAttributes());
lWindowParams.width = WindowManager.LayoutParams.FILL_PARENT; // this is where
the magic happens
lWindowParams.height = WindowManager.LayoutParams.WRAP_CONTENT;
phong_to.getWindow().setAttributes(lWindowParams);

Hình 4.27 Mã xử lý tạo Control Dialog phong_to trên Java.

Hình 4.27 mô tả việc thiết lập cửa sổ phóng to ảnh.


Picasso.with(phong_to.getContext()).load(ma_hoa.giai_ma(sp.getDanh_sach_anh().get
(p).toString()) + "_1200x1200q80.jpg")
.into((PhotoView) phong_to.findViewById(R.id.PV_anh_phong_to));
photoViewAttacher = new PhotoViewAttacher((PhotoView)
phong_to.findViewById(R.id.PV_anh_phong_to));
phong_to.show();

Hình 4.28 Mã xử lý Java lấy nội dung ảnh từ Internet và hiển thị Dialog phong_to.

52
Hình 4.28 mô tả việc đưa ảnh cần phóng to vào cửa sổ phóng to và hiển thị lên
Màn hình.
Intent sharingIntent = new Intent(android.content.Intent.ACTION_SEND);
sharingIntent.setType("text/plain");
String shareBody = "giá gôc: " + tv_sp_gia_cao.getText().toString()+ ", giảm "
+tv_sp_giam_pt.getText().toString() + " chỉ còn " +
TV_sp_gia_ban_ra.getText().toString();
sharingIntent.putExtra(android.content.Intent.EXTRA_SUBJECT,
TV_ten_sp.getText().toString());
sharingIntent.putExtra(android.content.Intent.EXTRA_TEXT, shareBody);
startActivity(Intent.createChooser(sharingIntent, "Chia sẻ sản phẩm"));

Hình 4.29 Mã xử lý Java thực hiện chia sẻ sản phẩm.

Hình 4.29 mô tả việc xử lý chia sẻ sản phẩm.


bcdDongMhspDanhGia = new bcd_dong_mhsp_danh_gia(mang_hinh_san_pham.this,
sp.getDanh_sach_danh_gia());
LinearLayoutManager verticalLayoutmanager
= new LinearLayoutManager(mang_hinh_san_pham.this,
LinearLayoutManager.VERTICAL, false);
RV_danh_gia.setLayoutManager(verticalLayoutmanager);
RV_danh_gia.addItemDecoration(new tao_khoang_trong_doc(2));
RV_danh_gia.setAdapter(bcdDongMhspDanhGia);

Hình 4.30 Mã xử lý Control Recyclerview hiển trị đánh giá trên Java.

Hình 4.30 mô tả việc xử lý hiển thị danh sách đánh giá.

53
Xây dựng màn hình giảm giá
Các Control chính được sử dụng trong màn hình giảm giá là RelativeLayout,
RecyclerView.

RelativeLayout được sử dụng làm layout chính, RecyclerView được sử dụng để


hiển thị danh sách sản phẩm và một RecyclerView khác được sử dụng để hiển thị danh
sách các chương trình giảm giá.

Hình 4.31 Giao diện màn hình giảm giá.

 Chức năng: hiển thị các chương trình giảm giá đang diễn ra hoặc sẽ diễn ra, cho phép
người dùng có thể chọn sản phẩm giảm giá mà mình ưng ý.
 Mô tả: với các chức năng trên giúp người dùng có thể biết được những sản phẩm nào
đang giảm giá mà có sự lựa chọn hợp lý để mua và sử dụng.
 Code xử lý trong Android Studio
TV_ma_gg.setText("Nhập mã: " + ds_ct_gg.get(position).getMa_giam_gia());
TV_lydogiamgia.setText("("+ds_ct_gg.get(position).getLy_do_giam_gia()+")");
ds_ctgg.clear();
sp_ap_dung[] tmp1 =
gson.fromJson(gson.toJson(ds_ct_gg.get(position).getDs_sp_ap_dung()),sp_ap_dung[]
.class);
ArrayList<sp_ap_dung> tmp2 = new ArrayList<sp_ap_dung>(Arrays.asList(tmp1));
ds_ctgg.addAll(tmp2);
dongMhGgDsSanPhamGg.notifyDataSetChanged();
thiet_lap_thoi_gian(ds_ct_gg.get(position).getThoi_diem_bat_dau_giam_gia(),
ds_ct_gg.get(position).getThoi_diem_ket_thuc_giam_gia(), position);

Hình 4.32 Mã xử lý Java hiển thị từng chương trình giảm giá khi nhấp chọn.

54
Hình 4.32 mô tả việc xử lý và hiển thị một chương trình giảm giá, thiết lập thời
gian bắt đầu, kết thúc và danh sách sản phẩm trong chương trình giảm giá.

Xây dựng màn hình giỏ hàng


Các Control chính được sử dụng trong màn hình này là RelativeLayout,
RecyclerView.

RelativeLayout được sử dụng làm layout chính, RecyclerView được sử dụng để


hiển thị danh sách sản phẩm trong giỏ hàng.

Hình 4.33 Giao diện màn hình giỏ hàng.

 Chức năng: hiển thị các sản phẩm khách hàng đã chọn mua, cho phép tăng, giảm số
lượng hoặc xóa sản phẩm, đồng thời cũng cho phép khách hàng nhập mã giảm giá cho
sản phẩm nằm trong chương trình giảm giá, hoặc xóa mã giảm giá sau khi áp dụng, đồng
thời sau khi tắt ứng dụng và truy cập lại giỏ hàng vẫn không bị thay đổi.
 Mô tả: với các chức năng trên khách hàng có thể thuận tiện nhất trong việc tương tác
với giỏ hàng của mình, áp dụng mã giảm giá cho sản phẩm ưa thích, tùy chỉnh giỏ hàng
và sau đó là tiến hành thanh toán hoặc tiếp tục mua hàng.
 Code xử lý trong Android Studio

55
bcdDongGioHang = new bcd_dong_gio_hang(this, ds_san_pham_gh);
RV_gio_hang.setLayoutManager(new LinearLayoutManager(this,
LinearLayoutManager.VERTICAL, false));
RV_gio_hang.setHasFixedSize(true);
RV_gio_hang.addItemDecoration(new tao_khoang_trong_doc(1));
RV_gio_hang.setNestedScrollingEnabled(false);
RV_gio_hang.setAdapter(bcdDongGioHang);

Hình 4.34 Mã xử lý Control Recyclerview hiển thị giỏ hàng trên Java.

Hình 4.34 mô tả việc xử lý và hiển thị giỏ hàng.


dialog = new Dialog(man_hinh_gio_hang.this);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
dialog.setContentView(R.layout.popup_nhap_ma_giam_gia);
dialog.setCancelable(false);

Hình 4.35 Mã xử lý hiển thị cửa sổ nhập mã giảm giá trên Java.

Hình 4.35 mô tả việc xử lý giao diện cửa sổ nhập mã giảm giá.

Xây dựng màn hình nhập thông tin người nhận hàng
Các Control chính được sử dụng trong màn hình này là RelativeLayout,
TextInputLayout, EditText.

RelativeLayout được sử dụng làm layout chính, TextInputLayout và EditText


được dùng để hiển thị các ô nhập dữ liệu.

Hình 4.36 Giao diện màn hình nhập thông tin người nhận hàng.

56
 Chức năng: cho phép khách hàng chọn chính xác đến từ tỉnh, thành phố đến quận để
hệ thống xử lý phương thức vận chuyển và cho phép khách hàng nhập địa chỉ chi tiết số
nhà, tên đường, phường, xã nơi sinh sống để người giao hàng dễ thực hiện.
 Mô tả: Việc cho phép chọn khu vực Tỉnh/Thành Phố, Quận/Huyện giúp khách hàng
giảm thời gian thao tác nhập, hệ thống có thể tính toán chính xác phương thức vận
chuyển.

Xây dựng màn hình chọn phương thức vận chuyển


Các Control chính được sử dụng trong màn hình này là RelativeLayout,
GridView, TextView.

RelativeLayout được sử dụng làm layout chính, GridView được sử dụng để hiển
thị danh sách phương thức vận chuyển và TextView được dùng để hiển thị các thông tin
chi tiết của phương thức vận chuyển.

Hình 4.37 Giao diện màn hình chọn phương thức vận chuyển.

 Chức năng: dựa vào khu vực giao hàng, hệ thống tính toán và hiển thị phương thức
vận chuyển theo từng hãng vận chuyển khác nhau. Cho phép khách hàng lựa chọn
phương thức vận chuyển có thời gian giao và chi phí hợp lý.
 Code xử lý trên server

57
query = tmp.Replace("{dia_chi_TTP_cua_kho}",
foundRows[i][0].ToString()).Replace("{dia_chi_QH_cua_kho}",
foundRows[i][1].ToString());
MyWebRequest myRequest = new
MyWebRequest("https://nhanh.vn/api/shipping/calculatefee", "POST", query);
dtvanchuyen vanchuyen =
JsonConvert.DeserializeObject<dtvanchuyen>(myRequest.GetResponse());
VC.Add(vanchuyen);

Hình 4.38 Mã xử lý C# lấy danh sách phương thức vận chuyển.

Hình 4.38 mô tả việc sử dụng phương thức xác định phí vận chuyển của trang
web nhanh.vn để lấy dữ liệu các phương thức vận chuyển. cho đơn hàng.

 Code xử lý trong Android Studio


String input=strings[0];
SoapObject requests = new SoapObject(thiet_lap_server.NAME_SPACE, Method_DN);
if(PARAM_DN != null)
requests.addProperty(PARAM_DN, input);
SoapSerializationEnvelope envelope = new
SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet=true;
envelope.setOutputSoapObject(requests);
HttpTransportSE httpTransportSE = new
HttpTransportSE(thiet_lap_server.SERVER_URL);
httpTransportSE.call(thiet_lap_server.NAME_SPACE+Method_DN, envelope);
SoapPrimitive data = (SoapPrimitive) envelope.getResponse();
van_chuyen[] ds_vc_tmp = gson.fromJson(data.toString(),van_chuyen[].class);
ArrayList<van_chuyen> ds_vc_kq = new
ArrayList<van_chuyen>(Arrays.asList(ds_vc_tmp));
return ds_vc_kq;

Hình 4.39 Mã xử lý Java nhận về danh sách phương thức vận chuyển.

Hình 4.39 mô tả việc gửi dữ liệu lên server tính toán và trả về danh sách phương
thức vận chuyển.
bcdDongPhuongThucVanChuyen = new bcd_dong_phuong_thuc_van_chuyen(this,
ds_van_chuyen);
GV_danh_sach_phuong_thuc_van_chuyen.setAdapter(bcdDongPhuongThucVanChuyen);

Hình 4.40 Mã xử lý Java hiển thị danh sách phương thức vận chuyển.

Hình 4.40 mô tả việc xử lý và hiển thị danh sách các phương thức vận chuyển.

58
Xây dựng màn hình kết quả đặt hàng
Các Control chính được sử dụng trong màn hình này là LinearLayout, TextView.

LinearLayout được sử dụng làm layout chính, TextView được sử dụng để hiển
thị thông tin tiết kết quả đặt hàng.

Hình 4.41 Giao diện màn hình kết quả đặt hàng.

 Chức năng: gửi toàn bộ thông tin đặt hàng lên server và nhận về kết quả đặt hàng.
 Code xử lý trong Android Studio
SoapObject requests = new SoapObject(thiet_lap_server.NAME_SPACE, Method_DN);
if(PARAM_DN != null)
requests.addProperty(PARAM_DN, input);
SoapSerializationEnvelope envelope = new
SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet=true;
envelope.setOutputSoapObject(requests);
HttpTransportSE httpTransportSE = new
HttpTransportSE(thiet_lap_server.SERVER_URL);
httpTransportSE.call(thiet_lap_server.NAME_SPACE+Method_DN, envelope);
SoapPrimitive data = (SoapPrimitive) envelope.getResponse();
if(!isConnected()||isFinishing()) cancel(true);
return data.toString();

Hình 4.42 Mã xử lý Java trong luồng xử lý gửi thông tin đơn hàng lên server.

Hình 4.42 mô tả việc sử dụng thư viện ksoap2 để gửi dữ liệu đơn hàng lên server.

59
jsonObject = new JSONObject(s.toString());
if(jsonObject.getBoolean("tinh_trang")==true)
dat_hang_thanh_cong(jsonObject.getInt("chi_tiet"));
else
dat_hang_that_bai(jsonObject.getString("chi_tiet"));

Hình 4.43 Mã xử lý kiểm tra kết quả trả đặt hàng trên Java.

Hình 4.43 mô tả việc kiểm tra kết quả đặt hàng và gọi hàm thông báo kết quả để
hiển thị kết quả chi tiết lên màn hình.

Xây dựng màn hình tài khoản


Các Control chính được sử dụng trong màn hình này là RelativeLayout,
FrameLayout.

RelativeLayout được sử dụng làm layout chính, FrameLayout được sử dụng làm
chỗ chứa cho các giao diện thông tin tài khoản, đơn hàng của tôi, danh sách yêu thích.

- Thông tin tài khoản

Hình 4.44 Giao diện tab thông tin tài khoản.

 Chức năng: Hiển thị thông tin chi tiết tài khoản của khách hàng, cho phép khách hàng
sửa thông tin tài khoản và đổi mật khẩu.
 Code xử lý trong Android Studio

60
new doi_mat_khau_nguoi("nguoi_doi_mat_khau", "json")
.execute(new Gson().toJson(new doi_mat_khau(
nguoi_dung.getEmail_nguoi(),
ma_hoa.ma_hoa(mkc),
ma_hoa.ma_hoa(mkm)
)));

Hình 4.45 Mã xử lý Java tạo luồng xử lý doi_mat_khau_nguoi.

Hình 4.45 mô tả tạo đối tượng doi_mat_khau từ dữ liệu địa chỉ email, mật khẩu
cũ, mật khẩu mới và gửi lên server để kiểm tra và xử lý đổi mật khẩu cho khách hàng.

- Danh sách đơn hàng đã đặt

Hình 4.46 Giao diện tab đơn hàng của tôi.

 Chức năng: hiển thị danh sách đơn hàng đã đặt, cho phép xem chi tiết đơn hàng, đồng
thời cho phép khách hàng có thể tự hủy đơn hàng khi đơn hàng chưa được xác nhận.
 Code xử lý trong Android Studio
bcdDongDonHangCuaToi = new bcd_dong_don_hang_cua_toi(getActivity(),
ds_don_hang_cua_toi, new CustomItemClickListener() {
@Override
public void onItemClick(View v, int position) {
postion_tmp = position;
new tai_thong_tin_don_hang("lay_thong_tin_don_hang", "id_don_hang")
.execute(ds_don_hang_cua_toi.get(position).getMa_don_hang()+"");
}
});
RV_dhct.addItemDecoration(new tao_khoang_trong_doc(1));
RV_dhct.setLayoutManager(new LinearLayoutManager(getActivity(),
LinearLayoutManager.VERTICAL, false));
RV_dhct.setAdapter(bcdDongDonHangCuaToi);
RV_dhct.setNestedScrollingEnabled(false);

Hình 4.47 Mã xử lý Java hiển thị danh sách đơn hàng đã đặt.
61
Hình 4.47 mô tả việc xử lý và hiển thị danh sách đơn hàng đã đặt, đồng thời xử
lý bắt sự kiện lấy dữ liệu chi tiết đơn hàng khi một đơn hàng nào đó trong danh sách
được chọn.
new AwesomeWarningDialog(getActivity())
.setTitle("HỦY ĐƠN HÀNG")
.setMessage("Bạn có thật sự muốn hủy đơn hàng này ?")
.setColoredCircle(R.color.dialogNoticeBackgroundColor)
.setDialogIconAndColor(R.drawable.ic_notice, R.color.white)
.setCancelable(true)
.setButtonText(getString(R.string.dialog_ok_button))
.setButtonBackgroundColor(R.color.dialogNoticeBackgroundColor)
.setButtonText(getString(R.string.dialog_ok_button))
.setWarningButtonClick(new Closure() {
@Override
public void exec() {
new huy_don_hang("huy_don_hang","id_don_hang")

.execute(ds_don_hang_cua_toi.get(postion_tmp).getMa_don_hang()+"");
}
})
.show();

Hình 4.48 Mã xử lý Java hiển thị thông báo khi thao tác hủy đơn hàng.

Hình 4.48 mô tả việc hiển thị thông báo khi người dùng nhấn nút hủy đơn hàng
(chỉ cho phép trong trường hợp đơn hàng chưa được xác nhận và nút hủy có màu cam),
đổng thời thiết lập hủy khi khách chọn nút “ok” để hủy đơn hàng

- Danh sách sản phẩm yêu thích

Hình 4.49 Giao diện tab danh sách yêu thích.

62
 Chức năng: hiển thị các sản phẩm yêu thích mà khách hàng đã chọn, giúp khách hàng
không quên mất những sản phẩm mà họ ưng ý, đồng thời cho phép khách hàng có thể
chọn sản phẩm trong danh sách để xem chi tiết hoặc mua sản phẩm.
 Code xử lý trong Android Studio
RV_dong_ds_san_pham.setHasFixedSize(true);
RV_dong_ds_san_pham.addItemDecoration(new tao_khoang_trong(1));
StaggeredGridLayoutManager staggeredGridLayoutManager = new
StaggeredGridLayoutManager(2, LinearLayoutManager.VERTICAL);
RV_dong_ds_san_pham.setLayoutManager(staggeredGridLayoutManager); // set
LayoutManager to RecyclerView
bcd_d_dssp_rv = new bcd_dong_dssp_recyclerview(getActivity(),danh_sach_san_pham)
;
RV_dong_ds_san_pham.setAdapter(bcd_d_dssp_rv);

Hình 4.50 Mã xử lý Java hiển thị danh sách mong muốn.

Hình 4.50 mô tả việc xử lý và hiển thị danh sách sản phẩm mong muốn.

Phần quản trị


Phần quản trị được xây dựng với đầy đủ các chức năng cần thiết nhằm giúp người
quản trị dễ dàng quản lý hệ thông bán hàng.

Phần này sử dụng công cụ lập trình Visual Studio và nền tảng ứng dụng web
ASP.NET (ASP.NET là một nền tảng ứng dụng web (web application framework) được
phát triển và cung cấp bởi Microsoft, cho phép những người lập trình tạo ra những trang
web động, những ứng dụng web và những dịch vụ web).

Trong phần này sẽ trình bày nội dung xây dựng các trang quản lý.

Xây dựng quản trị đăng nhập


- Trang đăng nhập

Hình 4.51 Giao diện trang đăng nhập quản trị.

63
 Chức năng: cho phép người quản trị và các nhân viên đăng nhập vào hệ thống.
 Mô tả: khi hệ thống mới triển khai chỉ có một tài khoản quản trị và đó là tài có quyền
quản trị cao nhất, chỉ tài khoản đó mới có thêm chức năng quản lý các nhân viên.

Xây dựng quản trị đơn hàng


- Trang danh sách nhóm trạng thái đơn hàng

Hình 4.52 Giao diện trang quản trị danh sách trạng thái đơn hàng.

 Chức năng: hiển thị các trạng thái đơn hàng trong hệ thống. giúp người quản trị có
thể dễ dàng chọn các nhóm đơn hàng cần phải xử lý.
 Mô tả: giúp người quản trị giảm bớt công việc tìm kiếm đơn hàng cần xử lý.

- Trang danh sách đơn hàng

Hình 4.53 Giao diện trang quản trị danh sách đơn hàng.

 Chức năng: sau khi chọn nhóm trạng thái đơn hàng, hệ thống chuyển sang trang danh
sách đơn hàng tương ứng với nhóm trạng thái đơn hàng đã chọn.

64
- Trang chi tiết đơn hàng

Hình 4.54 Giao diện trang quản trị chi tiết đơn hàng.

 Chức năng: sau khi chọn chi tiết đơn hàng, người quản trị có thể xem và xử lý đơn
hàng theo quy trình.
 Quy trình xử lý đơn hàng
Người quản trị chọn đơn hàng đang chờ xác nhận lại hoặc đang chờ xác nhận
để xem chi tiết đơn hàng, sau đó gọi cho khách hàng và thông báo chi tiết đơn hàng mà
mà họ đã đặt nếu khách hàng đồng ý thì người quản trị sẽ nhấn vào nút xác nhận đơn
hàng thành công và thực hiện việc in hóa đơn và liên hệ với nhà vận chuyển để tạo lập
đơn vận chuyển sau đó lấy mã vận chuyển và thực hiện việc cập nhật mã vận chuyển.
Sau đó chuyển đơn hàng sang trạng thái chưa thanh toán, rồi đến khi khách hàng nhận
hàng và thanh toán tiền cho người vận chuyển, người vận chuyển sẽ chuyển kết quả giao
hàng và tiền thanh toán về cho người quản trị, người quản trị sẽ xử lý và cập nhật trạng
thái đơn hàng đã thanh toán thành công.
Nếu không liên lạc được với khách hàng người quản trị sẽ chuyển đơn hàng sang
trạng thái đang chờ xác nhận lại. Nếu khách hàng từ chối đơn hàng người quản trị sẽ
chuyển đơn hàng sang trạng thái bị từ chối bởi khách hàng.
Trong quá trình xử lý, nếu người quản trị phát hiện thấy đơn hàng bị lỗi thì ngay
lập tức liên hệ với khách hàng để xử lý hủy đơn hàng.

65
Xây dựng quản trị sản phẩm
- Trang danh sách sản phẩm

Hình 4.55 Giao diện trang quản trị danh sách sản phẩm.

 Chức năng: cho phép người quản trị thêm sản phẩm, xem danh sách và chi tiết các
sản phẩm hiện đang bán, cho phép sửa sản phẩm, quản lý ảnh của sản phẩm, sửa thông
tin sản phẩm, hoặc xóa sản phẩm.

- Trang sửa sản phẩm

Hình 4.56 Giao diện trang quản trị cập nhật thông tín sản phẩm.

 Chức năng: cho phép người quản trị sửa các thông tin sản phẩm.

66
- Trang chi tiết sản phẩm

Hình 4.57 Giao diện trang chi tiết sản phẩm.

 Chức năng: cho phép người quản trị xem chi tiết sản phẩm.

- Trang danh sách ảnh của sản phẩm

Hình 4.58 Giao diện trang danh sách ảnh của sản phẩm.

 Chức năng: cho phép người quản trị thêm ảnh vào danh sách ảnh của sản phẩm đã
chọn.

67
- Trang thêm sản phẩm

Hình 4.59 Giao diện trang thêm sản phẩm.

 Chức năng: cho phép người quản trị thêm sản phẩm mới.

Xây dựng quản trị loại sản phẩm


- Trang danh sách các danh mục sản phẩm

Hình 4.60 Giao diện trang danh mục sản phẩm.

 Chức năng: cho phép người quản trị xem danh sách các loại sản phẩm theo cấp, thực
hiện xóa danh mục sản phẩm.
 Mô tả: hỗ trợ người quản trị xem danh mục sản phẩm theo cấp, trong trang này người
quản trị có thể chọn một danh mục sản phẩm để xem các danh mục con.

68
- Trang thêm danh mục sản phẩm

Hình 4.61 Giao diện thêm danh mục sản phẩm.

 Chức năng: cho phép người quản trị xem thêm loại sản phẩm, hỗ trợ chọn cấp cho
loại sản phẩm cần thêm

- Trang sửa danh mục sản phẩm

Hình 4.62 Giao diện sửa loại sản phẩm.

 Chức năng: cho phép người quản trị sửa loại sản phẩm, hỗ trợ chọn cấp cho loại sản
phẩm cần sửa.

69
- Trang xem danh sách các sản phẩm của loại sản phẩm

Hình 4.63 Giao diện danh sách sản phẩm trong danh mục sản phẩm.

 Chức năng: cho phép người quản trị xem danh sách, thêm, xóa các sản phẩm thuộc
loại sản phẩm đang chọn.
 Mô tả: hỗ trợ người quản trị quản lý các sản phẩm thuộc loại sản phẩm đang chọn.

Xây dựng quản trị ảnh trình chiếu


- Trang danh sách ảnh trình chiếu (ảnh quảng cáo)

Hình 4.64 Giao diện danh sách ảnh trình chiếu.

 Chức năng: cho phép người quản trị xem, xóa, sửa các ảnh trong danh sách các ảnh
trình chiếu hiện có.
 Mô tả: các ảnh trình chiếu này sẽ hiển thị trong trang chủ của ứng dụng bán hàng trên
điện thoại, do đó sẽ giúp nhà bán hàng quảng bá được hình ảnh của họ cho khách hàng.

70
- Trang sửa ảnh trình chiếu

Hình 4.65 Giao diện sửa ảnh trình chiếu.

 Chức năng: cho phép người quản trị sửa ảnh trình chiếu.

- Trang thêm ảnh trình chiếu

Hình 4.66 Giao diện trang thêm ảnh trình chiếu.

 Chức năng: cho phép người quản trị thêm ảnh trình chiếu.

71
Xây dựng quản trị thương hiệu
- Trang danh sách thương hiệu

Hình 4.67 Giao diện trang danh sách thương hiệu.

 Chức năng: cho phép người quản trị xem danh sách các thương hiệu hiện có.

- Trang sửa thương hiệu

Hình 4.68 Giao diện trang sửa thương hiệu.

 Chức năng: cho phép người quản trị sửa thông tin thương hiệu.

72
- Trang thêm thương hiệu

Hình 4.69 Giao diện trang thêm thương hiệu.

 Chức năng: cho phép người quản trị thêm thương hiệu.

Xây dựng quản trị giảm giá


Hệ thống quản trị chỉ cho phép xóa, sửa chương trình giảm giá, thêm sản phẩm
vào chương trình giảm giá trong khoản thời gian trước thời điểm bắt đầu diễn ra.

- Trang danh sách chương trình giảm giá

Hình 4.70 Giao diện trang danh sách chương trình giảm giá.

 Chức năng: cho phép người quản trị xem danh sách các chương trình giảm giá hiện
có.

73
- Trang thêm chương trình giảm giá

Hình 4.71 Giao diện trang thêm chương trình giảm giá.

 Chức năng: cho phép người quản trị thêm mới chương trình giảm giá.

- Trang sửa chương trình giảm giá

Hình 4.72 Giao diện trang cập nhật chương trình giảm giá.

 Chức năng: cho phép người quản trị cập nhập thông tin chương rình giảm giá.

74
- Trang danh sách sản phẩm áp dụng cho chương trình giảm giá

Hình 4.73 Giao diện danh sách sản phẩm của chương trình giảm giá.

 Chức năng: cho phép người quản trị xem danh sách các sản phẩm hiện đang có trong
chương trình giảm giá, đồng thời cũng cho phép thêm, sửa, xóa các sản phẩm trong danh
sách áp dụng của chương trình giảm giá.

- Trang thêm sản phẩm vào chương trình giảm giá

Hình 4.74 Giao diện thêm sản phẩm vào chương trình giảm giá.

 Chức năng: cho phép người quản trị thêm sản phẩm vào chương trình giảm giá.

75
- Trang sửa sản phẩm trong chương trình giảm giá

Hình 4.75 Giao diện trang sửa thông tin sản phẩm giảm giá.

 Chức năng: cho phép người quản trị cập nhật thông tin sản phẩm trong chương trình
giảm giá.

Xây dựng quản trị nhập hàng hóa


Hệ thống quản trị chỉ cho phép xóa, sửa phiếu nhập, thêm sản phẩm vào phiếu
nhập trong khoản thời gian sau thời điểm tạo phiếu nhập không quá 24 giờ.

- Trang danh sách phiếu nhập

Hình 4.76 Giao diện trang danh sách phiếu nhập.

 Chức năng: cho phép người quản trị xem danh sách các phiếu nhập hiện có.

76
- Trang thêm phiếu nhập

Hình 4.77 Giao diện trang thêm phiếu nhập.

 Chức năng: cho phép người quản trị chọn kho cần nhập sản phẩm vào, nhập thông tin
nguồn nhập và thực hiện tạo phiếu và sau đó thêm sản phẩm vào.

- Trang sửa phiếu nhập

Hình 4.78 Giao diện trang sửa phiếu nhập.

 Chức năng: cho phép người quản trị tạo phiếu nhập để nhập sản phẩm vào kho.

77
- Trang danh sách sản phẩm trong phiếu nhập

Hình 4.79 Giao diện trang danh sách sản phẩm trong phiếu nhập.

 Chức năng: cho phép người quản trị xem các sản phẩm nào hiện đang có trong phiếu
nhập, đồng thời cho phép người quản trị thêm, xóa, sửa sản phẩm trong phiếu nhập.

- Trang thêm sản phẩm vào phiếu nhập

Hình 4.80 Giao diện trang thêm sản phẩm vào phiếu nhập.

 Chức năng: cho phép người quản trị thêm sản phẩm vào danh sách sản phẩm trong
phiếu nhập.

78
- Trang sửa sản phẩm trong phiếu nhập

Hình 4.81 Giao diện trang sửa thông tin sản phẩm trong phiếu nhập.

 Chức năng: cho phép người quản trị sửa sản phẩm trong phiếu nhập

Xây dựng quản trị kho hàng


- Trang danh sách kho hàng

Hình 4.82 Giao diện trang danh sách kho hàng.

 Chức năng: cho phép người quản trị xem danh sách các kho hàng hiện có, đồng thời
cũng cho phép xóa, sửa thông tin, xem danh sách sản phẩm trong từng kho.

79
- Trang sửa kho hàng

Hình 4.83 Giao diện trang cập nhật thông tin kho hàng.

 Chức năng: cho phép người quản trị cập nhật thông tin kho.

- Trang danh sách sản phẩm trong kho hàng

Hình 4.84 Giao diện trang danh sách sản phẩm trong kho hàng.

 Chức năng: Danh sách sản phẩm trong mỗi kho được sắp xếp theo thứ tự tăng dần số
lượng của sản phẩm, do đó khi xem danh sách sản phẩm trong kho, người quản trị có
thể biết sản phẩm nào đang gần hết hàng để tiến hành nhập sản phẩm đó.

80
- Trang thêm kho hàng

Hình 4.85 Giao diện trang thêm kho hàng.

 Chức năng: cho phép người quản trị có thể đưa một kho hàng vào sử dụng bằng cách
thêm kho hàng.

Hình 4.85 mô tả việc sử dụng thủ tục lưu trữ để thêm mới kho hàng.

Xây dựng báo cáo doanh thu


- Trang báo cáo doanh thu

Hình 4.86 Giao diện trang báo cáo doanh thu.

 Chức năng: cho phép người quản trị chọn khoản thời gian để xem doanh thu.

81
- Trang in doanh thu

Hình 4.87 Giao diện trang in doanh thu.

 Chức năng: cho phép người quản trị in báo cáo doanh thu, xuất báo cáo doanh thu
sang dạng tập tin.
 Code xử lý

ReportViewer1.ProcessingMode = ProcessingMode.Local;
ReportViewer1.LocalReport.ReportPath = Server.MapPath("Report1.rdlc");
ReportParameter[] param = new ReportParameter[4];
param[0] = new ReportParameter("thoiGianDauCuoi", "TỪ NGÀY "+ ngaybaydau +" ĐẾN
NGÀY "+ ngayketthuc);
param[1] = new ReportParameter("ngaytaobaocao",
DateTime.Now.ToString("dd/MM/yyyy"));
param[2] = new ReportParameter("tongdoanhthu", String.Format("{0:n0}",
tongdoanhthu).Replace(",", ".") + " vnđ");
param[3] = new ReportParameter("tongtienloi", String.Format("{0:n0}",
tongtienloi).Replace(",", ".") + " vnđ");
ReportViewer1.LocalReport.SetParameters(param);
ReportDataSource datasource = new ReportDataSource("PhaiChinhXac",
BangChiTietDoanhThu);
ReportViewer1.LocalReport.DataSources.Clear();
ReportViewer1.LocalReport.DataSources.Add(datasource);

Hình 4.88 Mã xử lý hiển trị trang in doanh thu.

Hình 4.88 mô tả việc tạo và xử lý một đối tượng ReportViewer để hiển thị báo
cáo.

Xây dựng quản trị nhân viên


Trang quản trị nhân viên chỉ hiển thị khi tài khoản có quyền quản trị cao nhất
đăng nhập vào hệ thống quản trị.

82
- Trang danh sách nhân viên

Hình 4.89 Giao diện trang danh sách nhân viên.

 Chức năng: cho phép người quản trị xem danh sách các nhân viên hiện có.

- Trang sửa nhân viên

Hình 4.90 Giao diện trang cập nhật thông tin nhân viên.

 Chức năng: cho phép người quản trị sửa thông tin của nhân viên.

83
- Trang thêm nhân viên

Hình 4.91 Giao diện trang thêm nhân viên.

 Chức năng: cho phép người quản trị thêm nhân viên mới.

84
CHƯƠNG 5. KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN TOÀN HỆ THỐNG
Bất kỳ một hệ thống nào được xây dựng thành công, cũng có những thành quả
tích cực và những hạn chế còn tồn tại. Do vậy chương này sẽ trình bày phần kết luận và
hướng phát triển toàn hệ thống, đó là yếu tố cần thiết để những hệ thống ở những thế hệ
sau được hoàn hảo và phát tiển hơn.

Kết luận đồ án
Kết quả đạt được
- Tạo máy chủ ảo và cài Internet Information Services (IIS) thành công
- Mở port cho vps để trở thành thành vps hositng thành công
- Thiết kế cơ sở dữ liệu và tạo lập dữ liệu demo lưu trữ trên phần mềm Microsoft Sql
Server thành công
- Thiết kế và cài đặt SOAP Web Services trên môi trường Asp.Net C# thành công
- Sử dụng Android Studio thiết kế giao diện cho ứng dụng bán hàng online bằng ngôn
ngữ xml thành công
- Sử dụng Android Studio làm công cụ để lập trình và kết nối với SOAP Web Services
cho ứng dụng bán hàng online bằng ngôn ngữ lập trình java thành công
- Xây dựng thành công hệ thống bán hàng với các chức năng chính:

 Hiển thị các loại sản phẩm và các sản phẩm đang bán thành công
 Hỗ trợ khách hàng tìm kiếm, sắp xếp các sản phẩm thành công
 Hỗ trợ giá sản sản phẩm cho khách hàng bằng chương trình giảm giá thành công
 Hỗ trợ khách hàng tự quản lý thông tin tài khoản, các đơn hàng họ đã đặt, danh sách
sản phẩm họ mong muốn thành công
 Hiển thị chi tiết sản phẩm và cho phép khách hàng gửi đánh giá về sản phẩm
 Hỗ trợ khách hàng chọn sản phẩm, áp dụng mã giảm giá, chọn địa chỉ giao hàng,
chọn phương thức vận chuyển và đặt hàng nhanh chóng
 Cho phép khách hàng hủy đơn hàng trong một số trường hợp
 Hỗ trợ người quản trị hệ thống quản lý đơn hàng, sản phẩm, loại sản phẩm, ảnh quảng
cáo, thương hiệu, chương trình giảm giá, nhập hàng hóa, kho hàng và báo cáo doanh thu

85
- Sử dụng GITHUB làm kho lưu trữ source code của app thành công tại
https://github.com/nhuyk56/DO_AN_TOT_NGHIEP_2018

Hạn chế tồn tại


- Do thời gian nghiên cứu còn hạn chế trong mức cho phép nên sản phẩm chưa được
hoàn hảo như bản thiết kế ban đầu ví dụ như giao diện quản lý đơn hàng trên ứng dụng
còn chưa đẹp mắt.
- Giao diện quản trị hệ thống chưa đẹp mắt.

Hướng phát triển


- Em sẽ tiếp tục định hướng và phát triển:

 Hướng phát triển lâu dài, phát triển lên thành ứng dụng có khả năng đáp ứng các tập
đoàn buôn bán lớn có chi nhánh ở nhiều quốc gia.
 Phát triển giao diện đẹp hơn, hấp dẫn người dùng hơn, xây dựng thêm nhiều chức
năng hơn nữa để giúp nhà bán hàng quảng bá thương hiệu của họ và thu hút được nhiều
khách hàng mua sản phẩm.

86
DANH MỤC TÀI LIỆU THAM KHẢO
[1] Amazon, “Amazon EC2”, https://aws.amazon.com/ec2/?nc2=h_ls, 11/06/2018.
[2] Amazon, “EC2 Management Console”, https://us-east-
2.console.aws.amazon.com/ec2/v2/home?region=us-east-
2#SecurityGroups:search=sg-c6cdbfac;sort=groupName, 11/06/2018.
[3] Amazon, “Resources”, https://us-east-
2.console.aws.amazon.com/ec2/v2/home?region=us-east-2#Home:, 11/06/2018.
[4] CodehubTeam, “Giới Thiệu Về Android Studio”, https://www.codehub.vn/Gioi-
Thieu-Ve-Android-Studio, 12/06/2018.
[5] Đỗ Ngọc Khánh, “Khái niệm cơ bản về SOAP, REST và cách phân biệt chúng”,
https://viblo.asia/p/khai-niem-co-ban-ve-soap-rest-va-cach-phan-biet-chung-
oOVlYyoVl8W, 12/06/2018.
[6] Học viện Nông nghiệp Việt Nam, “Bài 1: Tổng quan về SQL Server”,
https://timoday.edu.vn/bai-1-tong-quan-ve-sql-server/, 13/06/2018.
[7] Nguyễn Đức Trường An, “Web Service và Testing Web Service bằng SOAP
UI”, https://viblo.asia/p/web-service-va-testing-web-service-bang-soap-ui-
3P0lPvLGKox, 12/06/2018.
[8] Nguyễn Thanh Tuấn, “Phần 3 - Cách thêm thư viện (module) vào Android
project”, https://viblo.asia/p/phan-3-cach-them-thu-vien-module-vao-android-
project-yMnKMg2zl7P, 12/06/2018.
[9] Nguyễn Tuấn, “Hướng dẫn sử dụng tính năng Debug trong Visual Studio 2015”,
https://cunglaptrinh.blogspot.com/2015/11/su-dung-debug-trong-visual-studio-
2015.html, 13/06/2018.
[10] Nguyễn Văn Nhiệm, “Sử dụng cơ bản Web Service trong ASP.Net”,
http://bcdonline.net/su-dung-co-ban-web-service-trong-asp-net/, 13/06/2018.
[11] VietjackTeam, “Java là gì”, https://vietjack.com/java/java_la_gi.jsp,
11/06/2018.
[12] Wikimedia Foundation, “GitHub”, https://vi.wikipedia.org/wiki/GitHub,
14/06/2018.
[13] Wikimedia Foundation, “Máy chủ ảo”,
https://vi.wikipedia.org/wiki/Máy_chủ_ảo, 11/06/2018.

87
[14] Wikimedia Foundation, “Microsoft Visual Studio”,
https://vi.wikipedia.org/wiki/Microsoft_Visual_Studio, 13/06/2018.
[15] Wikimedia Foundation, “Use case”, https://vi.wikipedia.org/wiki/Use_case,
10/06/2018.

88
PHỤ LỤC 1 CÁC TÀI KHOẢN QUẢN TRỊ MẶC ĐỊNH
- Tài khoản 1: Tài khoản quản trị có quyền cao nhất:

 Tên đăng nhập: nguoiquantri@gmail.com


 Mật khẩu: nguoiquantri@gmail.com

- Tài khoản 2: Tài khoản nhân viên:

 Tên đăng nhập: nguyenthibinh@gmail.com


 Mật khẩu: nguyenthibinh@gmail.com

- Tài khoản 3: Tài khoản nhân viên:

 Tên đăng nhập: nguyenthilan@gmail.com


 Mật khẩu: nguyenthilan@gmail.com

- Tài khoản 4: Tài khoản nhân viên:

 Tên đăng nhập: nguyenvannhan@gmail.com


 Mật khẩu: nguyenvannhan@gmail.com

89
PHỤ LỤC 2 HƯỚNG DẪN CÀI ĐẶT
Bước 1: Chọn máy vi tính làm server

- Máy vi tính làm server phải thỏa mãn các yêu cầu sau

 Luôn có kết nối mạng.


 Địa chỉ ip phải là ở dạng tĩnh.
 Đã cài đặt Microsoft SQL Server 2017 Express
 Cài đặt Internet Information Services
 Phải mở port 80
 Cài đặt Microsoft.ReportViewer.WebForms, Version=11.0.0.0
 Cài đặt Microsoft.ReportViewer.Common, Version=11.0.0.0
 Cài đặt Microsoft.Build.Framework, Version=4.0.0.0

Bước 4 Cài đặt trang web quản trị

Giải nén file ynn_shop_server_quan_tri.zip trong CD và chép vào thư mục


“C:\inetpub\wwwroot”.

Rồi mở file “C:\inetpub\wwwroot\YNNSHOP56131778\CONGFIG\connect.cs”


bằng Notepad, tìm dòng “Data Source=DESKTOP-BD4AA9G\SQLEXPRESS;Initial
Catalog=ynn_shop;user=Nhuyk56;pwd=@Nhuyk56”.

Sửa DESKTOP-BD4AA9G thành tên của máy tính server, Nhuyk56 và


@Nhuyk56 thành tài khoản SQL Server Authentication.

Sau đó mở trình duyệt lên, truy cập vào localhost và đăng nhập bằng tài khoản:
tên đăng nhập: nguoiquantri@gmail.com, mật khẩu: nguoiquantri@gmail.com.

Bước 5. Tạo file apk mới

Giải nén ynn_shop.zip trong CD và dùng Android Studio để mở project


ynn_shop. Trong giao diện Android Studio, tiến hành truy cập vào thư mục Java rồi đến
com.ntu.ynn_shop.ynn_shop, cac_thiet_lap và mở file thiet_lap_server.class lên và sửa
SERVER_IP thành địa chỉ ip của máy server ở bước 1.

Trên Android Studio vào menu Build chọn Build APK(s) để tạo file APK. Sau
đó tiến hàng cài đặt file apk trên điện thoại Andoid có kết nối mạng để sử dụng.

90
PHỤ LỤC 3 HƯỚNG DẪN SỬ DỤNG
1. Phần người dùng trên điện thoại
1.1. Khi khi mới khởi động ứng dụng
Bạn có thể đăng nhập hoặc đăng ký, khôi phục mật khẩu.

Đăng nhập

Hình phụ lục 1 màn hình đăng nhập.

- Nhập email và mật khẩu lúc tạo tài khoản, sau đó nhấn nút đăng nhập và chờ báo kết
quả đăng nhập thành công.
- Để nhìn thấy mật khẩu đã nhập thì nhấn vào biểu tượng con mắt ở bên phải ô mật
khẩu.
- Nếu quên mật khẩu thì nhấn vào nút quên mật khẩu.

91
Đăng ký

Hình phụ lục 2 màn hình đăng ký.

- Nhập đầy đủ thông tin theo các yêu cầu sau:

 Nhập họ và tên chính xác.


 Nhập địa chỉ email phải đúng định dạng và phải là email chưa đăng ký trước đó.
 Mật khẩu phải hơn 7 ký tự.
 Mật khẩu nhập lại phải giống mật khẩu.
 Chọn giới tính.
 Nhấn vào ô ngày sinh để hiển thị lịch và chọn ngày sinh.
 Nhập địa chỉ chính xác.
 Nhập số điện thoại chính xác.

- Nhấn nút đăng ký và chờ báo kết quả thành công.

92
Quên mật khẩu
Trên màn hình đăng nhập, nhấn vào dòng chữ quên mật khẩu.

Hình phụ lục 3 màn hình khôi phục mật khẩu.

Nhập email của tài khoản cần khôi phục và nhấn nút khôi phục mật khẩu. Nếu
địa chỉ email vừa nhập có trong hệ thống thì cửa sổ khôi phục mật khẩu sẽ xuất hiện.

Hình phụ lục 4 cửa sổ nhập mã khôi phục mật khẩu.

93
Truy cập email và tìm đến địa chỉ email của ynn_shop để nhận mã khôi phục.
điền mã khôi phục, mật khẩu mới, mật khẩu mới nhập lại vào cửa sổ khôi phục mật
khẩu. Theo yêu cầu sau:

 Phải nhập chính xác mã khôi phục nhận được.


 Nhập mật khẩu mới phải hơn 7 ký tự.
 Mật khẩu mới nhập lại phải giống với mật khẩu mới.

Sau đó nhấn nút xác nhận và chờ thông báo thành công. Nếu thông báo thất bại,
thì làm lại từ đầu.

94
1.2. Trang chủ
Sau khi đăng nhập thành công, giao diện trang chủ sẽ xuất hiện.

Hình phụ lục 5 màn hình trang chủ.

- Các thao tác có thể thực hiện:

 Lướt từ trên xuống dưới để xem và chọn để xem chi tiết các phần quảng cáo, thương
hiệu tốt nhất, danh mục ưa thích và các sản phẩm top năm sao.

95
 Nhấn thanh tìm kiếm để tìm kiếm sản phẩm.
 Nhấn các tab giảm giá, danh mục, giỏ hàng, tài khoản để xem nội dung các trang.
1.3. Trang giảm giá
Để vào trang giảm giá, trên màn hình hiện tại, chọn tab giảm giá ở phía dưới màn
hình. Nếu không có tab giảm giá, nhấn nút ba chấm dọc trên góc trên, phải màn hình
hiện tại và chọn giảm giá.

Hình phụ lục 6 màn hình giảm giá.

Trên màn hình giảm giá, kéo thanh các chương trình giảm giá để xem các
chương trình giảm giá nào đang, sẽ diễn ra. Và chọn từng chương trình giảm giá để
xem các sản phẩm nào giảm giá. Nhớ mã giảm giá và chọn sản phẩm để thêm vào giỏ
hàng, sau đó vào giỏ hàng để nhập mã giảm giá (chi tiết xem ở phần hướng dẫn về giỏ
hàng).

96
1.4. Trang danh mục
Để vào trang danh mục, trên màn hình hiện tại, chọn tab danh mục ở phía dưới
màn hình. Nếu không có tab giảm giá, nhấn nút ba chấm dọc trên góc trên, phải màn
hình hiện tại và chọn danh mục.

Hình phụ lục 7 màn hình danh mục.

- Trong trang danh mục có thể thực hiện các tao tác:

 Nhấn chọn từng mục lớn ở thanh danh mục dọc bên trái.
 Xem nội dung từng mục như thương hiệu và các danh mục nhỏ hơn.
 Nhấn vào danh mục quan tâm để xem chi tiết.
 Nhấn biểu tượng tìm kiếm đẻ tìm kiếm sản phẩm.

97
1.5. Trang danh sách sản phẩm
Sau khi chọn thương hiệu, danh mục quan tâm, hoặc tìm kiếm bạn sẽ được đưa
đến màn hình danh sách sản phẩm.

Hình phụ lục 8 màn hình danh sách sản phẩm.

- Xem thêm sản phẩm: bằng cách lướt xuống dưới

 ứng dụng sẽ tự động hiển thị thêm sản phẩm.


 Nếu hết sản phẩm để hiển thị sẽ có thông báo hết sản phẩm xuất hiện.

- Sắp xếp: nhấn vào nút sắp xếp cửa sổ sắp xếp sẽ xuất hiện.

 Kéo thả từng nội dung sắp xếp để thay đổi tứ tự sắp xếp ưu tiên.
 Gạt nút màu cam để chọn trật tự giảm dần hay tăng dần.
 Nhấn nút áp dụng để áp dụng hoặc nhấn thôi để hủy.

- Bộ lọc: nhấn vào nút bộ lọc để hiển thị bộ lọc.

 Chọn các tag thương hiệu.


 Chọn các tag loại sản phẩm.
 Nhập giá tối thiểu, tối đa.
 Chọn số sao đánh giá trung bình trở lên.
 Nhập nội dung tìm kiếm.
 Nhấn nút áp dụng để áp dụng hoặc nhấn thôi để hủy.

98
1.6. Trang sản phẩm
Người dùng sẽ truy cập vào trang sản phẩm, khi chọn một sản phẩm nào đó trên
màn hình có hiển thị sản phẩm.

Hình phụ lục 9 màn hình sản phẩm.

- Trong trang sản phẩm có thể thực hiện các tao tác:

 Nhấn vào ảnh để phóng to ảnh sản phẩm.


 Trên khu vực hiển thị danh sách ảnh, lướt sang trái hoặc phải để xem các ảnh tiếp
theo trong danh sách.

99
 Nhấn vào nút share để chia sẻ sản phẩm.
 Nhấn vào nút tim để đưa sản phẩm vào danh sách yêu thích.
 Lướt xuống để xem các thông tin chi tiết sản phẩm và xem đánh giá của người dùng
về sản phẩm.
 Nhấn vào nút đánh giá, nhập nội dung đánh giá và nhấn xác nhận để gửi đánh giá.
 Để thêm sản phẩm vào giỏ hàng nhấn vào nút thêm vào giỏ hàng.
1.7. Trang giỏ hàng
Để vào trang giỏ hàng, trên màn hình hiện tại, chọn tab giỏ hàng ở phía dưới màn
hình. Nếu không có tab giỏ hàng, nhấn nút ba chấm dọc trên góc trên, phải màn hình
hiện tại và chọn giỏ hàng.

Giỏ hàng sẽ không mất đi khi tắt ứng dụng.

Hình phụ lục 10 màn hình giỏ hàng.

- Trong trang giỏ hàng có thể thực hiện các tao tác:

 Thêm mã giảm giá: nhấn vào biểu tượng giảm giá và nhập mã giảm giá vào cửa sổ
giảm giá và nhấn áp dụng. Nếu mã giảm giá hợp lệ thì sẽ có thông báo thành công xuất
hiện, ngược lại sẽ có thông báo thất bại. Mỗi giỏ hàng chỉ được áp dụng một mã giảm
giá, sản phẩm áp dụng mã giảm giá phải có số lượng trong giỏ hàng bằng một.
 Xóa mã giảm giá: bên trái biểu tượng mã giảm giá, là biểu tượng xóa mã giảm giá,
nhấn xóa mã giảm giá, giá sản phẩm sẽ trở về trạng thái ban đầu.

100
 Tăng , giảm số lượng sản phẩm bằng cách nhấn biểu tượng tăng hoặc giảm số lượng,
chỉ cho phép giảm đến một và tăng đến tối đa số sản phẩm còn trong kho.
 Xóa sản phẩm: nhấn vào nút xóa sản phẩm nằm bên trái nút giảm số lượng.
Sau khi đã chỉnh sửa giỏ hàng xong, nhấn nút tiến hàng thanh toán.
1.8. Trang thông người nhận hàng
Sau khi nhấn nút tiến hành thanh toán từ trang giỏ hàng, người dùng sẽ truy cập
vào trang nhập thông tin người nhận hàng.

Hình phụ lục 11 màn hình nhập thông tin người nhân hàng.

- Trong trang thông tin người nhận hàng có thể thực hiện các tao tác:

 Ô họ tên, email và số điện thoại sẽ tự động điền.


 Nhấn vào ô tỉnh/thành phố để chọn tỉnh/thành phố.
 Nhấn vào ô quận/huyện để chọn quận/huyện.
 Nhập địa chỉ chi tiết: số nhà, tên đường, phường/xã phải chính xác để người giao
hàng có thể giao chính xác.

Sau khi nhập hoàn tất, nhấn nút xác nhận để chuyển đến trang chọn phương thức
vận chuyển.

101
1.9. Trang chọn phương thức vận chuyển

Hình phụ lục 12 màn hình chọn phương thức vận chuyển.

- Trong trang này người dùng có thể thực hiện các tao tác:

 Chọn phương thức vận chuyển có phí vận chuyển, tiền thu hộ và thời gian giao hợp
lý.

Sau khi chọn xong, nhấn nút đồng ý đặt hàng để đặt hàng và chuyển sang trang
kết quả đặt hàng.

102
1.10. Trang kết quả đặt hàng

Hình phụ lục 13 màn hình kết quả đặt hàng.

Nếu đơn hàng hợp lệ sẽ có thông báo thành công xuất hiện, ngược lại, sẽ có
thông báo thất bại xuất hiện và màn hình sẽ tự động chuyển sang trang giỏ hàng để
chỉnh sửa lại giỏ hàng.

103
1.11. Trang tài khoản
Thông tin tài khoản

Hình phụ lục 14 màn hình thông tin tài khoản

- Trong trang này người dùng có thể thực hiện các tao tác:

 Xem thông tin tài khoản.


 Sửa thông tin tài khoản bằng cách nhấn nút sửa thông tin => nhập thông tin tài khoản
=> nhấn áp dụng.
 Đổi mật khẩu bằng cách nhấn vào ô mật khẩu => cửa sổ đổi mật khẩu sẽ xuất hiện
=> nhập thông tin đổi mật khẩu => nhấn nút áp dụng.

104
Danh sách đơn hàng đã đặt

Hình phụ lục 15 màn hình danh sách đơn hàng đã đặt.

- Trong trang này người dùng có thể thực hiện các tao tác:

 Xem danh sách các đơn hàng đã đặt.


 Xem chi tiết đơn hàng bằng cách nhấn chọn một đơn hàng.
 Hủy đơn hàng nếu đơn hàng chưa xác nhận bằng cách nhấn vào nút hủy đơn hàng.

105
Danh sách sản phẩm yêu thích

Hình phụ lục 16 màn hình danh sách sản phẩm yêu thích.

Trong trang này người dùng có thể thực hiện các tao tác:

 Xem danh sách sản phẩm đã thích.


 Xóa sản phẩm trong danh sách đã thích bằng cách chọn sản phẩm => chuyển sang
trang sản phẩm => hủy chọn tim.

2. Phần người quản trị


2.1. Đăng nhập hệ thống
Người quản trị có thể đăng nhập hệ thống bằng tài khoản quản trị được cung cấp
sẵn.
2.2. Quản lý nhân viên
Nếu người quản trị có quyền quản trị cao nhất, sẽ có quyền quản lý nhân viên.

Xem danh sách nhân viên


Ở menu bên trái chọn nhân viên => chọn danh sách.

Thêm nhân viên


Ở menu bên trái chọn nhân viên => chọn thêm sẽ truy cập vào trang thêm nhân
viên => nhập thông tin nhân viên => nhấn nút thêm.

106
Cập nhật thông tin nhân viên
Ở menu bên trái chọn nhân viên => chọn danh sách => nhấn chọn nút sửa ở nhân
viên cần sửa => nhập thông tin sửa nhân viên => nhấn sửa.

Xóa nhân viên


Ở menu bên trái chọn nhân viên => chọn danh sách => nhấn chọn nút xóa ở nhân
viên cần xóa.
2.3. Quản lý đơn hàng
Ở menu bên trái chọn đơn hàng => chọn xem danh sách => chọn nhóm đơn hàng
=> chọn chi tiết đơn hàng.

Qui trình xử lý đơn hàng.


Người quản trị chọn đơn hàng đang chờ xác nhận lại hoặc đang chờ xác nhận
để xem chi tiết đơn hàng, sau đó gọi cho khách hàng và thông báo chi tiết đơn hàng mà
mà họ đã đặt nếu khách hàng đồng ý thì người quản trị sẽ nhấn vào nút xác nhận đơn
hàng thành công và thực hiện việc in hóa đơn và liên hệ với nhà vận chuyển để tạo lập
đơn vận chuyển sau đó lấy mã vận chuyển và thực hiện việc cập nhật mã vận chuyển.
Sau đó chuyển đơn hàng sang trạng thái chưa thanh toán, rồi đến khi khách hàng nhận
hàng và thanh toán tiền cho người vận chuyển, người vận chuyển sẽ chuyển kết quả giao
hàng và tiền thanh toán về cho người quản trị, người quản trị sẽ xử lý và cập nhật trạng
thái đơn hàng đã thanh toán thành công.
Nếu không liên lạc được với khách hàng người quản trị sẽ chuyển đơn hàng sang
trạng thái đang chờ xác nhận lại. Nếu khách hàng từ chối đơn hàng người quản trị sẽ
chuyển đơn hàng sang trạng thái bị từ chối bởi khách hàng.

Trong quá trình xử lý, nếu người quản trị phát hiện thấy đơn hàng bị lỗi thì ngay
lập tức liên hệ với khách hàng để xử lý hủy đơn hàng.
2.4. Quản lý sản phẩm
Thêm sản phẩm
Ở menu bên trái chọn sản phẩm => chọn thêm => nhập thông tin sản phẩm cần
thêm => chọn nút thêm.

Xem danh sách sản phẩm


Ở menu bên trái chọn sản phẩm => chọn xem danh sách.

107
Xem chi tiết sản phẩm
Ở menu bên trái chọn sản phẩm => chọn xem danh sách => chọn nút xem chi tiết
ở sản phẩm cần xem chi tiết.

Sửa thông tin sản phẩm


Ở menu bên trái chọn sản phẩm => chọn xem danh sách => chọn nút sửa sản
phẩm ở sản phẩm cần sửa => nhập thông tin cho sản phẩm cần sửa => nhấn nút sửa.

Xóa sản phẩm


Ở menu bên trái chọn sản phẩm => chọn xem danh sách => chọn nút xóa sản
phẩm ở sản phẩm cần xóa.

Xem danh sách ảnh của sản phẩm


Ở menu bên trái chọn sản phẩm => chọn xem danh sách => chọn nút xem danh
sách ảnh ở sản phẩm cần xem danh sách ảnh.

Xóa ảnh trong danh sách ảnh của sản phẩm


Ở menu bên trái chọn sản phẩm => chọn xem danh sách => chọn nút xem danh
sách ảnh ở sản phẩm cần xóa ảnh => chọn nút xóa ảnh ở ảnh cần xóa.

Thêm ảnh trong danh sách ảnh của sản phẩm


Ở menu bên trái chọn sản phẩm => chọn xem danh sách => chọn nút xem danh
sách ảnh ở sản phẩm cần thêm ảnh => kéo xuống cuối trang và nhập đường dẫn ảnh vào
khung => chọn nút thêm ảnh.

Sửa ảnh trong danh sách ảnh của sản phẩm


Ở menu bên trái chọn sản phẩm => chọn xem danh sách => chọn nút xem danh
sách ảnh ở sản phẩm cần sửa ảnh => chọn nút sửa ở ảnh cần sửa => nhập đường dẫn
ảnh mới => chọn nút sửa.
2.5. Quản lý loại sản phẩm
Thêm loại sản phẩm
Ở menu bên trái chọn loại sản phẩm => thêm => nhập thông tin loại sản phẩm
cần thêm => nhấn nút thêm.

Xem danh sách loại sản phẩm


Ở menu bên trái chọn loại sản phẩm => xem danh sách.

108
Xóa loại sản phẩm
Ở menu bên trái chọn loại sản phẩm => xem danh sách => chọn xóa ở loại sản
phẩm cần xóa.

Sửa loại sản phẩm


Ở menu bên trái chọn loại sản phẩm => xem danh sách => chọn sửa ở loại sản
phẩm cần sửa => nhập thông tin cần sửa => nhấn nút sửa.

Xem danh sách loại sản phẩm con


Ở menu bên trái chọn loại sản phẩm => xem danh sách => nhấn vào số con để
xem danh sách loại sản phẩm con.

Xem danh sách sản phẩm trong loại sản phẩm


Ở menu bên trái chọn loại sản phẩm => xem danh sách => chọn nút xem danh
sách sản phẩm ở loại sản phẩm cần xem danh sách sản phẩm.

Xóa sản phẩm trong loại sản phẩm


Ở menu bên trái chọn loại sản phẩm => xem danh sách => chọn nút xem danh
sách sản phẩm ở loại sản phẩm cần xóa sản phẩm => chọn nút xóa sản phẩm ở sản phẩm
cần xóa.

thêm sản phẩm trong loại sản phẩm


Ở menu bên trái chọn loại sản phẩm => xem danh sách => chọn nút xem danh
sách sản phẩm ở loại sản phẩm cần sửa sản phẩm => kéo xuống cuối trang và nhập mã
sản phẩm cần thêm => nhấn nút thêm.
2.6. Quản lý ảnh trình chiếu
Thêm ảnh trình chiếu
Ở menu bên trái chọn banner quảng cáo => thêm => nhập đường dẫn ảnh và nhấn
thêm.

Xem danh sách ảnh trình chiếu


Ở menu bên trái chọn banner quảng cáo => xem danh sách.

Sửa ảnh trình chiếu


Ở menu bên trái chọn banner quảng cáo => xem danh sách => chọn nút sửa ở
ảnh cần sửa => nhấn nút sửa.

109
Xóa ảnh trình chiếu
Ở menu bên trái chọn banner quảng cáo => xem danh sách => chọn nút xóa ở
ảnh cần xóa.
2.7. Quản lý thương hiệu
Thêm thương hiệu
Ở menu bên trái chọn thương hiệu => thêm => nhập thông tin thương hiệu =>
nhấn nút thêm.

Xem danh sách


Ở menu bên trái chọn thương hiệu => xem danh sách.

Xóa thương hiệu


Ở menu bên trái chọn thương hiệu => xem danh sách. => chọn nút xóa ở thương
hiệu cần xóa.

Sửa thương hiệu


Ở menu bên trái chọn thương hiệu => xem danh sách. => chọn nút sửa ở thương
hiệu cần sửa => nhập thông tin sửa => nhấn nút sửa.
2.8. Quản lý chương trình giảm giá
Thêm chương trình giảm giá
Ở menu bên trái chọn giảm giá => thêm mới => nhập thông tin chương trình
giảm giá và nhấn nút thêm

Xem danh sách chương trình giảm giá


Ở menu bên trái chọn giảm giá => danh sách.

Xóa chương trình giảm giá


Ở menu bên trái chọn giảm giá => danh sách => chọn nút xóa ở chương trình
giảm giá cần xóa.

Sửa chương trình giảm giá


Ở menu bên trái chọn giảm giá => danh sách => chọn nút sửa ở chương trình
giảm giá cần sửa => nhập thông tin cần sửa => nhấn nút sửa.

Xem danh sách sản phẩm áp dụng mã giảm giá


Ở menu bên trái chọn giảm giá => danh sách => chọn nút xem danh sách sản
phẩm ở chương trình giảm giá cần xem.

110
Thêm sản phẩm vào chương trinh giảm giá
Ở menu bên trái chọn giảm giá => danh sách => chọn nút xem danh sách sản
phẩm ở chương trình giảm giá cần thêm sản phẩm => chọn nút thêm ở sản phẩm cần
thêm => nhập thông tin giảm giá => nhấn nút thêm.

Xóa sản phẩm trong chương trình giảm giá


Ở menu bên trái chọn giảm giá => danh sách => chọn nút xem danh sách sản
phẩm ở chương trình giảm giá cần xóa sản phẩm => chọn nút xóa ở sản phẩm cần xóa.

Sửa sản phẩm trong chương trình giảm giá


Ở menu bên trái chọn giảm giá => danh sách => chọn nút xem danh sách sản
phẩm ở chương trình giảm giá cần sửa sản phẩm => chọn nút sửa ở sản phẩm cần sửa
=> nhập thông tin cần sửa => nhấn nút sửa.
2.9. Quản lý phiếu nhập
Thêm phiếu nhập
Ở menu bên trái chọn nhập hàng hóa => thêm mới phiếu nhập => nhập thông tin
phiếu nhập cần thêm => nhấn thêm.

Xem danh sách phiếu nhập


Ở menu bên trái chọn nhập hàng hóa => danh sách phiếu nhập

Xóa phiếu nhập


Ở menu bên trái chọn nhập hàng hóa => danh sách phiếu nhập => chọn nút xóa
ở phiếu nhập cần xóa.

Sửa phiếu nhập


Ở menu bên trái chọn nhập hàng hóa => danh sách phiếu nhập => chọn nút sửa
ở phiếu nhập cần sửa => nhập thông tin cần sửa => nhấn sửa.

Xem danh sách sản phẩm trong phiếu nhập


Ở menu bên trái chọn nhập hàng hóa => danh sách phiếu nhập => chọn nút xem
danh sách sản phẩm ở phiếu nhập cần xem.

Thêm sản phẩm vào phiếu nhập


Ở menu bên trái chọn nhập hàng hóa => danh sách phiếu nhập => chọn nút xem
danh sách sản phẩm ở phiếu nhập cần thêm sản phẩm => chọn nút thêm ở sản phẩm cần
thêm vào => nhập thông tin cần thêm => nhấn nút thêm.

111
Xóa sản phẩm trong phiếu nhập
Ở menu bên trái chọn nhập hàng hóa => danh sách phiếu nhập => chọn nút xem
danh sách sản phẩm ở phiếu nhập cần xóa sản phẩm => chọn nút xóa ở sản phẩm cần
xóa.

Sửa sản phẩm trong phiếu nhập


Ở menu bên trái chọn nhập hàng hóa => danh sách phiếu nhập => chọn nút xem
danh sách sản phẩm ở phiếu nhập cần sửa sản phẩm => chọn nút sửa ở sản phẩm cần
sửa => nhập thông tin cần sửa => nhấn nút sửa.
2.10. Quản lý kho hàng
Thêm kho hàng
Ở menu bên trái chọn kho hàng => thêm mới kho hàng => nhập các thông tin
kho hàng cần thêm => nhấn nút thêm.

Xem danh sách kho hàng


Ở menu bên trái chọn kho hàng => danh sách kho hàng.

Xóa kho hàng


Ở menu bên trái chọn kho hàng => danh sách kho hàng => chọn nút xóa ở kho
hàng cần xóa.

Sửa kho hàng


Ở menu bên trái chọn kho hàng => danh sách kho hàng => chọn nút sửa ở kho
hàng cần sửa => nhập các thông tin cần sửa => nhấn nút sửa.

Xem danh sách sản phẩm trong kho


Ở menu bên trái chọn kho hàng => danh sách kho hàng => chọn nút xem danh
sách sản phẩm ở kho hàng cần xem.
2.11. Xem báo cáo doanh thu
Ở menu bên trái chọn báo cáo doanh thu => chọn khoản thời gian cần báo cáo
=> nhấn nút thực hiện.

112

You might also like