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

Báo cáo bài tập lớn môn kỹ thuật phần mềm ứng dụng

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.36 MB, 31 trang )

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
VIỆN ĐIỆN TỬ - VIỄN THÔNG

----

BÁO CÁO BÀI TẬP LỚN
MÔN: KỸ THUẬT PHẦN MỀM
ỨNG DỤNG

GVHD: Th.S Nguyễn Thị Kim Thoa
Nhóm thực hiện: Nhóm 1
1.
2.
3.
4.

Lương Văn Minh
Trương Thị Minh
Nguyễn Thị Phú
Đỗ Anh Tuấn

Hà Nội, 2017

20152445
20156078
20156240
20154077


MỤC LỤC
Chương 1. Các pha trong phát triển hệ thống


1.1
Pha
lập
hoạch………………………………………………………………..02

kế

1.2 Pha tìm hiểu u cầu……………………………………………………………
03
1.3 Pha phân tích……………………………………………………………………
04
1.4 Từ điển dữ liệu…………………………………………………………………
08
1.5
Pha
thiết
kế

liệu………………………………………………………..08

sở

dữ

Chương 2. Giao diện hệ thống
2.1 Giao diện dành cho khách hàng…………………………………………………
12
2.2
Giao
diện

dành
cho
hàng………………………………………...27

nhân

viên

cửa


Chương 1. Các pha trong phát triển hệ thống
1.1 Pha lập kế hoạch
Khởi tạo dự án:
Các mục tiêu cơ bản của hệ thống:
- Cung cấp giao diện trực quan, dễ dùng để khách hàng ghé xem các sản phẩm
và đặt hàng
- Có thể tìm kiếm các sản phẩm nhanh chóng bằng 2 ngơn ngữ tiếng Việt và
tiếng Anh
- Có thể dễ dàng quản lý lượng khách truy cập
- Dễ dàng quản lý, thống kê tình trạng hàng hóa
- Có thể dễ dàng cập nhật, bổ sung các mặt hàng mới, các thơng tin mới như
chương trình khuyến mại
- Website có thể hiển thị đa ngôn ngữ
Giá trị nghiệp vụ:
- Giúp khách hàng tiết kiệm thời gian đi mua sắm, chỉ cần ngồi ở nhà hoặc ở
bất kỳ đâu lên website tìm sản phẩm cần mua và đặt hàng. Sản phẩm sẽ được
vận chuyển tới cho khách hàng.
- Giúp quảng bá rộng rãi cửa hàng, sẽ có nhiều người biết đến cửa hàng và đặt
mua sản phẩm của cửa hàng, nhờ đó cửa hàng tăng doanh thu, lợi nhuận.

Phân tích tính khả thi:
- Khả thi về mặt kỹ thuật:
Các thành viên trong nhóm có khả năng phân tích, thiết kế cơ sở dữ liệu, lập
trình front-end và back-end cho website
=> Chúng ta hồn tồn có thể xây dựng được hệ thống này
-

Khả thi về mặt kinh tế:
+ Do các thành viên trong nhóm đều có khả năng thiết kế và lập trình cho hệ
thống nên khơng mất chi phí th nhân lực.
+ Do hệ thống không làm việc với các thiết bị ngoại vi nên khơng mất chi
phí mua phần cứng.
=> Chúng ta nên xây dựng hệ thống này

-

Khả thi về mặt tổ chức:
Trong kinh doanh, việc đa dạng hóa phương thức tiếp cận người tiêu dùng
rất quan trọng đối với một doanh nghiệp. Cùng với sự phát triển mạnh mẽ
của công nghệ thông tin, cụm từ “bán hàng trực tuyến” đã khơng cịn xa lạ
với các doanh nghiệp lớn nhỏ và được xem là con đường tiếp cận khách hàng
mới, hiệu quả và tiết kiệm chi phí. Do đó, nếu chúng ta xây dựng được hệ
thống này, nó hồn tồn có thể được triển khai trong thực tế, cụ thể là trong
các cửa hàng.
3


Quản trị dự án:
- Quản lý dự án:
Danh sách thành viên nhóm:

