TRONG DAI HOC VINH
KHOA CONG NGHE THONG TIN
LÊ THỊ PHƯỢNG
UNG DUNG CONG NGHE JSON 2.0 XÂY DỤNG WEBSITE ĐẤU GIÁ TRUC
TUYẾN
Trang 2LỜI 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 nhưng 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 dụng này đã 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 Những ứng dụng có tính thay đối thường xuyên như ứng dụng 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 với bài toán đấu giá trực tuyến việc hệ thống chạy theo thời gian
thực và việc làm sao để request trang liên tục là vô cùng quan trọng vì vậy ở
đây em sử dụng công nghệ JSON, một công nghệ của những người lập trình client script JSON sẽ giảm tải quá trình truy xuất dữ liệu liên tục cho server
Cuối cùng, xin chân thành cảm ơn các thầy, cô và các bạn, đặc biệt là
sự hướng dẫn trực tiếp của thầy giáo ThS Vũ Chí Cường cùng các anh trong bộ phận công nghệ của Công ty VTCOnline đã chỉ dẫn công nghệ mới cho em
trong quá trình xây dựng đồ án này
Mặc dù đã cố gắng hoàn thành đồ án trong phạm vi và khả năng cho phép nhưng chắc chắn sẽ không tránh khỏi những thiếu sót Em rất mong
nhận được sự chia sẻ, góp ý của các thây, cô và các bạn
Sinh viên thực hiện
Trang 4Chươ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ả đữ liệu theo object
oriented
Tại sao JSON có liên quan dé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();
Trang 5Khá 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"]E”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” bs
Đâ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é ding cap dau
“ 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
Trang 6topleft: { x: 1, y: 2 }, width: 5, height: 10 bs /Khi đó
alert(rectangle.topleft.x); // sẽ đưa ra giá tri 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, //Phuong thức area: function() t return this width*this height; } b /Khi đó
alert(rectangle.topleft.x); // sẽ đưa ra giá tri 1
alert(rectangle.area()); // sé dua ra giá trị 50
Trong ví dụ trên, ta sử đụ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ả
Trang 7hai 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ử đụ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 đữ 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 đữ liệu và đọc dữ liệu theo nodes Giả
sử object của ta là xmIObj, 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:
Trang 8II SU DUNG JSON TRONG AJAX RESPONSE
Ta cé thé ding 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 Tao response data va send về client
Như ta đã biết trong Ajax application, client sé send XMLHttpRequest đến server, server sé handle request va tra vé response, response cé thé là
plain text, xml, js, json
VD: chung ta define 1 java bean co 2 properties nhu sau: public class Customer {
private String id;
private String name;
Trang 9</Customer>
Nếu diễn dat object customer dudi dang JSON, thi:
{id: "abc", name: "sabrina"}
— > Cả JSON va XML đều có tính đễ đọc, JSON chiếm dụng bộ nhớ
it hon XML
Dé tao 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: ding JAXB tao ra xml tir 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 cac String lại với
nhau, hoặc dùng library,
VD: tao ra JSON response diing Json-lib
response.getWriter() write(JSON Object from Object(customer).toString());
1.2 Handle data 6 phia client
Nếu ta quyết định ding XML 1a reponse data, thi ta phai dùng
javascript dé traverse cay DOM(Document Object Model) va lay ra tirng node
bang DOM api document.getElementByld("id");
Nếu dùng JSON thì ta dùng hàm eval() ctia javascript dé evaluate JSON data thanh javascript object:
var jsonRep = eval(respondText); Sau đó ta sẽ truy xuat data tir js object:
Trang 10Chương H
TONG QUAN VE DE TAI
I GIOI THIEU VE DAU GIA TRUC TUYEN
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:
e_ Đấ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 Cost High Bid Winner Í Price s) Time
e Dau gid 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
Trang 11nà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 DGTT:
e_ 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
e©_ 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
e©_ 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
e_ Số lượng người đấu giá lớn: Bởi vì tiềm năng có giá thấp, hàng hóa
va dich vụ đa dạng, dễ dàng tham gia và lợi ích xã hội của quá trình đấu giá e 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 chỉ phí bán hàng, đễ bn bán
e© 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ẽ
Trang 12II TONG QUAN MO HINH DAU GIA KIEU 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 M6 ta 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 I lần đặt
giá, người dùng sẽ mất I 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 đù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ó I 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 + chỉ 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
Trang 13+ Trong trường hợp giá thắng + chỉ 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
Trang 14Po: 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 nhay gia Don vi 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 Vay 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ố gi?
+ Đặ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*(rtp)
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 va Po co thé tinh 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 đữ liệu của các phiên đấu giá kết thúc đề tính ra
con số này
Vi du: http: //www.bidrivals.com/us/completed_auctions.html?page=1
Trang 15Theo em ước tính, trong thời gian đầu, P/L = 2 Do đó p = I.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ệ đễ 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 M6 ta 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
Trang 16+ 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
- Nhu 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
Trang 17- 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
PI: giá thắng
V: tổng số người tham gia r: bước nhảy giá
Trang 18III KICH BAN CHUONG TRINH DAU GIA TRUC TUYẾN
1 M6 ta chung
Đây là hệ thống đấu giá tương tác trực tuyến trên mạng Internet, san
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 hồn tất thanh tố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
Trang 192.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
Trang 20Chương HH
PHAN TICH THIET KE VA CAI DAT CHUONG TRÌNH
I PHAN TICH THIET KE HE THONG 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
Ly Quản lý đặt giá Quản lý đấu giá
»| Hiện danh sách đấu giá Quản lý nội dung
—*\ Quan ly tai 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
Trang 21Cá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 đữ 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
Trang 22
1.2.1 Biếu đồ luồng dữ liệu mức khung cảnh Dap tng Cap nhat Admin - ar yéu cau thong tin User
Gửi yêu câu
Gửi yêu câu | Dap ting Website Auctions
Gửi yêu cầu
Trang 231.2.2 Biểu đồ luồng dữ liệu mức đính:
- FrontEnd: Phần giao tiếp người dùng | User 3 4 A Ỷ Đăng ký tài khoản Kho dữ liệu ` Hiện danh sách Quản lý tài khoản đấu eo 6 8 x a User Chi thich:
1: Cap nhat thong tin tai khoan : Thông báo kết qua
: Đặt giá sản phẩm
Trang 24§: Đáp ứng yêu cầu - BackEnd: Phan quan tri AuctionsManager AuctionManagerSite 2 Admin Quan tý sản Quản lý nội pham dung r Kho dữ liệu 2 4 ———— Cấu hình hệ Báo ve thong théng é Admin 2 AuctionManagerSite AuctionsManager Chi thich: 1: Cập nhật thông tin sản phẩm
: Gửi yêu cầu tìm kiếm
: Cập nhật thông tin đấu giá
: Đáp ứng yêu cầu tìm kiếm : Cập nhật nội dung
Trang 259: Cập nhật thông tin cấu hình
1.2.3 Sơ đồ một số chức năng chính chỉ tiết
- BackEnd:
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 gia uc AccountMgmtByAdmin 7 c3 7 N ` \ \ «indude» Z ' (from Actors) / C=) «eend» “ ` (robogin) i / “2 L O /ˆ sefend» in incl tuden ` Ì —_ Ke ` Admin —Y ~cextend» «includer «extends ~~_ ~ ` VOSS 0 ^ ⁄/7//ðmUse Case Model) 4 \ \ «@etde ` > ⁄⁄ 746 7 ` - 7 ⁄ ⁄ ` `
- 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á
Trang 27- FrontEnd:
Phần FrontEnd sẽ tương tác trực tiếp với người dùng, thực hiện các
chức năng:
-Đăng ký tài khoản: Tạo tài khoản mới để có thể đặt bid
Trang 292 Phân tích hệ thống về mặt dữ liệu
Dựa vào các thông tin cần lưu trữ, sau khi tiến hành chuẩn hoá để đảm bảo không dư thừa và mắt mát thông tin, ta có được các thực thể sau:
Trang 38PaygateName nvarchar 40 - Role: Quyền trong hệ thống RoleID int 4 Name nvarchar 100 Description nvarchar 400
I VAN DE CAN GIAI QUYET
Việc cài đặt chương trình đặt ra các vấn đề cần giải quyết như sau:
1 Làm sao để request trang liên tục?
Hệ thống chạy theo thời gian thực nên thông tin luôn thay đổi theo thời gian Và mỗi lần người chơi đặt bid cdc thông tin lại bị thay đổi Vì vậy cần request trang liên tục đề cập nhật thông tin
2 Xứ lý đa luồng?
Việc request trang liên tục dẫn đến các request lên server là rất lớn
Điều này làm cho hệ thống bị chậm, hoặc chạy không ồn định và có thể dẫn
đến bị chết hệ thống Với việc xử lý đa luồng, mỗi công việc sẽ thực hiện trên một thread riêng, làm cho hệ thống được tăng tốc và ồn định
3 View ánh sản phẩm
Đây là website thương mại điện tử, phục vụ nhu cầu mua bán sản phẩm
trực tuyến, nên việc view ảnh sản phẩm cho người dùng là rất quan trọng Cần
chọn một hình thức view ảnh mang lại nhiều tiện lợi nhất cho người dùng Trong website này, sẽ sử dụng công nghệ View ảnh DeepZoom
4 Thanh toán trực tuyến
Trong thương mại điện tử, thanh toán trực tuyến là khâu cuối cùng khi
người bán và người mua đã thống nhất giá ca và sản phẩm Có thể sử dụng
nhiều hình thức thanh toán trực tuyến bằng cách sử dụng các dịch vụ của các
ngân hàng và các trang web thương mại
Trang 39II GIÁI PHÁP DUA RA
1 Sử dụng công nghệ JSON để thực hiện request trang liên tục
Ta sẽ viết một hàm “UpdateAuctions” đặt trong tệp js Hàm này sẽ thực hiện nhiệm vụ request trang liên tục
function UpdateAuctions(param) {
$.ajax({
type: "POST",
url: "/GetData.aspx?param=" + param,
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(response) { if (response != null) {
Trang 40}
var TimeRemain = 'div#TimeRemain_'+ response[i].id;
var isProductNew = $(TimeRemain).attr("innerHTML");
if (isProductNew == null) { //window.location.reload(true);
}
var PriceNow = 'div#PriceNow_' + response[i].id;
var Bidder = 'div#Bidder_'+ response[i].id; var MyBidder = 'div#MyBidder_' + response[i].id; var PriceNowOld = $(PriceNow).attr("innerHTML"); if(PriceNowOld != null) t PriceNowOld = jQuery.trim(PriceNowOld.replace(" VND", ™)); var PriceNowNew = response[i].p; $(TotalSecondOld).attr("innerHTML", TotalSecond); $(TimeRemain).attr("innerHTML", CaculatorTime(TotalSecond)); $(PriceNow).attr("innerHTML", response[i].p +" VND");
$(Bidder).attr("innerHTML", '<p>1 <a href="/blog/' + response[i].b[0] + '/index.htm">' + response[i].b[0] + '</a></p><p>2 <a href="/blog/' + response[i].b[1] + '/index.htm">' + response[i].b[1] + '</a></p><p>3 <a href="/blog/' + response[i].b[2] + '/index.htm">' + response[i].b[2] + '</a></p>');