Chức năng phía Server

Một phần của tài liệu Tìm hiểu và xây dựng ứng dụng enterprise cho điện thoại di động bằng J2ME” (Trang 62)

2. CHỨC NĂNG

2.2Chức năng phía Server

Là ứng dụng nhỏ không đòi hỏi tương tác phía server nên không tồn tại cấu hình server cho ứng dụng Tetris

3.THIẾT KẾ CƠ SỞ DỮ LIỆU

Không có cơ sở dữ liệu.

4.MÔ HÌNH 4.1 Thuật toán

4.1.1 Khung chơi chính

Khung chơi chính là một lưới các ô nhỏ, bao gồm 10 hàng và 20 cột.Tổng cộng là 200 ô nhỏ.

Hình 2.1.6: Khung chơi chính Các ô nhỏ được chia ra bởi tọa độ x, y trong trục tọa độ (X,Y): - Trục ngang là trục X và mở rộng về bên phải từ 1 đến 10. - Trục đứng là trục Y và mở rộng lên trên từ 1 đến 20. - Tọa độ dưới cùng bên trái là (1,1).

- Tọa độ trên cùng bên phải là (10,20). - Một ô có thể rỗng hay được lấp đầy.

4.1.2 Khối hình

Hình 2.1.7: Các khối hình cơ bản

- Mỗi một khung hình được bao trong một khung hình cơ sở gồm 4 ô, 4 cột. - Các khối hình khi quay vẫn nằm trong ô khung bao cơ sở này, có 4 hướng quay lần lượt là {1,2,3,4}.

- Sau khi quay thì vị trí xoay thay đổi từ {1,2,3,4} đến {2,3,4,1}.

- Hình “O” chỉ có duy nhất một trạng thái, vì dù quay nó cũng không làm xuất hiện trạng thái mới

- Hình “L,J,T” có 4 trạng thái khi quay. - Hình “I,S,Z” có 2 trạng thái khi quay.

Hình 2.1.8: Lưu đồ thuật toán

Hình 2.1.9: Sinh khối hình

Khi một khối xuất hiện vị trí tâm của nó là dấu chấm trên hình và các ô là phần màu mờ trong hinh 2.1.9

Khi một trò chơi bắt đầu các khối hình sẽ rơi tự do và việc này lặp lại khi tọa độ được xác định trên đầu bảng.

Có 7 khối và sự xuất hiện của các khối được tính theo thuật toán sau đây:

Piece = 1 + (RandomInteger % 7); // 1..7

Hằng số 1/7 đóng vai trò quan trọng trong việc xác định khối hình nào sẽ xuất hiện (xác suất xuất hiện mỗi khối là 1/7).

4.1.5 Bảng điều khiển

Trong suốt quá trình chơi thì các phím chức năng sau có hiệu lực:

[1] LEFT : Request to translate left by one column; [2] RIGHT : Request to translate right by one column; [3] ROTATE : Request to do a "counter-clockwise rotation"; [4] DROP : Request to instantly drop the piece;

[5] DOWN: Request to translate down by one column

Tất cả các lệnh trên có hiệu quả khi ấn phím.

Khi một nút được ấn thì yêu cầu được gửi đi,và nút được nhấn giữ nguyên trạng thái đí đến khi có phản hồi.

Các phím cơ bản là:

+ Xoay: chỉ thực hiện được khi không chồng chéo và va chạm phải thành,biên hay đích của bảng.

+ Trái,phải: chỉ thực hiện được nếu không chạm 2 bên biên hay các khối khác. + Xuống: chỉ thực hiện được nếu không chạm biên các khối.

+ Đích: cho phép các khối tới đích ngay lập tức và chỉ thực hiện được nếu không gặp cản là các khối hình khác. (adsbygoogle = window.adsbygoogle || []).push({});

4.1.6 Các thông số

a. Điểm tối đa

Khi một khối chuyển động xuống ăn điểm thì số điểm này phụ thuộc vào từng khối hình mà ăn điểm tối đa.

Bảng điểm tối đa ăn điểm với từng khối là:

Piece Max. Simultaneous Rows Completed ===== ================= "O" 2 "I" 4 "S" 2 "Z" 2 "L" 3 "J" 3 "T" 2 b. Cấp độ

