Tải bản đầy đủ (.docx) (51 trang)

Thực tập chuyên ngành: Phân tích thiết kế và xây dựng website giới thiệu sản phẩm cho shop thời trang Daisy

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.62 MB, 51 trang )

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG
KHOA CÔNG NGHỆ THÔNG TIN

BÁO CÁO
THỰC TẬP CHUYÊN NGÀNH

ĐỀ TÀI: PHÂN TÍCH THIẾT KẾ VÀ XÂY DỰNG WEBSITE GIỚI
THIỆU SẢN PHẨM CHO SHOP THỜI TRANG DAISY

Sinh viên thực hiện: Nguyễn Hoàng Anh
Lớp ĐHLT - CNTT- K16D
Giáo viên hướng dẫn:Ths. Quách Xuân Trưởng

1

1


Hà Nội, Ngày 15 Tháng 4 Năm 2019
LỜI CẢM ƠN
Trước tiên em xin gửi lời cám ơn chân thành sâu sắc tới các thầy cô giáo
trong trường Đại học Công Nghệ Thơng Tin & Truyền Thơng nói chung và các thầy cô
giáo trong khoa Công Nghệ Thông Tin, bộ môn Kỹ Thuật Phần Mềm nói riêng đã tận
tình giảng dạy, truyền đạt cho em những kiến thức, kinh nghiệm quý báu trong suốt
thời gian qua.
Đặc biệt em xin gửi lời cảm ơn đến thầy Quách Xuân Trưởng, thầy đã tận tình
giúp đỡ, trực tiếp chỉ bảo, hướng dẫn em trong suốt quá trình làm đề tài. Trong thời
gian làm việc với thầy, em không ngừng tiếp thu thêm nhiều kiến thức bổ ích mà cịn
học tập được tinh thần làm việc, thái độ nghiên cứu khoa học nghiêm túc, hiệu quả,
đây là những điều rất cần thiết cho em trong q trình học tập và cơng tác sau này.
Sau cùng xin gửi lời cảm ơn chân thành tới gia đình, bạn bè đã động viên, đóng


góp ý kiến và giúp đỡ trong q trình học tâp, nghiên cứu và hồn thành đề tài thực tập
của mình.
Hà Nội, ngày 15 tháng 4 năm 2019
Người viết

Nguyễn Hoàng Anh

2

2


MỤC LỤC

3

3


LỜI NĨI ĐẦU
Với sự phát triển mạnh mẽ của cơng nghệ thông tin và sự lớn mạnh, rộng khắp
của mạng máy tính tồn cầu. Việc ứng dụng tin học vào các lĩnh vực của cuộc sống
ngày càng được quan tâm và sử dụng hiệu quả, đem lại lợi ích to lớn về mọimặt. Sự
lớn mạnh của mạng máy tính đã xóa bỏ mọi gianh giới về khơng gian và thời gian để
đem con người và tri thức xích lại gần nhau hơn. Thơng qua mạng máy tính, con người
có thể được tiếp xúc với mọi loại tri thức như tri thức văn hóa, xã hội, khoa học kỹ
thuật. Do vậy ngày càng có nhiều ứng dụng được viết để hỗ trợ công việc thủ công của
con người, đặc biệt là các ứng dụng quản lý như quản lý nhân sự, quản lý hàng hóa,
quản lý điểm. Trước kia khi mạng Internet cịn chưa phổ biến thì các ứng dụng thường
được viết trên máy Desktop, ngày nay Internet khơng cịn xa lạ với bất cứ ai do vậy

các ứng dụng cũng có xu thế phát triển dần trên nền Web.Trong đề tài “Phân tích thiết
kế và xây dựng website giới thiệu sản phẩm cho shop thời trang Daisy” này tơi xin
trình bày về một ngơn ngữ lập trình web hiện đang được sử dụng phổ biến đó là ngơn
ngữ PHP. Trong q trình phân tích và cài đặt ứng dụng khơng thể khơng tránh khỏi
những thiếu sót, rất mong sự giúp đỡ tận tình của các thầy cơ trong Bộ mơn và bạn bè
đồng nghiệp.

4

4


CHƯƠNG I: CƠ SỞ LÝ THUYẾT
1.1 HTML (HyperText Markup Language)
HyperText Markup Language (HTML) là hàng loạt các đoạn mã chuẩn với các
quy ước được thiết kế để tạo ra trang web, giúp tạo và chia sẻ các tài liệu điện tử tích
hợp đa phương tiện qua Internet và được hiển thị bởi những trình duyệt Web.HTML là
nền tảng của World Wide Web, một dịch vụ toàn cầu của Internet. Weblà dịch vụ mang
tính đồ hoạ cao trong các dịch vụ Internet, cho phép người dùng có thể tự tạo cho riêng
họ những trang Web. HTML cho phép áp dụng siêu liên kết chotài liệu và trình bày tài
liệu với phơng chữ, hình ảnh, kiểu gióng hàng phù hợp vớihệ thống hiển thị văn bản.
HTML khơng phải ngơn ngữ lập trình. Thay vào đó, tạo các trang Web
thường nói đến như là “authoring” (sáng tác) và đơn giản hơn nhiều so với việc tạo ra
các ứng dụng trên máy tính.Có nhiều trình soạn thảo HTML và Web khác nhau như:
NotePad, InternetExplorer, Microsoft FrontPage hay Netscape Navigator có cơng cụ
soạn thảo đơngiản cho phép tạo và hiệu chỉnh tập tin HTML.
Cấu trúc của HTML rất đơn giản và logic, với bố cục từ trên xuống dưới, từ trái
qua phải, với 2 phần chính là HEAD và BODY. Các website viết bằng HTML đều
tuân theo cấu trúc cơ bản như sau:
+ Mọi trang HTML đều phải khai báo DOCTYPE (định nghĩa chuẩn văn bản)

ngay từ dịng đầu tiên.
+ Thẻ <html> cho trình duyệt biết mở đầu và kết thúc của trang HTML.
+ Thẻ <head> chứa tiêu đề và các thông tin khai báo, các thông tin ẩn khác.
+ Thẻ <body> sẽ hiển thị nội dung của trang web. Đây là phần thông tin mà
người dùng sẽ nhìn thấy khi trình duyệt đọc các mã HTML.
+ Mọi kí tự nằm giữa dấu <!– và –> sẽ được xem là thẻ comment và sẽ bị trình
duyệt bỏ qua, khơng xử lý và khơng hiển thị.
Ví dụ:
<html>
<head>
<title>Đây là thẻ đánh dấu tiêu đề trang web</title>
<!-- Comment: Các thông tin khai báo, các thông tin ẩn -->
</head>
5

