ĐẠI HỌC QUỐC GIA TP. HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA CÔNG NGHỆ PHẦN MỀM
BÁO CÁO ĐỒ ÁN 2
NGHIÊN CỨU PHƯƠNG PHÁP XỬ LÝ THÔNG
TIN DỮ LIỆU Y TẾ VÀ XÂY DỰNG ỨNG DỤNG
HỖ TRỢ CHẨN ĐOÁN BỆNH
Nhóm thực hiện
Dương Hiển Thế
19522252
Nguyễn Tấn Thành
19522239
Gvhd: Th.S Phan Trung Hiếu
TP. Hồ Chí Minh, 20 tháng 12 năm 2022
1
LỜI CẢM ƠN
Trong quá trình học tập, nghiên cứu và phát triền đề tài “Nghiên cứu phương pháp
xử lý thông tin dữ liệu y tế và xây dựng ứng dụng hỗ trợ chẩn đoán bệnh” chúng em xin
bày tỏ sự biết ơn đặc biệt đến thầy Phan Trung Hiếu, người đã trực tiếp hướng dẫn, giúp
đỡ về kiến thức, tài liệu và phương pháp để chúng em hoàn thành đề tài này.
Chúng em xin chân thành cảm ơn vì những thời gian quý báu thầy đã dành ra để
kiểm tra, đưa ra các ý kiến nhận xét và đóng góp rất nhiều vào những tính năng, hướng
phát triển mới hơn cho đề tài. Hi vọng với sự chỉ báo và góp ý từ thầy, nhóm đề tài có thể
tiếp túc phát triển để ứng dụng ngày càng được mở rộng và phục vụ được tốt hơn cho
người dùng.
Trải qua 14 tuần tìm hiểu và nghiên cứu đã cho chúng em cái nhìn chi tiết về các
chủ đề, bài nghiên cứu mới lạ và hấp dẫn. Chúng em tin rằng những kiến thức này sẽ hỗ
trợ chúng em trên con đường sự nghiệp sắp tới. Một lần nữa, cảm ơn thầy và các bạn đã
đồng hành và hỗ trợ nhóm chúng em trong môn học này.
Chúng em xin trân trọng cảm ơn!
TP. Hồ Chí Minh, ngày 10 tháng 6 năm 2022
2
LỜI MỞ ĐẦU
Ngày nay, AI - Artificial Intelligence (Trí Tuệ Nhân Tạo), và cụ thể hơn là
Machine Learning (Học Máy hoặc Máy Học) nổi lên như một bằng chứng của cuộc cách
mạng công nghiệp lần thứ tư. Machine Learning là một lĩnh vực của trí tuệ nhân tạo (AI)
liên quan đến việc nghiên cứu và xây dựng các kỹ thuật cho phép các hệ thống học tự
động từ dữ liệu đế giải quyết các vấn đề cụ thế. Hiện nay Machine Learning được áp
dụng rộng rãi bao gồm máy truy tìm dữ liệu, máy phân tích thị trường chứng khốn, nhận
dạng tiếng nói, chữ viết và hình ảnh...
Bên cạnh đó với sự phát triển như vũ bão của Internet, xu hướng kinh doanh trực
tuyến dường như trở thành điều tất yếu với nhiều doanh nghiệp.Và chúng ta cũng có thể
thấy rằng điều cịn thiếu sót tại các website truyền thống hiện nay đó là việc ứng dụng
Machine Learning để tối ưu hóa trải nghiệm người dùng. Một điều điển hình đó là khi
chúng ta mua thuốc tại các website, ứng dụng bán hàng online vậy làm sao chúng ta có
thể chọn đúng loại thuốc phù hợp với loại bệnh mà bản thân đang gặp phải. Nắm bắt nhu
cầu đó, Website Medi-Good được chúng em thực hiện nhằm giải quyết vấn đề chuẩn
đốn bệnh trước khi mua thuốc.
Các cơng việc chính mà website hỗ trợ là: Xem và đặt hàng sản phẩm, xem cái bài
blog, quản lý đơn hàng, quản lý blog, quản lý sản phẩm, chat với admin, chuẩn đoán bệnh
thông qua khung chat.
3
LỜI CẢM ƠN.............................................................................................................................................. 2
LỜI MỞ ĐẦU.............................................................................................................................................. 3
CƠ SỞ LÝ THUYẾT .......................................................................................................................... 5
A.
I.
ReactJS............................................................................................................................................. 5
II.
NodeJS, ExpressJS ...................................................................................................................... 8
III.
Flask ........................................................................................................................................... 10
IV.
SocketIO..................................................................................................................................... 12
B. XÂY DỰNG ỨNG DỤNG ................................................................................................................... 13
I. Chương 1: Tổng Quan ..................................................................................................................... 13
1.
Tên đề tài..................................................................................................................................... 13
2.
Nền tảng ứng dụng ...................................................................................................................... 13
3.
Công nghệ ................................................................................................................................... 14
4.
Nhân sự ....................................................................................................................................... 14
II. Chương 2: Phân tích và thiết kế hệ thống ..................................................................................... 14
1.
Danh sách tính năng .................................................................................................................... 14
2.
Sơ đồ Use Case ........................................................................................................................... 15
3.
Sơ đồ liên kết màn hình (Site map) ............................................................................................. 38
4.
Sơ đồ hoạt động .......................................................................................................................... 39
5.
Cơ sở dữ liệu ............................................................................................................................... 47
6.
Kiến trúc hệ thống ....................................................................................................................... 51
7.
Giao diện ..................................................................................................................................... 54
III. Chương 3: Tổng kết ....................................................................................................................... 75
1.
Kết quả đạt được ......................................................................................................................... 75
2.
Hạn chế ....................................................................................................................................... 75
3.
Hướng phát triển ......................................................................................................................... 75
4.
Cài đặt và sử dụng....................................................................................................................... 75
5.
Bảng phân công công việc .......................................................................................................... 76
TÀI LIỆU THAM KHẢO ........................................................................................................................ 78
4
A. CƠ SỞ LÝ THUYẾT
I. ReactJS
1. ReactJS là gì?
React (Hay ReactJS, React.js) là một thư viện Javascript mã nguồn mở để xây
dựng các thành phần giao diện có thể tái sử dụng. Nó được tạo ra bởi Jordan Walke,
một kỹ sư phần mềm tại Facebook. Người bị ảnh hưởng bởi XHP (Một nền tảng
thành phần HTML cho PHP). React lần đầu tiên được triển khai cho ứng dụng
Newsfeed của Facebook năm 2011, sau đó được triển khai cho Instagram.com năm
2012. Nó được mở mã nguồn (open-sourced) tại JSConf US tháng 5 năm 2013.
Hiện nay, thư viện này nhận được rất nhiều sự quan tâm đến từ cộng đồng. Nó
đang được bảo trì (maintain) bởi Facebook và Instagram, cũng với sự đóng góp của
cộng đồng các lập trình viên giỏi trên Thế giới.
2. Hệ sinh thái của React
React JS thường được mô tả như là một thư viện JavaScript. Đôi khi là cả một
framework JavaScript. Vậy cụ thể nó là gì? Hay là cả hai?
Nhóm chun mơn ở Skillcrush định nghĩa React JS là một thư viện JavaScript,
không phải một framework. Sự khác biệt giữa thư viện JavaScript (như React) và các
framework JavaScript (như Angular) là: Các developer sẽ áp dụng code trong thư viện
vào một lệnh cụ thể, rồi yêu cầu nó. Đối với framework, nó tạo một khung sắp xếp
trang web hay ứng dụng. Rồi sau đó cung cấp các khu vực dành riêng cho framework
code. Để dễ hiểu hơn, hãy tưởng tượng code từ thư viện JavaScript là đồ nội thất,
trang trí cho một căn nhà đã được xây. Cịn framework chính là một bản mẫu mà ta
dựa vào để xây dựng căn nhà.
React JS thường bị nhầm là một framework vì hệ sinh thái mạnh mẽ, cùng khả
năng mở rộng lớn. Do đó người ta xem nó như một thư viện JavaScript rất linh hoạt.
Nên nhớ, khi sử dụng React JS để build website hay UI ứng dụng web:
5
-
Ta có thể truy cập vào Snippet của React code và các thành phần (như các block
của React code, dùng để tạo các phần cụ thể của giao diện người dùng).
-
Có thể sử dụng JSX để trực tiếp tác động vào DOM.
-
Một Virtual DOM, giúp cải thiện đáng kể hiệu năng website.
Nhưng trên hết, React JS có mã nguồn mở, nên ai cũng có thể tải xuống và sửa đổi
miễn phí. Do đó, kích thước thư viện React có thể tăng theo cấp số nhân với vơ vàn
các tiện ích, add-on khác nhau.
3. Đặc trưng cơ bản của ReactJS
Nếu như trước kia muốn thay đổi một thành phần nào đó trên web đòi hỏi chúng ta
phải thực hiện thao tác với DOM. Tuy nhiên với ReactJS được phát triển công nghệ
Virtual DOM thì vấn đề được giải quyết tốt. Virtual DOM là cơng nghệ khi sử dụng
giúp ứng dụng có khả năng hoạt động ổn định và mượt mà ngay cả khi cần thay đổi
thành phần của website liên tục với một trang web lớn, có nhiều thành phần phức tạp.
Đối với ReactJS còn sử dụng một dạng cú pháp mở rộng dành riêng cho Javascript
sở hữu tên gọi là JSM. Nhờ có JSM thì thay bằng việc phải viết cú pháp cho
Javascript vơ cùng phức tạp thì lúc này cú pháp sẽ trở nên gọn gàng, đơn giản hơn rất
nhiều. Nó giúp cơng việc phát triển web của mỗi chúng ta được thực hiện thuận lợi,
hiệu quả với độ chính xác cao hơn.
4. Lý do nên chọn reactjs
-
Dễ dàng để học
Từ những đánh giá, nhận xét của cộng đồng có thể thấy ReactJS khá dễ dàng để
tìm hiểu, tiếp cận và học tập. Với nguồn tài liệu phong phú, đầy đủ cùng những hướng
dẫn chi tiết thì làm quen, hay học thành thạo là điều mà mỗi chúng ta có thể đạt được
khi thực sự đam mê, u thích và dành thời gian để nghiên cứu.
6
Từ tài liệu được cung cấp thì tìm hiểu, thực hành theo khơng q khó khăn. Trong
điều kiện đã có sẵn nền tảng về Javascript thì việc bắt đầu có thể thực hiện chỉ sau vài
ngày ngắn ngủi tìm hiểu và nắm bắt các kiến thức liên quan.
-
Tái sử dụng nhiều thành phần
Đặc trưng nổi bật của ReactJS khi dùng chính là việc tập trung vào giải quyết tầng
view nên thành phần giúp tạo ra ứng dụng chính là component. Đồng thời mỗi chức
năng của ReactJS sẽ được phân chia ra thành từng component khác nhau để sử dụng
hiệu quả. chính điều này tạo điều kiện cho chúng ta có thể tái sử dụng, cũng tránh
được tình trạng lặp code có khả năng xuất hiện.
-
Nhiều cơng cụ hỡ trợ
Một ưu điểm nổi bật, một lợi ích khơng thể bỏ qua khi sử dụng ReactJS chính là
việc nó có rất nhiều công cụ hỗ trợ khác nhau. Từ công cụ kiểm tra tối ưu ứng dụng,
hay công cụ debug,… khi được sử dụng hợp lý giúp quá trình phát triển web, hay ứng
dụng của chúng ta được thực hiện đạt kết quả cao, nhanh chóng và đơn giản hơn.
-
Cợng đờng người dùng đơng đảo
Tốc độ phát triển mạnh mẽ, được hồn thiện cao cùng với độ phổ biến được khẳng
định thì ReactJS giúp người dùng dễ dàng tìm kiếm được sự hỗ trợ khi cần thiết.
Đồng thời việc tìm kiếm thơng tin để giải đáp cho những thắc mắc của người dùng
cũng trở nên đơn giản hơn rất nhiều. Sở hữu cộng đồng phát triển đông đảo, mạnh mẽ
với thư viện được hoàn thiện tốt, tối ưu tối đa để sử dụng sẽ hỗ trợ cho người dùng
khi ứng dụng ReactJS tốt hơn.
5. Tương lai phát triển của ReactJS
Facebook và nhóm phát triển ReactJS đã thể hiện những cam kết nâng cao hiệu
quả hơn nữa cho ReactJS. Đây là điều rất quan trọng khi các đối thủ như VueJS đang
thể hiện tham vọng bám đuổi sát sao. Và những mong đợi dưới đây hy vọng sẽ được
ReactJS cải tiến ở các phiên bản tiếp theo:
7
Cộng đồng ReactJS trơng đợi phương pháp render mới. Ví dụ, ReactJS team có
thể xây dựng thêm cú pháp phân đoạn vào JSX mà không cần key.
Các Developer cũng trông đợi phát triển quy trình xử lý lỗi. Trước đây, khi lỗi
runtime xuất hiện trong lúc render, ReactJS xử lý khá vụng về. Developer phải refresh
trang như thông thường. Ở phiên bản hiện tại, các lỗi vẫn sẽ đưa vô các component
hoặc lifecycle method. Mặc dù điều này giúp ngăn render các data lỗi, nhưng không
phải là ý tưởng tốt cho UX.
Tăng cường server-side rendering. Mặc dù ReactJS phiên bản mới nhất đã tăng
cường điều này, có cải tiến về tốc độ và lý tưởng cho streaming, nhưng vẫn còn mang
tính quảng bá là chủ yếu, chưa mang lại hiệu quả thực sự.
II. NodeJS, ExpressJS
1. NodeJS
NodeJS là một môi trường runtime chạy JavaScript đa nền tảng và có mã nguồn
mở, được sử dụng để chạy các ứng dụng web bên ngồi trình duyệt của client. Nền
tảng này được phát triển bởi Ryan Dahl vào năm 2009, được xem là một giải pháp
hoàn hảo cho các ứng dụng sử dụng nhiều dữ liệu nhờ vào mơ hình hướng sự kiện
(event-driven) khơng đồng bộ.
• Ưu và nhược điểm của Node.JS
Ưu điểm
-
IO hướng sự kiện không đồng bộ, cho phép xử lý nhiều yêu cầu đồng thời.
-
Sử dụng JavaScript – một ngôn ngữ lập trình dễ học.
-
Chia sẻ cùng code ở cả phía client và server.
-
NPM(Node Package Manager) và module Node đang ngày càng phát triển mạnh
mẽ.
-
Cộng đồng hỗ trợ tích cực.
-
Cho phép stream các file có kích thước lớn.
8
Nhược điểm
-
Khơng có khả năng mở rộng, vì vậy khơng thể tận dụng lợi thế mơ hình đa lõi
trong các phần cứng cấp server hiện nay.
-
Khó thao tác với cơ sử dữ liệu quan hệ.
-
Mỗi callback sẽ đi kèm với rất nhiều callback lồng nhau khác.
-
Cần có kiến thức tốt về JavaScript.
-
Không phù hợp với các tác vụ đòi hỏi nhiều CPU.
• Một số lý do nên sử dụng NodeJS:
-
Tốc độ cực nhanh: Được xây dựng dựa trên engine JavaScript V8 của Google
Chrome, do đó các thư viện của nó có khả năng thực thi code chỉ rất nhanh.
-
NPM: Với hơn 50,000 package khác nhau, các developer có thể dễ dàng lựa
chọn bất kỳ tính năng nào để xây dựng cho ứng dụng của mình.
-
Lập trình khơng đồng bộ: Mọi API của Node.JS đều có tính khơng đồng bộ
(non-blocking), do đó một server dựa trên Node.JS khơng cần phải đợi API trả
về dữ liệu.
-
Khơng có buffering: Node.JS giúp tiết kiệm thời gian xử lý file khi cần upload
âm thanh hoặc video vì các ứng dụng này khơng bao giờ buffer dữ liệu mà chỉ
xuất dữ liệu theo từng phần (chunk).
-
Đơn luồng: Node.JS sử dụng mơ hình đơn luồng với vịng lặp sự kiện. Do đó
các ứng dụng có thể xử lý số lượng request lớn hơn rất nhiều so với các server
truyền thống như Apache HTTP Server.
2. ExpressJS
Expressjs hay còn được viết là Express js, Express.js. Đây là một framework mã
nguồn mở miễn phí cho Node.js. Express.js được sử dụng trong thiết kế và xây dựng
các ứng dụng web một cách đơn giản và nhanh chóng.
Vì Express js chỉ u cầu ngơn ngữ lập trình Javascript nên việc xây dựng các ứng
dụng web và API trở nên đơn giản hơn với các lập trình viên và nhà phát triển.
9
Expressjs cũng là một khn khổ của Node.js do đó hầu hết các mã code đã được viết
sẵn cho các lập trình viên có thể làm việc.
Expressjs cũng là một phần của công nghệ giúp quản lý các ứng dụng web một
cách dễ dàng hơn hay còn được gọi là ngăn xếp phần mềm MEAN. Nhờ có thư viện
Javascript của Express js đã giúp cho các nhà lập trình xây dựng nên các ứng dụng
web hiệu quả và nhanh chóng hơn. Expressjs cũng được sử dụng để nâng cao các
chức năng của Node.js.
• Những tính năng của Expressjs
-
Phát triển máy chủ nhanh chóng: Expressjs cung cấp nhiều tính năng dưới dạng
các hàm để dễ dàng sử dụng ở bất kỳ đâu trong chương trình. Điều này đã loại
bỏ nhu cầu viết mã từ đó tiết kiệm được thời gian.
-
Phần mềm trung gian Middleware: Đây là phần mềm trung gian có quyền truy
cập vào cơ sở dữ liệu, yêu cầu của khách hàng và những phần mềm trung gian
khác. Phần mềm Middleware này chịu trách nhiệm chính cho việc tổ chức có hệ
thống các chức năng của Express.js.
-
Định tuyến - Routing: Express js cung cấp cơ chế định tuyến giúp duy trì trạng
thái của website với sự trợ giúp của URL.
-
Tạo mẫu - Templating: Các công cụ tạo khuôn mẫu được Express.js cung cấp
cho phép các nhà xây dựng nội dung động trên các website bằng cách tạo dựng
các mẫu HTML ở phía máy chủ.
-
Gỡ lỗi - Debugging: Để phát triển thành công các ứng dụng web không thể thiết
đi việc gỡ lỗi. Giờ đây với Expressjs việc gỡ lỗi đã trở nên dễ dàng hơn nhờ khả
năng xác định chính xác các phần ứng dụng web có lỗi.
III.
Flask
Flask là một framework ứng dụng web được viết bằng Python. Nó được phát triển
bởi Armin Ronacher, người dẫn đầu một nhóm những người đam mê Python quốc tế
có tên là Poocco. Flask dựa trên bộ công cụ Werkzeg WSGI và template engine
Jinja2.
10
Flask là một micro web framework của Python không cần bất kỳ thư viện hoặc
cơng cụ cụ thể. Nó cũng khơng có lớp trừu tượng hóa cơ sở dữ liệu, các thư viện dựng
sẵn dựa trên bên thứ ba có sẵn và các hàm phổ biến hoặc các phương thức xác thực
mẫu.
• Tính năng của Flask Framework
Phát triển máy chủ
Phát triển trình gỡ lỗi
Hỗ trợ sẵn sàng để kiểm thử đơn vị
Jinja2 templates
RESTful request dispatch
Hỗ trợ bảo mật cookie
Full WSGI compliant
Tài liệu mở rộng
Dựa trên Unicode
Khả năng tương thích cơng cụ dựa trên ứng dụng Google
Nhiều tiện ích mở rộng cho các tính năng mong muốn
Tính modular và thiết kế gọn nhẹ
ORM-agnostic
Độ linh hoạt cao
Cung cấp xử lý HTTP request
API có độc đáo và mạch lạc
Dễ dàng triển khai
• Tại sao nên sử dụng Flask?
Flask cung cấp cho các lập trình viên khả năng tùy biến khi phát triển ứng dụng
web, nó cung cấp cho bạn các cơng cụ, thư viện và cơ chế cho phép bạn xây dựng một
ứng dụng web nhưng nó sẽ khơng thực thi bất kỳ sự phụ thuộc nào hoặc cho bạn biết
dự án sẽ như thế nào.
11
Ứng dụng web có thể là blog, trang web thương mại hoặc một số trang web khác,
nó vẫn cho phép các lập trình viên cơ hội sử dụng một số tiện ích mở rộng để thêm
nhiều chức năng hơn cho ứng dụng web.
• Ưu điểm và Nhược điểm của Flask
Như đã nêu trước đó, Flask được phân loại là Web Framework siêu nhỏ, nhẹ.
Thông thường, một framework vi mô là một framework tối giản hoặc không phụ
thuộc vào thư viện bên ngoài. Và trong mọi trường hợp, khi một lập trình viên sử bất
kỳ framework nào, nó đều có ưu điểm và nhược điểm, flask cũng vậy:
-
Tốc độ
-
Hỗ trợ cho NoQuery
-
Độ phức tạp tối thiểu
-
Chủ nghĩa tối giản tuyệt đối
-
Không có ORM, dễ dàng kết nối với tiện ích mở rộng
-
Trình gỡ lỗi được nhúng trong trình duyệt
-
Mã ngắn và đơn giản trong số các bộ xương Python khác
Điểm nổi bật khi sử dụng Flask để lập trình web là bạn sẽ rất ít bị phụ thuộc bên
thứ 3, do đó đề phòng được các lỗi bảo mật. Bạn có thể kiểm soát mọi thứ khi sử dụng
Flask. Và quan trọng, học Flask giúp bạn hiểu các cơ chế bên trong các Framework
khác. Đây là tiền đề tốt để bạn có thể nắm giữ nhiều cơng nghệ hơn. Mặc dù nhược
điểm của việc sử dụng Flask là đôi khi bạn phải tự mình làm nhiều việc hơn hoặc cần
tự mình gọi thêm các tiện ích mở rộng.
IV.
SocketIO
Để xây dựng một ứng dụng realtime thì chúng ta cần phải sử dụng Socketio. Socketio
có khả năng giúp những bên có địa điểm khác nhau có thể thực hiện dễ dàng hơn các kết
nối với nhau để có thể truyền tải được dữ liệu một cách nhanh chóng và lập tức nhất
thơng qua hệ thống server trung gian. Ngoài ra, Socketio cũng được sử dụng cho các mục
đích khác như: chat, game online, cập nhật kết quả của một trận đấu đang xảy ra,...
12
Socketio không phải là một ngôn ngữ, mà chỉ là 1 cơng cụ giúp thực hiện những ứng
dụng realtime. Vì thế, khơng thể sử dụng socketio để thay thế hồn tồn cho một ngơn
ngữ, mà phải sử dụng kết hợp với một ngơn ngữ khác. Ngơn ngữ đó có thể là php,
asp.net, nodejs,...
Socket.io được cộng đồng lâp trình viên sử dụng rất nhiều, bởi tốc độ cũng như sự
tiện lợi của nó. Socket.io cung cấp cho chúng ta nhiều phương thức cũng như các tính
năng nổi bật như: bảo mật, birnary, tự động kết nối, phát hiện ngắt kết nối, ghép kênh, tạo
phòng,..
Làm thế nào để sử dụng Socketio
Cấu trúc một ứng dụng realtime sử dụng socket bao gồm 2 phần: phía server, phía client.
-
Phía server Đây là nơi sẽ cài đặt socket io. Ngơn ngữ để dựng server có thể là php,
asp.net, nodejs,... Tuy nhiên, tùy vào ngôn ngữ lựa chọn mà cách cấu trúc server
khác nhau. Ở đây, nếu được thì khuyến khích sử dụng nodejs để dựng server, vì
như vậy có thể cài trực tiếp socketio vào cùng một server. Nếu sử dụng php thì
phải cài thêm những package khác, hoặc phải chuẩn bị riêng server để chạy
socketio.
-
Phía client: Ở phía client sẽ xây dựng giao diện người dùng. Ở đây có thể sử dụng
js, hoặc các thư viện của js như jquery,... Nói chung là ngơn ngữ gì cũng được.
B. XÂY DỰNG ỨNG DỤNG
I. Chương 1: Tổng Quan
1. Tên đề tài
Nghiên cứu phương pháp xử lý thông tin dữ liệu y tế và xây dựng ứng dụng hỗ trợ
chẩn đoán bệnh
2. Nền tảng ứng dụng
Web
13
3. Công nghệ
Front-end: ReactJS, SocketIO
Back-end: NodeJS – ExpressJS, Python – Flask, AI model, SocketIO
Database: Mongodb
Storage: Firebase storage
Hosting: Firebase hosting, Render
4. Nhân sự
STT
1
2
Họ và tên
Dương Hiển Thế
Nguyễn Tấn Thành
MSSV
19522252
19522239
II. Chương 2: Phân tích và thiết kế hệ thống
1. Danh sách tính năng
Tên tính năng
Use case
1
Đăng nhập
Xác thực người dùng
2
Đăng ký
3
Đổi mật khẩu
4
Quên mật khẩu
5
Đăng xuất
6
Xem thông tin cá nhân
7
Chỉnh sửa thông tin cá nhân
8
Xem chi tiết đơn hàng
9
Xem lịch sử mua hàng
10
Xem sản phẩm
11
Xem tin tức
12
Xem chi tiết tin tức
13
Xem chi tiết sản phẩm
14
Xem giỏ hàng
15
Thêm sản phẩm vào giỏ hàng
Stt
Quản lý thông tin cá nhân
Xem sản phẩm, tin tức
Quản lý giỏ hàng
14
16
Sửa sản phẩm trong gió hàng
17
Xóa sản phẩm trong giỏ hàng
18
Tiến hành đặt hàng
19
Thanh tốn
20
Thêm sản phẩm
21
Sửa sản phẩm
22
Xóa sản phẩm
23
Thêm tài khoản
24
Sửa tài khoản
25
Xóa tài khoản
26
Thêm đơn hàng
27
Sửa đơn hàng
28
Xóa đơn hàng
29
Thêm tin tức
30
Sửa tin tức
31
Xóa tin tức
32
Chat với admin
33
Chuẩn đoán bệnh với AI
34
Thống kê
Mua hàng
Quản lý sản phẩm
Quản lý tài khoản
Quản lý đơn hàng
Quản lý tin tức
Tư vấn khách hàng
Thống kê
2. Sơ đồ Use Case
2.1 Danh sách các actor:
STT
Ý nghĩa/Ghi chú
Tên Actor
1
Khách
Khách hàng, người dùng chưa đăng ký tài khoản
2
Người dùng
Khách hàng, người dùng đã đăng ký tài khoản
3
Quản trị viên
Người quản trị, quản lý trang web, quản lý cửa hàng
15
16
2.2 Usecase xác thực người dùng
2.2.1 Usecase đăng ký tài khoản
17
Đăng ký tài khoản
Tên yêu cầu
Mô tả
Đăng ký tài khoản người dùng
Tác nhân
Khách
Điều kiện trước
Chưa đăng nhập
Điều kiện sau
Trạng thái hệ thống sau khi đăng kí tài khoản
Ngoại lệ
Khơng có
1. Truy cập vào đường dẫn /dang-ky
Luồng xử lý chính
2. Người dùng điền các thông tin: email, mật khẩu, xác
nhận mật khẩu, họ và tên, giới tính, ngày sinh.
3. Hệ thống xác nhận các trường dữ liệu hợp lệ
4. Hệ thống thêm 1 document vào database
5. Ứng dụng thông báo đăng ký thành công, chuyển
người dùng đến trang đăng nhập
Luồng xử lý phụ
I.
Thơng tin đăng ký khơng chính xác: Tài khoản đã tồn tại
18
1. Hệ thống thông báo tài khoản đã tồn tại
2. Hệ thống yêu cầu nhập lại thông tin đăng ký
2.2.2 Usecase đăng nhập
Đăng nhập
Tên yêu cầu
Mô tả
Đăng nhập tài khoản để sử dụng
Tác nhân
Người dùng, Quản trị viên
Điều kiện trước
Chưa đăng nhập
Điều kiện sau
Đăng nhập thành cơng
Ngoại lệ
Khơng có
Luồng xử lý chính
1. Truy cập vào đường dẫn /dang-nhap
2. Người dùng điền các thông tin: email, mật khẩu
3. Hệ thống xác nhận có trường dữ liệu hợp lệ
4. Thơng báo đăng nhập thành công, chuyển đến
trang chủ
Luồng xử lý phụ
1. Hệ thống thơng báo nếu có lỗi
2.2.3 Usecase qn mật khẩu
19
Tên yêu cầu
Mô tả
Quên mật khẩu
Quên mật khẩu để lấy lại mật khẩu bằng cách xác nhận mã bí
mật được gửi tới email đăng ký tài khoản ban đầu
Tác nhân
Người dùng, Quản trị viên
Điều kiện trước
Chưa đăng nhập
Điều kiện sau
Đặt lại mật khẩu người dùng
Ngoại lệ
Khơng có
1. Truy cập vào đường dẫn /quen-mat-khau
Luồng xử lý chính
2. Người dùng nhập email
3. Nhấn nút gửi mã
4. Hệ thống gửi email chứa mã xác nhận đến cho
người dùng
5. Người dùng xác nhận mã trong màn hình tiếp theo
6. Hệ thống xác nhận mật mã
7. Người dùng nhập mật khẩu và xác nhận mật khẩu
mới
Luồng xử lý phụ
I.
Mã bí mật khơng chính xác q 3 lần
20
1. Hệ thống từ chối việc đặt lại mật khẩu
2.2.4 Đổi mật khẩu
Đăng nhập
Tên yêu cầu
Mô tả
Người dùng đổi mật khẩu theo nhu cầu sử dụng
Tác nhân
Người dùng, Quản trị viên
Điều kiện trước
Đã đăng nhập
Điều kiện sau
Thông tin mật khẩu trong database được thay đổi
Ngoại lệ
Khơng có
Luồng xử lý chính
1. Người dùng đã đăng nhập vào hệ thống
2. Chọn vào ảnh đại diện trên thanh header
3. Chọn đổi mật khẩu
4. Điền mật khẩu hiện tại, mật khẩu mới, xác nhận mật
khẩu mới
5. Ấn xác nhận
21
6. Ứng dụng thông báo đổi mật khẩu thành công
Luồng xử lý phụ
Hệ thống thơng báo nếu có lỗi
2.3 Usecase quản lý thông tin cá nhân
Tên yêu cầu
Mô tả
Quản lý thông tin cá nhân
Người dùng quản lý thông cá nhân, xem, sửa thông tin cá
nhân, lịch sử mua hàng, chi tiết đơn hàng
Tác nhân
Người dùng, Quản trị viên
Điều kiện trước
Đã đăng nhập
Điều kiện sau
Thực hiện thành công hành động
Ngoại lệ
Không có
Luồng xử lý chính
I.
Xem thơng tin cá nhân, lịch sử mua hàng
22
1. Chọn vào ảnh đại diện trên thanh header
2. Chọn xem thông tin tài khoản
3. Hệ thống trả về dữ liệu thông tin tài khoản
II.
Chỉnh sửa thông tin cá nhân
1. Chọn vào ảnh đại diện trên thanh header
2. Chọn xem thông tin tài khoản
3. Hệ thống trả về dữ liệu thông tin tài khoản
4. Người dùng thay đổi thông tin ở trong các khung
input
5. Người dùng ấn cập nhật
6. Hệ thống kiểm tra dữ liệu, thực hiện thay đổi csdl
nếu dữ liệu hợp lệ
III.
Xem chi tiết đơn hàng
1. Chọn vào ảnh đại diện trên thanh header
2. Chọn xem thông tin tài khoản
3. Hệ thống trả về dữ liệu thông tin tài khoản
4. Người dùng ấn vào 1 dòng trong bảng lịch sử mua
hàng
5. Hệ thống trả về dữ liệu chi tiết của đơn hàng vừa
chọn
Luồng xử lý phụ
Hệ thống thông báo nếu có lỗi
23
2.4 Xem sản phẩm, tin tức
Tên yêu cầu
Mô tả
Xem sản phẩm, tin tức
Người dùng truy cập vào các trang Rượu, combo khuyến
mãi, phụ kiện, tin tức để xem các thông tin những sản phẩm,
tin tức. Chọn vào 1 sản phẩm/tin tức để xem thơng tin chi tiết
của nó
Tác nhân
Khách, Người dùng, Quản trị viên
Điều kiện trước
Khống có
Điều kiện sau
Xem được thơng tin sản phẩm/ tin tức
Ngoại lệ
Khơng có
Luồng xử lý chính
I.
Xem các sản phẩm/tin tức có trong cửa hàng
1. Vào giao diện chính của ứng dụng
2. Chọn vào các tab Rượu/ Combo sản phẩm đặc biệt/
Phụ kiện/ Tin tức để xem danh sách các sản phẩm
3. Hệ thống trả về danh sách
II.
Lọc sản phẩm rượu/ combo khuyến mãi
1. Truy cập vào giao diện của tab rượu/ combo
24
khuyến mãi
2. Chọn các bộ lọc để lọc ra các sản phẩm cần tìm
3. Hệ thống trả về các sản phẩm như đã lọc
III.
Xem chi tiết sản phẩm/ tin tức
1. Truy cập vào các trang danh sách sản phẩm/tin tức
2. Chọn vào 1 sản phẩm/ tin tức
3. Hệ thống trả về dữ liệu chi tiết của các sản phẩm/
tin tức.
Luồng xử lý phụ
Hệ thống thông báo nếu xảy ra lỗi
2.5 Quản lý giỏ hàng
Tên yêu cầu
Mô tả
Quản lý giỏ hàng
Người dùng điều chỉnh các sản phẩm có trong giỏ hàng trước
khi thực hiện đặt hàng
Tác nhân
Khách, Người dùng, Quản trị viên
Điều kiện trước
Khơng có
Điều kiện sau
Điều chỉnh giỏ hàng thành công
25