Tải bản đầy đủ (.docx) (42 trang)

Thiết-kế-phần-mềm-bán-hàng-online (2)

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.35 MB, 42 trang )

MỤC LỤC
DANH MỤC HÌNH.........................................................................................2
CHƯƠNG 1: TỔNG QUAN...........................................................................4
1.1. Khảo sát hiện trạng..................................................................................4
1.2. Mục đích và ý nghĩa của đề tài................................................................5
1.2.1. Mục đích............................................................................................5
1.3. Nhiệm vụ của đề tài..................................................................................6
1.3.1. Về lý thuyết.......................................................................................6
1.3.2. Về chương trình...............................................................................7
1.4. Cách thức triển khai.................................................................................7
1.5. Phạm vi đề tài............................................................................................7
CHƯƠNG 2: CƠ SỞ LÝ THUYẾT...............................................................8
2.1. Lý thuyết về Android................................................................................8
2.1.1. Lịch sử Android..............................................................................8
2.1.2. Kiến trúc của Android....................................................................9
2.2. Những thành phần cơ bản của ứng dụng Android...............................11
2.3. Mơ hình Client – Server.........................................................................13
2.3.1. Khái niệm......................................................................................13
2.3.2. Ngun tắc hoạt động của mơ hình Client – Server...................14
CHƯƠNG 3: THIẾT KẾ ỨNG DỤNG........................................................17
3.1. Phân tích chức năng chính ứng dụng....................................................17
3.1.1. Hiển thị danh sách thực đơn........................................................17
3.1.2. Hiển thị chi tiết sản phẩm............................................................17
3.1.3. Thêm sản phẩm vào giỏ................................................................17
3.1.4. Chức năng đặt hàng......................................................................18
3.1.5. Các chức năng của người quản lý bên nhà hàng........................18
3.2. Đặc tả yêu cầu.........................................................................................18
3.2.1. Cách thức hiển thị.........................................................................18
1



3.2.2. Cách thức mua sắm......................................................................18
3.3. Thiết kế các đối tượng tham gia trong phần mềm................................19
3.4. Chương trình thực nghiệm....................................................................22
3.4.1. Màn hình trang chủ......................................................................22
3.4.2. Màn hình chi tiết sản phẩm..........................................................28
3.4.3. Màn hình giỏ hàng........................................................................31
3.4.4 Quản lý đơn hàng trên server…………………………….………
34
3.4.5

Trạng

thái

đơn

hàng

trên

server……………………………….....37
3.5. Kết quả đạt được....................................................................................38
KẾT LUẬN....................................................................................................39
TÀI LIỆU THAM KHẢO.............................................................................41

DANH MỤC HÌNH
Hình 2.1: Mô hình tổng quan các thành phần của hệ điều hành Android……
11
Hình 2.2: Vòng đời một Activity…………………………………………….13
Hình 3.1: Màn hình trang chủ………………………………………………..24

Hình 3.2: Màn hình chi tiết sản phẩm…………………………………….
….30
Hình 3.3: Màn hình Database Manager……………………………………...37
Hình 3.4: Danh sách đơn hàng đã đặt thành công …………………………..38
Hình 3.5: Trạng thái đang giao trên phpMyadmin…………………………..38
Hình 3.6: Trạng thái hủy trên phpMyadmin…………………………………39
Hình 3.7: Trạng thái đã giao trên phpMyadmin………………………..……39
2


MỞ ĐẦU
Kinh doanh online đang ngày càng trở thành trong số những hình thức
kinh doanh phổ biến và được không ít người lựa chọn do những ưu điểm tuyệt
vời của nó. Kinh doanh mua bán online đang ngày càng cách tân và phát triển
bởi nhiều ưu điểm vượt trội mà nó đem lại, giúp đơi bên tiết kiệm chi phí, thời
gian cũng như công sức. Ba lý do chung nhất để người Việt Nam chọn mua
sắm trên mạng chính là thuận lợi, dễ tiếp cận và Chi phí. Có đến 62% chấp
nhận rằng mua hàng online giúp tiết kiệm thời điểm. Cùng với đó 55% cho
rằng mua hàng trên mạng thuận tiện hơn ra cửa hàng và có thể mua bất kỳ lúc
nào.
Trong bối cảnh đại dịch COVID-19, khu vực doanh nghiệp xã hội càng
trở nên “nhạy cảm” hơn. Theo kết quả nghiên cứu của Trung tâm Khởi nghiệp
và sáng tạo xã hội thì COVID-19 đã khiến các DNXH giảm doanh thu 66%,
lợi nhuận 69% và nhân sự 32%.
Trên cơ sở kiến thức đã học trên nhà trường và quá trình tìm hiểu trong
thực tế, em đã quyết định chọn đề tài “Thiết kế phần mềm bán hàng online”.
Em xin gửi lời cảm ơn chân thành tới thầy Nguyễn Anh Dũng đã quan tâm
giúp đỡ, hướng dẫn em hoàn thành tốt đồ án này trong suốt thời gian qua.
Với điều kiện thời gian cũng như kinh nghiệm còn hạn chế của một
sinh viên, đồ án này không thể tránh khỏi những thiếu sót. Em rất mong nhận