1. Lương Văn Minh: Leader
2. Trương Thị Minh: Timekeeper
3. Nguyễn Thị Phú: Notetaker
4. Đỗ Anh Tuấn: Team member
- Phân cơng cơng việc:
1. Lương Văn Minh: Phân tích và thiết kế hệ thống, xử lý back-end
2. Trương Thị Minh, Nguyễn Thị Phú: phân tích và xây dựng cơ sở dữ liệu
3. Đỗ Anh Tuấn: Thiết kế giao diện, front-end của website
1.2 Pha tìm hiểu u cầu
-

-

-

Mỗi khi có sản phẩm mới, sản phẩm đó sẽ được gắn 1 ID và nhân viên cửa
hàng sẽ nhập tất cả thông tin của sản phẩm đó vào hệ thống. Nhân viên cửa
hàng cũng có thể chỉnh sửa và xóa sản phẩm khỏi hệ thống.
Mỗi khi có khách hàng ghé thăm và đăng kí tài khoản thành viên trên
website, ngay lập tức thông tin của khách hàng được ghi lại và cập nhật trên
hệ thống. Khách hàng có thể sử dụng tài khoản cá nhân của mình để đăng
nhập. Khách hàng cũng có thể sửa đổi thơng tin cá nhân trong tài khoản của
mình.
Khi khách hàng ghé thăm website, khách hàng có thể xem các sản phẩm hay
dùng cơng cụ tìm kiếm để tìm các sản phẩm mong muốn. Khi đặt mua sản
phẩm, khách hàng sẽ điền vào form thông tin liên lạc: SĐT, email, địa chỉ để
đặt hàng. Sau khi khách hàng đặt mua sản phẩm, thông tin đơn hàng sẽ tự
động được lưu vào hệ thống.
Nhân viên cửa hàng có thể dễ dàng tìm kiếm thơng tin khách hàng, thơng tin
sản phẩm hay hóa đơn mua hàng của khách hàng.

Hệ thống có thể xuất ra các báo cáo, thống kê về tình trạng hàng hóa, lượng
mua, doanh thu, lợi nhuận,…

1.3 Pha phân tích:
Sơ đồ chức năng của hệ thống:
4


Sơ đồ luồng dữ liệu DFD:

Sơ đồ DFD mức 1 (chức năng 1):
5


Sơ đồ DFD mức 1 (chức năng 2):

Sơ đồ DFD mức 1 (chức năng 3):
6


Sơ đồ DFD mức 1 (chức năng 4):

Sơ đồ DFD mức 1 (chức năng 5):
7


Sơ đồ DFD mức 1 (chức năng 6):

1.4 Từ điển dữ liệu
8



ST
T
1

Viết tắt

Mơ tả

QTHT

Quản trị hệ thống: bao gồm đăng kí khách hàng, đăng
nhập, chỉnh sửa thơng tin
Thơng tin
Khách hàng
Đăng kí khách hàng: Khách hàng đăng kí thơng tin cần
thiết để tạo 1 tài khoản mua bán online như tên, gmail, số
điện thoại, địa chỉ, …
Chỉnh sửa thông tin: chỉnh sửa các thông tin cá nhân của
khách hàng
Sửa thông tin sản phẩm: các thông tin của sản phẩm như
giá, số lượng,ảnh minh họa,
Thông tin phản hồi: là đánh giá của khách hàng về sản
phẩm
Số lượng sản phẩm
Thông tin khách hàng: những thông tin cá nhân mà khách
hàng đã cung cấp khi đăng kí tài khoản hoặc giao dịch sản
phẩm
Hóa đơn: hóa đơn mua hàng


2

TT
KH
Đăng kí KH

3

Chỉnh sửa TT

4

Sửa TT SP

5

TTPH

6
7

SL SP
TT KH

8



1.5 Pha thiết kế cơ sở dữ liệu (CSDL)

Mẫu biểu:

9


Những dữ liệu cần quản lý:
- Mặt hàng
- Khách hàng
- Hóa đơn
Các thuộc tính mà hệ thống CSDL quản lý:
Mã mặt hàng, tên mặt hàng, đơn giá, hình ảnh (link ảnh), chú thích, số lượng hàng
cịn, mã nhóm mặt hàng, tên nhóm mặt hàng, mã khách hàng, tên khách hàng, số
điện thoại, email, địa chỉ, tên đăng nhập, mật khẩu (đã được mã hóa), mã hóa đơn,
giỏ hàng, tổng tiền, ngày đặt hàng, ngày nhận hàng.
Quy tắc nghiệp vụ:
- Mỗi mặt hàng có một mã duy nhất và thuộc một nhóm duy nhất.
- Mỗi nhóm mặt hàng có một mã duy nhất.
- Mỗi khách hàng có một mã duy nhất.
- Mỗi hóa đơn tại một thời điểm đặt hàng chỉ có một mã duy nhất.
Các phụ thuộc hàm:
Mã mặt hàng



