Đề tài Hệ thống quản lý bán hàng online

pdf 97 trang thiennha21 14/04/2022 14397
Bạn đang xem 20 trang mẫu của tài liệu "Đề tài Hệ thống quản lý bán hàng online", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pdfde_tai_he_thong_quan_ly_ban_hang_online.pdf

Nội dung text: Đề tài Hệ thống quản lý bán hàng online

  1. TRƯỜNG ĐẠI HỌC AN GIANG KHOA CÔNG NGHỆ THÔNG TIN THỰC TẬP CUỐI KHÓA NGÀNH KỸ THUẬT PHẦN MỀM HỆ THỐNG QUẢN LÝ BÁN HÀNG ONLINE Đơn vị thực tập: Công ty cổ phần Nam Việt TRẦN MINH NHỰT AN GIANG, 04-2018 1
  2. TRƯỜNG ĐẠI HỌC AN GIANG KHOA CÔNG NGHỆ THÔNG TIN THỰC TẬP CUỐI KHÓA NGÀNH KỸ THUẬT PHẦN MỀM HỆ THỐNG QUẢN LÝ BÁN HÀNG ONLINE TRẦN MINH NHỰT MSSV: DPM147166 GVHD: NGUYỄN MINH VI AN GIANG, 04-2018 2
  3. NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN Giảng viên hướng dẫn (Ký và ghi rõ họ tên) Nội dung nhận xét: - Đồng ý hay không đồng ý cho sinh viên báo cáo TTCK; Nếu không đồng ý cần ghi rõ lý do. - Kết quả đạt được so với yêu cầu; - Ý kiến khác (nếu có) i
  4. LỜI CẢM ƠN Lời đầu tiên, em xin tỏ lòng biết ơn sâu sắc đến quý thầy, cô đã giảng dạy và truyền đạt những kiến thức quý báu nhất cho chúng em bằng cả tâm huyết của một người giáo viên. Nhờ sự tận tâm giảng dạy, hết lòng truyền đạt những kiến thức của quý thầy cô giúp em thấy được những khuyết điểm của bản thân mình đế em rút kinh nghiệm và có được những kiến thức quy báu làm hành hành trang khi bước vào xã hội ngày một phát triển như hiện nay. Và em xin chân thành cám ơn cô Nguyễn Minh Vi đã hướng dẫn và giúp đỡ em trong suốt thời gian thực tập cuối khóa vừa qua. Cô luôn hỗ trợ em hết mình, theo dõi và nhắc nhở trong suốt quá trình hoàn thiện đề tài của em, do đó em mới có thể hoàn thành tốt đề tài thực tập cuối khóa của mình. Cuối cùng, em xin gửi lời cám ơn đến trưởng phòng Tin học của công ty Cổ phần Nam Việt là anh Trần Văn Tèo, người đã tạo điều kiện cho em được học hỏi kinh nghiệm và trải nghiệm môi trường làm việc của công ty. Anh đã hướng những hướng đi thật sự cần thiết cho em, luôn giúp đỡ em trong quá trình thực tập. Bên cạnh đó, em xin tỏ lòng biết ơn đến toàn thể nhân viên phòng tin học của công ty Cổ phần Nam Việt đã tạo điều kiện cho em thu thập được nhiều thông tin cần thiết cho đề tài thực tập cũng như tiếp thu, học hỏi được nhiều kinh nghiệm thực tế bổ ích. Đề tại thực tập được thực hiện trong khoảng thời gian 2 tháng. Bước tiếp cận với dự án thực tế, kiến thức của chúng em vẫn còn hạn chế. Do vậy, không tránh khỏi những thiếu sót, chúng em rất mong nhận được những ý kiến đóng góp, phê bình của quý thầy cô và quý công ty. Những ý kiến đóng góp đó là hành trang quý giá giúp chúng em hoàn thiện được kiến thức sau này. Cuối cùng em xin chúc quý thầy cô trường Đại học An Giang, quý thầy cô khoa Công Nghệ Thông Tin và toàn thể nhân viên công ty Cổ phần Nam Việt có thật nhiều sức khỏe, nhiều niềm vui và thành công trong cuộc sống. Long Xuyên, ngày 1 tháng 4 năm 2018 Sinh viên thực hiện Trần Minh Nhựt ii
  5. TÓM TẮT CHƯƠNG 1: GIỚI THIỆU VỀ CƠ QUAN THỰC TẬP Giới thiệu sơ lược về đơn vị thực tập, về lịch sử hình thành cũng như về tình hình hoạt động, cơ cấu tổ chức chung của đơn vị. Khái quát lý do chọn đề tài, nhu cầu cần thiết của đề tài, phạm vi của đề tài, đối tượng và phạm vi ứng dụng của đề tài. CHƯƠNG 2: TỔNG QUAN VÀ CƠ SỞ LÝ THUYẾT Tính khả thi của đề tài, nội dung bài toán đặt ra cần giải quyết và xác định phạm vi của đề tài. Cơ sở lý thuyết, phương pháp nghiên cứu, các công cụ và công nghệ hỗ trợ trong quá tình thực tập. CHƯƠNG 3: PHÂN TÍCH VÀ THIẾT KẾ HỆ THỒNG Thu thập thông tin sau đó tiến hành thiết kế cơ sở dữ liệu và mô tả thuộc tính từng bảng. Cấu trúc chức năng hệ thống. Thiết kế sơ đồ chức năng (use- case), sơ đồ tuần tự, thiết kế giao diện chương trình, xử lý và mô tả hoạt động của chương trình, thiết kế cơ sở dữ liệu. CHƯƠNG 4: THIẾT KẾ CÀI ĐẶT HỆ THỐNG Kết luận kết quả thực tập bao gồm thiết kế cơ sở dữ liệu, thiết kế giao diện và những gì đã đạt được, những hạn chế, hướng phát triển, một số tài liệu tham khảo. iii
  6. MỤC LỤC CHƯƠNG 1: GIỚI THIỆU VỀ CƠ QUAN THỰC TẬP 1 1.1. GIỚI THIỆU CƠ QUAN THỰC TẬP 1 1.2. QUY TRÌNH KHÉP KÍN CỦA CÔNG TY 1 CHƯƠNG 2: TỔNG QUAN CƠ SỞ LÝ THUYẾT 4 2.1. LÝ DO CHỌN ĐỀ TÀI 4 2.2. ĐẶT VẤN ĐỀ 4 2.3. LỊCH SỬ GIẢ QUYẾT VẤN ĐỀ: 5 2.4. PHẠM VI ĐỀ TÀI 5 2.5. PHƯƠNG PHÁP NGHIÊN CỨU/HƯỚNG GIẢI QUYẾT VẤN ĐỀ: 6 2.6. CƠ SỞ LÝ THUYẾT: 8 2.6.1. Hệ quản trị CSDL SQL Server 8 2.6.2.Tổng quan về ASP.NET MVC 10 2.6.3. Tổng quan về WEB API 12 2.6.4. Tổng quan kiến trúc của Entity Framework 17 2.6.5. Tổng quan về Entity Framework Code First 21 2.6.6. HTML (Hypertext Markup Language) 24 2.6.7. CSS (Cascading Style Sheets) 24 2.6.8. JAVASCRIPT 24 2.6.9. Tổng quan về AngularJS 25 2.6.10. Tổng quan về ASP.NET Identity 29 CHƯƠNG 3: PHÂN TÍCH VÀ THIẾT KẾ HỆ THỒNG 32 3.1. CÁC BƯỚC HOÀN THÀNH DỰ ÁN 32 3.2. ĐÁNH GIÁ KHẢ THI VÀ RỦI RO 33 3.2.1. Khả thi về kinh tế 33 3.2.2. Khả thi về kỹ thuật 33 3.3.MÔ TẢ RỦI RO VỀ MẶT KỸ THUẬT 34 3.4. THU THẬP YÊU CẦU 35 iv
  7. 3.4.1. Yêu cầu nghiệp vụ 35 3.4.2. Yêu cầu chức năng: 36 3.4.3. Yêu cầu phi chức năng: 37 3.4.5. Yêu cầu hệ thống: 38 3.5. PHÂN TÍCH 38 3.5.1. Sơ đồ use case 38 3.5.2. Mô tả chi tiết một số use case 47 3.5.3. Sơ đồ tuần tự 53 3.5.4. Sơ đồ lớp 58 CHƯƠNG 4: THIẾT KẾ CÀI ĐẶT HỆ THỐNG 61 4.1. THIẾT KẾ CƠ SỞ DỮ LIỆU VÀ CÁC MỐI QUAN HỆ 61 61 4.2. THIẾT KẾ CÁC BẢNG CƠ SỞ DỮ LIỆU 63 4.3. THIẾT KẾ GIAO DIỆN 74 TỔNG KẾT 83 v
  8. DANH MỤC HÌNH Hình 1. Quy trình khép kính của công ty. 2 Hình 2. Hệ quản trị CSDL SQL Server 8 Hình 3. Các thành cơ bản trong SQL Server 9 Hình 4. Mô hình ASP.NET MVC 11 Hình 5. Cấu trúc REST 14 Hình 6. Kiến trúc của Entity Framework 18 Hình 7. Mô hình Entity Data Model 20 Hình 8. Luồng khởi tạo database 22 Hình 9. Định nghĩa lớp Context không có đối số truyền vào 22 Hình 10. Định nghĩa lớp Context truyền vào tên của database 23 Hình 11. Định nghĩa lớp Context truyền vào chuỗi kết nối 23 Hình 12. File App.config 23 Hình 13. Các tính năng chính của Angular JS 26 Hình 14. Ví dụ về directive 28 Hình 15. Danh sách các directive cơ bản 29 Hình 16. Các table của ASP.NET Identity 31 Hình 17. Sơ đồ use case tổng quát 40 Hình 18. Sơ đồ use case quản lý phía người quản trị 40 Hình 19. Sơ đồ use case quản lý đơn đặt hàng 41 Hình 20. Sơ đồ use case quản lý danh mục 42 Hình 21. Sơ đồ use case quản lý ảs n phẩm 43 Hình 22. Sơ đồ use case quản lý thành viên 44 Hình 23. Sơ đồ use case phía khách hàng 45 Hình 24. Sơ đồ use case đặt hàng 46 Hình 25. Sơ đồ tuần tự đăng nhập 53 Hình 26. Sơ đồ tuần tự đăng xuất 54 Hình 27. Sơ đồ tuần tự thêm thành viên 54 Hình 28. Sơ đồ tuần tự đặt hàng 55 Hình 29. Sơ đồ tuần tự thêm vào giỏ hàng 55 Hình 30. Sơ đồ tuần tự xem danh sách sản phẩm 56 Hình 31. Sơ đồ tuần tự thêm sản phẩm 56 Hình 32. Sơ đồ tuần tự sửa thông tin sản phẩm 57 Hình 33. Sơ đồ lớp (P1) 58 Hình 34. Sơ đồ lớp (P2) 59 Hình 35. Sơ đồ lớp (P3) 60 Hình 36. Cơ sở dữ liệu và các mối quan hệ (P1) 61 Hình 37. Cơ sở dữ liệu và các mối quan hệ (P2) 62 vi
  9. Hình 38. Cơ sở dữ liệu và các mối quan hệ (P3) 63 Hình 39. Trang chủ 74 Hình 40. Giao diện thông tin chi tiết sản phẩm 75 Hình 41. Giao diện giỏ hàng 76 Hình 42. Giao diện đăng nhập 77 Hình 43. Giao diện trang quản trị 77 Hình 44. Giao diện danh sách sản phẩm 78 Hình 45. Giao diện trang thêm sản phẩm 79 Hình 46. Giao diện trang thống kê doanh số và lợi nhuận 80 Hình 47. Giao diện trang giới thiệu 81 Hình 48. Giao diện trang thông tin liên hệ 78 vii
  10. DANH MỤC BẢNG Bảng 1. Ánh xạ tương đương giữa các đối tượng trong database và EF 19 Bảng 2. Các bước hoàn thành dự án 32 Bảng 3.Mô tả rủi ro về mặt kỹ thuật 34 Bảng 4. Mô tả yêu cầu chức năng đối với người dùng 36 Bảng 5. Mô tả yêu cầu chức năng đối với quản trị 36 Bảng 6. Mô tả yêu cầu phi chức năng 37 Bảng 7. Mô tả yêu cầu hệ thống 38 Bảng 8. Danh sách các actor 38 Bảng 9. Danh sách và chức năng của các use case 38 Bảng 10. Các ký hiệu 39 Bảng 11. Mô tả use case đăng nhập 47 Bảng 12. Mô tả use case thêm thành viên 47 Bảng 13. Mô tả use case đặt hàng 48 Bảng 14. Mô tả use case thêm sản phẩm 49 Bảng 15. Mô tả use case sửa sản phẩm 49 Bảng 16. Mô tả use case xóa sản phẩm 50 Bảng 17. Mô tả use case thêm danh mục 51 Bảng 18. Mô tả use case sửa danh mục 52 Bảng 19. Mô tả use case sửa danh mục 52 Bảng 20. Bảng ApplicationUsers 63 Bảng 21. Errors 64 Bảng 22. Bảng Footers 64 Bảng 23. Bảng MenuGroups 64 Bảng 24. Bảng Menus 65 Bảng 25. Bảng OrderDetails 65 Bảng 26. Bảng Orders 65 Bảng 27. Bảng Pages 66 Bảng 28. Bảng PostCategories 66 Bảng 29. Bảng Posts 67 Bảng 30. Bảng PostTags 68 Bảng 31. Bảng ProductCategories 68 Bảng 32. Bảng Products 69 Bảng 33. Bảng ProductTags 70 Bảng 34. Bảng Slides 70 Bảng 35. Bảng SupportOnlines 71 viii
  11. Bảng 36.Bảng SystemConfigs 71 Bảng 37. Bảng Tags 71 Bảng 38. Bảng VisitorStatistics 72 Bảng 39. Bảng IdentityRoles 72 Bảng 40. Bảng IdentityUserClaims 72 Bảng 41. Bảng IdentityUserLogins 72 Bảng 42. Bảng IdentityUserRoles 73 ix
  12. DANH SÁCH CÁC TỪ VIẾT TẮT STT Từ viết tắt Ý nghĩa 1 NAVICO Công ty Cổ Phần Nam Việt 2 CSDL Cơ sở dữ liệu 3 CSS Cascading Style Sheets 4 DOM Document Object Model 5 API Application Programming Interface 6 HTML HyperText Markup Language 7 HTTP HyperText Transfer Protocol 8 MVC Model – View – Controller 9 HTTP Hypertext Transfer Protocol 10 REST Representational State Transfer 13 TNHH Trách nhiệm hữu hạn 14 UI User Interface 15 UX User Experience x
  13. CHƯƠNG 1: GIỚI THIỆU VỀ CƠ QUAN THỰC TẬP 1.1. GIỚI THIỆU CƠ QUAN THỰC TẬP - Công ty Cổ phần Nam Việt (Navico) có tiền thân là Công ty TNHH Nam Việt được thành lập vào năm 1993 ban đầu hoạt động trong lĩnh vực xây dựng dân dụng và công nghiệp. Sau đó công ty quyết định đầu tư mở rộng phạm vi kinh doanh sang lĩnh vực chế biến thuỷ sản, khởi đầu là việc xây dựng nhà máy chế biến thuỷ sản Nam Việt, chuyên chế biến xuất khẩu cá Tra, cá Ba sa đông lạnh. Các lĩnh vực hoạt động kinh doanh của công ty được cấp phép bao gồm: Xây dựng công trình thủy lợi Nuôi cá Sản xuất bao bì giấy In bao bì các loại Sản xuất, chế biến và bảo quản thủy sản Sản xuất dầu Bio – diesel Chế biến dầu cá, bột cá Sản xuất keo Gentaline và Glycerin Mua bán cá thủy sản - Tên công ty: CÔNG TY CỔ PHẦN NAM VIỆT - Tên tiếng Anh: NAM VIET CORPORATION - Tên viết tắt: NAVICO - Địa chỉ: 19D Trần Hưng Đạo, Phường Mỹ Quí, TP Long Xuyên, An Giang - Điện thoại: (84) 0296 834 065 - 834 060 - Email: namvietagg@hcm.vnn.vn ; sales@navicorp.com.vn - Website: www.navicorp.com.vn ; www.navifishco.com 1.2. QUY TRÌNH KHÉP KÍN CỦA CÔNG TY - Công ty Cổ phần Nam Việt tự hào tạo nên vòng tròn chu trình khép kín về nền công nghiệp thủy sản, từ những nhà máy chế biến hiện đại và con người chuyên nghiệp họ đã tạo ra những sản phẩm thủy sản chất lượng tốt nhất, dựa trên việc chủ động kiểm soát nguồn thức ăn rồi đến cả môi trường sống, kĩ thuật để nuôi trồng trên từng vùng nuôi của chính mình , bên cạnh đó việc đảm bảo an toàn vệ sinh và bảo quản tốt nhất từng sản phẩm để đưa đến tay người tiêu dùng bằng những bao bì đạt chất lượng luôn được chúng tôi đảm bảo. - Không chỉ kiểm soát những sản phẩm của chính mình ma họ còn quan tâm đến cả môi trường và không để lãng phí bất kì công sức nào của người nuôi 1
  14. hay của chính mình, nhà máy chế biến phụ phẩm đã được lập nên để tạo nên những sản phẩm phục vụ lại cho công việc chăn nuôi và sản xuất. Vùng nuôi Nhà máy Nam Việt Nhà máy thức ăn Nhà máy Thái Bình Dương Nhà máy chế NAVICO biến thủy sản Nhà máy Đại Tây Dương Nhà máy bao bì Nhà máy Ấn Độ Dương Nhà máy phụ phẩm Hình 1. Quy trình khép kính của công ty. Hình 2. Hệ quản trị CSDL SQL ServerHình 3. Quy trình khép kính của công ty. Vùng nuôi Với 24 vùng nuôi và vùng liên kết tổng diện tích nuôi cá tra đến hơn 300ha, với tổng năng suất lên đến 120.000 tấn cá thịt nguyên liệu/ năm và trại cá giống có thể cung cấp 14 tỉ con dựa trên 20.000 cá bố mẹ, bên cạnh đó vùng nuôi cá rô phi được xây dựng trên sông với hơn 4000 vèo cho ra hơn 80.000 tấn cá thịt/ năm, cùng với đội ngũ quản lí đầy kĩ thuật và kinh nghiệm chúng tôi tự tin đảm bảo đáp ứng nhu cầu của thị trường về cả chất lượng và số lượng. Nhà máy chế biến thức ăn thủy sản NAVIFEED Từ những nguyên liệu chất lượng như: bã đậu nành từ Argentina, bột cá từ Peru cùng với quá trình tìm hiểu bởi bộ phận nghiên cứu và phát triển cũng như kinh nghiệm nuôi cá lâu năm từ chính vùng nuôi của chính mình, chúng tôi đã tạo ra những dòng sản phẩm cho nhiều loại thủy sản như: cá tra, cá lóc, các có vảy, ếch và đã được khẳng định trên thị trường bởi người nuôi trên khắp Đồng bằng Sông Cửu Long hiện tại và chúng tôi tin rằng sẽ là 2
  15. trên cả nước trong tương lai, cũng như qua chất lượng những sản phẩm thủy sản được đưa đến tay người tiêu dùng trên toàn thế giới. Nhà máy chế biến thủy sản Nhà máy đông lạnh Nam Việt (DL152), nhà máy đông lạnh Thái Bình Dương (DL384), nhà máy đông lạnh Ấn Độ Dương (DL18): được xây dựng và trang bị những thiết bị hiện đại, công suất cao cùng với đội ngũ nhân công chuyên nghiệp chúng tôi đảm bảo chất lượng trên mỗi sản phẩm được tạo ra. Nhà máy bao bì Để có những sản phẩm tốt nhất đưa đến tay người tiêu dùng chúng tôi chủ động tạo ra bao bì cho chính mình để có thể kiểm soát chất lượng từ những bao PE, PP cho đến thùng carton đạt đủ chất lượng, thiết kế riêng theo yêu cầu cho những khách hàng ở mỗi quốc gia trên thế giới. Nhà máy chế biến phụ phẩm Từ máu, da, xương, đầu của các loại thủy sản sau khi được chế biến, chúng tôi đã tận dụng chúng để tạo ra những sản phẩm có thể tiếp tục phục vụ cho nhu cầu khác như: Gelatine, nguyên liệu sản xuất thức ăn cho động vật cũng như góp phần bảo vệ môi trường. 3
  16. CHƯƠNG 2: TỔNG QUAN CƠ SỞ LÝ THUYẾT 2.1. LÝ DO CHỌN ĐỀ TÀI Ngày nay, tất cả các nước trên thể giới đang dần chuyển mình để hòa vào cuộc cách mạng công nghệ lần thứ tư, còn được gọi là cuộc cách mạng “Công nghệ 4.0”. Vì vậy mà các từ như “máy vi tính”, “điện thoại đi động”, “internet”, “online” đã xuất hiện từ thời kỳ công nghệ trước đó, thời đại công nghệ thứ ba có lẽ đã không còn mấy xa lạ với tất cả mọi người. Bên cạnh các dịch vụ thông thường đã được số hóa gần như là hoàn hảo như: đọc báo, sách, tài liệu, mua sắm, giải trí,.v.v Bên cạnh đó các hoạt động thương mại điện tử như mua bán hàng hoá, dịch vụ, thông tin, đang tăng trưởng với tốc độ chóng mặt, với doanh số tăng trưởng hàng năm rất lớn. Đối với các doanh nghiệp có liên quan đến hoạt động xuất nhập khẩu, thương mại điện tử thực sự cần thiết vì những lợi ích to lớn mà nó đã, đang và sẽ đem lại. Thương mại điện tử thực sự đã làm thay đổi bộ mặt thế giới, từ các hoạt động kinh doanh của doanh nghiệp, cho đến thói quen sinh hoạt, mua sắm của từng cá nhân. Với sự phát triển của công nghệ thông tin, việc sử dụng thiết bị công nghệ cũng như phần mềm hỗ trợ công việc hằng ngày là điều thiết yếu. Công ty cổ phần Nam Việt đang kinh doanh rất nhiều lĩnh vực khác nhau do đó nó tạo nên một chuỗi các bộ phận và nhà máy khác nhau. Với việc kinh doanh nhiều lĩnh vực như vậy thì việc quản lý quá trình cung cấp hàng hóa cho các bộ phận và nhà máy vô cùng phức tạp. Để phục vụ nhu cầu mua hàng từ các bộ phận và nhà máy thì công ty Nam Việt cần triển khai một website thương mại điện tử dùng để giới thiệu và kinh doanh các mặt hàng của công ty. Ngoài ra, công ty đang sử dụng các sản phẩm của phòng tin học hầu hết đều phát triển từ ngôn ngữ lập trình C# nên việc chọn ngôn ngữ lập trình là điều rất quan trọng. Vì vậy em đã chọn ngôn ngữ C# và xây dựng trên nền tảng ứng dụng web ASP.NET, nhờ đó mà các anh chị trong phòng tin học có thể dễ dàng giúp đỡ em trong suốt quá trình thực tập, bên cạnh đó việc bảo trì phần mềm sau này cũng trở nên dễ dàng. 2.2. ĐẶT VẤN ĐỀ - Để quản lý quy trình mua hàng của khách nhân viên kỹ thuật phải ghi chép các biểu mẫu hằng ngày và lưu trữ dưới dạng file thô, khả năng lưu trữ kém và có thể sai sót và gây nhiều bất lợi cho nhân viên kỹ thuật về việc quản lý 4
  17. mua hàng của khách hàng. Ngoài ra khi các bộ phận, nhà máy đặt hàng với số lượng lớn và các mặt hàng khác nhau thì việc giải quyết các nhu cầu mua hàng đó vô cùng phức tạp và mất quá nhiều thời gian nhưng hiệu quả công việc vẫn còn rất thấp. - Vấn đề đặt ra cho bài toán là làm thế nào xây dựng một website cho phép nhân viên kỹ thuật có thể quản lý quy trình mua hàng của từng khách riêng biệt nhờ vậy mà công ty dễ dàng quản lý được các đơn đặt hàng, thống kê được doanh số bán hàng và lợi nhuận của từng tháng. - Bên cạnh đó đề tài cần đảm bảo được các yêu cầu sau: Tính tiện dụng: Hệ thống phải có tính thân thiện với người dùng, đảm bảo khả năng hỗ trợ tối đa cho người dùng trong việc sử dụng và khai thác hệ thống. Tính bảo mật: Hệ thống phải đảm bảo khả năng bảo mật cho thông tin trong quá trình truy xuất thông tin từ phía người dùng. Mọi truy xuất của người dùng phải được kiểm soát cả từ phía trình khách lẫn trình chủ nhầm đảm bảo khả năng vận hành tốt nhất cho hệ thống. Tính tùy biến: Hệ thống phải hỗ trợ khả năng tùy biến nhằm giúp cho người quản trị dễ dàng kiểm soát các nguồn thông tin của mình tùy thuộc vào nhu cầu của họ. 2.3. LỊCH SỬ GIẢ QUYẾT VẤN ĐỀ: Đây là một vấn đề hoàn toàn mới của công ty và chưa hề được giải quyết nên công ty đã nghiên cứu giải pháp và đã đề xuất giải pháp cho em. Sau đó em tiến hành thực hiện đề tài của mình bằng các giải pháp mà công ty đã đưa ra để giải quyết vấn đề hiện tại của công ty. 2.4. PHẠM VI ĐỀ TÀI - Đề tài nghiên cứu xoay quanh vấn đề quản lý quy trình mua hàng của khách hàng và hỗ trợ cho nhân viên kỹ thuật để giúp công ty quản lý tốt quy trình mua hàng của của khách hàng được hiệu quả hơn. - Hệ thống được xây dựng trên nền website và người dùng là khách hàng có nhu cầu mua hàng trực tuyến trên hệ thống website của công ty. Hệ thống sẽ gồm các chức năng chính như sau: 5
  18. Quản trị viên (admin) quản lý sản phẩm, đơn hàng, thành viên người dùng Khách hàng xem, tìm kiếm và mua sản phẩm Khách hàng có thể đăng nhập và xem danh sách đơn hàng đã mua Khách hàng có thể gửi liên hệ và xem thông tin công ty Có 2 view cho khách hàng và cho quản trị, quản trị yêu cầu đăng nhập còn khách hàng thì mặc định là không. 2.5. PHƯƠNG PHÁP NGHIÊN CỨU/HƯỚNG GIẢI QUYẾT VẤN ĐỀ: - Cấu trúc dự án Dự án được xây dựng theo sự kết hợp của mô hình 3 lớp và MVC. Mục đích là để có thể sử dụng lại được toàn bộ code ở phần server side vì AngularJS cũng là MVC. Một số khái niệm: Backend: Toàn bộ code c# xử lý WebAPI, EF, MVC5 Frontend: Phần code giao diện bên ngoài như AngularJS, Bootstrap, HTML, CSS, JavaScript Trang admin: Trang dành cho Admin Trang customer: Trang dành cho khách hàng Database  Repository  Service  Web API, Controller  AngularJS, ASP.NET MVC - Yêu cầu cài đặt: Microsoft SQL Server 2008 R2: Visual Studio 2015 Community: Node Package Manage: Bower: - Công nghệ sử dụng Truy xuất dữ liệu: Entity Framework 6
  19. Resfull API: Web API Hiển thị cho khách hàng: ASP.NET MVC thuần Phần quản trị: AngularJS Phần chứng thực: ASP.NET Identity - Định hướng công nghệ: Có thể sử dụng ADO.NET nếu cần tốc độ nhưng lại vất vả trong khi code và cần có kỹ năng quản lý code tốt. Có thể dùng Dapper hỗ trợ bạn quản lý kết nối và mapping data. Ngoài ra có thể dùng các thư viện khác. Tất cả các thư viện này đều phải base trên ADO.NET Provider. Nên ADO.NET tốc độ vẫn là vô địch vì nó nằm gần SQL nhất. - Dựng cấu trúc solution cho dự án Các thành phần của Solution Demo.Common: Chứa các lớp tiện ích dùng chung cho dự án Demo.Model: Chứa các lớp Domain Entities của dự án Shop.Data: Chứa tầng truy cập dữ liệu sủ dụng Entity Framework Codefirst Demo.Service: Chứa các service xử lý Business logic Demo.Web: Project chính dùng để hiển thị giao diện và tương tác người dùng. Demo.UnitTest: Chứa các class Text sử dụng cho việc Unit Test - Các package cần cài đặt Shop.Common Shop.Model Entity Framework Microsoft.AspNet.Identity.Core Microsoft.AspNet.Identity.EntityFramework 7
  20. Shop.Data Entity Framework Shop.Service Shop.Web Autofac, AutoMapper, Entity Framework Shop.UnitTest Moq, Entity Framwork 2.6. CƠ SỞ LÝ THUYẾT: 2.6.1. Hệ quản trị CSDL SQL Server Hình 4. Hệ quản trị CSDL SQL Server Hình 5. Các thành cơ bản trong SQL ServerHình 6. Hệ quản trị CSDL SQL Server - Giới Thiệu SQL Server SQL Server là một hệ quản trị cơ sở dữ liệu quan hệ (Relational Database Management System (RDBMS) ) sử dụng câu lệnh SQL (Transact-SQL) để trao đổi dữ liệu giữa máy Client và máy cài SQL Server. Một RDBMS bao gồm databases, database engine và các ứng dụng dùng để quản lý dữ liệu và các bộ phận khác nhau trong RDBMS. SQL Server được tối ưu để có thể chạy trên môi trường cơ sở dữ liệu rất lớn (Very Large Database Environment) lên đến Tera-Byte và có thể phục vụ cùng lúc cho hàng ngàn user. SQL Server có thể kết hợp “ăn ý” 8
  21. với các server khác như Microsoft Internet Information Server (IIS), E- Commerce Server, Proxy Server . - Các thành cơ bản trong SQL Server SQL Server được cấu tạo bởi nhiều thành phần như Database Engine, Reporting Services, Notification Services, Integration Services, Full-Text Search Service . Các thành phần này khi phối hợp với nhau tạo thành một giải pháp hoàn chỉnh giúp cho việc lưu trữ và phân tích dữ liệu một cách dễ dàng. Database Engine: Đây là một engine có khả năng chứa dữ liệu ở các quy mô dưới dạng support và table. Ngoài ra, nó còn có khả năng tự điều chỉnh ví dụ: trả lại tài nguyên cho ệ điều hành khi một user log off và sử dụng thêm các tài nguyên của máy khi cần. Integration Services: là tập hợp các đối tượng lập trình Hình 7. Các thành cơ bản trong và các công cụ đồ họa cho SQL Server việc sao chép, di chuyển và chuyển đổi dữ liệu. Khi bạn làm việc trong một công ty Hình 8. Mô hình ASP.NET MVCHình 9. Các thành cơ bản trong lớn thì dữ liệu được lưu trữ ở SQL Server nhiều nơi khác nhau như được chứa trong: Oracle, SQL Server, DB2, Microsoft Access, và bạn chắc chắn sẽ có nhu cầu di chuyển dữ liệu giữa các server này. Ngoài ra, bạn còn muốn định dạng dữ liệu trước khi lưu vào database. Chắc chắn Integration Services sẽ giúp bạn giải quyết được công việc này dễ dàng. Analysis Services: Đây là một dịch vụ phân tích dữ liệu rất hay của Microsoft. Dữ liệu khi được lưu trữ vào trong database mà bạn không thể lấy được những thông tin bổ ích thì coi như không có ý nghĩa gì. Chính vì thế, công cụ này ra đời giúp bạn trong việc phân tích dữ liệu một cách 9
  22. hiệu quả và dễ dàng bằng cách dùng kỹ thuật khai thác dữ liệu – datamining và khái niệm hình khối nhiều chiều – multi dimendion cubes. Notification Services: Dịch vụ thông báo này là nền tảng cho sự phát triển và triển khai các ứng dụng soạn và gửi thông báo. Ngoài ra, dịch vụ này còn có chức năng gửi thông báo theo dịch thời đến hàng ngàn người dăng ký sử dụng trên nhiều loại thiết bị khác nhau. Reporting Services: là một công cụ tạo, quản lý và triển khai báo cáo bao gồm: server và client. Ngoài ra, nó còn là nền tảng cho việc phát triển và xây dựng các ứng dụng báo cáo. Full Text Search Service: là một thành phần đặc biệt trong việc truy vấn và đánh chỉ mục dữ liệu văn bản không cấu trúc được lưu trữ trong các cơ sở dữ liệu SQL Server. Service Broker: là một môi trường lập trình cho việc tạo ra các ứng dụng trong việc nhảy qua các Instance. 2.6.2.Tổng quan về ASP.NET MVC - Mẫu kiến trúc Model – View – Controller được sử dụng nhằm chi ứng dụng thành ba thành phần chính: model, view và controller. Nền tảng ASP.NET MVC giúp cho chúng ta có thể tạo được các ứng dụng web áp dụng mô hình MVC thay vì tạo ứng dụng theo mẫu ASP.NET Web Forsm. Nền tảng ASP.NET MVC có đặc điểm nổi bật là nhẹ (lighweigt), dễ kiểm thử phần giao diện (so với ứng dụng Web Forms), tích hợp các tính năng có sẵn của ASP.NET. Nền tảng ASP.NET MVC được định nghĩa trong namespace System.Web.Mvc và là một phần của name space System.Web. - MVC là một mẫu thiết kế (design pattern) chuẩn mà nhiều lập trình viên đã quen thuộc. Một số loại ứng dụng web sẽ thích hợp với kiến trúc MVC. Một số khác vẫn thích hợp với ASP.NET Web Forms và cơ chế postbacks. Đôi khi có những ứng dụng kết hợp cả hai kiến trúc trên. 10
  23. - Nền tảng MVC bao gồm các thành phần dưới đây: Hình 10. Mô hình ASP.NET MVC Hình 11. Cấu trúc RESTHình 12. Mô hình ASP.NET MVC Models: Các đối tượng Models là một phần của ứng dụng, các đối tượng này thiết lập logic của phần dữ liệu của ứng dụng. Thông thường, các đối tượng model lấy và lưu trạng thái của model trong CSDL. Ví dụ như, một đối tượng Product (sản phẩm) sẽ lấy dữ liệu từ CSDL, thao tác trên dữ liệu và sẽ cập nhật dữ liệu trở lại vào bảng Products ở SQL Server. Views: Views là các thành phần dùng để hiển thị giao diện người dùng (UI). Thông thường, view được tạo dựa vào thông tin dữ liệu model. Ví dụ như, view dùng để cập nhật bảng Products sẽ hiển thị các hộp văn bản, drop-down list, và các check box dựa trên trạng thái hiện tại của một đối tượng Product. Controllers: Controller là các thành phần dùng để quản lý tương tác người dùng, làm việc với model và chọn view để hiển thị giao diện người dùng. Trong một ứng dụng MVC, view chỉ được dùng để hiển thị thông tin, controller chịu trách nhiệm quản lý và đáp trả nội dung người dùng nhập và tương tác với người dùng. Ví dụ, controller sẽ quản lý các dữ liệu người dùng gởi lên (query-string values) và gởi các giá trị đó đến model, model sẽ lấy dữ liệu từ CSDL nhờ vào các giá trị này. 11
  24. - Nền tảng ASP.NET MVC mang lại những lợi ích sau: Dễ dàng quản lý sự phức tạp của ứng dụng bằng cách chia ứng dụng thành ba thành phần model, view, controller Nó không sử dụng view state hoặc server-based form. Điều này tốt cho những lập trình viên muốn quản lý hết các khía cạnh của một ứng dụng. Nó sử dụng mẫu Front Controller, mẫu này giúp quản lý các requests (yêu cầu) chỉ thông qua một Controller. Nhờ đó bạn có thể thiết kế một hạ tầng quản lý định tuyến. Để có nhiều thông tin hơn, bạn nên xem phần Front Controller trên web site MSDN Hỗ trợ tốt hơn cho mô hình phát triển ứng dụng hướng kiểm thử (TDD) Nó hỗ trợ tốt cho các ứng dụng được xây dựng bởi những đội có nhiều lập trình viên và thiết kế mà vẫn quản lý được tính năng của ứng dụng - Lợi ích của ứng dụng được xây dựng trên nền tảng Web Forms Nó hỗ trợ cách lập trình hướng sự kiện, quản lý trạng thái trên giao thức HTTP, tiện dụng cho việc phát triển các ứng dụng Web phục vụ kinh doanh. Các ứng dụng trên nền tảng Web Forms cung cấp hàng tá các sự kiện được hỗ trợ bởi hàng trăm các server controls. Sử dụng mẫu Page Controller. Xem thêm ở mục Page Controller trên MSDN Mô hình này sử dụng view state hoặc server-based form, nhờ đó sẽ giúp cho việc quản lý trạng thái các trang web dễ dàng. Nó rất phù hợp với các nhóm lập trình viên quy mô nhỏ và các thiết kế, những người muốn tận dụng các thành phần giúp xây dựng ứng dụng một cách nhanh chóng. Nói tóm lại, áp dụng Web Forms giúp giảm bớt sự phức tạp trong xây dựng ứng dụng, bởi vì các thành phần (lớp Page, controls, ) được tích hợp chặc chẽ và thường thì giúp bạn viết ít code hơn là áp dụng theo mô hình MVC. 2.6.3. Tổng quan về WEB API - API là gì? 12
  25. API là viết tắt của Application Programming Interface (giao diện lập trình ứng dụng) phương thức kết nối với các thư viện và ứng dụng khác. Windows có nhiều API, và Twitter cũng có web API, tuy nhiên chúng thực hiện các chức năng khác nhau, với mục tiêu khác nhau. Nó chính là một phần mềm giao tiếp được sử dụng bởi các ứng dụng khác nhau. Nó cũng giống như bàn phím là thiết bị dùng để giao tiếp giữa người sử dụng và máy tính, API là một phần mềm giao tiếp giữa chương trình và hệ điều hành. - Những điểm nổi bật của API: Đây là một trong những framework mới sẽ giúp ít cho bạn trong việc xây dựng các HTTP service một cách rất đơn giản và nhanh chóng. Mã nguồn mở nên bạn có thể được sử dụng bởi bất kì một client nào hỗ trợ XML, JSON. Nó cũng có khả năng hỗ trợ đầy đủ các thành phần HTTP: URI, request/response headers, caching, versioning, content forma. Bạn có thể sử dụng các host nằm trong phần ứng dụng hoặc trên IIS. Một kiểu kiến trúc vô cùng phù hợp dành cho các thiết bị trang bị băng thông giới hạn như smartphone, tablet. Thường nó có định dạng dữ liệu là JSON, XML hoặc một kiểu dữ liệu bất kỳ. - REST For Web Developers Hiện nguyên lý REST và cấu trúc dữ liệu RESTful được biết đến rất rộng rãi trong giới lập trình, nhưng vẫn có nhiều người hay nhầm lẫn. Bản thân REST không phải là một loại công nghệ, mà là phương thức tạo API với nguyên lý tổ chức nhất định. Những nguyên lý này nhằm hướng dẫn lập trình viên tạo môi trường xử lý API request được toàn diện hơn. REST là viết tắt của Representational State Transfer. Giải thích đơn giản, REST là một loạt hướng dẫn và dạng cấu trúc dùng cho việc chuyển đổi dữ liệu. Thông thường, REST hay được dùng cho ứng dụng web, nhưng cũng có thể làm việc được với dữ liệu phần mềm. Tóm lại, RESTful API là các API theo cấu trúc REST. 13
  26. - Cấu trúc REST là gì? Đặc điểm Sự nhất quán trong cả API Tồn tại không trang thái (ví dụ, không có server-side session) Sử dụng HTTP status code khi cần thiết Sử dụng URL endpoint với logical hierarchy Hình 13. Cấu trúc REST Hình 14. Kiến trúc của Entity FrameworkHình 15. Cấu trúc REST Versioning trong URL chứ không phải trong HTTP header REST là một phương thức nhỏ gọn. Nên rất được ưa chuộng cho dữ liệu HTTP. Cũng vì vậy nên REST dần phổ biến trên web, và được xem là lựa chọn “số một” cho phát triển API. - Có 4 lệnh dùng để truy cập RESTful API: GET để truy vấn object POST để tạo object mới PUT để sửa đổi hoặc thay thế một object 14
  27. DELETE để loại bỏ một object - Mỗi phương thức trên phải được API call thông qua để gửi chỉ thị cho server phải làm gì. - Sự khác nhau giữa Web Service, WCF, WCF REST, Web API Hiện nay trong kỷ nguyên hậu PC, smartphone và tablet lên ngôi, nhu cầu xây dựng các ứng dụng mobile trên Windows Phone, iOS, Android đồng bộ dữ liệu đến server theo mô hình điện toán đám mây đang trở nên rất hot. Nếu quyết định xây dựng phía server sử dụng .NET Framework (với phiên bản mới nhất 4.5.3) thì lập trình viên có thể tạo ra các HTTP service bằng rất nhiều công nghệ khác nhau như là: Web Service (ASMX), WCF Service, WCF REST Service, Web API Service Web Service Đây là công nghệ cũ nhất của .NET Framework Nó dựa trên SOAP (Simple Object Access protocol) dữ liệu trả về dạng XML Chỉ hỗ trợ giao thức HTTP Không phải Open Source nhưng có thể sử dụng được với bất cứ client nào hỗ trợ XML Chỉ có thể host trên IIS  Ưu điểm: Code và Test đơn giản  Nhược điểm: Chỉ hỗ trợ giao thức SOAP để truyền nhận dữ liệu nên performance không cao Không thể tạo ra service dạng REST hỗ trợ định dạng dữ liệu JSON WCF (.NET 3.0 trở lên) Là bản nâng cấp đáng giá của WCF với việc trên .NET 3.5 Microsoft bổ sung webHttpBinding để hỗ trợ RESTful service 15
  28. Hỗ trợ 2 HTTP verb GET, POST để truyền nhận dữ liệu với 2 thuộc tính tương ứng là WebGet và WebInvoke Muốn sử dụng các HTTP verb khác như PUT, DELETE cần cấu hình thêm trên IIS Hỗ trợ các định dạng dữ liệu XML, ATOM, JSON  Ưu điểm: Bổ sung hỗ trợ RESTful service với định dạng dữ liệu JSON nhẹ hơn SOAP với dữ liệu XML rất nhiều Cho phép cấu hình tham số WebGet qua URI sử dụng UriTemplate  Nhược điểm: Chưa hoàn toàn phải là RESTful service, mới chỉ hỗ trợ mặc định GET, POST Cấu hình khó nhớ (cố hữu của WCF) Web API (.NET 4 trở lên) Đây là một framework mới giúp cho việc xây dựng các HTTP service rất đơn giản và nhanh chóng Open Source và có thể được sử dụng bởi bất kì client nào hỗ trợ XML, JSON Hỗ trợ đầy đủ các thành phần HTTP: URI, request/response headers, caching, versioning, content formats Có thể host trong ứng dụng hoặc trên IIS Kiến trúc lý tưởng cho các thiết bị có băng thông giới hạn như smartphone, tablet Định dạng dữ liệu có thể là JSON, XML hoặc một kiểu dữ liệu bất kỳ  Ưu điểm: Cấu hình hết sức đơn giản khi so với WCF Performance cao Hỗ trợ RESTful đầy đủ 16
  29. Hỗ trợ đầy đủ các thành phần MVC như: routing, controller, action result, filter, model binder, IoC container, dependency injection, unit test Open Source  Nhược điểm: Còn rất mới nên chưa có nhiều đánh giá về nhược điểm của Web API - Tại sao dùng Web API: Service RESTful hỗ trợ đầy đủ các thành phần HTTP: URI, request/response headers, caching, versioning, content formats Service cung cấp dữ liệu cho nhiều client khác nhau với băng thông giới hạn như: browser, mobile, tablet 2.6.4. Tổng quan kiến trúc của Entity Framework - ADO.NET Entity Framework là một nền tảng được sử dụng để làm việc với database thông qua cơ chế ánh xạ Object/Relational Mapping (ORM). Nhờ đó, bạn có thể truy vấn, thao tác với database gián tiếp thông qua các đối tượng lập trình. 17
  30. Hình 16. Kiến trúc của Entity Framework Hình 17. Mô hình Entity Data ModelHình 18. Kiến trúc của Entity Framework - Kiến trúc của Entity Framework được minh họa như sau: - Object Services Đây là các class tự động sinh ra tương ứng với mô hình dữ liệu. Các class này bao gồm: ObjectContext đại diện cho một database. ObjectContext có chức năng quản lý các kết nối, định nghĩa mô hình dữ liệu với metadata và thao tác với database. Lớp này cũng có thể thêm vào các phương thức đại diện cho các stored procedure trong database. ObjectSet là một một tập hợp các entity. Mỗi đối tượng này tương ứng với một table. Có thể lấy được các đối tượng này thông qua các property tương ứng của ObjectContext. 18
  31. EntityObject, ComplexObject là các lớp tương ứng cho một dòng dữ liệu của table trong database. Khác biệt chính giữa hai loại này là ComplexObject không chứa primary key. EntityCollection và EntityReference : là các đối tượng thể hiện mối quan hệ (relationship) giữa hai entity class. Mỗi đối tượng này có thể được truy xuất thông qua các property của entity class. - Ta có bảng ánh xạ tương đương sau giữa các đối tượng trong database và EF: Bảng 1. Ánh xạ tương đương giữa các đối tượng trong database và EF Database Object Entity Framework Object Database ObjectContext Table, View EntityObject, ComplexObject Column Property EntityCollection , Relationship EntityReference - Entity Data Model Entity Data Model (EDM) là mô hình dữ liệu được mô tả thông qua các ngôn ngữ theo chuẩn XML. EDM được chia làm 3 lớp là: Conceptual, Mapping và Logical. Mỗi lớp này được định nghĩa bởi ngôn ngữ riêng theo định dạng XML: Conceptual – Conceptual Schema Definition Language (CSDL): là ngôn ngữ định nghĩa các entity, relationship, hàm trong tập tin với phần mở rộng .csdl. Có thể tạo được các entity class (object layer). Mapping – Mapping specification language (MSL): định nghĩa các ánh xạ giữa lớp conceptual và logical, nội dung này được lưu trong tập tin .msl. 19
  32. Logical – Store Schema Definition Language (SSDL): định nghĩa mô hình lưu trữ của dữ liệu, lưu trữ trong tập tin .ssdl. Hình 19. Mô hình Entity Data Model Hình 20. Luồng khởi tạo databaseHình 21. Mô hình Entity Data Model - EntityClient Data Provider EntityClient là một data provider mới của ADO.NET dùng để truy xuất đến database. Được xây dựng bên trên các ADO.NET data provider cơ bản, EntityClient không truy xuất trực tiếp dữ liệu mà thông qua các data provider khác dựa vào các thông tin dữ liệu từ Entity Data Model. EntityClient cũng bao gồm các lớp giống như các ADO.NET data provider khác và tên lớp được đặt với tiền tố Entity. Ví dụ bạn có thể tạo kết nối bằng EntityConnection, tạo các câu truy vấn bằng EntityCommand và đọc kết quả bằng EntityDataReader. Một điểm khác biệt với các data provider khác là EntityClient sử dụng Entity SQL để truy vấn dữ liệu. Các lệnh Entity SQL sẽ được chuyển thành một cấu trúc lệnh dạng cây (command tree) và chuyển xuống cho các data provider khác. - Tại sao dùng Entity Framework? Ưu điểm: 20
  33. Hỗ trợ ảo hóa cho việc xây dựng tầng truy xuât dữ liệu, không cần biết nhiều SQL cũng không cần quản lý đóng mở kết nối Truy xuất và thêm sửa xóa nhanh code ít hơn. Dễ sử dụng cho người mới bắt đầu Là sản phẩm của MS nên sẽ tương thích tốt vơi SQL Server Nhược điểm: Chậm khi có nhiều câu lệnh truy vấn phức tạp, đông người sử dụng Khó control được câu lệnh gen ra Khắc phục: Kết hợp với việc sử dụng Store procedures khi có các câu lệnh phức tạp, hiểu sâu hơn về cơ chế tối ưu hóa cho SQL Server 2.6.5. Tổng quan về Entity Framework Code First - Entity Framework Code First được giới thiệu từ Entity Framework 4.1. Code First chủ yếu là hữu ích trong Domain Driven Design (DDD). Trong cách tiếp cận Code First, bạn có thể tập trung vào việc thiết kế Domain và bắt đầu tạo ra các lớp theo yêu cầu của Domain của bạn chứ không phải thiết kế cơ sở dữ liệu trước rồi sau đó tạo ra các lớp phù hợp với thiết kế cơ sở dữ liệu đó. Code First API sẽ tạo ra cơ sở dữ liệu dựa trên các lớp thực thể và lớp cấu hình của bạn. - Vì vậy, đầu tiên bạn bắt đầu viết các lớp thay vì tập trung vào thiết kế cơ sở dữ liệu, sau đó khi bạn chạy ứng dụng, Code First API sẽ tạo ra cơ sở dữ liệu mới hoặc ánh xạ các lớp của bạn vào cơ sở dữ liệu đã tồn tại trước khi chạy ứng dụng của bạn. - Vì vậy, các công việc cơ bản sẽ là: Viết các lớp → Nhấn F5 để chạy ứng dụng → Code First API tạo ra cơ sở dữ liệu mới hoặc ánh xạ các lớp với cơ sở dữ liệu đã tồn tại → Thêm dữ liệu mặc định vào cơ sở dữ liệu hoặc kiểm tra dữ liệu trong cơ sở dữ liệu → Cuối cùng khởi chạy ứng dụng. - Hình dưới đây thể hiện luồng khởi tạo database dựa trên đối số truyền vào phương thức khởi tạo của lớp context kế thừa từ lớp DbContext: 21
  34. Hình 22. Luồng khởi tạo database Hình 23. Định nghĩa lớp Context không có đối số truyền vàoHình 24. Luồng khởi tạo database - Có thể truyền các đối số vào phương thức khởi tạo của lớp context như sau: Không có đối số truyền vào: Nếu bạn không truyền đối số cho phương thức khởi tạo thì Code First API sẽ tạo database của bạn trong SQLEXPRESS với tên được đặt theo quy tắc sau {Namespace}.{Tên_lớp_Context}. Ví dụ: database sẽ có tên là SchoolDataLayer.Context nếu chúng ta định nghĩa lớp Context như sau: Hình 25. Định nghĩa lớp Context không có đối số truyền vào 22 Hình 26. Định nghĩa lớp Context truyền vào tên của databaseHình 27. Định nghĩa lớp Context không có đối số truyền vào
  35. Truyền vào tên của database: Nếu bạn truyền tên của database vào đối số của phương thức khởi tạo, Code First API sẽ tạo database có tên như vậy trong SQLEXPRESS. Ví dụ: lớp Context dưới đây sẽ tạo database tên là "SchoolDB-CodeFirst" trong SQLEXPRESS. Hình 28. Định nghĩa lớp Context truyền vào tên của database Hình 29. Định nghĩa lớp Context truyền vào chuỗi kết nốiHình 30. Định nghĩa lớp Context truyền vào tên của database Truyền vào chuỗi kết nối: Nếu bạn truyền vào tên của chuỗi kết nối được Hình 31. Định nghĩa lớp Context truyền vào chuỗi kết nối Hình 32. File App.configHình 33. Định nghĩa lớp Context truyền vào chuỗi kết nối định nghĩa trong file app.config hoặc web.config thì Code First API sẽ tạo database dựa trên tên và máy chủ được định nghĩa trong chuỗi kết nối. Ví dụ: lớp Context dưới đây sẽ tạo database tên là "SchoolDB- ByConnectionString" đặt trên máy chủ 192.168.1.2: App.config: Hình 34. File App.config 23 Hình 35. Các tính năng chính của Angular JSHình 36. File App.config
  36. 2.6.6. HTML (Hypertext Markup Language) HTML là chữ viết tắt của cụm từ HyperText Markup Language (dịch là Ngôn ngữ đánh dấu siêu văn bản) được sử dụng để tạo một trang web, trên một website có thể sẽ chứa nhiều trang và mỗi trang được quy ra là một tài liệu HTML. Cha đẻ của HTML là Tim Berners-Lee, cũng là người khai sinh ra World Wide Web và chủ tịch của World Wide Web Consortium (W3C – tổ chức thiết lập ra các chuẩn trên môi trường Internet). 2.6.7. CSS (Cascading Style Sheets) CSS là từ viết tắt của Cascading Style Sheets: công dụng dùng để trang trí trang web và thường được gắn với các ngôn ngữ như HTML, PHP dùng làm nổi bật trang web và hình ảnh trang web. Trong Style Sheet này chứa những câu lệnh CSS. Mỗi câu lệnh CSS sẽ định dạng một phần nhất định của HTML, ví dụ như: font của chữ, đường viền, màu nền, căn chỉnh hình ảnh, 2.6.8. JAVASCRIPT - JavaScript là một ngôn ngữ lập trình kịch bản dựa trên đối tượng được phát triển từ các ý niệm nguyên mẫu được tạo ra vào năm 1995 bởi Brendan Eich tại Netscape. Mục đích ban đầu để nâng cao khả năng tương tác của trang web với người sử dụng. - JavaScript được hỗ trợ hầu như trên tất cả các trình duyệt như Firefox, Chrome, thậm chí các trình duyệt trên thiết bị di động cũng hỗ trợ. - JavaScript là một ngôn ngữ lập trình dự trên nguyên mẫu với cú pháp phát triển từ C. JavaScript có khái niệm từ khóa, do đó gần như JavaScript không được mở rộng. Cũng giống như C, JavaScript không có bộ xử lý xuất/nhập riêng. Trong khi C sử dụng thư viện xuất/nhập chuẩn, JavaScript dựa vào phần mềm ngôn ngữ được gắn vào để thực hiện xuất/nhập. - Trên trình duyệt, rất nhiều trang web sử dụng JavaScript để thiết kế trang web động và một số hiệu ứng hình ảnh thông qua DOM. JavaScript được dùng để thực hiện một số tác vụ không thể thực hiện được với chỉ HTML như kiểm tra thông tin nhập vào, tự động thay đổi hình ảnh, Ở Việt Nam, JavaScript còn được ứng dụng để làm bộ gõ tiếng Việt giống như bộ gõ hiện đang sử dụng trên trang Wikipedia tiếng Việt. Tuy nhiên, mỗi trình duyệt áp dụng JavaScript khác nhau và không tuân theo chuẩn W3C DOM, do đó trong rất nhiều trường hợp lập trình viên phải viết nhiều phiên bản của cùng một đoạn 24
  37. mã nguồn để có thể hoạt động trên nhiều trình duyệt. Một số công nghệ nổi bật dòng JavaScript để tương tác với DOM bao gồm DHTML, Ajax và SPA. 2.6.9. Tổng quan về AngularJS - AngularJS là gì? Angular là một bộ Javascript Framework rất mạnh và thường được sử dụng để xây dựng project Single Page Application (SPA). Nó cho phép bạn sử dụng HTML như là ngôn ngữ mẫu và cho phép bạn mở rộng cú pháp của HTML để diễn đạt các thành phần ứng dụng của bạn một cách rõ ràng và súc tích. Hai tính năng cốt lõi: Data binding và Dependency injection của AngularJS loại bỏ phần lớn code mà bạn thường phải viết. Nó xảy ra trong tất cả các trình duyệt, làm cho nó trở thành đối tác lý tưởng của bất kỳ công nghệ Server nào. AngularJS là một JavaScript Framework được phát triển bởi Google, nó là mã nguồn mở và hoàn toàn miễn phí chính vì thế có rất nhiều tài liệu cũng như hướng dẫn cho việc tìm hiểu AngularJS. - Các đặc tính của Angular JS AngularJS là một Framework phát triển mạnh mẽ dựa trên JavaScript để tạo các ứng dụng RICH Internet Application (RIA). AngularJS thường dùng để phát triển frontend (giao diện khách hàng) thông qua các API để gọi data, sử dụng mô hình MVC rất mạnh mẽ Angular là mã nguồn mở, hoàn toàn miễn phí và được phát triển bởi hàng ngàn các lập trình viên trên thế giới. Các ứng dụng được viết bởi AngularJS tương thích với nhiều phiên bản trình duyệt web. AngularJS tự động xử lý mã JavaScript để phù hợp với mỗi trình duyệt. AngularJS cung cấp cho lập trình viên những tùy chọn để viết các ứng dụng client-side trong mô hình MVC (Model View Controller) một cách rõ ràng. 25
  38. - Các tính năng chính của Angular JS Hình 37. Các tính năng chính của Angular JS Hình 38. Ví dụ về directiveHình 39. Các tính năng chính của Angular JS Data-binding: Tự động đồng bộ hóa dữ liệu giữa Model và View. Module: dùng để định nghĩa một ứng dụng AngularJS. Module giống như một chiếc hộp để chứa các thành phần khác của ứng dụng bên trong nó.Module còn được gọi là một container của ứng dụng. Scope: Là những đối tượng hướng đến model. Nó là cầu nối giữa Controller và View. Controller: Là những hàm JavaScrip xử lí kết hợp với Scope. Service: AngularJS sử dụng các API được xây dựng từ các web service để thao tác với Database. Filters: Bộ lọc để lọc ra các thành phần của một mảng và trả về một mảng mới. Directives: Đánh dấu vào các yếu tố của DOM, nghĩa là sẽ tạo ra các thẻ HTML tùy chỉnh. 26
  39. Template: Các rendered view với các thông tin từ controller và model có thể sử dụng trong các file riêng biệt hoặc với view với trang sử dụng Partials. Routing: Chuyển đổi giữa các action trong Controller. Model View Controller: Mô hình chia thành phần riêng biệt thành Model, View, Controller. Đây là một mô hình khá hay nhưng trong Angular thì nó được chế biến lại một chút thành Model View View Model. Deep Linking: Liên kết sâu cho phép mã hóa trạng thái của ứng dụng trong các URL để nó có thể đánh dấu được với công cụ tìm kiếm. Dependency Injection: Giúp các nhà phát triển tạo ứng dụng dễ dàng hơn. - Ưu điểm và nhược điểm của AngularJS Ưu điểm Cho phép tạo ra các ứng dụng một cách đơn giản, code sạch. Sử dụng data bind giống .NET với tính năng liên kết với HTML nên giúp người dùng cảm thấy dễ sử dụng. Có thể chạy trên hầu hết các trình duyệt điện thoại thông minh. Cung cấp khả năng tái sử dụng các component. Code dễ dàng khi unit test. Nhược điểm Nhược điểm Không an toàn: Được phát triển từ javascript nên nó không an toàn, phía máy chủ phải thường xuyên xác nhận quyền để hệ thống chạy ổn định. Nếu người sử dụng ứng dụng vô hiệu hóa JavaScript thì họ chỉ nhìn được trang cơ bản, không thấy gì thêm. - AngularJS directive là gì? Đây là một thành phần mở rộng HTML, là các thuốc tính của các thẻ HTML mà AngularJS có định nghĩa thêm. Nó tuân thủ theo nguyên tắc 27
  40. của Angular đó là luôn bắt đầu bằng tiền tố ng. Khi khai báo ng-prefix, phần prefic chính là tên của directive mà chúng ta muốn sử dụng. - Một số directive cơ bản như : ng-app : Dùng để bắt đầu một ứng dụng AngularJS. ng-init : Dùng để khởi tạo dữ liệu cho ứng dụng. ng-model : Dùng định nghĩa model như là một biến có thể sử dụng trong AngularJS. ng-repeat : Dùng để lặp lại các phần tử HTML cho mỗi item trong một tập hợp. - Để hiểu rõ hơn chúng ta cùng xem 1 ví dụ nhỏ sau: Ở đây khi bạn nhập dữ liệu vào ô input thì dòng ở bên dưới sẽ thay đổi theo. Nếu dùng javascript thì chúng ta sẽ phải bắt sự kiện onkeypress cho input và đổi giá trị cho thẻ span ở bên dưới. Nhưng với AngularJS thì việc này rất đơn giản, bạn chỉ cần sử sử dụng ng-model để khai báo model, dùng ng-bind để lấy dữ liệu từ model. Bạn phải để giá tri của ng- model và ng-bind có giá trị giống nhau thì chúng mới có thể liên kết được. Ở đây mình để ng-model và ng-bind đều là inputNotification. Lưu ý : bạn phải khai báo module, controller nếu không thì sẽ bị lỗi Hình 40. Ví dụ về directive 28 Hình 41. Danh sách các directive cơ bảnHình 42. Ví dụ về directive
  41. - Danh sách các directive cơ bản Hình 43. Danh sách các directive cơ bản Hình 44. Các table của ASP.NET IdentityHình 45. Danh sách các directive cơ bản 2.6.10. Tổng quan về ASP.NET Identity - ASP.NET Identity là 1 công nghệ ra đời sau ASP.NET Membership vốn đã khá quen thuộc với các tín đồ của ASP.NET trong bài toán xác thực và phân quyền người dùng trên website. ASP.NET Identity khắc phục một số yếu điểm của ASP.NET Membership và bổ sung thêm nhiều tính năng hấp dẫn để bắt kịp xu thế như hỗ trợ đăng nhập qua mạng xã hội, đăng nhập thông qua 2 bước, gửi mail xác nhận khi đăng ký - Cấu trúc tổ chức thư mục của ASP.NET Identity App_Start/IdentityConfig.cs: chứa các lệnh để cấu hình ASP.NET Identity 29
  42. Controller/AccountController: controller chứa các action method có tác dụng xác thực người dùng như Login, Register, ForgotPassword, Controller/ManageController: controller chứa các action method có tác dụng quản lý user (khi user đã login vào web) như ChangePassword, SetPassword, Model/AccountViewModels: chứa các View Model hiển thị trong các view của AccountController Model/ManageViewModels: chứa các View Model hiển thị trong các view của ManageController Model/IdentityModels: chứa class ApplicationUser để quản lý thông tin user và class ApplicationDbContext để quản lý kết nối với database ở dạng Entity Framework Code First. - Một số thuộc tính ràng buộc RequiredLength: độ dài tối thiểu của password RequireNonLetterOrDigit: bắt buộc password chứa ký tự đặc biệt hoặc ký tự số RequireDigit: bắt buộc chứa ký tự số RequireLowercase: bắt buộc chứa ký tự in thường RequireUppercase: bắt buộc chứa ký tự in HOA - Khi cấu hình chuỗi kết nối (connectionString) trong file Web.config của project ASP.NET MVC 5 thì Visual Studio sẽ tự tạo mới 1 database (nếu database chưa tồn tại) chứa các table của ASP.NET Identity hoặc add thêm các table của ASP.NET Identity vào database (nếu database đó đã tồn tại) trong SQL Server. Trong database này sẽ chứa 5 table dbo.AspNetRoles, dbo.AspNetUserClaims, dbo.AspNetUserLogins, dbo.AspNetUserRoles, dbo.AspNetUsers và 1 table lưu giữ lịch sử sửa đổi DbContext trong project là dbo.__MigrationHistory phục vụ trong việc quản lý user trên web. 30
  43. Hình 46. Các table của ASP.NET Identity Hình 47. Các table của ASP.NET Identity 31
  44. CHƯƠNG 3: PHÂN TÍCH VÀ THIẾT KẾ HỆ THỒNG 3.1. CÁC BƯỚC HOÀN THÀNH DỰ ÁN Bảng 2. Các bước hoàn thành dự án Tiến trình Mô tả Khởi tạo dự án Tìm hiểu các tài liệu liên quan đến dự án. Tìm hiểu cách thức hoạt động của việc bán hàng và giao hàng trên mạng. Xem xét tính khả thi của dự án, các khía cạnh liên quan đến dự án. Lập kế hoạch Mô tả tổng quát quá trình thực hiện dự án. Ràng buộc dự án với các điều kiện chủ quan và khách quan. Xác định tính khả thi của dự án. Xác định rủi ro và các vấn đề phát sinh trong quá trình xây dựng dự án có thể gặp. Lập kế hoạch hệ thống mới. Thu thập yêu cầu Thu thập yêu cầu của khách hàng đối với hệ thống một cách chi tiết và chính xác. Khảo sát, tìm hiểu các hệ thống đã có thể đưa ra các yêu cầu, các chức năng cho hệ thống của mình. Phân tích và kiểm tra Phân tích các yêu cầu chức năng và phi chức năng. yêu cầu Kiểm tra tính khả thi của yêu cầu. Bổ sung các yêu cầu còn thiếu sót. Phân tích Mô hình hóa các yêu cầu hệ thống và đặc tả các chức năng. Thiết kế Thiết kế cơ sở dữ liệu. Thiết kế giao diện. Kiểm thử Kiểm thử cho từng giai đoạn của dự án từ lúc bắt đầu đến lúc kết thúc dự án. 32
  45. Cài đặt Xây dựng website cho kế hoạch đã đặt ra. Viết tài liệu hướng dẫn sử dụng hệ thống người dùng. Thực thi Đưa hệ thống vào hoạt động thử. Theo dõi hoạt động của hệ thống. 3.2. ĐÁNH GIÁ KHẢ THI VÀ RỦI RO 3.2.1. Khả thi về kinh tế - Đối với Công ty: Tiết kiệm nhiều chi phí và thời gian trong mua bán. Thu hút sự chú ý của khách hàng với những hình ảnh sinh động của sản phẩm. Quảng bá các sản phẩm mới cũng như tên tuổi của công ty đến khách hàng. Có thêm thu thập từ quảng cáo sản phẩm cho các công ty, doanh nghiệp có nhu cầu quảng cáo trên website. Tăng tính cạnh tranh trên thị trường, đưa thông tin về sản phẩm đến tất cả khách hàng một cách nhanh nhất. - Đối với khách hàng: Tiết kiệm thời gian hơn, không cần phải đến tận các cửa hàng để chọn sản phẩm. Tiết kiệm được một khoản chi phí khi mua hàng trực tuyến. Khách hàng được tư vấn trực tiếp về sản phẩm thông qua mục hỗ trợ khách hàng trực tuyến. 3.2.2. Khả thi về kỹ thuật - Tính khả thi: Yêu cầu phần cứng không cao. Đường truyền kết nối internet. Yêu cầu nhân viên quản trị website phải biết về hệ quản trị cơ sở dữ liệu hoặc có kiến thức về tin học. Bảo dưỡng trong 1 năm. 33
  46. Chi phí xây dựng và bảo trì thấp. - Độ lớn dự án: Nhỏ, thời gian ngắn và quy mô cửa hàng nhỏ. - Cấu trúc dự án: Chức năng hệ thống và tính thân thiện của hệ thống đối với người sử dụng, tiết kiệm chi phí và thời gian. - Công cụ phát triển: Công cụ: Microsoft SQL Server, Visual Studio 2017. Ngôn ngữ lập trình: C#, JavaScript, HTML, CSS. Hệ quản trị cơ sở dữ liệu: SQL Server. Trình duyệt web: Mozilla Firefox, Google Chrome. Công cụ phân tích thiết kế: StarUML, Photoshop. Công cụ viết báo cáo: Microsoft Word 2016. 3.3.MÔ TẢ RỦI RO VỀ MẶT KỸ THUẬT Bảng 3.Mô tả rủi ro về mặt kỹ thuật STT Rủi ro Đánh Mô tả Hướng khắc phục giá Những phát sinh Thu thập yêu cầu từ trong dự án cũng có phía khách hàng một Sự thay đổi yêu 1 Thấp thể xảy ra nhưng cách đầy đủ và chính cầu với hệ thống không cao, chỉ có thể xác là ngoại lệ Hệ thống nhỏ và đơn Tìm hiểu về cơ quan Trung 2 Độ lớn của dự án giản không cần nhiều để thiết kế cho phù bình nhân lực để quản trị hợp Sự tiện dụng, dễ dùng Thiết kế phù hợp với Thái độ của 3 Thấp của website đối với nhiều người dùng người dùng người dùng Sự hiểu biết của Khách hàng chưa có Đưa ra những thuận người dùng về thói quen mua hàng lợi của việc mua hàng 4 website bán thiết Thấp qua mạng. Đại đa số qua mạng đối với bị tin học qua người dùng truy cập người dùng mạng để xem thông tin sản 34
  47. phẩm Không cần trình độ về Thiết kế đơn giản, dễ tin học cao người sử dụng phù hợp Trình độ của 5 Thấp dùng vẫn có thể truy với tất cả người dùng người dùng cập vào website và xem hướng dẫn Hệ thống tối ưu, phân Người quản trị cần quyền nhiều người tăng tính bảo mật 6 Tính bảo mật Tốt dùng, mật khẩu được mã hóa 3.4. THU THẬP YÊU CẦU 3.4.1. Yêu cầu nghiệp vụ - Hệ thống quản lý mua hàng trực tuyến của khách hàng tại công ty cổ phần Nam Việt Khi hách hàng có nhu cầu mua hàng thì khách hàng sẽ trực tiếp truy cập vào website công ty để tham khảo mặt hàng, giá cả của tất cả các loại sản phẩm mà công ty đang kinh doanh đã được đưa lên trang web. Thông tin mỗi sản phẩm gồm: tên sản phẩm, đơn giá, hình ảnh chi tiết, thông tin chi tiết. Sau khi lựa chọn được sản phẩm muốn mua thì khách hàng chọn thêm vào giỏ hàng. Bạn không cần phải có tài khoản đăng nhập vào hệ thống vẫn có thể đặt mua hàng được. Khách hàng kiểm tra lại giỏ hàng một lần nữa, tại đây khách hàng có thể hủy bỏ giỏ hàng nếu không muốn đặt hàng hoặc chỉnh sửa lại số lượng, sản phẩm trong giỏ hàng. Tiếp theo, khách hàng điền đầy đủ các thông tin: họ tên, số điện thoại, email, địa chỉ giao hàng. Hệ thống sẽ tự động gửi mail thông báo cho khách hàng biết đã đặt hàng thành công và thông tin chi tiết về đơn đặt hàng đến địa chỉ email mà khách hàng đã cung cấp. Nhân viên sau khi nhận được đơn đặt hàng sẽ chủ động liên lạc đến khách hàng thông qua email hoặc số điện thoại để xác nhận lại lần cuối. Nếu khách hàng đồng ý, nhân viên sẽ duyệt đơn hàng, chuẩn bị hàng giao cho khách, ngược lại, nếu khách hàng không muốn đặt hàng thì nhân viên sẽ hủy đơn đặt hàng. 35
  48. Sau khi đơn đặt hàng được duyệt, số lượng sản phẩm trong kho sẽ giảm tương ứng với số lượng sản phẩm trong đơn đặt hàng. - Các chức năng của quản trị viên: Quản trị viên có quyền hạn cao nhất, thực hiện được tất cả thao tác trên web. Trang quản trị sẽ hiển thị những thông tin theo sự phân quyền sử dụng khác nhau được quản lý bởi thông tin sau: tên đăng nhập, mật khẩu. Quản lý danh mục sản phẩm: xem danh sách danh mục sản phẩm, thêm, sửa, xóa danh mục. Quản lý sản phẩm: xem danh sách sản phẩm, thêm, sửa, xóa sản phẩm. Quản lý thành viên: xem danh sách thành viên, thêm, sửa, xóa thành viên (chỉ admin, shop manager mới có quyền thực hiện). Quản lý đơn đặt hàng: xem, xác nhận đơn đặt hàng, xóa đơn đặt hàng Quản lý bình luận: xem, xóa bình luận. 3.4.2. Yêu cầu chức năng: - Đối với người dùng: Bảng 4. Mô tả yêu cầu chức năng đối với người dùng STT Chức năng Loại chức năng 1 Xem thông tin sản phẩm Truy cập 2 Tìm kiếm sản phẩm Tìm kiếm 3 Xem những thông tin trên website Truy cập 4 Đặt hàng Giao dịch mua bán 5 Bình luận, liên hệ Lưu trữ, hỏi đáp - Đối với ban quản trị Bảng 5. Mô tả yêu cầu chức năng đối với quản trị STT Chức năng Loại chức năng 1 Quản lý danh mục Thêm, xóa, sửa, tìm kiếm danh mục 36
  49. 2 Quản lý sản phẩm Thêm, xóa, sửa, tìm kiếm sản phẩm 3 Quản lý thành viên Thêm, xóa, sửa, thay đổi quyền của thành viên. 4 Quản lý đơn đặt hàng Xem, duyệt, xóa đơn đặt hàng 5 Quản lý bình luận Xem danh sách , xóa 6 Đăng nhập, đăng xuất Truy cập, quản trị hệ thống Thống kê doanh số bán hàng và lợi nhuận của 7 Thống kê – báo cáo công ty qua từng tháng 3.4.3. Yêu cầu phi chức năng: Bảng 6. Mô tả yêu cầu phi chức năng STT Nội dung Hiệu quả Mức độ chi tiết Website cho phép nhiều người Cho phép người dùng 1 Tốt truy cập không bị treo hay xung truy cập đột Người dùng và người quản trị hệ Giao diện đẹp mắt, dễ thống không cần có trình độ tin 2 nhìn, thân thiện với Tiện lợi học cao vẫn có thể sử dụng hiệu người dùng quả Tốc độ xử lý công việc Xem, tìm kiếm, đăng ký, mua 3 Hiệu quả nhanh chóng, chính xác hàng, Thông tin cá nhân, tài khoản, mật 4 Tính bảo mật Tốt khẩu, phân quyền thành viên 37
  50. 3.4.5. Yêu cầu hệ thống: Bảng 7. Mô tả yêu cầu hệ thống Quản lý thông tin STT Chức năng Đơn đặt hàng Liên hệ thành viên 1 Thêm Quản trị, khách hàng Khách hàng Quản trị 2 Xóa Quản trị, khách hàng Khách hàng Quản trị 3 Sửa Quản trị, khách hàng Khách hàng Quản trị 4 Xem Quản trị, khách hàng Khách hàng Quản trị 3.5. PHÂN TÍCH 3.5.1. Sơ đồ use case - Danh sách các actor tham gia hệ thống Bảng 8. Danh sách các actor STT Tên Vai trò 1 Quản trị Quản lý Website 2 Khách hàng Người sử dụng Website - Danh sách các use case Bảng 9. Danh sách và chức năng của các use case ID Tên use case Mô tả 1 Đăng nhập Đăng nhập tài khoản thành viên trên website Quản trị thêm tài khoản đăng nhập vào hệ 2 Thêm thành viên thống 3 Đăng xuất Đăng xuất tài khoản thành viên khỏi hệ thống 4 Tìm kiếm sản phẩm Khách hàng có thể tìm kiếm sản phẩm 5 Thêm sản phẩm Quản trị thêm sản phẩm vào hệ thống 6 Sửa sản phẩm Quản trị sửa thông tin sản phẩm 38
  51. 7 Xoá sản phẩm Quản trị xoá sản phẩm 8 Xem danh sách sản phẩm Quản trị xem danh sách sản phẩm Thêm danh mục sản Quản trị thêm danh mục sản phẩm vào hệ 9 phẩm thống 10 Sửa danh mục sản phẩm Quản trị sửa thông tin danh mục sản phẩm 11 Xoá danh mục sản phẩm Quản trị xoá danh mục sản phẩm Xem danh sách danh mục 12 Quản trị xem danh sách danh mục sản phẩm sản phẩm 13 Xem đơn đặt hàng Quản trị xem đơn đặt hàng 14 Xoá đơn hàng Quản trị xoá đơn đặt hàng 15 Thêm thành viên Quản trị thêm thành viên sử dụng hệ thống 16 Sửa thành viên Quản trị sửa thông tin thành viên 17 Xoá thành viên Quản trị xoá thành viên Xem danh sách thành 18 Quản trị xem danh sách thành viên viên Cho sản phẩm vào giỏ 19 Khách hàng cho sản phẩm vào giỏ hàng hàng 20 Xem danh sách bình luận Quản trị xem danh sách các bình luận 21 Xóa bình luận Quản trị xóa bình luận - Các ký hiệu Bảng 10. Các ký hiệu STT Ký hiệu Chú giải 1 Tác nhân (Actor) 2 Use case 3 Quan hệ 39
  52. - Các sơ đồ use case Hình 49. Sơ đồ use case tổng quát Hình 50. Sơ đồ use case quản lý phía người quản trịHình 51. Sơ đồ use case tổng quát Hình 52. Sơ đồ use case quản lý phía người quản trị Hình 53. Sơ đồ use case quản lý đơn đặt hàngHình 54. Sơ đồ use case quản lý phía người quản trị 40
  53. Hình 55. Sơ đồ use case quản lý đơn đặt hàng Hình 56. Sơ đồ use case quản lý danh mụcHình 57. Sơ đồ use case quản lý đơn đặt hàng 41
  54. Hình 58. Sơ đồ use case quản lý danh mục Hình 59. Sơ đồ use case quản lý sản phẩmHình 60. Sơ đồ use case quản lý danh mục 42
  55. Hình 61. Sơ đồ use case quản lý sản phẩm Hình 62. Sơ đồ use case quản lý thành viênHình 63. Sơ đồ use case quản lý sản phẩm 43
  56. Hình 64. Sơ đồ use case quản lý thành viên Hình 65. Sơ đồ use case phía khách hàngHình 66. Sơ đồ use case quản lý thành viên 44
  57. Hình 67. Sơ đồ use case phía khách hàng Hình 68. Sơ đồ use case đặt hàngHình 69. Sơ đồ use case phía khách hàng 45
  58. Hình 70. Sơ đồ use case đặt hàng Hình 71. Sơ đồ tuần tự đăng nhậpHình 72. Sơ đồ use case đặt hàng 46
  59. 3.5.2. Mô tả chi tiết một số use case Bảng 11. Mô tả use case đăng nhập Usecase Đăng nhập ID 01 Tác nhân chính Admin, Shop Manager Admin, Shop Manager truy cập vào website quản trị của Phạm vi công ty. Usecase này cho phép Admin, Shop Manager đăng nhập vào Mô tả ngắn gọn website quản trị. Điều kiện Hệ thống ở trạng thái hoạt động. A1. Truy cập vào trang quản trị của webstite. A2. Form đăng nhập hiển thị ra yêu cầu nhập tên đăng nhập và mật khẩu sau đó chọn “Đăng nhập”. A3. Hệ thống sẽ tiến hành kiểm tra. Nếu không hợp lệ thì Các luồng sự thực hiện lại luồng sự kiện B1. kiện A4. Hợp lệ thì sẽ hệ thống sẽ hiển thị trang quản trị ra. Luồng sự kiện phụ: B1. Nếu nhập sai thông tin thì hệ thống sẽ hiển thị thông báo. Bảng 12. Mô tả use case thêm thành viên Usecase Thêm thành viên ID 02 Tác nhân chính Admin, Shop Manager Admin, Shop Manager truy cập vào website quản trị của Phạm vi công ty và chọn chức năng thêm thành viên mới. Mô tả ngắn gọn Usecase mô tả hình thức thành viên đăng ký tài khoản mới Hệ thống ở trạng thái hoạt động và đã có tài khoản admin Điều kiện hay shop manager. 47
  60. -A1. Khi có tài khoản admin hay shop manager mới có thể truy cập vào website quản trị. -A2. Chọn chức thêm thành viên -A3. Hệ thống hiển thị form đăng ký ra yêu cầu nhập Các luồng sự username, password, email và chọn quyền. Sau đó chọn kiện đăng ký. -A4. Hệ thống sẽ tiến hành kiểm tra. +A4.1. Nếu không hơp lệ thì thực hiện luồng sự kiện A3. +A4.2. Nếu thông tin hợp lệ thì dữ liệu sẽ lưu vào cơ sở dữ liệu, thông báo thành công và usecase kết thúc. Bảng 13. Mô tả use case đặt hàng Usecase Đặt hàng ID 06 Tác nhân chính Khách hàng Phạm vi Khách hàng truy cập vào website và chọn hàng hóa cần mua Usecase này thực hiện khi khách hàng muốn mua sản phẩm Mô tả ngắn gọn từ website. Hệ thống sẽ lưu đơn đặt hàng này. Điều kiện Hệ thống đang trong trạng thái hoạt động. 1. Khách hàng truy cập vào website. 2. Hệ thống hiển thị ra các sản phẩm. 3. Chọn sản phẩm cần mua. 4. Hệ thống sẽ hiển thị chi tiết sản phẩm. 5. Nếu khách hàng chọn “Thêm vào giỏ” thì hệ thống sẽ hiển thị form giỏ hàng và thêm sản phẩm đó vào giỏ Các luồng sự hàng. kiện 6. Thông tin chi tiết giỏ hàng sẽ được hiển thị. 7. Khách hàng có thể chọn chức năng mua tiếp, cập nhật giỏ hàng, xóa sản phẩm, thanh toán. Nếu khách hàng chọn chức năng mua tiếp thì thực hiện lại bước 3. Hoặc chọn chức năng cập nhật hoặc xóa sản phẩm thực hiện bước 6 48
  61. Bảng 14. Mô tả use case thêm sản phẩm Usecase Thêm sản phẩm ID 03 Tác nhân chính Admin, Shop Manager Người quản trị đăng nhập vào website quản trị và chọn thêm Phạm vi sản phẩm Usecase này cho phép người quản trị thêm sản phẩm vào Mô tả ngắn gọn website Hệ thống ở trạng thái hoạt động và quản trị phải đăng nhập Điều kiện thành công A1. Đăng nhập thành công. A2. Trong danh mục “Sản phẩm” chọn chức năng “Thêm sản phẩm”. Các luồng sự A3. Hệ thống sẽ hiển thị form thêm sản phẩm. kiện A4. Người quản trị tiến hành nhập các thông tin về sản phẩm và chọn lưu sản phẩm. A5. Hệ thống sẽ kiểm tra các thông tin mà người quản trị nhập vào. Nếu không hợp lệ thì thực hiện luồng sự kiện B1. A6. Nếu hợp lệ thì hệ thống sẽ lưu vào cơ sở dữ liệu và hiển thị danh sách sản phẩm. Luồng phụ B1: 1. Hệ thống thống báo thông tin không hợp lệ. 2. Hiển thị form nhập thông tin sản phẩm. 3. Người quản trị thực hiện lại bước A4. Bảng 15. Mô tả use case sửa sản phẩm Usecase Sửa sản phẩm ID 04 Tác nhân chính Admin, Shop Manager, Nhân viên. Người quản trị đăng nhập vào website quản trị và chọn sửa Phạm vi sản phẩm Usecase này cho phép người quản trị sửa thông tin sản Mô tả ngắn gọn phẩm Hệ thống ở trạng thái hoạt động và quản trị phải đăng nhập Điều kiện thành công 49
  62. A1. Đăng nhập thành công. A2. Trong danh mục “sản phẩm” chọn danh sách sản phẩm. A3. Hệ thống sẽ hiện thị form danh sách các sản phẩm. A4. Người quản trị tìm và chọn sản phẩm cần sửa. A5. Hệ thống sẽ hiển thị thông tin sản phẩm. A6. Tiến hành sửa thông tin cần thiết. A7. Hệ thống sẽ kiểm tra các thông tin mà người quản trị Các luồng sự kiện đã chỉnh sửa. Nếu không hợp lệ thì thực hiện luồng sự kiện B1. A8. Nếu hợp lệ thì hệ thống sẽ hiển thị danh sách sản phẩm và lưu vào cơ sở dữ liệu. Luồng phụ B1: 1. Hệ thống thống báo thông tin không hợp lệ. 2. Hiển thị form nhập thông tin sản phẩm. 3. Người quản trị thực hiện lại bước A6. Bảng 16. Mô tả use case xóa sản phẩm Usecase Xóa sản phẩm ID 05 Tác nhân chính Admin, Shop Manager, Nhân viên. Người quản trị đăng nhập vào website quản trị và chọn xóa Phạm vi sản phẩm. Usecase này cho phép người quản trị sửa thông tin sản phẩm Mô tả ngắn gọn Hệ thống ở trạng thái hoạt động và quản trị phải đăng nhập Điều kiện thành công A1. Đăng nhập thành công. A2. Trong danh mục “sản phẩm” chọn danh sách sản phẩm. A3. Hệ thống sẽ hiện thị form danh sách các sản phẩm. A4. Người quản trị tìm và chọn sản phẩm cần xóa. Các luồng sự A5. Hệ thống sẽ hỏi bạn có muốn xóa sản phẩm này không? kiện A6. Nếu chọn OK thì hệ thống sẽ xóa sản phẩm ra khỏi danh sách. A7. Nếu chọn Cancel thì sẽ quay lại danh sách. 50
  63. Bảng 17. Mô tả use case thêm danh mục Usecase Thêm danh mục ID 07 Tác nhân chính Admin, Shop Manager, Nhân viên. Admin, Shop Manager, Nhân viên đăng nhập vào website Phạm vi và chọn “Thêm danh mục” Usecase này thực hiện khi người quản trị muốn thêm danh Mô tả ngắn gọn mục mới vào website Hệ thống đang trong trạng thái hoạt động và người quản trị Điều kiện phải đăng nhập thành công. A1. Đăng nhập thành công. A2. Trong “Danh mục” chọn chức năng “Thêm danh mục”. A3. Hệ thống sẽ hiện thị form thêm danh mục. A4. Người quản trị tiến hành nhập các thông tin về danh Các luồng sự mục và chọn “Lưu danh mục”. kiện A5. Hệ thống sẽ kiểm tra các thông tin mà người quản trị nhập vào. Nếu không hợp lệ thì thực hiện luồng sự kiện B1. A6. Nếu hợp lệ thì hệ thống sẽ lưu vào cơ sở dữ liệu và hiển thị danh sách danh mục. Luồng phụ B1: 1. Hệ thống thống báo thông tin không hợp lệ. 2. Hiển thị form nhập thông tin danh mục. 3. Người quản trị thực hiện lại bước A4. 51
  64. Bảng 18. Mô tả use case sửa danh mục Usecase Sửa danh mục ID 04 Tác nhân chính Admin, Shop Manager, Nhân viên. Người quản trị đăng nhập vào website quản trị và chọn sửa Phạm vi danh mục Usecase này cho phép người quản trị sửa thông tin danh Mô tả ngắn gọn mục Hệ thống ở trạng thái hoạt động và quản trị phải đăng nhập Điều kiện thành công A1. Đăng nhập thành công. A2. Trong “Danh mục” chọn danh sách danh mục. A3. Hệ thống sẽ hiện thị form danh sách các danh mục. A4. Người quản trị tìm và chọn danh mục cần sửa. A5. Hệ thống sẽ hiển thị thông tin danh mục. A6. Tiến hành sửa thông tin cần thiết. Các luồng sự A7. Hệ thống sẽ kiểm tra các thông tin mà người quản trị đã kiện chỉnh sửa. Nếu không hợp lệ thì thực hiện luồng sự kiện B1. A8. Nếu hợp lệ thì hệ thống sẽ lưu vào cơ sở dữ liệu và hiển thị danh sách danh mục. Luồng phụ B1: Hệ thống thống báo thông tin không hợp lệ. Hiển thị form nhập thông tin danh mục. Người quản trị thực hiện lại bước A6. Bảng 19. Mô tả use case sửa danh mục Usecase Xóa danh mục ID 05 Tác nhân chính Admin, Shop Manager, Nhân viên. Người quản trị đăng nhập vào website quản trị và chọn Phạm vi xóa danh mục. Usecase này cho phép người quản trị sửa thông tin danh Mô tả ngắn gọn mục. Hệ thống ở trạng thái hoạt động và quản trị phải đăng Điều kiện nhập thành công 52
  65. A1. Đăng nhập thành công. A2. Trong “Danh mục” chọn danh sách danh mục. A3. Hệ thống sẽ hiện thị form danh sách các danh mục. A4. Người quản trị tìm và chọn danh mục cần xóa. A5. Hệ thống sẽ hỏi bạn có muốn xóa danh mục này Các luồng sự kiện không? A6. Nếu chọn OK thì hệ thống sẽ xóa danh mục ra khỏi danh sách. A7. Nếu chọn Cancel thì sẽ huỷ thao tác xoá và quay lại danh sách. 3.5.3. Sơ đồ tuần tự Hình 73. Sơ đồ tuần tự đăng nhập Hình 74. Sơ đồ tuần tự đăng xuấtHình 75. Sơ đồ tuần tự đăng nhập 53
  66. Hình 76. Sơ đồ tuần tự đăng xuất Hình 77. Sơ đồ tuần tự thêm thành viênHình 78. Sơ đồ tuần tự đăng xuất Hình 79. Sơ đồ tuần tự thêm thành viên Hình 80. Sơ đồ tuần tự đặt hàngHình 81. Sơ đồ tuần tự thêm thành viên 54
  67. Hình 85. Sơ đồ tuần tự thêm vào giỏ hàng Hình 86. Sơ đồ tuần tự xem danh sách sản phẩmHình 87. Sơ đồ tuần tự thêm vào giỏ hàng Hình 82. Sơ đồ tuần tự đặt hàng Hình 83. Sơ đồ tuần tự thêm vào giỏ hàngHình 84. Sơ đồ tuần tự đặt hàng 55
  68. Hình 91. Sơ đồ tuần tự thêm sản phẩm Hình 92. Sơ đồ tuần tự sửa thông tin sản phẩmHình 93. Sơ đồ tuần tự thêm sản phẩm Hình 88. Sơ đồ tuần tự xem danh sách sản phẩm 56 Hình 89. Sơ đồ tuần tự thêm sản phẩmHình 90. Sơ đồ tuần tự xem danh sách sản phẩm
  69. Hình 94. Sơ đồ tuần tự sửa thông tin sản phẩm Hình 95. Sơ đồ lớp (P1)Hình 96. Sơ đồ tuần tự sửa thông tin sản phẩm 57
  70. 3.5.4. Sơ đồ lớp Hình 97. Sơ đồ lớp (P1) Hình 98. Sơ đồ lớp (P2)Hình 99. Sơ đồ lớp (P1) 58
  71. Hình 100. Sơ đồ lớp (P2) Hình 101. Sơ đồ lớp (P3)Hình 102. Sơ đồ lớp (P2) 59
  72. Hình 103. Sơ đồ lớp (P3) Hình 104. Cơ sở dữ liệu và các mối quan hệ (P1)Hình 105. Sơ đồ lớp (P3) 60
  73. CHƯƠNG 4: THIẾT KẾ CÀI ĐẶT HỆ THỐNG 4.1. THIẾT KẾ CƠ SỞ DỮ LIỆU VÀ CÁC MỐI QUAN HỆ Hình 106. Cơ sở dữ liệu và các mối quan hệ (P1) Hình 107. Cơ sở dữ liệu và các mối quan hệ (P2)Hình 108. Cơ sở dữ liệu và các mối quan hệ (P1) 61
  74. Hình 109. Cơ sở dữ liệu và các mối quan hệ (P2) Hình 110. Cơ sở dữ liệu và các mối quan hệ (P3)Hình 111. Cơ sở dữ liệu và các mối quan hệ (P2) 62
  75. Hình 112. Cơ sở dữ liệu và các mối quan hệ (P3) Hình 113. Trang chủHình 114. Cơ sở dữ liệu và các mối quan hệ (P3) 4.2. THIẾT KẾ CÁC BẢNG CƠ SỞ DỮ LIỆU Bảng 20. Bảng ApplicationUsers STT Tên trường Kiểu dữ liệu Ý nghĩa Mã người dùng (khóa 1 Id nvarchar(128) chính) 2 FullName nvarchar(256) Tên người dùng 3 Address nvarchar(256) Địa chỉ 4 BirthDay datetime Ngày sinh 5 Email nvarchar(max) Email 6 EmailConfirmed bit Xác nhận Email 63
  76. 7 PasswordHash nvarchar(max) Mật khẩu mã hóa 8 SecurityStamp nvarchar(max) Bảo mật Cookie 9 PhoneNumber nvarchar(max) Số điện thoại 10 PhoneNumberConfirmed bit Xác nhận số điện thoại 11 TwoFactorEnabled bit Xác thực 2 yếu tố 12 LockoutEndDateUtc datetime Ngày khóa tài khoản 13 LockoutEnabled bit Khóa tài khoản 14 AccessFailedCount int Số lần truy cập thất bại 15 UserName nvarchar(max) Tên đăng nhập Bảng 21. Errors STT Tên trường Kiểu dữ liệu Ý nghĩa 1 ID int id lỗi (khóa chính) 2 Message nvarchar(max) Thông báo 3 StackTrace nvarchar(max) Thông tin lỗi 4 CreatedDate datetime Ngày tạo Bảng 22. Bảng Footers STT Tên trường Kiểu dữ liệu Ý nghĩa 1 ID nvarchar(50) Mã footer (khóa chính) 2 Content nvarchar(max) Nội dung Bảng 23. Bảng MenuGroups STT Tên trường Kiểu dữ liệu Ý nghĩa Mã nhóm menu (khóa 1 ID int chính) 64
  77. 2 Name nvarchar(50) Tên nhóm menu Bảng 24. Bảng Menus STT Tên trường Kiểu dữ liệu Ý nghĩa Mã người dùng Identity 1 ID int (khóa chính) 2 Name nvarchar(50) Tên menu 3 URL nvarchar(256) Đường dẫn 4 DisplayOrder int Thông tin hiển thị 5 GroupID int Mã nhóm menu 6 Target nvarchar(256) Đối tượng 7 Status bit Trạng thái Bảng 25. Bảng OrderDetails STT Tên trường Kiểu dữ liệu Ý nghĩa Mã đơn đặt hàng (khóa 1 OrderID int chính) 2 ProductID int Mã sản phẩm 3 Quantity int Số lượng 4 Price decimal(18,2) Giá Bảng 26. Bảng Orders STT Tên trường Kiểu dữ liệu Ý nghĩa Mã người dùng Identity 1 ID nvarchar(256) (khóa chính) 2 CustomerName nvarchar(256) Tên khách hàng 3 CustomerAddress nvarchar(256) Địa chỉ khách hàng 65
  78. 4 CustomerEmail nvarchar(256) Email khách hàng 5 CustomerMobile nvarchar(256) Số điện thoại khách hàng 6 CustomerMessage nvarchar(256) Thông báo khách hàng 7 PaymentMethod nvarchar(256) Phương thức thanh toán 8 CreatedDate datetime Ngày tạo 9 CreatedBy nvarchar(max) Người tạo 10 PaymentStatus nvarchar(max) Tình trạng thanh toán 11 Status bit Bảng 27. Bảng Pages STT Tên trường Kiểu dữ liệu Ý nghĩa 1 ID int Mã trang (khóa chính) 2 Name nvarchar(256) Tên trang 3 Alias nvarchar(256) Tên trang không dấu 4 Content nvarchar(max) Nội dung 5 MetaKeyWord nvarchar(256) Từ khóa Seo 6 Status bit Trạng thái 7 CreatedDate datetime Ngày tạo 8 CreatedBy nvarchar(max) Người tạo 9 UpdatedDate datetime Ngày cập nhật 10 UpdatedBy nvarchar(256) Người cập nhật 11 MetaDescription nvarchar(256) Mô tả Seo Bảng 28. Bảng PostCategories STT Tên trường Kiểu dữ liệu Ý nghĩa 66
  79. 1 ID int Mã loại tin (khóa chính) 2 Name nvarchar(256) Tên loại tin 3 Alias nvarchar(256) Tên loại tin không dấu 4 Description nvarchar(500) Mô tả 5 ParentID int Nội dung 6 DisplayOrder int Thông tin hiển thị 7 Image nvarchar(256) Hình ảnh 8 HomeFlag bit Hiển thị trang chủ 9 MetaKeyWord nvarchar(256) Từ khóa Seo 10 Status bit Trạng thái 11 CreatedDate datetime Ngày tạo 12 CreatedBy nvarchar(256) Người tạo 13 UpdatedDate datetime Ngày cập nhật 14 UpdatedBy nvarchar(256) Người cập nhật 15 MetaDescription nvarchar(256) Mô tả Seo Bảng 29. Bảng Posts STT Tên trường Kiểu dữ liệu Ý nghĩa 1 ID int Mã tin tức (khóa chính) 2 Name nvarchar(256) Tên tin tức 3 Alias nvarchar(256) Tên tin tức không dấu 4 CategoryID int Mã loại tin 5 Image nvarchar(256) Hình ảnh 6 Content nvarchar(max) Nội dung 7 HomeFlag bit Hiển thị trang chủ 67
  80. 8 HotFlag bit Tin tức nổi bật 9 ViewCount int Lượt xem 11 MetaKeyWord nvarchar(256) Từ khóa Seo 12 Status bit Trạng thái 13 CreatedDate datetime Ngày tạo 14 CreatedBy nvarchar(max) Người tạo 15 UpdatedDate datetime Ngày cập nhật 16 UpdatedBy nvarchar(256) Người cập nhật 17 MetaDescription nvarchar(256) Mô tả Seo Bảng 30. Bảng PostTags STT Tên trường Kiểu dữ liệu Ý nghĩa 1 PostID int Mã tin tức (khóa chính) 2 TagID int Mã thẻ (khóa chính) Bảng 31. Bảng ProductCategories STT Tên trường Kiểu dữ liệu Ý nghĩa 1 ID int Mã danh mục (khóa chính) 2 Name nvarchar(256) Tên danh mục 3 Alias nvarchar(256) Tên danh mục không dấu 4 Description nvarchar(500) Mô tả 5 ParentID int Nội dung 6 DisplayOrder int Thông tin hiển thị 7 Image nvarchar(256) Hình ảnh 8 HomeFlag bit Hiển thị trang chủ 68
  81. 9 MetaKeyWord nvarchar(256) Từ khóa Seo 10 Status bit Trạng thái 11 CreatedDate datetime Ngày tạo 12 CreatedBy nvarchar(256) Người tạo 13 UpdatedDate datetime Ngày cập nhật 14 UpdatedBy nvarchar(256) Người cập nhật 15 MetaDescription nvarchar(256) Mô tả Seo Bảng 32. Bảng Products STT Tên trường Kiểu dữ liệu Ý nghĩa 1 ID int Mã sản phẩm(khóa chính) 2 Name nvarchar(256) Tên sản phẩm 3 Alias nvarchar(256) Tên sản phẩm không dấu 4 CategoryID int Mã danh mục 5 Image nvarchar(256) Hình ảnh 6 MoreImages XML(.) Hình ảnh khác 7 Price decimal(18,2) Giá 8 PromotionPrice decimal(18,2) Giá khuyến mãi 9 Warranty int Bảo hành 10 Description nvarchar(500) Mô tả 11 Content nvarchar(max) Nội dung 12 HomeFlag bit Hiển thị trang chủ 13 HotFlag bit Sản phẩm nổi bật 14 ViewCount int Lượt xem 15 Tags nvarchar(max) Thẻ sản phẩm 69
  82. 16 Quantity int Số lượng 17 OriginalPrice decimal(18,2) Giá gốc 18 MetaKeyWord nvarchar(256) Từ khóa Seo 19 Status bit Trạng thái 20 CreatedDate datetime Ngày tạo 21 CreatedBy nvarchar(max) Người tạo 22 UpdatedDate datetime Ngày cập nhật 23 UpdatedBy nvarchar(256) Người cập nhật 24 MetaDescription nvarchar(256) Mô tả Seo Bảng 33. Bảng ProductTags STT Tên trường Kiểu dữ liệu Ý nghĩa 1 ProductID int Mã sản phẩm (khóa chính) 2 TagID varchar(50) Mã thẻ Bảng 34. Bảng Slides STT Tên trường Kiểu dữ liệu Ý nghĩa Mã trang trình chiếu (khóa 1 ID int chính) 2 Name nvarchar(256) Tên trang trình chiếu 3 Description nvarchar(256) Mô tả 4 Image nvarchar(256) Hình ảnh 5 Url nvarchar(256) Đường dẫn 6 DisplayOrder bit Thông tin hiển thị 7 Content nvarchar(max) Nội dung 70
  83. Bảng 35. Bảng SupportOnlines STT Tên trường Kiểu dữ liệu Ý nghĩa Mã nhân viên hỗ trợ (khóa 1 ID int chính) 2 Name nvarchar(50) Tên nhân viên hỗ trợ 3 Department nvarchar(50) Bộ phận 4 Skype nvarchar(50) Tài khoản Skype 5 Mobile nvarchar(50) Số điện thoại 6 Email nvarchar(50) Tài khoản Email 7 Yahoo nvarchar(50) Tài khoản Yahoo 8 Facebook nvarchar(50) Tài khoản Facebook 9 Status bit Trạng thái 10 DisplayOrder int Thông tin hiển thị Bảng 36.Bảng SystemConfigs STT Tên trường Kiểu dữ liệu Ý nghĩa Mã cấu hình hệ thống 1 ID int (khóa chính) 2 Code varchar(50) Các dòng lệnh 3 ValueString nvarchar(50) Chuỗi giá trị 4 ValueInt nvarchar(max) Hàm giá trị Bảng 37. Bảng Tags STT Tên trường Kiểu dữ liệu Ý nghĩa 1 ID varchar(50) Mã thẻ (khóa chính) 2 Name nvarchar(50) Tên thẻ 3 Type nvarchar(50) Loại thẻ 71
  84. Bảng 38. Bảng VisitorStatistics STT Tên trường Kiểu dữ liệu Ý nghĩa 1 ID uniqueidentifier Mã truy cập (khóa chính) 2 VisitedDate datetime Ngày truy cập 3 IPAddress nvarchar(50) Địa chỉ IP Bảng 39. Bảng IdentityRoles STT Tên trường Kiểu dữ liệu Ý nghĩa Mã quyền hạn (khóa 1 ID nvarchar(128) chính) 2 Name nvarchar(max) Tên quyền hạn Bảng 40. Bảng IdentityUserClaims STT Tên trường Kiểu dữ liệu Ý nghĩa Mã yêu cầu người dùng 1 ID int (khóa chính) 2 UserId nvarchar(max) Mã người dùng Identity 3 ClaimType nvarchar(max) Loại yêu cầu 4 ClaimValue nvarchar(max) Giá trị yêu cầu 5 ApplicationUser_Id nvarchar(128) Mã người dùng Bảng 41. Bảng IdentityUserLogins STT Tên trường Kiểu dữ liệu Ý nghĩa Mã người dùng Identity 1 UserId nvarchar(128) (khóa chính) 2 LoginProvider nvarchar(max) Nhà cung cấp 72
  85. 3 ProviderKey nvarchar(max) Từ khóa nhà cung cấp 4 ApplicationUser_Id nvarchar(128) Mã người dùng Bảng 42. Bảng IdentityUserRoles STT Tên trường Kiểu dữ liệu Ý nghĩa Mã người dùng Identity 1 UserId nvarchar(128) (khóa chính) 2 RoleId nvarchar(128) Mã quyền hạn 3 IdentityRole_Id nvarchar(128) Mã quyền hạn Identity 4 ApplicationUser_Id nvarchar(128) Mã người dùng 73
  86. 4.3. THIẾT KẾ GIAO DIỆN - Giao diện trang chủ của website Hình 115. Trang74 chủ
  87. - Giao diện thông tin chi tiết sản phẩm Hình 40. Giao diện thông tin chi tiết sản phẩm 75
  88. - Giao diện giỏ hàng Hình 41. Giao diện giỏ hàng 76
  89. - Giao diện đăng nhập Hình 42. Giao diện đăng nhập - Giao diện trang quản trị Hình 43. Giao diện trang quản trị 77
  90. - Giao diện danh sách sản phẩm Hình 44. Giao diện danh sách sản phẩm 78
  91. - Giao diện trang thêm sản phẩm Hình 45. Giao diện trang thêm sản phẩm 79
  92. - Giao diện trang thống kê doanh số và lợi nhuận Hình 46. Giao diện trang thống kê doanh số và lợi nhuận 80
  93. - Giao diện trang giới thiệu Hình 47. Giao diện trang giới thiệu 81
  94. - Giao diện trang thông tin liên hệ Hình 48. Giao diện trang thông tin liên hệ 82
  95. TỔNG KẾT - KẾT QUẢ ĐẠT ĐƯỢC Do thời gian thực hiện đề tài có hạn chế, và sử dụng một số công nghệ và dự án nên em vẫn chưa hoàn thành được tất cả các yêu cầu mà giáo viên hướng dẫn và cơ quan thực tập đã giao. Em đã xây dựng được website bán hàng trực tuyến với các chức năng cơ bản sau: Nội dung: Trưng bày sản phẩm và mua hàng trực tuyến Tìm kiếm sản phẩm Quản lý thành viên Quản lý doanh mục sản phẩm Quản lý sản phẩm Chức năng giỏ hàng Quản lý đơn đặt hàng Quản lý liên hệ, góp ý Quản lý bình luận Thống kê doanh số và lợi nhuận Hình thức: Giao diện thân thiện, đẹp mắt, dễ sử dụng Các bước đặt hàng đơn giản, không mất nhiều thời gian Trưng bày sản phẩm rõ ràng, hình ảnh, thông tin phong phú - HẠN CHẾ Chưa xuất đơn hàng ra file excel và pdf Chưa quản lý được danh sách các đơn đặt hàng - KINH NGHIỆM Củng cố được kiến thức các môn đã học như: phân tích thiết kế phần mềm hướng đối tượng, phân tích thiết kế hệ thống thông tin, nhập môn 83
  96. công nghệ phần mềm, quản lý đề án phần mềm, công nghệ web và ứng dụng, Có kinh nghiệm tiếp xúc với các nghiệp vụ của cơ quan thực tập và được trải nghiệp môi trường làm việc chuyên nghiệp của công ty - HƯỚNG PHÁT TRIỂN Xây dựng thêm một số chức năng chưa hoàn thiện: xuất file excel, pdf Cải thiện giao diện ngày càng đẹp mắt, dễ sử dụng, phù hợp với thị hiếu khách hàng. Phát triển tính năng bảo trì, khôi phục dữ liệu khi gặp sự cố. Cập nhật, áp dụng UI/UX vào xây dựng thiết kế website nâng cao tính tương tác giữa sản phẩm phần mềm với người sử dụng. Tích hợp tính năng hỗ trợ khách hàng trực tuyến, chat online. 84
  97. TÀI LIỆU THAM KHẢO AngularJS: ( ) ASP.NET tutorials: ( ) Bootstrap - The world's most popular mobile-first and responsive frontend framework. ( Bower - A package manager for the web: ( ) CKEditor Ecosystem ( ) W3Schools Online Web Tutorials. ( 85