5


<body>
<!-- Comment: Nội dung trang web mà người dùng sẽ thấy -->
<b>Đây là dòng chữ in đậm</b>
<i>Đây là dòng chữ in nghiêng</i>
</body>
</html>
1.2 CSS (Cascading Style Sheets)
CSS là viết tắt của cụm từ "Cascading Style Sheet", nó là một ngơn ngữ quy
định cách trình bày của các thẻ html trên trang web. Là ngôn ngữ đang được sử dụng
rất nhiều trong lập trình web, có thể nói CSS ra đời đã tạo nên một cuộc cách mạng.
Đôi khi các bạn sẽ bối rối khi nhận thấy rằng các đoạn code mình viết hiển thị khơng
giống nhau trên các trình duyệt khác nhau, CSS sẽ giúp các bạn giải quyết bài toán

này.CSS quy định cách hiển thị nội dung của các thẻ HTML trên các trình duyệt gần
như giống nhau,bằng cách quy định các thuộc tính cho thẻ HTML đó.
1.2.1 Tại sao phải sử dụng CSS
- CSS cung cấp cho bạn hàng trăm thuộc tính trình bày dành cho các đối tượng
với sự sáng tạo cao trong kết hợp các thuộc tính giúp mang lại hiệu quả. Ngoài ra, hiện
tại CSS đã được hỗ trợ bởi tất cả các trình duyệt, nên bạn hồn tồn có thể tự tin trang
web của mình có thể hiển thị hầu như (như nhau) dù trên một hệ thống sử dụng
Windows, Linux hay trên một máy Mac miễn là bạn đang sử dụng một phiên bản trình
duyệt mới nhất.
- CSS đưa ra phương thức “ngoại tuyến” giúp áp dụng một khuôn mẫu chuẩn từ
một file CSS ở ngồi. Nó thật sự có hiệu quả đồng bộ khi bạn tạo một website có hàng
trăm trang hay cả khi bạn muốn thay đổi một thuộc tính trình bày nào đó.
- Sử dụng CSS làm thay đổi font chữ hay màu chữ cho một thành phần nào đó
- Ngồi ra, CSS còn cho phép bạn áp đặt những kiểu trình bày thích hợp hơn cho
các phương tiện khác nhau như màn hình máy tính, máy in, điện thoại,…
1.2.2 Cách chèn CSS vào trang HTML
Cách 1: Chèn nội dung CSS vào trong cặp thẻ <style></style> trong phần
<head></head> của trang web:
Ví dụ:
<html>
6

6


<head>
<title>Chen CSS-Cách 1</title>
<style type="text/css">
//Nội dung CSS đặt bên trong đây
</style>

</head>
<body>
</body>
</html>
Cách 2: Chèn trực tiếp vào bên trong thẻ HTML
- Chèn trực tiếp CSS vào bên trong các thẻ mở của HTML.
- Nếu có nhiều thuộc tính cần quy định, ta ngăn cách giữa chúng bằng khoảng
trắng.
Ví dụ: Ở đây ta chèn CSS vào thẻ mở của cặp thẻ

.
<html>
<head>
<title>Chen CSS-Cách 2</title>
</head>
<body>



</body>
</html>

7

7


Cách 3: Liên kết với một file *.css bên ngoài
- Đây là cách được dùng nhiều nhất trong sử dụng CSS vì tính tiện dụng và linh
hoạt của nó. Giả sử, bạn có một website gồm hàng trăm trang, khi bạn muốn thay đổi
một chút cách trình này của website, thay vì gạch cạch đi gõ từng trang một, bạn chỉ
cần sửa file CSS bên ngoài một chút, hàng trăm trang web của bạn đều được thay đổi.
- Cú pháp: Thực hiện liên kết bằng thẻ <link>( Khơng có tag đóng ), theo cú

pháp sau:
<link rel="stylesheet" href="Đường dẫn đên file .css" type="text/css" />
Tag này được đặt trong cặp tag <head></head> của trang web, và không cần đặt
trong tag <style></style>
- Nếu bạn đặt file *.css cùng thư mục với trang web, thì trong thuộc tính href
bạn chỉ cần viết: href="- Nếu file *.css không cùng thư mục với trang web: Bạn cần chỉ trong đường
dẫn tuyệt đối tới file *.css đó trong thuộc tính href
Ví dụ:
<html>
<head>
<link rel="stylesheet" href="style.css" type="text/css" />
</head>
<body>
</body>
</html>
1.2.3 Một số thuộc tính thường dùng trong css
Thuộc tính
background
border

8

Ví dụ

Mơ tả

background:

Định dạng nền (background) cho thành


#ff0000;

phần.

border: 1px solid

Định dạng đường viền cho thành phần.

#ff0000;

border-

border-collapse:

Thuộc tính border-collapse xác định đường

collapse

collapse;

viền củatable có tách biệt ra hay không.

border-

border-spacing:

Xác định khoảng cách giữa các đường viền

spacing


10px;

của các cột lân cận.
8


bottom
caption-side
clear

Xác định vị trí dưới cùng của thành phần

bottom: 10px;

được định vị trí.

caption-side:

Xác định vị trí một chú thích của table.

bottom;

Xác định 2 bên của phần tử (left, right), nơi

clear: both;

mà phần tử float không được cho phép.

clip:


Xác định đoạn cho thành phần khi sử dụng

rect(0,0,50px,10px);

thuộc tính position có giá trị "absolute".

color

color: #ff0000;

Xác định màu sắc cho text.

content

content: "."

counter-

counter-increment:

Gia tăng một hoặc nhiều counter (sắp xếp

increment

section;

có thứ tự, có hiển thị số)

clip


counter-reset

Sử dụng kèm với bộ chọn ":before", ":after"
để chèn nội dung được tạo.

counter-reset:

Tạo hoặc reset một hoặc nhiều counter.

subsection;

cursor

cursor: pointer;

Xác định kiểu con trỏ chuột được hiển thị.

direction

direction: ltr;

Xác định hướng cho văn bản.

