PHÂN TÍCH THIẾT KẾ ỨNG DỤNG

Một phần của tài liệu Đồ án: " Tìm hiểu và xây dựng ứng dụng Web trên siêu thị trực tuyến với ASP.NET MVC " pps (Trang 27)

1. ĐẶC TẢ CÁC CHỨC NĂNG HỆ THỐNG

1.1. Thiết kế hệ thống

Tham khảo và mô phỏng lại hầu hết các chức năng của các hệ thống như http://www.bestbuy.com/site/index.jsp , http://www.walmart.com/

Trong pha thiết kế hệ thống ta sẽ lần lượt làm rõ các module của hệ thống và mối quan hệ giữa các module.

1.1.1. Các module của hệ thống

Là một hệ thống siêu thị bán hàng trực tuyến thì về cơ bản hệ thống cần hỗ trợ

người dùng duyệt , mua và thanh tốn hàng . Bên cạnh đó người quản trị hệ thống

, nhân viên siêu thị cần quản lí được hàng hóa (xem, thêm , xóa , sửa), quản lí

thơng tin đặt mua, thanh tốn, vận chuyển hàng . Ngồi ra hệ thống cịn có thêm

một số module như module diễn đàn, module bài báo tin tức, module lấy ý kiến khách hàng, module gửi thư từ hệ thống, module định vị siêu thị, module quốc tế hóa.

Tất cả các module của hệ thống đều sử dụng module thành viên và hồ sơ . Ngoại trừ việc này ra thì chúng độc lập với nhau.

1.1.2. Mối quan hệ giữa các module

Tất cả các module của hệ thống là độc lập với nhau ngoại trừ việc chúng sử dụng module thành viên và hồ sơ cho việc xác thực vai trò người dùng (authenticate) và cấp phép (authorize) sử dụng chức năng cụ thể của một module ứng với vai trị

đó.

Việc tách biệt các module như vậy giúp hệ thống linh hoạt hơn khi nâng cấp, hay có sửa đổi nhỏ.

1.2. Đặc tả sơ lược các module 1.2.1. Module hồ sơ và thành viên 1.2.1. Module hồ sơ và thành viên

Module này với người dùng là khách hàng thì họ có thể sử dụng để tạo tài khoản,

đăng nhập , đăng xuất , quản lí hồ sơ cịn đối với người quản trị hệ thống thì họ

cịn dùng vào việc quản lí vai trị người dùng, xóa, tạo vai trị, quản lí người dùng.

1.2.2. Module lấy ý kiến khách hàng

Với module lấy ý kiến khách hàng với vai trị admin người dùng có thể tạo các câu hỏi để lấy ý kiến khách hàng qua đó nắm bắt được các thông tin cần thiết để phát triển việc kinh doanh của công ty, hay phát triển hệ thống để phục vụ khách hàng tốt hơn.

Người dùng là khách hàng có thể đóng góp ý kiến của mình để được phục vụ tốt hơn.

1.2.3. Module thương mại

Sử dụng module thương mại người dùng là khách hàng có thể xem , chọn mua sản phẩm, thanh tốn qua paypal.

Đối với người dùng có vai trị là quản lí siêu thị (store keeper) – người quản lí sẽ

quản lí gian hàng mà họ tạo ra như quản lí sản phẩm , quản lí đơn đặt hàng..

1.2.4. Module gửi thư

Khi sử dụng module này người dùng là khách hàng có thể đăng kí nhận thư của hệ thống thông qua mục nhận thư trong hồ sơ.

Cịn với người dùng có vai trị admin thì họ cịn có thể tạo thư và gửi thư tới tồn bộ các thành viên có đăng kí nhận thư từ hệ thống.

1.2.5. Module diễn đàn

Người dùng nạc danh có thể duyệt xem bài bình luận trong các diễn đàn , tuy nhiên để gửi bài hay bình luận họ phải đăng nhập vào hệ thống.

Chức năng quản lí diễn đàn, quản lí các bài thỏa luận dành cho người dùng có vai trị là editor. (biên tập)

1.2.6. Module tìm kiếm siêu thị

