Kiến trúc hệ thống

Một phần của tài liệu Xây dựng hệ thống chuỗi cung ứng linh kiện máy tính (Trang 34 - 56)

4.1.1. Mô hình MVC

Hệ thống đƣợc thiết kế dựa trên mô hình MVC. Mô hình MVC hiện nay là mô hình phổ biến đƣợc sử dụng để xây dựng các hệ thống web. Mô hình MVC:

Mô hình MVC bao gồm các thành phần chủ yếu sau đây:

Models trong các ứng dụng dựa trên MVC là những thành phần có nhiệm vụ lƣu trữ thông tin, trạng thái của các đối tƣợng, thông thƣờng nó là một lớp đƣợc ánh xạ từ một bảng trong CSDL.

Views là các thành phần chịu trách nhiệm hiển thị các thông tin lên cho ngƣời dùng thông qua giao diện . Thông thƣờng, các thông tin cần hiển thị đƣợc lấy từ thành phần Models .

Controllers trong các ứng dụng kiểu MVC chịu trách nhiệm xử lý các tác động về mặt giao diện, các thao tác đối với models, và cuối cùng là chọn một view thích hợp để hiển thị ra màn hình. Trong kiến trúc MVC, view chỉ có tác dụng hiển thị giao diện mà thôi, còn điều kiển dòng nhập xuất của ngƣời dùng vẫn do Controllers đảm trách.

4.1.2. Mô hình tổng thể hệ thống

Hệ thống sẽ đƣợc xây dựng dựa trên mô hình MVC. Các phần model, view, controller trên hệ thống sẽ đƣợc phân tách vào các phần rõ ràng để có thể tiện sử dụng và tái sử dụng các lớp, các thuộc tính trên hệ thống.

Ứng với mỗi mức ngƣời dùng trong hệ thống sẽ có những vai trò riêng trong hệ thống, đăng nhập vào hệ thống với mục đích khác nhau. Vì vậy, ta sẽ phân chia hệ thống ra thành các module tƣơng ứng với các tác vụ của ngƣời dùng thực hiện

trên hệ thống. Các module tạo ra cũng phải tuân theo mô hình MVC mà toàn hệ thống đã thống nhất. Cụ thể ta sẽ có mô hình hệ thống sau:

Hình 15- Mô hình tổng thể hệ thống

Do tất cả các module đều dùng chung một cơ sở dữ liệu chung nên ta có thể tách phần model của toàn hệ thống ra thành một phần riêng để tất cả các module đều có thể sử dụng mà không cần phải khai báo lại từng model trong từng module cụ thể.

Module admin: Các hoạt động của admin trên hệ thống. Theo nhƣ các yêu

cầu về chức năng của admin trên hệ thống thì phần module admin đảm nhận vai trò quản lý toàn bộ phần bên trong của hệ thống (backend).

Module supplier: Hoạt động của nhà cung cấp trên hệ thống sẽ đƣợc thực hiện trong module này, khi đăng nhập bằng tài khoản supplier nhà cung cấp sẽ chuyển đến trang quản lý của mình nằm trong module supplier.

Module distributor: module quản lý của nhà phân phối trên hệ thống. Khi đƣợc tạo tài khoản nhà phân phối, nhà phân phối sẽ đƣợc tạo phần quản lý của mình nằm trong module này để quản lý thông tin về mình, các tác vụ của mình trên hệ thống.

Module transporter: Mỗi đơn vị vận chuyển cũng có một phần quản lý riêng

của mình nằm trong module này. Module transporter chỉ dành riêng cho đơn vị vận chuyển có thể đăng nhập để quản lý.

Module user: Quản lý toàn bộ user trên hệ thống. Tách biệt với các module

khác để hỗ trợ cho việc tạo, đăng kí, đăng nhập, quản lý user tùy theo yêu cầu quản lý. Do các user đăng nhập trên hệ thống có các thông tin giống nhau chỉ khác nhau về cấp độ trên hệ thống (level) nên yêu cầu một module quản lý chung đối với tất cả user trên hệ thống.

