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 đ
Trang 1MỤ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 7
1.3.1 Chức năng chia sẻ thông tin theo nhóm 7
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 8
1.4.1 Phạm vi áp dụng 8
1.4.2 Sơ đồ hoạt động của hệ thống 9
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 13
2.2 J2ME & Lập trình trên điện thoại di động 14
2.2.1 Khái quát các tầng J2ME 14
2.2.2 Tầng phần cứng thiết bị (Device Hardware Layer) 15
2.2.3 Tầng máy ảo Java (Java Virtual Machine Layer) 15
2.2.4 Tầng cấu hình (Configuration Layer) 15
2.2.5 Tầng hiện trạng (Profile Layer) 15
2.3 MIDP (Mobile Information Device Profile) 16
2.3.1 MIDlet 16
2.3.1 Bộ khung MIDlet (MIDlet Skeleton) 17
2.3.2 Chu kỳ sống của MIDlet (MIDlet lifecycle) 18
2.3.3 Tập tin JAR 19
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
Trang 22.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 23
2.4.4 Xóa bản ghi 23
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 27
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 50
4.1 Chức năng đăng nhập hệ thống 50
4.2 Chức năng đăng ký tài khoản 51
4.3 Chức năng nhận tin mới 52
4.4 Chức năng xem tin 53
4.5 Chức năng chia sẻ tin 54
KẾT LUẬN 56
TÀI LIỆU THAM KHẢO 57
Sinh viên: Trần Trung Hiếu– CNT48ĐH Trang 2
Trang 3MỞ ĐẦ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 conngười Đây là mô hình mới nhất trong quá trình phát triển của xã hội Nó đơngiả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ảncủa một mạng xã hội như MySpace, Facebook, Zing Me và thường xuyêncậ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ạnhchiế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ờigian hơn rất nhiều Hiện nay có rất nhiều công nghệ mới phát triển song songvớ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ùnghơ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ằmxác định và chia sẻ vị trí hiện tại
Sinh viên: Trần Trung Hiếu– CNT48ĐH Trang 3
Trang 4CHƯƠ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 trongviệ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áttriể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áttriể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ớncho 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ácwebsite có thể truy cập bằng điện thoại di động mà nó ngày trở nên vô cùngquan trọng Tìm kiếm trên di động cho phép người sử dụng tiếp cận thông tinmộ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ắnthông qua mạng xã hội định vị hoặc qua Yahoo, Skype… cho bạn bè Ngoài
Sinh viên: Trần Trung Hiếu– CNT48ĐH Trang 4
Trang 5ra người sử dụng còn có thể đăng ảnh (upload) và tải ảnh (download) chụp bất
cứ hoạt động nào tại nơi họ đến để chia sẻ cho bạn bè Do có những điểmmạ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ệnthoạ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ệmnhiề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ệchàng ngày, nhu cầu sử dụng Internet để xử lý công việc và kết nối với ngườithâ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ậpInternet đã trở nên phổ biến và dần được coi như một nhu cầu thiết yếu trênmọ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ôngchỉ 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ònmuốn được giải quyết các nhu cầu đó ở mọi lúc mọi nơi, nhanh nhất, thuậntiệ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ôngmộ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ặtnhằm trao đổi các thỏa thuận Ngày nay, nhờ có điện thoại di động mà nhữngcô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ẻ
Sinh viên: Trần Trung Hiếu– CNT48ĐH Trang 5
Trang 6ngày nay, truy cập website để cập nhật thông tin thường xuyên đã trở thànhthói quen thường ngày Chỉ với một chiếc máy điện thoại kết nối đượcInternet, 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ậpwebsite 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ằngmiệ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 tincà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ìnhthức như việc trò chuyện trên Yahoo, Skype qua nhóm; thảo luận trên cácdiễ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 taykhiế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ôngtin 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ànhviê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
Trang 7- Trong mỗi nhóm có một bộ máy quản trị được phân chia theo quyềnhạ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ạonhó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ómcủ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áychụ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ìnhluậ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 quaviệ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ốiInternet là có thể truy cập vào hệ thống Có hai cách để truy cập vào hệ thống
Sinh viên: Trần Trung Hiếu– CNT48ĐH Trang 7
Trang 8là truy cập vào website hoặc truy cập vào ứng dụng chia sẻ thông tin theonhóm được cài đặt trên thiết bị di động đó.
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ớiserver 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
Tin
3 Yêu cầu tham gia nhóm
4 Duyệt yêu cầu tham gia nhóm
5 Quản trị thành viên
Trang 9CHƯƠNG 2: CƠ SỞ LÝ THUYẾT
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êucầu bản quyền như MySQL, PostgreSQL… Bên cạnh đó PHP vẫn có thể làmviệ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 doRasmus 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ạnghơ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ườixem, 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ồmmộ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ápHTML 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
Trang 10vào tháng 11 năm 1997 Nhưng không lâu sau đó, nó đã được thay thế bởi cácbả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ũivới các phiên bản PHP ngày nay Nó đã được Andi Gutmans và Zeev Suraskitạo ra năm 1997 sau khi viết lại hoàn toàn bộ mã nguồn trước đó Lý do chínhphiê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émtrong việc phát triển các ứng dụng thương mại điện tử mà họ đang xúc tiếntrong 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ảnthế 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áctí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 đâychí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ínhnăng khác được giới thiệu trong PHP 3.0 gồm có hỗ trợ cú pháp hướng đốitượ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ầnlõ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ụngphứ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êncủa Zeev và Andi), đã đáp ứng được các nhu cầu thiết kế này một cách thànhcô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
Trang 11Ngoài tốc độ xử lý được cải thiện rất nhiều, PHP 4.0 đem đến các tính năngchủ yếu khác gồm có sự hỗ trợ nhiều máy chủ Web hơn, hỗ trợ phiên làmviệ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ênmạ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ềunghì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áttriển PHP tự mãn Cộng đồng PHP đã nhanh chóng giúp họ nhận ra nhữngyế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 12nă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 6năm 2003, PHP 5 Beta 1 đã chính thức được công bố để cộng đồng kiểmnghiệm Đó cũng là phiên bản đầu tiên của Zend Engine 2.0 Phiên bản Beta 2sau đó đã 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ãinamespaces đã bị loại khỏi mã nguồn Ngày 21 tháng 12 năm 2003, PHP 5Beta 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ềulỗi và thêm khá nhiều hàm mới PHP 5 bản chính thức đã ra mắt ngày 13thá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
Trang 12PHP 5.0 vẫn còn một số lỗi trong đó đáng kể là lỗi xác thực HTTP Ngày 14tháng 7 năm 2005, PHP 5.1 Beta 3 được PHP Team công bố đánh dấu sự chínmuồ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 truyvấn Ngoài ra, trong PHP 5.1, các nhà phát triển PHP tiếp tục có những cảitiến trong nhân Zend Engine 2, nâng cấp module PCRE lên bản PCRE 5.0cù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ỉ http://snaps.php.net Phiênbản PHP 6 được kỳ vọng sẽ lấp đầy những khiếm khuyết của PHP ở phiênbản hiện tại, ví dụ: hỗ trợ namespace (hiện tại các nhà phát triển vẫn chưacông bố rõ ràng về vấn đề này); hỗ trợ Unicode; sử dụng PDO làm API chuẩncho 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ấtmạ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ànhkhá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ị CSDLquan hệ sử dụng Ngôn ngữ truy vấn có cấu trúc (SQL) MySQL được sử dụngcho việc bổ trợ PHP, Perl và nhiều ngôn ngữ khác Nó làm nơi lưu trữ nhữngthô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
Trang 132.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ầntương đương với SQL Server của Microsoft) MySQL quản lý dữ liệu thôngqua 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 (username) và mật khẩu (password) tương ứng để truy xuất đến CSDL Khi ta truyvấn tới CSDL MySQL, thành viên phải cung cấp đúng tên truy cập và mậtkhẩ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áttriể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ếtkiệ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ựngtrên nền Linux, Apache, MySQL, PHP/Perl/Python MySQL chạy trên hơn 20flatform bao gồm: Linux, Windows, OS/X, HP-UX, AIX, Netware, mang đếncho 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 độclậ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ủaJ2ME được xây dựng trên CLDC:
Sinh viên: Trần Trung Hiếu– CNT48ĐH Trang 13
Trang 14Hì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ậptrình viên nhiều giao diện lập trình ứng dụng (API-Application ProgramInterface) 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 J2MEnhư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à cungcấ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ủathiế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ìnhJava thành ngôn ngữ máy để chạy trên thiết bị di động Tầng này cung cấpmột sự chuẩn hóa cho các thiết bị di động để ứng dụng J2ME sau khi đã biêndị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 (Javalanguage 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
Trang 15động Đây là một tập các API định nghĩa lõi của ngôn ngữ J2ME Lập trìnhviê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ácAPI 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 Mobile Information Device Profile) cung cấp tập các API hữu dụng hơn cholậ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à cungcấp nhiều thư viện ứng dụng hơn MIDP định nghĩa các API riêng biệt chothiế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
động-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ổ địachỉ…) 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 đượcxâ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à địnhnghĩ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ạithiế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ìnhviên có thể viết một ứng dụng cho một hiện trạng cụ thể và không cần quantâ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ũngkhô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ếtcho ứng dụng kinh doanh nhận số thẻ tín dụng của thành viên Nó cũng khôngbắ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
Trang 162.3.1 MIDlet
Các ứng dụng J2ME được gọi là MIDlet (Mobile Information Deviceapplet)
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ủaMIDP 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ượngjava.microedition.midlet.MIDlet và thực thi (implement) các phương thứcstartApp(), 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
Trang 171) 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ừ phiMIDlet 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ạmdừ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ácbiế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ộcgọi hoặc tin nhắn đến) Cách thích hợp để sử dụng pauseApp() là giải phóngtài nguyên và các biến để dành cho các chức năng khác trong điện thoại trongkhi MIDlet được tạm dừng Cần chú ý rằng khi nhận cuộc gọi đến hệ điềuhành trên điện thoại di động có thể dừng KVM thay vì dừng MIDlet Việc nàykhông được đề cập trong MIDP mà đó là do nhà sản xuất quyết định sẽ chọncá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átMIDlet Nó không thật sự xóa ứng dụng khỏi điện thoại di động Phương thứcdestroyApp() 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ốithoá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
Trang 182.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ý ứngdụ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 độnghay 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 MIDlettạ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ạmdừ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áitạm dừng
Sinh viên: Trần Trung Hiếu– CNT48ĐH Trang 18
Trang 192.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ậptin JAR (Java Archive File) Đây chính là tập tin JAR được download xuốngđiện thoại di động
Tập tin JAR chứa tất cả các tập tin class từ một hay nhiều MIDlet, cũngnhư 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 (manifestfile) mô tả nội dung của MIDlet cho bộ quản lý ứng dụng Nó cũng phải chứacá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ậptin 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 ApplicationDescriptor) mô tả các đặc điểm của MIDlet Tập tin kê khai là một phần củatập tin JAR còn tập tin JAD không thuộc tập tin JAR Ưu điểm của tập tinJAD là các đặc điểm của MIDlet có thể được xác định trước khi download tậptin 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ìnhdownload 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 tinJAR đượ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ậtmộ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
Trang 20Hì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ệucủ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ênthiế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
Trang 21Như trong hình, các MIDlet có thể có nhiều hơn một tập lưu trữ bảnghi, chúng chỉ có thể truy xuất dữ liệu lưu trữ bản ghi chứa trong bộ MIDletcủa chúng Do đó, MIDlet 1 và MIDlet 2 có thể truy xuất dữ liệu trongRecord Store 1 và Record Store 2 nhưng chúng không thể truy xuất dữ liệutrong Record Store3 Ngược lại, MIDlet 3 chỉ có thể truy xuất dữ liệu trongRecord 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ảngbyte Các mảng byte không có cùng chiều dài và mỗi mảng byte được gánmộ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) duynhấ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 trongcá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ảnghi 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
Trang 22byte[] 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ảnghi Sử dụng đối tượng DataOutputStream (bọc mảng byte) cho phép các bảnghi 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ứcwriteByte(), 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ảnghi sau này Phương thức toByteArray() chép dữ liệu trong luồng xuất thànhmộ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ảnghi 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 0của theRecord) và trả về ID bản ghi gắn với record này
Trang 23Ví dụ, bản ghi 7 bị xóa bằng phương thức deleteRecord(), nếu một bảnghi 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 ghitheo 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êuchuẩn phù hợp Phương thức matches() có một tham số đầu vào là mảng bytebiể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ợpvới tiêu chuẩn đã định nghĩa Hình 3 minh họa ví dụ cách sử dụng giao diệnRecordFilter
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ảnghi có ‘T’ ở byte đầu tiên Nhớ rằng các bản ghi không phải có cùng địnhdạ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
Trang 24CHƯƠ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
- 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ómriê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
Trang 25- 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ạnnhư chia sẻ ảnh, bài viết; gửi bình luận; chia sẻ vị trí.
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ànhviê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ốtgiú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épngườ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ữngbứ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 cungcấ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 dungkí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 ranhững album ảnh để dễ quản lý hơn Để tạo được album ảnh mới, thành viên
Sinh viên: Trần Trung Hiếu– CNT48ĐH Trang 25
Trang 26phả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.
3.1.5 Chia sẻ bài viết và tạo chủ đề
Thành viên tham gia cộng đồng ngoài khả năng chia sẻ ảnh còn có thểviết ra những bài viết để chia sẻ Các thành viên khác có quyền tham gia bànluận về bài viết đó Mỗi bài viết cũng phải được đăng ký và gắn mã bài viết
để quản lý bài viết đó và người đã viết bài viết đó Mã bài viết là duy nhất vàtương ứng với mỗi bài viết trong cộng đồng
Cũng giống như ảnh, thành viên có thể tổng hợp các bài viết bằng cáchtạo ra các chủ đề Thành viên phải đăng ký với người quản lý hệ thống nhữngthông tin về chủ đề Sau khi đăng ký xong, người quản lý sẽ cung cấp cho chủ
đề đó một mã chủ đề Mã chủ đề là duy nhất và tương ứng với mỗi chủ đềtrong cộng đồng
3.1.6 Gửi bình luận cho ảnh và bài viết
Thành viên đã đăng ký tham gia vào nhóm có thể xem và bình luận vềcác bức ảnh và bài viết của các thành viên khác trong nhóm Thành viên trướckhi bình luận phải đăng ký với nhà quản lý để có được mã bình luận Mã bìnhluận là duy nhất và tương ứng với mỗi lời bình luận
Sinh viên: Trần Trung Hiếu– CNT48ĐH Trang 26
Trang 273.2 Sơ đồ phân rã chức năng
Từ những mô tả về hệ thống, chúng ta có được sơ đồ phần cấp chứcnăng như sau:
Hệ thống chia sẻ thông tin theo nhóm
Chức năng quản lý nhóm
Chức năng quản lý tài
Quản lý tin đã tạo
Sinh viên: Trần Trung Hiếu– CNT48ĐH Trang 27
Trang 283.3 Sơ đồ luồng dữ liệu
3.3.1 Sơ đồ luồng dữ liệu mức ngữ cảnh
Hệ thống chia sẻ thông tin theo nhóm
3.3.2 Sơ đồ luồng dữ liệu mức đỉnh
Quản lý tài khoản
Sinh viên: Trần Trung Hiếu– CNT48ĐH Trang 28