Báo cáo đồ án Website Đấu trường 100. Được phát triển bởi một nhóm thuộc khoa Mạng máy tính và truyền thông Trường ĐH Công nghệ Thông tin TP.HCM Hi vong sẽ giúp ích nhiều cho các bạn Đấu trường 100 là game show truyền hình rất nổi tiếng cả trong lẫn ngoài nước. Tuy nhiên, không phải ai cũng may mắn có cơ hội ngồi trên chiếc ghế nóng của chương trình. Xuất phát từ thực tế đó, nhóm chúng tôi chọn đề tài “Xây dựng trang web đấu trường 100” để tất cả những ai yêu thích và mong muốn thử sức với các câu hỏi đều có thể tham gia.
Trang 1ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
Trang 2NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN
Trang 3
MỤC LỤC
I GIỚI THIỆU 5
1 Lý do chọn đề tài 5
2 Mục đích của đề tài 5
3 Đối tượng và phạm vi nghiên cứu 5
II CÁC KIẾN THỨC ỨNG DỤNG 5
1 Mô hình MVC 5
a Lịch sử 5
b Tổng quan 6
c Cơ chế thực hiện 6
2 Java Servlet 8
3 JSP & HTML 8
4 Cơ sở dữ liệu MySQL trên PHP MyAdmin 10
III GIỚI THIỆU WEBSITE ĐẤU TRƯỜNG 100 11
IV MÔ HÌNH CHỨC NĂNG VÀ XỬ LÍ 14
1 Cấu trúc chương trình sử dụng mô hình MVC 14
a Người chơi chính 14
b Người chơi phụ 14
c MC 15
d Khán giản 15
2 Hoạt động chương trình 15
a Xử lí Đăng ký 15
b Xử lí Đăng nhập 16
c Xử lí Câu hỏi 18
d Xử lí Đồng bộ thời gian 22
e Xử lí Trợ giúp 22
3 Hướng dẫn sử dụng 23
V ĐÁNH GIÁ VÀ HƯỚNG PHÁT TRIỂN 23
1 Đánh giá 23
a Ưu điểm 23
Trang 4b Khuyết điểm 23
2 Hướng phát triển 23
VI TÀI LIỆU THAM KHẢO 24
Trang 5I GIỚI THIỆU
1 Lý do chọn đề tài
Đấu trường 100 là game show truyền hình rất nổi tiếng cả trong lẫn ngoài nước Tuy nhiên, không phải ai cũng may mắn có cơ hội ngồi trên chiếc ghế nóng của chương trình Xuất phát từ thực tế đó, nhóm chúng tôi chọn đề tài “Xây dựng trang web đấu trường 100” để tất cả những ai yêu thích và mong muốn thử sức với các câu hỏi đều cóthể tham gia
3 Đối tượng và phạm vi nghiên cứu
Nhóm đã cố gắng đưa ra những tính năng website gần gũi và giống với game show trên truyền hình nhất
đề phát sinh cũng như các giải pháp cho quá trình phát triển phần mềm
Vì vậy sau đó, lần lượt cái MVC framework ra đời dựa trên mô hình MVC như : Zend, Spring, Hibernate…
Trang 6b Tổng quan
Models
Chứa data mà ứng dụng sử dụng
Nhận yêu cầu từ Views
Thực hiên các yêu cầu liên quan
đến DB
Trả về các giá trị tính toán cho Views
Kiểm tra tính hợp lệ của data
Views
Hiển thị giao diện người dùng
Được tạo ra từ dữ liệu của Models
Controllers
Xử lý các yêu cầu của user
Chọn Views thích hợp hiển thị cho người dùng
Đồng bộ hóa giữa khung nhìn và mô hình
Model thực hiện xử lý, kết nối dữ liệu vật lý dưới DBMS (nếu có) và trả kết quả trả về cho Controller
Trang 7 Kết quả xử lý được chuyển vào Servlet – Controller, Servlet Controller thực hiện tạo hay lựa chọn View để từ đó đưa kết quả xử lý hay dữ liệu lấy từ Model để cập nhật lại trang kết quả View.
Controller gửi View qua response cho người dùng để browser có thể trìnhbày dữ liệu trong Web Browser
a Ưu điểm và nhược điểm
Ưu điểm:
Phát triển phần mềm chuyên hóa, có thể chia công việc cho nhiều nhóm
chuyên môn khác nhau: nhóm thiết kê , nhóm lập trình, nhóm tổ chức DB… Giúp phát triển ứng dụng nhanh, đơn giản, dễ nâng cấp
Bảo trì : với các lớp được phân chia, các thành phần của một hệ thống dễ
dàng thay đổi nhưng sự thay đổi có thể được cô lập trong từng lớp, hoặc chỉ ảnh hưởng đến lớp kế nó chứ không ảnh hưởng đến cả hệ thống
Mở rộng : việc thêm chức năng cho từng lớp dễ dàng hơn là phân chia
theo cách khác
Trang 8 Servlet là trung tâm của công nghệ Web trong Java Servlet thay thế cho các ứng dụng CGI truyền thống Muốn hiểu rõ về lập trình Web trong java trước hết nên tìm hiểu rõ cơ chế hoạt động của servlet
3 JSP & HTML
JSP (viết tắt của tiếng Anh JavaServer Pages) còn được biết đến với một
cái tên khác là Java Scripting Preprocessor - tạm dịch là "Bộ tiền xử lý văn
lệnh Java" - là một công nghệ Java cho phép các nhà phát triển tạo nội
dung HTML, XML hay một số định dạng khác của trang webmột cách năng
Trang 9động, trong khi hồi âm yêu cầu của trình khách Công nghệ này cho phép
người ta nhúng mã Java và một số hành động xử lý đã được định trước
(pre-defined actions) vào trong nội dung tĩnh của trang.
Cú pháp của JSP cho thêm các thẻ XML mới, gọi là JSP actions - hành động
JSP Những "hành động JSP" này được dùng để khởi động chức năng sẵn
có, là những chức năng đã được xây dựng trước Cộng thêm vào đó, công
nghệ còn cho phép chúng ta tạo ra các thư viện thẻ JSP (JSP tag libraries),
là những cái đóng vai trò vào việc mở rộng các thẻ HTML hay XML tiêu
chuẩn Thư viện thẻ (Tag libraries) là phương pháp mở rộng khả năng của
một máy chủ web trong khi những mở rộng đó không phụ thuộc vào hệ nền (về cả cấu trúc máy cũng như hệ điều hành được dùng)
Trước khi hiển thị ra trình duyệt, tập tin JSP phải được biên dịch
thành Servlet, dùng bộ biên dịch JSP (JSP compiler) Bộ biên dịch JSP có thể tạo servlet thành mã nguồn Java trước, rồi biên dịch mã nguồn ra tập tin class dùng bộ biên dịch Java, hoặc có thể trực tiếp tạo mã byte
codecho servlet từ trang JSP.
a HTML : là các tag của ngôn ngự HTML có thể viết trực tiếp vào trang JSP Khi web server dịch, các tag này được gửi về client
b Các chỉ thị: là các dòng dung để định nghĩa các trang
Ví dụ : <% @page contentType=”text/html: charser=UTF-8” %> : d9iainh nghịa cho ngôn ngự của trang là Unicode
c Các tag chuẩn của ngôn ngữ JSP: là các tag mà JSP hỗ trợ
E2 : Các thẻ xuất <%= %>: nội dung của thẻ này sẽ được in ra trong trang JSP
E3 : Khai báo phương thức và biến bằng thẻ <%! %>: nội dung trong thẻ này là các biến hoặc phương thức được các phương thức này có thể sử dụng trực tiếp trong trang JSP
Trang 104 Cơ sở dữ liệu MySQL trên PHP MyAdmin
MySQL là hệ quản trị cơ sở dữ liệu tự do nguồn mở phổ biến nhất thế giới và được các nhà phát triển rất ưa chuộng trong quá trình phát triển ứng dụng Vì MySQL là cơ sở dữ liệu tốc độ cao, ổn định và dễ sử dụng,
có tính khả chuyển, hoạt động trên nhiều hệ điều hành cung cấp một hệ thống lớn các hàm tiện ích rất mạnh Với tốc độ và tính bảo mật cao, MySQL rất thích hợp cho các ứng dụng có truy cập CSDL trên internet MySQL miễn phí hoàn toàn cho nên bạn có thể tải về MySQL từ trang chủ Nó có nhiều phiên bản cho các hệ điều hành khác nhau: phiên bản Win32 cho các hệ điều hành dòng Windows, Linux, Mac OS
X, Unix, FreeBSD,NetBSD, Novell NetWare, SGI Irix, Solaris, SunOS, phpMyAdmin là một công cụ nguồn mở miễn phí được viết
bằng PHP dự định để xử lý quản trị của MySQL thông qua một trình duyệt web Nó có thể thực hiện nhiều tác vụ như tạo, sửa đổi hoặc xóa
bỏ cơ sở dữ liệu, bảng, các trường hoặc bản ghi; thực hiện báo cáo SQL; hoặc quản lý người dùng và cấp phép
Trang 11III GIỚI THIỆU WEBSITE ĐẤU TRƯỜNG 100
Đấu trường 100 là một trò chơi truyền hình được sản theo bản quyền của C.Ty Endemol N.V, Hà Lan
Đây là trò chơi ghi kỷ lục “trò chơi truyền hình đầu tiên có số người tham dự trực tiếp đông nhất tại Việt Nam” Bước sang năm thứ 9 (năm 2005-2014),
Đấu trường 100 thay đổi diện mạo mới – phiên bản mới Và dưới đây là luật
chơi mới của phiên bản năm thứ 9 này
NCC được quyền ra về giữa chừng với số tiền thưởng đang có, tại bất kỳ thờiđiểm nào của game (sau khi có tiền thưởng của cấp độ 1)
Gay cấn và kịch tính hơn khi những người cùng chơi có cơ hội được chia tiềnthưởng từ NCC, sau khi NCC loại được 50 người cùng chơi
03 quyền hỗ trợ hoàn toàn mới lạ, hấp dẫn NCC dù dùng quyền hỗ trợ nhưngvẫn phải khôn khéo vận dụng các quyền hỗ trợ này để có thể tiếp tục với câuhỏi kế tiếp
Thang điểm thưởng theo 10 cấp độ giá trị tiền thưởng từ thấp đến cao Mỗi cấp
độ tiền thưởng tương đương 10 người cùng chơi (mỗi khi NCC loại lần lượt ítnhất 10 người cùng chơi thì giá trị tiền thưởng tăng lên cấp độ kế tiếp, tươngứng với giá trị tiền thưởng cao hơn)
Thang điểm thưởng dự kiến:
Trang 122 Luật chơi:
a) Cấp độ tiền thưởng 1:
Nếu NCC loại 9 người cùng chơi đầu tiên: tiền thưởng vẫn là 0
Nếu NCC loại từ 10 - 19 người cùng chơi đầu tiên: đã vượt đến cấp độ 1 vàđược 500.000 đồng tiền thưởng tương ứng của cấp độ 1
Sau khi có tiền thưởng của cấp độ 1 (500.000 đồng), NCC được dừng cuộcchơi tại bất cứ thời điểm nào của game, trước khi bắt đầu câu hỏi kế tiếp, và ra
về với số tiền thưởng đang có
3 Tương tác cao giữa người chơi chính và người cùng chơi:
Trang 13Hoàn toàn khác biệt so với phiên bản cũ, Đấu trường 100 phiên bản 2014 sẽ có
sự tương tác cao giữa người chơi chính (NCC) và những người cùng chơi, thể
hiện qua luật chơi mới: ‘chia tiền từ NCC’.
Khi NCC loại được 50 người cùng chơi, luật ‘chia tiền’ sẽ được áp dụng Từthời điểm này, nếu NCC trả lời sai bất cứ câu hỏi nào, số tiền thưởng đang có
sẽ được chia đều cho những người cùng chơi có câu trả lời đúng
NCC cũng sẽ phải chọn lựa 1 trong 2:
+ Dừng cuộc chơi và ra về với số tiền thưởng đang có
+ Hoặc mạo hiểm chơi tiếp để có cơ hội nâng cao số tiền thưởng
Đây chính là điểm hào hứng và kịch tính nhất của game: Những người cùngchơi luôn phản đối NCC ra về giữa cuộc chơi (đồng nghĩa những người cùngchơi sẽ không có cơ hội được chia tiền thưởng của NCC); vì vậy những ngườicùng chơi luôn yêu cầu NCC phải chơi tiếp (đồng nghĩa họ sẽ có cơ hội đượcchia tiền thưởng khi NCC trả lời sai)
4 03 Quyền trợ giúp
NCC có 03 quyền trợ giúp:
a) Thăm dò: Phân vân với phương án A, vídụ, NCC yêu cầu máy tính thống kê
có bao nhiêu người cùng chơi cùng chọn A Dựa vào số liệu này, NCC có thể quyết định hoặc chọn phương án A theo số liệu thống kê hoặc được chọn 1 trong 2 phương án còn lại
b) Hỏi dò: Máy tính chọn ngẫu nhiên 2 người cùng chơi (1 đúng, 1 sai) NCC/
MC giao lưu nhanh với 2 người chơi này, hỏi phương án và lý do họ chọn NCC quyết định lựa chọn phương án trả lời trong 2 phương án này
- Nếu tất cả các người cùng chơi có phương án trả lời giống nhau, 4 tình
huống:
+ NCC chọn cùng đáp án và đúng, game tiếp diễn
+ NCC chọn cùng đáp án và sai, game kết thúc, tất cả đều không có tiềnthưởng
+ NCC chọn khác đáp án và đúng, NCC chiến thắng với số tiền thưởng tối đa.+ NCC chọn khác đáp án và sai, NCC thua game, tiền thưởng đến thời điểm đó
sẽ được chia đều cho những người cùng chơi (nếu đáp án đó đúng)
c) Tin người cùng chơi: Máy tính thống kê phương án trả lời được các người cùng chơi chọn theo số đông Khi chọn quyền hỗ trợ này, được hiểu NCC buộc
Trang 14phải tuân theo phương án trả lời được chọn của số đông, không được thay đổi phương án khác 2 tình huống phát sinh:
•Nếu 2 phương án trả lời được những người cùng chơi chọn ngang nhau và caohơn phương án còn lại, MC sẽ thông báo cho NCC biết điều này NCC sẽ tự quyết định chọn 1 trong 2 phương án được chọn ngang nhau theo số đông
•Nếu 3 phương án trả lời được những người cùng chơi chọn ngang nhau, MC
sẽ thông báo cho NCC biết điều này NCC sẽ tự quyết định chọn 1 trong 3 phương án được chọn ngang nhau theo số đông
Cách thức sử dụng 3 quyền trợ giúp:
+ NCC được sử dụng 3 quyền trợ giúp tại bất kỳ thời điểm nào trong game.+ NCC được sử dụng 2 hoặc 3 quyền trợ giúp liên tiếp cho 1 câu hỏi
+ NCC được sử dụng 3 quyền trợ giúp theo thứ tự bất kỳ
IV MÔ HÌNH CHỨC NĂNG VÀ XỬ LÍ
1 Cấu trúc chương trình sử dụng mô hình MVC
a Người chơi chính
Được hỗ trợ tất cả các quyền và chức năng:
- Có 60s để trả lời và trả lời câu hỏi sau 6s (thời gian dành cho người chơi phụ chọn đáp án)
- Có tiền thưởng
- Có 3 quyền trợ giúp được dành cho người chơi chính
- Có nút submit “Câu kế tiếp”
b Người chơi phụ
- Có 6s để trả lời câu hỏi sau (trả lời trước người chơi chính)
- Tiền thưởng có khi luật chơi tiền thưởng được áp dụng (Người chơi chính đánh bại được từ 50% số lượng người chơi trở lên)
- Không hỗ trợ 3 quyền trợ giúp
- Không có nút submit “Câu kế tiếp”
Trang 15- Bước 4: Servlet Kiểm tra và trả về kết quả cho trang register.jsp.
Code xử lí Đăng kí trên controller:
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
Model
Register.java Controller
Trang 16String TenDN = request.getParameter( "TenDN" );
String MatKhau = request.getParameter( "MatKhau" );
String MatKhauMD5 = JavaMD5Hash.md5(request.getParameter("MatKhau" )); String re_MatKhau = request.getParameter( "re_MatKhau" );
String HoTen = request.getParameter( "HoTen" );
String GioiTinh = request.getParameter( "GioiTinh" );
String NgaySinh = request.getParameter( "NgaySinh" );
String DiaChi = request.getParameter( "DiaChi" );
String Email = request.getParameter( "Email" );
String SDT = request.getParameter( "SDT" );
String agree = request.getParameter( "agree" );
String ThangSinh = request.getParameter( "ThangSinh" );
String NamSinh = request.getParameter( "NamSinh" );
if ( "on" equals(agree) && MatKhau.equals(re_MatKhau)) {
String address;
DatabaseUtilities dbu = new DatabaseUtilities( "127.0.0.1" ,
"MYSQL" , "dautruong100" , "root" , "" );
boolean insertPlayterResult = dbu.insertPlayer(TenDN, MatKhauMD5, HoTen, GioiTinh, NgaySinh, ThangSinh, NamSinh, DiaChi, Email, SDT);
if (!insertPlayterResult) {
address= "/WEB-INF/messages/register-success.html" ; }
else
{
address= "/WEB-INF/messages/register-error.html" ; }
RequestDispatcher dispatcher = request.getRequestDispatcher(address);
dispatcher.forward(request, response);
} }
b Xử lí Đăng nhập
Lưu Fail
Success Success/Fail
T/F
Kiểm tra ĐN Tên ĐN + MK
thongtinnc (table) thongtindk (table)
Trang 17thongtinnc) và chuyển sang trang index.jsp nếu đăng nhập thất bại.
Code xử lí Đăng nhập trên controller:
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub //PlayersLimit pll=new PlayersLimit();
//int playersL=PlayersLimit.PLAYER_LIMITS;
String TenDN=request.getParameter( "TenDN" );
String plainMatKhau=request.getParameter( "MatKhau" );
String MatKhau=JavaMD5Hash.md5(plainMatKhau);
//Tao cookie luu username va password neu check ghi nho dn
String Remember = request.getParameter( "remember-me" );
String info_account=TenDN+ ":" +plainMatKhau;
Cookie c_login = new Cookie( "info_account" ,info_account);
if(Remember!=null && Remember.equals( "checked" )) {
//Tao session neu chua co
HttpSession session = request.getSession();
if((String)session.getAttribute( "tenDN" ) == null) {
session.setAttribute( "tenDN" , TenDN);
}
if(TenDN!=null && MatKhau!=null){
DatabaseUtilities dbu = new DatabaseUtilities();
String address;
if(dbu.CheckLogin(TenDN, MatKhau)) {
//int count=dbu.CountRow("thongtinnc","1");
Trang 18if(dbu.CheckExistTenDN( "thongtinnc" , TenDN)==false){
AddPlayertoThongtinNC(dbu,TenDN, session); }
Player pl = dbu.getPlayer(TenDN);
request.setAttribute( "player" , pl);
request.setAttribute( "message" , "successful" );
address= "/WEB-INF/results/player.jsp" ; }
else
{
address= "./index.jsp" ; }
//them so luong nguoi choi hien tai
int slPlayer=dbu.CountRow( "thongtinnc" , "1" );
request.setAttribute( "Slplayer" , slPlayer);
RequestDispatcher dispatcher = request.getRequestDispatcher(address);
dispatcher.forward(request, response);
} }
c Xử lí Câu hỏi
Người cùng chơi Người chơi chính
Trang 19Trong xử lí câu hỏi:
- Bước 1: Người dùng đang ở trang mainplay.jsp Servlet truy xuất trong cơ sở
dữ liệu (bảng nguonch + phuonganlc) Trả về nội dung câu hỏi với số thứ tự câu hỏi và các phương án lựa chọn Servlet bật Timeout (6s với người cùng chơi và 60s đối với người chơi chính)
- Bước 2: Người chơi chọn đáp án và gửi đáp án từ mainplay.jsp lên servlet Play trong file Play.java
- Bước 3: Servlet nhận đáp án và lưu đáp án vào bảng traloi Nếu là người chơi
phụ thì chờ người chơi chính trả lời rồi mới kiểm tra đáp án có trùng với đáp án xuất ra từ cơ sở dữ liệu (bảng dapanch)
- Bước 4: Nếu đáp án trả lời đúng thì tiếp tục chuyển qua câu hỏi tiếp theo Nếu đáp án trả lời sai thì chuyển sang trang failure.jsp
Nếu trong quá trình chọn đáp án, người chơi có quyền chọn có 3 sự trợ giúp Servlet sẽ
xử lí thống kê rồi gửi kết quả về cho người chơi chính
Code xử lí Đăng nhập trên controller:
+ Xử lí lấy thông tin Tên đăng nhập, Mã người chơi và Mã loại người chơi từ bảng
Đáp án Câu hỏi
failure.jsp View
mainplay.jsp
dapanch (table) traloi (table) phuonganlc (table) nguonch (table)
Model Controller
Play.java View