Module shop: phần frontend của hệ thống, trƣng bày sản phẩm, thực hiện các

thao tác giới thiệu, mua bán trên hệ thống. Module shop phục vụ cho khách hàng có nhu cầu vào tìm kiếm, tham khảo và đặt mua sản phẩm trên hệ thống.

Sinh viên thực hiện: Đinh Văn Quang - Khóa 51 - Lớp công nghệ phần mềm

4.2. Thiết kế CSDL

4.2.1. Mô hình cơ sở dữ liệu người sử dụng

Mô hình dữ liệu phần user:

Hình 16 - Mô hình cơ sở dữ liệu người sử dụng

Tất cả các đối tƣợng sử dụng tham gia vào hệ thống đều đƣợc lƣu vào bảng

users. Thông tin về ngƣời dùng bao gồm các thông tin về tên đăng nhập, mật khẩu, email, tên đầy đủ, …. Ứng với mỗi mức ngƣời dùng trên hệ thống ta có các giá trị

khác nhau của trƣờng superuser với các giá trị 1 là user thƣờng, 2 là đơn vị vận

chuyển, 3 là nhà cung cấp, 4 là đại lý phân phôi, 5 là ngƣời quản trị hệ thống. Với mỗi ngƣời dùng hệ thống sẽ đƣợc cung cấp một mã kích hoạt lƣu trong activekey. Khi tạo tài khoản, lấy lại mật khẩu hệ thống sẽ tạo lại một mã kích hoạt và gửi vào email yêu cầu ngƣời dùng xác nhận. Mỗi mã kích hoạt đƣợc tạo ra random và không trùng với những mã kích hoạt trƣớc đó để đảm bảo chỉ duy nhất một yêu cầu của ngƣời dùng đƣợc chấp thuận.

Ngƣời quản trị sẽ dùng trƣờng status để quản lý trạng thái ngƣời dùng. Ứng với các giá trị -1, 0, 1 ta sẽ có các trạng thái tƣơng ứng của user trên hệ thống là khóa, chƣa kích hoạt, và active.

Với nhà cung cấp tham gia hệ thống, các thông tin về sản phẩm, giá cung cấp

đƣợc lƣu trong bảng supplier_product. Quan hệ giữa usersupplier_product

quan hệ một – nhiều. Một nhà cung cấp có thể cung cấp nhiều sản phẩm. Ứng với

mỗi sản phẩm sẽ đƣợc lƣu và bảng supplier_product.

Bảng distributor_product là bảng lƣu thông tin về một sản phẩm mà đại lý

phối. Mỗi đại lý có thể phân phối nhiều sản phẩm, ứng với mỗi sản phẩm mà đại lý

phân phối sẽ đƣợc lƣu lại trong bảng distributor_product gồm id của sản phẩm, đại

lý, giá sản phẩm, số lƣợng sản phẩm.

Bảng user_bank lƣu thông tin ngân hàng mà đại lý có tài khoản bao gồm id đại lý, ngân hàng, số tài khoản của đại lý.

Bảng transporter_method lƣu các loại hình vận chuyển trên hệ thống. Mỗi

loại hình vận chuyển trên hệ thống sẽ lƣu trữ các thông tin: tên loại hình vận chuyển (title), mô tả (description), giá loại hình vận chuyển (price), đơn vị tính (unit), thuế mà loại hình vận chuyển này phải chịu. Tƣơng ứng với các loại hình vận chuyển ta

có bảng transporter_vehicle. Bảng này lƣu thông tin về đại lý và loại hình vận

chuyển mà đại lý cung cấp. Thông tin về đại lý là transporter_id là khóa ngoài đến bảng user, loại hình vận chuyển method_id khóa ngoài đến transporter_method, và số lƣợng mà đại lý có.

4.2.2. Mô hình cơ sở dữ liệu sản phẩm

Hình 17- Mô hình cơ sở dữ liệu sản phẩm

