Tải bản đầy đủ (.doc) (69 trang)

Ứng dụng công nghệ json 2 0 xây dựng website đấu giá trực tuyến

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.37 MB, 69 trang )

Đồ án tốt nghiệp

Trờng Đại học Vinh

TRờng đại học vinh

Khoa công nghệ thông tin
=== & ===

lê thị phợng

ứng dụng công nghệ json 2.0
xây dựng website đấu giá trực
tuyến

đồ án TốT NGHIệP kỹ s cntt

Vinh, 5/2010
SV: Lê Thị Phợng

1

Lớp 46K2 - CNTT


Đồ án tốt nghiệp

Trờng Đại học Vinh

LI NểI U
Có thể nói sự phát triển vợt bậc của Công nghệ thông tin đã giúp con ngời hoá giải đợc rất nhiều bài toán nhng một điều quan trọng ở đây là không chỉ


đơn thuần là giải đợc bài toán đó mà là phơng pháp để giải bài toán đó nh thế
nào sao cho có hiệu quả nhất. Hầu hết trong tất cả các ứng dụng Web hiện nay
đều làm việc dựa trên mô hình 3 lớp và sử dụng công nghệ Ajax. Việc ng
dng ny đã làm cho các phần của ch ơng trình tr nên độc lập hơn, đáng tin
cậy và do đó tính bảo mật cao hơn. Điều đặc biệt hơn là khi sử dụng Ajax thì
ngời dùng cảm thấy kết quả trả về ngay lập tức mà không cần nạp lại trang.
Nhng ng dng có tính thay i thng xuyên nh ng dng Web gi đây
s tr nên linh động hơn khi có nhiều ngời truy cập hoặc trở nên dễ dàng hơn
trong việc thay thế và nâng cấp. Tuy nhiên có một số bài toán đòi hỏi sử dụng
thêm công nghệ khác để có thể giải quyết đợc một cách tối u nhất. Riờng i
vi bi toỏn u giỏ trc tuyn vic h thng chy theo thi gian thc v vic
lm sao request trang liờn tc l vụ cựng quan trng vỡ vy õy em s
dng cụng ngh JSON, mt cụng ngh ca nhng ngi lp trỡnh client script
JSON s gim ti quỏ trỡnh truy xut d liu liờn tc cho server.
Cui cựng, xin chõn thnh cm n cỏc thy, cụ v cỏc bn, c bit l
s hng dn trc tip ca thy giỏo ThS. V Chớ Cng cựng cỏc anh trong
b phn cụng ngh ca Cụng ty VTCOnline ó ch dn cụng ngh mi cho
em trong quỏ trỡnh xõy dng ỏn ny.
Mc dự ó c gng hon thnh ỏn trong phm vi v kh nng cho
phộp nhng chc chn s khụng trỏnh khi nhng thiu sút. Em rt mong
nhn c s chia s, gúp ý ca cỏc thy, cụ v cỏc bn.
Sinh viờn thc hin
SV: Lê Thị Phợng

2

Lớp 46K2 - CNTT


§å ¸n tèt nghiÖp


Trêng §¹i häc Vinh

Lê Thị Phượng

SV: Lª ThÞ Phîng

3

Líp 46K2 - CNTT


§å ¸n tèt nghiÖp

Trêng §¹i häc Vinh

Chương I

TÌM HIỂU CÔNG NGHỆ JSON
I. GIỚI THIỆU
JSON viết tắt của JavaScript Object Notation. Cũng như XML, JSON
là một định dạng text data, cấu trúc JSON cho phép data dễ đọc, dễ thao tác,
nhẹ, độc lập ngôn ngữ, và đặc biệt là JSON có thể mô tả dữ liệu theo object
oriented.
Tại sao JSON có liên quan đến Javacript. Đơn giản là vì JSON chính là
cách biểu diễn một đối tượng Javascript.
Khi sử dụng Json với Javascript, không cần phải có các bước phân tích
phức tạp như đối với XML. Mà có thể truy vấn trực tiếp giá trị theo tên (khóa)
được định nghĩa trong JSON.
JSON là một chuẩn cực kỳ quan trọng trong lập trình webclient. Tương

tác client-server (ajax chẳng hạn) với JSON đỡ mệt hơn sử dụng XML rất
nhiều, được xây dựng dùng cùng với JavaScript để tạo requests. Code ở
server, có thể viết trên nhiều ngôn ngữ khác nhau, như C#, Python, PHP và
Java.
Đối với lập trình viên clientscript. Nó rút ngắn thời gian phát triển hơn
là sử dụng XML.
JSON là một nét đặc trưng của ngôn ngữ này. Nó cung cấp cho lập
trình viên một khả năng tạo các mảng cũng như phác thảo ra các đối tượng
một cách đơn giản và ngắn gọn. Để hiểu được JSON, trước hết ta tìm hiểu
xem cách thức mà mảng trong JavaScript hoạt động.
JavaScript cung cấp cho chúng ta một đối tượng Array. Cách cài đặt
một mảng mới khá đơn giản, ví dụ:
myArray = new Array();
myLibrary.books = new Array();
SV: Lª ThÞ Phîng