Người dùng có thể sử dụng module này để tìm kiếm các siêu thị gần nơi mình ở

theo khoảng cách và tìm đường đi đến một siêu thị nào đó.

Với người dùng có vai trị là admin thì cịn có thêm chức năng thêm vị trí siêu thị mới vào hệ thống.

1.2.7. Module bài báo, tin tức, và blog

Người dùng sử dụng module này có thể xem toàn bộ các bài báo, xem theo đầu

mục, xem chi tiết bài báo , viết lời bịnh và đánh giá .

Người dùng với vai trò là editor có thêm các chức năng như quản lí các đầu mục

báo, tạo đầu mục mới , xóa đầu mục đang có trong hệ thống. Quản lí các bài báo (chỉnh sửa, xóa), tạo bài báo mới

1.2.8. Module quốc tế hóa

Module này cho người dùng biết thơng tin địa phương của người dùng qua thông

tin ở hồ sơ đăng kí như thời gian, tiền dùng tại địa phương (chẳng hạn như ở Mĩ là USD, ở Việt nam là VND)

1.2.9. Module kiểm thử

Ở module này chỉ kiểm thử với hai module khác trong hệ thống là module bài báo ,

uc User's membership and profile

Membership and Profile Management

+ Change Password + Create Role + Delete Role + Delete User + Edit User + Forgot Password + Login + Logout + Manage Profile + Manage Role + Manage User + Register Account Actors + Administrator + Anonymous User + Registered User + User

2. MODULE HỒ SƠ NGƯỜI DÙNG VÀ THÀNH VIÊN 2.1. Tổng quan về module

Module sẽ sử dụng built-in ASP.NET 2.0 membership system (hệ thống quản lí thành viên xây dựng sẵn cho ASP.NET 2.0) cung cấp bởi Microsoft cho phép

người dùng (user) thực hiện các chức năng gồm có đăng kí tài khoản, đăng nhập , thay đổi mật khẩu, lấy lại mật khẩu, nhập thông tin hồ sơ , cho phép nhà quản trị

hệ thống (admin) đăng nhập vào hệ thống, quản lí quyền, quản lí người dùng

(trong đó có xem tồn bộ người dùng trong hệ thống, tìm người dùng và xóa người dùng, thay đổi vai trị người dùng…).

Trước khi lưu trữ mật khẩu người dùng vào CSDL để bảo mật tất cả các mật khẩu

sẽ được thay đổi thông qua hàm băm .

Hình 3.2 – Sơ đồ tổng quan người dùng và các chức năng của module Ghi chú: Module này được sử dụng bởi hầu hết các module khác như module cộng đồng, module tin tức bài báo, hay module đánh giá và cho điểm các luồng thảo luận trong diễn đàn,..

uc Membership and Profile Management Administrator (from Actors) Login Register Account Logout Manage Profile Create Role Manage User Delete User Change Passw ord

Delete Role

Forgot Passw ord

Edit User Anonymous User (from Actors) Registered User (from Actors) Manage Role 2.2. Sơ đồ chức năng

Hình 3.3 – Sơ đồ tổng quan chức năng của module theo mơ hình UC

2.3. Các bảng DL của module 2.3.1. Tạo bảng DL 2.3.1. Tạo bảng DL

Sau khi tạo CSDL GlobalStore với SQL Server Management Studio , chạy file aspnet_regsql trong thư mục C:\Windows\Microsoft.NET\Framework\v2.0.50727

để tạo các bảng dành cho module thành viên và hồ sơ mà ASP.NET phiên bản 2.0 đã cung cấp sẵn.

Ngoài ra ta xây dựng thêm bảng language để dùng cho việc tạo mục ngôn ngữ trong hồ sơ người dùng như sau:

Hình 3.4 Bảng Langugage

2.3.2. Cấu hình trong web.config cho membership, role và profile:

Mục membership: <membership> <providers> <clear/> <add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider,System.Web, Version=2.0.0.0, Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a" connectionStringName="GlobalStoreConnectionString" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="true" applicationName="GlobalStore" requiresUniqueEmail="false" passwordFormat="Hashed" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" passwordStrengthRegularExpression=""/> </providers> </membership>