Có 10 mức cơ sở từ 0 đến 9 với độ khó tăng dần.Chỉ số này tính theo công thức:

Actual_Level = max( Initial_Level, Earned_Level );

Initial_Level là mức cơ sở mà người chơi đã chọn từ ban đầu 0->9. Earned_Level được xác định theo công thức:

{ 0, 1, 2, ..., 10 } --> Earned Level 0 { 11, 12, ..., 20 } --> Earned Level 1 { 21, 22, ..., 30 } --> Earned Level 2 { 31, 32, ..., 40 } --> Earned Level 3 { 41, 42, ..., 50 } --> Earned Level 4 { 51, 52, ..., 60 } --> Earned Level 5 { 61, 62, ..., 70 } --> Earned Level 6 { 71, 72, ..., 80 } --> Earned Level 7 { 81, 82, ..., 90 } --> Earned Level 8 { 91,...infinity* } --> Earned Level 9 hay

Earned_Level = ((Lines_Completed - 1) / 10); if (Earned_Level < 0) Earned_Level = 0; if (Earned_Level > 9) Earned_Level = 9;

c. Độ trễ

Đỗ trễ phụ thuộc vào từng cấp độ,cấp độ càng cao càng khó tương ứng với đỗ trễ càng thấp.

Ta có bảng thời gian sau:

Iteration_Delay [seconds] Actual_Level (rounded off)

============ ========================= 0 0.50 1 0.45 2 0.40 3 0.35 4 0.30 5 0.25 6 0.20 7 0.15 8 0.10 9 0.05

Công thức tính độ trễ được tính như sau:

Iteration_Delay = ((10.0 - Actual_Level) / 20.0) seconds

d. Điểm

Điểm tùy thuộc vào số hàng ăn được và điểm thưởng tùy thuộc vào số lượng hàng ăn điểm.

4.2 Các module xử lý

4.2.1 Phía Client

a. Tổng quát

Ứng dụng phía client được chia làm 3 gói chính là: tetris, tetris.ui và tetris.model:

+Gói tetris gồm lớp Midlet và các lớp tạo luồng, hằng số phục vụ cho việc khởi tạo chính của chương trình

+Gói tetris.ui chứa các lớp giao diện: DisplayBox cấu hình hiển thị chung. TetrisCanvas gọi giao diện canvas chung.Các lớp TitleBox, NextPieceBox, InforBox chứa xứ lý từng hộp giao diện.

+Gói tetris.model chứa lớp tetris.board và tetris.piece định nghĩa cấu hình và sự xuất hiện của bảng trò chơi và các khối hình.

Hình 2.1.10: Package

Tetris Hình 2.1.11: Packagetetris.ui

Hình 2.4.12: Package tetris.model

b.Mô hình UML của toàn hệ thống (adsbygoogle = window.adsbygoogle || []).push({});

+TetrisMiDlet.java:TetrisMIDlet là MIDlet chính của ứng dụng, có nhiệm vụ khởi tạo các đối tượng, lấy các thuộc tính từ tập tin .JAD mô tả ứng dụng, hiển thị màn hình giới thiệu, sau đó giao nhiệm vụ hiển thị giao diện người dùng cho màn hình chức năng chính. TetrisMIDlet cũng đảm nhận nhiệm vụ hiển thị lỗi, và trạng thái của ứng dụng khi các lớp màn hình khác yêu cầu.

+DropThread.java:DropThread có vai trò tạo luồng để gán cho sự xuất hiện của mỗi khối hình sau này.

+TetrisConstants.java:TetrisConstants định nghĩa các hằng số dung trong việc gọi ở các lớp khác.

+TetrisBoard.java:Khởi tạo khung chính chủa trờ chơi.

+TetrisPiece.java:Khởi tại các khung hinh cùng với các thuật toán xác định sự xuất hiện của mỗi khối hình.

+DisplayBox.java:Định nghĩa chung các lớp hiển thị cho các box. +TetrisCanvas.java:Định nghĩa phần nền cho board, piece hay các box. +Các lớp hiển thị các box:Định nghĩa cấu hình các hộp hiển thị chung