được sự chỉ bảo, đóng góp ý kiến của thầy cơ để em có thể bổ sung, phục vụ
tốt cho công việc thực tế sau này.

3


CHƯƠNG 1: TỔNG QUAN
1.1 Khảo sát hiện trạng
Mua sắm trực tuyến là một dạng thương mại điện tử cho phép khách
hàng trực tiếp mua hàng hóa hoặc dịch vụ từ người bán qua Internet sử dụng
trình duyệt web. Người tiêu dùng tìm thấy một sản phẩm quan tâm bằng cách
trực tiếp truy cập trang web của nhà bán lẻ hoặc tìm kiếm trong số các nhà
cung cấp khác sử dụng công cụ tìm kiếm mua sắm, hiển thị sự sẵn có và giá
của sản phẩm tương tự tại các nhà bán lẻ điện tử khác nhau. Kể từ năm 2016,
khách hàng có thể mua sắm trực tuyến bằng nhiều loại máy tính và thiết bị
khác nhau, bao gồm máy tính để bàn, máy tính xách tay, máy tính
bảng và điện thoại thông minh.
Dịch COVID-19 đang làm người tiêu dùng thay đổi thói quen mua sắm,
việc hạn chế đi đến chỗ đông người đã đem lại cơ hội lớn cho kênh mua sắm
online, đặt hàng từ nhà. Nhiều người tiêu dùng chọn mua sắm online để hạn
chế số lần phải đến các cửa hàng mua sắm trực tiếp, giảm nguy cơ lây nhiễm
dịch bệnh.
Theo tờ báo Công thương – cơ quan ngôn luận của bộ công thương, tìm
hiểu về thị trường trong nước thì mua sắm online đang tiếp tục lên ngôi hậu
dịch COVID-19. Giỏ hàng “mùa dịch” được nạp đầy với ba nhóm chính:
thực phẩm cần thiết/tiện lợi, các sản phẩm vệ sinh và sản phẩm giúp tăng
cường sức khỏe. Ngoài ra, với chiến dịch stayhome, những mặt hàng liên
quan đến nhu cầu kết nối, các nhu cầu xã hội như đồ ăn vặt, các sản phẩm
giúp đơn giản hóa việc nấu ăn, sản phẩm chăn sóc cá nhân cũng cho thấy sự
tăng trưởng tích cực. Người tiêu dùng cũng chi tiêu cho các mặt hàng thuộc

về thói quen như: kẹo, cà phê…. đặc biệt là người dân thành thị. Các mô hình
bán lẻ mới nổi bao gồm siêu thị mi ni, cửa hàng tiện lợi và mua sắm trực
4


tuyến đóng vai trị quan trọng trong tăng trưởng của nhóm hàng tiêu dùng
nhanh. Trong đó, mua sắm trực tuyến được đánh giá cao ở tính tiện lợi và
“hạn chế tiếp xúc”, siêu thị mi ni được chọn vị trí gần nhà cho các nhu cầu cơ
bản trong một khoảng thời gian ngắn. Đối với các kênh siêu thị và đại siêu thị,
số giao dịch tăng lên đáng kể trước khi lệnh giãn cách và được dự đốn sẽ cịn
tiếp diễn và dần về lại mức bình thường khi nhu cầu tích trữ hàng giảm.
Ngày nay, lý do người tiêu dùng chọn mua sắm trực tuyến gồm: Sự
thuận tiện; hàng hóa phong phúc đa dạng, dễ lựa chọn; nhiều ưu đãi, khuyến
mại. Tuy nhiên, kèm theo đó là những lo ngại như: Sản phẩm chất lượng kém;
vấn nạn hàng giả, hàng nhái; dịch vụ giao hàng, bảo hành kém.
1.2 Mục đích và ý nghĩa của đề tài
1.2.1 Mục đích
Tránh khỏi những phiền phúc khó chịu: Một trong những lý do khiến
nhiều người ngại ra ngoài mua sắm là sợ phải gặp cảnh kệt xe, khói bụi, nắng
nóng ...
Dễ dàng tiếp cận được nhiều sản phẩm của cửa hàng mà không mất
thời gian.
Tiết kiệm và chủ động được thời gian: Bất cứ khi nào, dù một giờ trưa
hay mười hai giờ khuya, bạn vẫn có thể đặt hàng mà khơng phụ thuộc vào giờ
mở cửa của các trung tâm mua sắm.
Tiết kiệm tiền bạc: Mô hình kinh doanh online giúp các chủ cửa hàng
tiết kiệm đáng kể về chi phí mặt bằng.
Thanh tốn Tiện lợi và an tồn.
1.2.2 Ý nghĩa của đề tài
Trước hết, đề tài “Thiết kế phần mềm bán hàng online” là một ứng

dụng được xây dựng để thể hiện việc áp dụng được những kiến thức quý báu
đã được các thầy cô của trường Đại học Công Nghiệp Hà Nội nhiệt tình
truyền đạt lại cho chúng em. Đặc biệt là sự theo dõi và quan tâm giúp đỡ của
thầy Nguyễn Anh Dũng trong suốt thời gian em thực hiện đề tài này.
5