Qua nội dung phần config có thể thấy ta dùng ASPNETSqlMembershipProvider phiên bản 2.0 . Mật khẩu trước khi lưu xuống CSDL được thay đổi thông qua hàm

băm passwordFormat="Hashed",… Mục Role: <roleManager enabled="true"> <providers> <clear/> <add connectionStringName="GlobalStoreConnectionString" applicationName="GlobalStore"name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider,System.Web,

Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/> </providers> </roleManager>

Mục Profile:

ASP.NET cung cấp một cơ chế có sẵn để quản lí hồ sơ người dùng. Ta chỉ cần khai báo các thông tin cần thiết lưu trong hồ sơ. Khi ứng dụng chạy thông tin thuộc tính của hồ sơ sẽ được thêm vào lớp Page .

<profile> <properties>

<add name="Subscription" type="String"/> <add name="Language" type="String"/>

<add name="ShoppingCart" type="GlobalStore.Models.ShoppingCart" serializeAs="Binary" allowAnonymous="true"/>

<group name="PersonalInformation">

<add name="FirstName" type="String"/> <add name="LastName" type="String"/> <add name="Gender" type="String"/> <add name="BirthDate" type="DateTime"/> <add name="Occupation" type="String"/> <add name="Website" type="String"/> </group>

<add name="Street" type="String"/> <add name="City" type="String"/> <add name="State" type="String"/> <add name="ZipCode" type="String"/> <add name="Country" type="String"/> </group>

</properties> </profile>

2.4. Models

2.4.1. Lớp UserInformation

Hệ thống sẽ có một số trang mà người dùng sẽ sử dụng liên quan với việc đăng nhập và quản lí tài khoản của họ. Để truyền dữ liệu mà không phải tạo một số

lượng lớn biến cho mỗi phương trức hành động chúng ta tự tạo lớp UserInformation để dùng.

Hình 3.5 Sơ đồ lớp UserInformation

2.4.2. Lớp ProfileInformation

Lớp này được dùng để quản lí thơng tin hồ sơ đồng thời hỗ trợ để tạo các chọn lựa dropdown phần điền thơng tin trên trang quản lí hồ sơ như nghề nghiệp, nước hiện tại ở, ngôn ngữ, … Các thuộc tính của lớp tương ứng với các thuộc tính khai báo trong web.config và các phương thức tạo dropdown tương ứng cho phần quản lí hồ sơ người dùng gồm có dropdown cho các mục:

 Country.  Gender.  Language.  Occupation.  Subscription.

Hình 3.6 Sơ đồ lớp ProfileInformation

2.5. Controllers

Tương ứng với các chức năng của module ta các phương thức cho controller của

module này như sau:

Phương thức hành động Bảo mật Các tham số

Logout ---- ----

Login ---- ----

Login_OnPost ---- string userName, string password, bool persistent, string returnUrl

ForgotPassword ---- ----

ForgotPassword_OnPost ---- string userName, string secretAnswer

Register ---- ----

Register_OnPost ---- UserInformation userInformation ChangePassword ---- string resetPassword

ChangePassword_OnPost ---- UserInformation userInformation

UserProfile ---- ----

UserProfile_OnPost ---- ProfileInformation profileInformation GetErrorMessage ---- MembershipCreateStatus

membershipCreateStatus

ManageUser Admin string searchType, string searchInput

DeleteUser Admin string id

CreateRole Admin string newRole

DeleteRole Admin string id

EditUser Admin string id

EditUser_OnPost Admin string id, bool approved

2.6. Views

Module này tạo thành từ nhiều view trong đó có những views được sử dụng bởi

người dùng cuối và những views được dùng để hỗ trợ việc quản trị bảo mật của module. Dưới đây là thể hiện cụ thể của các views trong module này:

Liên kết tới trang login được hiển thị trên cùng phía bên phải ngay sau mục tóm

lược việc mua hàng – shopping summary của mỗi trang bất kể khi nào mà người

