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

xây dựng ứng dụng chia sẻ thông tin theo nhóm trên thiết bị di động

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 (5.04 MB, 56 trang )

GVHD: Ths. Đặng Hoàng Anh Thực tập tốt nghiệp
MỤC LỤC
MỞ ĐẦU 3
CHƯƠNG 1: GIỚI THIỆU BÀI TOÁN 4
1.1. Sự bùng nổ của các thiết bị di động và lợi ích của nó mang lại 4
1.2. Nhu cầu sử dụng hệ thống di động ngày nay 5
1.3. Khái quát về hệ thống chia sẻ thông tin 6
1.3.1. Chức năng chia sẻ thông tin theo nhóm 6
1.3.2. Các thông tin có thể chia sẻ 7
1.4. Phạm vi áp dụng và sơ đồ hoạt động của hệ thống chia sẻ thông tin 7
1.4.1. Phạm vi áp dụng 7
1.4.2. Sơ đồ hoạt động của hệ thống 8
CHƯƠNG 2: CƠ SỞ LÝ THUYẾT 9
2.1. PHP & MySQL 9
2.1.1. Tổng quan về ngôn ngữ lập trình PHP 9
2.1.2. Giới thiệu hệ CSDL MySQL 12
2.2. J2ME & Lập trình trên điện thoại di động 13
2.2.1. Khái quát các tầng J2ME 13
2.2.2. Tầng phần cứng thiết bị (Device Hardware Layer) 14
2.2.3. Tầng máy ảo Java (Java Virtual Machine Layer) 14
2.2.4. Tầng cấu hình (Configuration Layer) 14
2.2.5. Tầng hiện trạng (Profile Layer) 15
2.3. MIDP (Mobile Information Device Profile) 15
2.3.1. MIDlet 16
2.3.1. Bộ khung MIDlet (MIDlet Skeleton) 16
2.3.2. Chu kỳ sống của MIDlet (MIDlet lifecycle) 18
2.3.3. Tập tin JAR 18
2.3.4. Tập tin kê khai (manifest) và tập tin JAD 19
2.4. Lưu trữ bản ghi trong J2ME (Record Store) 20
2.4.1. Định dạng, thêm và xóa các bản ghi 21
Sinh viên: Trần Trung Hiếu– CNT48ĐH Trang 1



GVHD: Ths. Đặng Hoàng Anh Thực tập tốt nghiệp
2.4.2. Định dạng dữ liệu bản ghi 22
2.4.3. Thêm dữ liệu bản ghi đã định dạng vào lưu trữ bản ghi 22
2.4.4. Xóa bản ghi 22
2.4.5. Lọc các bản ghi (Filtering Records) 23
CHƯƠNG 3: PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG 24
3.1. Mô tả hệ thống trên thực tế 24
3.1.1. Quản lý thành viên trong cộng đồng 24
3.1.2. Quản lý nhóm thành viên 24
3.1.6. Gửi bình luận cho ảnh và bài viết 26
3.2. Sơ đồ phân rã chức năng 26
3.3. Sơ đồ luồng dữ liệu 28
3.3.1. Sơ đồ luồng dữ liệu mức ngữ cảnh 28
3.3.2. Sơ đồ luồng dữ liệu mức đỉnh 28
3.3.3. Sơ đồ luồng dữ liệu mức dưới đỉnh 29
3.4. Sơ đồ quan hệ và các tập thực thể 36
3.4.1. Thực thể và các thuộc tính 36
3.4.2. Mỗi quan hệ giữa các tập thực thể 37
3.4.3. Thiết kế cơ sở dữ liệu 42
CHƯƠNG 4: MỘT SỐ KẾT QUẢ ĐẠT ĐƯỢC 49
4.1. Chức năng đăng nhập hệ thống 49
4.2. Chức năng đăng ký tài khoản 50
4.3. Chức năng nhận tin mới 51
4.4. Chức năng xem tin 52
4.5. Chức năng chia sẻ tin 53
KẾT LUẬN 55
TÀI LIỆU THAM KHẢO 56
Sinh viên: Trần Trung Hiếu– CNT48ĐH Trang 2


GVHD: Ths. Đặng Hoàng Anh Thực tập tốt nghiệp
MỞ ĐẦU
Hiện nay, mạng xã hội đang ngày càng đi sâu vào cuộc sống của con
người. Đây là mô hình mới nhất trong quá trình phát triển của xã hội. Nó đơn
giản hóa các phương thức tương tác và kết nối giữa con người với nhau. Để
chia sẻ những thông tin cá nhân, người dùng chỉ việc có cho mình tài khoản
của một mạng xã hội như MySpace, Facebook, Zing Me và thường xuyên
cập nhật những thông tin lên trang cá nhân của họ.
Tuy nhiên với sự phát triển của xã hội, thường xuyên ngồi bên cạnh
chiếc máy tính và cập nhật thông tin là việc làm khá mất thời gian. Thay vào
đó, việc cập nhật thông tin qua thiết bị di động sẽ thuận tiện và tiết kiệm thời
gian hơn rất nhiều. Hiện nay có rất nhiều công nghệ mới phát triển song song
với việc phát triển công nghệ thông tin như Bluetooth, Wireless, WAP,
SOAP… nhằm giúp công nghệ thông tin ngày càng thân thiết với người dùng
hơn. Có thể nói, ngày nay công nghệ di động thật sự góp phần không nhỏ
trong việc kết nối con người với thông tin cũng như con người với con người.
Chính vì vậy, em đã chọn đề tài “Xây dựng ứng dụng chia sẻ thông
tin theo nhóm trên thiết bị di động” với mục đích phân tích và tìm giải pháp
xây dựng một chương trình trên thiết bị di động giúp người dùng chia sẻ và
cập nhật thông tin trên mạng xã hội. Đồng thời tích hợp công nghệ GPS nhằm
xác định và chia sẻ vị trí hiện tại.
Sinh viên: Trần Trung Hiếu– CNT48ĐH Trang 3

