Professional Documents
Culture Documents
Xngnhuy 56cntt
Xngnhuy 56cntt
ĐỒ ÁN TỐT NGHIỆP
XÂY DỰNG ỨNG DỤNG BÁN HÀNG ONLINE TRÊN ANDROID
TRANG BÌA
ĐỒ ÁN TỐT NGHIỆP
XÂY DỰNG ỨNG DỤNG BÁN HÀNG ONLINE TRÊN ANDROID
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ệ:
iii
TRƯỜNG ĐẠI HỌC NHA TRANG
Khoa/Viện:……………………………….
iv
TRƯỜNG ĐẠI HỌC NHA TRANG
Khoa/việ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.
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
PHIẾU THEO DÕI TIẾN ĐỘ VÀ ĐÁNH GIÁ ĐỀ TÀI / KHÓA LUẬN TỐT
NGHIỆP......................................................................................................................... iii
Lý do chọn đề tài................................................................................................2
ix
Tổng quan SQL Server ....................................................................................15
Thiết kế cơ sở dữ liệu.......................................................................................28
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
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
CSDL Cơ sở dữ liệu
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.
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.
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.
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.
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.
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.
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 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.
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.
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]
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 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.
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]
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
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]
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.
Để 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.
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.
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]
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.
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ả 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]
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]
14
Hình 2.15 Cửa sổ Diagnostic Tool.
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.
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.
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]
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.
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
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ủ
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.
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
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 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.
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.
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.
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á.
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.
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.
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.
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 loai_san_pham
Bảng thuong_hieu
28
Bảng san_pham
Bảng danh_sach_anh_cua_san_pham
Bảng danh_sach_loai_san_pham_cua_san_pham
29
Bảng tinh_trang_nguoi
Bảng nguoi
30
Bảng kho_hang
Bảng chi_tiet_kho_hang
Bảng phieu_nhap_hang_hoa
31
Bảng chi_tiet_phieu_nhap
Bảng giam_gia
Bảng danh_sach_san_pham_giam_gia
32
Bảng danh_sach_mong_muon
Bảng danh_gia
Bảng phuong_thuc_van_chuyen
33
Bảng tinh_trang_don_hang
Bảng don_hang
34
Bảng chi_tiet_don_hang
Bảng anh_trinh_chieu
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
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 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.
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
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.
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ô 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.
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.
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 mô tả việc sử dụng thư viện ksoap2 Android Studio để giao tiếp với
server.
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.
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.
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ô 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ô 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.
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ô 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ô 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.
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.
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.
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.
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ô 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);
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.30 Mã xử lý Control Recyclerview hiển trị đánh giá trên Java.
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.
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á.
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.35 Mã xử lý hiển thị cửa sổ nhập mã giảm giá trên Java.
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.
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.
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ô 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.
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.
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.
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ô 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.
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
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ô tả việc xử lý và hiển thị danh sách sản phẩm mong muốn.
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ý.
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.
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ý.
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.
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
Chức năng: cho phép người quản trị xem chi tiết 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
Chức năng: cho phép người quản trị thêm sản phẩm mới.
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
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
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.
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
Chức năng: cho phép người quản trị sửa ả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
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ó.
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
Chức năng: cho phép người quản trị thêm thương hiệu.
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á.
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á.
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á.
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
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.
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.
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
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.
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
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.
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
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ô tả việc tạo và xử lý một đối tượng ReportViewer để hiển thị báo
cáo.
82
- 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ó.
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
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ướ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:
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
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.
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
- 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ý
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.
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.
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:
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.
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á.
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.
- 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.
- 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.
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.
- Trong trang sản phẩm có thể thực hiện các tao tác:
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.
- 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:
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
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
- Trong trang này người dùng có thể thực hiện các tao tác:
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:
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:
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.
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.
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.
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.
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.
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.
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.
112