Thứ hai, đây là những kinh nghiệm quý giá và thiết thực mà em có
được trong quá trình thực hiện đề tài này sẽ là hành trang quý báu giúp ích rất
nhiều cho công việc và tương lai phía trước của mình.
Thứ ba, trong thời đại công nghệ thông tin phát triển phổ biến như hiện
nay, công nghệ không ngừng được cải tiến, những cơng nghệ mới ra đời địi
hỏi người lập trình viên phải tiếp thu và áp dụng những kiến thức mới vào
thực tiễn. Điều đó, được thể hiện qua sự cố gắng của em khi quyết định thực
hiện đề tài này với công nghệ được coi là phổ biến nhất và được dự báo sẽ
phát triển vô cùng mạnh mẽ trong tương lại vì tính thực tiễn của nó.
Vì vậy, em mong muốn sẽ tạo nên một sản phẩm hồn chỉnh nhất có thể
để đáp lại sự nhiệt tình giúp đỡ từ thầy cô và cả tâm huyết của em khi quyết
định thực hiện đề tài này.
1.3 Nhiệm vụ của đề tài
1.3.1 Về lý thuyết
Đề tài “Thiết kế phần mềm bán hàng online” là một ứng dụng chạy trên
điện thoại sử dụng hệ điều hành Android.
Ứng dụng bao gồm:
- Một hostinger để làm server cho ứng dụng.
- Các dữ liệu liên quan đến cửa hàng.
- Phần mềm mua sắm online phát triển trên di động hệ điều hành
Android dành cho người tiêu dùng.
Dưới đây là những chức năng chính mà em dự định phát triển ở phiên
bản đầu tiên của ứng dụng này:

Hiển thị các chương trình quảng cáo sản phẩm tới người tiêu dùng.
Tiếp cận sản phẩm tới người dung một cách hiệu quả nhất
Khách hàng lựa chọn đồ uống trong thực đơn của cửa hàng, đồ uống sẽ
gồm các thơng tin làm nổi cho nó: tên, kích thước, loại.

6


Để tiện theo dõi quá trình đạt đơn hàng, sẽ có một phần mềm quản lý
đơn hàng trên cơ sở dữ liệu. Cụ thể ở đây sẽ là phpMyAdmin.
Trong phần mềm đó, nhà quán lý có thể thống kê được các đơn hàng,
them, sửa xóa sản phẩm và đưa ra các chính sách phù hợp với cửa hàng.
1.3.2 Về chương trình
Chương trình thực hiện được các yêu cầu của đề tài tốt nghiệp.
Ứng dụng đã phần nào xây dựng và đáp ứng chức năng chính:
- Người tiêu dùng tiếp cận được với các chương trình đang và sắp diễn ra
tại cửa hàng.
- Giao diện thân thiện dễ sử dụng.
- Lựa chọn các đồ uống trong thực đơn hiện có tại cửa hàng.
- Thiết kế ứng dụng cho người dùng mua hàng được từ xa.
Mô tả ứng dụng:
- Hiển thị sản phẩm từ máy chủ về các ứng dụng.
- Cho phép người dùng xem chi tiết về sản phẩm.
- Người tiêu dùng có thể thêm sản phẩm vào giỏ hàng của mình.
- Máy chủ sẽ nhận thông tin của người tiêu dùng khi đặt hàng thành
công.
1.4 Cách thức triển khai
Để xây dựng được một ứng dụng đặt đồ uống, em đã thực hiện các
phần từ triển khai một ứng dụng hoàn chỉnh theo các bước sau:
- Khảo sát lấy ý kiến từ các chủ cửa hàng ở khu vực, người tiêu dùng, tài

xế chạy xe ôm công nghệ đồ ăn như nowfood, baemin.
- Nghiên cứu công nghệ phát triển ứng dụng bán hang online chạy trên
hệ điều hành Android Studio.
- Thiết lập máy chủ bán hàng làm nơi truy xuất dữ liệu.
- Xây dựng cơ sở dữ liệu trên máy chủ.

7


Từ những ý kiến đóng góp mà em sẽ thiết kế một bảng đổi tượng gồm
các mối quan hệ liên kết với nhau, thiết kế giao diện và lấy dữ liệu từ cơ sở dữ
liệu trả về để hiển thị
1.5 Phạm vi đề tài
Hiện nay tình hình dịch bệnh đang diễn biến ngày càng phức tạp, tâm
lý mua hàng khi ra đường của mọi người cũng bị ảnh hướng. Để không làm
ảnh hưởng đến công việc cũng như doanh thu của cửa hàng, sản phẩm này đã
được ra đời nhắm phục vụ người tiêu dung. Sản phẩm có thể sử dụng rộng rãi
ở mọi nơi.

