Professional Documents
Culture Documents
ĐỒ ÁN HỌC PHẦN
TÊN HỌC PHẦN: LẬP TRÌNH WEB (4 tín chỉ)
Tên đề tài:
Ký tên:
- 2-
LỜI CẢM ƠN
Trong quá trình làm đồ án môn học Lập trình WEB, em đã nhận được nhiều sự giúp đỡ và
đóng góp ý kiến từ thầy, cô và bạn bè. Em xin gửi lời cảm ơn chân thành đến Giảng viên –
Thạc sĩ Võ Xuân Thể - giảng viên phụ trách học phần Lập trình WEB, Trường ĐH Tài
chính Marketing cùng các anh đã hỗ trợ và chỉ bảo em trong suốt quá trình hoàn thành đồ án
môn học này. Đây là một dịp để em tiếp cận với thực tiễn công việc cũng như kiểm chứng
và vận dụng những vấn đề lý thuyết được học trên giảng đường vào trong các ngữ cảnh hoạt
động của một số đơn vị, tổ chức. Với vốn kiến thức cũng như kinh nghiệm còn rất khiêm
tốn cũng như là bước đầu làm quen với việc kết hợp học môn học vào thực tế, thì chắc chắn
kết quả đạt được của em cũng không tránh khỏi những hạn chế nhất định. Em rất mong
được các Giảng viên, những bạn sinh viên đi trước hay bất kỳ độc giả nào quan tâm và góp
ý kiến để em hoàn thiện hơn cho các đồ án cũng như các nghiên cứu tiếp theo của mình.
Cuối cùng, xin kính chúc Giảng viên – Thạc sĩ Võ Xuân Thể cùng tất cả những người đã hỗ
trợ và đóng góp ý kiến cho em và những người thân của mình lời chúc sức khỏe, hạnh phúc
và thành đạt.
- 3-
DANH MỤC CÁC TỪ VIẾT TẮT
MS Công ty Microsoft
- 4-
- 5-
DANH MỤC CÁC THUẬT NGỮ
Giao diện người dùng Là hệ thống các màn hình giao tiếp cho phép người sử dụng
tương tác với các thành phần hệ thống, điều khiển hệ thống
hoạt động theo yêu cầu của người dùng - tương ứng các
chức năng hiện có của phần mềm.
Mạng xã hội: Social Network Mạng xã hội là dịch vụ dựa trên nền tảng công nghệ (Công
= Social Media nghệ Web hoặc công nghệ App trên SMART Phone) cho
phép nối kết các thành viên trên mạng Internet (là các tài
khoản người làm việc trên mạng thông qua e-mail, số điện
thoại hoặc các dạng thông tin nhận diện cá nhân nào đó) lại
với nhau với nhiều mục đích khác nhau không phân biệt
không gian và thời gian. Thông thường các thành viên tham
gia vào một mạng xã hội nào đó sẽ hình thành một công
đồng mạng xã hội có gần như cơ bản các hoạt động xã hội
như công đồng dân cư thực tế, nhưng tất cả đều dựa trên
tương tác “ảo” trên Internet. Các thành viên trên một mạng
xã hội có thể gôm nhóm lại với nhau dựa trên cơ sở chung
nhau một số yếu tố nào đó, như: cùng sở thích, cùng nhóm
làm việc, cùng cộng đồng xã hội, …
Là một quyền làm việc trên hệ thống được cấp phát cho một
Người dùng (User):
cá nhân thông qua tên tài khoản (username) và mật khẩu
Tài khoản (Account)
(password).
Là các hoạt động được thực hiện từ xa thông qua các dịch
Trực tuyến = Online
vụ trên Internet, đặc biệt là dịch vụ Web
- 6-
Internet Mạng toàn cầu (International Network)
- 7-
DANH MỤC HÌNH ẢNH
Trang
Hình 2.1: Tạo trang Master Page...........................................................................................25
Hình 2.2: Thiết kế trang master page.....................................................................................26
Hình 3.1: Diagram của DB quản lý bán sách online..............................................................31
Hình 3.2: Thiết kế bảng tb_dss..............................................................................................31
Hình 3.3: Thiết kế bảng tb_thuonghieu.................................................................................32
Hình 3.4: Thiết kế bảng tb_ loais...........................................................................................32
Hình 3.5: Thiết kế bảng tb_ chinhanh....................................................................................32
Hình 3.6: Thiết kế bảng tb_ hangton......................................................................................32
Hình 3.7: Thiết kế bảng tb_ khuvuc.......................................................................................33
Hình 3.8: Thiết kế bảng tb_ nhanvien....................................................................................33
Hình 3.9: Thiết kế bảng tb_ dondathang................................................................................33
Hình 3.10: Thiết kế bảng tb_ chitietddh................................................................................34
Hình 3.11: Thiết kế bảng tb_ khachhang...............................................................................34
Hình 4.1: Thiết kế MasterPage Giao dịch dùng chung cho cả phần quản lý.........................38
Hình 4.2: Thiết kế trang chủ HomePage................................................................................40
Hình 4.3: Thiết kế trang giỏ hàng..........................................................................................43
Hình 4.4: Các nút trên trang giỏ hàng....................................................................................45
Hình 4.5: Thiết kế phần thông tin KH của Đơn hàng............................................................47
Hình 4.6: Thiết kế phần thông tin Đơn hàng trên trang Đặt hàng.........................................48
Hình 4.7:. Tham số lệnh SQL tìm KH...................................................................................49
Hình 4.8: Tham số lệnh SQL thêm KH mới..........................................................................49
Hình 4.9: Tham số lệnh SQL chấp nhận đơn đặt hàng..........................................................50
Hình 4.10: Tham số lệnh SQL hủy đơn đặt hàng..................................................................50
Hình 5.1: Thiết kế Menu chính trên MasterPage...................................................................63
Hình 5.2: Thiết lập thuộc tính cho mục chọn (Item) của Menu.............................................63
Hình 5.3: Thiết kế trang quản lý chung.................................................................................65
- 8-
Hình 5.4: Các table liên quan đến trang quản lý danh mục sách...........................................67
Hình 5.5: Thiết kế trang quản lý danh mục sách...................................................................68
Hình 5.6: Thiết kế lại cột "Hình" trên GridView...................................................................71
Hình 5.7: Phân trang trên GridView......................................................................................72
Hình 5.8: Thiết kế textbox cho phép người dùng thêm sách.................................................73
Hình 5.9: EditItemTemplate ở cột “Mã thương hiệu”...........................................................76
Hình 5.10: EditItemTemplate ở cột “Ngày xuất hiện trên thị trường”..................................76
Hình 5.11: EditItemTemplate ở cột “Hình”...........................................................................77
Hình 5.12: Tham số lệnh SQL sửa (Update) sách trong SqlDataSource_DSS.....................77
Hình 5.13: Tham số lệnh SQL xóa (Update) sách trong SqlDataSource_DSS....................78
Hình 5.14:. Trích DB liên quan xử lý RBTV dữ liệu khi xóa sách.......................................79
Hình 5.15: Các Gridviews xử lý RBTV dữ liệu khi Xóa.......................................................79
Hình 5.16: Các table liên quan đến trang quản lý loại sách...................................................82
Hình 5.17: Thiết kế trang quản lý loại sách...........................................................................82
Hình 5.18: Phân trang cho GridView.....................................................................................83
Hình 5.19: Thiết kế các textbox cho phép người dùng thêm loại sách..................................84
Hình 5.20: Các tham số lệnh SQL sửa sách trong SqlDataSource_LoaiS.............................86
Hình 5.21: Các tham số lệnh SQL xóa sách trong SqlDataSource_LoaiS............................86
Hình 5.22: Trích DB liên quan xử lý RBTV dữ liệu khi xóa loại MH..................................87
Hình 5.23: Các table liên quan đến trang quản lý thương hiệu sách......................................87
Hình 5.24: Thiết kế trang quản lý thương hiệu cụ thể...........................................................88
Hình 5.25: Phân trang cho GridView.....................................................................................89
Hình 5.26: Thiết kế các textbox cho phép người dùng thêm thương hiệu sách.....................90
Hình 5.27: Tham số lệnh SQL sửa sách trong SqlDataSource_th........................................91
Hình 5.28: Tham số lệnh SQL xóa sách trong SqlDataSource_th........................................92
Hình 5.29: Trích DB liên quan xử lý RBTV dữ liệu khi xóa thương hiệu MH.....................92
Hình 5.30: Các table liên quan đến trang quản lý nhân viên tại LHshop..............................93
Hình 5.31: Thiết kế trang quản lý nhân viên tại LHshop.......................................................94
- 9-
Hình 5.32: Thiết kế các textbox cho phép người dùng thêm nhân viên................................98
Hình 5.33: Tham số lệnh SQL sửa nhân viên trong SqlDataSource_qlnv..........................100
Hình 5.34: Tham số lệnh SQL Xóa (Delete) sách trong SqlDataSource_qlnv...................101
Hình 5.35:. Trích DB liên quan xử lý RBTV dữ liệu khi xóa nhân viên.............................102
Hình 5.36: Các Gridviews xử lý RBTV dữ liệu khi Xóa.....................................................103
Hình 5.37: Các table liên quan đến trang quản lý chi nhánh của cửa hàng bán sách LHshop
..............................................................................................................................................105
Hình 5.38: Thiết kế trang quản lý chi nhánh của cửa hàng bán sách LHshop.....................105
Hình 5.39: Thiết kế các textbox cho phép người dùng thêm thương hiệu sách...................107
Hình 5.40: Tham số lệnh SQL sửa sách trong SqlDataSource_QL_ChiNhanh..................109
Hình 5.41: Tham số lệnh SQL xóa sách trong SqlDataSource_QL_ChiNhanh..................109
Hình 5.42: Trích DB liên quan xử lý RBTV dữ liệu khi xóa chi nhánh..............................110
Hình 5.43: Các table liên quan đến trang quản lý chuyên môn nhân viên của cửa hàng bán
sách LHshop.........................................................................................................................111
Hình 5.44: Thiết kế trang quản lý chuyên môn nhân viên của cửa hàng bán sách LHshop 111
Hình 5.45: Thiết kế các textbox cho phép người dùng thêm chuyên môn..........................112
Hình 5.46: Tham số lệnh SQL sửa sách trong SqlDataSource_cm....................................114
Hình 5.47: Tham số lệnh SQL xóa sách trong SqlDataSource_cm....................................114
Hình 5.48: Trích DB liên quan xử lý RBTV dữ liệu khi xóa chuyên môn..........................115
Hình 5.49: Các table liên quan đến trang phân công nhân viên phụ trách các đơn hàng chưa
có người phụ trách................................................................................................................116
Hình 5.50: Thiết kế trang phân công nhân viên phụ trách đơn đặt hàng.............................117
Hình 5.51: Tham số câu lệnh kết nối DB SqlDataSource_nv..............................................118
Hình 5.52: Các table liên quan đến trang phân công chuyên môn cho nhân viên chưa được
phân công.............................................................................................................................119
Hình 5.53: Thiết kế trang phân công chuyên môn cho nhân viên chưa được phân công....120
Hình 5.54: Tham số câu lệnh kết nối DB DataSourceID = SqlDataSource_nvcpc.............120
Hình 5.55: Các table liên quan đến trang chuyển một sách từ loại sách này sang loại sách
khác......................................................................................................................................121
- 10 -
Hình 5.56: Thiết kế trang đổi loại sách................................................................................122
Hình 5.57: Tham số câu lệnh kết nối DB DataSourceID = SqlDataSource_s_loaicu.........123
Hình 5.58: Tham số câu lệnh kết nối DB DataSourceID = SqlDataSource_s_loaimoi.......123
Hình 5.58: Các table liên quan đến trang đổi thương hiệu sách..........................................125
Hình 5.59: Thiết kế trang đổi thương hiệu sách...................................................................126
Hình 5.60: Tham số câu lệnh kết nối DB DataSourceID = SqlDataSource_s_thcu............127
Hình 5.61: Tham số câu lệnh kết nối DB DataSourceID = SqlDataSource_s_ thmoi.........127
Hình 6.1: Trang chủ Host Web somee.................................................................................129
Hình 6.2: Trang thông tin Host somee đã đăng ký.............................................................131
Hình 6.3: Trang chủ HomePage...........................................................................................133
Hình 6.4: Trang giỏ hàng.....................................................................................................134
Hình 6.5: Trang đặt hàng 1..................................................................................................134
Hình 6.6: Trang đặt hàng 2..................................................................................................135
- 11 -
MỤC LỤC
LỜI CẢM ƠN.........................................................................................................................3
DANH MỤC CÁC TỪ VIẾT TẮT.......................................................................................4
DANH MỤC CÁC THUẬT NGỮ........................................................................................5
DANH MỤC HÌNH ẢNH......................................................................................................7
MỤC LỤC ...........................................................................................................................11
PHIẾU GIAO NHIỆM VỤ ĐỒ ÁN HỌC PHẦN.............................................................21
Chương 1: GIỚI THIỆU ĐỒ ÁN CỦA HP......................................................................22
1.1. Tổng quan về ĐỒ ÁN HỌC PHẦN...................................................................22
2.2. Phát triển WebApp ASP.NET đơn giản có CSDL dùng ADO.NET.................24
- 12 -
2.3.1.3.2. Viết thủ tục ẩn/hiện login...................................................................................26
2.4. Phát triển các chức năng GIAO DỊCH trên WebApp ASP.NET.......................27
2.6.1. Giới thiệu về lập trình xử lý RBTV dữ liệu trên CSDL trong ASP.NET..........28
2.6.1.1. Giới thiệu về RBTV.......................................................................................28
2.6.1.2. Cách thực hiện:...............................................................................................28
2.6.1.3. Các bước thực hiện.........................................................................................28
2.6.2. Thiết kế hệ thống xử lý RBTV dữ liệu..............................................................28
2.6.3. Lập trình hệ thống xử lý RBTV dữ liệu.............................................................28
2.7. Lập trình thủ tục Chuyển nhóm dữ liệu trong ASP.NET...................................28
2.7.1. Giới thiệu về lập trình Chuyển nhóm dữ liệu trên CSDL trong ASP.NET.......28
2.7.2. Thiết kế hệ thống xử lý Chuyển nhóm dữ liệu..................................................28
2.7.3. Lập trình hệ thống xử lý Chuyển nhóm dữ liệu.................................................28
2.8. Lập trình thủ tục giao dịch Đặt hàng (Order).....................................................28
2.8.1. Giới thiệu về lập trình xử lý giao dịch đặt hàng trong ASP.NET......................28
2.8.2. Chức năng khách hàng.......................................................................................28
2.8.3. Chức năng đơn đặt hàng....................................................................................28
2.8.4. Chức năng chi tiết đơn hàng..............................................................................28
2.8.5. Xử lý lưu trữ vào DB.........................................................................................28
2.9. Triển khai phát hành WebApp ASP.NET trên Internet (hoặc Intranet).............28
- 13 -
Chương 3: THIẾT KẾ VÀ CẬP NHẬT CSDL PHỤC VỤ WEBAPP..........................29
3.1. Phân tích và thiết kế DB....................................................................................29
3.4. Cập nhật dữ liệu DB thực nghiệm cho WebApp bán sách LHshop Online.......34
3.5. Giới thiệu một số View, SP và Trigger trong DB quản lý bán sách online.......35
3.5.1. View xem thông tin đơn giản của nhân viên..................................................35
3.5.2. Trigger thực hiện hủy chi tiết đơn đặt hàng trước khi thực hiện hủy đơn đặt
hàng: 35
3.5.3. Trigger thực hiện hủy đơn đặt hàng khi thực hiện xóa một khách hàng:.......35
3.5.4. Trigger khi xóa một loại sách, các sách còn lại của loại đó ở cửa hàng sẽ
được sửa mã loại là “LS00” với tên loại là “Khác”:....................................................35
3.5.5. Trigger khi xóa một thương hiệu sách, các sách còn lại của thương hiệu đó ở
cửa hàng được sửa mã thương hiệu là “TH00” với tên thương hiệu là “Thương hiệu
khác”: 36
3.5.6. Trigger khi xóa một chuyên môn nhân viên tại cửa hàng thì các nhân viên
thuộc chuyên môn đó sẽ được sửa mã chuyên môn là “OO” với tên là chưa phân
công: 36
- 14 -
3.6 . Tổ chức hệ thống DB thực nghiệm..................................................................36
4.3.2. Lập trình (Codes) WebApp giao dịch bán sách online: wfHomePage.aspx......41
4.4. Trang “Giỏ hàng” của khách hàng khi thực hiện mua sách tại cửa hàng:
wfCart.aspx 43
4.5.3. Lập trình mã lệnh (Codes) của trang Đặt hàng: wfOrder.aspx..........................48
5.3. Trang chính của hệ thống quản lý hệ thống bán sách LHshop..........................65
5.4.3. Lập trình (Codes) khởi tạo trang quản lý danh mục sách:
wfGoodsManagements.aspx...................................................................................................72
5.4.4. Lập trình (Codes) THÊM _ SỬA _ XÓA trang quản lý danh mục sách:
wfGoodsManagements.aspx...................................................................................................72
5.4.5. Lập trình (Codes) xử lý RBTV dữ liệu khi xóa danh mục sản phẩm sách:
wfGoodsManagements.aspx...................................................................................................78
5.5.3. Lập trình (Codes) khởi tạo trang quản lý loại sách: wfGroupManagements.aspx
83
5.5.4. Lập trình (Codes) THÊM _ SỬA _ XÓA trang quản lý loại sách:
wfGroupManagements.aspx...................................................................................................84
5.6.3. Lập trình (Codes) khởi tạo trang quản lý thương hiệu sách:
wfTrademarkManagements.aspx...........................................................................................89
5.6.4. Lập trình (Codes) THÊM _ SỬA _ XÓA trang quản lý thương hiệu sách:
wfTrademarkManagements.aspx...........................................................................................89
5.7.3. Lập trình (Codes) khởi tạo trang quản lý nhân viên tại LHshop:
wfEmployeeManagements.aspx.............................................................................................98
5.7.4. Lập trình (Codes) THÊM _ SỬA _ XÓA trang quản lý nhân viên tại LHshop:
wfEmployeeManagements.aspx.............................................................................................98
- 17 -
5.7.5. Lập trình (Codes) xử lý RBTV dữ liệu khi xóa nhân viên tại LHshop:
wfEmployeeManagements.aspx...........................................................................................101
5.8.1. Phân tích trang quản lý chi nhánh của cửa hàng bán sách LHshop.......................
104
5.8.2. Thiết kế (Design) trang quản lý chi nhánh của cửa hàng bán sách LHshop:
wfBranchManagements.aspx...............................................................................................105
5.8.3. Lập trình (Codes) khởi tạo trang quản lý chi nhánh của cửa hàng bán sách
LHshop: wfBranchManagements.aspx................................................................................106
5.8.4. Lập trình (Codes) THÊM _ SỬA _ XÓA trang quản lý chi nhánh của cửa hàng
bán sách LHshop: wfBranchManagements.aspx..................................................................106
5.8.5. Xử lý RBTV dữ liệu khi xóa chi nhánh của cửa hàng bán sách LHshop:
wfBranchManagements.aspx...............................................................................................109
5.9.1. Phân tích trang quản lý chuyên môn nhân viên của cửa hàng bán sách LHshop
110
- 18 -
5.9.2. Thiết kế (Design) trang quản lý chuyên môn nhân viên của cửa hàng bán sách
LHshop: wfProfessionalManagement.aspx..........................................................................111
5.9.3. Lập trình (Codes) khởi tạo trang quản lý chuyên môn nhân viên của cửa hàng
bán sách LHshop: wfProfessionalManagement.aspx...........................................................111
5.9.4. Lập trình (Codes) THÊM _ SỬA _ XÓA trang quản chuyên môn nhân viên của
cửa hàng bán sách LHshop: wfProfessionalManagement.aspx...........................................112
5.9.5. Xử lý RBTV dữ liệu khi chuyên môn nhân viên của cửa hàng bán sách
LHshop: wfProfessionalManagements.aspx........................................................................114
5.10.1. Phân tích trang phân công nhân viên phụ trách các đơn hàng chưa có người phụ
trách ..........................................................................................................................115
5.10.2. Thiết kế (Design) trang phân công nhân viên phụ trách đơn đặt hàng:
wfPhanCong.aspx.................................................................................................................117
5.10.3. Lập trình (Codes) khởi tạo trang phân công nhân viên phụ trách đơn đặt hàng:
wfPhanCong.aspx.................................................................................................................118
5.11. Phân công: Phân công chuyên môn cho nhân viên chưa được phân công.......119
5.11.1. Phân tích trang phân công chuyên môn cho nhân viên chưa được phân công.119
5.11.2. Thiết kế (Design) trang phân công chuyên môn cho nhân viên chưa được phân
công: wfPhanCongChuyenMon.aspx...................................................................................120
- 19 -
5.11.3. Lập trình (Codes) khởi tạo trang phân công chuyên môn cho nhân viên chưa
được phân công: wfPhanCongChuyenMon.aspx.................................................................121
5.11.4. Lập trình (Codes) chức năng phân công chuyên môn cho nhân viên chưa được
phân công: wfPhanCongChuyenMon.aspx..........................................................................121
5.12. Chuyển loại: Chuyển một sách từ loại sách này sang loại sách khác....................
121
5.12.3. Lập trình (Codes) khởi tạo trang đổi loại sách:
wfChangeGroupManagement.aspx......................................................................................123
5.12.4. Lập trình (Codes) chức năng trang đổi loại sách:
wfChangeGroupManagement.aspx......................................................................................124
5.13. Chuyển thương hiệu: Chuyển một sách từ thương hiệu sách này sang thương
hiệu sách khác......................................................................................................................125
5.13.3. Lập trình (Codes) khởi tạo trang đổi thương hiệu sách:
wfChangeTrademarkManagements.aspx.............................................................................127
6.4. Upload đăng tải Source WebApp lên host somee để phát hành......................132
- 20 -
6.5. Giới thiệu sản phẩm WebApp quản lý bán sách online trên somee......................
133
- 21 -
TRƯỜNG ĐẠI HỌC TÀI CHÍNH - MARKETING
KHOA CÔNG NGHỆ THÔNG TIN
PHIẾU GIAO NHIỆM VỤ ĐỒ ÁN HỌC PHẦN
Tên học phần: Lập trình web (4 tín chỉ); Mã lớp HP: 2231112005701
Tên đề tài: LẬP TRÌNH PHÁT TRIỂN WEBAPP BÁN SÁCH ONLINE CỦA HỆ THỐNG CỬA
HÀNG LH
Lý thuyết: Cơ sở lý thuyết HP Lập trình Web (4 tín chỉ) bao gồm lập trình Web giao dịch và lập trình
Web quản lý trên nền tảng Công nghệ ASP.NET
Thực hành:
LẬP TRÌNH PHÁT TRIỂN WEBAPP BÁN SÁCH ONLINE CỦA HỆ THỐNG CỬA HÀNG
LH, bao gồm 2 phần:
+ Giao dịch dành cho khách hàng online mua sách
. MauTrang.Master: Mẫu trang giao dịch kiêm quản lý sách.
. wfHomePage.aspx: Trang chủ, trưng bày các mẫu sách;
. wfCart.aspx: Giỏ hàng để khách hàng online chọn sách để thực hiện mua;
. Order.aspx: Đặt mua các loại sách;
+ Quản lý MauTrang.Master: Sử dụng Master Giao dịch (nêu trên)
. Quản lý chung: có xử lý đăng nhập Login
. Quản lý các chức năng trên các sách và nhân viên: Thêm, Xóa, Sửa, RBTV;
. Chuyển loại sách, thương hiệu của sách và chuyên môn của nhân viên
+ Phát hành WebApp lên Host miễm phí: somee.com
- 22 -
Chương 1: GIỚI THIỆU ĐỒ ÁN CỦA HP
1.1. Tổng quan về ĐỒ ÁN HỌC PHẦN
ĐỒ ÁN HỌC PHẦN thiết kế và LẬP TRÌNH PHÁT TRIỂN WEBAPP BÁN SÁCH
ONLINE CỦA HỆ THỐNG CỬA HÀNG LH trên nền tảng công nghệ ASP.NET : phiên
bản 4.8.04084 với công cụ MS Visual Studio.NET 2019, dùng ngôn ngữ lập trình C#.NET:
G112_1921006704_NguyenThiLanHuing_BanSachOnlineLhBShop
Hệ thống WebApp nêu trên được triển khai thực nghiệm trên Host Web của
www.somee.com với URL là:
o http://LHshop112ntlhuong.somee.com
o http://www.LHshop112ntlhuong.somee.com
Vận dụng kiến thức về thiết kế và lập trình WebApp 1 lớp trên nền tảng công nghệ
ASP.NET vào việc phát triển một WebApp đơn giản sử dụng trong thực tiễn là: Hệ thống
Websites bán sách trực tuyến.
+ Wfee Host Web: some.com dùng MS SQL 2019 Express trên host somee onine
+ Hệ thống WebApp bán sách trực tuyến (online) dạng Local trên PC:
G112_1921006704_NguyenThiLanHuong_BanSachOnlineLHShop
- 23 -
+ Hệ thống WebApp bán sách trực tuyến (online) dạng Online trên somee:
http://LHShop112ntlhuong.somee.com hoặc
http://www.LHShop112ntlhuong.somee.com
Chương 2: Các cơ sở lý thuyết của HP Lập trình Web (4 TC) phục việc thực hiện đề tài HP
Chương 4: Thiết kế và lập trình WebApp phần giao dịch trực tuyến của khách hàng mua
sách
Chương 5: Thiết kế và lập trình WebApp phần quản lý trực tuyến của cơ sở bán sách
Chương 6: Triển khai và phát hành WebApp bán sách trực tuyến trên Host: somee
Chương 7: Tổng kết các kết quả đạt được và còn hạn chế của đồ án, đồng thời đề xuất
hướng khắc phục hạn chế và phát triển Đồ án.
- 24 -
Chương 2: CƠ SỞ LÝ THUYẾT CỦA HỌC PHẦN
2.1. Quy trình nghiệp vụ
ASP.NET là một nền tảng ứng dụng web (web application wfamework) được phát triển
và cung cấp bởi Microsoft, cho phép những người lập trình tạo ra những trang web động,
những ứng dụng web và những dịch vụ web. Lần đầu tiên được đưa ra thị trường vào tháng
1 năm 2002 cùng với phiên bản 1.0 của.NET wfamework, là công nghệ nối tiếp của
Microsoft's Active Server Pages(ASP). ASP.NET được biên dịch dưới dạng Common
Language Runtime (CLR), cho phép những người lập trình viết mã ASP.NET với bất kỳ
ngôn ngữ nào được hỗ trợ bởi.NET language.
Web Application (Web App) là một trình ứng dụng web được lưu trữ trên một server từ
xa. Được phân phối qua Internet thông qua giao diện trình duyệt.
Lập trình WebApp trên ASP.NET là thao tác để xây dựng và thiết kế một trang web
hoàn chỉnh có tương tác với CSDL và tương tác với người dùng dựa trên ngôn ngữ
ASP.NET. Người làm công việc lập trình web được gọi là chuyên viên lập trình website
(Web Developer).
2.3. Phát triển WebApp ASP.NET đơn giản có CSDL dùng ADO.NET
ADO.NET (ActiveX Data Object) là tập hợp các thư viện lớp qua đó cho phép ứng dụng
tương tác (lấy về, cập nhật, xóa) với các nguồn dữ liệu (Như SQLServer, XML, MySQL,
Oracle Database ...).
Master Page là một trang dùng để tạo ra cấu trúc giao diện chung cho các trang web
trong hệ thống, những trang thừa kế từ Master Page sẽ áp dụng lại giao diện mẫu của nó.
Nhờ đó tất cả các page cùng “thừa kế” 1 mẫu trang Master Page sẽ có những hình thức và
- 25 -
nội dung cơ bản giống nhau, như: tiêu đề (header = banner, logo, …), footer (số điện thoại
liên lạc, người chịu trách nhiệm, …).
Trong một website của thể có 1 hoặc nhiều Master Page, tùy từng trường hợp cụ thể, vd:
Master Page tổng công ty; và một số Master Page dùng cho từng chi nhánh, vì mỗi chi
nhánh có logo, số điện thoại, địa chỉ,… khác nhau. Chú ý: một Master Page có thể “thừa kế”
Master Page khác.
o Phần chung: Đây là giao diện chung áp dụng cho những trang con kế thừa từ nó
o Phần riêng (Content Place Holder): Đây là nơi chứa nội dung riêng của từng
trang.
Chú ý trong khi thiết kế Master Page phải được thiết kế ngoài Content Place Holder hay
phần riêng của Master Page.
Bước 1: Nháy phải chuột vào project của bạn ở Solution Explorer > Add > New Item …
hoặc bấm tổ hợp phím ctrl + shift + A.
Bước 2: Ở cây chọn Installer > Visual C# > Web > Web Forms sau đó chọn Web Forms
Master Page.
- 26 -
Hình 2.1: Tạo trang Master Page
MauTrang.Master bao gồm header với logo của cửa hàng và dòng chữ thể hiện rõ mặt
hàng mà cửa hàng bán “CỬA HÀNG SÁCH LH SHOP”. Sau đó là một menu chức năng
của webapp và phần cuối cùng là phần đăng nhập.
- 27 -
2.5. Phát triển các chức năng GIAO DỊCH trên WebApp ASP.NET
DataList được sử dụng để hiển thị dữ liệu, chúng ta phải tự thiết kế hình thức hiển thị dữ
liệu, đây là thế mạnh của DataList.
Chúng ta có thể thực hiện một giao diện trình bày có tương tác dữ liệu hiển thị giống
như một website bán hàng, nó bao gồm tiêu đề, hình ảnh và giá thành sản phẩm chi tiết …
với datalist trên ASP.NET.
Session là cơ chế để lưu lại dữ liệu của phiên làm việc cho của ứng dụng - ứng với từng
khách truy cập. Để trao đổi dữ liệu từ trang này qua trang khác. Ví dụ nếu người dùng đã
đăng nhập, thì thông tin đăng nhập được lưu lại và chuyển cho các trang khác nhau trong
phiên làm việc để khỏi mỗi lần gửi request lại phải đăng nhập, hay người dùng chọn đựa
mặt hàng vào giỏ hàng thì phải nhớ khi chuyển đến trang thanh toán ...
Session là một trong những biến quan trọng nhất trong ứng dụng web, nó là riêng biệt
với các đối tượng người dùng tuy nhiên biến này được tạo ra sẽ sử dụng ở tất cả mọi trang
trong website và lưu vết của người dùng đó đã làm những gì trên website mình.
- 28 -
2.4.3. Đặt hàng và thanh toán
2.6. Phát triển các chức năng QUẢN LÝ trên WebApp ASP.NET
2.7. Xử lý Ràng buộc toàn vẹn dữ liệu (RBTV) trên CSDL trong ASP.NET
2.6.1. Giới thiệu về lập trình xử lý RBTV dữ liệu trên CSDL trong ASP.NET
2.6.1.1. Giới thiệu về RBTV
2.6.1.2. Cách thực hiện:
2.6.1.3. Các bước thực hiện
2.6.2. Thiết kế hệ thống xử lý RBTV dữ liệu
2.6.3. Lập trình hệ thống xử lý RBTV dữ liệu
2.8. Lập trình thủ tục Chuyển nhóm dữ liệu trong ASP.NET
2.7.1. Giới thiệu về lập trình Chuyển nhóm dữ liệu trên CSDL trong ASP.NET
2.7.2. Thiết kế hệ thống xử lý Chuyển nhóm dữ liệu
2.7.3. Lập trình hệ thống xử lý Chuyển nhóm dữ liệu
2.9. Lập trình thủ tục giao dịch Đặt hàng (Order)
2.8.1. Giới thiệu về lập trình xử lý giao dịch đặt hàng trong ASP.NET
2.8.2. Chức năng khách hàng
2.8.3. Chức năng đơn đặt hàng
2.8.4. Chức năng chi tiết đơn hàng
2.8.5. Xử lý lưu trữ vào DB
2.10. Triển khai phát hành WebApp ASP.NET trên Internet (hoặc Intranet)
- 29 -
Chương 3: THIẾT KẾ VÀ CẬP NHẬT CSDL PHỤC VỤ WEBAPP
3.1. Phân tích và thiết kế DB
Hê thống DB phục vụ cho hoạt động của WebApp bán sách trực tuyến được mô tả như
sau:
Các chi nhánh (tb_chinhanh) của cửa hàng được chia và quản lý theo từng khu vực
(tb_khuvuc). Để phân biệt các chi nhánh và khu vực với nhau, mỗi chi nhánh và khu vực
có một mã riêng và có tên của khu vực/chi nhánh. Mỗi chi nhánh có các nhân viên
(tb_nhanvien), các nhân viên cần cung cấp họ, tên, số điện thoại, email để người quản lý có
thể quản lý thông tin của họ và được phân biệt bằng mã nhân viên (manv) và mỗi nhân viên
có một chuyên môn (tb_chuyenmon) của họ.
Quản lý sách:
Các sản phẩm sách tại LHshop được quản lý vô cùng chặt chẻ để đem đến một chất
lượng uy tín nhất, tốt nhất. Các sách được quản lý trong một danh sách (tb_dss) bao gồm
các thông tin như: mã để phân biệt các sách, tên sách, ngày sản xuất, hạn sử dụng, khối
lượng, đơn vị tính, giá bán và mô tả sơ lược về quyển sách đó. Các sách tại được mang đến
từ các thương hiệu lớn (thuonghieu).Sách luôn có một lượng tồn kho (tonkho) lớn để đảm
bảo cung cấp các sách cho khách hàng mọi lúc.
Quản lý bán hàng:
Để có thể mua hàng ở LH, các khách hàng (khachhang) của LH phải để lại các thông
tin như tên, địa chỉ, phương thức liên lạc và tất nhiên các khách hàng đều có một mã để
người quản lý cửa hàng có thể quản lý dễ dàng hơn.
Khi đặt hàng (dondathang), khách hàng có thể chọn một địa chỉ giao hàng khác địa chỉ của
bản thân, chỉ định tên và số điện thoại của người khác để nhận hàng thay. Sản phẩm và số
lượng mua của khách hàng sẽ được lưu vào danh sách chi tiết (ctdonhang).
Các quy định cơ bản của hệ thốngquản lý bán hàng của cửa hàng kinh doanh
bán sách:
Quy định 1: Giá bán của các sách là số dương và phải lớn hơn hoặc bằng 0.
Quy định 2: Số lượng tồn kho phải lớn hơn hoặc bằng 0.
Quy định 3: Lương của nhân viên phải từ 3.000.000 VNĐ trở lên.
- 30 -
Quy định 4: Khi tuyển một nhân viên mới, mã hoa hồng của nhân viên đó mặc định là 0.
Quy định 5: Khi thêm một sách vào danh sách, nếu không nhập số lượng, nó sẽ mặc định là
0.
Quy định 6: Số lượng đặt hàng phải lớn hơn 0.
Quy định 7: Khi thêm một đơn hàng, tình trạng đơn hàng mặc định là “Chua duoc giao”.
Thiết kế DB:
Dự vào phân tích nghiệp vụ ở trên DB phục vụ cho hệ thống quản lý bán hàng của LH
bao gồm các thực thể sau đây:
o khuvuc (makv, tenkv)
o chinhanh (macn, tencn, diachi, hotline)
o loaisach (maloais, tenloais)
o thuonghieu (math, tenth)
o dss (mas, tenS, ngaysx, soluong, dvt, giaban, mota, maloais, math)
o tonkho (macn, mas, slton)
o hoahong (mahh, hoahong)
o congviec (macv, tencv)
o nhanvien (manv, honv, tennv, ngayvaolam, luong, sdt, email, mahh, macv,
makv)
o khachhang (makh, tenkh, diachi, sdt, email)
o dondathang (maddh, ngaylap, makh, manv, makv, macn, ten_nguoinhan,
diachi_giao, sdt_nguoinhan, tinhtrang, ghichu)
o ctdonhang (maddh, mas, sl)
Căn cứ vào phân tích, thiết kế thành phần CSDL từ mục 3.1 nêu trên, ta có Diagram của
CSDL phục vụ cho hoạt động của WebApp bán sách LHshop online như hình 3.1
- 31 -
Hình 3.1: Diagram của DB quản lý bán sách online
- 32 -
3.3.2. Thiết kế Table tb_thuonghieu
- 33 -
1.1.3. Thiết kế Table tb_khuvuc
- 34 -
1.1.6. Thiết kế Table tb_chitietddh
3.4. Cập nhật dữ liệu DB thực nghiệm cho WebApp bán sách LHshop Online
Để đảm bảo dữ liệu được nhập vào mà không vi phạm bất cứ ràng buộc nào, dữ liệu nên
được nhập theo thứ tự sau:
1. tb_thuonghieu
2. tb_loais
3. tb_khuvuc
4. tb_nhanvien
5. tb_dss
6. tb_chinhanh
- 35 -
7. tb_hangton
3.5. Giới thiệu một số View, SP và Trigger trong DB quản lý bán sách online
1.1.2. View xem thông tin đơn giản của nhân viên
create view v_thongtin_nhanvien
as
select msnv, honv + ' ' + tennv as hoten_nv, mskv, macm
from nhanvien
1.1.3. Trigger thực hiện hủy chi tiết đơn đặt hàng trước khi thực hiện hủy đơn đặt
hàng:
create trigger tg_d_xoadon_xoachitiet
on tb_dondathang
instead of delete
as
begin
declare @ma nchar(20)
select @ma = msddh wfom deleted
delete wfom tb_chitietddh
where msddh = @ma
delete wfom tb_dondathang
where msddh = @ma
end
1.1.4. Trigger thực hiện hủy đơn đặt hàng khi thực hiện xóa một khách hàng:
create trigger tg_d_xoakh_xoadon
on tb_khachhang
instead of delete
as
begin
declare @ma nchar(20)
select @ma = mskh wfom deleted
delete wfom tb_dondathang
where mskh = @ma
delete wfom tb_khachhang
where mskh = @ma
end
1.1.5. Trigger khi xóa một loại sách, các sách còn lại của loại đó ở cửa hàng sẽ
được sửa mã loại là “LS00” với tên loại là “Khác”:
create trigger tg_d_xoaloai_capnhat_loaiS
on tb_loaiS
instead of delete
as
begin
declare @ma nchar(20)
- 36 -
select @ma = msloais from deleted
update tb_dsS set msloais = 'LS00' where msloais = @ma
delete from tb_loaiS where msloais = @ma
end
1.1.6. Trigger khi xóa một thương hiệu sách, các sách còn lại của thương hiệu đó
ở cửa hàng được sửa mã thương hiệu là “TH00” với tên thương hiệu là
“Thương hiệu khác”:
create trigger tg_d_xoath_capnhat_loaiS
on tb_thuonghieu
instead of delete
as
begin
declare @ma nchar(20)
select @ma = math from deleted
update tb_dsS set math = 'TH00' where math = @ma
delete from tb_thuonghieu where math = @ma
end
1.1.7. Trigger khi xóa một chuyên môn nhân viên tại cửa hàng thì các nhân viên
thuộc chuyên môn đó sẽ được sửa mã chuyên môn là “OO” với tên là chưa
phân công:
create trigger tg_d_xoacm_capnhat_nv
on tb_chuyenmon
instead of delete
as
begin
declare @ma nchar(20)
select @ma = macm from deleted
update tb_nhanvien set macm = 'OO' where macm = @ma
delete from tb_chuyenmon where macm = @ma
end
- 37 -
Chương 4: THIẾT KẾ VÀ LẬP TRÌNH WEBAPP PHẦN GIAO
DỊCH
4.1. Giới thiệu về WebApp bán sách LHshop online
Đây là thành phần các WebWfoms phục vụ cho khách hàng thực hiện các chức năng
giao dịch đặt hàng cần mua tại website của LHshop: thông thường đây là các chức năng
phục vụ các cá nhân, đơn vị bên ngoài đơn vị bán hàng tương tác online với hệ thống nên
không cho phép làm thay đổi các thông tin bên trong hệ thống. Chủ yếu là các thao tác đặt
hàng, góp ý, bình luận, đề xuất, đề nghị. Không thực hiện thêm sách, xóa hay sửa sách,
thông tin sách, các sản phẩm được trưng bày trên website
Phần giao dịch của WebApp này bao gồm:
+ MauTrang.Master: là Master mẫu dùng chung cho các trang giao dịch và các trang quản
lý của Chương 5:60.
+ wfHomePage.aspx: là trang chủ, trưng bày các sản phẩm sách cho phép khách hàng thực
hiện chọn các sách bỏ vào “giỏ hàng” để đặt mua hàng.
+ wfCart.aspx: cho phép khách hàng xem các sản phẩm sách mà họ đã đưa vào “giỏ hàng”
hiện có và thực hiện một số thao tác cơ bản trên “giỏ hàng”, như: “Mua thêm”, “Hủy giỏ
hàng”, “Đặt mua giỏ hàng”, “đổi hàng” , “bỏ bớt hàng trong giỏ ra”. . . .
+ wfOrder.aspx: cho phép khách hàng thực hiện việc đặt mua hàng khi ”giỏ hàng” không
rổng (có các sản phẩm sách của cửa hàng).
Hình 4.1: Thiết kế MasterPage Giao dịch dùng chung cho cả phần quản lý
+ Thiết kế Table có 1 cột và nhiều dòng tạo thuận lợi cho việc kết cấu vị trí các thành phần
thiết kế trên các WebPage thừa kế MasterPage này.
- 38 -
+ Banner giới thiệu về cơ sở kinh doanh bán sách trực tuyến
+ Menu ngang (Horizontalization) cho phép khách hàng truy xuất các trang thông tin liên
quan đế hệ thống Websites.
/// <summary>
/// Chạy khi nhân viên nháy chọn vào mục chọn trên menu
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Menu1_MenuItemClick(object sender, MenuEventArgs e)
{
//nếu nháy chọn mục "Quản lý" hoặc "Đăng nhập" trên Menu
if (e.Item.Value == "ql" || e.Item.Value == "dn")
{
//hiện giao diện login
lgnhanvien.Visible = true;
}
else //nếu ngược lại
{
//giao hiện login được ẩn
lgnhanvien.Visible = false;
}
}
o Kiểm tra tài khoản đăng nhập:
* Hệ Websites hỗ trợ chức năng giao dịch bán sách online thừa kế Masterpage nên trên,
gồm các thành phần như sau:
+ Thiết kế Table có 1 cột và nhiều dòng tạo thuận lợi cho việc kết cấu vị trí các thành phần
thiết kế trên HomepagePage.
+ Dùng DataList để trưng bày các sách cho phép khách hàng chọn mua trực tuyến.
+ Dùng Button để khách hàng thực hiện các thao tác “thêm hàng vào giỏ” hay “xem giỏ
hàng”.
+ Dùng TextBox để khách hàng có thể lựa chọn số lượng mua của một sản phẩm.
+ Dùng Image để hiển thị hình ảnh của sản phẩm sách cầu lông để khách hàng có cái nhìn
trực quan hơn vê sản phẩm.
4.3.2. Lập trình (Codes) WebApp giao dịch bán sách online: wfHomePage.aspx
- 40 -
postback sẽ không mất giỏ hàng*/
{
if (Session["cart"] != null)//nếu đã có giỏ hàng
{
cart = Session["cart"] as DataTable;//sử dụng giỏ hàng có sẵn
// có thể khai kiểu (DataTable) cart = Session["cart"]
}
else//nếu chưa có giỏ hàng => tạo một giỏ mới
{
//xóa các dữ liệu rác
cart.Rows.Clear();
cart.Columns.Clear();
//Định các cột
cart.Columns.Add("msS", typeof(string));
cart.Columns.Add("tenS", typeof(string));
cart.Columns.Add("giaban", typeof(int));
cart.Columns.Add("dvt", typeof(string));
cart.Columns.Add("sl", typeof(int));
cart.Columns.Add("tien", typeof(int), "giaban * sl");/*tự tính theo
công thức*/
}
}
}//page_load
o Sự kiện ItemCommand khi nháy vào “chọn mua” trong datalist:
- 41 -
lblketqua.Text = "GIỎ HÀNG HIỆN CÓ: " +
cart.Compute("count(msS)", "").ToString() +
" SÁCH. TỔNG GIÁ TIỀN: " +
cart.Compute("sum(tien)","").ToString() + "đ";
}
}//dtlDSS_ItemCommand
o Sự kiện khi nháy vào button “xem giỏ hàng”:
4.4. Trang “Giỏ hàng” của khách hàng khi thực hiện mua sách tại cửa hàng: wfCart.aspx
* Webpage “giỏ hàng” của cửa hàng bán sách LHshop online thừa kế Masterpage nên trên,
gồm các thành phần như sau:
+ Thiết kế Table có 1 cột và nhiều dòng tạo thuận lợi cho việc kết cấu vị trí các thành phần
thiết kế trên HomePage.
+ Dùng Gridview để hiển thị các sản phẩm sách mà khách hàng đã chọn mua trên trang chủ
HomePage.
+ Các Button dùng để thực hiện các thao tác như “đặt hàng”, “về trang chủ”, “hủy giỏ hàng”
hay “chọn mua tiếp”.
+ Dùng Label để hiển thị tổng số tiền của các mặt hàng trong giỏ. Thêm vào đó, nếu giỏ
trống Label còn báo cho khách hàng giỏ trống và “hãy mua hàng nào!”.
- 42 -
protected void Page_Load(object sender, EventArgs e)
{
if (Session["cart"] == null)
{
lblTitle.Text = "Giỏ hàng đang trống, hãy mua hàng thôi
nào!!!";
btnmua.Text = "Chọn mua";
dgvgiohang.DataSource = null;
lblSum.Text = "";
btndat.Visible = false;
btnhuy.Visible = false;
}
else
{
lblTitle.Text = "Giỏ hàng của bạn:";
btnmua.Text = "Chọn mua tiếp!";
cart = Session["cart"] as DataTable;
dgvgiohang.DataSource = cart;
dgvgiohang.DataBind();
lblSum.Text = "Giỏ hàng của bạn có: " +
cart.Compute("Count(msS)","").ToString()+" mặt hàng. Tổng tiền: "+
cart.Compute("Sum(tien)", "") + " VNĐ";
btndat.Visible = true;
btnhuy.Visible = true;
}
}
o Sự kiện nháy vào button “mua”:
* Trang này (wfOrder) được gọi từ trang “Gỏi hàng” [wfCart.aspx] không rổng:
protected void Page_Load(object sender, EventArgs e)
{
if (Session["cart"] == null) //Nếu giỏ hàng rỗng
{
…
- 43 -
btndat.Visible = false;
…
}
else //nếu giỏ hàng không rỗng
{
…
btndat.Visible = true;
…
}
}
* Nếu giỏ hàng đã có thì có thể gọi được trang đặt hàng: wfOrder.aspx
//ĐẶT HÀNG
protected void btndat_Click(object sender, EventArgs e)
{
Response.Redirect("~\\wfOrder.aspx");
}
* Để thực hiện được trang đặt hàng: wfOrder.aspx thì cần phải “chạy” từ trang chủ
(wfHomePage.aspx: trưng bày hàng hóa), cho phép KH chọn hàng “bỏ vào giỏ” và đã có
“giỏ hàng”: Set As Start Page từ wfHomePage.aspx
+ Khách hàng: Khách hàng sẽ thực hiện thao tác tìm khách hàng để chọn mua hàng. Nếu là
lần đầu mua hàng, khách hàng sẽ cần để lại thông tin như tên, địa chỉ, số điện thoại và email
để thực hiện lưu thông tin cho các lần mua hàng sau này.
+ Thông tin đơn hàng: Thông tin đơn hàng gồm các thông tin như địa chỉ giao, người nhận,
số điện thoại người nhận, ghi chú, hạn giao để thực hiện tạo đơn đặt hàng.
+ Đơn này đặt mua những mua những mặt hàng nào và số lượng là bao nhiêu, dữ liệu này sẽ
được lấy từ giỏ hàng của khách hàng.
Sau khi đặt hàng phải xác định được hàng sẽ được giao ở đâu, cho ai, số điện thoại người
nhận, hạn giao
- 44 -
4.5.2. Thiết kế trang Đặt hàng: wfOrder.aspx
+ Nếu tìm có khách hàng thì phần thông tin khách hàng mới sẽ bị ẩn; dgv…...Visible =
False
+ Ghi chú: Khi GridView rổng (không có dòng nào) nó sẽ tự ẩn.
+ Bổ sung Nút “Chọn” trên mỗi dòng của GridViewKH
+ Thông tin đơn hàng được thiết kế theo Table tb_dondathang đã có trong DB:
tb_dondathang (msddh, ngaylap, diachi_giao, ten_nguoinhan, sdt_nguoinhan,
thoihan_giao, ghichu)
+ Thông tin đơn hàng chỉ hiển thi khi đã có thông tin khách hàng, tức là trong phần thông
tin khách hàng đã “Chọn khách hàng”, vì vậy, ban đầu, các đối tượng thiết kế trong phần
thông tin đơn hàng sẽ có Visible = False.
+ Các nội dung thiết kế cơ bản là Gridview, Lable, TextBox và Calendar, như Hình
- 45 -
Hình 4.6: Thiết kế phần thông tin Đơn hàng trên trang Đặt hàng
PHẦN THÔNG TIN CÁC MẶT HÀNG ĐẶT MUA CỦA ĐƠN HÀNG (GIỎ HÀNG)
4.5.3. Lập trình mã lệnh (Codes) của trang Đặt hàng: wfOrder.aspx
* Tìm khách hàng, nếu chưa có thì thêm mới, nếu đã có thì chọn KH; vì có thể tìm thấy
nhiều KH:
+ Lệnh SQL tìm KH
SELECT mskh, tenkh, diachi, sdt
WFOM tb_khachhang
WHERE (mskh = @mskh) OR (tenkh = @tenkh) OR (diachi = @diachi) OR (sdt = @sdt)
Với tham số như Hình
- 46 -
Hình 4.8: Tham số lệnh SQL thêm KH mới
+ Lệnh SQL chấp nhận đơn đặt hàng: Insert DDH và ctDDH: SqlDataSouce_ DDH và
SqlDataSouce_CTDDH
[1] Insert DDH
INSERT INTO tb_dondathang(msddh, ngaylap, mskh, nguoinhan, sgiao, thoihangiao,
sdtnguoinhan, tinhtrang, ghichu)
VALUES (@msddh, @ngaylap, @mskh, @nguoinhan, @sgiao, @thoihangiao,
@sdtnguoinhan, @tinhtrang, @ghichu)
Với các tham số
Hình 4.9: Tham số lệnh SQL chấp nhận đơn đặt hàng
SqlDataSource_CTDDH.InsertParameters.Add("msddh", lblmaddh.Text.Trim());
SqlDataSource_CTDDH.InsertParameters.Add("mss",
- 47 -
r["msS"].ToString().Trim());
SqlDataSource_CTDDH.InsertParameters.Add("sl",
DbType.Int32, r["sl"].ToString().Trim());
+ Lệnh SQL hủy đơn đặt hàng: Delete DDH: SqlDataSouce_ DDH
[1] Delete DDH
[1] Tìm khách hàng [thủ tục chính] = Tim KH + Nhập KH mới + Lưu DB + chọn KH
// [1].TÌM KH + [2].NHẬP KH MỚI + [3] LƯU THÔNG TIN KH MỚI VỪA NHẬP +
[4]CHỌN KH TRONG GRIDVIEW TÌM THẤY (TẠI VỊ TRÍ vt ĐÃ CHỌN TRÊN GIRDVIEW)
protected void btntimkiem_Click(object sender, EventArgs e)
{
//hiện thị nút lệnh hủy tìm
btnhuy.Visible = true;
- 48 -
lblthemkh.Visible = true;
lblms.Visible = true;
lblhoten.Visible = true;
lbls.Visible = true;
lblsdt.Visible = true;
txtms.Visible = true;
txthoten.Visible = true;
txts.Visible = true;
txtsdt.Visible = true;
txtms.Visible = false;
txthoten.Visible = false;
txts.Visible = false;
txtsdt.Visible = false;
//đổi nhãn
btntimkiem.Text = "Chọn khách hàng";
}
//nếu text của nút tìm là "Chọn khách hàng"
- 49 -
else if (btntimkiem.Text.Trim() == "Chọn khách hàng")
{
//hiển thị vùng tạo đơn đặt hàng
txttimkiem.Text = txtms.Text.Trim();
dgvkhachhang.DataBind();
btntimkiem.Enabled = false;
lblthongtindon.Visible = true;
lblmadon.Visible = true;
lblmaddh.Visible = true;
lblngay.Visible = true;
lblngaylap.Visible = true;
lblsgiao.Visible = true;
lblnguoinhan.Visible = true;
lblhangiao.Visible = true;
lblghichu.Visible = true;
lblsdtnhan.Visible = true;
txtsgiao.Visible = true;
txtnguoinhan.Visible = true;
txtghichu.Visible = true;
cldhangiao.Visible = true;
txtsdtnhan.Visible = true;
//hiển thị thông tin chi tiết đơn hàng từ session ở trang giỏ hàng
lblthongtinctdon.Visible = true;
cart = Session["cart"] as DataTable;
dgvgiohang.DataSource = cart;
dgvgiohang.DataBind();
lblSum.Text = "Giỏ hàng của bạn có: " +
cart.Compute("Count(msS)", "").ToString() +
" mặt hàng. Tổng tiền: " + cart.Compute("Sum(tien)", "") + " VNĐ";
dgvgiohang.Visible = true;
lblSum.Visible = true;
}
}
- 50 -
protected void btnhuy_Click(object sender, EventArgs e)
{
//tìm lại
btntimkiem.Enabled = true;
btntimkiem.Text = "Tìm";
txtms.Visible = false;
txthoten.Visible = false;
txts.Visible = false;
txtsdt.Visible = false;
txtsgiao.Visible = false;
txtnguoinhan.Visible = false;
txtghichu.Visible = false;
cldhangiao.Visible = false;
txtsdtnhan.Visible = false;
btnchapnhan.Visible = false;
btnhuydon.Visible = false;
- 51 -
dgvgiohang.Visible = false;
lblSum.Visible = false;
}
PHẦN THÔNG TIN CÁC MẶT HÀNG ĐẶT MUA CỦA ĐƠN HÀNG (GIỎ HÀNG)
//hiển thị thông tin chi tiết đơn hàng từ session ở trang giỏ hàng
lblthongtinctdon.Visible = true;
cart = Session["cart"] as DataTable;
dgvgiohang.DataSource = cart;
dgvgiohang.DataBind();
lblSum.Text = "Giỏ hàng của bạn có: " +
cart.Compute("Count(msS)", "").ToString() +
" mặt hàng. Tổng tiền: " + cart.Compute("Sum(tien)", "") + " VNĐ";
dgvgiohang.Visible = true;
lblSum.Visible = true;
SqlDataSource_CTDDH.Insert();
}
this.Title = "Thêm DDH và CTDDH thành công";
}
catch(System.Exception ex)
{
this.Title = "Lỗi: " + ex.Message;
}
Session["cart"] = null;
- 52 -
//khóa thông tin đơn hàng
txtsgiao.Enabled = false;
txtnguoinhan.Enabled = false;
txtghichu.Enabled = false;
cldhangiao.Enabled = false;
txtsdtnhan.Enabled = false;
//khóa tìm kiếm
btnhuy.Enabled = false;
btnchapnhan.Enabled = false;
}
[2] Hủy đơn đặt hàng
protected void btnhuydon_Click(object sender, EventArgs e)
{
try
{
SqlDataSource_DDH.Delete();
}
catch (System.Exception ex)
{
this.Title = "Lỗi: " + ex;
}
lblthongtindon.Visible = false;
lblmadon.Visible = false;
lblmaddh.Visible = false;
lblngay.Visible = false;
lblngaylap.Visible = false;
lblsgiao.Visible = false;
lblnguoinhan.Visible = false;
lblhangiao.Visible = false;
lblghichu.Visible = false;
lblsdtnhan.Visible = false;
lblthongtinctdon.Visible = false;
lblSum.Visible = false;
txtsgiao.Visible = false;
txtnguoinhan.Visible = false;
txtghichu.Visible = false;
cldhangiao.Visible = false;
txtsdtnhan.Visible = false;
dgvgiohang.Visible = false;
btnchapnhan.Visible = false;
btnhuydon.Visible = false;
btntimkiem.Text = "Tìm";
btntimkiem.Enabled = true;
btnhuy.Enabled = true;
Session["cart"] = null;
}
- 53 -
FULL CODES
//TỰ ĐỘNG CHAY KHI TRANG ĐẶT HÀNG ĐƯỢC TẢI LÊN
public partial class wfOrder : System.Web.UI.Page
{
static DataTable cart = new DataTable();
protected void Page_Load(object sender, EventArgs e)
{
}
static int vt = 0;
protected void dgvkhachhang_SelectedIndexChanged(object sender,EventArgs e)
{
vt = dgvkhachhang.SelectedIndex;
txttimkiem.Text = dgvkhachhang.Rows[vt].Cells[1].Text.Trim();
}
txtms.Visible = true;
txthoten.Visible = true;
txts.Visible = true;
txtsdt.Visible = true;
- 54 -
txtms.Text = txttimkiem.Text.Trim(); txtms.ToolTip = "Không để trống "
+ "mã hoặc nhập trùng";
txthoten.Text = "";
txts.Text = "";
txtsdt.Text = "";
txtms.Visible = false;
txthoten.Visible = false;
txts.Visible = false;
txtsdt.Visible = false;
//đổi nhãn
btntimkiem.Text = "Chọn khách hàng";
}
//nếu text của nút tìm là "Chọn khách hàng"
else if (btntimkiem.Text.Trim() == "Chọn khách hàng")
{
//hiển thị vùng tạo đơn đặt hàng
txttimkiem.Text = txtms.Text.Trim();
dgvkhachhang.DataBind();
btntimkiem.Enabled = false;
lblthongtindon.Visible = true;
lblmadon.Visible = true;
lblmaddh.Visible = true;
lblngay.Visible = true;
lblngaylap.Visible = true;
- 55 -
lblsgiao.Visible = true;
lblnguoinhan.Visible = true;
lblhangiao.Visible = true;
lblghichu.Visible = true;
lblsdtnhan.Visible = true;
txtsgiao.Visible = true;
txtnguoinhan.Visible = true;
txtghichu.Visible = true;
cldhangiao.Visible = true;
txtsdtnhan.Visible = true;
//hiển thị thông tin chi tiết đơn hàng từ session ở trang giỏ hàng
lblthongtinctdon.Visible = true;
cart = Session["cart"] as DataTable;
dgvgiohang.DataSource = cart;
dgvgiohang.DataBind();
lblSum.Text = "Giỏ hàng của bạn có: " +
cart.Compute("Count(msS)", "").ToString() +
" mặt hàng. Tổng tiền: " + cart.Compute("Sum(tien)", "") + " VNĐ";
dgvgiohang.Visible = true;
lblSum.Visible = true;
}
}
protected void btnhuy_Click(object sender, EventArgs e)
{
//tìm lại
btntimkiem.Enabled = true;
btntimkiem.Text = "Tìm";
txtms.Visible = false;
txthoten.Visible = false;
- 56 -
txts.Visible = false;
txtsdt.Visible = false;
txtsgiao.Visible = false;
txtnguoinhan.Visible = false;
txtghichu.Visible = false;
cldhangiao.Visible = false;
txtsdtnhan.Visible = false;
btnchapnhan.Visible = false;
btnhuydon.Visible = false;
- 57 -
lblmaddh.Text.Trim());
SqlDataSource_CTDDH.InsertParameters.Add("mss",
r["msS"].ToString().Trim());
SqlDataSource_CTDDH.InsertParameters.Add("sl", DbType.Int32,
r["sl"].ToString().Trim());
SqlDataSource_CTDDH.Insert();
}
this.Title = "Thêm DDH và CTDDH thành công";
}
catch(System.Exception ex)
{
this.Title = "Lỗi: " + ex.Message;
}
Session["cart"] = null;
lblthongtindon.Visible = false;
lblmadon.Visible = false;
lblmaddh.Visible = false;
lblngay.Visible = false;
lblngaylap.Visible = false;
lblsgiao.Visible = false;
lblnguoinhan.Visible = false;
lblhangiao.Visible = false;
lblghichu.Visible = false;
lblsdtnhan.Visible = false;
lblthongtinctdon.Visible = false;
lblSum.Visible = false;
txtsgiao.Visible = false;
txtnguoinhan.Visible = false;
- 58 -
txtghichu.Visible = false;
cldhangiao.Visible = false;
txtsdtnhan.Visible = false;
dgvgiohang.Visible = false;
btnchapnhan.Visible = false;
btnhuydon.Visible = false;
btntimkiem.Text = "Tìm";
btntimkiem.Enabled = true;
btnhuy.Enabled = true;
Session["cart"] = null;
}
}
- 59 -
Chương 5: THIẾT KẾ VÀ LẬP TRÌNH WEBAPP PHẦN QUẢN LÝ
5.1. Giới thiệu về WebApp quản lý hệ thống bán sách LHshop online
* Hệ thống này dành cho nhân viên của đơn vị kinh doanh sách thực hiện các chức năng cập
nhật thông về hàng hóa, dịch vụ kinh doanh sách online, như: bổ sung sản phẩm thể thao
mới, thay đổi giá bán, cập nhật chính sách khuyến mãi,…..
* Vì vậy, các chức năng quản lý này chỉ cho phép nhân viên của đơn vị kinh doanh thực
hiện nên cần phải thực hiện thủ tục đăng nhập thành công trước khi thực hiện các nghiệp vụ
quản lý và thực hiện các chức năng thêm xóa sửa thông tin của mỗi nghiê vụ quản lý.
[2] Thiết kế và lập trình chức năng đăng nhập dành cho nhân viên
PHÂN TÍCH:
* Từ trang HomePage, các nhân viên phải thực hiện đăng nhập thành công mới được truy
xuất trang "Quản lý".
* Vì các nhân viên có thể đăng nhập và thực hiện các chức năng quản lý liên quan từ bất kỳ
trang web nào trong hệ thống nên thiết kế và lập trình chức năng đăng nhập (Login) phải
được thực hiện trên mautrang.master.
* …phần quyền …
Sử dung lại Masterpage giao dịch Transaction.Master bằng cách thiết kế và lập
trình bổ sung thực đơn (Menu quản lý) như Hình trang 61
- 60 -
Hình 5.1: Thiết kế Menu chính trên MasterPage
.Orientation = Horizontal
. [Task]->Edit menu item || Properties: Item …: định nghĩa các mục chọn menu
Hình 5.2: Thiết lập thuộc tính cho mục chọn (Item) của Menu
- 61 -
}
Chú giải: Code trên chỉ là tượng trưng; trong mở rộng và phát triển sản phẩm đề tài
sẽ:
1. Tổ chức Username và Password: lưu trữ và kiểm tra từ một Table trong DB.
2. Xử lý bảo mật khi NSD nhớ (copy) Link url : như trình bày trong Chương 2: trang
25
5.3. Trang chính của hệ thống quản lý hệ thống bán sách LHshop
- 62 -
protected void btnQLCN_Click(object sender, EventArgs e)
{
Response.Redirect("~\\wfBranchManagements.aspx");
}
- 63 -
//gọi trang quản lý khu vực
protected void btnQLkvbh_Click(object sender, EventArgs e)
{
+ Dành cho nhân viên sau khi đăng nhập thành công và chọn chức năng quản lý sách từ
trang quản lý chung.
+ Liên quan 2 tables sau:
Hình 5.4: Các table liên quan đến trang quản lý danh mục sách
+ Chủ yếu: thực hiện các chức năng: Thêm _ Sửa _ Xóa sách trong các loại sách
+ Chuỗi kết nối DB: 1G112NguyenThiLanHuongBanSachConnectionString_onl
- 64 -
Hình 5.5: Thiết kế trang quản lý danh mục sách
- 65 -
. Câu lệnh SQL kết nối DataBase của dgvctdh:
SELECT * FROM [tb_chitietddh] WHERE ([mss] = @mss)
@mss = dgvQLS. SelectedValue
. Task->Edit Columns: HeaderText, DataField (Tự động gán cột dữ liệu tương ứng)
CheckBox cbxhienhinh: Cho người dùng chọn có/không hiển thị hình ảnh của
sách trong GridView (Mặc định “không” = vì tải hình ảnh sẽ làm chậm trang
web):
. Text = Hiển thị hình mẫu
. Checked = False (ban đầu “không” chọn)
Bổ sung mục chọn “Tất cả” trong DropDownList và hiển thị msloais cạnh bên
B1:Bổ sung Item mới=Dropdownlist[Task…]->Edit Item: Add [.Text = Tất cả, .Value = *]
B3: Viết bổ sung câu lệnh trong thủ tục sự kiện SelectedIndexChanged của
ddlLoaiS
Ngoài ra, copy codes trên bổ sung vào Page_Load để khi WebPage vừa được tải lên
đúng lúc trong Dropdownlist là “Tất cả” (vì nó là mục đầu tiên) thì GridView bên đưới sẽ
liệt kê tất cả các sách:
- 66 -
protected void Page_Load(object sender, EventArgs e)
{
…
ddlLoaiS_SelectedIndexChanged(sender, e);
}
Checkbox cho hiển thị / không hiển thị Hình ảnh của sách Trong GridView
B1: Chuyển đổi cột “Hình” GridView sang chế độ tự thiết kế: Template Field
B3: Codes thay đổi lựa chọn của CheckBox (.Auto Postback = True)
.PostBack = True khi chỉ cần 1 lựa chọn (DropDownList || CheckBox) là thực hiện tải lại DB
.PostBack = False khi chỉ cần Nhiều lựa chọn (DropDownList, CheckBox, . .) thì mới tải lại DB
5.4.3. Lập trình (Codes) khởi tạo trang quản lý danh mục sách: wfGoodsManagements.aspx
ddlLoaiS_SelectedIndexChanged(sender, e);
}
5.4.4. Lập trình (Codes) THÊM _ SỬA _ XÓA trang quản lý danh mục sách:
wfGoodsManagements.aspx
B1: Thiết kế nút lệnh [Thêm | Xóa | Sửa | Chọn] trên các dòng của Gridview
B2: Viết lệnh SQL thêm sách trrong SqlDataSource_DSS tương ứng
INSERT INTO tb_dsS(mss, tens, gia, dvt, mau, soluong, motas, ngayxhtrentt, hinh, msloais,
math)
- 68 -
VALUES (@mss, @tens, @gia, @dvt, @mau, @thongso, @motas, @ngayxhtrentt, @hinh,
@msloais, @math)
B3: Thiết kế các textbox cho phép người dùng thêm sách
Hình 5.8: Thiết kế textbox cho phép người dùng thêm sách
B4: Không cho phép “Thêm Mặt hàng mới” khi người dùng chọn “Tất cả” trong
DropDownList ddlLoaiS; Vì khi thêm mới, được hiểu là thêm mới vào “loại sách” đã
chọn trong ddlLoaiS.
B5: Viết mã lệnh (Codes) cho nút lênh “Thêm sách mới”
txtdvt.Visible = !txtdvt.Visible;
txtgia.Visible = !txtgia.Visible;
txtmau.Visible = !txtmau.Visible;
txtmota.Visible = !txtmota.Visible;
txtmsS.Visible = !txtmsS.Visible;
txttens.Visible = !txttens.Visible;
txtts.Visible = !txtts.Visible;
ddlthemthuonghieu.Visible = !ddlthemthuonghieu.Visible;
cldngayxh.Visible = !cldngayxh.Visible;
fuHinh.Visible = !fuHinh.Visible;
btnhuy.Visible = !btnhuy.Visible;
- 69 -
txtmsS.Text = "000"; txtmsS.ToolTip = "Không được để trống mã"
+" sách, không nhập mã đã tồn tại";
txttens.Text = "";
txtts.Text = "";
txtdvt.Visible = false;
txtgia.Visible = false;
txtmau.Visible = false;
txtmota.Visible = false;
txtmsS.Visible = false;
txttens.Visible = false;
txtts.Visible = false;
ddlthemthuonghieu.Visible = false;
cldngayxh.Visible = false;
fuHinh.Visible = false;
btnhuy.Visible = false;
//đổi nhãn
btnthem.Text = "Thêm sách mới";
}//btnhuy_Click
B2: Chỉnh sửa Edit Item Template cho mã thương hiệu (math), ngày sách được bày bán trên
thị trường (ngayxhtrentt) và Hình (hinh)
[GridView] Task -> EditItemTemplate ở cột “Mã thương hiệu” và thay thế TextBox thành 1
DropDownList với các thuộc tính DataSourceID: SqlDataSource_ThuongHieu,
DataTextField: tenthuonghieu và DataValueField: math
[GridView] Task -> EditItemTemplate ở cột “Ngày xuất hiện trên thị trường” và thay thế
TextBox thành một Calendar
- 71 -
Hình 5.10: EditItemTemplate ở cột “Ngày xuất hiện trên thị trường”
[GridView] Task -> EditItemTemplate ở cột “Hình” và thêm 1 button có thuộc tính
CommandName: chon, 1 FileUpLoad
B3:Viết lệnh SQL sửa (Update) sách trong SqlDataSource_DSS tương ứng
UPDATE tb_dsS SET tens = @tens, math = @math, mau = @mau, gia = @gia,
ngayxhtrentt = @ngayxhtrentt, thongso = @thongso, motas = @motas, hinh = @hinh, dvt =
@dvt
Hình 5.12: Tham số lệnh SQL sửa (Update) sách trong SqlDataSource_DSS
- 72 -
5.4.4.3. Xóa sách
B2: Viết lệnh SQL Xóa (Delete) sách trong SqlDataSource_DSS tương ứng
Hình 5.13: Tham số lệnh SQL xóa (Update) sách trong SqlDataSource_DSS
5.4.5. Lập trình (Codes) xử lý RBTV dữ liệu khi xóa danh mục sản phẩm sách:
wfGoodsManagements.aspx
Hình 5.14:. Trích DB liên quan xử lý RBTV dữ liệu khi xóa sách
- 73 -
+ Mặt hàng cần xóa đang còn tồn kho: xử lý “Thanh lý” = Xóa tồn kho của mặt hàng đó:
Xóa từng tồn kho hoặc xóa tất cả tồn kho của mặt hàng đó.
+ Mặt hàng cần xóa đang còn đơn đặt hàng chưa giải quyết (tb_chitietddh): xử lý đổi hàng
(Xóa chi tiết đơn đặt hàng đó và chọn mua mặt hàng khác tương đương) hoặc thuyết phục
khách hàng từ chối mua mặt hàng đó = Xóa chi tiết đơn đặt hàng: xóa từng chi tiết đơn
đặt hàng hoặc xóa tất cả chi tiết đơn đặt hàng của mặt hàng đó.
5.4.5.2. Thiết kế 2 GridView phụ ngay trên Form quản lý wfGoodsManagements.aspx
GridView dgvtonkho
. Caption = SÁCH ĐANG CHỌN CÒN TỒN TẠI CÁC CHI NHÁNH VỚI SỐ LƯỢNG
NHƯ SAU:
GridView dgvctdh
. Caption = SÁCH ĐANG CHỌN CÒN ĐẶT MUA TRÊN CÁC ĐƠN HÀNG SAU:
SqlDataSource_TONKHO
SqlDataSource_CTHD
- 74 -
5.4.5.3. Xử lý các RBTV trên 2 GridView phụ
* GridView dgvtonkho
Thanh lý[Delete]: Chính là câu lệnh Delete sách được viết trong
SqlDataSource_TONKHO
mschinhanh = dgvtonkho.SelectedValue[1]
* GridView dgvctdh
Khách hàng từ chối[Delete]: Chính là câu lệnh Delete sách được viết trong
SqlDataSource_CTHD
mss = dgvctdh.SelectedValue[2]
Đổi hàng[Update]:
GridViewCTDDH[Task]->Edit Columns…:
UPDATE tb_chitietddh
mss_new = dgvctdh.SelectedValue[2]
sl = dgvctdh.SelectedValue[3]
+ Dành cho nhân viên sau khi đăng nhập thành công và chọn chức năng quản lý sách từ
trang quản lý chung.
+ Liên quan table sau:
Hình 5.16: Các table liên quan đến trang quản lý loại sách
+ Chủ yếu: thực hiện các chức năng: Thêm _ Sửa _ Xóa loại sách
+ Chuỗi kết nối DB: 1G112NguyenThiLanHuongBanSachConnectionString_onl
5.5.3. Lập trình (Codes) khởi tạo trang quản lý loại sách: wfGroupManagements.aspx
5.5.4. Lập trình (Codes) THÊM _ SỬA _ XÓA trang quản lý loại sách:
wfGroupManagements.aspx
B1: Thiết kế nút lệnh [Thêm | Xóa | Sửa | Chọn] trên các dòng của Gridview
B2: Viết lệnh SQL thêm sách trrong SqlDataSource_LoaiS tương ứng
B3: Thiết kế các textbox cho phép người dùng thêm loại sách
Hình 5.19: Thiết kế các textbox cho phép người dùng thêm loại sách
B4: Viết mã lệnh (Codes) cho nút lênh “Thêm loại sách mới”
- 77 -
btnhuy.Visible = !btnhuy.Visible;
if (btnthem.Text.Trim() == "Thêm loại sách mới")
{
//xóa trống các textbox
txtmsloai.Text = "000"; txtmsloai.ToolTip = "Không được để trống" +
" mã loại, không nhập mã đã tồn tại";
txttenloai.Text = "";
txtmota.Text = "";
txtmsloai.Visible = false;
txttenloai.Visible = false;
txtmota.Visible = false;
btnhuy.Visible = false;
- 78 -
//đổi nhãn
btnthem.Text = "Thêm loại sách mới";
}
B2: Viết lệnh SQL sửa (Update) sách trong SqlDataSource_LoaiS tương ứng
UPDATE tb_loaiS
Hình 5.20: Các tham số lệnh SQL sửa sách trong SqlDataSource_LoaiS
B2: Viết lệnh SQL Xóa (Delete) sách trong SqlDataSource_LoaiS tương ứng
Hình 5.21: Các tham số lệnh SQL xóa sách trong SqlDataSource_LoaiS
- 79 -
5.5.5. Xử lý RBTV dữ liệu khi xóa loại sách: wfGroupManagements.aspx
Hình 5.22: Trích DB liên quan xử lý RBTV dữ liệu khi xóa loại MH
5.5.5.2. Xử lý RBTV
Ràng buộc toàn vẹn của trường hợp này sẽ được xử lý bằng trigger
tg_d_xoaloai_capnhat_loaiS được tạo trong hệ quản trị cơ sở dữ liệu SQL server,
xem chi tiết ở mục 3.5.3.
5.6. Trang quản lý thương hiệu sách: wfTrademarkManagements.aspx
+ Dành cho nhân viên sau khi đăng nhập thành công và chọn chức năng quản lý sách từ
trang quản lý chung.
+ Liên quan table sau:
Hình 5.23: Các table liên quan đến trang quản lý thương hiệu sách
+ Chủ yếu: thực hiện các chức năng: Thêm _ Sửa _ Xóa thương hiệu sách cầu lông
+ Chuỗi kết nối DB: 1G112NguyenThiLanHuongBanSachConnectionString_onl
- 80 -
5.6.2. Thiết kế (Design) trang quản lý thương hiệu cụ thể thao:
wfTrademarkManagements.aspx
5.6.3. Lập trình (Codes) khởi tạo trang quản lý thương hiệu sách:
wfTrademarkManagements.aspx
- 81 -
5.6.4. Lập trình (Codes) THÊM _ SỬA _ XÓA trang quản lý thương hiệu sách:
wfTrademarkManagements.aspx
B1: Thiết kế nút lệnh [Thêm | Xóa | Sửa | Chọn] trên các dòng của Gridview
B2: Viết lệnh SQL thêm sách trrong SqlDataSource_th tương ứng
B3: Thiết kế các textbox cho phép người dùng thêm thương hiệu sách
Hình 5.26: Thiết kế các textbox cho phép người dùng thêm thương hiệu sách
B4: Viết mã lệnh (Codes) cho nút lênh “Thêm thương hiệu mới”
btnhuy.Visible = !btnhuy.Visible;
if (btnthem.Text.Trim() == "Thêm thương hiệu mới")
{
//xóa trống các textbox
txtms.Text = "000"; txtms.ToolTip = "Không được để trống mã, " +
"không nhập mã đã tồn tại";
txtten.Text = "";
- 82 -
SqlDataSource_th.InsertParameters.Add("ten", txtten.Text.Trim());
btnhuy.Visible = false;
B2: Viết lệnh SQL sửa (Update) sách trong SqlDataSource_th tương ứng
UPDATE tb_thuonghieu
- 83 -
5.6.4.3. Xóa thương hiệu sách
B2: Viết lệnh SQL Xóa (Delete) sách trong SqlDataSource_th tương ứng
Hình 5.29: Trích DB liên quan xử lý RBTV dữ liệu khi xóa thương hiệu MH
- 84 -
5.6.5.2. Xử lý RBTV
Ràng buộc toàn vẹn của trường hợp này sẽ được xử lý bằng trigger
tg_d_xoath_capnhat_loaiS được tạo trong hệ quản trị cơ sở dữ liệu SQL server, xem
chi tiết ở mục 3.5.4.
+ Dành cho nhân viên sau khi đăng nhập thành công và chọn chức năng quản lý sách từ
trang quản lý chung.
+ Liên quan 3 tables sau:
Hình 5.30: Các table liên quan đến trang quản lý nhân viên tại LHshop
+ Chủ yếu: thực hiện các chức năng: Thêm _ Sửa _ Xóa nhân viên làm việc tại LHshop
+ Chuỗi kết nối DB: 1G112NguyenThiLanHuongBanSachConnectionString_onl
- 85 -
GridView dgvnvcpc: DataSourceID = SqlDataSource_nv_cpc
2 GridView phụ dgvdsddh có DataSourceID = SqlDataSource_DonHang và
dgv_ct có DataSourceID = SqlDataSource_ctDONDATHANG để thực hiện xử lý
ràng buộc toàn vẹn khi xóa nhân viên làm việc tại LHshop
Dùng DropDownList để chọn mã khu vực, mã chuyên môn và chọn nhân viên bàn
giao đơn đặt hàng khi xóa nhân viên
. DropDownList ddlmskv: DataSourceID = SqlDataSource_MSKV
Câu lệnh kết nối DB: SELECT * FROM [tb_khuvuc]
Các thiết lập thuộc tính :
+ v Enable Auto Postback
+ DataTextField = tenkv
+ DataValueField = mskv
. DropDownList ddlmscm: DataSourceID = SqlDataSource_CM
Câu lệnh kết nối DB: SELECT * FROM [tb_chuyenmon]
Các thiết lập thuộc tính :
+ v Enable Auto Postback
+ DataTextField = tencm
+ DataValueField = mscm
. DropDownList ddlmscm: DataSourceID = SqlDataSource_bangiao
Câu lệnh kết nối DB: SELECT * FROM [tb_nhanvien]
WHERE ([msnv] <> @msnv)
Các thiết lập thuộc tính :
+ v Enable Auto Postback
+ DataTextField = tennv
+ DataValueField = msnv
Dùng Button để thực hiện các thao tác tuyển hoặc hủy tuyển một nhân viên mới
. Câu lệnh SQL kết nối DataBase của dgvqlnv:
SELECT msnv, honv, tennv, sdt
FROM tb_nhanvien
- 86 -
WHERE (mskv = @mskv) AND (macm = @macm)
@mskv = ddlmskv.SelectedValue
@macm = ddlmath. SelectedValue
. Task->Edit Columns: HeaderText, DataField (Tự động gán cột dữ liệu tương ứng)
. Câu lệnh SQL kết nối DataBase của dgvnvcpc:
SELECT * FROM [tb_nhanvien]
WHERE ([macm] = @macm)
@macm = OO
. Task->Edit Columns: HeaderText, DataField (Tự động gán cột dữ liệu tương ứng)
. Câu lệnh SQL kết nối DataBase của dgvdsddh:
SELECT * FROM [tb_dondathang]
WHERE ([msnv] = @msnv)
@msnv = dgvqlnv.SelectedValue
. Task->Edit Columns: HeaderText, DataField (Tự động gán cột dữ liệu tương ứng)
. Câu lệnh SQL kết nối DataBase của dgv_ct:
SELECT * FROM [tb_chitietddh]
WHERE ([msddh] = @msddh)
@msddh = dgvdsddh.SelectedValue
. Task->Edit Columns: HeaderText, DataField (Tự động gán cột dữ liệu tương ứng)
Bổ sung mục chọn “Tất cả” trong DropDownList và hiển thị mskv và mscm
cạnh bên
B1:Bổ sung Item mới=Dropdownlist[Task…]->Edit Item: Add [.Text = Tất cả, .Value = *]
B3: Viết bổ sung câu lệnh trong thủ tục sự kiện SelectedIndexChanged của ddlmskv
và ddlmscm
Ngoài ra, copy codes trên bổ sung vào Page_Load để khi WebPage vừa được tải lên
đúng lúc trong Dropdownlist là “Tất cả” (vì nó là mục đầu tiên) thì GridView bên đưới sẽ
liệt kê tất cả nhân viên:
- 88 -
Viết mã lệnh (Codes) cho nút “Phân công chuyên môn:
5.7.3. Lập trình (Codes) khởi tạo trang quản lý nhân viên tại LHshop:
wfEmployeeManagements.aspx
5.7.4. Lập trình (Codes) THÊM _ SỬA _ XÓA trang quản lý nhân viên tại LHshop:
wfEmployeeManagements.aspx
B1: Thiết kế nút lệnh [Thêm | Xóa | Sửa | Chọn] trên các dòng của Gridview
B2: Viết lệnh SQL thêm sách trrong SqlDataSource_qlnv tương ứng
B3: Thiết kế các textbox cho phép người dùng thêm nhân viên
Hình 5.32: Thiết kế các textbox cho phép người dùng thêm nhân viên
B4: Viết mã lệnh (Codes) cho nút lênh “Tuyển nhân viên mới”
- 89 -
lblms.Visible = !lblms.Visible;
txtms.Visible = !txtms.Visible;
lblho.Visible = !lblho.Visible;
txtho.Visible = !txtho.Visible;
lblten.Visible = !lblten.Visible;
txtten.Visible = !txtten.Visible;
lblsdt.Visible = !lblsdt.Visible;
txtsdt.Visible = !txtsdt.Visible;
btnhuy.Visible = !btnhuy.Visible;
if (btnthem.Text.Trim() == "Tuyển nhân viên mới")
{
//xóa trống các textbox
txtms.Text = "000"; txtms.ToolTip = "Không được để trống mã loại, " +
" không nhập mã đã tồn tại";
txtho.Text = "";
txtten.Text = "";
txtsdt.Text = "";
txtms.Visible = false;
txtten.Visible = false;
txtho.Visible = false;
txtsdt.Visible = false;
btnhuy.Visible = false;
//đổi nhãn
btnthem.Text = "Tuyển nhân viên mới";
}
B2: Viết lệnh SQL sửa (Update) nhân viên trong SqlDataSource_qlnv tương ứng
UPDATE tb_nhanvien
Hình 5.33: Tham số lệnh SQL sửa nhân viên trong SqlDataSource_qlnv
B2: Viết lệnh SQL Xóa (Delete) sách trong SqlDataSource_qlnv tương ứng
- 91 -
Với các tham số
Hình 5.34: Tham số lệnh SQL Xóa (Delete) sách trong SqlDataSource_qlnv
B3: Code chuyển người phụ trách đơn đặt hàng ở dgvdsddh
5.7.5. Lập trình (Codes) xử lý RBTV dữ liệu khi xóa nhân viên tại LHshop:
wfEmployeeManagements.aspx
- 92 -
Hình 5.35:. Trích DB liên quan xử lý RBTV dữ liệu khi xóa nhân viên
Xử lý RBTV dữ liệu:
+ Mặt hàng cần xóa đang còn đơn đặt hàng chưa giải quyết (tb_chitietddh): xử lý đổi hàng
(Xóa chi tiết đơn đặt hàng đó và chọn mua mặt hàng khác tương đương) hoặc thuyết phục
khách hàng từ chối mua mặt hàng đó = Xóa chi tiết đơn đặt hàng: xóa từng chi tiết đơn
đặt hàng hoặc xóa tất cả chi tiết đơn đặt hàng của mặt hàng đó. Sau khi hủy các chi tiết,
hủy đơn.
5.7.5.2. Thiết kế 2 GridView phụ ngay trên Form quản lý wfGoodsManagements.aspx
- 93 -
Hình 5.36: Các Gridviews xử lý RBTV dữ liệu khi Xóa
GridView dgvdsddh
. Caption = DANH SÁCH ĐƠN HÀNG ĐƯỢC GIAO CHO NHÂN VIÊN ĐƯỢC
CHỌN TRONG DANH SÁCH TRÊN
GridView dgv_ct
SqlDataSource_DonHang
SqlDataSource_ctDONDATHANG
- 94 -
5.7.5.3. Xử lý các RBTV trên 2 GridView phụ
* GridView dgvtonkho
Hủy đơn[Delete]: Chính là câu lệnh Delete sách được viết trong SqlDataSource_
DonHang
* GridView dgvctdh
Xóa chi tiết đơn [Delete]: Chính là câu lệnh Delete sách được viết trong
SqlDataSource_ctDONDATHANG
mss = dgv_ct.SelectedValue[2]
5.8. Trang quản lý chi nhánh của cửa hàng bán sách LHshop: wfBranchManagements.aspx
5.8.1. Phân tích trang quản lý chi nhánh của cửa hàng bán sách LHshop
+ Dành cho nhân viên sau khi đăng nhập thành công và chọn chức năng quản lý sách từ
trang quản lý chung.
+ Liên quan table sau:
- 95 -
Hình 5.37: Các table liên quan đến trang quản lý chi nhánh của cửa hàng bán sách LHshop
+ Chủ yếu: thực hiện các chức năng: Thêm _ Sửa _ Xóa chi nhánh của cửa hàng bán sách
LHshop
+ Chuỗi kết nối DB: 1G112NguyenThiLanHuongBanSachConnectionString_onl
5.8.2. Thiết kế (Design) trang quản lý chi nhánh của cửa hàng bán sách LHshop:
wfBranchManagements.aspx
Hình 5.38: Thiết kế trang quản lý chi nhánh của cửa hàng bán sách LHshop
- 96 -
5.8.3. Lập trình (Codes) khởi tạo trang quản lý chi nhánh của cửa hàng bán sách LHshop:
wfBranchManagements.aspx
5.8.4. Lập trình (Codes) THÊM _ SỬA _ XÓA trang quản lý chi nhánh của cửa hàng bán
sách LHshop: wfBranchManagements.aspx
B1: Thiết kế nút lệnh [Thêm | Xóa | Sửa | Chọn] trên các dòng của Gridview
B2: Viết lệnh SQL thêm sách trrong SqlDataSource_QL_ChiNhanh tương ứng
B3: Thiết kế các textbox cho phép người dùng thêm thương hiệu sách
Hình 5.39: Thiết kế các textbox cho phép người dùng thêm thương hiệu sách
B4: Viết mã lệnh (Codes) cho nút lênh “Thêm chi nhánh mới”
btnhuy.Visible = !btnhuy.Visible;
if (btnthem.Text.Trim() == "Thêm chi nhánh mới")
{
//xóa trống các textbox
txtms.Text = "000"; txtms.ToolTip = "Không được để trống mã loại, " +
"không nhập mã đã tồn tại";
txttencn.Text = "";
txtdiachi.Text = "";
txthotline.Text = "";
txtms.Visible = false;
txttencn.Visible = false;
txtdiachi.Visible = false;
txthotline.Visible = false;
ddlmskv.Visible = false;
btnhuy.Visible = false;
//đổi nhãn
btnthem.Text = "Thêm chi nhánh mới";
}
B2: Viết lệnh SQL sửa (Update) sách trong SqlDataSource_QL_ChiNhanh tương ứng
UPDATE tb_chinhanh
B2: Viết lệnh SQL Xóa (Delete) sách trong SqlDataSource_QL_ChiNhanh tương ứng
- 99 -
Với các tham số
5.8.5. Xử lý RBTV dữ liệu khi xóa chi nhánh của cửa hàng bán sách LHshop:
wfBranchManagements.aspx
Hình 5.42: Trích DB liên quan xử lý RBTV dữ liệu khi xóa chi nhánh
5.8.5.2. Xử lý RBTV
Ràng buộc toàn vẹn của trường hợp này sẽ được xử lý bằng các chuyển tất cả từ kho ở chi
nhánh này sang kho của chi nhánh khác khi nháy vào nút chuyển hàng.
Code nút chuyển hàng:
protected void btnchuyen_Click(object sender, EventArgs e)
{
Response.Redirect("~\\wfChuyenKho.aspx");
- 100 -
}
5.9. Trang quản lý chuyên môn nhân viên của cửa hàng bán sách LHshop:
wfProfessionalManagement.aspx
5.9.1. Phân tích trang quản lý chuyên môn nhân viên của cửa hàng bán sách LHshop
+ Dành cho nhân viên sau khi đăng nhập thành công và chọn chức năng quản lý sách từ
trang quản lý chung.
+ Liên quan table sau:
Hình 5.43: Các table liên quan đến trang quản lý chuyên môn nhân viên của cửa hàng bán sách
LHshop
+ Chủ yếu: thực hiện các chức năng: Thêm _ Sửa _ Xóa chuyên môn của cửa hàng bán sách
LHshop
+ Chuỗi kết nối DB: 1G112NguyenThiLanHuongBanSachConnectionString_onl
5.9.2. Thiết kế (Design) trang quản lý chuyên môn nhân viên của cửa hàng bán sách
LHshop: wfProfessionalManagement.aspx
Hình 5.44: Thiết kế trang quản lý chuyên môn nhân viên của cửa hàng bán sách LHshop
- 101 -
5.9.3. Lập trình (Codes) khởi tạo trang quản lý chuyên môn nhân viên của cửa hàng bán
sách LHshop: wfProfessionalManagement.aspx
5.9.4. Lập trình (Codes) THÊM _ SỬA _ XÓA trang quản chuyên môn nhân viên của cửa
hàng bán sách LHshop: wfProfessionalManagement.aspx
B1: Thiết kế nút lệnh [Thêm | Xóa | Sửa | Chọn] trên các dòng của Gridview
B2: Viết lệnh SQL thêm sách trrong SqlDataSource_cm tương ứng
B3: Thiết kế các textbox cho phép người dùng thêm chuyên môn
Hình 5.45: Thiết kế các textbox cho phép người dùng thêm chuyên môn
B4: Viết mã lệnh (Codes) cho nút lênh “Thêm chuyên môn mới”
btnhuy.Visible = !btnhuy.Visible;
if (btnthem.Text.Trim() == "Thêm chuyên môn mới")
{
//xóa trống các textbox
- 102 -
txtms.Text = "000"; txtms.ToolTip = "Không được để trống mã loại, " +
" không nhập mã đã tồn tại";
txttencm.Text = "";
txtms.Visible = false;
txttencm.Visible = false;
btnhuy.Visible = false;
//đổi nhãn
btnthem.Text = "Thêm chuyên môn mới";
}
B2: Viết lệnh SQL sửa (Update) sách trong SqlDataSource_cm tương ứng
UPDATE tb_chuyenmon
- 103 -
SET tencm = @tencm
B2: Viết lệnh SQL Xóa (Delete) sách trong SqlDataSource_cm tương ứng
5.9.5. Xử lý RBTV dữ liệu khi chuyên môn nhân viên của cửa hàng bán sách LHshop:
wfProfessionalManagements.aspx
- 104 -
Hình 5.48: Trích DB liên quan xử lý RBTV dữ liệu khi xóa chuyên môn
5.9.5.2. Xử lý RBTV
Ràng buộc toàn vẹn của trường hợp này sẽ được xử lý bằng trigger
tg_d_xoacm_capnhat_nv được tạo trong hệ quản trị cơ sở dữ liệu SQL server.
5.10. Phân công: Phân công nhân viên phụ trách các đơn hàng chưa có người phụ trách
5.10.1.Phân tích trang phân công nhân viên phụ trách các đơn hàng chưa có người phụ trách
+ Dành cho nhân viên sau khi đăng nhập thành công và chọn chức năng quản lý sách từ
trang quản lý chung.
+ Liên quan table sau:
- 105 -
Hình 5.49: Các table liên quan đến trang phân công nhân viên phụ trách các đơn hàng chưa có người
phụ trách
+ Chủ yếu: thực hiện chức năng: phân công nhân viên phụ trách giao hàng cho các đơn đặt
hàng.
+ Chuỗi kết nối DB: 1G112NguyenThiLanHuongBanSachConnectionString_onl
- 106 -
5.10.2.Thiết kế (Design) trang phân công nhân viên phụ trách đơn đặt hàng:
wfPhanCong.aspx
Hình 5.50: Thiết kế trang phân công nhân viên phụ trách đơn đặt hàng
Dùng DropDownList để chọn khu vực và nhân viên phân công cho đơn hàng
. DropDownList ddlkv: DataSourceID = SqlDataSource_kv
Câu lệnh kết nối DB: SELECT * FROM [tb_khuvuc]
Các thiết lập thuộc tính :
+ v Enable Auto Postback
+ DataTextField = tenkv
+ DataValueField = mskv
. DropDownList ddlnv: DataSourceID = SqlDataSource_nv
- 107 -
Câu lệnh kết nối DB: SELECT * FROM [v_thongtin_nhanvien] WHERE
(([macm] = @macm) AND ([mskv] = @mskv))
Với cá tham số:
5.10.3.Lập trình (Codes) khởi tạo trang phân công nhân viên phụ trách đơn đặt hàng:
wfPhanCong.aspx
- 108 -
5.10.4.Lập trình (Codes) chức năng phân công: wfPhanCong.aspx
5.11. Phân công: Phân công chuyên môn cho nhân viên chưa được phân công
5.11.1.Phân tích trang phân công chuyên môn cho nhân viên chưa được phân công
+ Dành cho nhân viên sau khi đăng nhập thành công và chọn chức năng quản lý sách từ
trang quản lý chung.
+ Liên quan table sau:
Hình 5.52: Các table liên quan đến trang phân công chuyên môn cho nhân viên chưa được phân công
+ Chủ yếu: thực hiện chức năng: phân công chuyên môn cho các nhân viên mới chưa được
phân công công việc.
+ Chuỗi kết nối DB: 1G112NguyenThiLanHuongBanSachConnectionString_onl
- 109 -
5.11.2.Thiết kế (Design) trang phân công chuyên môn cho nhân viên chưa được phân công:
wfPhanCongChuyenMon.aspx
Hình 5.53: Thiết kế trang phân công chuyên môn cho nhân viên chưa được phân công
Dùng DropDownList để chọn chuyên môn phân công cho nhân viên
. DropDownList ddlcv: DataSourceID = SqlDataSource_cv
Câu lệnh kết nối DB: SELECT * FROM [tb_chuyenmon]
Các thiết lập thuộc tính :
+ v Enable Auto Postback
+ DataTextField = tencm
+ DataValueField = macm
GridView dùng để hiển thị các nhân viên chưa được phân công chuyên môn
. GridView dgvnvcpc: DataSourceID = SqlDataSource_nvcpc
Câu lệnh kết nối DB: SELECT * FROM [tb_nhanvien]
WHERE ([macm] = @macm)
- 110 -
Dùng Button để thực hiện thao tác chấp nhận phân công chuyên môn
5.11.3.Lập trình (Codes) khởi tạo trang phân công chuyên môn cho nhân viên chưa được
phân công: wfPhanCongChuyenMon.aspx
5.11.4.Lập trình (Codes) chức năng phân công chuyên môn cho nhân viên chưa được phân
công: wfPhanCongChuyenMon.aspx
5.12. Chuyển loại: Chuyển một sách từ loại sách này sang loại sách khác
+ Dành cho nhân viên sau khi đăng nhập thành công và chọn chức năng quản lý sách từ
trang quản lý chung.
+ Liên quan table sau:
Hình 5.55: Các table liên quan đến trang chuyển một sách từ loại sách này sang loại sách khác
+ Chủ yếu: thực hiện chức năng: chuyển một hoặc tất cả sách từ một loại này sang một loại
khác
+ Chuỗi kết nối DB: 1G112NguyenThiLanHuongBanSachConnectionString_onl
- 111 -
Dùng DropDownList để chọn loại sách cần chuyển và loại chuyển đến
. DropDownList ddlmaloaicu: DataSourceID = SqlDataSource_loaicu
Câu lệnh kết nối DB: SELECT * FROM [tb_loaiS]
Các thiết lập thuộc tính :
+ v Enable Auto Postback
+ DataTextField = tenloai
+ DataValueField = msS
. DropDownList ddlmaloaimoi: DataSourceID = SqlDataSource_loaimoi
Câu lệnh kết nối DB: SELECT * FROM [tb_loaiS]
Các thiết lập thuộc tính :
+ v Enable Auto Postback
+ DataTextField = tenloai
+ DataValueField = msloaiS
2 ListBox dùng để hiển thị các sách
. ListBox lbsloaicu: DataSourceID = SqlDataSource_s_loaicu
Câu lệnh kết nối DB: SELECT * FROM [tb_dsS]
WHERE ([msloais] = @msloais)
Với các tham số:
5.12.3.Lập trình (Codes) khởi tạo trang đổi loại sách: wfChangeGroupManagement.aspx
5.12.4.Lập trình (Codes) chức năng trang đổi loại sách: wfChangeGroupManagement.aspx
- 113 -
SqlDataSource_s_loaicu.Update();
lbsloaicu.DataBind();
lbsloaimoi.DataBind();
}
5.13. Chuyển thương hiệu: Chuyển một sách từ thương hiệu sách này sang thương hiệu sách
khác
+ Dành cho nhân viên sau khi đăng nhập thành công và chọn chức năng quản lý sách từ
trang quản lý chung.
+ Liên quan table sau:
Hình 5.58: Các table liên quan đến trang đổi thương hiệu sách
+ Chủ yếu: thực hiện chức năng: chuyển một hoặc tất cả sách từ một thương hiệu này sang
một thương hiệu khác
+ Chuỗi kết nối DB: 1G112NguyenThiLanHuongBanSachConnectionString_onl
Dùng DropDownList để chọn loại sách cần chuyển và loại chuyển đến
- 114 -
. DropDownList ddlmathcu: DataSourceID = SqlDataSource_ th_ cu
Câu lệnh kết nối DB: SELECT * FROM [tb_thuonghieu]
Các thiết lập thuộc tính :
+ v Enable Auto Postback
+ DataTextField = tenthuonghieu
+ DataValueField = math
. DropDownList ddlmathmoi: DataSourceID = SqlDataSource_ th_ moi
Câu lệnh kết nối DB: SELECT * FROM [tb_thuonghieu]
Các thiết lập thuộc tính :
+ v Enable Auto Postback
+ DataTextField = tenthuonghieu
+ DataValueField = math
2 ListBox dùng để hiển thị các sách
. ListBox lbsthcu: DataSourceID = SqlDataSource_s_thcu
Câu lệnh kết nối DB: SELECT * FROM [tb_dsS]
WHERE ([math] = @math)
Với các thuộc tính:
- 115 -
Hình 5.61: Tham số câu lệnh kết nối DB DataSourceID = SqlDataSource_s_ thmoi
5.13.3.Lập trình (Codes) khởi tạo trang đổi thương hiệu sách:
wfChangeTrademarkManagements.aspx
- 116 -
SqlDataSource_s_thcu.Update();
lbsthcu.DataBind();
lbsthmoi.DataBind();
}
- 117 -
Chương 6: TRIỂN KHAI PHÁT HÀNH WEBAPP
6.1. Giới thiệu về Host miễn phí somee
+ Các host web phải đảm bảo phù hợp với nền tảng công nghệ mà WebApp đang lập trình
phát triển sử dụng: Sản phản WebApp trong đề tài này là ASP.NET 4.6.1.
Vì vậy, Host Web được chọn để triển khai phát hành WebApp của đề tài này phải hỗ trợ
AS.NET 4.6.1.
+ Có nhiều Host Web miễn phí, trong đề tài này sử dụng Wfee Host Web: somee như Hình
www.somee.com
BƯỚC 1: Đăng ký tài khoản host somee & Đăng nhập vào host đó
- 118 -
First name: lh Last name: 1501
Email: lanhuonglh15@gmail.com
URL:
o http://LHShop112ntlhuong.somee.com
o http://www.LHShop112ntlhuong.somee.com
Profile:
First name: lh
FTP:
Addresses:
o ftp://LHShop112ntlhuong.somee.com/www.LHShop112ntlhuong.somee.com
o ftp://198.37.116.30/www.LHShop112ntlhuong.somee.com
Username: ntlhLTWeb
Thông tin địa chỉ vật lý lưu trữ Web trên Host
d:\DZHosts\LocalUser\ntlhLTWeb\www.LHShop112ntlhuong.somee.com
d:\DZHosts\LocalUser\ntlhLTWeb\Protected.LHShop112ntlhuong.somee.com
- 119 -
6.3. Restore BD lên host somee
BƯỚC 2: Tạo mới database trùng tên với DataBase của Web; Restore hoặc Attach
DB
Datebase name: 1G112NguyenThiLanHuongBanSach
THÔNG TIN KẾT NỐI DB
MS SQL Server version: MS SQL 2019 Express
MS SQL Server address: 1G112NguyenThiLanHuongBanSach.mssql.somee.com
Login name: vmhLTWeb_SQLLogin_1
Login password: otuhiaezww
Connection string: workstation
id=1G112NguyenThiLanHuongBanSach.mssql.somee.com;packet
size=4096;user id=vmhLTWeb_SQLLogin_1;pwd=otuhiaezww;data
source=1G112NguyenThiLanHuongBanSach.mssql.somee.com;persist
security info=False;initial
catalog=1G112NguyenThiLanHuongBanSach
BACKUP DB
Address:
ftp://5g2vominhhoangbanvot.backup.somee.com/5G2VoMinhHoangBanVot_MSSql_Database_Ba
ckup
Username: vmhLTWeb
Password: * Use the password wfom this control panel *
Hosting plan: MS SQL Plan "Novice"
Supplied package ID: SPID1076082
Managed product ID: MPID3928342
Data file: Size, Max/Used/Usage: 30MB / 8.00MB / 26.67%
Log file: Size, Max/Used/Usage: 30MB / 8.00MB / 26.67%
- 120 -
Backup file Manager => Restore
Browse for local backup (50MB max): chọn file .bak từ PC : LHshop.bak
chọn : Upload and Restore
6.4. Upload đăng tải Source WebApp lên host somee để phát hành
</system.webServer>
BƯỚC 5: Upload và đăng tải phát hành WebApp bán sách online trên somee
6.5. Giới thiệu sản phẩm WebApp quản lý bán sách online trên somee
- 121 -
Chương 7: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN CỦA ĐỒ ÁN
7.1. Kết luận
Vận dụng các cơ sở lý thuyết lập trình Web, thiết kết và lập trình được:
+ Phần giao dịch:
. MaeterPage dùng chung cho cả giao dịch và quản lý
. HomePage: Trưng bày sách tại LHshop
. Giỏ hàng : Lưu trữ các sách mà khách hàng muốn mua
. Một phần của trang đặt hàng (Order) : phần khách hàng
+ Phần Quản lý
. Quản lý chung bao gồm cả chức năng đăng nhập (Login) dùng Codes; trang này bao gồm
tất cả các chức năng quản lý, cho phép <nhân viên> chọn các chức năng quản lý cụ thể đến
các trang khác.
. Quản lý sách, nhân viên, các chi nhánh và tồn kho: Thêm, Xóa, Sửa và xử lý TBTV khi
xóa.
Do hạn chế thời gian, một sô chức năng sau chưa thực hiện hoặc thực hiện chưa đầy đủ:
+ Giao diện còn chưa được trực quan, chưa dễ dùng và chưa đảm bảo tính thẩm mĩ
+ Chưa thực hiện được nghiệp vụ xuất nhập kho
- 122 -
7.2.2. Hướng mở rộng ĐỒ ÁN HỌC PHẦN
+ Tiếp tục phát triển sản phẩm với các công nghệ mới, như: MVC, SP, . . .
+ Phát triển sản phẩm với nghiệp vụ thanh toán online
- 123 -
DANH MỤC TÀI LIỆU THAM KHẢO
[1]. Võ Xuân Thể (2021), Bài giảng học phần Lập trình Web (4 Tín chỉ), Trường Đại học
Tài chính – Marketing (lưu hành nội bộ).
[2]. https://shopLH.com/: Trang thông tin điện tử của cửa hàng sách chính hãng LHshop,
được sử dụng để tham khảo chuyên môn thực hiện đề tài này.
- 124 -
CÁC PHỤ LỤC
Mẫu trang web chủ được tham khảo để lập trình sản phẩm của đề tài này theo [2]:
- 125 -