4

Líp 46K2 - CNTT


§å ¸n tèt nghiÖp

Trêng §¹i häc Vinh

Khá giống với các ngôn ngữ như Java hay C, JavaScript cho phép khai
báo trước số phần tử của mảng cũng như gán một giá trị cho một phần tử của
mảng:
family=new Array(4);
family[0] = “Tom”;

Hoặc thậm trí ta có thể kết hợp với một giá trị khóa như sau:
family["father"]=”Tom”;
Tất nhiên ta có thể gán bất cứ giá trị nào cho mảng thậm trí là một
object, bởi JavaScript là một ngôn ngữ có kiểu khá lỏng lẻo. Cách khởi tạo
giá trị mảng như trên có vẻ nhanh gọn, nhưng nếu như mảng của chúng ta khá
lớn và phức tạp thì việc khai báo như vậy sẽ rất tẻ nhạt. Một cách khác để để
khởi tạo các giá trị ban đầu cho mảng là sử dụng cặp ngoặc vuông [ ]:
family=["Tom","Jery","Jack","Timy"];
Hoặc nếu dùng cặp đấu { } kết hợp với giá trị khóa như sau:
family={
farther: “Tom”,
mother: “Jery”,
first_son: “Jack”,
second_son: “Timy”
};
Đây chính là cách mô tả đối tượng kiểu JSON.
Nếu muốn sử dụng dấu cách trống cho các khóa ta có thể dùng cắp dấu
“” ví dụ:
“first son”: “Jack”,
Chúng ta cũng có thể lồng các JSON vào nhau để khai báo các đối
tượng phức tạp hơn, ví dụ:
var rectangle={

SV: Lª ThÞ Phîng

5

Líp 46K2 - CNTT



§å ¸n tèt nghiÖp

Trêng §¹i häc Vinh

topleft: { x: 1, y: 2 },
width: 5,
height: 10
};
//Khi đó
alert(rectangle.topleft.x); // sẽ đưa ra giá trị 1
Để thêm vào một phương thức cho đối tượng khai báo theo kiểu JSON
ta làm khá đơn giản như sau:
var rectangle={
//Thuộc tính
topleft: { x: 1, y: 2 },
width: 5,
height: 10,
//Phương thức
area: function()
{
return this.width*this.height;
}
};
//Khi đó
alert(rectangle.topleft.x); // sẽ đưa ra giá trị 1
alert(rectangle.area()); // sẽ đưa ra giá trị 50
Trong ví dụ trên, ta sử dụng từ khóa this để truy cập vào các thuộc tính
vừa khai báo của bản thân đối tượng. Đây là một từ khóa đặc biệt và khá
mạnh, ta sẽ có dịp đề cập đến nó nhiều hơn trong các phần sau.
Như vậy, bây giờ ta có thể sử dụng đối tượng Object hoặc JSON để

khai báo một đối tượng trong JavaScript hoặc thậm trí sử dụng kết hợp cả

SV: Lª ThÞ Phîng

6

Líp 46K2 - CNTT


§å ¸n tèt nghiÖp

Trêng §¹i häc Vinh

hai phương pháp trên. Tuy nhiên, nếu ta thường xuyên phải sử dụng, cũng
như với rất nhiều đối tượng trong chương trình thì cả hai phương pháp trên
tỏ ra kém hiệu quả, bởi lẽ với mỗi lần các thuộc tính thay đổi ta lại phải thực
hiện các khai báo khá phức tạp do vậy tính tái sử dụng của code không được
đảm bảo.
Khi sử dụng JSON với JavaScript hay ActionScript, không cần phải có
các bước phân tích phức tạp như đối với XML. Mà có thể truy vấn trực tiếp
giá trị theo tên (khóa) được định nghĩa trong JSON.
Ví dụ:
Ta có một dữ liệu XML:
<data>
<x>2</x>
<y>3</y>
</data>
Sử dụng JavaScript để đọc dữ liệu này, ta phải qua một bước phân tích,
đưa văn bản XML thành một đối tượng dữ liệu và đọc dữ liệu theo nodes. Giả
sử object của ta là xmlObj, ta muốn lấy dữ liệu x và y ta sẽ gọi:

var x = xmlObj.childNodes[0].text;
var y = xmlObj.childNodes[1].text;
Trong trường hợp tương tự, ta có một dữ liệu JSON:
var jsonStr = '{ data: { x: 2 , y: 3}}';
Sử dụng JavaScript ta chỉ cần gọi:
eval( 'var jsonObj = ' + jsonStr + ';');
var x = jsonObj.x;
var y = jsonObj.y;
Đối với lập trình viên client script. JSON rút ngắn thời gian viết mã JS,
AS hơn là sử dụng XML.