Danh mục sản phẩm lƣu trong bảng category. Thông tin về một danh mục sản phẩm bao gồm : tên danh mục (name), danh mục cha (parent_id), trạng thái danh mục (status), mô tả danh mục (description)….

Thuế đƣợc lƣu trong bảng tax bao gồm tên thuế (title), giá trị thuế (percent) tính theo phần trăm.

Sản phẩm trên hệ thống đƣợc lƣu trong bảng product. Một sản phẩm sẽ phải có danh mục chứa sản phẩm đó (category_id) là khóa ngoài liên kết đến bảng category. Thuế mà sản phẩm phải chịu (tax_id) khóa ngoài của bảng tax. Các thông

Sinh viên thực hiện: Đinh Văn Quang - Khóa 51 - Lớp công nghệ phần mềm

tin về sản phẩm bao gồm tên sản phẩm, trạng thái, mô tả sản phẩm. Với mỗi sản phẩm có thể có nhiều ảnh đại diện. Thông tin về ảnh đại diện đƣợc lƣu trong bảng product_image. Bảng này có các thông tin về tên ảnh, tên file ảnh trên hệ thống. Quan hệ giữa bảng product và product_image là quan hệ một-nhiều. Một sản phẩm có thể có nhiều ảnh.

4.2.3. Mô hình cơ sở dữ liệu đơn hàng

Hình 18 - Mô hình cơ sở dữ liệu đơn hàng

Mỗi đơn hàng khi đƣợc tạo sẽ đƣợc lƣu vào bảng order. Trƣờng delivery_address_id là địa chỉ nhận hàng là khóa ngoài liên kết với trƣờng id của bảng address. Các trƣờng payment_method, transporter_method là các khóa ngoài liên kết đến các bảng payment_method và transporter_method. Các bảng này lƣu thông tin về phƣơng thức thanh toán và phƣơng thức vận chuyển. Trạng thái của đơn hàng sẽ đƣợc cập nhật tƣơng ứng với các giai đoạn thực hiện của đơn hàng trên hệ thống. Các trạng thái của đơn hàng trên hệ thống bao gồm: chờ kiểm hàng, đã kiểm hàng, chờ thanh toán, đã thanh toán, đang vận chuyển, đã nhận hàng. Các thông tin còn lại về đơn hàng bao gồm các thông tin về giá đơn hàng chƣa tính vận chuyển và thuế, thuế đơn hàng, giá vận chuyển, giá thuế vận chuyển, tổng giá của đơn hàng.

Hình 19 - Cơ sở dữ liệu cho cấu hình máy tính

Mỗi cấu hình đƣợc lƣu trong CSDL bao gồm tên cấu hình, tên file chứa thông số cấu hình , mô tả về cấu hình , danh mục sản phẩm đƣợc chọn để tạo cấu hình và ngƣời tạo cấu hình.

Sinh viên thực hiện: Đinh Văn Quang - Khóa 51 - Lớp công nghệ phần mềm

4.3. Biểu đồ lớp

4.3.1. Biểu đồ lớp người sử dụng

4.3.2. Mô hình lớp sản phẩm và danh mục sản phẩm

Hình 21 - Biểu đồ lớp sản phẩm

4.3.3. Mô hình lớp đơn hàng và các phương thức thanh toán, vận chuyển

Sinh viên thực hiện: Đinh Văn Quang - Khóa 51 - Lớp công nghệ phần mềm

4.4. Biểu đồ tuần tự

4.4.1. Người sử dụng đăng nhập

Hình 23 - Biểu đồ tuần tự người sử dụng đăng nhập

Ngƣời dùng thực hiện việc đăng nhập qua màn hình :LoginUI (view) , các

thông tin nhập vào sẽ xử lý qua :LoginController, việc kiểm tra tài khoản ngƣời sử

dụng cần thông qua :UserLoginModel – Tại đây thực hiện quá trình kết nối tới

CSDL để kiểm tra sự tồn tại của đối tƣợng trong hệ thống.