GVHD: Ths. Đặng Hoàng Anh Thực tập tốt nghiệp
CHƯƠNG 1: GIỚI THIỆU BÀI TOÁN
1.1. Sự bùng nổ của các thiết bị di động và lợi ích của nó mang lại
Hiện nay, thế giới đang tập trung vào điện thoại di động. Trong năm
2010, sự bùng nổ của hệ điều hành Android, sự ra đời của iPad và sự tăng tỷ
lệ truy cập internet qua Smartphone đã cho thấy những bước nhảy vọt trong
việc phát triển điện thoại di động. Thêm vào đó, công nghệ mạng 3G (Third -

Generation Technology) ra đời đã thúc đẩy nền công nghiệp nội dung số phát
triển mạnh mẽ, mang lại các dịch vụ cao cấp hơn.
Góp thêm phần quan trọng vào sự bùng nổ của các thiết bị di động là
việc cạnh tranh mạnh mẽ của các nhà phát triển ứng dụng và thiết bị di động.
Dưới đây là một số lĩnh vực quan trọng và nhiều hứa hẹn được các nhà phát
triển quan tâm:
- Lĩnh vực quảng cáo trên di động được dự đoán sẽ tăng gần 9 lần trong
3 năm tới và đạt 17 triệu USD (theo Báo Công thương). Số lượng thuê bao di
động trên toàn thế giới hiện tại đạt hơn 4 tỷ cho thấy thị trường vô cùng to lớn
cho các nhà khai thác.
- Khái niệm tìm kiếm trên điện thoại di động (mobile search) là khá mới
mẻ tại Việt Nam nhưng nhờ sự tăng trưởng chóng mặt về số lượng các
website có thể truy cập bằng điện thoại di động mà nó ngày trở nên vô cùng
quan trọng. Tìm kiếm trên di động cho phép người sử dụng tiếp cận thông tin
một cách hoàn toàn mới và chi phí cũng giảm đáng kể.
- Các ứng dụng xác định vị trí trợ giúp người sử dụng tìm đường và đi
du lịch trên thiết bị di động đang tăng trưởng chóng mặt. Các ứng dụng này
mở ra cơ hội cho nhiều lĩnh vực kinh doanh và truyền thông.
- Mạng xã hội định vị dựa trên nền tảng định vị giúp người sử dụng
khám phá ra người thân, bạn bè đang ở quanh họ hay ở bất cứ nơi nào với
điện thoại di động mang theo. Người sử dụng có thể nhận và gửi các tin nhắn
thông qua mạng xã hội định vị hoặc qua Yahoo, Skype… cho bạn bè. Ngoài
ra người sử dụng còn có thể đăng ảnh (upload) và tải ảnh (download) chụp bất
Sinh viên: Trần Trung Hiếu– CNT48ĐH Trang 4

GVHD: Ths. Đặng Hoàng Anh Thực tập tốt nghiệp
cứ hoạt động nào tại nơi họ đến để chia sẻ cho bạn bè. Do có những điểm
mạnh và nổi bật đó mà mạng xã hội định vị đang liên tục phát triển.
- Công nghệ kết nối các điện thoại di động: iPhone 4 vừa giới thiệu chức
năng gọi điện mà người gọi có thể mặt đối mặt qua video trên màn hình điện

thoại. Phần mềm Skype hiện cho phép cuộc gọi video trong tất cả smartphone
sử dụng hệ điều hành Android, vì thế thị trường này đang được mong đợi sẽ
có tăng trường đột biến nhờ vào các công nghệ mới sẽ ra đời.
Từ những thông tin trên có thể thấy sự bùng nổ của thiết bị di động như
ngày nay đã khiến người sử dụng năng động hơn trong công việc, tiết kiệm
nhiều thời gian, chi phí hơn và dịch vụ giải trí mới ra đời cũng đa dạng hơn.
1.2. Nhu cầu sử dụng hệ thống di động ngày nay
Ngày nay, đi cùng với việc tự động hóa và tin học hóa các công việc
hàng ngày, nhu cầu sử dụng Internet để xử lý công việc và kết nối với người
thân, bạn bè phát sinh mọi lúc, mọi nơi với cường độ ngày càng cao. Truy cập
Internet đã trở nên phổ biến và dần được coi như một nhu cầu thiết yếu trên
mọi khía cạnh.
- Mục đích sử dụng đa dạng: Tiến bộ vượt bậc của công nghệ đã làm
thay đổi hoàn toàn thói quen cũng như hành vi của người sử dụng. Họ không
chỉ sử dụng hệ thống di động để giải quyết các nhu cầu đơn thuần như trò
chuyện, gửi tin nhắn, chơi game, nghe nhạc, lướt web, thanh toán… mà còn
muốn được giải quyết các nhu cầu đó ở mọi lúc mọi nơi, nhanh nhất, thuận
tiện nhất, tiết kiệm nhất có thể. Vài năm trước, để có thể ký kết thành công
một hợp đồng làm ăn người phải bỏ ra rất nhiều chi phí cho việc gặp mặt
nhằm trao đổi các thỏa thuận. Ngày nay, nhờ có điện thoại di động mà những
công việc ấy có thể thực hiện một cách đơn giản và dễ dàng.
- Thành phần sử dụng đa dạng: Khác với trước kia, điện thoại di động
không chi dành cho những thương nhân, chuyên gia công nghệ… mà còn là
nhu cầu sử dụng của mỗi cá nhân trong cuộc sống thường ngày. Với giới trẻ
ngày nay, truy cập website để cập nhật thông tin thường xuyên đã trở thành
Sinh viên: Trần Trung Hiếu– CNT48ĐH Trang 5

GVHD: Ths. Đặng Hoàng Anh Thực tập tốt nghiệp
thói quen thường ngày. Chỉ với một chiếc máy điện thoại kết nối được
Internet, người sử dụng có thể truy cập website rất thuận lợi. Cùng với đó là

sự bùng nổ của hàng loạt website thích ứng được với thiết bị di động, sự
chuẩn bị để cho ra đời tên miền .mobi càng thuận lợi hơn trong việc truy cập
website trên điện thoại.
- Nhu cầu sử dụng hệ thống di động để chia sẻ thông tin:
+ Việc chia sẻ thông tin đã diễn ra từ xa xưa cho tới bây giờ. Từ việc trao
đổi thông tin bằng những hình thức thô sơ nhất như trao đổi trực tiếp bằng
miệng, trao đổi thông tin qua giấy tờ rồi cao cấp hơn là trao đổi thông tin qua
điện thoại để bàn, điện thoại di động. Và tới ngày nay, việc trao đổi thông tin
càng phát triển hơn khi con người không chỉ muốn trao đổi một - một mà
muốn trao đổi với một nhóm người hay với cả cộng đồng. Bằng nhiều hình
thức như việc trò chuyện trên Yahoo, Skype qua nhóm; thảo luận trên các
diễn đàn hay tham gia vào một mạng xã hội như Facebook, Zing me…, người
sử dụng đã dần thỏa mãn được mong muốn đó.
+ Tuy nhiên, việc ngồi bên chiếc máy tính để bàn hoặc máy tính xách tay
khiến người sử dụng mất rất nhiều thời gian. Họ cần cập nhật và chia sẻ thông
tin một cách liên tục, thường xuyên hơn, thuận tiện hơn. Đáp ứng nhu cầu đó,
ngày nay những ứng dụng chia sẻ thông tin theo nhóm, theo cộng đồng trên
điện thoại di động ngày càng nhiều và đa dạng. Chỉ việc cài đặt và đăng ký
thành viên là người sử dụng có thể tham gia vào một cộng đồng những thành
viên khác cùng chia sẻ những thông tin như ảnh, bình luận, cuộc sống đời tư
hay cả vị trí hiện tại của họ…
1.3. Khái quát về hệ thống chia sẻ thông tin
1.3.1. Chức năng chia sẻ thông tin theo nhóm
- Hệ thống chia sẻ thông tin cho phép người sử dụng (thành viên) chia sẻ,
chat và email với một nhóm bạn. Thành viên còn có thể giới hạn việc chia sẻ
ảnh, lời bình với các thành viên trong nhóm mình tham gia.
Sinh viên: Trần Trung Hiếu– CNT48ĐH Trang 6