display

display: inline;

Xác định loại hiển thị của thành phần.


empty-cells

empty-cells: hide;

float

float: left;

font

font:

Xác định có hay khơng có đường viền và
nền trong một cột rỗng của table
Xác định có hay khơng một thành phần
được float.

12px

Thiết lập font cho thành phần, bao gồm font

arial,sans-serif;

chữ, độ rộng,...

height

height: 50px;

Thiết lập chiều cao của thành phần.


line-height

line-height: 1.5;

Thiết lập chiều cao giữa các dòng.

min-height

min-height: 100px;

Thiết lập chiều cao tối thiểu của thành phần.

1.3 PHP (Hypertext Preprocessor)
1.3.1 Giới thiệu về PHP
PHP (Hypertext Preprocessor) là một ngơn ngữ lập trình kịch bản 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 qt. Nó rất thích hợp với web và có thể dễ dàng nhúng
vào trang HTML. Do được tối ưu hóa cho các ứng dụng web, tốc độ nhanh, nhỏ gọn,
9

9


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
web phổ biến nhất thế giới.
1.3.2 Tại sao nên sử dụng PHP
- PHP được sử dụng rộng rãi, miễn phí, cấu hình nhanh chóng, nhỏ gọn.
- PHP có khả năng đạt hiệu suất cao trong làm việc.

- PHP có tính khả chuyển, một ứng dụng dù được phát triển trên Windows vẫn
có thể chạy bình thường trên
- PHP là một dự án mã nguồn mở. Ngôn ngữ này được phát triển bởi một đội
ngữ những người tình nguyện trên tồn cầu.
1.3.3 Một số thuộc tính thường dùng trong PHP
a.Biến, hằng số, kiểu dữ liệu trong PHP
Kiểu dữ liệu
- Các kiểu dữ liệu khác nhau chiếm các lượng bộ nhớ khác nhau và có thể được
xử lý theo cách khác nhau khi chúng được thao tác trong một script.
Trong ngơn ngữ lập trình PHP chúng ta có 6 kiểu dữ liệu chính như sau:
Kiểu Dữ Liệu
Integer
Double
String
Boolean
Object
Array

Ví dụ

Mô tả
5
Là Kiểu số nguyên
7.343
Kiểu số thực
How are you?
Một tập hợp các ký tự
True of False
Giá trị true hoặc false
Kiểu hướng đối tượng trong PHP

Kiểu mảng trong PHP

Hằng số
Hằng là những giá trị không đổi. Chúng ta thường dùng hằng để lưu các giá trị
khơng đổi trong suốt chương trình.
Khai báo hằng: Ta dùng define() để khai báo hằng.
Ví dụ: define(“version”,4);
Hàm define(): dùng để kiểm tra xem một hằng nào đó đã được khai báo chưa.
Biến và giá trị logic
PHP khơng có khái niệm TRUE hoặc FALSE. Các giá trị TRUE được hiểu là
những giá trị bằng 1, và giá trị FALSE là những giá trị bằng 0 hoặc xâu rỗng.
Khi sử dụng biến chúng ta không cần khai báo kiểu.
Nếu như thực hiện phép tốn có kiểu số và kiểu string. PHP sẽ coi chuỗi là một
dãy như sau:
10

10


$str =”222 B Baker Street”;
Ta thấy biến $str có kiểu string, và nếu cộng số 3 với giá trị này thì:
$x = 3 + $str; // $x = 225
Khi đó $x nhận được giá trị 225 vì PHP đã cộng 3 với 3 số đầu. Nhưng nếu ta in giá trị
của $str thì:
Echo $str;// print:”222 B Baker Street
b.Các tốn tử
Tốn tử số học
Tên
Phép cộng
Phép trừ

Phép nhân
Phép chia
Phép chia lấy dư

Ký hiệu
+
*
/
%

Mô tả
Cộng hai số hạng
Trừ hai số hạng
Nhân hai số hạng
Chia hai số hạng
Chi lấy dư

Ví dụ
$a + $b
$a - $b
$a * b
$a / $b
5%2=1

Phép gán
Ví dụ: $x = 1;
$y = $x + 1;
Toán tử so sánh
Tên
So sánh bằng


==

So sánh khác

!=

So sánh lớn hơn
So sánh nhỏ hơn
Lớn hơn hoặc bằng
Nhỏ hơn hoặc bằng

>
<
>=
<=

Tên
Phép và

11

Ký hiệu

Mô tả
Hai số hạng bằng
nhau
Hai số hạng khác

nhau

So sánh lớn hơn
So sánh nhỏ hơn
Lớn hơn hoặc bằng
Nhỏ hơn hoặc bằng
Tốn tử logic

Ví dụ
$a == $b
$a != $b
$a > b
$a < $b
$a >= $b
$a <= $b

Ký hiệu
Mô tả
Ví dụ
&&
hoặc Cả 2 vế phải thoả mãn $a > $b && $a >
and

Phép hoặc

|| hoặc or

Phủ định

!

điều kiện

$c
Một trong 2 thoả mãn
$a > $b || $a < $c
điều kiện là được
Phủ định 1 điều kiện, $a != b
11


giá trị nào đó
Các phép tốn với biến kiểu string
Ta sử dụng dấu “.” để ghép 2 biến kiểu string với nhau.
Để có thể chèn một biến vào trong tốn hạng có kiểu string thì tên biến phải để
trong dấu đóng mở ngoặc nhọn.
Echo (“${last} ‘bycycles”);
c.Các câu lệnh điều khiển
Lệnh If_else: đây là lệnh rẽ nhánh có điều kiện
Dạng 1:
If (biểu thức) câu lệnh;
Câu lệnh ở đây tương đương với một khối lệnh. Một khối lệnh được đặt trong
dấu ngoặc kép.
Dạng 2:
If (biểu thức)
câu lệnh 1;
else
câu lệnh 2;
Câu lệnh switch: là câu lênh rẽ nhánh có điều kiện trong đó thực hiện 1 trong n cái rẽ
nhánh.
Switch(biểu thức n)
{
Case n1;

Câu lệnh 1;
Break;
...
Case nn;
Câu lệnh nn;
[defaulf: câu lệnh]
}
Câu lệnh FOR: là lệnh tạo chu kì có điều kiện.
Dạng lệnh: for(bt1;bt2;bt3)
{
Câu lệnh;
}
Câu lệnh WHILE: là một lệnh tạo chu trình có điều kiện, điều kiện được kiểm tra ở
đầu chu trình.
While (biểu thức)
Câu lệnh;
12

