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 Và 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 Truyền thông & Mạng
máy tính 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 cô giáo ThS. Dương Thúy Hường đã
tận tình hướng dẫn, trực tiếp chỉ bảo em trong suốt thời gian làm đề tài.Trong thời
gian làm việc với cô, em không những tiếp thu thêm nhiều kiến thức bổ ích mà còn
học đượ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 quá trình học tập và công tác sau này.
Do thời gian hạn hẹp, mặc dù đã nỗ lực hết sức mình nhưng đề tài của em
khó tránh khỏi những thiếu sót. Em rất mong nhận được những ý kiến đóng góp
của quý thầy Cô và các bạn để đề tài của em được hoàn thiện hơn. Một lần nữa em
xin chân thành cảm ơn!
Thái nguyên, tháng 6 năm 2016
Sinh viên
Hoàng Bích Thuận
1
LỜI CAM ĐOAN
Tôi xin cam đoan kết quả đạt được trong luận văn là sản phẩm của riêng cá
nhân tôi, không sao chép lại của người khác. Trong toàn bộ nội dung của luận văn,
những điều được trình bày hoặc là của cá nhân hoặc là được tổng hợp từ nhiều
nguồn tài liệu. Tất cả các tài liệu tham khảo đều có xuất xứ rõ ràng và được trích
dẫn hợp pháp. Tôi xin hoàn toàn chịu trách nhiệm và chịu mọi hình thức kỷ luật
theo quy định cho lời cam đoan của mình.
Thái nguyên, tháng 6 năm 2016
Sinh viên thực hiện
Hoàng Bích Thuận
2
MỤC LỤC
DANH MỤC HÌNH ẢNH
Hình 2.1: Usecase tổng quát
27
Hình 2.2: Biểu đồ UC của gói UC Đăng ký, đăng nhập.27
Hình 2.3: Biểu đồ UC của gói UC Quản lý thông tin cá nhân 28
Hình 2.4: Biểu đồ UC của gói quản lý danh sách thành viên
3
28
Hình 2.5: Biểu đồ UC của gói quản lý danh mục các tuyến đường
29
Hình 2.6: Biểu đồ UC của gói đặt đơn dịch vụ 29
Hình 2.7: Biểu đồ UC của gói tiếp nhận và xử lý đơn dịch vụ 30
Hình 2.8:Các lớp biên
42
Hình 2.9: Biểu đồ hoạt động của UC Đăng ký thành viên
Hình 2.10: Biểu đồ hoạt động của UC Đăng nhập
42
42
Hình 2.11: Biểu đồ hoạt động của UC Sửa thông tin cá nhân 43
Hình 2.12: Biểu đồ hoạt động của UC Quản lý danh sách thành viên 43
Hình 2.13: Biểu đồ hoạt động của UC Ship hàng, tiếp nhận và xử lý đơn dịch vụ
44
Hình 2.14: Biểu đồ tuần tự của UC Đăng ký thành viên 45
Hình 2.15: Biểu đồ giao tiếp của UC Đăng ký thành viên
45
Hình 2.16: Biểu đồ tuần tự của UC Đăng nhập 46
Hình 2.17: Biểu đồ giao tiếp của UC Đăng nhập 46
Hình 2.18: Biểu đồ tuần tự của UC Sửa thông tin cá nhân
47
Hình 2.19: Biểu đồ giao tiếp của UC Sửa thông tin cá nhân
47
Hình 2.20: Biểu đồ tuần tự của UC quản lý danh sách thành viên
48
Hình 2.21: Biểu đồ giao tiếp của UC quản lý danh sách thành viên
48
Hình 2.22: Biểu đồ tuần tự của UC tiếp nhận và xử lý đơn dịch vụ
49
Hình 2.23: Biểu đồ giao tiếp của UC Ship hàng 50
Hình 2.24: Biểu đồ lớp
50
Hình 3.1:Giao diện trang chủ
55
Hình 3.2: Bảng thông tin hóa đơn 56
Hình 3.3: Giao diện đăng nhậpkhách hàng
56
Hình 3.4: Giao diện chỉnh sửa thông tin cá nhân của khách hàng
HÌnh 3.5:Giao diện chi tiết hóa đơn
57
Hình 3.6:Giao diện đăng nhập admin
58
Hình 3.7: Giao diện quản lý khách hàng 59
4
57
Hình 3.8: Giao diện hiển thị danh sách khách hàng
Hình 3.9: Giao diện quản lý shipper
60
Hình 3.10: Giao diện quản lý địa điểm
60
59
Hình 3.11: Giao diện quản lý các tuyến đường 61
Hình 3.12 Giao diện quản lý danh sách hóa đơn 61
Hình 3.13a: Giao diện chi tiết hóa đơn
62
Hình 3.13b: Giao diện chi tiết hóa đơn đã được phân công
62
Hình 3.13c: Giao diện chi tiết hóa đơn báo bận 63
Hình 3.14:Giao diện hiển thị danh sách hóa đơn cho shipper 64
Hình 3.15: Giao diện đăng nhập shipper 65
5
LỜI NÓI ĐẦU
Hiện nay, công nghệ thông tin nói chung, công nghệ website nói riêng đã và
đang có những bước phát triển nhanh chóng. Giúp cho con người giải phóng được
sức lao động, giảm bớt thời gian cũng như công sức, tiền của mà vẫn quản lý cũng
như hoàn thành tốt các công việc của mình. Không tách khỏi xu hướng chung đó,
công việc vận chuyển hàng hóa cũng đã chịu ảnh hưởng lớn của công nghệ thông
tin, từ quảng bá thương hiệu đến giúp tìm đường đi cộng với lịch trình đi sao cho
phù hợp nhất, nhanh nhất mà không tốn tiền bạc nhất đều có sự trợ giúp của công
nghệ thông tin. Nhưng vẫn còn đó những công ty vì tính đặc thù công việc nên vẫn
chưa có được những ứng dụng hữu ích để phục vụ cho công việc của mình.Và
công ty vận chuyển Khánh Thịnh –Thái Nguyên là một trong những công ty như
vậy. Nhận thấy yêu cầu cấp thiết của công ty là cần phải có một ứng dụng shipper
để quảng bá dịch vụ và quản lý đơn dịch vụ cũng như các nhân viên vận chuyển
của công ty là rất lớn. Nên em quyết định chọn đề tài” Xây Dựng ứng dụng quản lý
shipping cho công ty vận chuyển Khánh Thịnh-Thái Nguyên”. Bằng ngôn ngữ
php và mysql
6
CHƯƠNG 1: CƠ SỞ LÝ THUYẾT
1.1. Ngôn ngữ PHP
1.1.1. Giới thiệu và sử dụng ngôn ngữ PHP
1.1.1.1 Giới thiệu ngôn ngữ PHP
a. Lịch sử ra đời
Năm 1995, Rasmus Lerdorf tạo ra PHP nhằm giải quyết việc viết lặp đi lặp
lại cùng đoạn mã khi tạo các trang. Ban đầu tác giả chỉ có ý định tạo bộ phân giải
đơn giản để thay thế các thẻ lệnh trong file HTML bằng các đoạn mã lệnh viết bằng
C.
b. PHP là gì ?
PHP là một công nghệ phía máy chủ (server – side) và không phụ thuộc môi
trường (cross-platfom). Cả hai yếu tố này đều rất quan trọng. Khái niệm công nghệ
phía máy chủ nói đến việc mọi thứ trong PHP đều xảy ra trên máy chủ (ngược với
máy khách là máy của người dùng). Tính chất không phụ thuộc môi trường cho
phép PHP chạy trên hầu hết các hệ điều hành như windows, Unix (và nhiều biến
thể của nó), Macintosh…Một điều cũng rất quan trọng là các mã kịch bản PHP
viết trên máy chủ này sẽ làm việc bình thường trên các máy chủ khác mà không
cần chỉnh sửa hoặc chỉnh sửa rất ít.
Mã PHP được thực thi ở phía Server, khi trình duyệt của người dùng truy
cập một trang web có chứa một đoạn mã PHP thì trình duyệt nhận được trang kết
quả đã xử lý từ Web server, người dùng sẽ không thể biết được đoạn mã viết gì.
Mã PHP được bao trong cặp dấu hoặc ?>. Tập tin PHP có phần mở
rộng là .php hoặc .php3
PHP tương tự JSP và ASP với tập thẻ lệnh dùng cho trang HTML. Điểm
đặc biệt là PHP được phát triển hoàn toàn cho nền tảng web,chính vì vậy, mà các
ứng dụng viết bằng PHP rất ngắn gọn so với VBScript hay JSP. Đây cũng chính là
7
điểm mạnh của PHP so với Perl.
Cú pháp PHP mượn từ nhiều ngôn ngữ khác như C, Java, Perl... PHP có thể
giao tiếp với nhiều hệ CSDL như MySQL, MS Access, Sybase, Oracle và cả
Microsoft SQL. Không chỉ có khả năng thao tác CSDL,PHP còn có nhiều khả năng
khác như IMAP, SNMP, LDAP, XML... PHP chạy trên hầu hết các nền tảng hệ
thống.Trình máy chủ phân giải mã lệnh PHP có thể tải về miễn phí từ trang web chính
thức của PHP.
Có lẽ yếu tố hấp dẫn nhất của PHP là nó hoàn toàn miễn phí. Với máy tính
cấu hình vừa phải chạy Linux, cài đặt Apache, PHP và MySQL,bạn sẽ có máy chủ
có thể phục vụ được nhiều ứng dụng web tương đối.Toàn bộ chi phí hầu như chỉ là
thời gian bạn bỏ ra để cài đặt các phần mềm.
PHP được xem là một thay thế cho Perl.PHP không thể làm được nhiều
như Perl, thế nhưng chính sự hạn chế này làm cho PHP dễ học và dễ
dùng.
c. Tại sao cần dùng PHP?
PHP được sử dụng để phát triển website động vì nó tốt, nhanh và dễ dàng
nghiên cứu hơn các giải pháp khác. PHP có khả năng thực hiện và tích hợp chặt
chẽ với hầu hết các cơ sở dữ liệu có sẵn, tính năng bền vững linh động và khả năng
phát triển không giới hạn. Tất cả các đặc tính trên đều miễn phí vì PHP là mã
nguồn mở. PHP vừa dễ với người mới sử dụng và vừa có khả năng làm được mọi
thứ, đáp ứng yêu cầu của lập trình viên chuyên nghiệp.
PHP được sử dụng càng ngày càng nhiều và mới đây đã bắt kịp ASP
(vốn được xem là ngôn ngữ kịch bản phổ biến nhất hiện nay). PHP là modun
thông dụng cho Apache (máy chủ Web phổ biến nhất) và nó đã có mặt trên 12
triệu website
1.1.1.2. Sử dụng PHP
a) Thẻ PHP
Có 4 loại khác nhau của thẻ PHP:
8
- Kiểu Short: là thẻ mặc định mà các nhà lập trình PHP thường sử dụng.
echo “Đây là kiểu Short”; ?>
- Kiểu định dạng XML: thẻ này có thể sử dụng với văn bản dạng XML.
- Kiểu Script: trong trường hợp muốn sử dụng PHP như một script tương
tự như khai báo Javascript hay VBScript
-
Kiểu ASP:
<%
echo “Đây là kiểu ASP”;
%>
b) Gọi hàm trong PHP
Để gọi hàm trong PHP, khai báo tương tự như gọi hàm trong các ngôn ngữ lập
trình khác,hầu hết các hàm khi gọi cần truyền tham số và giá trị trả về.
VD: Gọi hàm date()
echo “Hôm nay là: ”.date(“d/m/Y”);
9
?>
c) Truy cập biến Form
Thông thường khi cần lấy dữ liệu của người dùng nhập, chúng ta sẽ dùng thẻ form
trong trang web nhằm ràng buộc tất cả các thẻ input, selec, textarea...
Dữ liệu đến từ script đều là biến PHP, chúng ta có thể nhận biết chúng bằng cách
sử dụng dấu $ trước tên biến. Có hai cách để truy cập dữ liệu trên form thông qua
biến.
- Để lấy giá trị của các thẻ trong form theo
dạng POST:
$_POST[‘tên_thẻ’]
- Để lấy giá trị của các thẻ trong form theo dạng GET: $_GET[‘tên_thẻ’]
d) Khai báo biến
PHP Engine không cần yêu cầu khai báo biến trước khi sử dụng, tuy nhiên nên
tập thói quen khai báo và khởi tạo giá trị ban đầu cho biến trước khi sử dụng chúng.
e) Gán giá trị cho biến
Để gán giá trị cho biến, nếu biến đó chưa khai báo trước đó, biến này được coi như
vừa khai báo và khởi tạo. Trong trường hợp biến đã khai báo, biến này chỉ thay đổi
giá trị.
VD:
f) Kiểu dữ liệu của biến trong PHP
PHP hỗ trợ 5 kiểu dữ liệu
- Interger: Sử dụng hầu hết cho giá trị có kiểu dữ liệu là số.
- Double: Sử dụng hầu hết cho giá trị có kiểu dữ liệu là số thực.
- String: Sử dụng hầu hết cho giá trị có kiểu dữ liệu là chuỗi, ký tự.
- Array: Sử dụng hầu hết cho giá trị có kiểu dữ liệu là mảng có các phần tử cùng
kiểu dữ liệu.
- Object: Sử dụng hầu hết cho giá trị có kiểu dữ liệu là đối tượng của lớp.
g) Phát biểu có điều khiển
- Phát biểu If: Phát biểu if với một điều kiện, nếu điều kiện là true thì khối lệnh
trong phát biểu If sẽ được thực hiện, điều kiện được khai báo trong dấu ()
VD: $a = 10;
$b=6;
if($a>$b)
echo $a+$b;
Khối lệnh trong bất kỳ phát biểu điều khiển nào cũng có thể sử dụng dấu { và }. Có
11
nghĩa là nếu khối lệnh trong phát biểu lớn hơn 1 thì phải sử dụng hai dấu trên.
- Phát biểu Else: phát biểu else luôn là trường hợp ngược lại của phát biểu if với
một điều kiện, nếu điều kiện là true thì khối lệnh trong
phát biểu if sẽ được thực hiện, ngược lại khối lệnh trong phát biểu
else sẽ được thực hiện.
VD: $a = 10;
$b=6;
if($a>$b) echo $a+$b;
else
$b=$a+1;
Tương tự như trong trường hợp phát biểu if, nếu khối lệnh trong phát biểu điều
khiển else có hơn 1 dòng lệnh thì sẽ phải khai báo sử dụng dấu { và }.
- Phát biểu Switch: tương tự như phát biểu if, nhưng trong trường hợp có
nhiều hơn hai tùy chọn cụ thể cho phép quyết định. VD: switch($diem)
{
case “5”: echo “Điểm trung bình”;
break;
case “7”: echo “Điểm khá”;
break;
12
case “10”: echo “Điểm giỏi”;
break;
deafault: echo “Nhập lại”;
}
Nếu đúng điều kiện case, cần khai báo phát biểu break nhằm thoát ra khỏi phát
biểu switch. Trong trường hợp không khai báo break trong mỗi phát biểu case, nếu
thỏa mãn điều kiện trong case nhưng PHP vẫn tiếp tục thực hiện tiếp các phát biểu
case sau đó.
- Phát biểu While: phát biểu vòng lặp đơn giản nhất trong PHP là vòng lặp while
cho phép bạn thực thi khối lệnh trong while cho đến khi điều kiện của while là
true như cú pháp
While (điều kiện)
{
câu lệnh thực hiện;
}
- Phát biểu do ... while: tương tự như while nhưng kiểm tra điều kiện sau khi thực
hiện khối lệnh.
do
{
câu lệnh thực hiện;
13
}
while (điều kiện)
- Phát biểu vòng lặp for: tương tự như trong phát biểu while, có thể sử dụng vòng
lặp for với 1 giới hạn chỉ định.
for (giá trị khởi đầu; điều kiện giới hạn; giá trị lặp của vòng lặp for)
{
khối lệnh thực hiện;
}
h) Lưu trữ và truy vấn dữ liệu bằng PHP
- Mở file bằng PHP:
+ fopen(tên file, chế độ mở): mở file
+ puts(), fwrite(): ghi file
+ close(): Đóng file
+ feof(): Nhận giá trị true nếu con trỏ ở cuối file
+ file_exists(): Kiểm tra file có tồn tại
+ filesize(): kiểm tra dung lượng của file
- Thiết lập kết nối cơ sở dữ liệu
Để kết nối cơ sở dữ liệu MySQL, cần cung cấp tên Server hay IP (có thể là
localhost) của máy chứa cơ sở dữ liệu MySQL, Username và Password để đăng
14
nhập làm việc trên cơ sở dữ liệu được mở.
-
Thiết lập kết nối:
Int mysql_pcconnect(“serverbname”, “username”, “password”);
if(!$db)
{
echo “Không kết nối được với CSDL”);
}
hoặc
$link = mysql_connect(“servername”, “username”, “password”)
or die(“Không kết nối được với CSDL”);
- Mở một CSDL: mysql_select_db(“database name”); hoặc
mysql_select_db(“database name”, $link);
-
Đóng kết nối cơ sở dữ liệu: mysql_close(database_connection);
-
Truy vấn cơ sở dữ liệu:
Int mysql_query(string sql);
Int mysql_query(string sql, [int db_connect]);
Int mysql_query(string database, string sql, [int db_connect]);
Số lượng mẩu tin: mysql_num_rows(); Cho biết số lượng mẩu tin câu truy
vấn trả về
15
-
Truy vấn dữ liệu:
Int mysql_fetch_array($result); Mysql_fetch_object($result);
- Dung lượng của tập mẩu tin: int mysql_free_result(int $result);
1.1.1.3. Ưu và ngôn ngữ nhược điểm của PHP
a. Ưu điểm
- Dùng mã nguồn mở
- Phổ biến hơn ASP (có thể thấy dựa vào số website dùng PHP)
- Tốc độ nhanh, dễ sử dụng
- Dựa vào XAMPP nên dễ cấu hình
- Nhiều hệ thống CMS miễn phí dùng
- Hỗ trợ kết nối nhiều hệ cơ sở dữ liệu: MySQL, MS SQL, Oracle…
- Chạy trên nhiều hệ diều hành
- Cộng đồng của PHP được coi là khá lớn và có chất lượng
- Thư viện phong phú
- Tính bảo mật khá an toàn
- Khả năng mở rộng cho PHP là không có giới hạn
- Luôn được cải tiến và cập nhật
b. Nhược điểm
16
- Mã nguồn không đẹp
- Chỉ chạy trên ứng dụng web
1.2. MYSQL
1.2.1. MySLQ là gì?
MySQL được phát triển và hỗ trợ bởi công ty MySQL AB của Thụy
Điển. Nó là hệ thống quản trị cơ sở dữ liệu (DBMS) cho các cơ sở dữ liệu quan
hệ (vì vậy, MySQL là một RDBMS). Cơ sở dữ liệu là một tập hợp các dữ liệu
có liên quan với nhau, có thể là văn bản, số hoặc các tập tin nhị phân được lưu
trữ có tổ chức bởi DBMS.
1.2.2. Đặc điểm của MySQL
MySQL là một phần mềm quản trị cơ sở dữ liệu dạng server-based (gần
tương đương với SQL server của Microsoft).
MySQL quản lý dữ liệu thông qua các cơ sở dữ liệu, mỗi cơ sở dữ liệu có thể có
nhiều bảng quan hệ chứa dữ liệu.
MySQL có cơ chế phân quyền người sử dụng riêng, mỗi người dùng có
thể được quản lý một hoặc nhiều cơ sở dữ liệu khác nhau, mỗi người dùng có
một tên truy cập (user name) và mật khẩu tương ứng để truy xuất đến cơ sở dữ
liệu.
Khi ta truy vấn tới cơ sở dữ liệu MySQL, ta phải cung cấp tên truy cập và
mật khẩu của tài khoản có quyền sử dụng cơ sở dữ liệu đó. Nếu không, chúng ta sẽ
không làm được gì cả.
1.2.3. Các kiểu dữ liệu trong cơ sở dữ liệu MySQL
a) Loại dữ liệu numeric
17
Loại
Range
Bytes
Diễn giải
Tinyint
-127 ->128 hay 0..255
1
Số nguyên rất nhỏ
Smallint
-32768 -> 32767 hay 0..65535
2
Số nguyên nhỏ
Mediumint
-8388608
838860
hay3
Số nguyên vừa
Int
-231 -> 231 hay 0..232-1
4
Số nguyên
Bigint
-263 -> 263 hay 0..264-1
8
Số nguyên lớn
Float
Phụ thuộc số thập phân
->
0..16777215
Số thập phân dạng
Single hay Double
Float(M,D)
±1.175494351E-38
4
±3.40282346638
Double(M,D)
Số thập phân dạng
Single
±1.7976931348623157308
±2.2250738585072014E-308
Float(M[,D])
8
Số thập phân dạng
Double
Số chấm động lưu
dưới dạng char
b) Loại dữ liệu Date and Time
Loại
Range
Diễn giải
Date
1000-01-01
Date trình bày dưới dạng YYYY-mmdd
Time
00:00:00
Time trình bày dưới dạng hh:mm:ss
23:59:59
18
DateTime
1000-01-01
Date và Time trình bày dưới dạng
00:00:00
YYY-mm-dd hh:mm:ss
9999-12-31
23:59:59
TimeStamp[(M)]
Year[(2|4)]
1970-01-01
TimeStamp
trình
bày
dưới
dạng
00:00:00
YYYY-mm-dd hh:mm:ss
1970-2069
Year trình bày dưới dạng 2 số hay 4 số
1901-2155
Trình bày đại diện của TimeStamp
Loại
Hiển thị
TimeStamp
YYYYMMDDHHMMSS
TimeStamp(14)
YYYYMMDDHHMMSS
TimeStamp(12)
YYMMDDHHMMSS
TimeStamp(10)
YYMMDDHHMM
TimeStamp(8)
YYYYMMDD
TimeStamp(6)
YYMMDD
TimeStamp(4)
YYMM
(y = năm, m = tháng, d = ngày)
c) Loại dữ liệu String
Loại
Range
Diễn giải
Char
1-255 ký tự
Chiều dài của chuỗ
Varchar
1-255 ký tự
Chiều dài của chuỗ
19
Tinyblob
28-1
Khai báo cho Fie
tự
Tinytext
28-1
Khai báo cho Field
Blob
216-1
Khai báo cho Fie
Text
216-1
Khai báo cho Field
tự.
Text
216-1
Khai báo cho Field chứa kiểu chu
ký tự.
Mediumblob
224-1
Khai báo cho Field chứa kiểu b
Vừa khoảng 16777215 ký tự.
Mediumtext
224-1
Khai báo cho Field chứa kiểu chuỗ
16777215 ký tự.
Longblob
232-1
Khai báo cho Field chứa kiểu b
lớn khoảng 4294967295 ký tự.
Longtext
232-1
Khai
báo
cho
4294967295 ký tự.
1.2.4. Phát biểu SQL
Tạo cơ sở dữ liệu:
Create Database Create