Xây dựng website bán sách GVHD: Th.S. Võ Hoàng Phương Dung
LỜI MỞ ĐẦU
Trong những năm gần đây, công nghệ thông tin không ngừng phát triển một
cách mạnh mẽ và hiện đại. Sự ra đời của công nghệ thông tin làm phong phú bộ mặt
xã hội, đời sống con người được nâng cao rõ rệt, đóng góp to lớn cho sự phát triển của
nhân loại. Với xu thế toàn cầu hoá nền kinh tế thế giới, đặc biệt là nhu cầu trao đổi
hàng hoá của con người ngày càng tăng cả về số lượng và chất lượng, nhu cầu sử dụng
Internet ngày càng nhiều và các hình thức kinh doanh trên mạng ngày càng đa dạng và
phong phú rất được nhiều người sử dụng và ưa chuộng. Vì vậy, nhiều cửa hàng sách đã
áp dụng phương pháp bán hàng qua mạng để khách hàng dễ dàng tìm kiếm thông tin
mà không cần tốn nhiều thời gian và chi phí.
Cửa hàng sách TTV ra đời mang thông tin đến với mọi người với mục đích
chính là giúp khách hàng có thể đặt mua sách qua mạng một cách nhanh chóng, tiện
lợi và tiết kiệm chi phí. Khách hàng đến với chúng tôi có thể lựa chọn một kho báu
kiến thức khổng lồ bao gồm hàng ngàn cuốn sách từ sách giáo khoa cho đến sách khoa
học cơ bản như sách lịch sử, sách địa lý, sách thiên văn học, sách y học, sách ngoại
ngữ v.v. những cuốn sách bán chạy nhất hiện nay, sách được báo chí giới thiệu, sách
kinh tế, sách học làm người, sách danh nhân, sách tâm lý nghệ thuật sống.v.v.
Từ những vấn đề đặt ra ở trên, được sự đồng ý và sự hướng dẫn tận tình của cô
giáo Võ Hoàng Phương Dung, nhóm chúng em đã chọn đề tài: “web bán sách trực
tuyến”.
Chỉ trong thời gian ngắn học tập và rèn luyện tại trường CĐ công nghệ thông
tin hữu nghị Việt - Hàn. Em đã được các thầy cô trang bị các kiến thức cơ bản về môn
học, đề tài đã cơ bản hoàn thành, song vì thời gian và trình độ hiểu biết còn hạn hẹp
nên không thể tránh khỏi những thiếu sót. Vì vậy, em rất mong được sự giúp đỡ, đóng
góp của quý thầy cô để nội dung của đồ án được hoàn thiện hơn.
Em xin chân thành cảm ơn !
Đồ án lập trình web i
Xây dựng website bán sách GVHD: Th.S. Võ Hoàng Phương Dung
MỤC LỤC
LỜI MỞ ĐẦU i
Đồ án lập trình web ii
Xây dựng website bán sách GVHD: Th.S. Võ Hoàng Phương Dung
1.2.5.2.Câu lệnh Insert 12
1.2.5.3.Câu lệnh Update 12
1.2.5.4.Câu lệnh Delete 13
1.2.5.5.Câu lệnh Join 13
1.2.6.Các hàm trong MySQL 13
1.2.6.1.Các hàm phát biểu trong Group by 13
1.2.6.2.Các hàm về xử lý thời gian 14
1.2.6.3. Các hàm về xử lý số học 14
CHƯƠNG II. KHẢO SÁT VÀ PHÂN TÍCH HỆ THỐNG 15
2.1.QUY TRÌNH NGHIỆP VỤ 15
2.1.1.Quy trình bán hàng 15
2.1.2.Quy trình mua hàng 16
2.2.YÊU CẦU HỆ THỐNG 16
2.2.1.Yêu cầu hệ thống: 16
2.2.2.Yêu cầu chức năng: 16
2.2.2.1.Quản lý người dùng: 16
2.2.2.2.Chức năng quản lý sách: 17
2.2.2.3.Tìm kiếm: 17
2.2.3.Yêu cầu phi chức năng: 17
2.3.XÂY DỰNG BFD – BIỂU ĐỒ PHÂN RÃ CHỨC NĂNG 18
CHƯƠNG 3. PHÂN TÍCH VÀ THIẾT KÊ CƠ SỞ DỮ LIỆU 19
3.1. PHÂN TÍCH 19
3.1.1. Danh sách các bảng và quan hệ 19
3.1.2. Mô tả chi tiết các bảng 19
3.2. THIẾT KẾ CƠ SỞ DỮ LIỆU TRÊN PHPMYADMIN 20
CHƯƠNG 4. THIẾT KẾ GIAO DIỆN 22
4.1. GIAO DIỆN NGƯỜI DÙNG 22
4.1.1. Giao diện trang chủ (index.php) 22
DANH MỤC HÌNH
Hình 1.1: Quá trình thông dịch trong php 2
Hình 2.1: Quy trình bán hàng 15
Hình 2.2: Biểu đồ BFD – Phân rã chức năng 18
Hình 3.1: Bảng user trên phpMyAdmin 20
Hình 3.2: bảng danh mục trên phpMyAdmin 20
Hình 3.3: Bảng danh mục sách trên phpMyAdmin 21
Hình 4.1. Giao diện trang chủ 22
Hình 4.2: Giao diện trang giới thiệu 23
Hình 4.3: Giao diện trang sách mới 23
Hình 4.4: Giao diện trang liên hệ 24
Hình 4.5: Giao diện trang đăng ký 24
Hình 4.6: Giao diện trang đăng nhập 25
Hình 4.7: Giao diện trang đăng nhập của Admin 25
Hình 4.8: Giao diện trang xem thành viên 26
Hình 4.9: Giao diện trang chỉnh sửa người dùng 26
Hình 4.10: Giao diện trang xóa username 26
Hình 4.11: Giao diện trang thêm người dùng 27
Hình 4.12: Giao diện trang xem sách 27
Hình 4.13 : Giao diện trang sửa sách 28
Hình 4.14: Giao diện trang thêm sách 28
Hình 4.15: Giao diện trang thêm danh mục 29
Hình 4.16: Giao diện trang xem danh mục sách 29
Đồ án lập trình web vi
Xây dựng website bán sách GVHD: Th.S. Võ Hoàng Phương Dung
CHƯƠNG I. TỔNG QUAN VỀ PHP VÀ MYSQL
1.1. TỔNG QUAN VỀ PHP
i. Giới thiệu về ngôn ngữ kịch bản php
1.1.1.1. Php là gì?
Php được viết tắt của chữ Personal Home Page là ngôn ngữ script trên server
chính thức được công bố.
29/06/2003, phiên bản PHP 5 Beta 1 đã chính thức được công bố.
Tháng 10/2003, phiên bản Beta 2 ra mắt với sự xuất hiện của hai tính năng rất
được chờ đợi: Iterators, Reflection nhưng namespace một tính năng gây tranh cãi khác
đã bị loại khỏi mã nguồn.
Ngày 21/12/2003: phiên bản PHP 5 Beta 3 đã được công bố.
Ngày 13/07/2004, phiên bản PHP 5 bản chính thức đã ra mắt sau một chuỗi khá
dài các bản kiểm tra thử bao gồm Beta 4, RC 1, RC2, RC3.
Ngày 14/07/2005, phiên bản PHP 5.1 Beta 3 được PHP Team công bố đánh dấu
sự chín muồi mới của PHP với sự có mặt của PDO.
Hiện nay, phiên bản tiếp theo của PHP đang được phát triển, PHP 6 bản sử dụng
thử đã có thể được download tại địa chỉ http://snaps.php.net.
1.1.1.4. Quá trình thông dịch trang php
Php là kịch bản trình chủ được chạy trên nền php Engine, cùng với ứng dụng
Web Server để quản lý chúng.
Khi trang php được gọi, Web Server triệu gọi php Engine để thông dịch, dịch
trang php và trả về kết quả cho người sử dụng là một trang thuần HTML
Ta có mô hình như sau:
Hình 1.1: Quá trình thông dịch trong php
Đồ án lập trình web 2
Xây dựng website bán sách GVHD: Th.S. Võ Hoàng Phương Dung
1.1.1.5. Ưu điểm của Php:
Có nhiều lý do khiến cho việc sử dụng ngôn ngữ này chiếm ưu thế xin nêu ra
đây một số lý do cơ bản :
- Mã nguồn mở (open source code)
- Miễn phí, download dễ dàng từ Internet.
- Ngôn ngữ rất dễ học, dễ viết.
- Mã nguồn không phải sửa lại nhiều khi viết chạy cho các hệ điều hành từ
Windows, Linux, Unix
- Rất đơn giản trong việc kết nối với nhiều nguồn DBMS, ví dụ như:
- Đoạn mã php cũng có thể đặt trong cặp thẻ: <? Đoạn mã php ?>
iii. Các kiểu dữ liệu:
Php hỗ trợ 5 kiểu dữ liệu như sau:
• Integer: sử dụng cho giá trị có kiểu dữ liệu là số nguyên. Trên hầu hết các
hệ thống, kiểu số nguyên có kích thước 32 bit, mang giá trị từ -2147483647
cho đến 2147483648.
Ví dụ: <?php
$a = 1234;
$b = -123;
$c = 0123; //giá trị 123 ở hệ cơ số 8, tương đương với 83 ở hệ cơ số
10
$d = 0x1F; //giá trị 1F ở hệ cơ số 16, tương đương với 31 ở hệ cơ
số 10
?>
• Double (còn gọi là Float): Sử dụng cho giá trị có kiểu dữ liệu là số thực.
Trên hầu hết các hệ thống, kiểu số thực có kích thước 64 bit.
Ví dụ: <?php
$a = 1.234;
$b = 1.2e3; //= 1.2*10^3 = 1200
$c = 7E-10; //= 7*(10^-10) = 0.0000000007
$d = -1.23;
?>
Đồ án lập trình web 4
Xây dựng website bán sách GVHD: Th.S. Võ Hoàng Phương Dung
• String: Sử dụng cho các giá trị có kiểu dữ liệu là chuỗi và ký tự, mỗi ký tự
có kích thước là 1 byte. Nội dung string được đặt giữa 2 dấu nháy, nháy đơn
(') hoặc nháy kép (").
Ví dụ:
<?php
$a = 'Đây là 1 chuỗi được đặt giữa dấu nháy đơn';
tự ASCII có mã 65 chính là ký tự 'A').
\xhh: (với h là 1 chữ số từ 0 đến 9 hoặc 1 chữ cái từ A tời F) biểu thị 1 ký tự có
mã ASCII hh trong hệ cơ số 16.
Ví dụ:
\0x41 sẽ là ký tự 'A' (41 trong hệ cơ số 16 chính là 65 trong hệ cơ số 10).
Ngoài ra, nếu bạn để 1 biến vào giữa 1 chuỗi được bọc với dấu nháy kép, giá trị
của biến sẽ được thay thế vào trong chuỗi.
Ví dụ:
<?php
$a = 1;
$b = 2;
$c = 3;
$d = "$a $b $c";
//$d sẽ mang giá trị là chuỗi "1 2 3"
?>
• Array: Sử dụng cho các giá trị có kiểu dữ liệu là mảng. Mảng còn có thể
tạo được tạo thành bởi các cặp (khóa, giá trị).
Ví dụ:
<?php
$a = Array( "khoá 1" => "giá trị 1", "khoá 2" => "giá trị 2", "khoá 3"
=> "giá trị 3");
echo $a["khoá 1"]; //in ra: giá trị 1
$b = Array( "a" => "Đinh", "b" => "Công", "c" => "Trực");
echo $b["a"]; //in ra: Đinh
$b["a"] = "Đinh";
$b["b"] = "Công";
$b["c"] = "Trực"; //giờ đây $b = Array("a" => "Đinh", "b" =>
"Công", "c" => "Trực")
Đồ án lập trình web 6
Xây dựng website bán sách GVHD: Th.S. Võ Hoàng Phương Dung
Đồ án lập trình web 7
Xây dựng website bán sách GVHD: Th.S. Võ Hoàng Phương Dung
Toán tử Giải thích Ví dụ Kết quả
+
Cộng hai số
hạng
10+2 12
- Trừ hai số hạng 10-2 8
*
Nhân hai số
hạng
10*2 20
/ Chia hai số hạng 10/2 5
% Trả về số dư 10%2 0
3. Toán tử so sánh:
Là toán tử được sử dụng để thực hiện các phép toán so sánh giữa hai số hạng.
Chi tiết, xem bảng bên dưới.
Phép toán Tên Giải thích Ví dụ
== Bằng Hai số hạng bằng nhau $a==10
!= Không bằng Hai số hạng không bằng nhau $a!=10
=== Đồng nhất Hai số bằng nhau và cùng kiểu $a===10
> Lớn hơn Vế trái lớn hơn vế phải $a>10
>= Lớn hơn hoặc bằng Vế trái lớn hơn hoặc bằng vế phải $a>=10
< Nhỏ hơn Vế trái nhỏ hơn vế phải $a<10
<= Nhỏ hơn hoặc bằng Vế trái nhỏ hơn hoặc bằng vế phải $a<=10
4. Toán tử logic:
Toán tử logic là các tổ hợp các giá trị boolean.
Ví dụ: toán tử or trở về true nếu toán tử trái hoặc toán tử phải là true.
True || false.
Đồ án lập trình web 8
Một CSDL thường bao gồm một hoặc nhiều bảng (table). Mỗi bảng được xác
định thông qua một tên (ví dụ Customers hoặc Orders). Bảng chứa các mẩu tin - dòng
(record - row), là dữ liệu của bảng.
Đồ án lập trình web 9
Xây dựng website bán sách GVHD: Th.S. Võ Hoàng Phương Dung
MySQL là cơ sở dữ liệu tốc độ cao, ổn định và dễ sử dụng, có tính khả chuyển,
hoạt động trên nhiều hệ điều hành cung cấp một hệ thống lớn các hàm tiện ích rất
mạnh.
Với tốc độ và tính bảo mật cao, MySQL rất thích hợp cho các ứng dụng có truy
cập CSDL trên internet. MySQL server hoạt động trong các hệ thống nhúng hoặc
client/server.
1.2.3. Tạo cơ sở dữ liệu và người dùng:
1.2.3.1. Kết nối và tạo cơ sở dữ liệu:
Để kết nối cơ sở dữ liệu ta có thể thực hiện theo hai cách:
+ Kết nối và tạo CSDL bằng Command line.
+ Kết nối và tạo CSDL bằng giao diện đồ họa: MySQL Administrator hoặc
phpmyadmin.
1.2.3.2. Quản lý người dùng:
Để đăng nhập vào MySQL ta có thể sử dụng user là root và pass là rỗng.
Ngoài tài khoản này ta có thể tạo thêm các tài khoản cho người dùng với các
users và pass khác nhau.
1.2.3.2.1. Cấp quyền cho người dùng:
Với quyền root ta có thể thực hiện mọi thao tác trên CSDL: select, update,
insert, delete,…
Tuy nhiên, khi tạo quyền người dùng ta cũng có thể hạn chế bớt một số quyền
nhất định nào đó.
1.2.3.2.2. Xóa quyền hoặc xóa tài khoản người dùng:
Sau khi cấp quyền cho người dùng ta có thể thêm hoặc loại bỏ một số quyền
nào đó.
Với việc truy cập vào tài khoản root ta có thể xóa các tài khoản người dùng đã
trắng.
- Tinytext: là kiểu ký tự văn bản nhị phân. Có chiều dài tối đa 255.
- Text: có chiều dài 65.535 ký tự. Các chỉ mục có thể được tạo trên 255 ký
tự đầu của cột text
- Mediumtext: có chiều dài 16.777.215
- Longtext: có chiều dài >4 tỉ ký tự
- Enum, Set,…
1.2.5. Các câu lệnh SQL:
1.2.5.1. Câu lệnh SELECT
Đồ án lập trình web 11
Xây dựng website bán sách GVHD: Th.S. Võ Hoàng Phương Dung
Dùng để truy vấn dữ liệu từ một hay nhiều bảng khác nhau và trả về kết quả là
một tập mẫu tin thỏa mãn điều kiện nào đó
Cú pháp: SELECT <Danh sách các cột>
[FROM <danh sách các bảng>]
[WHERE <các điều kiện ràng buộc>]
[GROUP BY <tên cột/ biểu thức trong SELECT>]
[HAVING <đk bắt buộc của GROUP BY>]
[ORDER BY <danh sách cột>]
[LIMIT FromNumber | ToNumber]
Trong đó, danh sách các cột: Tên các cột, biểu thức kết hợp giữa các cột của
bảng.
Trường hợp truy vấn tất cả các cột của bảng ta sử dụng toán tử * thay vì chỉ ra
danh sách tất cả các cột.
Trường hợp, có các cột cùng tên ở các bảng khác nhau thì ta cần chỉ ra tên bảng
đi trước theo cú pháp: Tên_bảng.Tên_cột
1.2.5.2. Câu lệnh Insert
Được sử dụng khi cần thêm mẫu tin vào bảng trong CSDL MySQL.
Khi thêm dữ liệu, cần chú ý đến kiểu dữ liệu của các cột mình cần thêm dữ liệu.
Cần quan tâm đến quyền của User đăng nhập có được phép Insert hay không.
ta áp dụng cú pháp:
SELECT bảng 1.*, bảng 2.* [, bảng n.*] FROM bảng 1 INNER JOIN bảng 2
ON <điều kiện>…
Left Join: Dùng để kết hợp các bảng dữ liệu khi muốn trả về kết quả là những
mẫu tin của bảng bên trái tồn tại ứng với những mẫu tin ở bảng bên phải không tồn tại.
Cú pháp: SELECT [các cột] FROM <bảng trái> LEFT JOIN <bảng phải> ON
<điều kiện kết hợp> WHERE …. ODER BY …
Right Join: Dùng để kết hợp các bảng dữ liệu khi muốn trả về kết quả là những
mẫu tin của bảng bên phải tồn tại dù bảng bên trái không tồn tại
Cú pháp: SELECT [các cột] FROM <bảng trái> RIGHT JOIN <bảng phải> ON
<điều kiện kết hợp> WHERE …. ODER BY …
1.2.6. Các hàm trong MySQL
1.2.6.1. Các hàm phát biểu trong Group by
Hàm AVG: trả về giá trị bình quân của cột hay trường trong câu truy vấn
Hàm MIN: trả về giá trị nhỏ nhất của cột hay trường trong câu truy vấn
Hàm MAX: trả về giá trị lớn nhất của cột hay trường trong câu truy vấn
Đồ án lập trình web 13
Xây dựng website bán sách GVHD: Th.S. Võ Hoàng Phương Dung
Hàm SUM: trả về tổng các giá trị của cột hay trường trong câu truy vấn
1.2.6.2. Các hàm về xử lý thời gian
Hàm CurDate(): trả về ngày, tháng, năm hiện hành của hệ thống
Hàm CurTime(): trả về giờ, phút, giây hiện hành của hệ thống
Hàm Period_Diff(ngày đầu, ngày cuối): trả về số ngày trong khoảng thời gian
giữa ngày đầu và ngày cuối
Hàm dayofmonth: trả về ngày thứ mấy trong tháng
1.2.6.3. Các hàm về xử lý số học
Hàm sqrt: trả về căn bậc hai
Hàm round: làm tròn giá trị biểu thức
Đồ án lập trình web 14
Xây dựng website bán sách GVHD: Th.S. Võ Hoàng Phương Dung
2.2.3. Yêu cầu phi chức năng:
• Chi phí thực hiện 5 triệu.
• Có 02 ngôn ngữ là Tiếng Việt, Tiếng Anh.
• Đăng ký hệ thống quản lý lên Google.
• Lưu dự phòng dữ liệu cho hệ thống theo định kỳ ( 1 tuần 2 lần)
• Hoạt động ít nhất 1 năm.
• Thực hiện trong vòng 48H kể từ khi nhận được đầy đủ thông tin về logo,
hình ảnh, thông tin về công ty.
• Có hướng dẫn sử dụng và các video hướng dẫn trên hệ thống, hỗ trợ thêm
qua hệ thống điện thoại hoặc hỗ trợ trực tuyến.
Đồ án lập trình web 17
Xây dựng website bán sách GVHD: Th.S. Võ Hoàng Phương Dung
2.3. XÂY DỰNG BFD – BIỂU ĐỒ PHÂN RÃ CHỨC NĂNG
Hình 2.2: Biểu đồ BFD – Phân rã chức năng
Đồ án lập trình web 18
Xây dựng website bán sách GVHD: Th.S. Võ Hoàng Phương Dung
CHƯƠNG 3. PHÂN TÍCH VÀ THIẾT KÊ CƠ SỞ DỮ LIỆU
3.1. PHÂN TÍCH
3.1.1. Danh sách các bảng và quan hệ
Bảng 3.1: Danh sách các bảng và quan hệ
STT Tên Loại Ý nghĩa/ ghi chú
1 dmsach
Đối tượng
chính
Liệt kê các thông tin về loại sách gồm các trường id,
tensach, gioithieu, linkanh, dongia, noidung, id danh
mục.
2 danhmuc
Đối tượng
chính
Bảng 3.4: Mô tả chi tiết bảng danh mục sách
DMSACH
STT Thuộc tính Kiểu dữ liệu Mô tả
1 idsach Số Số thứ tự của sách, tự động tăng sau khi thêm sách.
2 Tensach Chuỗi Tên của cuốn sách.
3 Gioithieu Chuỗi Giới thiệu ngắn gọn về cuốn sách.
Đồ án lập trình web 19