TRƯỜNG ĐẠI HỌC TÀI CHÍNH – MARKETING KHOA CÔNG NGHỆ THÔNG TIN ĐỒ ÁN HỌC PHẦN TÊN HỌC PHẦN LẬP TRÌNH WEB (4 tín chỉ) MÃ SỐ LỚP HP 2111112005701 Tên đề tài Lập trình phát triển WebApp bán gia vị các loạ.
Trang 1TRƯỜNG ĐẠI HỌC TÀI CHÍNH – MARKETING
KHOA CÔNG NGHỆ THÔNG TIN
Trang 2TP.HCM, ngày 26 tháng 11 năm 2021
TRƯỜNG ĐẠI HỌC TÀI CHÍNH – MARKETING
KHOA CÔNG NGHỆ THÔNG TIN
ĐỀ TÀI ĐỒ ÁN HỌC PHẦNTÊN HỌC PHẦN: LẬP TRÌNH WEB (4 tín chỉ)
MÃ SỐ LỚP HP: 2111112005701
Tên đề tài: Lập trình phát triển Webapp bán các loại gia vị online
Giảng viên giảng dạy: ThS GVC Võ Xuân Thể Sinh viên thực hiện: Nguyễn Thu Hằng[05]
Mã số sinh viên: 1921006685 Lớp: 2111112005701 [G1]
Tên sản phẩm đề tài : G105NTHANG_DAHP_NhauOnline (.Net framework 4.6.1, Visual Studio 2017)
Phần quản lý có 2 Accounts: Admin với Password = admin@vn VÀ Guest với password = guest@vn
Tên DB SQL: 1G105NguyenThuHangGIAVIONLINE bak (MS SQL 2017)
Login name: G1GIAVIONLINE_SQLLogin_1
Login password: 3hsrur7sgn
Ngày……./…… /2021 Giảng viên Ký tên
Trang 3TP.HCM, ngày 26 tháng 11 năm 2021
LỜI CẢM ƠN
Trong lời đầu tiên của báo cáo đồ án tốt nghiệp “Lập trình phát triển Webapp bán các loại gia vị online” này, em muốn gửi những lời cám ơn và biết ơn chân thành nhất của mình tới tất cả những người đã hỗ trợ, giúp đỡ em về kiến thức và tinh thần trong quá trình thực hiện đồ án
Em xin chân thành cảm ơn sự giúp đỡ của ThS GVC Võ Xuân Thể, giảng viên khoa Công Nghệ Thông Tin, Trường Đại Học Tài Chính Marketing, người đã trực tiếp hướng dẫn, nhận xét, giúp đỡ em trong suốt quá trình thực hiện đồ án này
Xin chân thành cảm ơn các thầy cô trong khoa công nghệ thông tin và các phòng ban nhà trường đã tạo điều kiện tốt nhất cho em cũng như các bạn khác trong suốt thời gian học tập tại trường
Do thời gian thực hiện có hạn, kiến thức còn nhiều hạn chế nên đồ án này chắc chắn không tránh khỏi những thiếu sót nhất định Em rất mong nhận được ý kiến đóng góp của thầy cô giáo và các bạn để chính bản thân em có thêm kinh nghiệm và tiếp tục hoàn thiện hơn nữa đồ án của mình
Em xin chân thành cảm ơn!
Nguyễn Thu Hằng
Trang 4DANH MỤC CÁC TỪ VIẾT TẮT
CSDL hoặc DB Cơ sở dữ liệu: DataBase
HQTCSDL = DBMS Hệ quản trị Cơ sở dữ liệu
NSD = Users = Account
Người Sử Dụng = là quyền làm việc trên WebApp được đảmbảo bởi tối thiểu là 2 yếu tố: tên đăng nhập (Username) và mậtkhẩu (Password)
CAPTCHA
Completely Automated Public Turing test to tell Computers
and Humans Apart: phép kiển tra để đảm bảo người truy xuất
dịch vụ web có ý thức
Digital ID Digital Identification: Chữ ký số
e-Doc e-Document: Chứng từ điện tử
PC Personal Computer: Máy tính cá nhân
PIN Personal Identification Number: Mã số nhận diện cá nhânSQL Ngôn ngữ vấn tin có cấu trúc: Structured Query LanguageSSIS An toàn và bảo mật hệ thống thông tin: Safety and
Security of Information SystemsURL
Uniform Resource Locator = địa chỉ thống nhất trên mạngmáy tính, đặc biệt là Internet, cho phép định vị các tàinguyên dịch vụ ứng dụng, đặc biệt là trang điện tử đaphương tiện (Multimedia), ví dụ: địa chỉ web, …
VPN Virtual Private Network: mạng riêng ảo
VMWARE Virtual Machine Software: Phần mềm máy ảo
WebApp Web Application Software: phần mềm ứng dụng dạng
Web RAM Random Access Memory: bộ nhớ chính của máy tính và
các hệ thống điều khiển
Trang 5DANH 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ốnghoạt động theo yêu cầu của người dùng - tương ứng cácchức năng hiện có của phần mềm
Mạng xã hội: Social Network
= Social Media
1Mạng xã hội là dịch vụ dựa trên nền tảng công nghệ (Công
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ệtkhông gian và thời gian Thông thường các thành viên thamgia 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ộinhư công đồng dân cư thực tế, nhưng tất cả đều dựa trêntươ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ở chungnhau một số yếu tố nào đó, như: cùng sở thích, cùng nhómlàm việc, cùng cộng đồng xã hội, …
Người dùng (User):
Tài khoản (Account)
Là một quyền làm việc trên hệ thống được cấp phát cho một
cá nhân thông qua tên tài khoản (username) và mật khẩu(password)
Trực tuyến = Online Là các hoạt động được thực hiện từ xa thông qua các dịch
vụ trên Internet, đặc biệt là dịch vụ Web
Internet Mạng toàn cầu (International Network)
Host Web Là không gian lưu trữ và phát hành WebApp (Websites) trên
mạng máy tính, đặc biệt là mạng Internet
MỤC LỤC
1 Đây là khái niệm về “Mạng xã hội” [SN] theo Giảng viên học phần: Võ Xuân Thể
Trang 6KHOA CÔNG NGHỆ THÔNG TIN
PHIẾU GIAO NHIỆM VỤ ĐỒ ÁN HỌC PHẦN
Giảng viên: ThS GVC Võ Xuân Thể
Tên học phần: Lập trình web (4 tín chỉ); Mã lớp HP: 2111112005701
Tên đề tài: Lập trình phát triển WebApp gia vị các loại trực tuyến (online)
Sinh viên thực hiện: Nguyễn Thu Hằng, 1921006685
Thời gian thực hiện: 30/08/2021 đến 26/11/2021
Yêu cầu của ĐỒ ÁN HỌC PHẦN & Cơ cấu điểm
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 gia vị các loại trực tuyến (online), bao gồm 2 phần:
+ Giao dịch mua các loại gia vị
Main.Master: Mẫu trang giao dịch kiêm quản lý các mặt hàng gia vị được bày bán trangwebapp
homepage.aspx: Trang chủ, trưng bày các mẫu gia vị các loại;
giohang.aspx: Giỏ hàng các sản phẩm gia vị mà khách hàng đang chọn mua Đối tượng giảhàng là ở trên bộ nhớ trong (RAM);
dathang.aspx: Đặt mua các sản phẩm đã có trong giỏ hàng, tiến hành thanh toán;
+ Master Quản lý Main.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ý gia vị, các loại gia vị, nhân viên, kho hàng, tồn kho các chức năng: Thêm, Xóa, Sửa,RBTV;
Chuyển Nhóm gia vị các loại
+ Phát hành WebApp lên Host miễm phí: somee.com
SV Thực hiện
Trang 7Chươ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 các loại gia vị.trực tuyếntrên nền tảng công nghệ ASP.NET : phiên bản 4.6.1 với công cụ MS.Visual Studio.NET
2017, dùng ngôn ngữ lập trình C#.NET: G105NTHANG_DAHP_GIAVIONLINE
Hệ thống WebApp nêu trên được triển khai thực nghiệm trên Host Web củawww.somee.com với URL là:
http://giavionlinetoanquoc.somee.com/ hoặc http://www.giavionlinetoanquoc.somee.com/
Hệ thống CSDL dùng cho WebApp nên trên 1G105NguyenThuHangGIAVIONLINE bak (MS SQL 2017) được thiết kế và cập nhật trên MS SQL Server 2017 (trên somee là : MS
SQL 2019 Express)
1.2 Nội dung chuyên môn chính của ĐỒ ÁN HỌC PHẦN
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ốngWebsites bán các loại gia vị trực tuyến
1.3 Công cụ và nền tảng kỹ thuật thực hiện ĐỒ ÁN HỌC PHẦN
+ ASP.NET 4.6.1 trên MS Visual Studio NET 2017
+ Hệ quản trị CSDL MS SQL Server 2017 trên Local
+ Free Host Web: some.com
1.4 Sản phẩm của ĐỒ ÁN HỌC PHẦN
+ Hệ thống WebApp bán gia vị các loại trực tuyến (online) dạng Local trên PC:
G105NTHANG_DAHP_GIAVIONLINE
+ Hệ thống WebApp bán gia vị các loại trực tuyến (online) dạng Online trên somee:
http:// giavionlinetoanquoc.somee.com hoặc http://www.giavionlinetoanquoc.somee.com/
1.5 Bố cục của báo cáo
Báo cáo gồm những nội dung như sau:
Trang 8Chương 1 Giới thiệu đồ án của HP là Hệ thống WebApp bán gia vị các loại Online
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 HPChương 3 Thiết kế và cập nhật CSDL phục vụ WebApp bán gia vị các loại Online
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 các loại
Trang 9Chương 2: CƠ SỞ LÝ THUYẾT CỦA HỌC PHẦN
2.1 Giới thiệu về lập trình WebApp trên ASP.NET
ASP.NET là một nền tảng ứng dụng web (web application framework) đượ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 framework, là công nghệ nối tiếp của
Microsoft's Active Server Pages(ASP) SP.N T đượ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 1.1.2 Những ƣu điểm nổi bật của ASP.NET - ASP.Net cho phép bạn lựa chọn một trong các ngôn ngữ lập trình mà bạn yêu thích Visual Basic.Net, J#, #,… - Trang SP.Net được biên dịch trước Thay vì phải đọc và thông dịch mỗikhi trang web được yêu cầu, ASP.Net biên dịch những trang web động thành những tập tin DLL mà Server có thể thi hành nhanh chóng và hiệu quả Yếu tố này là một bước nhảy vọt đáng kể so với kỹ thuật thông dịch của ASP
Hình 2.1 ASP.NET trong Net Framework
Trang 10Các nguồn dữ liệu có thể là SQL Server, Oracle, MySQL, XML, ADO.NET bao gồm một tập hợp các lớp có thể được sử dụng để kết nối, truy xuất, chèn và xóa dữ liệu khỏinguồn dữ liệu ADO.NET chủ yếu sử dụng System.Data.dll và System.Xml.dll.
ADO.NET có thể được sử dụng để phát triển bất kỳ loại ứng dụng NET nào Sau đây
là một số ứng dụng NET mà bạn có thể sử dụng công nghệ truy cập dữ liệu ADO.NET để tương tác với nguồn dữ liệu
• ASP.NET Web Form Applications
• Windows Applications
• ASP.NET MVC Applications
Trang 11• Console Applications
• ASP.NET Web API Applications
Các thành phần (Components) của ADO.NET
Hình 2.3 Các thành phần ADO.NET
Các Compnents của ADO.NET được thiết kế để thao tác dữ liệu và truy cập nhanh vào dữ liệu Connecton, Command, DataReader, DataAdapter, DataSet và DataView là các Components của ADO.NET được sử dụng để thực hiện các hoạt động
cơ sở dữ liệu ADO.NET có hai thành phần chính được sử dụng để truy cập và thao tác
dữ liệu như sau:
• Data Provider
ADO.net chứa các không gian tên cho phép người dùng truy cập, thao tác với cơ
sở dữ liệu Với mỗi hệ quản trị cơ sở dữ liệu tương ứng có các lớp khác nhau
+ Data.OleDb: Access, SQL Server, Oracle
+ Data.SqlClient: SQL Server
Trang 12+ Data.OracleClient: OracleĐặc điểm:
Cả ba thư viện trên về giao tiếp lập trình là giống nhau Dùng thư viện SqlClient truy xuất SQL Server nhanh hơn OleDb
• DataSet
Là thành phần chính của kiến trúc không kết nối cơ sở dữ liệu, được dùng để nắm giữ
dữ liệu của mọi cơ sở dữ liệu và cho phép thay đổi dữ liệu bên trong đối tượng này để sau
đó cập nhật trở lại cơ sở dữ liệu nguồn bằng phương thức Update của đối tượng
DataAdapter
2.3 Master Page = Mẫu trang web
2.3.1 Căn bản về MASTER PAGE
2.3.1.1.Khái niệm Masterpage (mẫu trang web)
Trong một hệ thống website thường sẽ có nhiều trang con khác nhau, mỗi trang sẽ phụ trách một mảng nội dung nào đó, có thể kết cấu trang cũng có những điểm khác biệt nhất định nhưng tất cả sẽ được thiết kế theo một khuôn mẫu nào đó, và áp dụng chung cho tất cả các trang Khuôn mẫu này thường chúng ta sẽ gọi là Theme hay Template, còn trong
ASP.Net có khái niệm MasterPage MasterPage 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ừ MasterPage sẽ áp dụng lại giao diện mẫu của nó Trong một website của thể có 1 hoặc nhiều MasterPage.Trong MasterPage được chia thành 2 phần:
• Phần chung: Đây là giao diện chung áp dụng cho những trang con kế thừa từ nó
• Phần riêng: Đây là nơi chứa nội dung riêng của từng trang
Master pages cho phép tạo 1 bố cục nhất định nhất quán trên các trang web trong cùng
1 website
Nội dung thể hiện trên trình duyệt là sự kết hợp giữa trang master- master page và trang aspx (hoặc ascx) – content page
Trang 13Master page là tập tin có phần mở rộng master
Thao tác thiết kế: giống như trang aspx, nhưng phải bổ sung ít nhất một điều khiển ContentPlaceHolder
2.3.1.1.1 Ưu điểm
Trang chính cung cấp chức năng mà các nhà phát triển đã tạo ra theo truyền thống bằng cách sao chép nhiều lần mã, văn bản và phần tử điều khiển hiện có; sử dụng bộ khung;
sử dụng các tệp bao gồm cho các phần tử chung; sử dụng điều khiển người dùng ASP.NET;
và như thế Ưu điểm của trang chủ bao gồm những điều sau:
• Chúng cho phép bạn tập trung chức năng chung của các trang để bạn có thể cập nhật chỉ ở một nơi
• Chúng giúp bạn dễ dàng tạo một bộ điều khiển và mã và áp dụng kết quả cho một nhóm trang Ví dụ: bạn có thể sử dụng các điều khiển trên trang chính để tạo menu áp dụng cho tất cả các trang
• Chúng cung cấp cho bạn khả năng kiểm soát chi tiết đối với bố cục của trang cuối cùng bằng cách cho phép bạn kiểm soát cách các điều khiển trình giữ chỗ được hiển thị
• Họ cung cấp một mô hình đối tượng cho phép bạn tùy chỉnh trang chính từ các trang nội dung riêng lẻ
2.3.1.1.2 Số lượng Masterpage trong 1 Websites
2.3.1.1.3 Các thành phần trên Masterpage
1 Master Pages
Trang chính là tệp ASP.NET có phần mở rộng master (ví dụ: MySite.master) với bố cục được xác định trước có thể bao gồm văn bản tĩnh, phần tử HTML và điều khiển máy chủ Trang chính được xác định bằng lệnh @ Master đặc biệt thay thế lệnh @ Trang được sửdụng cho các trang aspx thông thường Chỉ thị trông giống như sau
<% @ Master Language ="C#" %>
Trang 14Chỉ thị @ Master có thể chứa hầu hết các chỉ thị giống như chỉ thị @ Control có thể chứa Ví dụ: chỉ thị trang chính sau đây bao gồm tên của tệp mã phía sau và gán tên lớp cho trang chính.
<% @ Master Language ="C#" AutoEventWireup ="true" CodeBehind ="main.master.cs"
Inherits ="_1G105NGUYENTHUHANGGIAVI.main" %>
Ngoài chỉ thị @ Master, trang chính cũng chứa tất cả các phần tử HTML cấp cao nhất cho một trang, chẳng hạn như html, head và form Ví dụ: trên trang chính, bạn có thể sử dụng bảng HTML cho bố cục, phần tử img cho biểu trưng công ty của bạn, văn bản tĩnh chothông báo bản quyền và các điều khiển máy chủ để tạo điều hướng tiêu chuẩn cho trang webcủa bạn Bạn có thể sử dụng bất kỳ HTML và bất kỳ phần tử ASP.NET nào như một phần của trang chính của bạn
2 Replaceable Content Placeholders
Ngoài văn bản tĩnh và các điều khiển sẽ xuất hiện trên tất cả các trang, trang chính cũng bao gồm một hoặc nhiều điều khiển ContentPlaceHolder Các điều khiển trình giữ chỗnày xác định các khu vực nơi nội dung có thể thay thế sẽ xuất hiện Đổi lại, nội dung có thể thay thế được xác định trong các trang nội dung Sau khi bạn đã xác định các điều khiển ContentPlaceHolder Content Pages
Bạn xác định nội dung cho các điều khiển trình giữ chỗ của trang chính bằng cách tạo các trang nội dung riêng lẻ, là các trang ASP.NET (tệp aspx và, tùy chọn, các tệp mã phía sau) được liên kết với một trang chính cụ thể Liên kết được thiết lập trong chỉ thị @ Page của trang nội dung bằng cách bao gồm thuộc tính MasterPageFile trỏ đến trang chính sẽ được sử dụng
3 Content Pages
Trong trang nội dung, bạn tạo nội dung bằng cách thêm các điều khiển Nội dung và ánh xạ chúng tới các điều khiển ContentPlaceHolder trên trang chính Ví dụ: trang chính có thể có các trình giữ chỗ nội dung được gọi là Chính và Chân trang Trong trang nội dung, bạn có thể tạo hai điều khiển Nội dung , một điều khiển được ánh xạ tới Chính điều khiển ContentPlaceHolder và điều khiển còn lại được ánh xạ tới Chân trang điều khiển
ContentPlaceHolder , như thể hiện trong hình sau
Trang 15Hình 2.4 Ánh xạ tới chân trang điều khiển
Sau khi tạo các điều khiển Nội dung , bạn thêm văn bản và các điều khiển vào chúng Trong một trang nội dung, bất kỳ thứ gì không nằm trong các điều khiển Nội dung (ngoại trừ các khối tập lệnh cho mã máy chủ) đều dẫn đến lỗi Bạn có thể thực hiện bất kỳ tác vụ nào trong một trang nội dung mà bạn thực hiện trong một trang ASP.NET Ví dụ: bạn có thể tạo nội dung cho Kiểm soát nội dung bằng cách sử dụng các điều khiển máy chủ và truy vấn
cơ sở dữ liệu hoặc các cơ chế động khác
Lệnh Page liên kết trang nội dung với một trang chính cụ thể và nó xác định tiêu đề cho trang sẽ được hợp nhất vào trang chính Lưu ý rằng trang nội dung không có đánh dấu nào khác ngoài các điều khiển Nội dung (Trang chính phải chứa phần tử head có thuộc tínhrunat = "server" để cài đặt tiêu đề có thể được hợp nhất tại thời điểm chạy.) Bạn có thể tạo nhiều trang chính để xác định các bố cục khác nhau cho các phần khác nhau của trang web
và một tập hợp các trang nội dung khác nhau cho mỗi trang chính
2.3.1.2.Các bước thực hiện
Bước 1: Tạo master page
Trang 16Hình 2.5 Tạo trang master trên Visual Studio
Trang m.master được sinh ra với mã ASP.NET mặc định như sau:
<% @ Master Language ="C#" AutoEventWireup ="true" CodeBehind ="m.master.cs"
Trang 172.3.1.3.Xây dựng Mẫu trang (Masterpage)
2.3.1.3.1 Thiết kế Masterpage
Trong bài này chúng ta thiết kế một master page có layout riêng của mình vì vậy bạn thay nội dung trang master trên thành:
2.3.1.3.2 VIẾT THỦ TỤC ẨN / HIỆN Login
Hàm khi page_load chạy thì sẽ ẩn đi công cụ login vào hệ thống:
protected void Page_Load(object sender, EventArgs e)
{
Loginql.Visible = false ; }
Hàm khi người dùng ấn trên thanh menu là đăng nhập thì sẽ hiện ra công cụ login ngay trên trang master:
protected void Menu4_MenuItemClick( object sender, MenuEventArgs e) {
if (e.Item.Value == "ql" || e.Item.Value == "dn" ) {
Loginql.Visible = true ; // hiện công cụ login }
else
{
Loginql.Visible = false ; }
}
2.4 Phát triển các chức năng GIAO DỊCH trên WebApp ASP.NET
2.4.1 Trưng bày sản phẩm (dịch vụ) trên DataList
Khi đã có CSDL (ở đây dùng SQL Sever) thì ta thực hiện đổ dữ liệu vào trong
Datalist Một số thuộc tính cần chú ý của DataList:
• RepeatDirection: Qui định hướng hiển thị dữ liệu trong đó: Horizontal: Hiển thị
dữ liệu theo chiều ngang, Vertical (mặc định): Hiển thị dữ liệu theo chiều đứng
• RepeatColumns: Qui định số cột hiển thị của DataList
Trang 182.4.2 Session và giỏ hàng
Đối tượng Session là biến được tạo ra ở mỗi phiên làm việc của một người dùng, vậy
là mỗi người đăng nhập vào sẽ có một session riêng và phiên làm việc của họ cũng có biến session riêng và được hủy khi phiên làm việc đó kết thúc và họ logout
Session là một trong những biến quan trọng nhất trong ứng dung 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
Ví dụ: WEB bán hàng khi khách hàng chọn hàng vào giỏ ở trang chủ, và sau đó khách tham quan các trang sản phẩm khác vẫn add được hàng vào giỏ hàng đó số lượng tăng lên…
và giỏ đó hủy khi bấm hủy giỏ hay thanh toán
Bạn lưu ý rằng cũng như Cookie khi một Session được tạo ra, một trạng thái session
có tên ASP.NET_SessionID được tự động thêm vào trình duyệt của bạn và Session này được lưu trữ trên web server và không lưu trữ trên webClient Và khi bạn tắt trình duyệt đi thì Session này của bạn vẫn tồn tại trong khoảng thời gian quy định, mà ASP.NET
Framework quy định thời gian mặc định của Session là 20 phút bạn có thể thiểt lập thời gian nhiều hơn
Hình 2.6 Clients- Session
Như đã nói Session là biến hoạt động trên Server nên tốn bộ nhớ, Khi không có tác động từ clien để duy trì sự tồn tại của biến Session thì Session vẫn tồn tại nên rất tồn cùng như server do đó tính tự hủy khi hết time sẽ hoạt động nhờ vào một phương thức người ta gọi đó làm phương thức Abandon
Trang 19• Biến Session
Khi vào một website, người dùng có thể duyệt rất nhiều trang web của website đó Nếu muốn lưu trữ thông tin về khách thăm này trong cả phiên làm việc thì có thể lưu vào các biến, gọi là biến Session Nói cách khác, biến session là một biến mà mọi trang trong một phiên (Session) đều có thể truy xuất
• Đối tượng Session
Là đối tượng dùng để quản lý (tạo, đọc, ghi) các biến sesstion và một số thông số khác
Thuộc tính & phương thức
Thuộc tính Timeout
Qui định khoảng thời gian (tính bằng phút) mà Web Server duy trì đối tượng Session nếu người dùng không gởi yêu cầu nào về lại Server Giá trị mặc định của thuộc tính này là
20 Nếu không có yêu cầu nào kể từ lần yêu cầu sau cùng một khoảng thời gian là
<Timeout> phút, đối tượng Session mà Web server cấp cho lần làm việc đó sẽ tự động được giải phóng Những yêu cầu sau đó được Web server coi như là một người dùng mới, và đương nhiên sẽ được cấp một đối tượng Session mới
Phương thức Abandon
Trong khoảng thời gian <Timeout> phút kể từ lần yêu cầu sau cùng của Client, đối tượng Session vẫn được duy trì dù cho không có sự tương tác nào của Client Điều này đồngnghĩa với việc Web server phải sử dụng một vùng nhớ để duy trì đối tượng Session trong một khoảng thời gian tương ứng
Phương thức Abandon của đối tượng Session sẽ giải phóng vùng nhớ được dùng để duy trì đối tượng Session trên Web Server ngay khi được gọi thực hiện Những yêu cầu sau
đó được Web server coi như là một người dùng mới
Trang 202.4.3 Đặt hàng và thanh toán
2.5 Phát triển các chức năng quản lý trên WebApp ASP.NET
2.5.1 Quản lý đăng nhập và bảo mật
2.5.2 Quản lý sản phẩm
2.5.3 Các chức năng thao tác dữ liệu: Thêm _ Sửa _ Xóa
2.6 Xử lý Ràng buộc toàn vẹn dữ liệu (RBTV) trên CSDL trong
2.7 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.10.Giới thiệu về lập trình WebApp trên PHP
Ngôn ngữ lập trình PHP là một ngôn ngữ thường dùng trong thiết kế web Khi bạn truy cập vào một trang bất kỳ, bạn có thể xác định xem trang đó có được viết bằng ngôn ngữPHP hay không thông qua đường link trên thanh địa chỉ của nó Nếu ở cuối link bạn thấy phần tử PHP nghĩa là web đó được lập trình, thiết kế dựa trên ngôn ngữ PHP
Trang 21Theo nghĩa chuyên môn, PHP (viết tắt của Personal Home Page) là một ngôn ngữ lập trình script (một nhánh của ngôn ngữ lập trình) hay một loại mã lệnh chủ yếu được dùng để phát triển các ứng dụng viết cho máy chủ, mã nguồn mở, dùng cho mục đích tổng quát.PHP, viết tắt của cụm từ Programing Hypertext Preprocessor, là một loại ngôn ngữ lập trình kịch bản (scripting language) mã nguồn mở được sử dụng phổ biến để tạo ra các ứng dụng web chạy trên máy chủ, hoặc để tạo ra các hệ thống back-end cho các website, phần mềm ứng dụng, app trên máy tính, điện thoại.
Được ra đời vào năm 1994 bởi Rasmus Lerdorf, cùng với hệ thống cơ sở dữ liệu Mysql, đến thời điểm hiện tại PHP đã được sử dụng rất nhiều cho các website, ứng dụng Theo nguồn thống kê chính thức từ Github, PHP là ngôn ngữ đứng hạng thứ 6 trong top 10 ngôn ngữ lập trình phổ biến nhất của năm 2020
Những đặc điểm và ưu điểm của thiết kế web bằng PHP
Ngôn ngữ lập trình PHP có thể được sử dụng trên nhiều hệ điều hành khác nhau bao gồm Windows, Mac OS và Linux (Ubuntu, Linux Mint…) Hiện nay, PHP đang là một trong những ngôn ngữ phổ biến hàng đầu được dùng trong lập trình web
1 Website được thiết kế bằng PHP ít mã code, dễ sử dụng
Do được tối ưu hóa cho các ứng dụng web, tốc độ nhanh, nhỏ gọn, cú pháp giống C vàJava, dễ học và thời gian xây dựng sản phẩm tương đối ngắn hơn so với các ngôn ngữ khác nên PHP đã nhanh chóng trở thành một ngôn ngữ lập trình (thiết kế) web phổ biến nhất thế giới Website được thiết kế bằng PHP có thời gian hoàn thiện rất nhanh vì nó sử dụng khá ít
mã code, có khả năng tùy chọn bộ nhớ khi xây dựng
2 Sự tương thích tuyệt vời của PHP với ngôn ngữ và trình duyệt web
PHP (Hypertext Preprocessor) là một ngôn ngữ lập trình mã nguồn mở dùng để phát triển các ứng dụng web Là một ngôn ngữ lập trình web phổ biến nhất hiện nay bởi sự đơn giản thân thiện và tương thích cao với mọi ngôn ngữ, trình duyệt web
Ngày nay có rất nhiều ngôn ngữ kịch bản được sử dụng trên thế giới như Net, Java, C++ … Tuy nhiên phần lớn các nhà phát triển sử dụng ngôn ngữ PHP làm nền tảng chính đểthiết kế web cho mình Các trang web sử dụng PHP rất thân thiện, bạn không cần phải lo
Trang 22lắng về vấn đề tương thích giữa các trình duyệt Ngôn ngữ PHP có khả năng tương thích rất cao với những trình duyệt phổ biến hiện nay như Fifefox, Chrome hoặc cả Cốc Cốc của ViệtNam.
3 Thiết kế web PHP nhanh chóng, giá thành rẻ
Ngôn ngữ PHP là một mã nguồn mở có tính năng động, có sự phát triển của rất nhiều người, các thiết kế web sử dụng PHP cũng dễ dàng hơn, tốn ít thời gian hơn hơn PHP sử dụng mã ít hơn, có khả năng tùy chọn bộ nhớ khi xây dựng, vì vậy kết quả việc thiết kế nhanh hơn PHP cũng có thể phát triển cấu trúc cao cấp cho các trang web phức tạp với kết quả tương tự như các ngôn ngữ khác Vì vậy, nếu đang băn khoăn về chi phí thiết kế phát triển web thì thiết kế web với PHP là một lựa chọn tối ưu
Một lợi thế rất lớn của ngôn ngữ mã nguồn mở PHP cung cấp là tính cộng đồng PHP được phát triển và tối ưu liên tục từ các nhà phát triển trên toàn thế giới khiến cho nó vô cùng thân thiện với mọi người và ngày càng hoàn thiện hơn Bạn có thể rút ngắn được rất nhiều thời gian phát triển thiết kế web và tối ưu hóa trang web cho mình thông qua việc thiết kế web với PHP
Điểm đặc biệt là tuy sử dụng rất ít câu lệnh nhưng PHP vẫn có khả năng thiết kế những cấu trúc phức tạp không kém gì các loại ngôn ngữ lập trình thông dụng nhất hiện nay
Do đó, nếu bạn không có nhiều kinh phí đầu tư website thì lựa chọn PHP sẽ giúp bạn tiết kiệm rất nhiều
4 Thiết kế web PHP rất thông dụng và là lựa chọn ưu việt cho người dùng
Tại Việt Nam, ngôn ngữ lập trình PHP là một trong những ngôn ngữ được sử dụng nhiều nhất khi thiết kế web Thiết kế web bằng PHP là lựa chọn ưu việt bởi sự đơn giản nhẹ nhàng và thân thiện của nó đối với các hệ thống máy chủ, trình duyệt Thời gian thiết kế nhanh chóng, chi phí rẻ khiến cho PHP trở thành sự lựa chọn tối ưu của các doanh nghiệp vừa và nhỏ trong việc thiết kế và phát triển web cho mình
5 Một website đơn giản hay phức tạp thông qua PHP có thể làm tất cả
Trang 23Với những ưu điểm trên, PHP đã nhanh chóng trở thành ngôn ngữ lập trình web được nhiều người sử dụng Với xu hướng ưa chuộng sự đơn giản và tiện lợi trong sử dụng web của nhiều khách hàng hiện nay, ngôn ngữ PHP nghiễm nhiên trở thành sự lựa chọn hàng đầucủa nhiều đơn vị thiết kế và lập trình web Với sự hỗ trợ của PHP, hiển thị của website trở nên đơn giản, dễ hiểu, dễ sử dụng nhưng vần đảm bảo tối ưu bảo mật.
Trang 24
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 webapp bán gia vị các loại online gồm 2 phần chức năng:
+ Bên giao dịch (bên mua): Cho phép khách hàng trực tuyến có thể chọn hàng từ trang homepage.aspx sử dụng cart Đây là cơ sở để lập ra đơn hàng: mỗi khách hàng có nhiều đơn hàng và mỗi đơn hàng chỉ thuộc về một khách hàng duy nhất Mỗi đơn hàng bao gồm nhiều gia vị các loại tùy theo nhu cầu của từng khách Khách khi đặt hàng đều có những thông tin cơ bản sau: mã khách hàng, họ tên khách, địa chỉ, số điện thoại và số điểm tích lũy (tích từ những lần mua hàng trước
để đạt được số điểm nhất định được giảm giá)
+ Bên quản lý (bên bán): Hệ thống bán gia vị trực tuyến gồm nhiều kho Mỗi kho cósức chứa và cất giữ một số các mặt hàng gia vị nhất định Mỗi kho đều có một mã
để phân biệt và có địa chỉ khác nhau Hệ thống kinh doanh đầy đủ các loại gia vị thiết yếu Mỗi loại đều có mã riêng và tên để phân biệt Mỗi loại gồm nhiều sản phẩm gia vị và mỗi gia vị chỉ thuộc về một loại mà thôi Mỗi mặt hàng gia vị đều
có mã riêng, tên, DVT, giá bán, ghi chú, hình ảnh sản phẩm Mỗi loại gia vị được quy định cất trữ ở một kho nhất định để đảm bảo chất lượng sản phẩm Các mặt hàng gia vị đều được trưng bày trên trang homepage.aspx Hệ thống quản lý nhân viên gồm có các thông tin cơ bản là mã (để phân biệt các nhân viên với nhau), tên nhân viên và số điện thoại Mỗi nhân viên nắm giữ một chức vụ Mỗi chức vụ gồm nhiều nhân viên quản lý và làm việc tại cơ sở các kho Mỗi chức vụ gồm mã chức vụ và tên chức vụ đó Mỗi đơn hàng là do một nhân viên phụ trách, một nhân viên được phụ trách được nhiều đơn hàng Các đơn đặt hàng đều có một mã riêng biệt, ngày lập đơn, thời hạn, tình trạng, và ghi chú Mỗi chi tiết đặt hàng có những thông tin của đơn đặt hàng là số lượng gia vị mà khách đặt
Trang 253.2.Diagram của DB bán các loại gia vị online
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 gia vị các loại như Error: Reference source not found
CTDH
MADH MAGV SOLUONG
DMCHUCVU
MACV TENCHUCVU
DMGIAVI
MAGV TENGV DVT GIA GHICHU HINHMAU MALOAIGV
DMLOAIGV
MALOAIGV TENLOAIGV MOTA MAKHO
Hình 3.7 Diagram của DB bán các loại gia vị online
3.3.Thiết kế các Tables dữ liệu
3.3.1. Thiết kế các Table DMKHO
Hình 3.8 Bảng DMKHO
Trang 263.3.2. Thiết kế các Table DMLOAIGV
Trang 273.3.6 Thiết kế các Table DMKHACHHANG
Trang 306 Nhập dữ liệu bảng DMKHACHHANG
Hình 3.22 Nhập dữ liệu bảng DMKHACHHANG
7 Nhập dữ liệu bảng TONKHO
Hình 3.23 Nhập dữ liệu bảng TONKHO
Trang 318 Nhập dữ liệu bảng DONDATHANG
Hình 3.24 Nhập dữ liệu bảng DONDATHANG
9 Nhập dữ liệu bảng CTDH
Hình 3.25 Nhập dữ liệu bảng CTDH
Trang 32Chương 4: THIẾT KẾ VÀ LẬP TRÌNH WEBAPP PHẦN GIAO DỊCH
4.1.Giới thiệu về WebApp gia vị các loại online
Đây là thành phần các WebFroms 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: 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…, Xóa…
Phần giao dịch của WebApp này bao gồm:
+ main.Master: là Master mẫu dùng chung cho các trang giao dịch và các trang quản lý củaChương 5: trang 51
+ homepage.aspx: là trang chủ, trưng bày các sản phẩm cho phép khách hàng thực hiệnchọn hàng bỏ vào “giỏ hàng” để đặt mua hàng
+giohang.aspx: cho phép khách hàng xem nội dung của “giỏ hàng” hiện có và thực hiệnmộ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”
+ dathang.aspx: cho phép khách hàng thực hiện việc đặt mua hàng khi ”giỏ hàng”khôngrổng (có hàng)
4.2.MasterPage giao dịch : main.Master
4.2.1. Thiết kế Masterpage giao dịch
THIẾT KẾ MASTERPAGE (Design View)
Trang 33Hình 4-2 Thiết kế giao diện Master page cho quản lý bán gia vị online
Trong thiết kế MasterPage như Error: Reference source not found bao gồm:
+ 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
+ Banner giới thiệu về cơ sở kinh doanh gia vị 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
+ Công cụ đăng nhập khi chọn vô Items trên menu là quản lý và đăng nhập
4.2.2. Lập trình (Codes) Masterpage giao dịch
MÃ LỆNH LẬP TRÌNH CỦA MASTERPAGE (Code View)
protected void Menu4_MenuItemClick( object sender, MenuEventArgs e) {
if (e.Item.Value == "ql" || e.Item.Value == "dn" ) {
Loginql.Visible = true ; // hiện công cụ login }
else
{
Loginql.Visible = false ; }
} // kiểm tra đăng nhập pp thủ công
Trang 34protected void Loginql_Authenticate( object sender, AuthenticateEventArgs e) {
if ((Loginql.UserName == "Admin" && Loginql.Password == "admin@vn" ) || (Loginql.UserName == "Guest" && Loginql.Password == "guest@vn" ))
{
e.Authenticated = true ; Session[ "name" ] = Loginql.UserName;
}
4.3.Trang chủ trưng bày các loại gia vị được bán: HomePage.aspx
4.3.1. Thiết kế (Design) WebApp giao dịch bán các loại gia vị online
* Hệ Websites hỗ trợ chức năng giao dịch bán trực tuyến các loại gia vị thừa kế Masterpage nên trên, gồm các thành phần như sau:
THIẾT KẾ TRANG CHỦ HomePage (Design View)
Hình 4-3 Thiết kế trang chủ Homepage (1)
Trang 35Hình 4-4 Thiết kế trang chủ Homepage (2)
Trong thiết kế trang chủ HomePage như Error: Reference source not found và 4.3 bao gồm:+ 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
+ Hình ảnh các loại gia vị và chương trình sale của cửa hàng
+ Label “ Danh Mục Sản Phẩm” font chữ X-Large màu đỏ nhằm thông tin đến khách hàng
đã bắt đầu tới danh mục các sản phẩm đang được bày bán
+ Lable [Labelkp] in nghiêng màu đỏ khi khách hàng bấm nút thêm vào button thêm của từng sản phẩm trong Datalist là lable đó sẽ hiện lên số sản phẩm hiện có trong giỏ hàng và tổng số tiền tạm thời phải thanh toán
+ Button “ Giỏ Hàng Của Bạn “ khi người dùng tích vào sẽ đưa đến trang giỏ hàng
giohang.aspx
+ Dùng DataList để trưng bày các loại gia vị cho phép khách hàng chọn mua trực tuyến4.3.2. Lập trình (Codes) WebApp giao dịch bán gia vị online:
homepage.aspx
MÃ LỆNH LẬP TRÌNH CỦA HOMEPAGE (Code View)
B1: Khai báo đường dẫn thư viện NameSpace
using System.Data;
B2: Khai báo biến toàn cục cart thuộc kiểu DataTable để lưu giữa “giỏ hàng”:
Trang 36static DataTable cart = new DataTable();
B3: Khởi tạo “giỏ hàng” trong Page_Load()
protected void Page_Load( object sender, EventArgs e)
cart.Rows.Clear();
cart.Columns.Clear();
// định nghĩa các cột dữ liệu quan trọng cart.Columns.Add( "MAGV" , typeof ( string ));
cart.Columns.Add( "TENGV" , typeof ( string ));
cart.Columns.Add( "DVT" , typeof ( string ));
cart.Columns.Add( "GIA" , typeof ( float ));
cart.Columns.Add( "sl" , typeof ( float ));
cart.Columns.Add( "tien" , typeof ( float ), "sl*GIA" );
} }
static DataTable cart = new DataTable();
protected void Page_Load( object sender, EventArgs e)
cart.Rows.Clear();
cart.Columns.Clear();
// định nghĩa các cột dữ liệu quan trọng cart.Columns.Add( "MAGV" , typeof ( string ));
cart.Columns.Add( "TENGV" , typeof ( string ));
cart.Columns.Add( "DVT" , typeof ( string ));
cart.Columns.Add( "GIA" , typeof ( float ));
Trang 37cart.Columns.Add( "sl" , typeof ( float ));
cart.Columns.Add( "tien" , typeof ( float ), "sl*GIA" );
} }
((Label)e.Item.FindControl( "MAGVLabel" )).Text.Trim();
string TENGV = ((Label)e.Item.FindControl( "TENGVLabel" )).Text;
string DVT = ((Label)e.Item.FindControl( "DVTLabel" )).Text;
float GIA =
float Parse(((Label)e.Item.FindControl( "GIALabel" )).Text.Trim());
float sl =
float Parse(((TextBox)e.Item.FindControl( "txtsl" )).Text.Trim());
foreach (DataRow r in cart.Rows) // dò lần lượt mh có trong giỏ
cart.Rows.Add(MAGV, TENGV, DVT, GIA, sl);
kt:
Session[ "cart" ] = cart;
Labelkp.Text = "Giỏ hàng hiện có " + cart.Compute( "Count(MAGV)" ,
"" ).ToString() + " mặt hàng Tổng tiền " + cart.Compute( "Sum(tien)" ,
"" ).ToString() + " VND" ; }
}
4.4.Trang “Giỏ hàng” của khách hàng mua gia vị trực tuyến:
giohang.aspx
4.4.1. Thiết kế (Design) WebPage “Giỏ hàng”
* Webpage “giỏ hàng” của webapp bán các loại gia vị trực tuyến thừa kế Masterpage nên trên, gồm các thành phần như sau:
Trang 38Hình 4-5 Thiết kế trang giỏ hàng
+ [Labeltitle]: dùng để thông báo đến khách hàng khi kiểm tra giỏ hàng nến rỗng sẽ hiển thị "Giỏ của bạn đang trống Hãy quay lại trang chủ mua sắm" ngược lại thì “Sản phẩmtrong giỏ của bạn”
+ GridViewcart: dùng để thống kê các mặt hàng đang có trong giỏ khách hàng gồm
mã, tên gia vị được chọn, giá và số lượng mua
+ [Labelsum]: hiển thị tổng số lượng các loại gia vị hiện có và tổng tiền phải trả
+ Button Đặt Mua khi khách muốn tiếp tục thanh toán, Button Hủy Hàng sẽ lập tức làm rỗng giỏ hàng và quay lại trang chủ, Button Button sẽ hiển thị khi giỏ hàng rỗng là
“Mua Sắm” ngược lại là “Mua tiếp”
4.4.2. Mã lệnh (Codes) WebPage “Giỏ hàng”
B1: Khai báo đường dẫn thư viện NameSpace
using System.Data;
B2: Khai báo biến toàn cục cart thuộc kiểu DataTable để lưu giữa “giỏ hàng”:
static DataTable cart = new DataTable();
B3: Kiểm tra “giỏ hàng” trong Page_Load() và hiện thông tin giỏ hàng
protected void Page_Load( object sender, EventArgs e)
{
if (Session[ "cart" ] == null ) {
Trang 39Labeltitle.Text = "Giỏ của bạn đang trống Hãy quay lại trang
chủ mua sắm" ; Bttmuatiep.Text = "Mua Sắm" ;
Labelsum.Text = "" ; GridViewcart.DataSource = null ; bttmua.Visible = false ;
btthuy.Visible = false ; }
Labelsum.Text = "Hiện giỏ bạn đang có " +
cart.Compute( "count(MAGV)" , "" ) + " mặt hàng Tổng tiền "
+ cart.Compute( "sum(tien)" , "" ).ToString(); bttmua.Visible = true ;
btthuy.Visible = true ; }
}
B4: Code các Button tiếp tục đặt, hủy hàng
protected void btthuy_Click( object sender, EventArgs e)
Full code trang giohang
static DataTable cart = new DataTable();
protected void Page_Load( object sender, EventArgs e) {
if (Session[ "cart" ] == null ) {
Labeltitle.Text = "Giỏ của bạn đang trống Hãy quay lại trang chủ mua sắm" ;
Bttmuatiep.Text = "Mua Sắm" ; Labelsum.Text = "" ;
GridViewcart.DataSource = null ;
Trang 40bttmua.Visible = false ; btthuy.Visible = false ; }