12


Lênh DO ... WHILE: là một lệnh tạo chu trình có điều kiện, trong đó điều kiện thực
hiện chu trình được kiểm tra cở cuối chu trình.
Dạng lệnh:
Do {
Câu lệnh;
} While(biểu thức);
d.Hàm trong PHP
Quy tắc xây dựng hàm


-

Function tên_ham(danh sách đối số hình thức){
Thân hàm
}
Định nghĩa hàm khơng nhất thiết phải nằm ngồi thân mọi hàm, trong hàm có
thể có hàm khác. Nhưng việc sử dụng một hàm không khác nhau giữa xây dựng

-

hàm trong thân một hàm và ngoài một hàm.
Tên hàm tùy đặt và khác tên hàm chuẩn.
Hàm có thể có giá trị trả về hoặc khơng.
Các câu lệnh được quyền gọi bất kì hàm nào đã được khai báo và đã được định

nghĩa.
Return:
+ Trả một giá trị về cho nơi gọi hàm.
+ Là nơi báo kết thúc hàm.
Gọi hàm
+ Hàm phải được xây dựng trước khi gọi.
+ Khi gọi hàm, nếu có giá trị trả về thường được đặt trong biểu thức.
Biến toàn cục và biến cục bộ
Thông thường PHP coi các biến được sử dụng trong thân của hàm là biến cục bộ.
Nghĩa là biến trong thân hàm không làm thay đổi giá trị của biến ở ngồi hàm đó. Muốn
làm thay đổi giá trị của biến ta cần khai báo global trước biến đó trong thân hàm.
e.Biến mảng trong PHP
Mảng một chiều
Mảng là một biến bao gồm nhiều phần tử có cùng tên nhưng khác nhau về chỉ
số (các chỉ số này tăng dần từ 0 đến n). Các phần tử của mảng không nhất thiết phải

cùng kiểu.
+ Khai báo mảng 1 chiều:
Ta có thể khai báo mảng bằng cách gán tên mảng với dấu đóng mở ngoặc vng
khơng có chỉ số
Ví dụ: $mang[] = “ab”;
13

13


$mang[] = “ef”;
Ví dụ trên tạo ra một mảng gồm 2 phần tử có chỉ số là 0 và 1. Việc đó cũng tương tự
như gán:
$mang[0] = “ab”;
$mang[1] = “ef”;
Ngồi ra các chỉ số của mảng không nhất thiết phải tăng dần mà có thể được khai báo
như sau:
$mang[50] = “ab”;
$mang[20] = “ef”;
Khi đó để thêm một phần tử mới vào mảng chúng ta có thể viết:
$mang[] = “uk”; //chỉ số sẽ là 51
Một phần tử mới được thêm vào với chỉ số lớn nhất của mảng cộng thêm 1. Ngồi ra
cũng có thể khai báo mảng một chiều bằng câu lênh array.
$mang = array(“ab”, “ef”);
Mảng hai chiều
Ta có thể khai báo mảng hai chiều như sau:
$mang = array(“europs” => (“de”, “uk”), “north america” =>(“ca”, “cr”, “us”));
Echo ($mang[“europs”][1]);
Ta có cấu trúc của mảng trên như sau:
$mang[“europs”]

[0]
[1]
“de”
“uk”

$mang[“north america”]
[0]
[1]
[2]
“ca”
“cr”
“us”

f. Lập trình hướng đối tượng
Định nghĩa lớp
Chúng ta có thể định nghĩa lớp bằng toán tử class, và trong mỗi một lớp chúng
ta sẽ xây dựng các phương thức và thuộc tính cho lớp đó.
Giả sử muốn xây dựng lớp “sesion” chúng ta làm như sau:
Class sesion
{
//Định nghĩa các thuộc tính và phương thức
// Xây dựng các phương thức cho lớp
//Kết thúc một lớp
}
?>
Để định nghĩa thuộc tính cho lớp, chúng ta đặt từ khóa var trước thuộc tính đó.
Class sesion
{

Var $splhost = “localhost”;
...
14

14


//Định nghĩa các phương thức ở đây
//Kết thúc định nghĩa lớp
}
?>
Tiếp theo chúng ra sẽ định nghĩa các phương thức cho lớp trên.
Phương thức cần xây dựng đầu tiên là sesion(), sau đó đến các phương thức khác.
//Định nghĩa lớp session
Class sesion
{
//Định nghĩa các thuộc tính
...
// Định nghĩa các phương thức
Function sesion($localseshID,$localuserID = 0)
{
$this->seshid = $localseshid;
$this->userid = $localuserid;
// Kết nối với mysql
$this->linked = mysql_connect($this->sqlhost,$this->sqluser,$this->sqlpass);
If(!$this->linked)
{
$this->err = mysql_error();
$this->error_no = 102;

}
}
}
?>
Sử dụng lớp đã được định nghĩa
Để khai báo một đối tượng có kiểu thuộc tính lớp đã xây dựng ta dùng tốn tử new
nhưu sau:
Require(“classes/sesion.php”);//include class;
$mysesh = new session($seshid);
If ($mysesh->error_no)
{
//Thông báo lỗi
}
$user = $mysesh->sessdata(userid);
?>
<html>
<head>
<title>Chào mừng bạn tới website của tôi, <? Echo $user; ?></title>
</head>
<body>
15

15


next page</a>
<FORM action=”nextpage.php” METHOD=”POST”>
</FORM>

</body>
</html>
1.4 Tìm hiểu về Mysql
1.4.1 Giới thiệu về Mysql
MySQL là một cơ sở dữ liệu quan hệ miễn phí hiện nay đã được hãng Oracle
mua lại từ hãng Sun. Nó thường được sử dụng kết hợp với PHP để lưu trữ dữ liệu của
ứng dụng website khi người dùng thao tác trên website của chúng ta. Nếu các bạn đã
từng học SQL Server một hệ cơ sở dữ liệu quan hệ của Microsoft thì khi tiếp cận với
MySQL sẽ dễ dàng hơn, vì chúng vẫn được xây dựng giống nhau về tư tưởng, kiến
trúc.
1.4.2 Một số câu lệnh truy vấn cơ sở dữ liệu
Lệnh: Insert
Lệnh Insert là câu lệnh SQL dùng để chèn một bản ghi vào table.
Cú pháp:
INSERT INTO table_name (field1, field2) VALUES (‘value1′, ‘value2′);