SV: Lª ThÞ Phîng

7

Líp 46K2 - CNTT


§å ¸n tèt nghiÖp

Trêng §¹i häc Vinh

II. SỬ DỤNG JSON TRONG AJAX RESPONSE
Ta có thể dùng JSON trong bất kì việc gì ta muốn như cách ta dùng
XML vậy, nhưng ở đây em muốn đề cập ứng dụng của nó trong Ajax
application
1. Tạo và truy xuất JSON trong Ajax application (both server &
client side)
1.1. Tạo response data và send về client
Như ta đã biết trong Ajax application, client sẽ send XMLHttpRequest

đến server, server sẽ handle request và trả về response, response có thể là
plain text, xml, js, json ...
VD: chúng ta define 1 java bean có 2 properties như sau:
public class Customer {
private String id;
private String name;
public Customer(String id, String name) {
this.id = id;
this.name = name;
}
//các accessor methods .....
}
Và khởi tạo object: Customer customer = new Customer("abc",
"sabrina");
Nếu diễn đạt object customer dưới dạng XML, chúng ta có thể có dạng
sau:
<Customer>
<id>abc</id>
<name>sabrina</name>

SV: Lª ThÞ Phîng

8

Líp 46K2 - CNTT


§å ¸n tèt nghiÖp

Trêng §¹i häc Vinh


</Customer>
Nếu diễn đạt object customer dưới dạng JSON, thì:
{id: "abc", name: "sabrina"}
-----> Cả JSON và XML đều có tính dễ đọc, JSON chiếm dụng bộ nhớ
ít hơn XML.
Để tạo ra xml response trên, ta có thể tạo ra từng String rồi cộng lại.
Hoặc ta có thể dùng các XML data binding framework (JAXB, JDOM,
XMLBeans ...)
VD: dùng JAXB tạo ra xml từ java object
JAXBContext jaxbContext =
JAXBContext.newInstance("com.giaodn.booksearchdemo");
Marshaller marshaller = j axbContext.createMarshaller();
marshaller.marshal(customer, response.getOutputStream());
Để tạo ra JSON response như trên ta cũng có thể cộng các String lại với
nhau, hoặc dùng library,
VD: tạo ra JSON response dùng Json-lib
response.getWriter().write(JSONObject.fromObject(customer).toString());
1.2. Handle data ở phía client
Nếu ta quyết định dùng XML là reponse data, thì ta phải dùng
javascript để traverse cây DOM(Document Object Model) và lấy ra từng node
bằng DOM api document.getElementById("id");
Nếu dùng JSON thì ta dùng hàm eval() của javascript để evaluate
JSON data thành javascript object:
var jsonRep = eval(respondText);
Sau đó ta sẽ truy xuất data từ js object:
jsonRep.id;
jsonRep.name;

SV: Lª ThÞ Phîng


9

Líp 46K2 - CNTT


§å ¸n tèt nghiÖp

Trêng §¹i häc Vinh

Chương II

TỔNG QUAN VỀ ĐỀ TÀI
I. GIỚI THIỆU VỀ ĐẤU GIÁ TRỰC TUYẾN
1. Đấu giá trực tuyến là gì?
Mô hình đấu giá trực tuyến là hình thức mà các bên tham gia đấu giá
sản phẩm và dịch vụ thông qua Internet. Các hoạt động mua và bán trong đấu
giá trực tuyến sẽ được phần mềm đấu giá kiểm soát.
2. Các phương thức đấu giá trực tuyến
Hiện tại có hai phương thức chính được sử dụng:
• Đấu giá kiểu Anh:
Đây là hình thức đấu giá từ thấp tới cao. Người tham gia sẽ trả giá công
khai với nhau, giá sau cao hơn giá trước. Cuộc đấu giá kết thúc khi không ai
đưa ra giá cao hơn hoặc đã đạt tới mức giá trần, khi đó người chiến thắng là
người đưa ra mức giá cao nhất.

• Đấu giá kiểu Hà Lan:
Đấu giá Hà Lan là một hình thức đấu giá mà trong cuộc đấu giá này,
một món hàng được chào với một mức giá rất cao. Giá ban đầu được đưa ra
SV: Lª ThÞ Phîng


10

Líp 46K2 - CNTT


§å ¸n tèt nghiÖp

Trêng §¹i häc Vinh