CHƯƠNG 2: CƠ SỞ LÝ THUYẾT
2.1. Lý thuyết về Android
2.1.1. Lịch sử Android
Android là một hệ điều hành dựa trên nền tảng Linux, được thiết kế
dành cho các thiết bị di động có màn hình cảm ứng như điện thoại thơng minh
và máy tính bảng. Ban đầu, Android được phát triển bởi Tổng công ty
Android, với sự hỗ trợ tài chính từ Google và sau này được chính Google mua
lại vào năm 2005.
Android là hệ điều hành được thiết kế dành cho các thiết bị di động
màn hình cảm ứng với mã nguồn mở và dựa trên nền tảng Linux.
Cha đẻ của Android là một kỹ sư cơng nghệ u thích robot tên Andy

Rubin sáng chế ra. Trong những ngày đầu mới hình thành, hệ điều hành
android chỉ được phát triển bởi một số ít các kỹ sư chuyên ngành. Họ nhanh
8


chóng nhận ra rằng hệ điều hành này đã khơng còn phù hợp với thị trường
máy ảnh kỹ thuật số nữa và đã chuyển sang điện thoại di động.
Rubin đã đem dự án này giới thiệu với công ty Danger và từ những
kinh nghiệm trong nhiều năm làm việc, nghiên cứu ông đã tạo ra một chiếc
điện thoại mới với hệ thống bàn phím trượt cổ điển với tên gọi là T-Mobile
Sidekick.
Nhưng chỉ sau khoảng một năm rưỡi hoạt động thì dự án Android này
phải dừng hoạt động vì cạn kiệt chi phí. Rubin đã đề nghị với cơng ty
SamSung về việc bán lại dự án nhưng lại bị từ chối. Nhưng vận may của ông
vẫn chưa hết, minh chứng đó là sự kết hợp hồn hảo của Android và Google
vào năm 2005.
Với sự trợ giúp của Google, Android đã từng bước phát triển và đạt
được những thành tựu như ngày hôm nay. Mặc dù Google không phải là nơi
sinh ra hệ điều hành Android, nhưng nó là nơi khiến Android được tái sinh
một lần nữa.
2.1.2. Kiến trúc của Android
“Understanding Android” là cách mà ta tiếp cận lập trình Android và
thấu hiểu kến trúc hệ thống của nó. Chúng ta có thể khơng cần hiểu rõ cấu
trúc của một hệ điều hành nhưng chúng ta có thể lập trình một ứng dụng trên
hệ điều hành đó, đây là điều mà nhà sản xuất muốn khi release SDK với một
framework có sẵn của họ. Như chúng ta biết điều này cũng có mặt tốt và xấu.
Framework là một tầm cao cấp dành cho lập trình viên, nó đều có giới
hạn của nó chúng ta có thể chỉ có thể lập trình những ứng dụng phổ biến
nhưng không nên tiến tới những ứng dụng cao cấp đi sâu vào hệ thống của hệ
điều hành.


9


Hình 2.1: Mô hình tổng quan các thành phần của hệ điều hành Android
Tầng Linux Kernel:
Ở dưới cùng của các tầng trên là Linux – Linux 2.6 với khoảng 115 bản vá
lỗi. Tầng này cung cấp chức năng hệ thống cơ bản như quản lý các tiến trình,
quản lý bộ nhớ, quản lý thiết bị như máy ảnh, bàn phím, màn hình hiển thị,
v.v…Ngoài ra, nhân Linux xử lý tất cả các vấn đề về Mạng và một loạt các
trình điều khiển thiết bị giao tiếp với phần cứng ngoại vi.
Libraries:
Tầng này là một tập hợp các thư viện bao gồm trình duyệt web mã nguồn
mở sử dụng WebKit engine, thư viện libc, cơ sở dữ liệu SQLite là một kho
lưu trữ hữu ích cho việc lưu trữ và chia sẻ dữ liệu của ứng dụng, có các thư
viện để chơi/ghi lại âm thanh và video, các thư viện SSL chịu trách nhiệm về
bảo mật Internet, v.v…
Android Runtime:
Đây là phần thứ ba của kiến trúc Android. Phần này cung cấp một thành
phần quan trọng được gọi là Dalvik Virtual Machine – một loại máy ảo Java
được thiết kế đặc biệt và tối ưu hóa cho Android.
10


Dalvik VM sử dụng các tính năng cốt lõi của Linux như quản lý bộ nhớ và
đa luồng, những tính năng này đều có trong ngơn ngữ Java . Dalvik VM cho
phép tất cả các ứng dụng Android chạy trong tiến trình riêng của nó.
Android Runtime cũng cung cấp một tập các thư viện lõi cho phép các nhà
phát triển ứng dụng Android viết các ứng dụng Android sử dụng ngôn ngữ lập
trình Java (J2SE).

Application Framework:
Tầng Application Framework cung cấp nhiều dịch vụ cấp cao hơn cho các
ứng dụng trong ở dạng các class trong Java. Các nhà phát triển ứng dụng
được phép sử dụng các dịch vụ này trong các ứng dụng của họ. (Ví dụ: dịch
vụ kết nối Internet, dịch vụ SMS,…)
Application:
Bạn sẽ viết ứng dụng và các ứng dụng mà bạn viết được cài đặt ở tầng này. Ví
dụ: Angry Bird, Facebook, Viber, v.v…
2.2. Những thành phần cơ bản của ứng dụng Android
Activity:

11


Là thành phần tối quan trọng của bất kỳ một ứng dụng Android nào. Thuật
ngữ Activity chỉ một việc mà người dùng có thể thực hiện trong một ứng dụng
Android. Do gần như mọi activity đều tương tác với người dùng, lớp Activity
đảm nhận việc tạo ra một cửa sổ (window) để người lập trình đặt lên đó một
giao diện UI với setContentView(View). Một activity có thể mang nhiều dạng
khác nhau: Một cửa sổ toàn màn hình (full screen window), một cửa sổ
floating (với windowsIsFloating) hay nằm lồng bên trong 1 activity khác (với
ActivityGroup).

Hình 2.2: Vịng đời một Activity
- Có 2 phương thức mà gần như mọi lớp con của Activity đều phải hiện
thực:
- onCreate(Bundle) - Nơi khởi tạo activity. Quan trọng hơn, đây chính
người lập trình gọi setContentView(int) kèm theo layout để thể hiện UI
của riêng mình. Đồng thời cịn có findViewById(int) giúp gọi các
widget (buttons, text boxes, labels,..) để dùng trong UI.


12


- onPause() - Nơi giải quyết sự kiện người dùng rời khỏi activity. Mọi dữ
liệu được người dùng tạo ra tới thời điểm này cần phải được lưu vào
ContentProvider.
- Ngay sau phương thức này nó sẽ gọi onResume() nếu Activity được kích
hoạt lại ngay, hoặc gọi OnStop() nếu Activity bị ẩn đi

- Để có thể sử dụng Context.startActivity(), mọi lớp activity đều phải
được khai báo với tag <activity> trong file AndroidManifest.xml.
- onStop(): Được gọi khi nó bị ẩn đi. Sau phương thức này, Activity có thể
gọi onRestart() nếu nó được người dùng kích hoạt lại hoặc
gọi onDestroy() để hết thúc.

- onDestroy(): gọi khi Activity bị hủy hồn tồn (ví dụ gọi finish(), hoặc
người dùng kill Activity).
Service:
Một service là một thành phần của ứng dụng, thể hiện mong muốn ứng
dụng thực hiện các hành động trong khi không tương tác với người dùng
hoặc cung cấp chức năng cho các ứng dụng khác sử dụng. Nói một cách đơn
giản, service là các tác vụ (task) chạy ngầm dưới hệ thống nhằm thực hiện
một nhiệm vụ nào đó. Mỗi class Service phải chứa thẻ <service> được khai
báo trong file AndroidManifext.xml.
Cũng như các đối tượng của ứng dụng khác, services chạy trên luồng
(Thread) của tiến trình chính. Có nghĩa là nếu service của bạn dự định chạy
các hành vi có cường độ lớn hoặc các hành vi có thể gây nghẽn mạch, nó sẽ tự
sinh ra luồng (Thread) của chính nó để làm thực hiện các tác vụ được đặc tả
trong Service.

Content Provider:
- Content Provider là cơ chế cho phép chia sẻ dữ liệu giữa các ứng dụng
với nhau. Bất kỳ ứng dụng nào đều có thể cung cấp cho ứng dụng khác
khả năng truy cập dữ liệu của mình thông qua Content Provider với các
13


chức năng thêm, bớt, truy vấn dữ liệu. Việc truy cập này được cung cấp
thông qua URI định nghĩa và cung cấp bởi Content Provicder
- Dữ liệu chia sẻ ở dạng một file hoặc CSDL SQLite. Các ứng dụng gốc
Android cung cấp sẵn nhiều Content Provider cho phép ứng dụng truy
cập dữ liệu như trình danh bạ, quản lý file media. Hiện nay Content
Provider tồn tại trong hệ thống Android với Content Resolver.
Intent:
- Được sử dụng để truyền các thông báo nhằm khởi tạo một Activity
hoặc Service để thực hiện công việc bạn mong muốn.
Broadcase Receiver:
- Đây là cơ chế để ứng dụng phản ứng lại với các Broadcast Intent, nó
cần được đăng ký bởi ứng dụng và cấu hình với Intent Filter để biết
được loại Intent nào muốn nhận. Nếu Intent Broadcast từ đâu đó trong
hệ thống phát ra, phù hợp với loại ứng dụng đăng ký thì nó sẽ nhận
được khi chạy. Khi nhận được thì Receiver có 5 giây để hoàn thành tác
vụ (như tạo notification chẳng hạn). Broadcast Receiver thi hành ở
background (nền) và khơng có giao diện người dùng.
Notification:
- Đưa ra các thông báo khi ứng dụng android đang được thự thi và không
làm ảnh hưởng đến ứng dụng thực thi.
2.3. Mơ hình Client – Server
2.3.1. Khái niệm
Mô hình client-server là một mô hình nổi tiếng trong mạng máy tính,