table_name: là tên của bảng



field: là trường dữ liệu, các field được tách nhau bởi dấu phẩy



value: là giá trị tương ứng với các field cũng được tách nhau bởi dấu phẩy
Ví dụ
INSERT INTO `friday`.`tbl_teachers` (`teacher_id`, `teacher_name`, `teacher_email`,
`teacher_phone`) VALUES (NULL, 'Vũ Văn Khương', '',
'01672022521');

Lệnh Update
Lệnh Update là câu lệnh SQL dùng để cập nhật giá trị cho một hoặc nhiều bản
ghi đang có trong bảng (tùy vào điều kiện giới hạn số bản ghi thực hiện của bạn).
Cú pháp:
UPDATE table_name SET field1 = ‘value1′, field2 = ‘value2′ WHERE
điều_kiện
+ table_name: là bảng dữ liệu cần cập nhật
+ field = ‘value’: các trường và giá trị tương ứng cần cập nhật
16

16


+ WHERE điều_kiện: Điều kiện giới hạn số bản ghi cần thực hiện (nếu khơng
có điều kiện WHERE) MySQL sẽ xử lý tồn bộ các bản ghi trên bảng.
Ví dụ:
UPDATE tbl_teachers SET teacher_name = 'Đỗ Chiến' WHERE teacher_id = 1
Câu lệnh này sẽ thực hiện sửa tên của bản ghi có mã giảng viên = 1, chính là bản ghi
mình vừa thực hiện INSERT vào.
Lệnh Delete
Lệnh Delete là câu lệnh SQL dùng để xóa một hay nhiều bản ghi
Cú pháp:
DELETE FROM table_name WHERE điều_kiện
+ table_name: là tên bảng dữ liệu cần xóa
+ WHERE điều_kiện: là các điều kiện để giới hạn số bản ghi bị tác động (nếu
bỏ trống toàn bộ các bản ghi trong bảng này sẽ bị xóa bỏ)
Ví dụ:
DELETE FROM tbl_teachers WHERE teacher_id = 1
Câu lệnh này sẽ thực hiện xóa bản ghi có mã giảng viên = 1
Lệnh SELECT

Câu lệnh SELECT là câu lệnh SQL dùng để truy vấn các bản ghi trong cơ sở dữ
liệu của bạn. Đây là câu lệnh SQL được sử dụng nhiều nhất, tùy biến nhất để giải
quyết mọi yêu cầu khai thác dữ liệu của bài toán.
Cú pháp:
SELECT field1, field2, FROM table_name WHERE điều_kiện ORDER BY
field ASC|field DESC|rand() LIMIT Số bản ghi|Giá trị đầu, giá trị cuối
+ Field1, Field2 là các trường dữ liệu cần truy vấn
+ tablename là bảng dữ liệu cần truy suất
+ WHERE điều_kiện là các điều kiện để có được dữ liệu mong muốn
+ ORDER BY field ASC lệnh sắp xếp dữ liệu tăng dần
+ ORDER BY field DESC lệnh sắp xếp dữ liệu giảm dần
+ ORDER BY rand() lệnh lấy ngẫu nhiên
+ LIMIT số_bản_ghi lấy n bản ghi
+ LIMIT 0,n: lấy n bản ghi từ vị trí 0
Ví dụ:
17

17


SELECT * FROM tbl_teachers WHERE teacher_id = 1
Câu lệnh trên sẽ lấy được toàn bộ các trường dữ liệu của mã giảng viên = 1
1.5 Tìm hiều về phân tích thiết kế hệ thống hướng đối tượng và mơ hình hóa hệ
thống
1.5.1 Giới thiệu về UML
- Ngơn ngữ mơ hình hóa thống nhất (Unifield Modeling Language - UML) là
một ngơn ngữ để biểu diễn mơ hình theo hướng đối tượng được xây dựng bởi
JamesRumbaugh, Grady Booch và Ivar Jacobson với chủ đích là:
+ Mơ hình hóa các hệ thống sử dụng các khái niệm hướng đối tượng.
+ Thiết lập một kết nối từ nhận thức của con người đến các sự kiện cần mơ hình hóa.

+ Giải quyết vấn đề về mức độ thừa kế trong các hệ thống phức tạp, có nhiều
ràng buộc khác nhau.
+ Tạo một ngơn ngữ mơ hh́nh hóa có thể sử dụng được bởi người và máy.
- UML là một ngơn ngữ mơ hình hóa thống nhất có phần chính bao gồm những
kýhiệu hình học, được các phương pháp hướng đối tượng sử dụng để thể hiện và miêu
tả các thiêt kế của một hệ thống. Nó là một ngơn ngữ để đặc tả, trực quan hóa, xây
dựng và làm tư liệu cho nhiều khía cạnh khác nhau của một hệ thống có nồng độ phần
mềm cao. UML có thể được sử dụng làm cơng cụ giao tiếp giữa người dùng, nhà phân
tích, nhà thiết kế và nhà phát triển phần mềm.
1.5.2 Các thành phần của ngôn ngữ UML
Ngôn ngữ UML bao gồm một loạt các phần tử đồ họa (graphic element) có thể
được kết hợp với nhau để tạo ra các biểu đồ. Bởi đây là một ngơn ngữ, nên UML cũng
có các ngun tắc để kết hợp các phần tử đó.
Một số những thành phần chủ u của ngơn ngữ UML:
+ Hướng nhìn (view): hướng nhìn chỉ ra các khía cạnh khác nhau của hệ thống
cần phải được mơ hình hóa. Một hướng nhìn khơng phải là một bản vẽ mà là một sự
trừu tượng hóa bao gồm một loạt các biểu đồ khác nhau. Chỉ qua việc định nghĩa một
loạt các hướng nhìn khác nhau, mỗi hướng nhìn chỉ rao một khía cạnh riêng biệt của
hệ thống, người ta mới có thể tạo dựng nên một bức tranh hoàn thiện về hệ thống.
Cũng chính các hướng nhìn này nối kết ngơn ngữ mơ hình hóa với quy trình được
chọn cho giai đoạn phát triển.
+ Biểu đồ (diagram): là các hình vẽ miêu tả nội dung trong 1 hướng nhìn. UML
có tất cả 9 loại biểu đồ kahcs nhau được sử dụng trong những sự kết hợp khác nhau để
cung cấp tất cả các hướng nhìn của một hệ thống.
18