(Tên mặt hàng, đơn giá, hình ảnh, mã nhóm mặt hàng)

Mã nhóm mặt hàng
Mã khách hàng
mật khẩu)






Tên nhóm mặt hàng

(Tên khách hàng, số điện thoại, email, địa chỉ, tên đăng nhập,



Mã hóa đơn (Mã khách hàng, mã mặt hàng, số lượng hàng mua, ngày đặt hàng,
ngày nhận hàng)
Chuẩn hóa CSDL:
Liệt kê các thuộc tính: Bảng R1
Chuẩn hóa 1NF bảng R1 bằng cách làm phẳng bảng => Bảng R1

10


R1

Chuẩn hóa 2NF bảng R1 => ta xác định khóa chính và tách bảng
=> Bảng R1 (khóa chính là Mã hóa đơn)
Chuẩn hóa 3NF bảng R1 => Ta thu được 4 bảng R2, R3, R4, R5
R2

R3

R4


R5

11


Sơ đồ thực thể liên kết (ERD)

12


Chương 2. Giao diện hệ thống
2.1 Giao diện dành cho khách hàng
Giao diện chính của khách hàng

Code:
ob_start();
date_default_timezone_set('Asia/Ho_Chi_Minh');
include("data/function.php");
include("connect.php");
session_start();
include("data/customer/confirmlogin.php");
?>
if(isset($_POST['user'])) $user_tmp=$_POST['user'];
else $user_tmp="";
?>
<html>
<head>


13


<meta charset="UTF-8">
<title>John's Business</title>
<link rel="stylesheet" type="text/css" href="theme.css">
</head>

background="image/bkground.gif">

<table>
<tr>if(!isset($confirm_login)){
echo "<td width='411px'></td>";
echo "<td width='589px'>";
echo "<form method='POST'>";
echo "Tên đăng nhập: ";
echo "style = 'width:150px'>";
echo "Mật khẩu: ";
echo "'width:150px'>";
echo "<input type='submit' name='login' value='Đăng nhập'>";
echo "</form>";
echo "<div class='link'>";
echo "<a href='?link=signup'>Đăng kí tài khoản mới</a>";
echo "</div>";
} else if($confirm_login==1){
echo "<td width='700px'></td>";

echo "<td width='300px'>";
echo "<div class='link'>";
echo "Xin chào <b>".$_SESSION['user']."</b>";
echo "<a href='?link=logout'>Thoát đăng nhập</a>";
echo "</div>";
echo "<div class='link'>";
echo "<a href='?link=manageaccount'>Quản lý tài
khoản</a>";
echo "</div>"; ?>
</td>
</tr>
</table>

14


if(isset($_GET['link'])) $lnk=$_GET['link']; else $lnk="";
if($lnk=="signup") include("data/customer/signup.php");
else if($lnk=="manageaccount") include("data/customer/manage.php");
else { ?>
<table width="1000px">
<tr>
<td colspan="3">

include("data/menu/slideshow/slideshow.php"); ?>

</td>
</tr>
<tr>
<td width="200px"></td>

<td width="650px"> include("data/menu/menu.php"); ?>
</td>
<td width="200px"></td>
</tr>
<tr>
<td colspan="3" align="right">

include("data/menu/search/searchtool.php"); ?>
</td>
</tr>
<tr>
<td colspan="3" align="center"> include("direct.php"); ?>
</td>
</tr>
<tr>
<td colspan="3" align="center">





Cửa hàng: John's Business

Điện thoại: 0968 401 809

Địa chỉ: Hà Nội
</td>

15


</tr>
</table>
}
ob_flush();

?>

</body>
</html>

Giao diện đăng ký tài khoản mới

Code:
<table>
<tr>
<td colspan="2">


<span style="font-size:20px">
<b>Đăng kí tài khoản mới</b>
</span>


</td>
</tr>
<form method="POST">
<tr>

16


<td width="150px">Tên khách hàng: </td>
<td>style='width:400px'>"; ?> </td>
</tr>
<tr>
<td>Tên đăng nhập: </td>
<td>style='width:400px'>"; ?> </td>

</tr>
<tr>
<td>Mật khẩu: </td>
<td>value='$pass_cus' style='width:400px'>"; ?> </td>
</tr>
<tr>
<td>Nhập lại mật khẩu:</td>
<td>value='$pass2_cus' style='width:400px'>"; ?> </td>
</tr>
<tr>
<td>Số điện thoại: </td>
<td>style='width:400px'>"; ?> </td>
</tr>
<tr>
<td>Email: </td>
<td>'$email_cus' style='width:400px'>"; ?></td>
</tr>
<tr>
<td valign="top">Địa chỉ: </td>
<td>height:100px'>".$addr_cus."</textarea>"; ?>
</td>
</tr>
<tr>
<td colspan="2">



17


"font-size:20px">

</td>
</tr>
</form>
<tr>
<td>

<div class="link"><a href="index.php">Quay lại</a></div>
</td>
</tr> if(isset($_POST['signup'])){
$name_cus_check=true;
$user_cus_check=true;
$pass_cus_check=true;
$tel_cus_check=true;
$addr_cus_check=true;
// name
if($_POST['name_cus']==""){
$name_cus_check=false;
notice("Tên khách hàng không được để trống!");
}
// username
if($_POST['name_cus'])
if($_POST['user_cus']==""){
$user_cus_check=false;
notice("Tên đăng nhập không được để trống!");
} else if(strpos($_POST['user_cus'], " ")){

$user_cus_check=false;
notice("Tên đăng nhập không được chứa dấu cách");
}else{
$user_cus=$_POST['user_cus'];
$cus=mysqli_fetch_array(mysqli_query($connect,"select count(*)
from customer where username='$user_cus'"),MYSQLI_NUM);
if($cus[0]==1) {
$user_cus_check=false;

18


notice("Tên đăng nhập đã có người sử dụng!");
}
}
// password
if($_POST['pass_cus']==""){
$pass_cus_check=false;
notice("Mật khẩu không được để trống");
} else if($_POST['pass_cus']!=$_POST['pass2_cus']){
$pass_cus_check=false;
notice("Mật khẩu nhập lại không trùng khớp!");
}
// tel
if($_POST['tel_cus']==""){
$tel_cus_check=false;
notice("Số điện thoại không được để trống!");
}
// email
if($_POST['addr_cus']==""){

$addr_cus_check=false;
notice("Địa chỉ không được để trống!");
}
if($name_cus_check && $user_cus_check && $pass_cus_check &&
$tel_cus_check && $addr_cus_check){
$name_cus=$_POST['name_cus'];
$user_cus=$_POST['user_cus'];
$pass_cus=sha1($_POST['pass_cus']);
$tel_cus=$_POST['tel_cus'];
$email_cus=$_POST['email_cus'];
$addr_cus=$_POST['addr_cus'];
mysqli_query($connect,"insert into customer (id, name,
username, password, tel, email, address) values (NULL, '$name_cus',
'$user_cus', '$pass_cus', '$tel_cus', '$email_cus', '$addr_cus');");
notice_and_nextpage("Đăng kí tài khoản thành
công!","index.php");
}
}

19


?>
</table>


Code xử lý đăng nhập:
if(isset($_POST['login'])){
$user=$_POST['user'];
$pass=sha1($_POST['pass']);

$cus=mysqli_fetch_array(mysqli_query($connect,"select count(*) from
customer where username='$user' and password='$pass'"),MYSQLI_NUM);
if($cus[0]==1){
$_SESSION['user']=$user;
$_SESSION['pass']=$pass;
} else notice_and_nextpage("Sai tên đăng nhập hoặc mật khẩu!",
"index.php");
}
if(isset($_SESSION['user'])){
$user=$_SESSION['user'];
$pass=$_SESSION['pass'];
$cus=mysqli_fetch_array(mysqli_query($connect,"select count(*) from
customer where username='$user' and password='$pass'"),MYSQLI_NUM);
if($cus[0]==1) $confirm_login=1;
}
?>

Giao diện quản lý tài khoản của khách hàng
20


Code:
if(!isset($confirm_login)) exit();
$user_cus=$_SESSION['user'];
$cus=mysqli_fetch_array(mysqli_query($connect,"select * from customer
where username='$user_cus'"),MYSQLI_ASSOC);
if(isset($_GET['survey'])){
include("data/customer/survey/survey.php");
}else {

?>
<table>
<tr>
<td colspan="2" width="550px">
<div class="link">


<span style="font-size:20px">
<b>Quản lý tài khoản</b>
</span>


</div>
</td>
</tr>
<form method="POST">
<tr>
<td width="150px">Tên khách hàng: </td>

21


<td>echo "style='width:400px'>"; ?> </td>
</tr>
<tr>
<td>Tên đăng nhập: </td>
<td> <?php echo $_SESSION['user']; ?> </td>
</tr>
<tr>
<td>Mật khẩu: </td>
<td>echo "<div class='link'>";

echo "<a href='?link=manageaccount&changepass=yes'>Đổi mật
khẩu</a>";
echo "</div>";
if(isset($_GET['changepass'])){
echo "<tr><td><i>Mật khẩu cũ: </i></td>";
echo "<td>'width:400px'></td></tr>";
echo "<tr><td><i>Mật khẩu mới: </i></td>";
echo "<td>'width:400px'></td></tr>";
echo "<tr><td><i>Nhập lại mật khẩu mới: </i></td>";
echo "<td>'width:400px'></td></tr>";
}
?>
</td>
</tr>
<tr>
<td>Số điện thoại: </td>
<td>echo "'width:400px'>"; ?>
</td>
</tr>
<tr>

22


<td> Email: </td>

<td>echo "= 'width:400px'>"; ?>
</td>
</tr>
<tr>
<td valign="top">Địa chỉ: </td>
<td>'width:400px;height:100px'>";
echo $cus['address']; echo "</textarea>"; ?>
</td>
</tr>
<tr>
<td colspan="2">

"font-size:20px">

</td>
</tr>
</form>
if(isset($_POST['update'])){
$name_cus_check=true;
$pass_cus_check=true;
$tel_cus_check=true;
$addr_cus_check=true;
// name
if($_POST['name_cus']==""){
$name_cus_check=false;
notice("Tên khách hàng không được để trống!");
}

// password
if(isset($_GET['changepass']))
if($_POST['old_pass']=="" || $_POST['new_pass']==""){
$pass_cus_check=false;
notice("Mật khẩu không được để trống");

23


}else if(sha1($_POST['old_pass'])!=$pass_cus){
$pass_cus_check=false;
notice("Mật khẩu cũ không đúng!");
}else if($_POST['new_pass']!=$_POST['new_pass2']){
$pass_cus_check=false;
notice("Mật khẩu nhập lại không trùng khớp!");
}
// tel
if($_POST['tel_cus']==""){
$tel_cus_check=false;
notice("Số điện thoại không được để trống!");
}
// address
if($_POST['addr_cus']==""){
$addr_cus_check=false;
notice("Địa chỉ không được để trống!");
}
if($name_cus_check && $pass_cus_check && $tel_cus_check &&
$addr_cus_check){
$name_cus=$_POST['name_cus'];
if(isset($_GET['changepass']))

$pass_cus=sha1($_POST['new_pass']);
$tel_cus=$_POST['tel_cus'];
$email_cus=$_POST['email_cus'];
$addr_cus=$_POST['addr_cus'];
mysqli_query($connect,"update customer set name='$name_cus',
password='$pass_cus', tel='$tel_cus',
email='$email_cus', address='$addr_cus' where
username='$user_cus'");
$_SESSION['pass']=$pass_cus;
notice_and_nextpage("Cập nhật thông tin tài khoản thành
công!","index.php");
}
}
?>
<tr>

24


<td>

<div class="link"><a href="index.php">Quay lại</a></div>
</td>
</tr>
</table>

}
?>

Giao diện xem sản phẩm


Code:
if(isset($confirm_login)){
$user_cus=$_SESSION['user'];
}
if(isset($_GET['id'])) $ind=$_GET['id'];
echo "<table width='1000px'>";
echo "<tr>";
echo "<td width='150px' valign='top'>";
echo "


";
include("data/menu/product/group.php");
echo "</td>";
echo "<td>";
echo "<table>";

25


×