được áp dụng rất rộng rãi và là mơ hình của mọi trang web hiện có. Ý tưởng
của mơ hình này là máy con (đóng vài trò là máy khách) gửi một yêu cầu
(request) để máy chủ (đóng vai trị người cung ứng dịch vụ), máy chủ sẽ xử lý
và trả kết quả về cho máy khách.

14


2.3.2. Ngun tắc hoạt động của mơ hình Client – Server
Trong mô hình Client Server, server chấp nhận tấy cả các yêu cầu hợp
lệ từ mọi nơi khác nhau trên mạng, sau đó trả kết quả về máy tính đã gửi yêu
cầu.
Máy tính được coi là máy khách khi chúng làm nhiệm vụ gửi yêu cầu
đến các máy chủ và đợi câu trả lời được gửi về.

Để máy khách và máy chủ có thể giao tiếp được với nhau thì giữa
chúng phải có một chuẩn nhất định, và chuẩn đó được gọi là giao thức. Một
số giao thức được sử dụng phổ biến hiện nay như: HTTPS, TCP/IP, FTP,...
Nếu máy khách muốn lấy được thông tin từ máy chủ, chúng phải tuân
theo một giao thức mà máy chủ đó đưa ra. Nếu yêu cầu đó được chấp nhận thì
máy chủ sẽ thu thập thông tin và trả về kết quả cho máy khách yêu cầu. Bởi vì
Server - máy chủ luôn luôn trong trạng thái sẵn sàng để nhận request từ client
nên chỉ cần client gửi yêu cầu tín hiệu và chấp nhận yêu cầu đó thì server sẽ
trả kết quả về phía client trong thời gian ngắn nhất.
2.3.3. Ưu và nhược điểm mơ hình Client – Server
Ưu điểm của mô hình client server là với mô hình client server thì mọi
thứ dường như đều nằm trên bàn của người sử dụng, nó có thể truy cập dữ
liệu từ xa (bao gồm các công việc như gửi và nhận file, tìm kiếm thông tin,…)
với nhiều dịch vụ đa dạng mà mô hình cũ không thể làm được. Mô hình
client/server cung cấp một nền tảng lý tưởng cho phép tích hợp các kỹ thuật

hiện đại như mô hình thiết kế hướng đối tượng, hệ chuyên gia, hệ thông tin
địa lý (GIS)…
15


Một trong những vấn đề nảy sinh trong mô hình này đó là tính an tồn
và bảo mật thơng tin trên mạng. Do phải trao đổi dữ liệu giữa 2 máy ở 2 khu
vực khác nhau cho nên dễ dàng xảy ra hiện tượng thông tin truyền trên mạng
bị lộ.
2.4. Công cụ quản trị dữ liệu phpMyAdmin
2.4.1. Khái niệm
phpMyAdmin là phần mềm mã nguồn mở được viết bằng ngôn ngữ
PHP nhằm giúp người dùng có thể quản lý cơ sở dữ liệu MySQL thông qua
giao diện web thay vì sử dụng giao diện cửa sổ dòng lệnh (command line
interface). Sử dụng phpMyadmin người dùng có thể thực hiện được nhiều
tác vụ khác nhau như khi sử dụng cửa sổ dòng lệnh. Các tác vụ này bao
gồm việc tạo, cập nhật và xoá các cơ sở dữ liệu, các bảng, các trường, dữ
liệu trên bảng, phân quyền và quản lý người dùng….
2.4.2. Ưu điểm
Tăng hiệu quả công tác quản lý cơ sở dữ liệu:
- PhpMyAdmin không chỉ được xem là một cơng cụ hồn hảo để duyệt
cơ sở dữ liệu, thực hiện truy vấn SQL, quản lý các đặc quyền người
dùng mà cịn được coi là một cơng cụ quản trị đầy đủ tính năng.
- Sử dụng phpMyAdmin, ta có thể làm việc với một đối tượng, vừa xử lý
các tình huống bất ngờ nảy sinh
Cộng đồng hỗ trợ rộng lớn:
- Với tính chất là một mã nguồn mở, phpMyAdmin được phát triển bơi
cộng đồng các lập trình viên trên toàn cầu. Do đó, ai biết lập trình đều
có thể đóng góp mã lệnh của mình
- Đa ngơn ngữ.

- Hồn tồn miễn phí.
2.4.3. Hạn chế

16


Chính vì phpMyAdmin là một mã nguồn mở nên cũng có một số hạn
chết nhất định về bảo mật. Tuy nhiên phiên bản hiện tại đã được khắc phục
tạm thời lỗi này. Dù vậy, để tránh rủi ro, tốt nhất bạn cũng nên hạn chế truy
cập vào địa chỉ URL của phpMyAdmin từ địa chỉ IP cô định.
Sao lưu dữ liệu chưa tốt. Chức năng export/import còn một số thiếu sót
như là:
- Nén, mã hóa và những tùy chọn khác: những tệp được xuất bằng
PhpMyAdmin được lưu trữ dưới dạng text files phổ biến. Dạng lưu trữ
này không chỉ không an tồn mà cịn chiếm nhiều dung lượng đĩa lớn.
- Hỗ trợ phương tiện lưu trữ truyền thơng: Với tính chất là một phần
mềm nằm trên web nên PhpMyAdmin chỉ kết nối với người dùng qua
trình duyệt web. Do đó, người dùng chỉ có thể lưu trữ những bản sao
lưu vào những local drive có sẵn trên hệ thống bằng hộp thoại Save As
của trình duyệt.
- Lập kế hoạch: không có khả năng tự động xuất database data