18


+ Phần tử mơ hình hóa (model element): các khái niệm được sử dụng trong các

biểu đồ được gọi là các phần tử mơ hình, thể hiện các khái niệm hướng đối tượng quen
thuộc. Ví dụ như lớp, đối tượng, thông điệp cũng như các quan hệ giữa các khái niệm
này, bao gồm cả liên kết, phụ thuộc, khái quát hóa. Một phần tử mơ hình thường được
sử dụng trong nhiều biểu đồ khác nhau, nhưng nó ln lnn có chỉ một ý nghĩa và
một ký hiệu.
+ Cơ chế chung: cư chế chung cung cấp thêm những lời nhận xét bổ sung, các
thông tin cũng như các quy tắc ngữ pháp chung về một phần tử mơ hình, chúng cịn
cung cấp thêm cơ chế để có thể mở rộng ngơn ngữ UML cho phù hợp với một phương
pháp xác định (một quy trình, một tổ chức hoặc một người dùng)
1.5.3 Biểu đồ (diagram)
Biểu đồ User case (Use Case Diagram)
Một biểu đồ use case chỉ ra một số lượng các tác nhân ngoại cảnh và mối liên
kết của chúng đối với use case mà hệ thống cung cấp. Một Use case là một lời miêu tả
của một chức năng mà hệ thống cung cấp. Lời miêu tả Use case thường là một văn bản
tài liệu, nhưng kèm theo đó cũng có thể là một biểu đồ hoạt động. Các Use case được
miêu tả duy nhất theo hướng nhìn từ ngồi vào của các tác nhân (hành vi của hệ thống
theo sự mong đợi của người sử dụng), không miêu tả chức năng được cung cấp sẽ hoạt
động nội bộ bên trong hệ thống ra sao. Các Use case định nghĩa các yêu cầu về mặt
chức năng đối với hệ thống.

Hình 1.1 Biểu đồ User Case
 Biểu đồ lớp (Class Diagram)

Một biểu đồ lớp chỉ ra cấu trúc tĩnh của các lớp trong hệ thống. Các lớp là đại
diện cho các “vật” được xử lý trong hệ thống. Các lớp có thể quan hệ với nhau trong
nhiều dạng thức: liên kết (associated – được kết nối với nhau), chuyên biệt hóa
19

19



(specialized – một lớp này là một kết quả chuyên biệt hóa của một lớp khác), hay đóng
gói (packaged - hợp với nhau thành một đơn vị). Tất cả các mối quan hệ đó đều được
thể hiện trong biểu đồ lớp, đi kèm với cấu trúc bên trong của các lớp theo khái niêm
thuộc tính (attribute) và thủ tục (operation). Biểu đồ được coi là biểu đồ tĩnh theo
phương diện cấu trúc được miêu tả ở đây có hiệu lực tại bất kỳ thời điểm nào trong
tồn bộ vịng đời đệ thống. Một hệ thống sẽ thường có một loạt các biểu đồ lớp –
chẳng phải bao giờ tất cả các biểu đồ lớp này cũng được nhập vào một biều đồ lớp
tổng thể duy nhất – và một lớp có thể tham gia vào nhiều biểu đồ lớp.

Hình 1.2 Biểu đồ lớp
 Biều đồ trình tự (Sequence Diagram)

Một biểu đồ trình tự chỉ ra một cộng tác động giữa một loạt các đối tượng. Khía
cạnh quan trọng của biểu đồ này là chỉ ra trình tự các thơng điệp (message) được gửi
giữa các đối tượng. Nó cũng chỉ ra trình tự tương tác giữa các đối tượng, điều sẽ xảy ra
tại một thời điểm cụ thể nào đó trong trình tự thực thi của hệ thống. Các biểu đồ trình
tự chứa một loạt các đối tượng được biểu diễn bằng các đường thằng đứng. Trục thời
gian có hướng từ trên xuống dưới trong biểu đồ, và biểu đồ chỉ ra sự trao đổi thông
điệp giữa các đối tượng khi thời gian trôi qua. Các thông điệp được biểu diễn bằng các
đường gạch ngang gắn liền với mũi tên (biểu thị thông điệp) nối liền giữa những
đường thẳng đứng thể hiện đối tượng. Trục thời gian cùng những lời nhận xét khác
thường sẽ được đưa vào phần lề của biểu đồ.

20

20


Hình 1.3 Biểu đồ trình tự

 Biểu đồ cộng tác (Collaboration Diagram)

+ Một biều đồ cộng tác chỉ ra một sự cộng tác động, cũng giống như một biểu
đồ trình tự, thường người ta sẽ chọn hoặc dùng biểu đồ trình tự hoặc dùng biểu đồ
cộng tác. Bên cạnh việc thể hiện sự trao đổi thông điệp (được gọi là tương tác), biều
đồ cộng tác chỉ ra các đối tượng và quan hệ của chúng (nhiều khi được gọi là ngữ
cảnh). Việc nên sử dụng biểu đồ trình tự hay biều đồ cộng tác thường sẽ được quyết
định theo nguyên tắc chung sau: nếu thời gian hay trình tự là yếu tố quan trọng nhất
cần phải nhần mạnh thì hãy chọn biều đồ trình tự, nếu ngữ cảnh là yếu tố quan trọng
hơn, hãy chọn biều đồ cộng tác. Trình tự tương tác giữa các đối tượng được thể hiện
trong cả hai loại biểu đồ này.
+ Biểu đồ cộng tác được vẽ theo dạng một biểu đồ đối tượng, nơi một loạt các
đối tượng được chỉ ra cùng với mối quan hệ giữa chúng với nhau (sử dụng những ký
hiệu như trong biểu đồ lớp/biểu đồ tượng). Các mũi tên được vẽ giữa các đối tượng để
chỉ ra dòng chạy thông điệp giữa các đối tượng. Các thông điệp thường được đính kèm
theo các nhãn (label), một trong những chức năng của nhãn là chỉ ra thứ tự mà các
thông điệp được gửi đi. Nó cũng có thể chỉ ra các điều kiện, chỉ ra những giá trị được
trả về ... Khi đã làm quen với cách viết nhãn, một nhà phát triển có thể đọc biểu đồ
cộng tác và tuân thủ theo dòng thực thi cũng như sự trao đổi thông điệp.
 Biểu đồ trạng thái