GVHD: Ths. Đặng Hoàng Anh Thực tập tốt nghiệp
- Trong mỗi nhóm có một bộ máy quản trị được phân chia theo quyền

hạn của thành viên trong nhóm. Mỗi nhóm mặc định sẽ có ba quyền hạn là:
quản trị viên, điều hành viên và thành viên.
- Thành viên có quyền tạo nhóm mới. Sau khi tạo nhóm, tài khoản tạo
nhóm sẽ mặc định có quyền quản trị viên của nhóm đó. Các tài khoản có
quyền hạn là quản trị viên hoặc điều hành viên sẽ quản trị và điều hành nhóm
của mình.
1.3.2. Các thông tin có thể chia sẻ
Người dùng sau khi tham gia nhóm có thể chia sẻ ảnh, bài viết, lời bình
và vị trí của mình với các thành viên khác trong nhóm.
- Chia sẻ ảnh: Người dùng có thể chia sẻ ảnh bằng cách tải ảnh lên hệ
thống rồi chọn các nhóm muốn chia sẻ thông tin. Ngoài ra, người dùng có thể
tổng hợp, phân loại bằng việc tạo album ảnh. Với các thiết bị có hỗ trợ máy
chụp ảnh, thành viên có thể chụp ảnh và chia sẻ ngay với nhóm bạn của mình.
- Chia sẻ bài viết: Người dùng có thể tạo ra những bài viết rồi chọn nhóm
để chia sẻ với các thành viên khác. Cũng giống như ảnh, người dùng có thể
tổng hợp, phân loại các bài viết thành các chủ đề.
- Gửi bình luận: Với một bức ảnh hay bài viết sẽ có nhiều suy nghĩ, bình
luận xoay quanh bức ảnh đó. Do đó, người dùng có thể gửi những lời bình,
những suy nghĩ của mình về các thông tin của những thành viên khác chia sẻ.
- Chia sẻ vị trí: Bên cạnh việc chia sẻ ảnh, bài viết và gửi bình luận,
thành viên đồng thời cũng có thể chia sẻ vị trí hiện tại của mình thông qua
việc xác định thiết bị di động bằng GPS.
1.4. Phạm vi áp dụng và sơ đồ hoạt động của hệ thống chia sẻ thông tin
1.4.1. Phạm vi áp dụng
Hệ thống chia sẻ thông tin theo nhóm có thể sử dụng tại mọi nơi có
Internet. Thành viên chỉ cần có trong tay một thiết bị di động có kết nối
Internet là có thể truy cập vào hệ thống. Có hai cách để truy cập vào hệ thống
là truy cập vào website hoặc truy cập vào ứng dụng chia sẻ thông tin theo
nhóm được cài đặt trên thiết bị di động đó.
Sinh viên: Trần Trung Hiếu– CNT48ĐH Trang 7


GVHD: Ths. Đặng Hoàng Anh Thực tập tốt nghiệp
Với việc truy cập vào website, thành viên sẽ thao tác với hệ thống như
trên máy tính. Hệ thống website sẽ kết nối với server và cung cấp những dữ
liệu tương ứng với thao tác của thành viên.
Tiện lợi hơn, thành viên có thể sử dụng ứng dụng chia sẻ thông tin
được cài đặt trực tiếp trên thiết bị di động. Ứng dụng cũng sẽ kết nối với
server cung cấp cho thành viên những dữ liệu được yêu cầu. Bên cạnh đó,
việc sử dụng ứng dụng được cài đặt trực tiếp trên thiết bị di động còn hỗ trợ
thành viên những chức năng hữu ích tương ứng với thiết bị di động đó như
chụp ảnh, xác định vị trí…
1.4.2. Sơ đồ hoạt động của hệ thống
Sinh viên: Trần Trung Hiếu– CNT48ĐH Trang 8

GVHD: Ths. Đặng Hoàng Anh Thực tập tốt nghiệp
CHƯƠNG 2: CƠ SỞ LÝ THUYẾT
2.1. PHP & MySQL
2.1.1. Tổng quan về ngôn ngữ lập trình PHP
2.1.1.1. Tổng quan về PHP
PHP (Personal Home Page) là kịch bản trên Server (Server Script),
được thiết kế nhằm cho phép người lập trình có thể xây dựng ứng dụng Web
thao tác trên cơ sở dữ liệu.
PHP có đặc điểm nổi bật là dễ sử dụng, chi phí thấp bởi bản thân nó là
mã nguồn mở. Đồng thời PHP có thể chạy trên các cơ sở dữ liệu không yêu
cầu bản quyền như MySQL, PostgreSQL… Bên cạnh đó PHP vẫn có thể làm
việc tốt trên hầu hết các cơ sở dữ liệu thông dụng hiện nay như SQL Server,
Access, Oracle… Chính vì lý do trên, cộng đồng PHP hiện nay là một trong
số những cộng đồng lớn nhất trên mạng Internet.
2.1.1.2. Lịch sử phát triển của PHP
PHP được phát triển từ một sản phẩm có tên là PHP/FI. PHP/FI do

Rasmus Lerdorf tạo ra năm 199. Ban đầu PHP được xem như là một tập con
đơn giản của các mã kịch bản Perl để theo dõi tình hình truy cập đến bản sơ
yếu lý lịch của ông trên mạng. Ông đặt tên cho bộ mã kịch bản này là
'Personal Home Page Tools'. Khi có nhu cầu sử dụng các chức năng đa dạng
hơn, Rasmus viết ra một bộ thực thi bằng C lớn hơn để có thể truy vấn tới các
cơ sở dữ liệu (CSDL) và giúp cho người sử dụng phát triển các ứng dụng web
đơn giản. Ông đã quyết định công bố mã nguồn của PHP/FI cho mọi người
xem, sử dụng cũng như sửa các lỗi có trong nó đồng thời cải tiến mã nguồn.
PHP/FI, viết tắt từ "Personal Home Page/Forms Interpreter", bao gồm
một số các chức năng cơ bản cho PHP như ta đã biết đến chúng ngày nay. Nó
có các biến kiểu như Perl, thông dịch tự động các biến của form và cú pháp
HTML nhúng. Cú pháp này giống như của Perl, mặc dù hạn chế hơn nhiều,
đơn giản và có phần thiếu nhất quán. PHP/FI 2.0 được chính thức công bố
Sinh viên: Trần Trung Hiếu– CNT48ĐH Trang 9