này cao hơn rất nhiều giá trị món hàng và chẳng có người bán nào hy vọng
bán được món hàng với giá cao như vậy. Vì bidders biết số lượng của bids,
bids không được đóng dấu như trong các hình thức đấu giá khác.Giá được
giảm xuống từ từ cho đến khi một bidder quyết định cái giá hiện tại đó.
Bidders sẽ trả cái giá đó và trở thành người thắng cuộc.
3. Những ưu điểm của mô hình ĐGTT:
• Không ràng buộc về mặt thời gian: Các sản phẩm được liệt kê trong
một khoảng thời gian nhất định (tùy theo người bán), trong khoảng thời gian
này người tham gia đấu giá có thể đặt giá vào bất kỳ lúc nào.
• Xóa bỏ khoảng cách địa lý: Người mua, người bán có thể tham gia
từ bất kì nơi nào có máy tính truy cập Internet.
• Sức mạnh của tương tác xã hội: Tương tác xã hội mà liên quan đến
quá trình đấu giá thì giống như việc đánh bạc. Những người đấu giá chờ đợi
trong hi vọng là họ sẽ thắng (eBay gọi những người đặt giá thành công là
những người chiến thắng). Cũng giống như sự ham mê cờ bạc, nhiều người
tham gia đặt giá chủ yếu để "chơi trò chơi" chứ không muốn giành được
món hàng. Và điều này tạo ra một sự phân chia lớn các khách hàng tiềm
năng của eBay.
• Số lượng người đấu giá lớn: Bởi vì tiềm năng có giá thấp, hàng hóa
và dịch vụ đa dạng, dễ dàng tham gia và lợi ích xã hội của quá trình đấu giá.

• Số lượng người bán hàng lớn: Bởi vì có nhiều người tham gia đặt
giá, có thể đạt được giá cao, giảm chi phí bán hàng, dễ buôn bán.
• Mạng lưới kinh doanh. Số lượng lớn các người tham gia đấu giá
sẽ khuyến khích nhiều người bán, ngược lại số lượng lớn các người bán sẽ
làm tăng số lượng người đấu giá. Càng có nhiều hoạt động thì hệ thống
càng lớn mạnh, và mô hình kinh doanh càng trở nên có giá trị cho những
người tham gia.
SV: Lª ThÞ Phîng

11

Líp 46K2 - CNTT


§å ¸n tèt nghiÖp

Trêng §¹i häc Vinh

II. TỔNG QUAN MÔ HÌNH ĐẤU GIÁ KIỂU ANH
Trong phương thức này có 2 hình thức đấu giá chính:
- Penny Auction
- Nail Biter Auction
1. Penny Auction
1.1. Mô tả chung
Ta sẽ đưa sản phẩm A lên đấu giá với 1 mức giá khởi điểm rất thấp và
quy định thời gian đấu giá. Người dùng sẽ tham gia đấu giá. Mỗi 1 lần đặt
giá, người dùng sẽ mất 1 khoản phí nhất định và mức giá sẽ tự động nhảy lên
1 bậc. Giá sau= giá trước + bước nhảy giá. Bước nhảy giá là do ta quy định từ
trước. Thời gian đấu giá sẽ được đếm lùi. Khi thời gian lùi về khoảng thời
gian động (ví dụ 15s cuối) thì mỗi lần người dùng đặt giá trong khoảng thời

gian đó, thời gian động sẽ được reset lại. Người thắng cuộc là người trả giá
cuối cùng khi thời gian lùi về đến 0.
Để tham gia đấu giá, người dùng sẽ phải mua các gói đặt giá (10bid,
20bid). Mỗi lần đặt giá, số lượt đặt giá còn lại sẽ bị trừ dần.
Người dùng có thể sử dụng (bid agent = proxy bidding = automatic
bidding). Hệ thống website sẽ tự động đặt giá hộ người dùng khi họ không có
thời gian ngồi trước màn hình. Người dùng sẽ chọn gói đặt giá tự động
(10bid, 20 bid…) và chọn mức giá cao nhất mà mình chấp nhận mua. Khi đó
hệ thống sẽ tự động đặt giá hộ người dùng. Mỗi khi có 1 người dùng khác đặt
giá và thời gian lùi về 4s, hệ thống sẽ tự động đặt giá hộ cho đến khi hết gói
đặt giá và đạt đến mức giá cao nhất thì dừng
Mức giá người dùng phải trả là giá thắng + chi phí vận chuyển. Vậy
thực chi của người dùng = giá thắng + chi phí đặt giá. Các website trên thế
giới có 2 sự lựa chọn cho người dùng.
+ Mua với giá thắng

SV: Lª ThÞ Phîng

12

Líp 46K2 - CNTT


§å ¸n tèt nghiÖp

Trêng §¹i häc Vinh

+ Trong trường hợp giá thắng + chi phí đặt giá > giá bán lẻ của sản
phẩm thì cho phép người dùng mua với giá bán lẻ và hoàn lại chi phí đặt giá.
1.2. Đặc điểm