Biểu đồ trạng thái thể hiện chu kỳ hoạt động của các đối tượng, hệ thống con và
cả hệ thống. Nó là một loại oto mát hữu hạn trạng thái, mô tả các trạng thái hành động
mỗi đối tượng có thể có và các sự kiện gắn với trạng thái theo thời gian.
Biểu đồ trạng thái có điểm mở đầu và điểm kết thúc như hình vẽ dưới:

21

21



Hình 1.4 Biểu đồ trạng thái
Khi một hóa đơn được tạo lập thì nó ở trạng thái chưa thanh tốn, sau đó khi có
sự kiện khách hàng thanh tốn nghĩa là khách trả tiền cho các mặt hàng đã chọn mua
thì nó chuyển sang trạng thái thanh tốn.
 Biều đồ hoạt động
Biểu đồ hoạt động chỉ ra dòng hoạt động của hệ thống, bao gồm các trạng thái
hoạt động. Trong đó, từ một trạng thái hoạt động sẽ chuyển sang một trạng thái khác
sau khi một hoạt động tương ứng được thực hiện, nó chỉ ra trình tự các bước, tiến trình
thực hiện cũng như các điểm quyết định và sự rẽ nhánh theo luồng sự kiện.
 Biểu đồ thành phần
Biều đồ thành phần chỉ ra cấu trúc vật lý của các thành phần trong hệ thống bao
gồm: các thành phần mã nguồn, mã nhị phân, thư viện và các thành phần thực thi.
 Biểu đồ triển khai
Biểu đồ triển khai chỉ ra cách bố trí vật lý các thành phần theo kiến trúc được
thiết kế của hệ thống. Trong biểu đồ này xác định các máy tính và thiết bị hoạt động,
cũng như cách nối các nút lại với nhau. Biểu đồ triển khai địa chỉ hóa tới quan sát triển
khai tính của cơng nghệ.
1.5.4 Các mối quan hệ
UML cho phép biểu diễn 4 mối quan hệ giữa các đối tượng trong các hệ thống.
Đó là: quan hệ phụ thuộc, quan hệ kết hợp, quan hệ tổng quát hóa, hiện thực hóa.
Quan hệ phụ thuộc
Đây là quan hệ ngữ nghĩa giữa hai phần tử trong đó sự thay đổi của 1 phân tử sẽ
tác động đến ngữ nghĩa của phần tử phụ thuộc.
Quan hệ kết hợp
Kết hợp là quan hệ cấu trúc xác định mối liên kết giữa các lớp đối tượng. Khi
có một đối tượng của lớp này gửi/nhận thông điệp từ chỗ đối tượng của lớp kia thì hai
lớp đó có quan hệ kết hợp.
Quan hệ tổng quát

22


22


Đây là quan hệ mơ tả sự khái qt hóa mà trong đó một số đối tượng cụ thể (của
lớp con) sẽ được thừa kế các thuộc tính, các phương thức của các đối tượng tổng quát
(lớp cơ sở).
Quan hệ hiện thực hóa
Hiện thực hóa là quan hệ ngữ nghĩa giữa giao diện và lớp (hay thành phần) nó
thực hiện cài đặt các dịch vụ có cuộc khai báo trong các giao diện.

CHƯƠNG II: KHẢO SÁT VÀ PHÂN TÍCH THIẾT KẾ HỆ THỐNG
2.1 Khảo sát hệ thống
2.1.1 Khảo sát hiện trạng
a. Thông tin cửa hàng
Tên cửa hàng: Daisy shop
Địa chỉ:131 Kim Mã, Q. Ba Đình, Hà Nội.
Hiện tại cửa hàng chuyên kinh doanh thời trang sinh viên – công sở. Do công
nghệ thông tin ngày càng tiên tiến, internet ngày càng phát triển vì vậy Daisy tạo
website kết hợp bán hàng Truyền Thống và bán hàng qua Mạng để đáp ứng được nhu
cầu của thị trường.
b. Các hoạt động mua bán kinh doanh của cửa hàng
Hoạt động của khách hàng
+ Một khách hàng khi tham quan cửa hàng, họ sẽ đặt vấn đề cửa hàngbán
những gì, thơng tin gì về những mặt hàng được bán, giá cả và hình thức thanh tốn. Do
đó để đáp ứng những nhu cầu tối thiểu trên, cửa hàngtrên Internet phải đảm bảo cung
cấp những thơng tin cần thiết, có giá trị và hơn thế nữa là dễ thao tác. Mặt hàng khi
bán phải có hìnhảnh,giá cả,thơng tin liên quan đến mặt hàng đó.
+ Khách hàng có thể vào cửa hàng ảo (Web Site) để tìm kiếm các sản phẩm cần
mua và đặt hàng với cửa hàng. Khách hàng có thể tìm mặt hàng mà mình cần theo tên

mặt hàng.
+ Mỗi khách hàng được cung cấp một giỏ mua hàng tương ứng. Khi khách
hàng thêm những mặt hàng vào giỏ mua hàng của mình thì một trang đăng ký sẽ xuất
hiện yêu cầu khách hàng đăng nhập. Nếu đây là lần đầu tiên khách hàng tới cửa hàng
thì khách hàng được yêu cầu nhập vào thơng tin đăng ký trong đó có họ tên, thơng tin
địa chỉ, username và password của khách hàng. Nếu khách hàng đã đăng ký rồi thì họ
có thể truy xuất giỏ mua hàng của mình chỉ bằng cách nhập vào username và password
của khách hàng.
23

23