GVHD: Ths. Đặng Hoàng Anh Thực tập tốt nghiệp
vào tháng 11 năm 1997. Nhưng không lâu sau đó, nó đã được thay thế bởi các
bản alpha đầu tiên của PHP 3.0.
PHP 3.0 là phiên bản đầu tiên cho chúng ta thấy một hình ảnh gần gũi
với các phiên bản PHP ngày nay. Nó đã được Andi Gutmans và Zeev Suraski
tạo ra năm 1997 sau khi viết lại hoàn toàn bộ mã nguồn trước đó. Lý do chính
phiên bản này được tạo ra là do họ nhận thấy PHP/FI 2.0 hết sức yếu kém
trong việc phát triển các ứng dụng thương mại điện tử mà họ đang xúc tiến
trong dự án của một trường đại học. Dựa trên cơ sở đã có của PHP/FI, Andi,
Rasmus và Zeev đã quyết định hợp tác và công bố PHP 3.0 như là phiên bản
thế hệ kế tiếp của PHP/FI 2.0 và chấm dứt phát triển PHP/FI 2.0.
Một trong những sức mạnh lớn nhất của PHP 3.0 là các tính năng mở
rộng mạnh mẽ của nó. Ngoài khả năng cung cấp cho thành viên cuối một cơ
sở hạ tầng chặt chẽ dùng cho nhiều CSDL, giao thức và API khác nhau, các
tính năng mở rộng của PHP 3.0 đã thu hút rất nhiều nhà phát triển tham gia và

đề xuất các module mở rộng mới. Hoàn toàn có thể kết luận được rằng đây
chính là điểm mấu chốt dẫn đến thành công vang dội của PHP 3.0. Các tính
năng khác được giới thiệu trong PHP 3.0 gồm có hỗ trợ cú pháp hướng đối
tượng và nhiều cú pháp ngôn ngữ nhất quán khác.
Vào mùa đông năm 1998, ngay sau khi PHP 3.0 chính thức được công
bố, Andi Gutmans và Zeev Suraski đã bắt đầu bắt tay vào việc viết lại phần
lõi của PHP. Mục đích thiết kế là nhằm cải tiến tốc độ xử lý các ứng dụng
phức tạp, và cải tiến tính module của cơ sở mã PHP. Những ứng dụng như
vậy đã chạy được trên PHP 3.0 dựa trên các tính năng mới và sự hỗ trợ khá
nhiều các CSDL và API của bên thứ ba, nhưng vẫn chưa thật sự có hiệu quả.
Một động cơ mới, có tên 'Zend Engine' (ghép từ các chữ đầu trong tên
của Zeev và Andi), đã đáp ứng được các nhu cầu thiết kế này một cách thành
công, và lần đầu tiên được giới thiệu vào giữa năm 1999. PHP 4.0 dựa trên
động cơ này và đi kèm với hàng loạt các tính năng mới bổ sung đã chính thức
được công bố vào tháng 5 năm 2000, gần 2 năm sau khi bản PHP 3.0 ra đời.
Sinh viên: Trần Trung Hiếu– CNT48ĐH Trang 10

GVHD: Ths. Đặng Hoàng Anh Thực tập tốt nghiệp
Ngoài tốc độ xử lý được cải thiện rất nhiều, PHP 4.0 đem đến các tính năng
chủ yếu khác gồm có sự hỗ trợ nhiều máy chủ Web hơn, hỗ trợ phiên làm
việc HTTP, tạo bộ đệm thông tin đầu ra, nhiều cách xử lý thông tin người sử
dụng nhập vào bảo mật hơn và cung cấp một vài các cấu trúc ngôn ngữ mới.
Với PHP 4, số nhà phát triển dùng PHP đã lên đến hàng trăm nghìn và
hàng triệu site đã công bố cài đặt PHP, chiếm khoảng 20% số tên miền trên
mạng Internet.
Nhóm phát triển PHP cũng đã lên tới con số hàng nghìn người và nhiều
nghìn người khác tham gia vào các dự án có liên quan đến PHP như PEAR,
PECL và tài liệu kĩ thuật cho PHP.
Sự thành công hết sức to lớn của PHP 4.0 đã không làm cho nhóm phát
triển PHP tự mãn. Cộng đồng PHP đã nhanh chóng giúp họ nhận ra những

yếu kém của PHP 4.0 đặc biệt với khả năng hỗ trợ lập trình hướng đối tượng
(OOP), xử lý XML, không hỗ trợ giao thức máy khách mới của MySQL 4.1
và 5.0, hỗ trợ dịch vụ web yếu. Những điểm này chính là mục đích để Zeev
và Andi viết Zend Engine 2.0, lõi của PHP 5.0. Một thảo luận trên Slashdot
đã cho thấy việc phát triển PHP 5.0 có thể đã bắt đầu vào thời điểm tháng 12
năm 2002 nhưng những bài phỏng vấn Zeev liên quan đến phiên bản này thì
đã có mặt trên mạng Internet vào khoảng tháng 7 năm 2002. Ngày 29 tháng 6
năm 2003, PHP 5 Beta 1 đã chính thức được công bố để cộng đồng kiểm
nghiệm. Đó cũng là phiên bản đầu tiên của Zend Engine 2.0. Phiên bản Beta 2
sau đó đã ra mắt vào tháng 10 năm 2003 với sự xuất hiện của hai tính năng rất
được chờ đợi Iterators và Reflection nhưng tính năng gây tranh cãi
namespaces đã bị loại khỏi mã nguồn. Ngày 21 tháng 12 năm 2003, PHP 5
Beta 3 đã được công bố để kiểm tra với việc phân phối kèm với Tidy, bỏ hỗ
trợ Windows 95, khả năng gọi các hàm PHP bên trong XSLT, sửa chữa nhiều
lỗi và thêm khá nhiều hàm mới. PHP 5 bản chính thức đã ra mắt ngày 13
tháng 7 năm 2004 sau một chuỗi khá dài các bản kiểm tra thử bao gồm Beta
4, RC 1, RC2, RC3. Mặc dù coi đây là phiên bản sản xuất đầu tiên nhưng
Sinh viên: Trần Trung Hiếu– CNT48ĐH Trang 11

GVHD: Ths. Đặng Hoàng Anh Thực tập tốt nghiệp
PHP 5.0 vẫn còn một số lỗi trong đó đáng kể là lỗi xác thực HTTP. Ngày 14
tháng 7 năm 2005, PHP 5.1 Beta 3 được PHP Team công bố đánh dấu sự chín
muồi mới của PHP với sự có mặt của PDO, một nỗ lực trong việc tạo ra một
hệ thống API nhất quán trong việc truy cập CSDL và thực hiện các câu truy
vấn. Ngoài ra, trong PHP 5.1, các nhà phát triển PHP tiếp tục có những cải
tiến trong nhân Zend Engine 2, nâng cấp module PCRE lên bản PCRE 5.0
cùng những tính năng và cải tiến mới trong SOAP, streams và SPL.
Hiện nay phiên bản tiếp theo của PHP đang được phát triển, PHP 6 bản
sử dụng thử đã có thể được download tại địa chỉ . Phiên
bản PHP 6 được kỳ vọng sẽ lấp đầy những khiếm khuyết của PHP ở phiên

bản hiện tại, ví dụ: hỗ trợ namespace (hiện tại các nhà phát triển vẫn chưa
công bố rõ ràng về vấn đề này); hỗ trợ Unicode; sử dụng PDO làm API chuẩn
cho việc truy cập CSDL, các API cũ sẽ bị đưa ra thành thư viện PECL
2.1.2. Giới thiệu hệ CSDL MySQL
2.1.2.1. Giới thiệu về MySQL
MySQL là hệ quản trị CSDL mã 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à CSDL tốc độ cao, ổn định, 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
MySQL là một trong những ví dụ rất cơ bản về Hệ Quản trị CSDL
quan hệ sử dụng Ngôn ngữ truy vấn có cấu trúc (SQL). MySQL được sử dụng
cho việc bổ trợ PHP, Perl và nhiều ngôn ngữ khác. Nó làm nơi lưu trữ những
thông tin trên các trang web viết bằng PHP, Perl
Sinh viên: Trần Trung Hiếu– CNT48ĐH Trang 12