Hình 2.1.13: Mô hình UML của toàn hệ thống l.Tetris.jad

MIDlet-1:Tetris-Designby ngoclantim.lc@gmail.com,/icon/nlt.png,tetris.TetrisMidlet MIDlet-Jar-Size: 20880 MIDlet-Jar-URL: Tetris.jar MIDlet-Name: Tetris MIDlet-Vendor: Vendor MIDlet-Version: 1.0 MicroEdition-Configuration: J2ME

MicroEdition-Profile: Design by ngoclantim.lc@gmail.com

4.2.2 Phía Server

Không tồn tại phía server.

5. CÀI ĐẶT

5.1 Cấu hình phần cứng

- Là điện thoại di động có hỗ trợ ứng dụng Java và hỗ trợ mạng.

5.2 Cấu hình phần mềm

Để xây dựng ứng dụng cần phải có một số phần mềm sau: - J2ME Wireless Toolkit

- Các phần mềm tùy chọn:

+ IDE để viết chương trình Java như: Netbean,Eclipse,JBuider.. + Proguard để tinh giảm ứng dụng J2ME

5.3 Ngôn ngữ môi trường

Ngôn ngữ xây dựng là Java trên môi trường Window

6. GIAO DIỆN ỨNG DỤNG VÀ ĐÁNH GIÁ HIỆU SUẤT6.1 Giao diện của chương trình 6.1 Giao diện của chương trình

Ứng dụng chạy trên bộ J2ME Wireless Toolkit của Sun Microsystems, đây là bộ công cụ để biên dịch, tiền kiểm tra, đóng gói và giả lập các thiết bị di động theo thiết kế tổng quát như: điện thoại di động, thiết bị QWERTY. Sau đây là một số giao diện khi chạy trên trình giả lập:

Hình 2.1.14:Các giao diện của chương trình

6.2 Hiệu suất của ứng dụng

J2ME Wireless Toolkit có công cụ Memory Monitor cho phép giám sát bộ nhớ sử dụng của ứng dụng trong quá trình thực thi.

Hình 2.1.15 : Đồ thị sử dụng bộ nhớ của ứng dụng

Ta thấy bộ nhớ sử dụng tăng cao khi bắt đầu vào chương trình nhưng ổn định dần khi chạy và giữ mức ổn định đó cho đến lúc kết thúc chương trình.Với tổng dung lượng là 2097152 thì mức sử dụng ổn định ở max là 284484 là hoàn toàn có thể

chấp nhận được, lượng bộ nhớ dư thừa là 1812668.Do đó chương trình có tính ứng dụng cao.

Hình 2.1.16: Chi tiết sử dụng bộ nhớ của các lớp

6.3 Kết luận (adsbygoogle = window.adsbygoogle || []).push({});

Ứng dụng Tetris chạy trên di động không cần tương tác với môi trường bên ngoài, đơn giản nhỏ gọn nhưng từ khâu phân tích thiết kế đều thể hiện tính chuyên nghiệp.Nhưng ta chưa thấy ưu điểm của J2EE trong trường hợp này nhưng bước đầu đã làm quen với J2ME như cách dùng các lệnh và đồ họa màu sắc…, là bước đệm không thể thiếu để đi đến khám phá một “tinh hoa” của enterprise ở chương sau.

CHƯƠNG 2 :ỨNG DỤNG TƯƠNG TÁC VỚI MÔI TRƯỜNG BÊN NGOÀI “Smart Ticket”

1.MÔ HÌNH KẾT NỐI

Ứng dụng MIDlet chạy trên điện thoại di động đóng vai trò 1 client. Client này sau khi đăng ký sử dụng dịch vụ internet cho điện thoại sẽ có khả năng kết nối đến server.

Client được viết bằng J2ME đóng gói thành .jar và .jad. Server là chương trình viết bằng .NET chạy trên HTTP server, không có giao diện. Server sẽ trao đổi thông tin với Database server thông qua các Store procedure. Cơ sở dữ liệu xây dựng trên SQL Server.

Mô hình hoạt động:

+ Điện thoại sẽ chủ động kết nối và gửi gói tin đến web server. Gói tin sẽ được gửi dưới dạng sóng GPRS đến trạm điện thoại, trách nhiệm của nhà cung cấp điện thoại sẽ phải chuyển tín hiệu từ dạng sóng GPRS sang dạng tín hiệu truyền trong đường truyền hữu tuyến internet.

+ Lúc này nhà cung cấp dịch vụ di động sẽ hoạt động như một gateway, làm trung gian liên lạc cho thiết bị di động và web server.

+ Gói tin được điện thoại di động gửi đến web server là những gói tin HTTP request và ngược lại web server sẽ hồi đáp bằng những gói tin HTTP response. Các gói tin HTTP request và HTTP response này sẽ chứa bên trong các thông điệp SOAP request và SOAP response tương ứng. Các gói tin SOAP chính là trung tâm của kỹ thuật web service, các thông điệp SOAP này sẽ chứa các lời gọi hàm, tham số truyền đi, các tham số trả về… tạo thành mô hình truy xuất hàm từ xa RPC (Remote Procedure Call).

+ Khi web server nhận được yêu cầu xử lý từ điện thoại (thể hiện qua các lời gọi hàm) sẽ truy xuất và giao tiếp với SQL Server qua các store procedure để thực hiện các xử lý nghiệp vụ của chương trình.Thông tin sau khi được sử lý sẽ được gửi trả cho client thông qua các HTTP response.

+ Các gói tin HTTP response này sẽ đến nhà cung cấp dịch vụ di động, chuyển thành dạng tín hiệu GPRS và về đến client.

Trên đây là mô hình khái quát hoạt động của ứng dụng trong bối cảnh mạng điện thoại di động. Yêu cầu duy nhất của thiết bị phần cứng là điện thoại phải hỗ trợ GPRS và thư viện JSR 172. Thư viện JSR 172 có chức năng tạo các thông điệp SOAP và phân tích nội dung các thông điệp này, nếu không có thư viện này chúng ta không thể tạo các lời gọi hàm cũng như lấy các kết quả trả về từ hồi đáp của server.

2.MỤC TIÊU

Mục tiêu của chương trình là giúp khách hàng muốn đặt vé xem phim tại các rạp một cách nhanh chóng nếu họ có điều kiện sở hữu một chiếc điện thoại di động hỗ trợ ứng dụng Java.

Hệ thống mới được xây dựng ở mức demo nhưng hoàn toàn có khả năng ứng dụng thực tế nếu xây dựng trên hệ thống các dữ liệu thực, phù hợp.

Ứng dụng được xây dựng theo mô hình ba tầng cùng với sự bổ sung hỗ trợ của tầng môi giới là một SmartTicketServlet và PopulateServlet. Hệ thống đã được tối ưu hóa để hỗ trợ tốt nhất và nhiều nhất cho client di động, tuy nhiên hệ thống có khả năng hỗ trợ nhiều loại client (multiple client) ví dụ như client trình duyệt.

Người dùng nếu có điện thoại hỗ trợ Java thì có thể sử dụng chương trình. Nếu điện thoại của người dùng và nhà cung cấp dịch vụ cho phép tải ứng dụng trên Internet xuống điện thoại di động thì người dùng có thể tải trực tiếp ứng dụng từ địa chỉ URL do Web server cung cấp, nếu không thì phải cài đặt chương trình bằng cách giao tiếp với máy tính bằng hồng ngoại, cáp,...

3. CHỨC NĂNG3.1 Chức năng chung 3.1 Chức năng chung

Hình 2.2.2: Mô hình chung của hệ thống

a.Client machine

Bao gồm 2 phần:

+Phần chính là ứng dụng trên MIDlet(chủ yếu xây dựng ứng dụng này) +Phần browser cho phép thực hiện ứng dụng trên trình duyệt

b.Server machine

Bao gồm 3 phần chính:

+Servlet: SmartticketServlet và PopulateServlet là lớp đảm nhận chức năng môi giới

+JSP page: phần nỳ cho phép populate database trên máy chủ

+Enterprise java bean: chứa các bean giúp liên hệ với cơ sở dữ liệu và web container

c. Database

3.2 Chi tiết chức năng của ứng dụng MIDlet

3.1.1 Sơ đồ phân rã chức năng (adsbygoogle = window.adsbygoogle || []).push({});