+ Khi khách hàng đã sẳn sàng hoàn thành đơn đặt hàng của mình thì các mặt
hàng mà khách hàng hiện có trong giỏ mua hàng của mình sẽ chuyển vào đơn đặt hàng
thực hiện đặt hàng với cửa hàng, giỏ mua hàng của khách hàng sẽ rỗng.
+ Sau khi khách hàng đã đặt hàng tại cửa hàng rồi, họ có thể theo dõi đơn đặt
hàng của mình để trực tiếp kiểm tra đơn đặt hàng tại trang Web của cửa hàng khi có
những băn khoăn.
Hoạt động của người quản trị
Người quản trị ngồi việc nhận thơng tin từ khách hàng cịn phải đưa thơng tin
về loại mặt hàng mà mình bán trên Internet. Hoạt động của người quản trị có thể phân
ra những nhiệm vụ sau:
+ Hướng dẫn, giới thiệu mặt hàng. Phải nhanh chóng đưa khách hàng tới nơi có
mặt hàng mà họ cần, đó là nhiệm vụ của nhà quản lý. Việc lưu trữ các thông tin về mặt
hàng trong một cơ sở dữ liệu trực tuyến, cơ sở dữ liệu này chứa những thông tin về
mặt hàng như: tên mặt hàng, loại mặt hàng, thông tin mơ tả, tên tập tin chứa hình ảnh
của mặt hàng đó.
+ Quản lý mặt hàng: người quản trị có thể bổ sung, loại bỏ và cập nhật mặt
hàng để phù hợp với tình hình hoạt động của cửa hàng và nhu cầu thị hiếu của khách

hàng,…
+ Cung cấp giỏ mua hàng cho khách hàng
+Theo dõi khách hàng
+ Nhận đơn đặt hàng: Sau khi khách hàng kết thúc giao dịch, đơn đặt hàng
được tổng hợp lại và gởi qua cho các bộ phận khác như thống kê kế tốn, kinh
doanh,... ngồi ra sau một thời gian nhất định, nhà quản lý có thể xử lý đơn đặt hàng
mới và cũ nếu cần.
+ Bán hàng và xúc tiến khuyến mãi: Có hàng trong kho là một chuyện và bày
bán như thế nào mới là vấn đề. Ở đây chúng ta chỉ bày bán đơn giản, các mặt hàng sẽ
được bày bán thông qua loại mặt hàng trên trang web. Việc ưu đãi khách hàng thường
xuyên và đặt mua với số lượng nhiều là một việc cần thiết đồng thời các thông tin
khuyến mãi cũng kèm theo mặt hàng để cho khách hàng biết.
+ Quản lý và xử lý đơn đặt hàng:
- Hiển thị danh sách các đơn đặt hàng đã giao hay chưa giao.
- Đánh dấu tình trạng giao hàng ứng với đơn đặt hàng đã giao.
- Xóa đơn đặt hàng.
- Thành lập hóa đơn cho khách hàng khi giao hàng,…
c. Hiện trạng lưu trữ của cửa hàng
Hiện tại cửa hàng đang luu trữ những thông tin sau:
+ Thông tin về hàng hóa.
+ Thơng tin về nhân viên.
+ Thơng tin về khách hàng.
+ Thông tin về kho hàng.
24

24


+ Thơng tin về đơn hàng.
+ Thơng tin về hóa đơn bán hàng.

2.1.2 Phân tích u cầu bài tốn
a. Phân tích bài tốn
Với sự phát triển của cơng nghệ thơng tin và đặc biệt là sự ra đời của Internet đã
làm thay đổi rất nhiều trong việc hoạch định và phát triển kinh tế của từng doanh
nghiệp, quốc gia. Cùng với những sự quảng bá đó, mỗi doanh nghiệp có thể giới thiệu
sản phẩm tới khách hàng thông qua Internet. Đó là hình thức trao đổi mua bán thơng qua
website của doanh nghiệp đó mà khơng phải in giấy tờ trong các công đoạn giao dịch.
Mỗi hệ thống bán hàng thường gồm 2 thành phần chính:
+ Phần thứ nhất là phần giao dịch với khách hàng trên Internet.
+ Phần thứ hai dành cho nhân viên quản trị hệ thống.
Mỗi phần có các chức năng con khác nhau phục vụ cho mục địch kinh doanh và quản
lý của cửa hàng.
Mục tiêu của bài toán là xây dựng một website với mục đích là bán hàng qua
mạng thơng qua website điện tử của cửa hàng. Khi khách hàng có nhu cầu mua hàng
họ sẽ truy cập vào website và thực hiện theo các hướng dẫn như trên trang web.
Việc quản lý website dự trên một số nhiệm vụ sau:
+ Đảm bảo tính thống nhất, mỗi dữ liệu chỉ cập nhật duy nhất một lần, không
được lặp lại. Nếu lặp lại hệ thống sẽ báo lỗi, khách hàng phải nhập lại.
+ Khi người dùng muốn tìm hiểu thơng tin về sản phẩm thì người quản lý phải
luôn luôn cập nhật thông tin để phục vụ khách hàng một cách nhanh chóng nhất.
+ Tự điều chính thơng tin có trong cơ sở dữ liệu mỗi khi có sự cập nhật mới
nhưng vẫn đảm bảo tính tồn diện và tổng thể của chương trình.
+ Phải luôn làm mới, cập nhật website về giao diện, về thông tin để website đẹp hơn.
Thông qua hệ thống, cửa hàng không mất nhiều thời gian cho việc giới thiệu
sản phẩm, dịch vụ vì khách hàng có thể tìm hiểu trên web bất cứ lúc nào. Website có
dịch vụ chăm sóc khách hàng chu đáo tin cậy, đo là một trong những yếu tố quan trọng
trong việc thu hút và giữ khách lâu dài.
Khách hàng có thể tìm kiếm thơng tin về các mặt hàng, cách thức lựa chọn
thanh toán, hình thức vận chuyển theo yêu cầu của mình.
Khách hàng có thể xem các thơng tin giới thiệu về cửa hàng, thông tin liên hệ,

thông tin khuyến mại. Nếu khách hàng mới ghé thăm website lần đầu chưa có kinh
nghiệm mua hàng thì cửa hàng sẽ có hướng dẫn mua hàng cho khách hàng.
Khách hàng có thể gửi ý kiến góp ý tới cửa hàng để website ngày càng hồn
thiện hơn. Ban quản trị sẽ ghi nhận ý kiến của khách hàng và điều chỉnh để đáp ứng tốt
nhất nhu cầu của khách hàng.
Nếu khách hàng có nhu cầu đổi hàng hay trả lại hàng thì liên hệ với cửa hàng
thông qua số điện thoại của cửa hàng. Cửa hàng sẽ xem xét và xử lý nếu yêu cầu của
25

25


×