GVHD: Ths. Đặng Hoàng Anh Thực tập tốt nghiệp
2.1.2.2. Một số đặc điểm của MySQL
MySQL là một phần mềm quản trị CSDL dạng server - based (gần
tương đương với SQL Server của Microsoft). MySQL quản lý dữ liệu thông
qua các CSDL, mỗi CSDL có thể có nhiều bảng quan hệ chứa dữ liệu.
MySQL có cơ chế phân quyền người sử dụng riêng. Mỗi thành viên có
thể được quản lý một hoặc nhiều CSDL khác nhau, có riêng tên truy cập (user
name) và mật khẩu (password) tương ứng để truy xuất đến CSDL. Khi ta truy
vấn tới CSDL MySQL, thành viên phải cung cấp đúng tên truy cập và mật

khẩu của tài khoản có quyền sử dụng CSDL đó.
CSDL MySQL đã trở thành CSDL mã nguồn mở phổ biến nhất trên thế
giới vì cơ chế xử lý nhanh và ổn định của nó, sự đáng tin cậy cao và dễ sử
dụng. Nó được sử dụng mọi nơi - ngay cả châu Nam Cực - bởi các nhà phát
triển Web riêng lẻ cũng như rất nhiều các tổ chức lớn nhất trên thế giới để tiết
kiệm thời gian và tiền bạc cho những Websites có dung lượng lớn, phần mềm
đóng gói - bao gồm cả những nhà đi đầu trong lĩnh vực công nghiệp như
Yahoo!, Alcatel-Lucent, Google, Nokia, YouTube và Zappos.com.
MySQL không chỉ là CSDL mã nguồn mở phổ biến nhất trên thế giới,
nó còn trở thành CSDL được chọn cho thế hệ mới của các ứng dụng xây dựng
trên nền Linux, Apache, MySQL, PHP/Perl/Python. MySQL chạy trên hơn 20
flatform bao gồm: Linux, Windows, OS/X, HP-UX, AIX, Netware, mang đến
cho bạn tính linh hoạt trong việc sử dụng.
2.2. J2ME & Lập trình trên điện thoại di động
2.2.1. Khái quát các tầng J2ME
Mục tiêu của J2ME là cho phép người lập trình viết các ứng dụng độc
lập với thiết bị di động, không cần quan tâm đến phần cứng thật sự. Để đạt
được mục tiêu này, J2ME được xây dựng bằng các tầng (layer) khác nhau để
giấu đi việc thực hiện phần cứng khỏi nhà phát triển. Sau đây là các tầng của
J2ME được xây dựng trên CLDC:
Sinh viên: Trần Trung Hiếu– CNT48ĐH Trang 13

GVHD: Ths. Đặng Hoàng Anh Thực tập tốt nghiệp
Hình 1. Các tầng của CLDC J2ME
Mỗi tầng ở trên tầng hardware là tầng trừu tượng hơn cung cấp cho lập
trình viên nhiều giao diện lập trình ứng dụng (API-Application Program
Interface) thân thiện hơn.
2.2.2. Tầng phần cứng thiết bị (Device Hardware Layer)
Đây chính là thiết bị di động thật sự với cấu hình phần cứng của nó về
bộ nhớ và tốc độ xử lý. Dĩ nhiên thật ra nó không phải là một phần của J2ME

nhưng nó là nơi xuất phát. Các thiết bị di động khác nhau có thể có các bộ vi
xử lý khác nhau với các tập mã lệnh khác nhau. Mục tiêu của J2ME là cung
cấp một chuẩn cho tất cả các loại thiết bị di động khác nhau.
2.2.3. Tầng máy ảo Java (Java Virtual Machine Layer)
Khi mã nguồn Java được biên dịch nó được chuyển đổi thành mã
bytecode. Mã bytecode này sau đó được chuyển thành mã ngôn ngữ máy của
thiết bị di động. Tầng máy ảo Java bao gồm KVM (K Virtual Machine) là bộ
biên dịch mã bytecode có nhiệm vụ chuyển mã bytecode của chương trình
Java thành ngôn ngữ máy để chạy trên thiết bị di động. Tầng này cung cấp
một sự chuẩn hóa cho các thiết bị di động để ứng dụng J2ME sau khi đã biên
dịch có thể hoạt động trên bất kỳ thiết bị di động nào có J2ME KVM.
2.2.4. Tầng cấu hình (Configuration Layer)
Tầng cấu hình của CLDC định nghĩa giao diện ngôn ngữ Java (Java
language interface) cơ bản để cho phép chương trình Java chạy trên thiết bị di
Sinh viên: Trần Trung Hiếu– CNT48ĐH Trang 14

GVHD: Ths. Đặng Hoàng Anh Thực tập tốt nghiệp
động. Đây là một tập các API định nghĩa lõi của ngôn ngữ J2ME. Lập trình
viên có thể sử dụng các lớp và phương thức của các API này tuy nhiên tập các
API hữu dụng hơn được chứa trong tầng hiện trạng (profile layer).
2.2.5. Tầng hiện trạng (Profile Layer)
Tầng hiện trạng hay MIDP (Hiện trạng thiết bị thông tin di động-
Mobile Information Device Profile) cung cấp tập các API hữu dụng hơn cho
lập trình viên. Mục đích của hiện trạng là xây dựng trên lớp cấu hình và cung
cấp nhiều thư viện ứng dụng hơn. MIDP định nghĩa các API riêng biệt cho
thiết bị di động. Cũng có thể có các hiện trạng và các API khác ngoài MIDP
được dùng cho ứng dụng. Ví dụ, có thể có hiện trạng PDA định nghĩa các lớp
và phương thức hữu dụng cho việc tạo các ứng dụng PDA (lịch, sổ hẹn, sổ địa
chỉ…). Cũng có thể có một hiện trạng định nghĩa các API cho việc tạo các
ứng dụng Bluetooth. Thực tế, các hiện trạng kể trên và tập các API đang được

xây dựng. Chuẩn hiện trạng PDA là đặc tả JSR - 75 và chuẩn bluetooth API là
đặc tả JSR - 82 với JSR là viết tắt của Java Specification Request.
2.3. MIDP (Mobile Information Device Profile)
Tầng J2ME cao nhất là tầng hiện trạng và mục đích của nó là định
nghĩa các API cho các thiết bị di động. Một thiết bị di động có thể hỗ trợ
nhiều hiện trạng. Một hiện trạng có thể áp đặt thêm các giới hạn trên các loại
thiết bị di động (như nhiều bộ nhớ hơn hay độ phân giải màn hình cao hơn).
Hiện trạng là tập các API hữu dụng hơn cho các ứng dụng cụ thể. Lập trình
viên có thể viết một ứng dụng cho một hiện trạng cụ thể và không cần quan
tâm đến nó chạy trên thiết bị nào. Nó không định nghĩa cách mà ứng dụng
được nạp trong thiết bị di động. Đó là trách nhiệm của nhà sản xuất. Nó cũng
không định nghĩa bất kỳ loại mô hình bảo mật end-to-end nào, vốn cần thiết
cho ứng dụng kinh doanh nhận số thẻ tín dụng của thành viên. Nó cũng không
bắt buộc nhà sản xuất cách mà lớp MIDP được thực hiện.
Sinh viên: Trần Trung Hiếu– CNT48ĐH Trang 15

