LỜI NÓI ĐẦU
Ngày nay, thương mại điện tử đã trở nên hết sức phổ biến trong cuộc sống của chúng ta.Mua
sắm là một nhu cầu không thể thiếu của con người, nhưng không phải ai cũng có thời gian để mất
hàng giờ để đi mua món đồ mình ưa thích.Mua bán online chính là một giải pháp hữu hiệu để khắc
phục những vấn đề đó.
Vấn đề lớn nhất của việc mua bán online đó chính là chất lượng sản phẩm hay nói cách khác
là độ tin tưởng vào người bán.Và giờ đây, với sự phát triển vượt bậc về công nghệ, vấn đề đó đã được
giải quyết dễ dàng : Các trang web bán hàng online có uy tín lần lượt xuất hiện :
raovat.com,rongbay.com , chotot.com… là những trang web cực kì nổi tiếng và bạn có thể mua hay
bán bất cứ thứ gì trên đó.Thực sự, đó là một cơ hội cho những người muốn bán hàng nhưng chưa có
cửa hàng của riêng mình hay những người muốn mua hàng mà lại thiếu thời gian lựa chọn.
Trong khuôn khổ bài tập lớn môn lập trình nâng cao, nhóm em đã quyết định thiết kế một
website bán hàng online tương tự như các trang web trên nhưng ở một quy mô nhỏ hơn nhất
nhiều.Mục đích chính của nhóm là học thêm kiến thức mới cũng như thực hành lại những kĩ năng đã
học.do đó, sản phẩm cuối cùng có thể chưa được hoàn thiện.
DANH MỤC HÌNH VẼ
Hình 1: Biểu đồ hoạt động của hệ thống
Hình 2 : Biểu đồ hoạt động của hệ thống
Hình 3: Biểu đồ lớp
DANH MỤC BẢNG BIỂU
Bảng 1: Ca sử dụng đặt hàng
Bảng 2: Ca sử dụng tìm kiếm
Bảng 3: Ca sử dụng duy trì thông tin sản phẩm
Bảng 4: Ca sử dụng quảng cáo
Bảng 5: Ca sử dụng quản lý User
Bảng 6: Ca sử dụng kiểm tra
Bảng 7: Mối quan hệ giữa các ca sử dụng
Bảng 8: Thẻ CRC lớp Nhân viên
Bảng 9: Thẻ CRC lớp Customer
Bảng 10: Thẻ CRC lớp Đơn đặt hàng
Bảng 11: Thẻ CRC lớp Sản phẩm
Bảng 12: Thẻ CRC lớp Nhóm sản phẩm
Bảng 13: Thẻ CRC lớp Quảng cáo
Bảng 14: Thẻ CRC lớp Đơn đặt hàng
I. Phân tích hệ thống
1. Khảo sát yêu cầu hệ thống
1.1 Yêu cầu chức năng
Hệ thống có 3 chức năng chính :
• Tìm kiếm
• Đặt hàng
• Duy trì thông tin sản phẩm để người dùng có thể tra cứu
1.2 Yêu cầu phi chức năng
• Giao diện đơn giản , dễ nhìn , thân thiện với người dùng
• Các thao tác sử dụng để đặt hàng hay tra cứu thông tin phải đơn giản
• Dễ dàng chỉnh sửa cũng như cập nhật thông tin
1.3 Mô tả hệ thống
• Hệ thống chứa thông tin của rất nhiều sản phẩm, được xếp vào các
mục khác nhau (category) để người dùng dễ tra cứu
• Hệ thống có hỗ trợ chức năng tìm kiếm để người dùng có thể ngay
lập tức tìm được thông tin của sản phẩm muốn mua
• Hệ thống hỗ trợ chức năng đặt hàng online để người dùng có thể
thực hiện giao dịch ngay.
• Cả 3 chức năng trên sẽ xuất hiện ngay trên giao diện chính của Web.
2. Đặc tả yêu cầu hệ thống
2.1 Biểu đồ hoạt động
Dựa vào các chức năng cơ bản của hệ thống, ta xây dựng biểu đồ hoạt động của
hệ thống như hình 1. Ta Như trên biểu đồ ta đã thấy ,hệ thống thưc hiện 5 hoạt động
chính:
• Đặt hàng : khi những khách hàng muốn mua sản phẩm được quảng
cáo trên Web thì sẽ sử dụng chức năng này
• Tìm kiếm : khi người dùng muốn truy vấn tìm kiếm một sản phẩm
nào đó thì sẽ sử dụng chức năng này
• Duy trì thông tin sản phẩm : luôn luôn duy trì thông tin sản phẩm để
người dùng có thể tra cứu một cách dễ dàng nhất
• Quảng cáo :
• Quản lý người dùng : quản lý những người sử dụng
Từ biểu đồ hoạt động trên ta sẽ xây dựng biểu đồ ca sử dụng
2.2 Biểu đồ ca sử dụng
2.2.1 Danh sách ca sử dụng
• Đặt hàng
• Tìm kiếm
• Duy trì thông tin sản phẩm
• Quảng cáo
• Quản lý thông tin người dùng
Ngoài ra còn có các ca sử dụng mở rộng như đăng nhập, đăng kí, kiểm tra
Hình 1: Biểu đồ hoạt động của hệ thống
2.2.2 Bảng mô tả ca sử dụng
Use case name: Đặt hàng ID: 01 Level: High
Primary actor:Khách hàng-Customer Use Case Type: Detail, essential
Stakaholders and Interests:
Khách hàng : thực hiên thao tác đặt hàng
Brief Description:
Ca sử dụng này mô tả việc đặt hàng
Trigger:
Khách hàng nhập thông tin vào menu đặt hàng
Relationships:
Association: Khách hàng
Include: Kiểm tra , Duy trì đơn hàng
Extend:
+ Tìm kiếm
Genaralization:
Normal Flow of Events:
1. Khách hàng khi muốn mua hàng sẽ truy nhập vào menu đặt hàng
2. Khách hàng tiến hành nhập thông tin vào menu đặt hàng
3. Hệ thống sẽ tiến hành kiểm tra đơn hàng
4. Hệ thống sẽ duy trì đơn hàng đến khi nào mặt hàng đó được gửi đi và
thanh toán thì sẽ hủy
Subflows:
Alternate/Exception Flows:
Bảng 1: Ca sử dụng đặt hàng
Use case name: Tìm kiếm ID: 02 Level: High
Primary actor:Khách hàng-Customer Use Case Type: Detail, essential
Stakaholders and Interests:
Khách hàng : thực hiên thao tác tìm kiếm
Brief Description:
Ca sử dụng này mô tả việc tìm kiếm
Trigger:
Khách hàng nhập thông tin vào menu tìm kiếm
Relationships:
Association: Khách hàng
Include:
Extend:
+ Tìm kiếm
Genaralization:
Normal Flow of Events:
1. Khách hàng khi muốn tìm thông tin sẽ chọn menu tìm kiếm
2. Khách hàng tiến hành nhập thông tin vào menu tìm kiếm
3. Hệ thống sẽ gửi trả kết quả tìm kiếm là thông tin sản phẩm
Subflows:
Alternate/Exception Flows:
Bảng 2: Ca sử dụng tìm kiếm
Use case name: Duy trì thông tin sản
phẩm
ID: 03 Level: High
Primary actor:DistributionSystem Use Case Type: Detail, essential
Stakaholders and Interests:
DistributionSystem: duy trì thông tin sản phẩm trên Web
Brief Description:
Ca sử dụng này mô tả việc duy trì thông tin sản phẩm trên Web
Trigger:
Khách hàng nhập thông tin vào menu đặt hàng
Relationships:
Association: Sản phẩm
Include:
Extend:
Genaralization:
Normal Flow of Events:
1. Hệ thống liên tục duy trì thông tin sản phẩm trên Web : sửa khi thay đổi.
thêm vào khi có sản phẩm mới
Subflows:
Alternate/Exception Flows:
Bảng 3: Ca sử dụng duy trì thông tin sản phẩm
Use case name: Quảng cáo ID: 04 Level: High
Primary actor:System Use Case Type: Detail, essential
Stakaholders and Interests:
AdvSystem : thực hiện việc quảng cáo
Brief Description:
Ca sử dụng này mô tả việc quảng cáo
Trigger:
Khách hàng nhập thông tin vào menu tìm kiếm
Relationships:
Association:
Include:
Extend:
Genaralization:
Normal Flow of Events:
4. Khách hàng khi muốn tìm thông tin sẽ chọn menu tìm kiếm
5. Khách hàng tiến hành nhập thông tin vào menu tìm kiếm
6. Hệ thống sẽ gửi trả kết quả tìm kiếm là thông tin sản phẩm
Subflows:
Alternate/Exception Flows:
Bảng 4: Ca sử dụng quảng cáo
Use case name: Quản lý user ID: 05 Level: High
Primary actor:System Use Case Type: Detail, essential
Stakaholders and Interests:
System : quản lý thông tin khách hàng
Brief Description:
Ca sử dụng này mô tả việc quản lý thông tin người dùng và khách hàng
Trigger:
Relationships:
Association: Khách hàng , nhân viên
Include:
Extend:
Genaralization:
Normal Flow of Events:
1. Hệ thống quản lý thông tin khách hàng và nhân viên
Subflows:
Alternate/Exception Flows: 1a.Hệ thống tiến hành cập nhật khi có thay
đổi
Bảng 5: Ca sử dụng quản lý User
Use case name: Kiểm tra ID: 06 Level: High
Primary actor:System Use Case Type: Detail, essential
Stakaholders and Interests:
Hệ thống kiểm tra thông tin
Brief Description:
Ca sử dụng này mô tả việc hệ thống kiểm tra thông tin sản phẩm và người dùng
Trigger:
Hệ thống nhận thông tin yêu cầu đặt hàng của khách hàng
Relationships:
Association: Khách hàng
Include:
Extend:
Genaralization:
Normal Flow of Events:
1. Hệ thống tiến hành kiểm tra thông tin người dùng và sản phẩm
2. Hệ thống thông báo kết quả kiểm tra lại cho người dùng
Subflows:
Alternate/Exception Flows:
Bảng 6: Ca sử dụng kiểm tra
Tên ca sử dụng Tác nhân
Relationships
Extend Include
Đặt hàng Khách hàng Tìm kiếm Kiểm tra
Tìm kiếm Khách hàng
Duy trì thông tin
sản phẩm
Hệ thống
Quảng cáo Hệ thống
Quản lý thông tin
người dùng và
khách hàng
Hệ thống
Bảng 7: Mối quan hệ giữa các ca sử dụng
2.3 Biểu đồ hoạt động của hệ thống :
Hình 2 : Biểu đồ hoạt động của hệ thống
2.4 Biểu đồ lớp
Từ các ca sử dụng trên ta thấy hệ thống gồm các lớp sau :
• Nhân viên
• Khách hàng
• Đơn đặt hàng
• Đơn đặt hàng chi tiết
• Sản phẩm
• Công ty
• Quảng cáo
• Nhóm sản phẩm
• Cửa hàng
Ta xây dựng thẻ CRC của các lớp như sau :
Class Name: nhân viên -
User
ID: 01 Type: High
Description: mô tả thông tin và các hoạt động
của nhân viên
Associated Use Case:
Quản lý thông tin User và
Customer
Responsibilities
Đăng nhập vào hệ thống.
Chỉnh sửa thông tin sản phẩm khi cần
Collaborator
Sản phẩm
Astributes:
o ID
o Name
o Username
o Password
o Rule
o Status
Relationships:
Generalization (a kind of):
Aggregation (has parts):
Other Associations: sản phẩm
Bảng 8: Thẻ CRC lớp Nhân viên
Class Name:
Customer
ID: 02 Type: High
Description: mô tả thông tin và các hoạt động
của Custormer
Associated Use Case:
Đặt hàng
Quản lý User và Customer
Responsibilities
Đăng nhập vào hệ thống.
Đặt hàng
Tìm kiếm
Collaborator
Sản phẩm
Đơn đặt hàng
Astributes:
o ID
o Name
o Birthday
o Province
o Address
o Tel
o Email
Relationships:
Generalization (a kind of):
Aggregation (has parts):
Other Associations: sản phẩm, đơn đặt hàng
Bảng 9: Thẻ CRC lớp Customer
Class Name: Đơn
đặt hàng
ID: 03 Type: High
Description: mô tả thông tin của đơn đặt hàng
Associated Use Case:
Đặt hàng
Responsibilities
Thực hiện việc đặt hàng
Collaborator
Sản phẩm, khách hàng
Astributes:
o ID
o CustormerID
o Total money
o Date
o Status
Relationships:
Generalization (a kind of):
Aggregation (has parts):
Other Associations: sản phẩm, khách hàng
Bảng 10: Thẻ CRC lớp Đơn đặt hàng
Class Name: Sản
phẩm
ID: 04 Type: High
Description: mô tả thông tin của sản phẩm
Associated Use Case:
Đặt hàng, Tìm kiếm
Responsibilities
Đưa thông tin đến khách hàng
Collaborat khách hàng, nhân viên, đơn đặt
hàng
Astributes:
o ID
o Name
o Detail
o Price
o Image
o Pricenew
o Date
o [Order]
o Status
o Group_ProductID
Relationships:
Generalization (a kind of):
Aggregation (has parts):
Other Associations: sản phẩm, khách hàng, đơn đặt hàng
Bảng 11: Thẻ CRC lớp Sản phẩm
Class Name: Nhóm
sản phẩm
ID: 05 Type: High
Description: mô tả thông tin của một nhóm các
sản phẩm
Associated Use Case:
Đặt hàng, tìm kiếm
Responsibilities
Mô tả thông tin nhóm sản
phẩm
Collaborator
Sản phẩm, khách hàng,
Astributes:
o ID
o Name
o [Content]
o Image
o [Order]
o Status
Relationships:
Generalization (a kind of):
Aggregation (has parts):
Other Associations: sản phẩm, khách hàng
Bảng 12: Thẻ CRC lớp Nhóm sản phẩm
Class Name:
Quảng cáo
ID: 06 Type: High
Description: mô tả thông tin của quảng cáo
Associated Use Case:
Đặt hàng
Responsibilities
Thực hiện việc quảng cáo
Collaborator
Sản phẩm, đơn đặt hàng
Astributes:
o ID
o Name
o URL
o Width
o Height
o Link
o Target
o Position
o [Order]
o Status
Relationships:
Generalization (a kind of):
Aggregation (has parts):
Other Associations: sản phẩm, khách hàng
Bảng 13: Thẻ CRC lớp Quảng cáo
Class Name: Đơn
đặt hàng
ID: 07 Type: High
Description: mô tả thông tin của đơn đặt hàng
Associated Use Case:
Đặt hàng
Responsibilities
Thực hiện việc đặt hàng
Collaborator
Sản phẩm, khách hàng
Astributes:
o ID
o CustormerID
o Total money
o Date
o Status
Relationships:
Generalization (a kind of):
Aggregation (has parts):
Other Associations: sản phẩm, khách hàng
Bảng 14: Thẻ CRC lớp Đơn đặt hàng
Từ các thẻ CRC ta sẽ lập được biểu đồ lớp như sau :
Hình 3: Biểu đồ lớp
II. Lập trình theo mô hình 3 lớp
Khi bạn mới tiếp xúc với Windows Form và ADO.NET, việc lập trình bắt đầu trở lên
phức tạp khi dự án lớn dần. Bởi vậy để dễ quản lý các thành phần của hệ thống, cũng
như không bị ảnh hưởng bởi các thay đổi, người ta hay nhóm các thành phần có cùng
chức năng lại với nhau và phân chia trách nhiệm cho từng nhóm để công việc không
bị chồng chéo và ảnh hưởng lẫn nhau. Một trong những mô hình lập trình như vậy đó
là Mô hình 3 lớp (Three Layers).
Mô hình 3 lớp được cấu thành từ: Presentation Layers, Business Layers, và Data
Layers. Các lớp này sẽ giao tiếp với nhau thông qua các dịch vụ (services) mà mỗi
lớp cung cấp để tạo nên ứng dụng, lớp này cũng không cần biết bên trong lớp kia làm
gì mà chỉ cần biết lớp kia cung cấp dịch vụ gì cho mình và sử dụng nó mà thôi.
Kiến trúc mô hình 3 lớp
1. Presentation Layers
Lớp này làm nhiệm vụ giao tiếp với người dùng cuối để thu thập dữ liệu và hiển thị
kết quả/dữ liệu thông qua các thành phần trong giao diện người sử dụng. Lớp này sẽ
sử dụng các dịch vụ do lớp Business Logic cung cấp. Trong .NET thì bạn có thể
dùng Windows Forms, ASP.NET hay Mobile Forms để hiện thực lớp này.
Trong lớp này có 2 thành phần chính là User Interface Components và User
Interface Process Components.
UI Components:
là những phần tử chịu trách nhiệm thu thập và hiển thị thông tin cho người dùng cuối.
Trong ASP.NET thì những thành phần này có thể là các TextBox, các Button,
DataGrid…
UI Process Components:
là thành phần chịu trách nhiệm quản lý các qui trình chuyển đổi giữa các UI
Components. Ví dụ chịu trách nhiệm quản lý các màn hình nhập dữ liệu trong một
loạt các thao tác định trước như các bước trong một Wizard…
Lưu ý : Lớp này không nên sử dụng trực tiếp các dịch vụ của lớp Data Access mà nên
sử dụng thông qua các dịch vụ của lớp Business Logic vì khi sử dụng trực tiếp như
vậy, có thể bỏ qua các ràng buộc, các logic nghiệp vụ mà ứng dụng cần phải có.
2. Business Logic Layer
Lớp này thực hiện các nghiệp vụ chính của hệ thống, sử dụng các dịch vụ do lớp Data
Access cung cấp, và cung cấp các dịch vụ cho lớp Presentation. Lớp này cũng có thể
sử dụng các dịch vụ của các nhà cung cấp thứ 3 để thực hiện công việc của mình.
Trong lớp này có các thành phần chính là Business Components, Business
Entities và Service Interface.
Service Interface:
là giao diện lập trình mà lớp này cung cấp cho lớpPresentation sử dụng.
Lớp Presentation chỉ cần biết các dịch vụ thông qua giao diện này mà không cần phải
quan tâm đến bên trong lớp này được hiện thực như thế nào.
Business Entities:
là những thực thể mô tả những đối tượng thông tin mà hệ thống xử lý. Các Business
Entities này cũng được dùng để trao đổi thông tin giữa lớp Presentation và lớp Data
Layers.
Business Components:
Là những thành phần chính thực hiện các dịch vụ mà Service Interface cung cấp,
chịu trách nhiệm kiểm tra các ràng buộc logic (constraints), các qui tắc nghiệp vụ
(Business Rules), sử dụng các dịch vụ bên ngoài khác để thực hiện các yêu cầu của
ứng dụng.
3. Data Layers
Lớp này thực hiện các nghiệp vụ liên quan đến lưu trữ và truy xuất dữ liệu của ứng
dụng. Thường lớp này sẽ sử dụng các dịch vụ của các hệ quản trị cơ sở dữ liệu như
SQL Server, Oracle,… để thực hiện nhiệm vụ của mình. Trong lớp này có các thành
phần chính là Data Access Logic, Data Sources, Servive Agents).
Data Access Logic Components (DAL)
Là thành phần chính chịu trách nhiệm lưu trữ vào và truy xuất dữ liệu từ các nguồn dữ
liệu – Data Sources như RDMBS, XML, File systems…. Trong .NET Các DAL này
thường được hiện thực bằng cách sử dụng thư viện ADO.NET để giao tiếp với các hệ
cơ sở dữ liệu hoặc sử dụng các O/R Mapping Frameworks để thực hiện việc ánh xạ
các đối tượng trong bộ nhớ thành dữ liệu lưu trữ trong CSDL.
Service Agents:
Là những thành phần trợ giúp việc truy xuất các dịch vụ bên ngoài một cách dễ dàng
và đơn giản như truy xuất các dịch vụ nội tại.
4. Ba lớp ứng dụng Web bán hàng
Ở đây ta sẽ bàn về cách tổ chức ứng dụng Web bán hàng thành 3 lớp Presentation
Layers, Business Layers, và Data Layers.
Phân tích CSDL của ứng dụng.
Ta sẽ phân tích cách tổ chức các lớp để truy xuất vào bảng User. Các bảng khác xử lý
hoàn toàn tương tự.
Các thủ tục truy xuất với bảng User hay bất kỳ bảng nào khác thường bao gồm :
Insert, Update, Delete, GetByAll, GetById…
SQL Procedure
Trước tiên ta tạo các StoredProcedure trong SQL. Ví dụ như Procedure Insert cho
bảng User các tham số đầu vào và kiểu dữ liệu của nó là @Name