17


CHƯƠNG 3: THIẾT KẾ ỨNG DỤNG
3.1. Bài toán đặt ra
Bài toán của chúng ta ở đây sẽ là xây dựng một ứng dụng mua bán
online. Thiết kế ứng dụng sao cho sản phẩm được tiếp cận tới người tiêu dùng
trực quan nhất.

Hiển thị danh sách thực đơn, ta sẻ hiển thị các sản phẩm mà cửa hàng
hiện có, các sản phẩm giảm giá, hàng nhập mới về. Để thực hiện hiển thị ta sẽ
cho hiển thị ở màn hình trang chú và khi người dùng cần xem sản phẩm nào
đó sẽ thực hiện hiển thị tồn bộ thơng tin của sản phẩm như có tên sản phẩm,
hình ảnh, giá tiền, mơ tả sản phẩm, số lượng và có một số sản phẩm sẽ có
thêm một số thuộc tính như kích cỡ, trạng thái.
Trong mỗi màn hình sẽ cho hiển thị nút giỏ hàng góc phải trên của ứng
dụng, giúp người dùng sẽ dàng tương tác với ứng dụng trong việc mua hàng.
Ở chức năng này, người dùng sẽ nhận được thông tin các sản phẩm mà người
dùng đã lựa chọn ở các màn hình khác. Người sử dụng có thể xóa sản phẩm
đã thêm vào giỏ.
Người dùng sẽ đặt hàng dựa theo một số thơng tin có sẵn như tên người
dùng, số điện thoại, địa chỉ. Sau khi đặt thành công, dữ liệu sẽ được gửi lên hệ
thống, nhân viên có thể dựa theo dữ liệu trên hệ thống liên lạc lại với người
dùng để xác nhận lại
đơn hàng.
Các chức năng của người quản lý bên cửa hàng:
- Cập nhật các mục sản phẩm hiện có trong cửa hàng.
- Cập nhật các quảng cáo mới nhất tới người tiêu dùng.
- Cập nhật các chi tiết các sản phẩm phù hợp với tình hình hiện có.
- Quản lý danh sách khách hàng đã mua hàng.
- Xem danh sách đơn đặt hàng của các khách hàng đã đặt.
Chương trình sẽ được thực hiện theo mô hình sau:
18


Giỏ hàng

Màn hình
mở đầu


Thực đơn
Giỏ hàng
Sản phẩm mới

Sản phẩm

Giỏ hàng

Màn hình giỏ hàng

Màn hình chi tiết

3.2 Xây dựng thiết kế từ bài toán
3.2.1 Nội dung thiết kế
Dữ liệu sản phẩm sẽ được lấy từ cơ sở dữ liệu về và hiển thị cho các
thành phần có trong ứng dụng. Mỗi sản phẩm chỉ được hiển thị hình ảnh, tên,
giá gốc và giá đã giảm.
Sau khi bấm vào sản phẩm, các thông tin cụ thể của đối tượng mới
được hiện ra. Người dung lựa chọn đồ uống thích hợp bằng các thơng tin có
sẵn của sản phẩm.
Sau khi bấm chọn sản phẩm để hiển thị thông tin chi tiết thì dữ liệu sẽ
được hiển thị đầy đủ nhất từ bên cơ sở dữ liệu. Người dung lựa chọn đồ uống
thích hợp bằng các thơng tin có sẵn của sản phẩm.
Sau khi bấm chọn sản phẩm để hiển thị thông tin chi tiết thì dữ liệu sẽ
được hiển thị đầy đủ nhất từ bên cơ sở dữ liệu. Đầu tiên, ứng dụng sẽ lấy các
19


dữ liệu danh mục sản phẩm gửi về. Với mỗi mục sản phẩm ta sẽ lấy được các