Hình 2.2.3: Sơ đồ chức năng của ứng dụng

Khi người dùng mở ứng dụng, đầu tiên chương trình sẽ hiển thị màn hình giới thiệu chương trình trong một khoảng thời gian ngắn, sau đó chuyển sang giao diện chức năng chính, người dùng sẽ lựa chọn chức năng và kích hoạt chức năng tương ứng. Các chức năng chính: + Choose a movie + Rate movies + My settings + Manager theater Reservation tickets

Đây là phần chính của chương trình cho phép một khách hàng có thể đặt vé thông qua việc chọn rạp phim, chọn phim,chọn ngày,chọn giờ,chọn số lượng vé, chọn chỗ ngồi và cuối cùng đến đặt vé.

+ Choose theater: chọn rạp phim đã có trong danh sách. + Choose movie: chọn phim có lịch trình chiếu tại rạp. + Choose day: chọn ngày chiếu phim

+ Choose time: chọn giờ xem phim

+ Choose setting preference: chọn khu vực chỗ ngồi + Choose number of ticket: chọn số vé cần đặt + Select seats: chọn vị trí ngồi có trên bản đồ + Buy ticket: đặt vé bằng tài khoản của mình Rate movies

Đánh giá chất lượng của các bộ phim bạn đã xem bằng chức năng rate movies để gửi thông tin này tới các nhà sản xuất phim giúp có đánh giá khách quan đối với các phim chiếu rạp.

+ Rate: đánh giá chất lượng bộ phim (tăng hoặc giảm) + Save: lưu giữ các đánh giá phim của người xem

+ Syn ratings: xác nhận chất lượng các phim và gửi cho server Modify my settings

Điều chỉnh các thông tin của người dung như: + Default:chỉnh sửa các thông tin đã được khởi tạo

+ Account infor: chỉnh sửa các thông tin cá nhân như tên đăng nhập và tài khoản. + Password: chỉnh sửa password

Manager theater

Cho phép quản lý các danh sách rạp phim được cung cấp bởi nhà cung cấp dịch vụ + Download theater: tải thông tin về các rạp chiếu phim được cung cấp bởi nhà dịch vụ.

+ Delete theater: xóa thông tin về rạp phim

3.1.2 Sơ đồ luồng dữ liệu mức ngữ cảnh

Client chỉ gồm một tác nhân kích hoạt chính là Customer.Customer có quyền đưa ra các yêu cầu về đặt vé, chỉnh sửa thông tin tài khoản, đánh giá phim và xem thông tin về các rạp chiếu phim được cung cấp.

Hình 2.2.4: Sơ đồ luồng dữ liệu mức ngữ cảnh

3.1.3 Sơ đồ luồng dữ liệu mức đỉnh

Hình 2.2.5: Sơ đồ luồng dữ liệu mức đỉnh

3.1.4 Sơ đồ luồng dữ liệu mức dưới đỉnh

Hình 2.2.6: Sơ đồ luồng dữ liệu mức dưới đỉnh + Chức năng chỉnh sửa thông tin tài khoản

Hình 2.2.7: Sơ đồ luồng dữ liệu mức dưới đỉnh + Chức năng đánh giá chất lượng các bộ phim

Hình 2.2.8: Sơ đồ luồng dữ liệu mức dưới đỉnh + Chức năng quản lý danh sách các rạp phim

Hình 2.2.9: Sơ đồ luồng dữ liệu mức dưới đỉnh

3.3 Chức năng phía Server

Hình 2.2.10: Sơ đồ phân rã chức năng

+ Populate database: cho phép người quản trị triển khai cơ sở dữ liệu + Repopulatr database: cho phép người quản trị triển khai lại cơ sở dữ liệu + Purchar online: quản lý đặt vé online

3.3.2 Sơ đồ luồng dữ liệu mức ngữ cảnh

Hình 2.2.11: Sơ đồ luồng dữ liệu mức ngữ cảnh

(adsbygoogle = window.adsbygoogle || []).push({});

Một phần của tài liệu Tìm hiểu và xây dựng ứng dụng enterprise cho điện thoại di động bằng J2ME” (Trang 62)