Nếu thành công, phiên đăng nhập của ngƣời sử dụng sẽ đƣợc lƣu và đƣa ngƣời dùng tới trang cá nhân của họ. Đối với các đối tƣợng quản lý, hẹ thống sẽ tự động xác minh và đƣa ngƣời dùng tới trang quản lý của mỗi đối tƣợng.

Nếu không thành công , nghĩa là việc xác minh thông tin nhập vào không hợp lệ sẽ hiển thị thông báo lỗi đăng nhập .

4.4.2. Đơn vị chủ quản thêm người sử dụng

Khi đăng nhập, đơn vị chủ quản có thể thực hiện việc tạo thêm ngƣời sử

dụng mới qua màn hình :CreateUserUI, các thông tin nhập vào sẽ đƣợc xử lý qua

:AdminController – Tại đây hệ thống sẽ kiểm tra tính hợp lệ của thông tin đƣa vào, nếu hợp lệ, hệ thống sẽ thực hiện việc kiểm tra xem tài khoản đã tồn tại hay chƣa

thông qua :UserModel.

Nếu thành công ngƣời sử dụng sẽ đƣợc lƣu trong hệ thống qua :UserModel.

Hình 24 - Biểu đồ tuần tự đơn vị chủ quản thêm người sử dụng

4.4.3. Đơn vị chủ quản thêm nhà cung cấp

Hình 25 - Biểu đồ tuần tự đơn vị chủ quản thêm nhà cung cấp

Kế thừa từ việc thêm ngƣời sử dụng chung, việc thêm nhà cung cấp cũng giống nhƣ việc thêm ngƣời sử dụng chung. Riêng với nhà cung cấp yêu cầu cần đƣa

ra thông tin các danh mục sản phẩm của mình, ở màn hình :CreateUserUI sẽ hiện

thêm thông tin các danh mục sản phẩm có sẵn trong hệ thông do đơn vị chủ quản

quản lý thông qua :CategoryModel.

4.4.4. Đơn vị chủ quản thêm đơn vị vận chuyển

Thay bằng thông tin danh mục, với đơn vị vận chuyển cần hiển thị thông tin

Sinh viên thực hiện: Đinh Văn Quang - Khóa 51 - Lớp công nghệ phần mềm

Hình 26 - Biểu đồ tuần tự đơn vị chủ quản thêm đơn vị vận chuyển

4.4.5. Đơn vị chủ quản thêm danh mục

Hình 27 - Biểu đồ tuần tự đơn vị chủ quản thêm danh mục

Thông qua màn hình :CreateCategoryUI, đơn vị chủ quản nhập các thông tin

về danh mục sản phẩm , trên màn hình cần hiển thị danh sách các danh mục có sẵn

trên hệ thống thông qua :CategoryModel. Các thông tin nhập vào sẽ đƣợc xử lý qua

:CategoryController và hệ thống sẽ kiểm tra tính hợp lệ của nó.

Nếu hợp lệ, danh mục sẽ đƣợc lƣu và đƣa ngƣời dùng tới màn hình

:CategoryUI để xem thông tin danh mục vừa mới đƣợc tạo ra. Nếu không hợp lệ sẽ hiện thông báo lỗi.

Trên màn hình :CreateProductUI cần hiển thị danh sách các danh mục sản

phẩm mà nhà cung cấp đã chọn qua :CategoryModel , nhà cung cấp nhập các thông

tin về sản phẩm và đƣợc xử lý bởi :ProductController, và đƣợc kiểm tra tính hợp lệ.

Nếu hợp lệ, sản phẩm sẽ đƣợc lƣu vào CSDL qua :ProductModel.

Hình 28 - Biểu đồ tuần tự nhà cung cấp tạo sản phẩm

Nếu không hợp lệ sẽ hiển thị thông báo lỗi.

4.4.7. Hiển thị thông tin sản phẩm

Hình 29 - Biểu đồ tuần tự hiển thị thông tin sản phẩm