GVHD: Ths. Đặng Hoàng Anh Thực tập tốt nghiệp
2.3.1. MIDlet
Các ứng dụng J2ME được gọi là MIDlet (Mobile Information Device
applet).
Hình 2. MIDlet
Thông báo import dùng để truy xuất các lớp của CLDC và MIDP.
Lớp chính của ứng dụng được định nghĩa là lớp kế thừa lớp MIDlet của
MIDP. Có thể chỉ có một lớp trong ứng dụng kế thừa lớp này. Lớp MIDlet
được trình quản lý ứng dụng trên điện thoại di động dùng để khởi động, dừng,
và tạm dừng MIDlet (ví dụ trong trường hợp có cuộc gọi đến).
2.3.1. Bộ khung MIDlet (MIDlet Skeleton)
Một MIDlet là một lớp Java kế thừa (extend) của lớp trừu tượng
java.microedition.midlet.MIDlet và thực thi (implement) các phương thức
startApp(), pauseApp(), và destroyApp().

Hình 3: Bộ khung yêu cầu tối thiểu cho một ứng dụng MIDlet
Sinh viên: Trần Trung Hiếu– CNT48ĐH Trang 16

GVHD: Ths. Đặng Hoàng Anh Thực tập tốt nghiệp
1) Phát biểu import: Các phát biểu import được dùng để include các
lớp cần thiết từ các thư viện CLDC và MIDP.
2) Phần chính của MIDlet: MIDlet được định nghĩa như một lớp kế
thừa lớp MIDlet. Trong ví dụ này MIDletExample là bắt đầu của ứng dụng.
3) Hàm tạo (Constructor): Hàm tạo chỉ được thực thi một lần khi
MIDlet được khởi tạo lần đầu tiên. Hàm tạo sẽ không được gọi lại trừ phi
MIDlet thoát và sau đó khởi động lại.
4) startApp(): Phương thức startApp() được gọi bởi bộ quản lý ứng
dụng khi MIDlet được khởi tạo, và mỗi khi MIDlet trở về từ trạng thái tạm
dừng. Nói chung, các biến toàn cục sẽ được khởi tạo lại trừ hàm tạo bởi vì các
biến đã được giải phóng trong hàm pauseApp(). Nếu không thì chúng sẽ
không được khởi tạo lại bởi ứng dụng.
5) pauseApp(): Phương thức pauseApp() được gọi bởi bộ quản lý ứng
dụng mỗi khi ứng dụng cần được tạm dừng (ví dụ, trong trường hợp có cuộc
gọi hoặc tin nhắn đến). Cách thích hợp để sử dụng pauseApp() là giải phóng
tài nguyên và các biến để dành cho các chức năng khác trong điện thoại trong
khi MIDlet được tạm dừng. Cần chú ý rằng khi nhận cuộc gọi đến hệ điều
hành trên điện thoại di động có thể dừng KVM thay vì dừng MIDlet. Việc này
không được đề cập trong MIDP mà đó là do nhà sản xuất quyết định sẽ chọn
cách nào.
6) destroyApp(): Phương thức destroyApp() được gọi khi thoát
MIDlet. (ví dụ khi nhấn nút exit trong ứng dụng). Nó chỉ đơn thuần là thoát
MIDlet. Nó không thật sự xóa ứng dụng khỏi điện thoại di động. Phương thức
destroyApp() chỉ nhận một tham số Boolean. Nếu tham số này là true, MIDlet
được tắt vô điều kiện. Nếu tham số là false, MIDlet có thêm tùy chọn từ chối
thoát bằng cách ném ra một ngoại lệ MIDletStateChangeException.

Sinh viên: Trần Trung Hiếu– CNT48ĐH Trang 17

GVHD: Ths. Đặng Hoàng Anh Thực tập tốt nghiệp
2.3.2. Chu kỳ sống của MIDlet (MIDlet lifecycle)
Hình 4 : Chu kỳ sống của MIDlet
Khi thành viên yêu cầu khởi động ứng dụng MIDlet, bộ quản lý ứng
dụng sẽ thực thi MIDlet (thông qua lớp MIDlet). Khi ứng dụng thực thi, nó sẽ
được xem là đang ở trạng thái tạm dừng. Bộ quản lý ứng dụng gọi hàm tạo và
hàm startApp(). Hàm startApp() có thể được gọi nhiều lần trong suốt chu kỳ
sống của ứng dụng. Hàm destroyApp() chỉ có thể gọi từ trạng thái hoạt động
hay tạm dừng.
Lập trình viên cũng có thể điều khiển trạng thái của MIDlet.
Các phương thức dùng để điều khiển các trạng thái của MIDlet:
- resumeRequest(): Yêu cầu vào chế độ hoạt động. Ví dụ: Khi MIDlet
tạm dừng, và một sự kiện timer xuất hiện.
- notifyPaused(): Cho biết MIDlet tự nguyện chuyển sang trạng thái tạm
dừng. Ví dụ: Khi đợi một sự kiện timer.
- notifyDestroyed(): Sẵn sàng để hủy. Ví dụ: Xử lý nút nhấn Exit
Lập trình viên có thể yêu cầu tạm dừng MIDlet trong khi đợi một sự
kiện timer hết hạn. Trong trường hợp này, phương thức notifyPaused() sẽ
được dùng để yêu cầu bộ quản lý ứng dụng chuyển ứng dụng sang trạng thái
tạm dừng.
2.3.3. Tập tin JAR
Các lớp đã biên dịch của ứng dụng MIDlet được đóng gói trong một tập
tin JAR (Java Archive File). Đây chính là tập tin JAR được download xuống
điện thoại di động.
Sinh viên: Trần Trung Hiếu– CNT48ĐH Trang 18

GVHD: Ths. Đặng Hoàng Anh Thực tập tốt nghiệp
Tập tin JAR chứa tất cả các tập tin class từ một hay nhiều MIDlet, cũng

