6. GIAO DIỆN ỨNG DỤNG VÀ ĐÁNH GIÁ HIỆU SUẤT
3.1.1 Sơ đồ phân rã chức năng
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
Hình 2.2.12: Sơ đồ luồng dữ liệu mức đỉnh
3.3.4 Sơ đồ luồng dữ liệu mức dưới đỉnh
+ Populate database
Hình 2.2.13: Sơ đồ luồng dữ liệu mức dưới đỉnh + Repopulate database
Hình 2.2.14: Sơ đồ luồng dữ liệu mức dưới đỉnh + Manager purchar online
Hình 2.2.15: Sơ đồ luồng dữ liệu mức dưới đỉnh
4.THIẾT KẾ CƠ SỞ DỮ LIỆU 4.1 Chi tiết cơ sở dữ liệu
4.1.1 Table ACCOUNTBEAN
Chứa thông tin liên quan đến tài khoản của người đặt vé.
giá trị
PASSWORD Mật mã VARCHAR <= 256
ký tự USERNAME <pk> Tên tài
khoản
VARCHAR (Not null)
<= 256 ký tự
ZIPCODE Mã rạp phim VARCHAR <= 256
ký tự
LASTNAME Họ VARCHAR <= 256
ký tự
FIRSTNAME Tên VARCHAR <= 256
ký tự
EMAIL Mail VARCHAR <= 256
ký tự CREDITCARDNUMBER Số thẻ VARCHAR <= 256
ký tự CREDITCARDHOLDERNAME Chủ nhân thẻ VARCHAR <= 256
ký tự CREDITCARDEXPIRATIONDATE Thời hạn thẻ VARCHAR <= 256
ký tự CREDITCARDTYPE Kiểu thẻ VARCHAR <= 256
ký tự SYNCCONDUITBEAN_GENERATEDPK<fk> Xác nhận
client BIGINT <= 8 ký tự 4.1.2 Table MOVIEBEAN
Chứa thông tin về các bộ phim.
Tên field Ý nghĩa Kiểu dữ liệu Cách tạo
giá trị ID <pk> Định danh phim VARCHAR
(Not null)
<= 256 ký tự
TITLE Tên phim VARCHAR <= 256 ký
tự
SUMMARY Giới thiệu VARCHAR <= 256 ký
tự
RATING Xếp hạng phim VARCHAR <= 256 ký
tự
POSTERURL Poster phim VARCHAR <= 256 ký tự
MOVIERATINGBEAN_GENERATEDP K <fk>
Tham chiếu sang
bảng đánh giá BIGINT <= 8 ký tự MOVIESHOWBEAN_TIME<fk> Thời gian chiếu
phim TIMESTAMP = 8 ký tự MOVIESHOWBEAN_THEATERID<fk> Rạp chiếu phim VARCHAR <= 256 ký
tự MOVIESHOWBEAN_MOVIEID<fk>
Tham chiếu sang bảng thời gian chiếu
VARCHAR <= 256 ký tự
4.1.3 Table MOVIERATINGBEAN
Chứa các thông tin về đánh giá chất lượng bộ phim
Tên field Ý nghĩa Kiểu dữ liệu Cách tạo giá trị
ID Số thứ tự người
dùng đánh giá VARCHAR <= 256 ký tự STARTNUMBER Đánh giá chất
lượng ban đầu INTERGER < = 4 ký tự LASTVIEWDATE Lần xem phim gần
đây nhất TIMESTAMP = 8 ký tự GENERATEDPKFIELD <pk> Sinh khóa tự động
với bảng
BIGINT
(Not null) <= 8 ký tự ACCOUNTBEAN_USERNAME<fk> Thông tin người
đánh giá VARCHAR <= 256 ký tự 4.1.4 Table MOVIESCHEDULEBEAN
Chứa các thông tin về lịch trình chiếu các bộ phim
Tên field Ý nghĩa Kiểu dữ liệu Cách tạo
giá trị SEATING Trạng thái các chỗ ngồi BOLB Kiểu tự định nghĩa SHOWTIMEPATTERNS Bản đồ chỗ ngồi trong buổi chiếu phim BOLB Kiểu tự định nghĩa THEATERID Tên rạp phim VARCHAR <= 256 ký tự
MOVIEID<pk> Tên phim
chiếu VARCHAR (Not null) <= 256 ký tự THEATERSCHEDULEBEAN_GENERATEDPK<fk> Tham chiếu sang bảng lịch chiếu BIGINT <= 8 ký tự MOVIEBEAN_ID<fk> Lấy thông
tin về phim VARCHAR
<= 256 ký tự 4.1.5 Table MOVIESHOWBEAN
Chứa thông tin về buổi chiếu phim
Tên field Ý nghĩa Kiểu dữ liệu Cách tạo
giá trị TIME<pk> Thời gian trình
chiếu
TIMESTAMP (Not null)
= 8 ký tự
THEATERID Tên rạp VARCHAR <=256
ký tự
MOVIEID Tên phim VARCHAR <=256
ký tự
SEATING Vị trí chỗ ngồi BOLB Kiểu tự
định nghĩa MOVIESCHEDULEBEAN_THEATERID<fk> Tên rạp phim VARCHAR <=256
ký tự MOVIESCHEDULEBEAN_MOVIEID<fk> Tên phim VARCHAR <=256
ký tự RESERVATIONBEAN_GENERATEDPK<fk > Tham chiêú sang bảng đặt chỗ VARCHAR <=256 ký tự
4.1.6 Table RESERSATIONBEAN
Chứa các thông tin liên quan đến việc đặt chỗ
Tên field Ý nghĩa Kiểu dữ liệu Cách tạo giá trị
SEATS Chỗ đã đặt BOLB Kiểu tự định
nghĩa GENERATEDPKFIELD<pk> Tự động sinh khóa
cho bảng
BIGINT
(Not null) <= 8 ký tự ACCOUNTBEAN_USERNAME<fk> Tài khoản người
đặt VARCHAR <=16 ký tự 4.1.7 Table SYNCLIENTBEAN
Chứa các thông tin mà client gửi tới và đồng bộ chúng
Tên field Ý nghĩa Kiểu dữ liệu Cách tạo
giá trị ID Số thự tự khách hàng đánh giá INTERGER <= 4 ký tự LASTSYNCHRONIZATIONTIME Lần đồng bộ gần đây nhất TIMESTAMP = 8 ký tự GENERATEDPKFIELD<pk> Sinh khóa tự
động BIGINT (Not null) <= 8 ký tự SYNCCONDUITBEAN_GENERATEDP<fk> Xác định client thông qua tham chiếu
BIGINT <= 8 ký tự
4.1.8 Table SYNCONDUITBEAN
Chứa thông tin về client phục vụ cho việc đồng bộ
Tên field Ý nghĩa Kiểu dữ liệu Cách tạo giá trị NEXTCLIENTID Client tiếp theo INTERGER <= 4 ký tự GENERATEDPKFIELD<pk> Tự động sinh khóa BIGINT
(Not null) <= 8 ký tự 4.1.9 Table SYNMETADATABEAN
Chứa các thông tin liên quan đến việc đồng bộ đánh giá phim
Tên field Ý nghĩa Kiểu dữ liệu Cách tạo
giá trị
ID Số thự tự
đồng bộ VARCHAR
<= 256 ký tự
CREATIONTIME Thời gian
đồng bộ BIGINT
< = 8 ký tự LASTMODIFICATIONTIME Lần thay đổi
gần đây nhất BIGINT
< = 8 ký tự
DELETED Xóa đánh giá SMALLINT <= 2 ký
tự GENERATEDPKFIELD<pk> Tự động sinh khóa BIGINT (Not null) < = 8 ký tự MOVIERATINGBEAN_GENERATEDP<fk> Lấy thông tin
đánh giá bộ
BIGINT < = 8 ký tự
phim
SYNCCONDUITBEAN_GENERATEDPK<fk> Lấy thông tin
client BIGINT
< = 8 ký tự 4.1.10 Table THEATERBEAN
Chứa các thông tin liên quan đến các rạp phim
Tên field Ý nghĩa Kiểu dữ liệu
Cách tạo giá trị
ADDRESS Địa chỉ VARCHAR <= 256
ký tự
NAME Tên rạp VARCHAR <= 256
ký tự ID<pk> Định danh rạp VARCHAR <= 256 ký tự ZIPCODE Mã rạp VARCHAR <= 256 ký tự THEATERSCHEDULEBEAN_GENERATEDPK<fk> Lấy thông tin lịch chiếu phim trong rạp BIGINT <= 8 ký tự 4.1.11 Table THEATERSCHEDULEBEAN Chứa các thông tin liên quan đến lịch chiếu phim
Tên field Ý nghĩa Kiểu dữ liệu Cách tạo giá trị EXPIRATIONDATE Có hiệu lực đến ngày TIMESTAMP = 8 ký tự GENERATEDPKFIELD<pk> Tự động sinh khóa BIGINT
(Not null) <= 8 ký tự
Hình 2.2.16: Quan hệ giữa các bảng cơ sở dữ liệu 4.2.1 MOVIEBEAN_ MOVIESCHEDULEBEAN
MOVIESCHEDULEBEAN.MOVIEID = MOVIEBEAN.ID Lấy các phim bên bảng phim qua bảng lịch phim
4.2.2 MOVIEBEAN_MOVIESHOWBEAN
MOVIEBEAN.MOVIESHOWTIME_TIME =MOVIESHOWBEAN.TIME Xác định thời gian chiếu phim từ bảng chiếu phim cùng với các thông tin khác trong bảng đó.
MOVIECHEDULEBEAN.THEATERSCHEDULEBEAN_GENERATEDPK = THEATERCHEDULEBEAN. GENERATEDPKFIELD
Cập nhật lịch chiếu phim của rạp phim cho lịch chiếu mỗi bộ phim vì mỗi bộ phim được chiếu tại một rạp cụ thể, một bộ phim có thể chiếu ở nhiều rạp cùng hoặc khác thời điểm.
4.2.4 THEATERCHEDULEBEAN_THEATERBEAN
THEATERCHEDULEBEAN. GENERATEDPKFIELD = THEATERBEAN. THEATERSCHEDULEBEAN_GENERATEDPK
Lấy thông tin lịch chiếu phim cho mỗi rạp phim.
4.2.5 MOVIESCHEDULEBEAN_MOVIESHOWBEAN
MOVIESHOWBEAN. MOVIESCHEDULEBEAN_THEATERID = MOVIESCHEDULEBEAN. THEATERID
Lấy thông tin về rạp phim từ lịch chiếu phim
MOVIESHOWBEAN. MOVIESCHEDULEBEAN_MOVIEID = MOVIESCHEDULEBEAN. MOVIEID
Lấy thông tinvề bộ phim được trình chiếu trong lịch. 4.2.7 RESERVATIONBEAN_ACCOUNTBEAN
ACCOUNTBEAN.USERNAME = RESERVATIONBEAN. ACCOUNTBEAN_USERNAME
Có tài khoản và đăng nhập mới được đặt chỗ. 4.2.8 ACCOUNTBEAN_MOVIERATIONBEAN ACCOUNTBEAN.USERNAME =
MOVIERATIONBEAN.ACCOUNTBEAN_USERNAME
Có tài khoản và đăng nhập mới được đánh giá chất lượng của bộ phim. 4.2.9 ACCOUNTBEAN_SYNCONDUITBEAN
ACCOUNTBEAN. SYNCCONDUITBEAN_GENERATEDPK = SYNCONDUITBEAN. GENERATEDPKFIELD
Xác nhận tài khoản trên client để trao đổi thông tin phục vụ việc đồng bộ cơ sở dữ liệu gửi về server sau này.
4.2.10 MOVIEBEAN_MOVIERATINGBEAN
MOVIEBEAN. MOVIERATINGBEAN_GENERATEDPK = MOVIERATINGBEAN. GENERATEDPK
Xác định đánh giá chất lượng bộ phim.
4.2.11 MOVIERATINGBEAN_SYNMETADATABEAN
MOVIERATINGBEAN. GENERATEDPKFIELD = SYNMETADATABEAN. MOVIERATINGBEAN _ GENERATEDPKFIELD
Đồng bộ hóa những đánh giá phim
4.2.12 SYNMETADATABEAN_SYNCONDUITBEAN
SYNCONDUITBEAN.GENERATEDPKFIELD = SYNMETADATABEAN. SYNCONDUITBEAN_ GENERATEDPKFIELD
Thu thập các thông tin mà client gửi tới.
4.2.13 SYNCONDUITBEAN_SYNCLIENTBEAN
SYNCLIENTBEAN. GENERATEDPKFIELD = SYNCONDUITBEAN. SYNCLIENTBEAN_ GENERATEDPKFIELD
Xác nhận thông tin từ client nào
5.MÔ HÌNH
5.1 Mô hình vật lý chi tiết
Hình 2.2.17: Mô hình vật lý
J2EE:
+ Các entity bean và facade bean được cất giữ trong smartticket-ejb.jar + Các servlet nằm trong smartticket-war.jar
J2ME:
+Các thành phần trên mobile : synchronization agent, remote model proxy,
local model, model facade, ui controler, ui classes nằm trong smartticket-client.jar. +Ngoài ra còn có các .jsp trên giao diện web browser
5.2 Các module xử lý
5.2.1 Phía client
a. Tổng quát
Hệ thống gồm 4 gói java lớn là:
- Gói: com.sun.j2me.blueprints.smartticket.client
+Trong gói này chứa lớp quan trọng nhất là SmartTicketMIDlet.java chứa than chính của chương trình.
+ Các gói com.sun.j2me.blueprints.smartticket.client.model, com.sun.j2me.blueprints.smartticket.client.ui,
com.sun.j2me.blueprints.smartticket.client.utils chứa các hàm giao diện và các hàm xử lý của client j2me
- Gói: com.sun.j2me.blueprints.smartticket.shared:đây là gói chứa các hàm chia sẻ chung giữa client và server
- Gói icons: chứa các file ảnh - Gói l10n chứa file ngôn ngữ
Hình 2.2.18: Các gói trong smartticket-client.jar b.Mô hình UML toàn hệ thống
Hình 2.2.21: Client-web-ejb
5.2.2 Phía server
Hình 2.2.22: Server-ejb b.SmartTicket-war.war
Hình 2.2.24: Server-web
6. CÀI ĐẶT
6.1 Cấu hình phần cứng
o Phía Client là điện thoại di động có hỗ trợ ứng dụng Java và hỗ trợ mạng. Trong quá trình xây dựng ứng dụng, client có thể là trình giả lập do nhà sản xuất cung cấp
o Server là máy chủ có cầu hình đủ mạnh để chạy các ứng dụng Java, tối thiểu như: Intel Pentium III 733 MHz, 128 MB RAM.
6.2 Cấu hình phần mềm
Máy chủ dịch vụ có thể cài bất kỳ hệ điều hành gì do Java hỗ trợ đa nền. Cụ thể hệ thống này được xây dựng trên máy tính cài hệ điều hành Windows XP Professional Edition. Tuy nhiên vẫn có thể triển khai trên máy chủ hệ điều hành Linux hay Macintosh... Máy chủ dịch vụ cài đặt các phần mềm sau:
o Java 2 SDK 1.4 trở lên
o Derby Apache và driver của nó cho Java
Máy chủ quản trị cơ sở dữ liệu phải cài hệ quản trị cơ sở dữ liệu Derby Apache . Để xây dựng ứng dụng cần phải có một số phần mềm sau:
o J2ME Wireless Toolkit . o Các phần mềm tùy chọn:
o IDE để viết chương trình Java
o Sun Java Wireless Toolkit giả lập điện thoại
o Proguard,Retroguard để tinh giảm ứng dụng J2ME
6.3 Ngôn ngữ môi trường
Ngôn ngữ xây dựng là Java trên môi trường Window.
7. GIAO DIỆN ỨNG DỤNG VÀ ĐÁNH GIÁ HIỆU SUẤT
7.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 thiết bị của J2ME Wireless Toolkit.
7.1.1 Giao diện bên server
Hình 2.2.25: Populate database bên server
7.1.2 Giao diện bên client
Hình 2.2.26: Giao diện chính của chương trình + Quản lý thông tin cá nhân
Hình 2.2.27: Chức năng chỉnh sửa thông tin cá nhân + Đặt vé
Hình 2.2.28:Chức năng đặt vé + Đánh giá chất lượng phim
Hình 2.2.29: Chức năng đánh giá chất lượng phim + Quản lý danh sách rạp phim
2.2.30: Chức năng xem danh sách các rạp phim
7.2 Hiệu suất của ứng dụng
7.2.1 Bộ nhớ
Hình 2.2.31: Đồ thị sử dụng bộ nhớ của ứng dụng
Ta thấy tổng bộ nhớ dành cho chương trình là 2097152 bytes, nhưng chỉ dùng ở mức ổn định132872 bytes, lúc cao nhất là 537232 bytes.Tức là tối đa chỉ chạy hết ¼ bộ nhớ dành cho nó vì vậy chương trình có tinh ứng dụng cao.
Hình 2.2.32:Danh sách các giao thức chiếm bộ nhớ mạng
Theo danh sách trên thì ngoài giao thức http là giao thức chính, không còn bất cứ giao thức nào khác làm tổn hao hay làm chậm quá trình trao đổi trên mạng vì vậy khả năng truy cập mạng sẽ giảm bót rất nhiều thời gian.
7.2.3 Kết luận
Ứng dụng đã được hoàn thành dưới dạng demo,nhưng hạn chế mà ứng dụng chưa làm được là chưa xây dựng một giao diện thân thiện với người quản trị cho phép nhập cơ sở dữ liệu tại các máy chủ, nhưng là một chương trình enterprise nó cho thấy được “tâm điểm” và cũng là thế mạnh của chương trình này đó là các EJB cùng các công nghệ khác của J2EE như là jsp, xml, webservice, JNDI…
Là người xây dựng hệ thống tôi đã có những trải nghiệm thiết thực với công nghệ J2EE và J2ME cũng như tích lũy cho mình kiến thức quan trọng về công nghệ này để có thể phục vụ công việc trong tương lai.
PHẦN 3: PHỤ LỤC
PHỤ LỤC 1: HƯỚNG DẪN CÀI ĐẶT
- Download và cài đặt bộ J2DK (jdk-java 2 software development kit ) 6 update 17 tại: (Bản mới nhất ở thời điểm làm đồ án thực tập) để biên dịch tâp tin mã nguồn:
http://java.sun.com/javase/downloads/index.jsp
- Download và cài đặt bộ công cụ phát triển java (j2se-Java 2 Standard Edition) (Bản mới nhất ở thời điểm làm đồ án thực tập):
http://java.sun.com/javase/downloads/index.jsp
- Download và cài đặt mô phỏng mobile J2ME Wireless Toolkit 2.5.2 (Bản mới nhất ở thời điểm làm đồ án thực tập) tại:
http://java.sun.com/products/sjwtoolkit/download.html
- Download Netbean 6.7.1 hỗ trợ gói cho mobile tại:
- Download GlassFish để thiết lập Application server:
https://glassfish.dev.java.net/public/downloadsindex.html#top
- Sau khi cài đặt ta thiết lập các biến môi trường như sau:
Hình 3.1.1: Java_home Hình 3.1.2: J2mewtk_home
Hình 3.1.3: J2ee_home Hình 3.1.4:Ant_home
PHỤ LỤC 2: THUẬT NGỮ VÀ VIẾT TẮT
API Application Program Interface
ASCII American Standard Code for Information Interchange
ASP Active Server Page
CBS Cell Broadcast Short Message Service
CDC Connected Device Configuration
CDMA Code Division Multiple Access
CGI Common Gateway Interface
CLDC Connected Limited Device Configuration
CORBA Common Object Request Broker Architecture
CPU Central Processing Unit
DOM Document Object Model
DTD Document Type Definition
EDGE Enhanced Data GSM Environment
EJB Enterprise Java Beans
GPRS General Packet Radio Service
GPS Global Positioning System
GSM Global System for Mobile Communications
GUI Graphical User Interface
HTML Hyper-Text Markup Language
HTTP Hyper-Text Transfer Protocol
IDE Integrated Development Environment
IIS Internet Information Service
IR Infra Red
ISDN Integrated Services Digital Network
J2EE Java 2 Platform, Enterprise Edition
J2ME Java 2 Platform, Micro Edition
J2SE Java 2 Platform, Standard Edition
JAD Java Application Descriptor
JAR Java Application Archive
JAXP Java API for XML Processing
JAXR Java API for XML Registries
JAX-RPC Java API for XML-based RPC
JCP Java Community Process
JDBC Java Database Connectivity
JNI JavaNative Interface Support
JSP Java Server Pages