- Công khai: bidder, mức giá, bước nhảy giá là công khai. Thường thì
tên 3 bidder bid gần nhất sẽ hiển thị. Mỗi lần người dùng đặt giá thì mức giá
sẽ tự động tăng lên và hiển thị ra ngoài
- Bước nhảy giá là rất nhỏ và phí mỗi lần bid là rất lớn.
+ Mức giá khởi điểm và bước nhảy giá rất nhỏ là để thu hút người tham
gia. User thấy sản phẩm được bán với giá rất thấp (thường chỉ bằng 1/500 giá
trị sản phẩm sau khi kết thúc đấu giá) sẽ rất hứng thú tham gia. Đây cũng là
điểm mới lạ, hấp dẫn của hình thức này.
+ Phí đặt giá lớn. Phí đặt giá thường lớn hơn gấp nhiều lần so với bước
nhảy giá. Mục đích là để ta có thể thu hồi vốn và có lãi khi bán sản phẩm với
giá rẻ như vậy.
- Website tham gia hình thức này muốn thành công thì phải:
+ Có cộng đồng lớn và nhanh chóng thu hút cộng đồng. Người tham
gia càng đông thì phí thu được càng lớn >>> bù được khoản lỗ khi bán sản
phẩm với giá rẻ và có lãi.
+ Minh bạch: Lo lắng của người dùng khi tham gia hình thức này là
tính minh bạch của website. Người ta lo là website đấu giá sẽ tạo tài khoản ảo,
tự đấu giá để nâng mức giá lên hoặc để người mua không thể mua được sản
phẩm với giá rẻ. Những trang web như thế kiểu gì cũng sẽ bị người dùng phát
hiện và liệt kê vào danh sách các site bị tẩy chay và lưu truyền trên các forum,
các trang reviews. >>> Không dùng hình thức nhà cái tham gia đặt giá.
1.3. Công thức tính
Ta có các tham số sau đối với mỗi sản phẩm
P: giá bán trên thị trường (giá bán lẻ). Đơn vị 10 000 VND

SV: Lª ThÞ Phîng

13

Líp 46K2 - CNTT



§å ¸n tèt nghiÖp

Trêng §¹i häc Vinh

Po: giá khởi điểm. Đơn vị 10 000 VND
p: phí mỗi lần. Đơn vị 10 000 VND
L: tổng số bid cho mỗi sản phẩm đó
r: bước nhảy giá. Đơn vị 10 000 VND
Những yếu tố sau là giống nhau đối với mỗi sản phẩm
- r: Đúng như cái tên penny auction, bước nhảy giá ở mối sản phẩm sẽ
chỉ là 1 000 VND. Trên thế giới thì r = 1 cent. Vậy r = 0.1
- Thời gian động: 15s.
Yếu tố quyết định nhất đối với sự thành công của website đấu giá kiểu
này chính là L.
L phụ thuộc vào các yếu tố gì?
+ Đặc tính của sản phẩm. Sản phẩm càng hay, càng hot trên thị trường
thì càng thu hút người tham gia
+ Giá sản phẩm. Quan sát các phiên đấu giá kết thúc thì nhận thấy giá
sản phẩm càng cao, L càng cao. Do giá càng cao, người dùng thấy mức chênh
lệch giữa P và giá thắng càng lớn >>> càng tham rẻ >>> càng thích tham gia.
Với mỗi sản phẩm, để có thể hoà vốn thì:
P = Po + r * L + p * L = Po + L * (r + p)
Do Po nhỏ hơn rất nhiều so với P và r nhỏ hơn rất nhiều so với p nên ta
có thể đơn giản hoá như sau:
P=L*p
p = P/L
Tỷ lệ P/L và Po có thể tính ra con số trung bình dựa vào xác suất thống
kê. Nếu có thời gian ta sẽ lấy dữ liệu của các phiên đấu giá kết thúc để tính ra

con số này.
Ví dụ: http: //www.bidrivals.com/us/completed_auctions.html?page=1

SV: Lª ThÞ Phîng

14

Líp 46K2 - CNTT


§å ¸n tèt nghiÖp

Trêng §¹i häc Vinh

Theo em ước tính, trong thời gian đầu, P/L = 2. Do đó p = 1.5 (tức là
15.000VND) Mức giá này cũng là hợp lý. Bằng giá khi người dùng chơi
nhắn tin SMS. Khi cộng đồng càng lớn thì P/L sẽ càng giảm, lợi nhuận của
mình sẽ tăng.
Po = P/30
1.4. Sản phẩm được đem đấu giá
- Về mặt lý thuyết thì bất cứ sản phẩm nào cũng có thể đem đấu giá
theo loại hình này. Tuy nhiên nên chọn các mặt hàng:
+ Dễ bán, nhu cầu tiêu dùng cao
+ Giá trị vừa phải
- Khi site lớn mạnh rồi thì có thể bán những mặt hàng công nghệ, quần
áo, trang sức, phụ kiện.
+ mặt hàng công nghệ dễ bán hơn vì có thông số kỹ thuật quy chuẩn >>
tập trung hơn. Có thể nhập hàng theo hình thức ký gửi. Khi nào mình bán
được hàng mới nhập chính thức.
+ Quần áo, trang sức, phụ kiện, mỹ phẩm khó bán hơn chút do nguồn