sản phẩm tương ứng.
Người dùng phải nhập các thông tin bắt buộc để cửa hàng có thơng tin
liên lạc và trao đổi về sản phẩm. Người dùng chọn sản phẩm và nhấn thanh
toán. Lúc này ứng dụng sẽ tương tác với cơ sở dữ liệu, dữ liệu được đẩy lên
cơ sở dữ liệu sẽ gồm thông tin khách hàng và chi tiết đơn hàng.
Người quản lý có thể dễ dàng theo dõi đơn hàng mà khách hàng đã đặt.
Thống kê được tất cả các đơn hàng hiện có cũng như trước đây.
Điều chỉnh thông tin của sản phẩm và đưa ra các chương trình giảm
giá, khuyến mãi phù hợp với người tiêu dung. Sản phẩm được hiển thị trạng
thái mặc định khi lên cơ sở dữ liệu là đang giao. Nhân viên tư vấn, giao hàng
sẽ gọi lại vào số điện thoại liên lạc mà khách hàng đã cung cấp để giao đến
đúng địa chỉ.
3.2.2 Xây dựng các đối tượng tham gia từ thiết kế
Đầu tiên, để hiển thị danh mục sản phẩm của cửa hàng ta sẽ xây dựng
một thành phần đại diện cho chúng.
Một số thành phân tham gia sẽ được khởi tạo như sau:
Code khởi tạo đối tượng sản phẩm trong giỏ hàng:
public class Item {
private int id;
private String image;
private String name;
private String status;
private int price;
private int number;
private String size;
private int total;
20


public Item() {

}
public Item(int id,String image, String name,String status, int price, int
number, String size, int total) {
this.id = id;
this.image=image;
this.name = name;
this.status=status;
this.price = price;
this.number = number;
this.size = size;
this.total = total;
}
}
Code khởi tạo đối tượng sản phẩm:
public class Product implements Parcelable {
private int id;
private String name;
private String image;
private String details;
private String image_cold;
private String image_hot;
private String size_m;
private String size_l;
private String price_m;
private String price_l;
21


private int id_menu;
public Product() {

}
public Product(int id, String name, String image, String details, String
image_cold, String image_hot, String size_m, String size_l, String price_m,
String price_l,int id_menu) {
this.id = id;
this.name = name;
this.image = image;
this.details = details;
this.image_cold = image_cold;
this.image_hot = image_hot;
this.size_m = size_m;
this.size_l = size_l;
this.price_m = price_m;
this.price_l = price_l;
this.id_menu=id_menu;
}
}
Code khởi tạo danh sách sản phẩm :
public class Menu {
private int id;
private String image;
private String name;
public Menu(int id,String name, String image) {
this.id=id;
22


this.name = name;
this.image = image;
}

}
3.3. Chương trình thực nghiệm
3.4.1 Hiển thị danh sách sản phẩm

Hình 3.1: Màn hình trang chủ
Màn hình trang chủ là nơi sẽ có nơi người dùng có thể nhìn thấy các
thơng tin của cửa hàng: giới thiệu về cửa hàng, hệ thống cửa hàng, liên hệ,
quảng cáo, danh mục sản phẩm hiện có trong cửa hàng, sản phẩm đang được
giảm giá, sản phẩm mới về.

23


Đầu tiên, phần quảng cáo để tải những thông tin hình ảnh từ server về
thông qua đối tượng là slidemodel của thư viện. Từ bảng dữ liệu trên
phpMyadmin của server ta sẽ lấy dữ liệu json thông qua thư viện Volley. Có
điều chú ý, đó là tên bảng và tên trường của bảng được viết phải giống với tên
bảng và các tên trường cần lấy trên server.
Code lấy danh sách sản phẩm có trong phpMyAdmin:
private void getDataMenu() {
menus = new ArrayList<>();
RequestQueue requestQueue =
Volley.newRequestQueue(getApplicationContext());
JsonArrayRequest jsonArrayRequest = new
JsonArrayRequest(Server.menu_url, response -> {
if (response != null) {
for (int i = 0; i < response.length(); i++) {
try {
JSONObject jsonObject = response.getJSONObject(i);
id=jsonObject.getInt("id");

String image = jsonObject.getString("hinhanh_sanpham");
name = jsonObject.getString("ten_sanpham");
menus.add(new Menu(id,name,image));
} catch (JSONException e) {
CheckConnection.showToast(getApplicationContext(), "Đang kết
nối");
}
}
LinearLayoutManager layoutManager = new
LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false);
recyclerView_menu.setLayoutManager(layoutManager);
recyclerView_menu.setHasFixedSize(true);
24


recyclerView_menu.setNestedScrollingEnabled(false);
menuAdapter=new MenuAdapter(menus,getApplicationContext());
recyclerView_menu.setAdapter(menuAdapter);
menuAdapter.setItemClickListener(new MenuAdapter.ClickListener()
{
@Override
public void onItemClick(int position, View v) {
Intent intent=new
Intent(getApplicationContext(),ProductActivity.class);
intent.putExtra("id",menus.get(position).getId());
intent.putExtra("name",menus.get(position).getName());
startActivity(intent);
}
});
}

}, error -> CheckConnection.showToast(getApplicationContext(), "Lỗi
danh sách"));
requestQueue.add(jsonArrayRequest);
}
Tiếp đến phần hiển thị danh mục sản phẩm hiện có trong cửa hàng,
thơng qua đối tượng mà ta đã tạo dữ liệu là product, cũng sử dụng phương
Volley để gọi json từ server về cho ứng dụng. Danh sách các sản phẩm sẽ
được hiển thị nhờ RecyclerView.
Trong sản phẩm đang giảm giá, để giới hạn số sản phẩm hiển thị cho
người dùng, ta sử dụng câu lệnh break để kết thúc vòng lặp với một điều kiện
giới hạn sản phẩm nào đó.
Code lấy sản phẩm hiện đang giảm giá từ phpMyAdmin:
private void getDataProductNew() {
RequestQueue requestQueue =
25


×