như các tài nguyên cần thiết. Hiện tại, MIDP chỉ hỗ trợ định dạng hình .png
(Portable Network Graphics). Tập tin JAR cũng chứa tập tin kê khai (manifest
file) mô tả nội dung của MIDlet cho bộ quản lý ứng dụng. Nó cũng phải chứa
các tập tin dữ liệu mà MIDlet cần. Tập tin JAR là toàn bộ ứng dụng MIDlet.
MIDlet có thể load và triệu gọi các phương thức từ bất kỳ lớp nào trong tập
tin JAR, trong MIDP, hay CLDC. Nó không thể truy xuất các lớp không phải
là bộ phận của tập tin JAR hay vùng dùng chung của thiết bị di động.
2.3.4. Tập tin kê khai (manifest) và tập tin JAD
Tập tin kê khai (manifest.mf) và tập tin JAD (Java Application
Descriptor) mô tả các đặc điểm của MIDlet. Tập tin kê khai là một phần của
tập tin JAR còn tập tin JAD không thuộc tập tin JAR. Ưu điểm của tập tin
JAD là các đặc điểm của MIDlet có thể được xác định trước khi download tập
tin JAR. Nói chung, cần ít thời gian để download một tập tin văn bản nhỏ hơn
là download một tập tin JAR. Như vậy, nếu thành viên muốn download một
ứng dụng không được thiết bị di động hỗ trợ (ví dụ MIDP 2.0), thì quá trình
download sẽ bị hủy bỏ thay vì phải đợi download hết toàn bộ tập tin JAR.
Bộ MIDlet (MIDlet Suite): Một tập các MIDlet trong cùng một tập tin
JAR được gọi là một bộ MIDlet (MIDlet suite). Các MIDlet trong một bộ
MIDlet chia sẻ các lớp, các hình ảnh và dữ liệu lưu trữ bền vững. Để cập nhật
một MIDlet, toàn bộ tập tin JAR phải được cập nhật.
Sinh viên: Trần Trung Hiếu– CNT48ĐH Trang 19

GVHD: Ths. Đặng Hoàng Anh Thực tập tốt nghiệp
Hình 5 : Biểu diễn hai bộ MIDlet
Trong hình trên, một bộ MIDlet chứa MIDlet1, MIDlet2, và MIDlet3.
Bộ kia chỉ chứa MIDlet4. Ba MIDlet trong bộ đầu tiên truy xuất các lớp và dữ
liệu của nhau nhưng không truy xuất đến các lớp hay dữ liệu của MIDlet4.
Ngược lại, MIDlet4 cũng không truy xuất được các lớp, hình ảnh và dữ liệu
của ba MIDlet kia.
2.4. Lưu trữ bản ghi trong J2ME (Record Store)

Lưu trữ bản ghi cho phép lưu dữ liệu khi ứng dụng thoát, khởi động lại
và khi thiết bị di động tắt hay thay pin. Dữ liệu lưu trữ bản ghi sẽ tồn tại trên
thiết bị di động cho đến khi ứng dụng thật sự được xóa khỏi thiết bị di động.
Khi một MIDlet bị xóa, tất cả các lưu trữ bản ghi của nó cũng bị xóa.
Hình 6: Minh họa dữ liệu lưu trữ bản ghi với MIDlet
Sinh viên: Trần Trung Hiếu– CNT48ĐH Trang 20

GVHD: Ths. Đặng Hoàng Anh Thực tập tốt nghiệp
Như trong hình, các MIDlet có thể có nhiều hơn một tập lưu trữ bản
ghi, chúng chỉ có thể truy xuất dữ liệu lưu trữ bản ghi chứa trong bộ MIDlet
của chúng. Do đó, MIDlet 1 và MIDlet 2 có thể truy xuất dữ liệu trong
Record Store 1 và Record Store 2 nhưng chúng không thể truy xuất dữ liệu
trong Record Store3. Ngược lại, MIDlet 3 chỉ có thể truy xuất dữ liệu trong
Record Store 3 và không thể truy xuất dữ liệu dữ liệu trong Record Store 1 và
Record Store 2. Tên của các lưu trữ bản ghi phải là duy nhất trong một bộ
MIDlet nhưng các bộ khác nhau có thể dùng trùng tên.
Các bản ghi trong một lưu trữ bản ghi được sắp xếp thành các mảng
byte. Các mảng byte không có cùng chiều dài và mỗi mảng byte được gán
một số ID bản ghi.
Các bản ghi được định danh bằng một số ID bản ghi (record ID) duy
nhất. Các số ID bản ghi được gán theo thứ tự bắt đầu từ 1. Các số sẽ không
được dùng lại khi một bản ghi bị xóa do đó sẽ tồn tại các khoảng trống trong
các ID bản ghi. Đặc tả MIDP không định nghĩa chuyện gì xảy ra khi đạt đến
số ID bản ghi tối đa, điều này phụ thuộc vào ứng dụng.
2.4.1. Định dạng, thêm và xóa các bản ghi
Thêm bản ghi gồm hai bước. Bước đầu tiên là định dạng bản ghi theo
định dạng yêu cầu và bước tiếp theo là thêm bản ghi đã định dạng vào lưu trữ
bản ghi. Sự tuần tự hóa (serialization) dữ liệu lưu trữ bản ghi không được hỗ
trợ, do đó lập trình viên phải định định dạng các mảng byte để xây dựng dữ
liệu lưu trữ bản ghi.

Sau đây là ví dụ của việc định dạng dữ liệu bản ghi, mở một lưu trữ bản
ghi và sau đó thêm dữ liệu bản ghi vào lưu trữ bản ghi:
ByteArrayOutputStream baos = new ByteArrayOutputStream();
DataOutputStream outputStream = new DataOutputStream(baos);
outputStream.writeByte(‘T’); // byte [0] Thẻ chỉ loại bản ghi
outputStream.writeInt(score); // byte [1] đến [4]
outputStream.writeUTF(name); // byte [5] đến 2 + name.length
Sinh viên: Trần Trung Hiếu– CNT48ĐH Trang 21

GVHD: Ths. Đặng Hoàng Anh Thực tập tốt nghiệp
byte[] theRecord = boas.toByteArray();
recordStore rs = null;
rs = RecordStore.openRecordStore(“RecordStoreName”, CreateIfNoExist);
int RecordID = rs.addRecord(theRecord, 0, theRecord.length);
Hình 7 : Thêm bản ghi
2.4.2. Định dạng dữ liệu bản ghi
Trong ví dụ trên, hai dòng đầu tạo một luồng xuất để giữ dữ liệu bản
ghi. Sử dụng đối tượng DataOutputStream (bọc mảng byte) cho phép các bản
ghi dễ dàng được định dạng theo các kiểu chuẩn của Java (long, int, string,…)
mà không phải quan tâm đến tách nó thành dữ liệu byte. Phương thức
writeByte(), writeInt(), và writeUTF() định dạng dữ liệu như trong hình (tag,
score, name). Sử dụng thẻ (tag) làm byte đầu tiên có ích để xác định loại bản
ghi sau này. Phương thức toByteArray() chép dữ liệu trong luồng xuất thành
một mảng byte chứa bản ghi để lưu trữ. Biến theRecord là tham chiếu đến dữ
liệu đã định dạng.
2.4.3. Thêm dữ liệu bản ghi đã định dạng vào lưu trữ bản ghi
Khi dữ liệu đã được định dạng, nó có thể được thêm vào lưu trữ bản
ghi. Phát biểu openRecordStore() tạo và mở một lưu trữ bản ghi với tên là
RecordStoreName. Phát biểu addRecord() thêm bản khi (bắt đầu bằng byte 0
của theRecord) và trả về ID bản ghi gắn với record này.