gốc xuất xứ và độ quy chuẩn chưa rõ ràng.
2. Nail biter auction (http: //www.junglecents.com/ )
2.1. Mô tả chung
Về mặt bản chất là tương đối giống penny auction. Chỉ có một số điểm
khác biệt:
+ Thay vì trả phí cho mỗi lần đặt giá thì người chơi chỉ việc trả phí tham
gia ban đầu (giống như là vé vào cửa) và được đặt giá bao nhiêu lần tuỳ thích.
+ Mỗi sản phẩm sẽ có 1 số vé vào cửa nhất định. Chỉ khi nào vé vào
cửa đươc bán hết thì auction mới bắt đầu
+ Bước nhảy giá đối với mỗi sản phẩm khác nhau là khác nhau. Sản
phẩm càng đắt tiền thì bước nhảy giá càng cao

SV: Lª ThÞ Phîng

15

Líp 46K2 - CNTT


§å ¸n tèt nghiÖp

Trêng §¹i häc Vinh

+ Không đấu giá tự động được, phải ngồi chờ
2.2. Đặc điểm
- Hình thức này bộc lộ nhiều yếu điểm hơn so với penny auction.
http: //www.junglecents.com/page/how-it-works
- Như junglecent, người chơi phải đợi đến khi vé vào cửa được bán hết
thì mới đấu giá được , chỉ mua được chỗ lúc đó thôi>>> đợi lâu, mất thời
gian, ham muốn sản phẩm giảm xuống.

Nếu chỗ không bán hết thì sao? >>> Cái này mình có thể cải tiến:
không nhất thiết phải đợi hết vé mới bắt đầu đấu giá. Bắt đầu lúc nào cũng
được và người tham gia mua vé lúc nào cũng được, không giới hạn số chỗ
- Bước nhảy giá đối với mỗi sản phẩm khác nhau là khác nhau. Sản
phẩm càng đắt tiền thì bước nhảy giá càng cao >>> giá thắng sẽ cao, gần với
giá bán lẻ >>> Mất đi bản chất của penny auction là giá cực thấp, bước nhảy
thấp >>> Khó thu hút người dùng, và khoảng thời gian động cũng khó thu hút
người dùng vì lúc đó giá cũng đã cao rồi. >>> Chẳng khác gì đấu giá lên
thông thường
- Nếu để bước nhảy thấp như penny aution thì tiền bán vé không đủ để
bù lại chênh lệch giá thắng và giá bán lẻ. Nếu nâng giá vé lên quá cao thì ít
người mua. Trong khi đó phí bid ở mức vừa phải, đến cuối auction, người
dùng hăng máu lên thì sẵn sàng mua nhiều bid.
- Không cho đấu giá tự động. Bỏ đi đấu giá tự động là bỏ đi 1 tiện ích
cho người dùng và hạn chế những người ít thời gian. Những người nhiều thời
gian thì vẫn có thể single bid được. Còn những người bận rộn thì sẽ ít tham
gia. User thì cũng giới hạn bởi sức lực, quỹ thời gian >>> Không cho đấu giá
tự động sẽ hạn chế cộng đồng tham gia. Ngay cả đấu giá lên bình thường như
eBay họ cũng có đấu giá tự động gọi là proxy bidding

SV: Lª ThÞ Phîng

16

Líp 46K2 - CNTT


§å ¸n tèt nghiÖp

Trêng §¹i häc Vinh


- Bước nhảy: trong trường hợp này bước nhảy giá không hề mang lại
lợi cho ta như penny auction là rõ ràng và không mang lại lợi cho người tham
gia. Ví dụ user muốn bid cao hơn current bid là 10 bước nhảy thì phải ấn bid
10 lần >>> mất thời gian. Nên cải tiến là cho user được tự đặt giá và mức giá
sau >= mức giá trước + bước nhảy giá
->>> Chính bởi những yếu điểm đó nên junglecents khó phát triển, số
lượt truy cập mỗi ngày tầm 1000 >>> quá ít. Truy cập là vậy chứ chơi thì
chẳng có mấy hơn nữa hiện tại website này có quá ít sản phẩm, chợ vắng vẻ
thì làm sao thu hút được người đi chợ.
>>> Nên quy về đấu giá lên bình thường, nhưng có reset time và ai
tham gia thì mua vé, không giới hạn số vé, số bid. Mua vé lúc nào cũng được.
2.3. Công thức tính
Ta có các tham số sau đối với mỗi sản phẩm
P: giá bán trên thị trường (giá bán lẻ).
Po: giá khởi điểm.
P1: giá thắng
V: tổng số người tham gia
r: bước nhảy giá.
Với mỗi sản phẩm, để hoà vốn thì:
P = P1 + V * p
Đối với hình thức này thì P1 thường xấp xỉ P.
Theo em thì có thể để:
Po = P/30
V = r = P/100
2.4. Loại sản phẩm bán
Tương tự penny Auction

SV: Lª ThÞ Phîng


17

Líp 46K2 - CNTT


§å ¸n tèt nghiÖp

Trêng §¹i häc Vinh

III. KỊCH BẢN CHƯƠNG TRÌNH ĐẤU GIÁ TRỰC TUYẾN
1. Mô tả chung
Đây là hệ thống đấu giá tương tác trực tuyến trên mạng Internet, sản
phẩm sẽ được đưa ra để người dùng đấu giá. Người trả giá sau cùng và
chiến thắng trong cuộc đấu giá sẽ là người có quyền mua sản phẩm của
cuộc đấu giá.
2. Cách thức chơi
2.1. Tham gia và tạo tài khoản để đấu giá
Trước khi người chơi tham gia vào hệ thống đấu giá của VBID, người
chơi phải mua các quyền đấu giá. Quyền đấu giá, được gọi là Bid, được người
chơi mua trực tiếp của công ty. Sau khi người chơi hoàn tất thanh toán với
công ty, thì tài khoản người chơi sẽ có số quyền đấu giá tương đương với số
tiền người chơi đã trả.
Mỗi lần trả giá cho sản phẩm, tài khoản người chơi sẽ mất một quyền
đấu giá.
2.2. Đấu giá và Hệ thống đấu giá tự động
Người chơi có thể đấu giá sản phẩm bằng 2 cách. Đấu giá bằng trực
tiếp hoặc để hệ thống đấu giá tự động.
- Hệ thống đấu giá tự động sẽ thay thế người chơi đấu giá tự động sản
phẩm trong trường hợp họ không có mặt tại thời điểm đấu giá. Hệ thống đấu
giá sẽ tự động nhập quyền đấu giá theo số lượng quyền đấu giá và giá tiền cao

nhất mà người chơi muốn trả cho sản phẩm.
- Người chơi tham gia đấu giá sản phẩm trực tiếp với người chơi khác
theo thời gian thực.

SV: Lª ThÞ Phîng

18

Líp 46K2 - CNTT


§å ¸n tèt nghiÖp

Trêng §¹i häc Vinh

2.3. Cuộc đấu giá hoạt động thế nào?
Với mỗi lần người chơi đấu giá, họ sẽ mất đi một quyền đấu giá trong
tài khoản của mình, đồng thời giá của sản phẩm họ đấu giá sẽ tăng lên theo
một định mức VBID xác định. Khi người chơi đấu giá, họ sẽ có cơ hội sở hữu
sản phẩm với mức giá của cuộc đấu giá khi cuộc đấu giá kết thúc. Tuy nhiên,
họ sẽ là người thắng cuộc đấu giá chỉ khi cuộc đấu giá kết thúc và là người
cuối cùng của cuộc đấu giá.
10 giây cuối cùng của cuộc đấu giá sẽ là thời gian lặp lại. Nếu trong
thời gian lặp lại, có người tiếp tục đấu giá cho sản phẩm, thì thời gian kết thúc
cuộc đấu giá sẽ tự động cộng thêm ( thường là … giây). Cuộc đấu giá sẽ chỉ
kết thúc khi không có ai đấu giá và thời gian lặp lại bằng 0. Người chơi nào là
người đấu giá cuối cùng sẽ là người chiến thắng sản phẩm.
Tất cả những đấu giá sau khi cuộc đấu giá kết thúc sẽ không tính.
2.4. Kết thúc cuộc đấu giá / Thanh toán
Sau khi cuộc đấu giá kết thúc, người trả giá cuối cùng (Người thắng

cuộc đấu giá) sẽ vào Tài khoản của họ. Tại đây, thông tin cuộc đấu giá hiển thị
chi tiết, bao gồm tổng số tiền (giá sản phẩm tại thời điểm cuộc đấu giá kết thúc
và giá vận chuyển sản phẩm nếu người thắng không đến lấy trực tiếp) người
thắng phải trả cho VBID để nhận được sản phẩm thắng và cách thức trả tiền.
2.5. Vận chuyển sản phẩm cho người thắng cuộc
Sau khi người thắng chọn mục chấp nhận sản phẩm, họ có thể đến trực
tiếp tại các điểm giao dịch của VBID để thanh toán và nhận sản phẩm hoặc họ
thanh toán tiền vận chuyển và VBID sẽ chuyển sản phẩm đến người thắng.

SV: Lª ThÞ Phîng

19

Líp 46K2 - CNTT


§å ¸n tèt nghiÖp

Trêng §¹i häc Vinh

Chương III

PHÂN TÍCH THIẾT KẾ VÀ CÀI ĐẶT CHƯƠNG TRÌNH
I. PHÂN TÍCH THIẾT KẾ HỆ THỐNG
1. Phân tích hệ thống về mặt chức năng
1.1. Biểu đồ phân cấp chức năng
Website Auctions

FrontEnd


BackEnd

Đăng ký tài khoản

Quản lý sản phẩm

Quản lý đặt giá

Quản lý đấu giá

Hiện danh sách đấu giá

Quản lý nội dung

Quản lý tài khoản

Quản lý người dùng

Báo cáo thống kê

1.2. Biểu đồ luồng dữ liệu
Biểu đồ luồng dữ liệu là phương tiện diễn tả chức năng xử lý và việc
trao đổi thông tin giữa các chức năng.

SV: Lª ThÞ Phîng

20

Líp 46K2 - CNTT



§å ¸n tèt nghiÖp

Trêng §¹i häc Vinh

Các ký hiệu được dùng trong biểu đồ
+ Luồng dữ liệu: Là một tuyến truyền dẫn thông tin vào hay ra một
chức năng nào đó.
Ký hiệu:

Tên luồng dữ liệu

+ Chức năng: Là một quá trình biến đổi dữ liệu.
Kí hiệu:
Tên chức năng
+ Các kho dữ liệu: Là một dữ liệu được lưu lại, để có thể được truy
cập nhiều lần về sau.
Kí hiệu:
Tên kho dữ liệu
+ Tác nhân ngoài: Một tác nhân ngoài là một thực thể ngoài hệ thống,
có trao đổi thông tin với hệ thống.
Kí hiệu:

Tên tác nhân ngoài

SV: Lª ThÞ Phîng

21

Líp 46K2 - CNTT



§å ¸n tèt nghiÖp

Trêng §¹i häc Vinh

1.2.1. Biểu đồ luồng dữ liệu mức khung cảnh

Đáp ứng
yêu cầu

Admin

Cập nhật
thông tin

User

Gửi yêu cầu

Gửi yêu cầu

Website Auctions

Đáp ứng
yêu cầu

Gửi yêu cầu
Gửi yêu cầu


AuctionsManager

Đáp ứng

Đáp ứng

yêu cầu

yêu cầu

SV: Lª ThÞ Phîng

22

AuctionManagerSite

Líp 46K2 - CNTT


§å ¸n tèt nghiÖp

Trêng §¹i häc Vinh

1.2.2. Biểu đồ luồng dữ liệu mức đỉnh:
- FrontEnd: Phần giao tiếp người dùng
1

3

User

2

4

Đăng ký

Quản lý

tài khoản

đặt giá

Kho dữ liệu

Hiện danh sách
đấu giá

Quản lý tài
khoản

6

5

8
User

7

Chú thích:

1: Cập nhật thông tin tài khoản
2: Thông báo kết quả
3: Đặt giá sản phẩm
4: Thông báo kết quả
5: Gửi yêu cầu xem đấu giá
6: Đáp ứng yêu cầu
7: Yêu cầu xem thông tin tài khoản cá nhân, thông tin đã đấu giá
8: Đáp ứng yêu cầu
- BackEnd: Phần quản trị
SV: Lª ThÞ Phîng

23

Líp 46K2 - CNTT


§å ¸n tèt nghiÖp

AuctionsManager
1

AuctionManagerSite
2

2

4

Trêng §¹i häc Vinh


3

4

Admin

2
3
4

Quản lý đấu
giá

5

6
7

Quản lý sản
phẩm

Quản lý nội
dung

8

Kho dữ liệu
2

4


1
Cấu hình hệ
thống
9

Admin

8
7

4
2

Báo cáo thống


AuctionManagerSite

8
7
AuctionsManager

Chú thích:
1: Cập nhật thông tin sản phẩm
2: Gửi yêu cầu tìm kiếm
3: Cập nhật thông tin đấu giá
4: Đáp ứng yêu cầu tìm kiếm
5: Cập nhật nội dung
6: Tìm kiếm nội dung

7: Yêu cầu báo cáo thống kê
8: Đáp ứng yêu cầu
9: Cập nhật thông tin cấu hình
1.2.3. Sơ đồ một số chức năng chính chi tiết
- BackEnd:

SV: Lª ThÞ Phîng

24

Líp 46K2 - CNTT


§å ¸n tèt nghiÖp

Trêng §¹i häc Vinh

Phần BackEnd sẽ quản trị toàn bộ website đấu giá. Nó bao gồm các
nghiệp vụ sau:
- Cấu hình hệ thống: Bao gồm việc quản lý menu, phân quyền trên
hệ thống, quản lý người dùng thiết lập các thông số hoạt động cho nghiệp
vụ đấu giá.
uc AccountMgmtByAdmin

DeleteAccount

Login
DeleteAccountRole
(from Login)
«include»


«include»

«extend»

«include»

«extend»
InsertAccount

Admin

AccountMgmt

(from Actors)

«include»

«extend»

«include»

«extend»
InsertAccountRole

«include»

(from Use Case Model)

«include»


«extend»

DisplayAccount

Validate

«extend»

«extend»
«extend»

«extend»

«include»

«include»

SelectAccountByName

UpdateAccountRole

SelectAccountRole

UpdateAccount

- Quản lý sản phẩm: Bao gồm việc thêm mới, sửa, xóa sản phẩm sẽ
tham gia đấu giá.

SV: Lª ThÞ Phîng


25

Líp 46K2 - CNTT


×