dùng là nạc danh. Sau khi người dùng đăng nhập vào hệ thống thì liên kết này sẽ

được ẩn đi thay vào đó là các chức năng mà người dùng đã đăng nhập có đó là đăng xuất – logout, quản lí hồ sơ – manage profile, và thay đổi mật khẩu – change

password.

View đăng kí cho phép người dùng mới đăng kí tài khoản với hệ thống. Trong q

trình đăng kí người dùng mới sẽ tạo hồ sơ với các thông tin : FirstName (string) , LastName (string) , Gender (string) , BirthDate (datetime), Occupation (sring) , và website (string) . Nhóm thơng tin về địa chỉ trong hồ sơ có các thuộc tính phụ trợ sau: Street, PostCode, City, State và Country tất cả đều có kiểu string. Nhóm cuối cùng về Preferences có các thuộc tính Cultrure và Newsletter .

View quên mật khẩu cho phép người dùng thay đổi mật khẩu bằng việc trả lời một câu hỏi bảo mật sau khi đã điền đúng tên người dùng vào ô người dùng. Sau khi trả lời đúng câu hỏi bảo mật lúc này người dùng sẽ được phép tạo mật khẩu mới và dùng tài khoản của mình với mật khẩu mới này.

Trang quản lí hồ sơ người dùng sẽ chỉ truy cập được bởi người dùng . Nó cho

phép người dùng thay đổi các thơng tin trên hồ sơ mà họ thiết lập từ lúc họ tạo tài

khoản.

Các trang để quản lí người dùng dành cho người quản trị như view dành cho quản lí người dùng ManageUser view giúp nhà quản trị tìm kiếm người dùng hoặc bằng

tên hoặc bằng địa chỉ , view dành cho việc chỉnh sửa – edit user , sẽ hiển thị các chi tiế thêm về người dùng và cho phép nhà quản trị để hoặc khơng để tài khoản

đó hoạt động , hay thay đổi cập nhật vai trò người dùng.

Ngồi ra cịn có view dành cho quản lí vai trị – ManageRole được sử dụng để tạo , xóa các vai trị trong hệ thống.

Như vậy ta có các views của module này

Tên trang Đặc tả Đường dẫn ảo

ChangePassword.aspx Trang này dùng thay đổi

mật khẩu của người dùng

user/changepassword/

EditUser.aspx Trang này cho phép thay

đổi quyền người dùng, ngăn hoạt động của tài

khoản

user/edituser/{id}

ForgotPassword.aspx Trong trường hợp người

dùng quên mật khẩu

user/forgotpassword

Login.aspx Trang đăng nhập user /login

ManageRole.aspx Trang dành cho nhà quản

trị tạo / xóa các vai trị áp dụng cho hệ thống

user/managerole

ManageUser.aspx Trang dành cho nhà quản

trị xem danh sách người

dùng, qua đó xóa người

dùng

user/manageruser

Register.aspx Trang này cho phép người

dùng nạc danh trở thành người dùng đã đăng kí bằng việc điền thơng tin

người dùng và đăng kí

user/register

UserProfile.aspx Trang hồ sơ dành cho

người dùng thay đổi thơng

tin hồ sơ của mình

user/profile

2.7. Sử dụng Javascript

Trong view content của trang quản lí người dùng (ManageUser.aspx) việc xóa

người dùng sẽ được sử lí bằng kĩ thuật Ajax với đoạn mã javascript nằm trong tệp

manage-user.js với nguồn /content/scripts/manage-user.js.

Đoạn mã lệnh xóa người dùng sẽ được sử dụng để triệu gọi phương thức xóa người dùng DeleteUser trong UserController . Nội dung của đoạn lệnh:

$(".delete-user-button").click(function() { var userId = $(this).attr("meta:id"); $.post( "/User/DeleteUser", { id: userId }, function(data) { $("#user-" + data.object.id).remove(); }, "json" ); return false; });

Tương tự vậy thì trong view content của trang quản lí vai trị (ManageRole.aspx)

chức năng xóa vai trị cũng được xử lí bằng kĩ thuật này với đoạn mã xóa nằm trong tệp manage-role.js nguồn /content/scripts/manage-role.js.