2.4.4. Xóa bản ghi
Bản ghi được xóa bằng cách chuyển số ID bản ghi cho phương thức
deleteRecord() của đối tượng RecordStore.
Sinh viên: Trần Trung Hiếu– CNT48ĐH Trang 22

GVHD: Ths. Đặng Hoàng Anh Thực tập tốt nghiệp
Ví dụ, bản ghi 7 bị xóa bằng phương thức deleteRecord(), nếu một bản
ghi khác được thêm vào thì số ID bản ghi sẽ là 8 và ID bản ghi 7 sẽ không
được dùng lại.
2.4.5. Lọc các bản ghi (Filtering Records)
Giao diện RecordFilter cung cấp một cách thuận tiện để lọc các bản ghi
theo tiêu chuẩn của lập trình viên. RecordEnumeration có thể được dùng để
duyệt qua các bản ghi và chỉ trả về các record phù hợp với tiêu chuẩn xác
định. Giao diện RecordFilter có phương thức matches() dùng để xác định tiêu
chuẩn phù hợp. Phương thức matches() có một tham số đầu vào là mảng byte
biểu diễn một bản ghi. Phương thức phải trả về true nếu bản ghi này phù hợp
với tiêu chuẩn đã định nghĩa. Hình 3 minh họa ví dụ cách sử dụng giao diện
RecordFilter
Hình 8. Lọc bản ghi
class IntegerFilter implements RecordFilter {
public boolean matches(byte[] candidate) throws IlleegalArgumentException{
return(candidate[0] == ‘T’);
}}
Trong ví dụ trên, lớp IntegerFilter được dùng để lọc ra tất cả các bản
ghi có ‘T’ ở byte đầu tiên. Nhớ rằng các bản ghi không phải có cùng định
dạng. Do đó có byte đầu tiên làm thẻ (tag) rất có ích. Phương thức matches()
chỉ trả về true nếu byte đầu tiên là ‘T’.
Sinh viên: Trần Trung Hiếu– CNT48ĐH Trang 23

GVHD: Ths. Đặng Hoàng Anh Thực tập tốt nghiệp

CHƯƠNG 3: PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG
3.1. Mô tả hệ thống trên thực tế
3.1.1. Quản lý thành viên trong cộng đồng
Khi một người muốn tham gia vào cộng đồng, người đó phải đăng ký
với người quản lý cộng đồng những thông tin cơ bản của họ. Những thông tin
đó có thể bao gồm:
- Thông tin cơ bản như: Họ tên, ngày sinh, giới tính, số chứng minh thư
nhân dân, hình ảnh.
- Thông tin cá nhân: Các sở thích của thành viên về các vấn đề trong đời
sống thực như: thể thao, ca nhạc, đọc sách, sở thích…
- Thông tin liên hệ: Email, địa chỉ, điện thoại liên hệ.
Người quản lý sẽ tạo cho người vừa đăng ký một mã đăng ký.Mã đăng
ký này là duy nhất và tương ứng với mỗi người trong cộng đồng.
3.1.2. Quản lý nhóm thành viên
Mỗi thành viên sau khi tham gia vào cộng đồng đều có quyền tạo nhóm
riêng cho mình. Một nhóm khi được tạo phải được đăng ký với người quản lý
và cung cấp đầy đủ thông tin cần thiết về nhóm đó.
Sau khi thành viên đăng ký thành lập nhóm với người quản lý cộng
đồng, người quản lý sẽ tạo ra một mã nhóm cho nhóm đó. Mã nhóm này là
duy nhất và tương ứng với mỗi nhóm trong cộng đồng.
3.1.3. Quản trị nhóm
Thành viên sáng lập ra nhóm ban đầu sẽ được bổ nhiệm làm quản trị
viên của nhóm đó. Trong một nhóm có ba cấp thành viên là:
- Quản trị viên: Thành viên có quyền cao nhất trong nhóm, có khả năng
cấp quyền hạn cho các Điều hành viên để quản trị các công việc trong nhóm.
- Điều hành viên: Thành viên có quyền thấp hơn Quản trị viên, được
Quản trị viên hỗ trợ một số quyền hạn nhất định để điều hành nhóm.
- Thành viên: Thành viên có quyền hạn thấp nhất trong nhóm, không có
quyền quản trị nhóm. Thành viên này chỉ tham gia nhóm với các quyền hạn
như chia sẻ ảnh, bài viết; gửi bình luận; chia sẻ vị trí.

Sinh viên: Trần Trung Hiếu– CNT48ĐH Trang 24

GVHD: Ths. Đặng Hoàng Anh Thực tập tốt nghiệp
Quản trị viên sẽ quản lý những thông tin cơ bản của nhóm như:
- Thông tin giới thiệu của nhóm.
- Ảnh đại diện của nhóm.
- Quy tắc hoạt động của nhóm.
Ngoài ra quản trị viên phải quản trị các thành viên các trong nhóm:
- Liệt kê thành viên theo các cấp để quản lý được số lượng các điều hành
viên và các thành viên trong nhóm.
- Thay đổi quyền hạn của thành viên để tạo ra được bộ máy quản lý tốt
giúp nhóm hoạt động hiệu quả hơn.
- Duyệt yêu cầu tham gia nhóm của các người dùng khác để cho phép
người dùng đó tham gia hoặc không cho tham gia vào nhóm.
- Loại thành viên khỏi nhóm: Những thành viên vi phạm quy tắc hoạt
động của nhóm, đã được nhắc nhở nhưng vẫn tái phạm sẽ bị loại khỏi nhóm.
Thành viên đó sẽ không được tham gia vào nhóm đó nữa.
3.1.4. Chia sẻ ảnh và tạo album ảnh
Mỗi thành viên sau khi tham gia vào cộng đồng có quyền đưa những
bức ảnh của mình vào cộng đồng để chia sẻ với những thành viên khác.
Khi muốn đưa một bức ảnh vào cộng đồng, thành viên đó phải cung
cấp những thông tin liên quan đến bức ảnh đó với người quản lý cộng đồng.
Khi đăng ký xong, người quản lý sẽ cung cấp một mã ảnh cho bức ảnh đó. Mã
ảnh là duy nhất và tương ứng với mỗi bức ảnh trong cộng đồng.
Với những bức ảnh có nội dung bạo lực, vi phạm bản quyền, nội dung
kích động gây thù địch… người quản lý cộng đồng có quyền loại khỏi cộng
đồng và đưa ra nhắc nhở với thành viên đưa bức ảnh đó vào cộng đồng.
Thành viên có thể tổng hợp các bức ảnh của mình bằng việc tạo ra
những album ảnh để dễ quản lý hơn. Để tạo được album ảnh mới, thành viên
phải đăng ký với người quản lý những thông tin về album ảnh này. Sau khi

đăng ký xong, người quản lý sẽ cung cấp cho album đó một mã album. Mã
album là duy nhất và tương ứng với mỗi album trong cộng đồng.
Sinh viên: Trần Trung Hiếu– CNT48ĐH Trang 25

×