Thông tin sản phẩm sẽ đƣợc hiển thị trên màn hình :ProductUI, để hiển thị

thông tin của san phẩm, thông qua :ProductController và các model

:ProductModel, :ImageModel, : DistributorProductModel:Usermodel.

Sinh viên thực hiện: Đinh Văn Quang - Khóa 51 - Lớp công nghệ phần mềm

Cấu hình máy tính đƣợc xây dựng trên màn hình :PackageCreateUI, trên

màn hình hiện các thông tin về tên cấu hình, mô tả và các mẫu nhập thông số cho

máy tính đƣợc lấy từ :CategoryModel. Thông qua :PakageController, các thông tin

sẽ đƣợc kiểm tra, nếu hợp lệ cấu hình sẽ đƣợc lƣu thông qua :PackageModel

đồng thời sẽ lƣu cấu hình máy vào file XML đƣợc xử lý thông qua

:PackageController.

Hình 30 - Biểu đồ tuần tự xây dựng cấu hình máy tính

4.4.9. Xem cấu hình máy

Hình 31 - Biểu đồ tuần tự xem cấu hình

Cấu hình máy đƣợc hiển thị trên màn hình :ViewPackageUI, thông qua

:PackageController. Trên màn hình hiển thị các thông tin : tên cấu hình và mô tả qua :packageModel, các thông số cấu hình máy đƣợc đọc từ file XML đã lƣu từ lần tạo cấu hình trƣớc, từ các thông số trên file, hệ thống tự động tìm kiếm các sản phẩm tƣơng ứng với các thông số đó trên hệ thống và hiển thị danh sách các sản

phẩm ứng với mỗi danh mục thông qua :ProductModel. Mặc định màn hình chỉ

phẩm đó. Khi ngƣời sử dụng gửi yêu cầu , trên màn hình hiện tại hiển thị thêm danh

sách các đại lý phân phối sản phẩm đó qua :DistributorModel:UserModel.

4.4.10. Tìm kiếm sản phẩm

Chức năng tìm kiếm đƣợc thực hiện trên màn hình :SearchUI qua

:searchController, dữ liệu search đƣợc tìm kiếm trong :PackageModel

:ProductModel.

Hình 32 - Biểu đồ tuần tự tìm kiếm sản phẩm

4.4.11. Chức năng Checkout

Chức năng checkout đƣợc thực hiện trên màn hình :CheckOutUI qua

:CheckOutController , quá trình đƣợc thực hiện qua lân lƣợt các bƣớc : Xem giỏ hàng và thực hiện yêu cầu Checkout

Hệ thống sẽ kiểm tra nếu chƣa đăng nhập sẽ đƣa ngƣời dùng tới màn hình đăng nhập và thực hiện tiếp. Tiếp tục là đến màn hình chọn Phƣơng tiện vận chuyển, chọn phƣơng thức thanh toán . Nếu ngƣời dùng đồng ý , đơn hàng sẽ đƣợc

Sinh viên thực hiện: Đinh Văn Quang - Khóa 51 - Lớp công nghệ phần mềm Hình 33 - Biểu đồ tuần tự checkout

4.4.12. Xem đơn hàng

Đơn hàng đƣợc thể hiện trên màn hình :OrderViewUI qua :OrderController, trên màn hình này sẽ hiển thị toàn bộ thông tin của đơn hàng với thông tin khách

hàng, nhà cung cấp và đại lý qua :UserModel, thông tin sản phẩm, số lƣợng , giá

Sinh viên thực hiện: Đinh Văn Quang - Khóa 51 - Lớp công nghệ phần mềm

4.4. Cài đặt ứng dụng

4.4.1. Công cụ phát triển

 Ngôn ngữ lập trình PHP 5

 Cơ sở dữ liệu MySQL 5

 Môi trƣờng phát triển: Unix

 IDE : Neatbeans 7.0

 Giao diện : HTML, CSS

Một phần của tài liệu Xây dựng hệ thống chuỗi cung ứng linh kiện máy tính (Trang 34 - 56)