Báo cáo phần mềm mã nguồn mở tìm hiểu idea eclipse jspservlet và ứng dụng để xây dựng website bán điện thoại đi động bằng ngôn ngữ java Chương 1: Tổng quan về Website bán điện thoại di động Chương 2: Sơ lược về phần mềm mã nguồn mở và công cụ thực hiện Chương 3: Phân tích thiết kế hệ thống Chương 4: Thử nghiệm và đánh giá
Trang 1TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI
KHOA CÔNG NGHỆ THÔNG TIN -
BÁO CÁO THỰC NGHIỆM THUỘC HỌC PHẦN:
PHẦN MỀM MÃ NGUỒN MỞ
TÌM HIỂU IDEA ECLIPSE, JSP/SERVLET VÀ ỨNG DỤNG ĐỂ XÂY DỰNG WEBSITE BÁN ĐIỆN THOẠI DI ĐỘNG BẰNG NGÔN NGỮ JAVA
GVHD:
Sinh viên :
Nhóm:
Trang 2Mở đầu
Trong thời đại kỷ nguyên số ngày nay, Công nghệ thông tin không những
là một phương tiện hữu ích mà còn giữ vai trò ngày càng quan trọng trong côngviệc quyết định trình độ phát triển từng khu vực, từng quốc gia, thông qua việcngày càng làm tăng năng suất một cách tối đa Việc áp dụng công nghệ tân tiếntrong mọi mặt đời sống là một điều tất yếu
Khi xã hội ngày càng phát triển, mức sống của người dân được nâng caothu nhập kinh tế ngày càng được cải thiện thì việc mua sắm, shopping khôngcòn là xa xỉ với mọi người nữa mà ngược lại nó là nhu cầu cần thiết với ngườidân hiện nay Hầu hết mỗi người đều có nhu cầu mua sắm cho bản thân và giađình mình Tuy nhiên, với cuộc sống ngày càng bận rộn như hiện nay thì việcmuốn mua một món đồ mình ưa thích thì người tiêu dùng phải đến tận cửa hàng
để chọn lựa vì thế sẽ mất khá nhiều thời gian và công sức
Cùng với các lý do nêu trên, qua tìm hiểu nhóm đồ án được biết việc ứngdụng bán hàng trực tuyến sẽ giúp cho khách hàng giảm bớt được thời gian vàcông sức phải đến tận cửa hàng để mua Muốn lựa chọn cho mình một sản phẩmưng ý phù hợp với túi tiền thì khách hàng chỉ cần ngồi bên chiếc máy tính cónối mạng internet là có thế mua được mặt hàng mình cần
Do đó nhóm đề tài chọn thực hiện đề tài “Tìm hiểu IDE Eclipse,JSP/Servlet và ứng dụng xây dựng Website bán điện thoại di động bằng ngônngữ Java”
Phần mềm được xây dựng với định hướng giúp việc mua sắm của kháchhàng dễ dàng và nhanh gọn hơn, không mất thời gian và công sức
Trang 3M c l c ục lục ục lục
Danh sách hình vẽ - Biểu đồ 4
Chương 1 Tổng quan về Website bán điện thoại di động 6
1.1 Tổng quan: 6
1.2 Tìm hiểu IDE Eclipse, JSP/Servlet và ứng dụng xây dựng Website bán điện thoại di động bằng ngôn ngữ Java 7
1.3 Công nghệ sử dụng: 7
Chương 2 Sơ lược về phần mềm mã nguồn mở và công cụ thực hiện 8
2.1 Tổng quan về phần mềm mã nguồn mở 8
2.1.1 Giới thiệu về phần mềm mã nguồn mở 8
2.1.2 Ưu- nhược điểm của phần mềm mã nguồn mở 8
2.1.2.1 Ưu điểm 8
2.1.2.2 Nhược điểm 9
2.2 Giới thiệu Eclipse IDE 10
2.3 Giới thiệu về ngôn ngữ lập trình Java 11
2.3.1 Tổng quan về Java 11
2.3.2 Các ứng dụng và lợi ích của Java 11
2.4 Giới thiệu về JSP/Servlet 12
2.4.1 Tổng quan 12
2.4.2 Chu trình sống 12
2.4.2.1 Biên dịch trang 13
2.4.2.2 Nạp trang 13
2.4.2.3 Khởi tạo 13
2.4.2.4 Thực thi 14
2.4.2.5 Dọn dẹp 14
Chương 3 Phân tích thiết kế hệ thống 15
3.1 Khảo sát hiện trạng: 15
3.2 Các chức năng của hệ thống 15
Trang 43.3 Phân tích use case 17
3.3.1 Biểu đồ use case tổng quát 17
3.3.2 Đặc tả use case 19
3.3.2.1 Mô tả use case “Xem thông tin sản phẩm” 19
3.3.2.2 Mô tả use case “Tìm kiếm sản phẩm” 22
3.3.2.3 Mô tả use case “Xem danh mục” 24
3.3.2.4 Mô tả Use case “Xem sản phẩm theo danh mục” 27
3.3.2.5 Mô tả use case “Bình Luận” 30
3.3.2.6 Mô tả Use case “Quản lí giỏ hàng” 34
3.3.2.7 Mô tả use case “Đặt Hàng” 37
3.3.2.8 Mô tả Use case: “Đăng kí” 41
3.3.2.9 Mô tả use case: “Sửa thông tin tài khoản” 43
3.3.2.10 Mô tả use case: Đăng nhập 48
3.3.2.11 Mô tả use case “Bảo trì danh mục” 51
3.3.2.12 Mô tả use case “Bảo trì sản phẩm” 57
3.3.2.13 Mô tả use case “Duyệt đơn hàng” 63
3.3.2.14 Mô tả Use case “Quản lý đợt giảm giá” 68
3.3.2.15 Mô tả Use case “Báo cáo tồn kho” 75
3.3.2.16 Mô tả Use case “Quản lý nhập hàng” 77
3.4 Mô hình dữ liệu quan hệ 83
3.5 Thiết kế dữ liệu 84
3.5.2 Từ điển dữ liệu 85
Chương 4 Thử nghiệm và đánh giá 94
4.1 Hướng dẫn cài đặt và demo sản phẩm: 94
4.1.1 Cài đặt chương trình 94
4.1.2 Demo sản phẩm 99
4.1.2.1 Giao diện người dùng 99
4.1.2.2 Giao diện người quản trị 105
4.2 Kết luận: 111
Tài liệu tham khảo 112
Trang 5Danh sách hình vẽ - Biểu đồ
Bảng 3 1: Bảng dữ liệu Category 85
Bảng 3 2: Bảng dữ liệu Brand 85
Bảng 3 3: Bảng dữ liệu Product 86
Bảng 3 4: Bảng dữ liệu OrderDetail 86
Bảng 3 5: Bảng dữ liệu Order 87
Bảng 3 6: Bảng dữ liệu Employee 88
Bảng 3 7: Bảng dữ liệu GoodReceipt 88
Bảng 3 8: Bảng dữ liệu Seri 89
Bảng 3 9: Bảng dữ liệu Bill 89
Bảng 3 10: Bảng dữ liệu GoodReceiptDetail 90
Bảng 3 11: Bảng dữ liệu Promotion 90
Bảng 3 12: Bảng dữ liệu Promotion_Detail 91
Bảng 3 13: Bảng dữ liệu Comment 91
Bảng 3 14: Bảng dữ liệu Customers 92
Hình 3 1: Mô hình Diagram 84
Hình 3 2: Giao diện trang chủ website 98
Hình 3 3: Giao diện sau khi đăng nhập 99
Hình 3 4: Giao diện đăng kí khách hàng 100
Hình 3 5: Giao diện hồ sơ khách hàng 100
Hình 3 6: Giao diện đổi mật khẩu khách hàng 101
Trang 6Hình 3 8: Giao diện thay đổi mật khẩu khách hàng 102
Hình 3 9: Giao diện chi tiết sản phẩm 103
Hình 3 10: Giao diện bình luận sản phẩm 103
Hình 3 11: Giao diện giỏ hàng 103
Hình 3 12: Giao diện đặt hàng 104
Hình 3 13: Giao diện đăng nhập Admin 105
Hình 3 14: Giao diện Admin 105
Hình 3 15: Giao diện nhập mới sản phẩm 106
Hình 3 16: Giao diện đợt giảm giá 106
Hình 3 17: Giao diện chi tiết đợt giảm giá 107
Hình 3 18: Giao diện đơn hàng đang chờ duyệt 107
Hình 3 19: Giao diện đơn hàng chọn shipper 108
Hình 3 20: Giao diện đơn hàng đang ship 108
Hình 3 21: Giao diện đơn hàng hoàn thành 109
Hình 3 22: Giao diện sản phẩm tồn kho 109
Trang 7Chương 1 Tổng quan về Website bán điện thoại di
động
1.1 Tổng quan:
Ngày nay, ứng dụng công nghệ thông tin và việc tin học hóa được xem làmột trong những yếu tố mang tính quyết định trong hoạt động của chính phủ, tổchức, cũng như của các công ty, nó đóng vai trò hết sức quan trọng, có thể tạo
ra những bước đột phá mạnh mẽ
Cùng với sự phát triển không ngừng về kỹ thuật máy tính và mạng điện tử,công nghệ thông tin cũng được những công nghệ có đẳng cấp cao và lần lượtchinh phục hết đỉnh cao này đến đỉnh cao khác Mạng Internet là một trongnhững sản phẩm có giá trị hết sức lớn lao và ngày càng trở nên một công cụkhông thể thiếu, là nền tảng chính cho sự truyền tải, trao đổi thông tin trên toàncầu
Giờ đây, mọi việc liên quan đến thông tin trở nên thật dễ dàng cho người sửdụng: chỉ cẩn có một máy tính kết nối internet và một dòng dữ liệu truy tìm thìgần như lập tức…cả thế giới về vấn đề mà bạn đang quan tâm sẽ hiện ra, có đầy
đủ thông tin, hình ảnh và thậm chí đôi lúc có cả những âm thanh nếu bạn cần…Bằng Internet, chúng ta đã thực hiện được nhiều công việc với tốc độ nhanhhơn và chi phí thấp hơn nhiều so với cách thức truyền thống Chính điều này, đãthúc đẩy sự khai sinh và phát triển của thương mại điện tử và chính phủ điện tửtrên khắp thế giới, làm biến đổi đáng kể bộ mặt văn hóa, nâng cao chất lượngcuộc sống con người
Trong hoạt động sản xuất, kinh doanh, giờ đây, thương mại điện tử đãkhẳng định được vai trờ xúc tiến và thúc đẩy sự phát triển của doanh nghiệp.Đối với một cửa hàng hay shop, việc quảng bá và giới thiệu đến khách hàng các
Trang 8quảng bá tất cả các sản phẩm của mình bán Vì vậy, em đã thực hiện đề tài “Tìmhiểu IDE Eclipse, JSP/Servlet và ứng dụng xây dựng Website bán điện thoại diđộng bằng ngôn ngữ Java” Người chủ cửa hàng đưa các sản phẩm đó là lênwebsite của mình và quản lí bằng website đó Khách hàng có thể đặt mua hàngtrên website mà không cần đến cửa hàng Chủ cửa hàng sẽ gửi sản phẩm đến tậntay cho khách hàng.
1.2 Tìm hiểu IDE Eclipse, JSP/Servlet và ứng dụng xây dựng Website bán điện thoại di động bằng ngôn ngữ Java.
a.Lý thuyết:
+ Phần mềm mã nguồn mở
+ Phân tích thiết kế Database: Diagram
+ Tìm hiểu về HTML, CSS, AJAX, JAVA, JSP-Servlet
b.Thực hành: Xây dựng, thiết kế Website thực hiện các chức năng:
+ Đăng ký, đăng nhập
+ Quản lý giỏ hàng, mua hàng, thanh toán, bình luận, đánh giá
+ Thêm, xóa, sửa hàng hóa cho Admin
+ Báo cáo tồn kho
1.3 Công nghệ sử dụng:
SQL Server 2016
Eclipse IDE
Tomcat 9.0
Trang 9Chương 2 Sơ lược về phần mềm mã nguồn mở và
công cụ thực hiện
2.1Tổng quan về phần mềm mã nguồn mở
2.1.1 Giới thiệu về phần mềm mã nguồn mở
Phần mềm mã nguồn mở là những phần mềm được cung cấp dưới cả
phí v b n quy n: người dùng có quyền sửa đổi, cải tiến, phát triển, nângi dùng có quy n s a đ i, c i ti n, phát tri n, nângửa đổi, cải tiến, phát triển, nâng ổi, cải tiến, phát triển, nâng ếu là miễn ển, nâng
c p theo m t s nguyên t c chung quy đ nh trong gi y phép PMNM (ví dột số nguyên tắc chung quy định trong giấy phép PMNM (ví dụ ố nguyên tắc chung quy định trong giấy phép PMNM (ví dụ ắc chung quy định trong giấy phép PMNM (ví dụ ịnh trong giấy phép PMNM (ví dụ ụGeneral Public Licence – GPL) mà không c n xin phép ai, đi u mà h khôngần xin phép ai, điều mà họ không ọ không
được phép làm đối với các phần mềm nguồn đóng (tức là phần mềmc phép làm đ i v i các ph n m m ngu n đóng (t c là ph n m mố nguyên tắc chung quy định trong giấy phép PMNM (ví dụ ới các phần mềm nguồn đóng (tức là phần mềm ần xin phép ai, điều mà họ không ồn đóng (tức là phần mềm ức là phần mềm ần xin phép ai, điều mà họ không
thư ng m i) Nhìn chung, thu t ng “Open source” đại) Nhìn chung, thuật ngữ “Open source” được dùng để lôi cuốn ật ngữ “Open source” được dùng để lôi cuốn ữ “Open source” được dùng để lôi cuốn ược phép làm đối với các phần mềm nguồn đóng (tức là phần mềmc dùng đ lôi cu nển, nâng ố nguyên tắc chung quy định trong giấy phép PMNM (ví dụcác nhà kinh doanh, m t đi u thu n l i chính là s mi n phí và cho phépột số nguyên tắc chung quy định trong giấy phép PMNM (ví dụ ật ngữ “Open source” được dùng để lôi cuốn ợc phép làm đối với các phần mềm nguồn đóng (tức là phần mềm ự miễn phí và cho phép ễn
người dùng có quyền sửa đổi, cải tiến, phát triển, nângi dùng có quy n “s h u h th ng”.ở hữu hệ thống” ữ “Open source” được dùng để lôi cuốn ệ thống” ố nguyên tắc chung quy định trong giấy phép PMNM (ví dụ
Nhà cung cấp phần mềm nguồn mở có quyền yêu cầu người dùng trả một
số chi phí về các dịch vụ bảo hành, huấn luyện, nâng cấp, tư vấn, vv… tức lànhững dịch vụ thực sự đã thực hiện để phục vụ người dùng, nhưng không đượcbán các sản phẩm nguồn mở vì nó là tài sản của trí tuệ chung, không phải là tàisản riêng của một nhà cung cấp nào
Tiện ích mà mã nguồn mở mang lại chính là quyền tự do sử dụng chươngtrình cho mọi mục đích, quyền tự do để nghiên cứu cấu trúc của chương trình,chỉnh sữa phù hợp với nhu cầu, truy cập vào mã nguồn, quyền tự do phân phốilại các phiên bản cho nhiều người, quyền tự do cải tiến chương trình và pháthành những bản cải tiến vì mục đích công cộng
2.1.2 Ưu- nhược điểm của phần mềm mã nguồn mở
Trang 10 Sử dụng miễn phí : Đây chính là một trong những ưu điểm lớn nhấtcủa mã Lập trình viên không cần phải tốn quá nhiều thời gian, chi phíhay công sức cũng có thể tạo ra được một website như mong muốn chỉtrong khoảng thời gian ngắn.
lực góp phần thúc đẩy sự phát triển mạnh mẽ của mã Tất cả các thông tin
và kiến thức về mã nguồn mở đều được chia sẻ rộng rãi trên mạnginternet Nếu bạn gặp bất kỳ khó khăn hay vướng mắc nào, bạn có thể dễdàng tìm được hướng giải quyết nhanh chóng với sự trợ giúp của cộngđồng người sử dụng
nguồn mở đều có tốc độ cập nhật phiên bản mới và vá lỗi khá nhanh
chóng Sử dụng miễn phí là ưu điểm vượt trội của mã nguồn mở
phục vụ nhu cầu chung cho cả cộng đồng Chính vì thế, việc tùy biến haychỉnh sửa theo hướng cá nhân hóa thường gặp phải nhiều khó khăn Vìbạn sẽ phải chỉnh sửa lại mã nguồn lập trình của website đó Đồng thời,bạn còn phải đảm bảo website đó vẫn hoạt động ổn định
nhật phiên bản mới và vá lỗi nhanh chóng Tuy nhiên, nếu trong quá trìnhvận hành ai đó phát hiện ra lỗ hổng bảo mật trước khi bản vá lỗi được cậpnhật thì họ sẽ nhanh chóng lợi dụng lỗ hổng đó để tấn công website nhằmgây ra các thiệt hại về dữ liệu và thông tin
được thiết kế bằng mã nguồn mở thì các giao diện hay chức năng khágiống nhau Chính vì thế, điều này khiến cho website của bạn sẽ khó cóthể tạo được dấu ấn riêng
Trang 11 Tính tương hỗ với các hệ thống phần mềm đóng : Các phần mềm nguồn
mở, nhất là khi cài trên máy để bàn, thường không hoàn toàn tương thíchvới phần mềm đóng Với những tổ chức đã đầu tư nhiều cho việc thiết lậpcác định dạng lưu trữ dữ liệu và ứng dụng phần mềm đóng, việc cố gắngtích hợp những giải pháp phần mềm nguồn mở có thể sẽ rất tốn kém
ý đến thiết kế giao diện và phát triển tiện ích
2.2Giới thiệu Eclipse IDE
Eclipse là phần mềm mã nguồn mở, được các nhà phát triển sử dụng đểxây dựng những ứng dụng J2EE, sử dụng Eclipse nhà phát triển có thể tích hợpvới nhiều công cụ hỗ trợ khá để có được một bộ công cụ hòan chỉnh mà khôngcần dùng đến phần mềm riêng nào khác.Eclipse SDK bao gồm 3 phầnchính: Platform, Java Development Toolkit (JDT), Plug-in DevelopmentEnvironment (PDE) Với JDT, Eclipse được xem như là một môi trường hỗ trợphát triển Java mạnh mẽ PDE hỗ trợ việc mở rộng Eclipse, tích hợp các Plug-invào Eclipse Platform Eclipse Platform là nền tảng của toàn bộ phần mềmEclipse, mục đích của nó là cung cấp những dịch vụ cần thiết cho việc tích hợpnhững bộ công cụ phát triển phần mếm khách dưới dạng Plug-in, bản thân JDTcũng có thể được coi như là một Plug-in làm cho Eclipse như là một Java IDE(Integrated Development Enviroment)
Ưu điểm
xuyên qua nhiều kiểu nội dung và các nhà cung cấp công cụ khác nhau
các nhà cung cấp phần mềm độc lập (ISV)
Trang 12 Hỗ trợ các công cụ thao tác các kiểu nội dung bất kỳ (bao gồm cả HTML,Java, C, JSP, EJB, XML, và GIF).
Nhược điểm
nay eclipse đã khắc phục bằng phiên bản Eclipse Luna, không cần cài đặt
dụng nó máy của bạn cũng cần có cấu hình tương đối cao
2.3Giới thiệu về ngôn ngữ lập trình Java
2.3.1 Tổng quan về Java
Ngôn ngữ lập trình Java ban đầu được phát triển bởi Sun Microsystems
do James Gosling khởi xướng và phát hành vào năm 1995 (Java 1.0 [J2SE]).Tính đến thời điểm này (tháng 2/2015) phiên bản mới nhất của Java StandardEdition (JSE) là 8 Với ưu thế về đa nền tảng (multi platform) Java càng lúccàng được ứng dụng rộng rãi trên nhiều thiết bị từ máy tính đến mobile và nhiềuthiết bị phần cứng khác
2.3.2 Các ứng dụng và lợi ích của Java
Viết ứng dụng web (J2EE): Java thường được sử dụng để xây dựng các
hệ thống web lớn đòi hỏi độ bảo mật cao, số lượng người dùng lớn như ngânhàng, phần mềm quản lý bệnh viện, CRM, HRM Đối với các website nhỏthông thường rất ít viết bằng Java
Trang 13Viết ứng dụng mobile (J2ME): Trước đây nền tảng J2ME thường được sửdụng để viết game và app cho di động feature phone (file jar) và giờ đây khismartphone Android lên ngôi Java lại tiếp tục được sử dụng để viết app và gamecho nền tảng Android (file apk).
Viết ứng dụng desktop (J2SE): Các ứng dụng desktop viết bằng Java thật
sự không nhiều có thể kể đến một số phần mềm như JMeter hoặc DesignerVista Lợi thế lớn nhất của ứng dụng Java là bạn chỉ viết một lần và sau đó cóthể đem chương trình lên Windows, Linux hay Mac để chạy mà không cần phảiviết lại Tuy nhiên do chạy trên JVM nên performance của ứng dụng thấp hơnmột chút so với các ngôn ngữ như C/C++, C#
2.4Giới thiệu về JSP/Servlet
2.4.1 Tổng quan
JSP (viết tắt của tiếng Anh JavaServer Pages) còn được biết đến với mộtcái tên khác là Java Scripting Preprocessor – tạm dịch là “Bộ tiền xử lý văn lệnhJava” – là một công nghệ Java cho phép các nhà phát triển tạo nội dung HTML,XML hay một số định dạng khác của trang web một cách năng động, trong khihồi âm yêu cầu của trình khách Công nghệ này cho phép người ta nhúng mãJava và một số hành động xử lý đã được định trước (pre-defined actions) vàotrong nội dung tĩnh của trang
JSP là cách đơn giản hóa hơn cho Servlet Nếu như đối với Servlet phảiviết mã Java và biên dịch bằng tay trước khi sử dụng với trình chủ Web serverthì JSP không cần điều này JSP viết mã Java tương tự Servlet nhưng cho phéptrộn lẫn Java với các thẻ HTML để tạo ra Servlet xử lý các yêu cầu mà trìnhkhác gửi đến trang
JSP đơn giản và dễ sử dụng hơn Servlet mặc dù sau khi biên dịch và thựcthi chúng chỉ là một
Trang 142.4.2.1Biên dịch trang
Khi trình duyệt yêu cầu trang JSP, Web server sẽ kiểm tra xem trang JSP
đã được biên dịch hay chưa Nếu chưa biên dịch hoặc đã biên dịch nhưng trangJSP mới vừa thay đổi mã nguồn thì Web Server sẽ thực hiện biên dịch trangJSP Quá trình biên dịch JSP thực tế là chuyển trang JSP thành servlet File biêndịch class của trang chỉ diễn ra một lần Nếu trang đã biên dịch và sau đókhông bị thay đổi trong mã nguồn thì quá trình biên dịch sẽ không xảy ra nữa,
do đó mà tốc độ thực thi sẽ nhanh hơn Sau khi biên dịch, mã trang sẽ được nạpvào bộ nhớ để thực thi
Quá trình biên dich trang JSP sẽ được diễn ra như sau:Bước 1: Kiểm tra xem trang đã được dịch thành mã nguồn tương đương servlethay chưa
Bước 2: Nếu chưa được biên dịch thì trang JSP sẽ được biên dịch thành filenguồn java theo cấu trúc của servlet Gọi trình biên dịch javac biên dịch filenguồn java thành file thực thi của servlet class
Bước 3: Nạp servlet đã biên dịch ở bước 2, thực thi trả kết quả về cho trìnhkhách
Bước 4: Nếu file JSP đã được biên dịch trước đó : thực hiện kiểm tra xem nộidung file jsp có thay đổi không, Nếu có thì quay lại bước 2 biên dịch lại trang,nếu không thì quay lại bước 3
2.4.2.2Nạp trang
Kể từ giai đoạn này, quá trình nạp trang tương tự như servlet (trang JSPsau khi biên dịch có thể coi như một servlet) Chỉ có một điểm khác là servletchỉ được nạp một lần trong khi mã trang JSP mặc dù đã biên dịch nhưng phảinạp lại nhiều lần mỗi khi web server nhận được yêu cầu trang từ trình duyệt
2.4.2.3Khởi tạo
Trang 15Khi nạp mã trang thành công, Web server sẽ gọi đến phương thức khỏitạo trang Và mặc dù JSP được biên dịch ra servlet nhưng phương thức khởi tạocho trang JSP lại mang tên là jspInit() chứ không phải là init() như servlet.
2.4.2.4Thực thi
Sau quá trình khởi tạo, Web server sẽ gọi đến phương thức _jspService(khác với servlet gọi đến doPost(), doGet() hoặc service()) Phương thức_jspService sẽ chuyển đến hai lớp đối tượng HttpServletRequest vàHttpServletResponse để đọc và ghi kết xuất trả về trình khách
Trang 16Chương 3 Phân tích thiết kế hệ thống
3.1 Khảo sát hiện trạng:
Công ty bán nhiều loại sản phẩm (Product), thông tin về loại sản phẩm baogồm mã sản phẩm được dùng để phân biệt các loại sản phẩm, tên, giá, số lượng,ảnh,hãng sản xuất, mô tả
Hãng sản xuất sản xuất nhiều loại sản phẩm, một loại sản phẩm chỉ thuộc 1hãng sản xuất, mỗi hãng (Suppiler) có thuộc tính: tên hãng
Một hãng sản xuất sản xuất nhiều thể loại, mỗi thể loại (Category) do nhiềuhãng sản xuất
Công ty có nhiều nhân viên, mỗi nhân viên (Employee) có một tài khoảnđăng nhập bằng email và password, email do công ty cung và các thuộc tính:tên, số điện thoại, địa chỉ, và các quyền ( Shipper hoặc là Admin )
Phiếu nhập (GoodReceipt) gồm các thuộc tính: tổng tiền, ngày tạo Mộtphiếu nhập có nhiều loại sản phẩm, một loại sản phẩm có thể thuộc nhiều phiếunhập
Phiếu xuất (Bill) gồm các thuộc tính: số Hóa đơn, mã số thuế Một hóa đơnchỉ có 1 bill và một bill chỉ dành cho 1 hóa đơn
Khách hàng (Customer) có tài khoản để đăng nhập bằng email, password và
có các thuộc tính: tên, số điện thoại, email, địa chỉ được ghi nhớ nếu đã đăngnhập Khách hàng chưa có tài khoản có thể đăng ký tài khoản Khách hàng đã
có tài khoản nếu quên mật khẩu có thể lấy lại mật khẩu và thay đổi mật khẩu.Khách hàng có thể bình luận nhiều sản phẩm, mỗi bình luận có các thuộctính: điểm, mô tả
Khách hàng đặt nhiều đơn đặt hàng, mỗi đơn có thể có nhiều sản phẩm, đơnđặt có các thuộc tính: ngày tạo,tổng trị giá đơn đặt
Trang 17-Hiển thị danh sách các mặt hàng của cửa hàng để khách hàng xem, lựachọn, tìm kiếm và mua.
-Khách hàng xem các thông tin tin tức về sản phẩm mới, sản phẩm đangtrong đợt khuyến mãi trên trang web
-Khách hàng đăng kí, đăng nhập tài khoản, lấy lại mật khẩu khi đã quên.-Sau khi khách hàng chọn và đặt hàng trực tiếp thì phải hiện lên đơn hàng
để khách hàng có thể nhập thông tin mua hàng và xem hóa đơn mua hàng
Phần 2: Dành cho người quản trị:
Người làm chủ ứng dụng có quyền kiểm soát mọi hoạt động của hệ thống.Người này được cung cấp username và password để đăng nhập hệ thống thựchiện chức năng của mình:
-Chức năng cập nhật,thêm, xóa các mặt hàng, loại hàng, nhà sản xuất.-Chức năng thêm, xóa, sửa các đợt giảm giá cũng như các sản phẩm trongcác đợt
- Chức năng thêm phiếu nhập sản phẩm( bao gồm nhập sản phẩm mớihoặc nhập thêm sản phẩm đã có )
Trang 18-Tiếp nhận kiểm tra đơn đặt hàng của khách hàng, hiển thị đơn đặt hàng,duyệt đơn hàng, chọn Shipper giao hàng, cập nhật trạng thái đơn hàng sau khihoàn thành.
3.2.2 Yêu cầu phi chức năng:
dàng dẹp mắt và làm sao cho khách hàng thấy được thông tin cần tìm, cung cấpcác thông tin quảng cáo hấp dẫn, các tin tức khuyến mãi để thu hút khách hàng
trong quá trình đặt mua qua mạng
3.3Phân tích use case
3.3.1 Biểu đồ use case tổng quát
Trang 19Khach hang
Xem thong tin san pham
Tim kiem san pham
Xem danh muc
Xem san pham theo danh muc
Bao tri danh muc
Bao tri san pham
Quan ly dot giam gia
Bao cao ton kho Nguoi quan tri
CSDL
Duyet don hang
Trang 203.3.2 Đặc tả use case
1 Mô tả :Use case này cho phép Khách hàng xem những thông tin chỉ tiết
của sản phẩm được chọn
2 Luồng sự kiện:
2.1.Luồng cơ bản:
2.1.1 Use case này bắt đầu khi Khách hàng nhấn vào một sản phẩm.
Hệ thống lấy thông tin về sản phẩm, bao gồm tên sản phẩm, mã sảnphẩm,số lượng, giá niêm yết,ảnh, giá và cách thức khuyến mãi (nếucó),mô tả bao gồm thông số kĩ thuật và cấu hình chi tiết từ bảngPRODUCT trong CSDL và hiển thị lên màn hình Use case kết thúc 2.2 Luồng rẽ nhánh:
2.2.1 Tại bất kì thời điểm nào trong quá trình thực hiện use case nếukhông kết nối được với CSDL thì hệ thống sẽ hiển thị một thông báo
Trang 217: hien thi thong tin chi tiet san pham( )
XemThonTinSanPhamController XemThonTinSanPhamController 1: kich chon mot san pham( )
2: lay thong tin chi tiet san pham( )
3: lay bang PRODUCT( )
4: Lay bang Product 5: getProduct( )
6: Return ket qua
7: hien thi thong tin chi tiet san pham( )
name price promotion quantity description
getid() getname() setName() getPrice() setPrice() getPromotion() setPromotion() getQuantity() setQuantity() getDescription() setDescription() getProduct()
<<entity>>
*
* Hình dung màn hình
Trang 233.3.2.2 Mô tả use case “Tìm kiếm sản phẩm”
1 Tên use case: Tìm kiếm sản phẩm.
2 Mô tả vắn tắt: Use case cho phép người sử dụng, người quản trị, khách
hàng có thể tìm kiếm sản phẩm được lưu trong CSDL
3 Luồng sự kiện:
3.1 Luồng cơ bản:
1 Use case sẽ bắt đầu khi người dùng nhập tên hoặc mã sản phẩmvào ô tìm kiếm và ấn phím “Enter” Hệ thống sẽ lấy danh sách cácsản phẩm từ bảng PRODUCT trong cơ sở dữ liệu và hiển thi ramàn hình
2 Người dùng chọn sản phẩm trong danh sách Hệ thống lấy thôngtin chi tiết của sản phẩm( Id , Name, prince, image, description) từbảng PRODUCT và hiển thị ra màn hình Use case kết thúc
Trang 241 Nếu không có bất cứ sản phẩm nào thoả mãn điều kiện tìm kiếmđưa ra thì hệ thống sẽ đưa ra thông báo và use case kết thúc.
2 Tại bất cứ thời điểm nào của quá trình thực hiên, nếu không thể kếtnối với CSDL thì sẽ hiển thị thông báo lỗi và use case kết thúc
4 Các yêu cầu đặc biệt:
1: Nhap ten, ma san pham roi bam "enter"()
2: lay danh sach ten san pham()
3: lay bang PRODUCT()
4: lay bang PRODUCT() 5: getName()
6: return danh sach san pham
7: hien thi danh sach san pham()
Trang 25* Biểu đồ lớp phân tích
TimKiemUI
nhap ten, ma san pham roi kich nut "enter"()
hien thi danh sach san pham()
<<boundary>>
Icsdl
lay bang PRODUCT()
<<boundary>> TimKiemController
lay danh sach ten san pham()
<<control>>
1
Product iD name price image description getID() setID() getName() setName() getPrince() setPrince() getImage() setImage() getDescription()
* Hình dung màn hình
Trang 261 Tên use case: Xem danh mục.
2 Mô tả vắn tắt: Use case cho phép khách hàng xem được các danh mục.
3 Luồng sự kiện:
3.1 Luồng cơ bản:
1 Use case bắt đầu khi khách hàng truy cập vào website Hệ
thống sẽ lấy tên các danh mục từ bảng Brand trong cơ sở dữliệu và hiển thị lên màn hình Use case kết thúc
3.2 Luồng rẽ nhánh:
Tại thời điểm bất kỳ của quá trình thực hiện nếu không kết nốiđược với cơ sở dữ liệu thì hệ thống sẽ hiển thị thông báo lỗi và usecase kết thúc
4 Các yêu cầu đặc biệt:
Không có
5 Tiền điều kiện:
Không có
6 Hậu điều kiện:
Nếu use case thành công khách hàng xem thông tin Nếu không trạng
thái use case không đổi
7 Điểm mở rộng:
Không có
* Biểu đồ tuần tự
Trang 27: XemDanhMucUI
XemDanhMucController XemDanhMucController : Category : Icsdl : CSDL 1: truy cap vao website()
2: lay ten danh muc()
3: lay bang Category()
4: lay bang Category() 5: getName()
6: return ket qua 7: hien thi danh sach ten cac danh muc()
* Biêu đồ lớp phân tích
XemDanhMucUI
truy cap vao website()
hien thi danh sach ten cac danh muc()
<<boundary>>
Icsdl lay bang CATEGORY() cap nhat bang CATEGORY()
<<boundary>>
XemDanhMucController lay ten danh muc()
<<entity>>
* 1
0
1
* 1
* Hình dung màn hình
Trang 283.3.2.4 Mô tả Use case “Xem sản phẩm theo danh mục”
1 Tên Use case: Xem hàng theo danh mục
+ Use case bắt đầu khi khách hàng chọn chức năng xem danh mục,
hệ thống hiện thị danh sách các danh mục và các sản phẩm thuộcdanh mục đó
+ Khách hàng chọn chủ đề cần xem, hệ thống sẽ hiện thị các sảnphẩm thuộc chủ đề đó
3.2 Luồng rẽ nhánh:
Trong suốt quá trình thực hiện nếu hệ thống không kết nối đượcvới CSDL, hệ thống sẽ hiện ra thông báo lỗi đến người dùng, UseCase kết thúc
Trang 294.Các yêu cầu đặc biệt:
2: lay ten danh muc( )
3: lay bang Category( )
4: Lay bang Category( ) 5: getName( )
6: return ket qua 7: Hien thi cac danh muc( ) 8: Chon mot danh muc( )
9: lay thong tin san pham( )
10: Lay bang Product( )
11: Lay bang Product( ) 12: getProduct( )
13: return ket qua 14: Hien thi thong tin san pham( )
* Biểu đồ lớp phân tích
Trang 30Category ID Name getId() getName() setName()
<<entity>>
ICSDL lay bang Category() Lay bang Product()
XemSanPhamTheoDanhMucUI
chon tat ca the loai()
opname()
Hien thi cac danh muc()
Chon mot danh muc()
Hien thi thong tin san pham()
<<boundary>>
XemSanPhamTheoDanhMucController lay ten danh muc()
lay thong tin san pham()
<<control>>
* 1
* 1
*
1
*
1 1
1 1 1
Product iD name price promotion quantity image description new getId() getName() setName() getPrice() setPrice() getPromotion() setPromotion() getQuantity() setQuantity() getImage() getDescription() setDescription() getNew() setNew() getProduct() setProduct()
<<entity>>
* 1
*
* Hình dung màn hình
Trang 313.3.2.5 Mô tả use case “Bình Luận”
1 Tên Use Case: Bình luận
2 Mô tả vắn tắt:
Use case cho phép khách hàng có thể nhận xét về sản phẩm
3 Luồng sự kiện:
3.1 Luồng cơ bản:
1 Use case bắt đầu khi khách hàng kích vào nút “Viết nhận xét của bạn”
ở màn hình sản phẩm Hệ thống sẽ hiển thị yêu cầu đánh giá sản phẩmcùng với ô Textbox cho phép khách hàng viết nhận xét của mình
2 Khách hàng đánh giá sản phẩm và viết nhận xét của mình rồi kích nút
“Bình Luận” Hệ thống sẽ lưu bình luận vào CSDL và hiển thị bình luận
ra màn hình Use case kết thúc
3.2 Luồng rẽ nhánh:
Tại bất kỳ thời điểm nào của quá trình thực hiện nếu không kết nối đượcCSDL Hệ thống sẽ thông báo lỗi và use case kết thúc
Trang 324 Các yêu cầu đặc biệt:
Không có
5 Tiền điều kiện :
Khách hàng phải đăng nhập vào hệ thống
6 Hậu điều kiện:
Không có
7 Điểm mở rộng:
Không có
* Biểu đồ trình tự
Trang 33: Khach Hang : BinhLuanUI : BinhLuanController : Comment : ICsdl : CSDL 1: kich nut "Viet nhan xet cua ban"( )
2: Hien thi form nhap nhan xet( )
3: nhap vao nhan xet
4: kich nut "Binh luan"( )
7: cap nhat bang Comment( )
8: cap nhat bang Comment( )
6: creatBinhLuan( ) 5: tao binh luan moi( )
9: return ket qua
10: hien thi danh sach cac binh luan( )
* Biểu đồ lớp phân tích
Trang 34kich nut "Viet nhan xet cua ban"()
Hien thi form danh gia va nhap nhan xet()
kich nut "Binh luan"()
hien thi danh sach cac binh luan()
<<boundary>>
ICsdl cap nhat bang Commet()
<<boundary>> BinhLuanController
setBinhluanById() tao binh luan moi()
<<control>>
1
Comment iD customerID productID content rating getID() setID() getCustomerID() setCustomerID() getProductID() setProductID() getContent() setContent() getRating() setRating() creatBinhLuan()
<<entity>>*1
1
*
* Hình dung màn hình
Trang 353.3.2.6 Mô tả Use case “Quản lí giỏ hàng”
1 Tên Use case: Quản lí giỏ hàng
Trang 36sản phẩm mua, màu sắc, giá tiền, giảm, tổng tiền, cần thanh toán từbảng PRODUCT và hiển thị lên màn hình Use case kết thúc.
3.2 Luồng rẽ nhánh:
Tại mỗi thời điểm bất kỳ của quá trình thực hiện, nếu không kết nốiđược với cơ sở dữ liệu thì hệ thống đưa ra thông báo lỗi Use case kếtthúc
4 Các yêu cầu đặc biệt: Không có
5 Tiền điều kiện: Khách hàng phải đăng nhập vào hệ thống.
6 Hậu điều kiện: Không có
7 Điểm mở rộng: Không có.
* Biểu đồ trình tự
Trang 37QuanLiGioHangController QuanLiGioHangController 1: Click vào gio hang()
2: Lay thong tin gio hang()
3: Lay Bang gio hang()
4: Lay bang gio hang() 5: getMaGiohang()
6: getMaSP() 7: getTongTien() 8: return ket qua
9: Hien thi ket qua ra man hinh() 10: Click nut sua()
11: Sua thong tin gio hang()
12: setMaSP() 13: setTongTien() 14: setSoluong() 15: Cap Nhat thong tinh vao bang GIOHANG()
16: Sua bang GIOHANG() 17: Thong bao chinh sua thanh cong
18: Click nut them()
19: Chinh sua thong tin gio hang()
20: getMaSP() 21: setTongTien() 22: Cap nhat thonh tin bang GIOHNANG()
23: Sua bang GIOHANG() 25: Clicknut xoa hang()
26: chinh sua thong tin gio hang()
27: getSoluong=o() 24: Thong bao them thanh cong
28: Cap thong tin bang GIOHANG()
29: Sua bang GIOHANG() 30: thong bao xoa thanh cong()
31: Click nut xuat file bao gia()
32: Lay du lieu tu bang GIOHANG()
33: getTongTien() 34: return ket qua
35: hien thi file ket qua()
* Biểu đồ lớp phân tích
Trang 38them, sua, xoa hang() lay thong tin gio hang() thong bao thao tac hoan thanh()
<<control>>
1
Order ID
total status create_date address name time phone getID(), setID() getTotal(), settotal() getStatus(), setStatus() setCreate_date(), getCreate_date() getAddress(), setAddress() getName(), setName() getTime(), setTime() getPhone(), setPhone() opname()
<<entity>>*1
+1 1
1
*
* Hình dung màn hình
1.Tên Use Case: Đặt Hàng.
Trang 392 Mô tả vắn tắt: Use case này cho phép khách hàng đặt mua một sản
2) Khách hàng nhập đủ các thông tin này và bấm nút xác nhận vàthanh toán Các thông tin này sẽ được lưu vào bảng CSDL có tên làOrders và thông tin về sản phẩm đặt mua sẽ được lưu vào bảngCSDL có tên là OrdersDetail Use case kết thúc
3.2 Luồng rẽ nhánh:
a Tại bươc thứ 2 của luồng cơ bản nếu khách hàng không điền đầy
đủ thông tin mà hệ thống yêu cầu thì hệ thống sẽ báo lỗi yêu cầukhách hàng nhập lại cho đúng thì mới được thanh toán
nối được với cơ sở dữ liệu thì hệ thống đưa ra thông báo lỗi Usecase kết thúc
4 Các yêu cầu đặc biệt:
Không có
5 Tiền điều kiện:
Khách hàng phải đăng nhập vào hệ thống
6 Hậu điều kiện: Không có.
7 Điểm mở rộng: Không có.
Trang 401: kich nut thanh toan va dat hang( )
2: lay ma san pham va gia( )
3: lay bang Order( )
4: lay bang Order( ) 5: getID( )
7: return ket qua
6: getPrice( )
8: nhap thong tin nhan hang
9: kich nut xac nhan va thanh toan( )
10: luu thong tin nhan hang, ma san pham, gia, so luong, tong tien( )
11: luu vao bang OrderDetail( )
12: luu vao bang OrderDetail( ) 13: setOrder( )
14: return ket qua
* Biểu đồ lớp phân tích