2.8. Cấu hình định tuyến

Sử dụng định tuyến mặc định routes.MapRoute(

"Default",

"{controller}/{action}",

new { controller = (string)null, action = (string)null } );

2.9. Xử lí xác thực người dùng

public void FormsAuthentication_OnAuthenticate(object sender,

FormsAuthenticationEventArgs args) { if (FormsAuthentication.CookiesSupported) { if (Request.Cookies[FormsAuthentication.FormsCookieName] != null) { try { FormsAuthenticationTicket ticket = FormsAuthentication.Decrypt(Request.Cookies[FormsAuthentication.For msCookieName].Value);

args.User = new GenericPrincipal( new FormsIdentity(ticket),

new string[0] // The roles are handled by the

//RoleManager );

args.Context.User = args.User; }

catch (Exception) { /* decryption failed */ } }

} else {

throw new HttpException("Cookieless Forms Authentication is not supported for this application."); }

3. MODULE THƯƠNG MẠI 3.1. Tổng quan về module

Chuỗi các siêu thị của công ty Golbal Store Pte. đều có chung cấu trúc về các gian

hàng như thiết bị âm thanh – Audio, đồ cho ô tô và thiết bị định vị - Car and GPS,

máy tính – Computers , điện thoại cố định và đồ văn phòng – Mobilephones and Office, âm nhạc, phim và sách truyện – Music , Movies and Books. Tuy nhiên có một số gian hàng trống tạo không gian mở cho người dùng thuê. Khách hàng khi thuê gian hàng trống phải đăng kí tài khoản , những khách hàng này có tồn quyền quản lí gian hàng của mình.

Khách hàng khi mua hàng trực tuyến với Global Store Pte họ sẽ có thể duyệt các gian hàng của siêu thị - xem danh sách các gian hàng. Danh sách các gian hàng sẽ có tên gian hàng và đặc tả về gian hàng.

Khi khách hàng chọn xem một gian hàng - xem danh sách các sản phầm có trong một gian hàng cụ thể . Danh sách các sản phẩm với mỗi sản phẩm sẽ có kèm theo thơng tin vắn tắt về sản phẩm (tên sản phẩm, thông tin vắn tắt về sản phẩm, giá bán, giá bán giảm giá nếu có,số lượng sản phẩm cịn trong cửa hàng) ,nút Add To

Cart cho phép người dùng chọn đưa sản phẩm vào giỏ hàng và một liên kết cho

phép xem chi tiết sản phẩm , hình ảnh sản phẩm thường là nhỏ hơn so với hình

ảnh trong mục xem chi tiết.

Khi khách hàng chọn xem chi tiết sản phẩm thì sẽ được chuyển đến view dành cho xem chi tiết sản phẩm. Trên view này người dùng sẽ thấy được thông tin chi tiết sản phẩm như tên sản phẩm , số hiệu sản phẩm, hình ảnh sản phẩm to hơn nếu có, thơng tin chi tiết về sản phẩm nếu có, giá bán, giá bán đã có khuyến mãi giảm giá nếu có, số lượng hàng có trong kho, ơ chọn số lượng mua (khách hàng hoàn tồn có thể chọn mua với số lượng mong muốn vì siêu thị có thể điều động hàng), cuối cùng là nút Add to Cart.

Nếu người dùng chọn mua sản phẩm thì sẽ thấy được một hoạt cảnh (animation) dạng hình ảnh sản phẩm bay vào giỏ hàng (fly-into-cart) . Ở đây là sản phẩm sẽ bay vào vị trí có thơng tin tóm tắt mua hàng (shopping summary) các thông tin vắn tắt mua hàng sẽ được cập nhật đó là số tiền phải trả và số mặt hàng trong giỏ hàng (items). Trong shopping summary cũng có liên kết check out đưa người dùng

Một phần của tài liệu Đồ án: " Tìm hiểu và xây dựng ứng dụng Web trên siêu thị trực tuyến với ASP.NET MVC " pps (Trang 27)

Tải bản đầy đủ (PDF)

(122 trang)