Nắm bắt được nhu cầu của người sử dụng và mong muốn xây dựng được một ứng dụng nhằm hỗ trợ cho việc đặt thuê sân bóng đá được dễ dàng hơn đặc biệt là với những bạn sinh viên, các cán bộ
Trang 1LỜI CÁM ƠN
Sau chặng đường 5 năm học tập và rèn luyện dưới mái trường Đại học Công nghệ thông tin và truyền thông Thái Nguyên, được sự chỉ bảo tận tình của các thầy cô, và sự giúp đỡ từ bạn bè, cùng những nỗ lực của bản thân, em thấy mình đã dần nâng cao được những kiến thức, kĩ năng, những kinh nghiệm sống cho bản thân Em sẽ tiếp tục cố gắng phấn đấu dùng những điều đã được dạy và tích lũy vận dụng vào thực tế để trở thành một người có ích cho xã hội
Lời đầu tiên, em xin gửi lời cảm ơn chân thành đến trường Đại học Công nghệ thông tin và truyền thông Thái Nguyên đã tạo mọi điều kiện thuận lợi cho
phép em hoàn thành đồ án này
Với lòng biết ơn sâu sắc nhất, em xin gửi lời cám ơn chân thành đến các thầy- cô giáo trong bộ môn Mạng máy tính và truyền thông - khoa Công nghệ thông tin – trường Đại học Công nghệ thông tin và truyền thông Thái Nguyên đã cùng với tri thức và tâm huyết của mình truyền đạt vốn kiến thức quý báu cho em, tận tình giúp đỡ và động viên em trong suốt thời gian thực hiện đồ án tốt nghiệp
Đặc biệt em xin bày tỏ lòng biết ơn sâu sắc đến cô giáo Ths.Nguyễn Thị Duyên đã tận tình chỉ bảo, giúp đỡ em trong quá trình học tập và nghiên cứu
Và sau cùng em xin gửi lời cảm ơn đến gia đình, bạn bè những người luôn bên cạnh động viên và giúp đỡ em trong thời gian em thực hiện đề tài
Trong phạm vi khả năng cho phép, em đã cố gắng để hoàn thành đề tài một cách tốt nhất Song, với kiến thức còn có hạn, chắc chắn sẽ không tránh khỏi những thiếu sót Em kính mong nhận được sự thông cảm và đóng góp ý kiến tích cực từ phía các thầy cô và các bạn
Em xin chân thành cám ơn!
Sinh viên thực hiện
Nguyễn Thị Hồng
Trang 3LỜI CAM ĐOAN
Em tên là: Nguyễn Thị Hồng – sinh viên lớp Truyền thông và Mạng máy tính K10A, khoa Công nghệ thông tin, trường Đại học công nghệ thông tin và truyền thông - Đại học Thái Nguyên, khóa 2011-2016
Em xin cam đoan đã thực hiện quá trình làm đồ án một cách khoa học, chính xác và trung thực
Toàn bộ kết quả của quá trình làm đồ án là thành quả của quá trình học tập, nghiên cứu của em, dưới sự hướng dẫn của Th.s Nguyễn Thị Duyên Nội dung trong đồ án nếu có tham khảo, sử dụng tài liệu thông tin từ một số nguồn khác đều được trích dẫn trong phần tài liệu tham khảo
Em xin chịu trách nhiệm toàn bộ trước bài báo cáo của mình!
Thái Nguyên, Ngày…… tháng… năm 2016.
Sinh viên
Nguyễn Thị Hồng
Trang 4MỤC LỤC
LỜI CÁM ƠN 1
LỜI CAM ĐOAN 2
MỤC LỤC 3
TỔNG QUAN VỀ ĐỀ TÀI 7
CHƯƠNG 1: CƠ SỞ LÝ THUYẾT 9
1.1 Tổng quan về hệ điều hành Android 9
1.1.1 Android và lịch sử phát triển của Android 9
1.1.2 Kiến trúc của hệ điều hành Android 11
1.1.3 Cấu trúc của một project Adroid 15
1.1.4 Các thành phần cơ bản của ứng dụng Android 17
1.1.5 Web Service 25
1.2 Tổng quan về phân tích thế kế hướng đối tượng UML 28
1.2.1 Giới thiệu chung về UML 28
1.2.2 Các đặc điểm cơ bản của hệ thống hướng đối tượng 28
1.2.3 Ưu nhược điểm của phân tích thiết kế hướng đối tượng 29
1.3 Ứng dụng mô hình UML trong thiết kế ứng dụng Android 30
CHƯƠNG 2:KHẢO SÁT VÀ PHÂN TÍCH THIẾT KẾ HỆ THỐNG 32
2.1 Khảo sát thực tế 32
2.1.1 Khảo sát phần mềm ngoài thị trường 32
2.1.2 Khảo sát hiện trạng thực tế tại trường Đại học CNTT&TT 35
2.1.3 Khảo sát nhu cầu đặt sân bóng đá của người dùng 37
2.1.4 Áp dụng thực tế 38
2.2 Phân tích hệ thống 39
2.2.1 Phạm vi của chương trình 39
2.2.2 Các tác nhân và Use Case 39
2.2.3 Biểu đồ UseCase tổng quát 40
Trang 52.2.4 Đặc tả cho từng Usecase 40
2.2.5 Biểu đồ lớp 54
2.2.6 Thiết kế cơ sở dữ liệu 54
CHƯƠNG 3: XÂY DỰNG DEMO CHƯƠNG TRÌNH 57
3.1 Thiết kế giao diện chương trình 57
3.2 Xây dựng chương trình 58
3.2.1 Sơ đồ kiến trúc của hệ thống 58
3.2.2 Xây dựng Web Server cho ứng dụng 60
3.2.3 Xây dựng ứng dụng trên Android 64
3.3 Xây dựng Web Client 64
3.4 Ứng dụng Demo 67
KẾT LUẬN 76
TÀI LIỆU THAM KHẢO 77
Trang 6DANH MỤC HÌNH ẢNH
Hình 1.1 Kiến trúc của hệ điều hành Android 11
Hình 1.2 Vòng đời của một activity 20
Hình 1.3 Các phương thức callback dành cho một service 22
Hình 1.4 Kiến trúc của web service 25
Hình 1.5 Quá trình lấy dữ liệu từ Web service 28
Hình 2.1 Trang chủ website dansan.vn 32
Hình 2.2 Trang chủ tuyensonsport.vn 33
Hình 2.3 Sân bóng cỏ nhân tạo trường đại học CNTT&TT 35
Hình 2.4 Thi đấu giao hữu giữa đội tuyển Thái Nguyên và đội tuyển Hội các tuyển thủ Việt nam 36
Hình 2.5 Bảng giá thi đấu các loại sân 37
Hình 2.6 Biểu đồ Usecase tổng quát của hệ thống 40
Hình 2.7 Biểu đồ trình tự đăng nhập 41
Hình 2.8 Biểu đồ hoạt động đăng nhập 41
Hình 2.9 Biểu đồ trình tự đăng kí 42
Hình 2.10 Biểu đồ hoạt động đăng kí thành viên 43
Hình 2.11 Biểu đồ trình tự đăng xuất 44
Hình 2.12 Biểu đồ hoạt động đăng xuất 44
Hình 2.13 Biểu đồ trình tự xem lịch sân 45
Hình 2.14 Biểu đồ hoạt động xem lịch sân 46
Hình 2.15 Biểu đồ trình tự xem bảng giá 46
Hình 2.16 Biểu đồ hoạt động xem bảng giá 47
Hình 2.17 Biểu đồ trình tự xem sơ đồ sân 48
Hình 2.18 Biểu đồ trình tự xem sơ đồ sân 48
Hình 2.19 Biểu đồ trình tự chức năng đặt sân 49
Hình 2.20 Biểu đồ hoạt động đặt sân 50
Trang 7Hình 2.21 Biểu đồ trình tự chức năng hủy sân 51
Hình 2.22 Biểu đồ trình tự chức năng đăng nhập của Admin 52
Hình 2.23 Biểu đồ trình tự chức năng quản lí sân đã đặt 53
Hình 2.24 Biểu đồ trình tự hủy sân của admin 54
Hình 2.25 Biểu đồ lớp 54
Hình 2.26 Bảng cơ sở dữ liệu 55
Hình 2.27 Bảng thiết kế cơ sở dữ liệu 56
Hình 3.1 Sơ đồ bố trí giao diện chương trình 57
Hình 3.2 Sơ đồ kiến trúc của hệ thống 58
Hình 3.3 Giao diện trang host free đã đăng kí 62
Hình 3.4 Cấu trúc file API viết code đọc dữ liệu từ MySQL 62
Hình 3.5 Giao diện chính ứng dụng 64
Hình 3.6 Cấu trúc file controllers 65
Hình 3.7 Cấu trúc file models 66
Hình 3.8 Cấu trúc file views 67
Hình 3.9 Cấu trúc dữ liệu trả về 67
Hình 3.10 Giao diện của khách hàng 68
Hình 3.11 Giao diện đăng nhập ứng dụng 69
Hình 3.12 Giao diện ứng dụng sau khi đăng nhập 70
Hình 3.13 Giao diện lịch đặt sân của ứng dụng 71
Hình 3.14 Giao diện chọn loại sân 72
Hình 3.15 Form xác nhận thông tin đặt sân 73
Hình 3.16 Đặt sân thành công 74
Hình 3.17 Hiển thị sân đã đặt lên lịch hệ thống 75
Trang 8TỔNG QUAN VỀ ĐỀ TÀI
Hiện nay, cùng với sự phát triển không ngừng của khoa học và công nghệ con người cũng dần chú ý hơn đến vấn đề sức khỏe của bản thân Chính vì thế các hoạt động thể dục thể thao tập thể ngày càng được chú trọng và phát triển lớn mạnh
Một số trung tâm hoạt động thể dục thể thao phổ biến thịnh hành hiện nay như: câu lạc bộ thể hình, câu lạc bộ cầu lông, tennis, đặc biệt là môn thể thao được rất nhiều bạn trẻ yếu thích – bóng đá Tuy nhiên các trung tâm còn tổ chức quảng
bá, cho thuê sân mới chỉ dừng lại ở mức độ riêng lẻ, rời rạc, điều này gây khó khắn không ít cho người dùng có nhu cầu tìm và đặt thuê sân một cách nhanh chóng
Với sự bùng nổ của công nghệ thông tin, những chiếc điện thoại thông minh dường như đã trở thành một vật dụng bất li thân của nhiều người, mọi hoạt động như giải trí, tìm kiếm thông tin, giao lưu, học tập… đều có thể đáp ứng chỉ với một chiếc điện thoại Sự tiện lợi mà điện thoại mang lại cho cuộc sống của con người là điều không thể phủ nhận
Nắm bắt được nhu cầu của người sử dụng và mong muốn xây dựng được một ứng dụng nhằm hỗ trợ cho việc đặt thuê sân bóng đá được dễ dàng hơn đặc biệt là với những bạn sinh viên, các cán bộ công nhân viên chức trong khu vực trường Đại học Công nghệ thông tin và truyền thông, em đã quyết định chọn đề
tài: "Xây dựng ứng dụng quản lí đặt sân bóng đá cho trường Đại học Công nghệ thông tin và truyền thông trên nền tảng Android" làm đề tài bảo vệ của
mình
Mục đích đề tài
Đề tài được thực hiện nhằm mục đích củng cố lại kiến thức về nền tảng android, kỹ năng lập trình android, cũng như quy trình xây dựng phần mềm, thông qua đó xây dựng và cài đặt ứng dụng đặt sân bóng đá trên di động nền tảng android phục vụ người dùng
Trang 9Nội dung, phạm vi thực hiện
Tìm hiểu về nền tảng android và lập trình android
Tìm hiểu và khảo sát nhu cầu thực tế để thu thập thông tin, tài liệu…lấy
cơ sở để thiết kế phần mềm
Xây dựng, cài đặt ứng dụng đặt sân bóng đá trên điện thoại di động nền tảng android
Phương pháp thực hiện
Thông qua tài liệu, thông tin thu thập trên mạng internet
Thông qua trao đổi với giáo viên hướng dẫn và thầy cô trong trường
- Thông qua trao đổi, học tập cùng bạn bè và những người có kinh nghiệm
Cấu trúc nội dung đề tài
Đề tài gồm 3 chương chính:
Chương 1: Cơ sở lý thuyết
Chương 2: Khảo sát và phân tích thiết kế hệ thống
Chương 3: Xây dựng demo chương trình
Trang 10CHƯƠNG 1: CƠ SỞ LÝ THUYẾT 1.1 Tổng quan về hệ điều hành Android.
1.1.1 Android và lịch sử phát triển của Android
Android là một hệ điều hành di động dựa trên nền tảng linux phiên bản 2.6 dành cho các dòng điện thoại SmartPhone Đầu tiên được ra đời bởi công ty liên hợp Android, sau đó được Google mua lại và phát triển từ năm 2005 và trở thành một hệ điều hành di động mã nguồn mở, miễn phí, mạnh mẽ và được ưa chuộng cao trên thế giới
Hệ điều hành Android một hệ điều hành rất mạnh mạnh, có bảo mật cao,
hỗ trợ được nhiều công nghệ tiên tiến như 3G, GPS, EDGE, Wifi tương thích với nhiều phần cứng, hỗ trợ nhiều loại bộ nhập dữ liệu như keyboard, touch và trackball Android là hệ điều hành di động nên có khả năng kết nối cao với các mạng không dây Hỗ trợ công nghệ OpenGL nên có khả năng chơi các phương tiện media, hoạt hình cũng như trình diễn các khả năng đồ họa khác cực tốt, là tiền đề để phát triển các ứng dụng có giao diện phức tạp chẳng hạn như là các trò chơi
Android liên tục được phát triển, mỗi bản cập nhật từ google là mỗi lần android được tối ưu hóa để hoạt động tốt hơn, nhanh và ổn định hơn, hỗ trợ thêm công nghệ mới Chẳng hạn như theo một đánh giá thì android phiên bản 2.2 hoạt động nhanh hơn bản 2.1 tới 450% Hiện nay, phiên bản mới nhất 2.3 phát hành ngày 6/12/2010 và đang tiếp tục được cập nhật
Năm 2008, hệ điều hành Android đã chính thức mở toàn bộ mã nguồn, điều đó cho phép các hãng điện thoại có thể đem mã nguồn về tùy chỉnh, thiết kế lại sao cho phù hợp với mỗi mẫu mã điện thoại của họ và điều quan trọng nữa là hệ điều hành mở này hoàn toàn miễn phí, không phải trả tiền nên giúp họ tiết kiệm khá lớn chi phí phát triển hệ điều hành Những điều đó là cực kỳ tốt không chỉ đối với các hãng sản xuất điện thoại nhỏ mà ngay cả với những hãng lớn như
Trang 11đó hãng có thể kiếm bội, chủ yếu là từ các nguồn quảng cáo trên các dịch vụ đó.
Một số hãng sản xuất điện thoại có sử dụng hệ điều hành Android tiêu biểu:
HTC với các dòng Desire HD, Evo 4G, DROID ERIS, Desire Z, Hero, Desire, Tattoo, Wildfire, Droid Incredible, Legend, Magic, Google Nexus One, Dream, Aria, Paradise
LG với các dòng GT540 Optimus, Optimus Chic E720, Optimus One P500, GW620, Optimus Z, Optimus Q, KH5200 Andro-1, GW880, C710Aloha
MOTOROLA với các dòng MILESTONE 2, BACKFLIP, Droid XTreme, MT710 ZHILING, MILESTONE, XT720 MOTOROI, A1680, XT80 ZHISHANG, DEFY, CHARM, XT806
SAMSUNG với các dòng máy I9000 Galaxy S, Galaxy Tab, Epic 4G, i5510, I5500 Galaxy 5, I7500 Galaxy, I5800 Galaxy 3, M110S Galaxy
S, I6500U Galaxy, Galaxy Q, I5700 Galaxy Spica, I8520 Galaxy Beam, I909 Galaxy S
SONY : XPERIA X10, XPERIA X10 mini, XPERIA X8
ACER với các dòng máy beTouch T500, Liquid E, Stream, Liquid, beTouch E110, beTouch E130, beTouch E400, beTouch E120, Liquid Metal
Ngoài ra còn nhiều hãng điện thoại vừa và nhỏ khác nữa cũng sử dụng hệ điều hành android trong sản phẩm của mình
Trang 12 Kiến trúc của hệ điều hành Android
a Cấu trúc của hệ điều hành.
Mô hình sau mô tả tổng quát cấu trúc của HĐH Android
Hình 1.1 Kiến trúc của hệ điều hành Android
Tầng ứng dụng (Applications)
Là tầng trên cùng của kiến trúc Android, nằm cách xa với phần cứng nhất,
là nơi chứa các ứng dụng của lập trình viên Hầu hết các ứng dụng được viết bằng ngôn ngữ java
Tầng Application Framework
Bằng cách cung cấp một nền tảng phát triển mở, Android cung cấp cho các nhà phát triển khả năng xây dựng các ứng dụng cực kỳ phong phú và sáng tạo Nhà phát triển được tự do tận dụng các thiết bị phần cứng, thông tin địa điểm truy cập,
Trang 13các dịch vụ chạy nền, thiết lập hệ thống báo động và nhiều hơn nữa
Google xây dựng cho các developer để phát triển các ứng dụng của họ trên Android chỉ bằng cách gọi các API Cơ bản tất cả các ứng dụng là một bộ các dịch
vụ và các hệ thống, bao gồm:
Một tập hợp rất nhiều các View có khả năng kế thừa lẫn nhau dùng để thiết kếphần giao diện ứng dụng như: GridView, TableView…
Content Provider:Cho phép các ứng dụng có thể truy xuất dữ liệu từ các
ứng dụng khác hoặc chia sẻ dữ liệu giữa các ứng dụng đó
Resource Manager:Cung cấp truy xuất tới các tài nguyên không phải là
mã nguồn, chẳng hạn như: graphics, image, music, video…
Notification Manager: Cho phép tất cả các ứng dụng hiển thị thông báo của mình trên hệ điều hành
Activity Manager: Quản lý vòng đời của các ứng dụng và điều hướng các Activity
Tầng Library
Android bao gồm một tập hợp các thư viện C/C++ được sử dụng bởi nhiều thành phần khác nhau trong hệ thống Android.Các thư viện này sẽ được các lập trình viên phát triển ứng dụng Android thông qua tầng Android Framework Có thể
kể đến một vài thư viện quen thuộc như:
android.app - Cung cấp truy cập đến các mô hình ứng dụng và là nền tảng của tất cả các ứng dụng Android
android.content - Tạo điều kiện truy cập nội dung, publishing và messaging giữa các ứng dụng và các thành phần ứng dụng
android.database - Được sử dụng để truy cập dữ liệu được công bố bởi các nhà cung cấp nội dung và bao gồm các lớp quản lý cơ sở dữ liệu SQLite
android.graphics - Một bản vẽ đồ họa 2D API cấp thấp bao gồm cả màu sắc, điểm, các bộ lọc, hình chữ nhật và bức tranh sơn dầu
Trang 14 android.hardware - Trình bày một API cung cấp quyền truy cập vào phần cứng như gia tốc và cảm biến ánh sáng.
android.opengl - Một giao diện Java với đồ họa OpenGL ES dựng hình 3D API
android.os - Cung cấp các ứng dụng với quyền truy cập vào các dịch vụ
hệ điều hành chuẩn bao gồm tin nhắn, các dịch vụ hệ thống và quá trình liên lạc
android.media - Cung cấp các lớp để cho phép phát âm thanh và video
android.net - Một tập các API cung cấp quyền truy cập vào các mạng stack Bao gồm android.net.wifi, cung cấp truy cập không dây đến ngăn xếp của thiết bị
android.text - Được sử dụng để thao tác văn bản trên màn hình điện thoại
android.util - Một tập các lớp tiện ích cho công việc biểu diễn chuỗi, chuyển đổi số lượng, xử lý XML, ngày tháng, thời gian
android.view - Các khối xây dựng cơ bản của giao diện người dùng của ứng dụng
android.widget - Một bộ sưu tập phong phú của các thành phần giao diện người dùng được xây dựng trước buttons, labels, list views, layout managers, radio buttons, vv
android.webkit - Một tập các lớp nhằm cho phép khả năng duyệt web được xây dựng vào các ứng dụng
Tầng Android Runtime
Phần này chứa các thư viện mà một chương trình viết bằng ngôn ngữ Java có thể hoạt động Phần này có 2 bộ phận tương tự như mô hình chạy Java trên máy tính thường Thứ nhất là các thư viện lõi (Core Library) , chứa các lớp như JAVA IO, Collections, File Access Thứ hai là một máy ảo java (Dalvik Virtual Machine) Mặc dù cũng được viết từ ngôn ngữ Java nhưng một ứng
Trang 15dụng Java của hệ điều hành android không được chạy bằng JRE của Sun (nay là Oracle) (JVM) mà là chạy bằng máy ảo Dalvik do Google phát triển.
Tầng Linux kernel.
Là tầng dưới cùng của hệ điều hành Android Bộ nhân này làm nhiệm vụ như một lớp trung gian kết nối phần cứng thiết bị và phần ứng dụng Toàn bộ hệ thống Android được xây dựng dựa trên Linux phiên bản 2.6 [2]với một vài thay đổi bởi Google
Trang 16b Cấu trúc của một project android.
Thư mục src (viết tắt của source):
Nơi chứa các source code ứng dụng Gồm các package và các class Các file có đuôi ngầm định là *.java hoặc *.aidl
Thư mục gen (viết tắt của Generated Java File):
Nơi chứa các file tự động phát sinh, hay chính là các file java tạo ra bởi ADT plug-in, như là file R.java hoặc các giao diện tạo ra từ file AIDL File R.java
là một file tự động sinh ra ngay khi tạo ứng dụng, file này được sử dụng để quản lý các thuộc tính được khai báo trong file XML của ứng dụng và các tài nguyên hình ảnh
Mã nguồn của file R.java được tự động sinh khi có bất kì một sự kiện nào xảy ra làm thay đổi các thuộc tính trong ứng dụng Chẳng hạn như, bạn kéo và thả một file hình ảnh từ bên ngoài vào project thì ngay lập tức thuộc tính đường dẫn đến file đó cũng sẽ được hình thành trong file R.java hoặc xoá một file hình ảnh thì đường dẫn tương ứng đến hình ảnh đó cũng tự động bị xoá
Có thể nói file R.java hoàn toàn không cần phải đụng chạm gì đến trong cả quá trình xây dựng ứng dụng
Dưới đây là nội dung của một file R.java:
publicstaticfinalclass drawable {
publicstaticfinalintabc_ab_bottom_solid_dark_holo=0x7f020000; publicstaticfinalintabc_ab_bottom_solid_light_holo=0x7f020001; publicstaticfinalintabc_ab_share_pack_holo_light=0x7f020005;
publicstaticfinalintabc_ab_solid_dark_holo=0x7f020006;
publicstaticfinalintabc_ab_solid_light_holo=0x7f020007;
publicstaticfinalintabc_ab_stacked_solid_dark_holo=0x7f020008; publicstaticfinalintabc_ab_stacked_solid_light_holo=0x7f020009; publicstaticfinalintabc_ab_transparent_light_holo=0x7f02000d;
Trang 17Thư mục res (viết tắt của resource-tài nguyên):
Nơi chứa các resource dùng trong ứng dụng Chẳng hạn như file hình ảnh, file layout, các chuỗi (string)…
Các thư mục con của res bao gồm:
Anim/ : Chứa các file xml dùng cho việc thiết lập các hiệu ứng động
(animation)
Color/ : chứa các file xml dùng định nghĩa màu sắc.
Drawable/ : Chứa file hình ảnh (png, jpeg, gif), file xml định nghĩa cách
vẽ các loại hình dạng khác nhau (shape)
Layout/ : Chứa các file xml dùng để dựng giao diện người dùng.
Menu/ : Chứa file xml qui định application menu.
Raw/ : Chứa các file media, chẳng hạn như mp3 hay ogg
Values/ : Chứa file xml định nghĩa các giá trị Khác với các resource
trong các thư mục khác, resource ở thư mục này khi được định danh trong lớp R thì sẽ không sử dụng file name để định danh, mà sẽ được định danh theo qui định bên trong file xml đó
Thư mục assets: Chứa các resource file mà ứng dụng cần dùng (dưới dạng
về phiên bản SDK cũng như main activity sẽ chạy đầu tiên File này tự động sinh
ra khi tạo một Android project Trong file manifest bao giờ cũng có 3 thành phần chính đó là : application, permission và version
Dưới đây là nội dung của một file AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
Trang 19 android:name = “string”: thuộc tính này để đặt tên cho ứng dụng android Tên này sẽ hiển thị lên màn hình sau khi cài đặt ứng dụng.
android:theme = “drawable theme”: thuộc tính này để đặt theme cho ứng dụng Các theme là các cách để hiển thị giao diện ứng dụng
Permission
Bao gồm các thuộc tính chỉ định quyền truy suất và sử dụng tài nguyên của ứng dụng Khi cần sử dụng một loại tài nguyên nào đó thì trong file manifest của ứng dụng cần phải khai báo các quyền truy suất sau:
Thẻ xác định phiên bản SDK được khai báo như sau:
<uses-sdk android: minSdkVersion=”8”/>
Ở đây chỉ ra phiên bản SDK nhỏ nhất mà ứng dụng hiện tại đang sử dụng
File R.java
File R.java là file tự động sinh ra ngay khi tạo ứng dụng, file này được sử dụng để quản lý các thuộc tính được khai báo trong file XML của ứng dụng và các tài nguyên hình ảnh
Mã nguồn của file R.java được tự động sinh khi có bất kì một sự kiện nào xảy ra làm thay đổi các thuộc tính trong ứng dụng Chẳng hạn như: bạn kéo và thả một file hình ảnh từ bên ngoài vào project thì ngay lập tức thuộc tính đường dẫn đến file đó cũng sẽ được hình thành trong file R.java hoặc xóa một file hình ảnh thì đường dẫn tương ứng đến hình ảnh đó cũng tự động bị xóa
Có thể nói file R.java hoàn toàn không cần phải đụng chạm gì đến trong cả
Trang 20quá trình xây dựng ứng dụng.
1.1.4 Các thành phần cơ bản của ứng dụng Android
a Khái niệm Activity
Activity chính là một cửa sổ chứa giao diện ứng dụng của bạn mà người dùng có thể tương tác với nó Mỗi màn hình trên ứng dụng cả bạn sẽ là kế thừa của Activity Activity dùng các View để hiển thị giao diện ứng dụng người dùng và đáp ứng lại các yêu cầu từ người dùng Trong các ứng dụng desktop, một Activity tương tự như một Form Bạn cần phải tạo một Activity tương ứng cho một màn hình hiển thị Một ứng dụng điển hình bao gồm một giao diện chính chứa các chức năng chính của chương trình, và các Activity khác chứa thông tin liên quan đến lưu trữ thông tin của người dùng nhập và các chức năng khác hỗ trợ chức năng chính của chương trình Để di chuyển màn hình trong ứng dụng android, bạn có thể bắt đầu một Activity hay trở lại Activiy trước đó Có 3 dạng Activity:
Floating Activity: là dạng Activity nổi, có kích thước không phủ lấ toàn
Từ Activity 2, chúng ta khởi động Activity 3, bây giờ tới Activity 3 nhận focus và được đưa vào ngăn xếp
Trang 21Bây giờ, nếu như bạn nhấn nút Back trên thiết bị, Activity 3 sẽ bị đẩy ra trước tiên Lúc này Activity 2 sẽ dành được focus và hiển thị giao diện tương tác với người dùng Nếu bạn tiếp tục bấm nút Back thì Activity 1 sẽ dành được focus
và giao diện hiển thị sẽ là Activity 1 Nếu bạn tiếp tục nhấn nút Back nữa thì Activity 1 sẽ xóa khỏi Stack và lúc này ngăn xếp rỗng và về màn hình HOME của thiết bị Android
b Vòng đời của 1 Activity
Không giống như các ứng dụng thông thường được khởi tạo ở hàm main
Hệ thống Android sẽ được bắt đầu thực hiện một Activity tương ứng với từng trạng thái vòng đời của nó Vòng đời của một Activity sẽ diễn ra từ lúc khởi động cho đến khi kết thúc vòng đời của nó Phần này sẽ giới thiệu cho bạn đọc một cái nhìn tổng quát về các phương thức quan trong trong vòng đời của một Activity Android cung cấp một số sự kiện để quản lý các trạng thái vòng đời của Activity như sau:
Trang 22 onCreate(): sự kiện này được gọi khi Activity được tạo lần đầu tiên Trong sự kiện này, bạn phải thực hiện những công việc như tạo giao diện, tải dữ liệu Sau sự kiện này là sự kiện onStart() được gọi.
onRestart(): Activity sau khi chuyển sang trạng thái Stopped, nếu muốn hiển thị và dành được focus, sự kiện onRestart() phải được gọi Sau sự kiện này luôn là sự kiện onStart() được gọi
onStart(): sự kiện nà được gọi khi giao diện của Activity hiển thị trên màn hình thiết bị Lúc này, tương tác giữa người dùng vẫn chưa được và chưa chuyển sang nhận focus Theo sự kiện này có thể là sự kiện onResume() hoặc sự kiện onStop()
onResume(): sự kiện này được gọi khi Activity bắt đầu tương tác với người dùng Theo sự kiện này có thể là sự kiện onPause()
onPause(): khi một Activity khác dành quyền hiển thị và trạng thái focus thì Activity hiện hành sẽ gọi sự kiện onPause() Trong sự kiện này, công việc chúng ta phải làm là lưu trạng thái Activity và tắt các dịch vụ không cần thiết Theo sau sự kiện này có thể là onResume() hoặc onStop()
onStop(): sự kiện này được gọi khi Activity bị che khuất hoàn toàn bởi một Activity khác và Activity đó cũng dành được focus Theo sau sự kiện này có thể là onRestart() hoặc là onDestroy()
Hình sau sẽ mô tả một vòng đời của một Activity và các giai đoạn mà nó phải trải qua từ khi bắt đầu cho đến khi kết thúc
Trang 23Hình 1.2 Vòng đời của một activity
c Lưu trữ thông tin trạng thái của một Activity
Khi một Activity bị paused hoặc stopped, trạng thái của một Activity vẫn sẽ được giữ lại Điều này là đúng vì mỗi đối tượng Activity vẫn còn được giữ lại trong bộ nhớ khi nó bị paused hoặc stopped Tất cả các thông tin về Activity cũng như trạng thái của nó vẫn còn tồn tại trong Vì vậy, bất cứ thay đổi nào của người dùng đối với Activity vẫn được giữ lại khi nó trở lại trạng thái hoạt động hoặc chế
độ resume
Intents
Là một cấu trúc dữ liệu mô tả cách thức, đối tượng thực hiện của một Activity Là cầu nối giữa các Activity: ứng dụng Android thường bao gồm nhiều Activity, mỗi Activity hoạt động độc lập với nhau và thực hiện những công việc khác nhau Intent chính là người đưa thư, giúp chúng ta triệu gọi cũng như truyền các dữ liệu cần thiết để thực hiện một Activity từ một Activity khác Điều này cũng giống như việc di chuyển giữa các Form trong lập trình Windows Form
Trang 24Trong hình vẽ trên Activity B chỉ trả về kết quả khi cần thiết Ví dụ: giả sử Activity A nhắc người dùng chọn ảnh profile, Activity B liệt kê các ảnh trong SDCard và cho phép người dùng chọn ảnh Khi đó cặp “code + result” là cần thiết
và có thể là “0:null” tức là hủy chọn hoặc “1:ảnh 20”tức chọn ảnh 20
Services
Các dịch vụ (services) chạy nền và không có bất kỳ thành phần giao diện nào Chúng có thể thực hiện các hành động tương tự như các hoạt động, nhưng mà không có bất kỳ giao diện người dùng nào Dịch vụ là hữu ích với các hành động (actions) khi mà người dùng cùng một lúc muốn thực hiện trên màn hình nhiều actions Chẳng hạn như vừa nghe nhạc vừa nhắn tin, …
Một Service có thể sử dụng theo 2 cách:
+ Nó có thể được bắt đầu và được phép hoạt động cho đến khi một người nào đó dùng nó lại hoặc nó tự ngắt Ở chế độ này, nó được bắt đầu bằng cách gọi Context.startService() và dừng bằng lệnh Context.stopService() Nó có thể tự động ngắt bằng lệnh Service.stopSelf() hoặc Service.stopSelfResult() Chỉ cần một lệnh stopService() để ngừng Service lại cho dù lệnh startService() được gọi ra bao nhiêu lần
+ Service có thể được vận hành theo như đã được lập trình việc sử dụng một giao diện mà nó định nghĩa Người dùng thiết lập một đường truyền đến đối tượng Service mà nó sử dụng và sử dụng đường kết nối đó để thâm nhập vào Service Kết nối này được thâm nhập bằng cách gọi lệnh Context.bindService() và
Trang 25được đóng lại bằng cách gọi lệnh Context.unbindService() Nhiều người dùng có thể kết nối tới cùng một thiết bị Nếu Service vẫn chưa được khởi chạy, lệnh bindService() có thể tùy ý khởi động nó Hai chế độ này thì không tách biệt toàn
bộ Có thể kết nối với một Service mà nó đã được bắt đầu với lệnh startService()
Ví dụ, một Service nghe nhạc ở chế độ nền có thể bắt đầu với lệnh startService() cùng với một đối tượng Intent mà định dạng được âm nhạc để chơi Chỉ sau đó, có thể là khi người sử dụng muốn kiểm soát trình chơi nhạc nhạc hoặc biết thêm thông tin về bài hát hiện tại đang chơi, thì sẽ có một Activity tạo lập một đường truyền tới Service bằng cách gọi bindService() Trong trường hợp như thế này, stopService() sẽ không thực sự ngừng Service cho đến khi liên kết cuối cùng được đóng lại
Biểu đồ dưới đây minh họa cho các phương thức callback giành cho một Service
Trang 26Hình 1.3 Các phương thức callback dành cho một service
Mặc dù, nó phân tách các Service được tạo ra thông qua startService
Trang 27với các Service mà được tạo ra bằng bindService() Hãy nhớ rằng bất kì Service nào, cho dù nó được khởi tạo như thế nào thì nó vẫn có thể cho phép các người dùng kết nối tới nó một cách hiệu quả nhất, cho nên bất kì Service nào cũng có thể được chỉ định thông qua các các phương thức onBind()và onUnbind().
Content Providers
Content Providers là lớp trung gian chia sẻ dữ liệu giữa các ứng dụng Mặc định, Android chạy mỗi ứng dụng trong một khuôn thử của riêng nó để tất cả dữ liệu thuộc về một ứng dụng hoàn toàn độc lập với các ứng dụng khác trong hệ thống Mặc dù một lượng nhỏ dữ liệu vẫn được trao đổi giữa các ứng dụng thông qua các Intent, content providers sẽ tốt hơn và thích hợp nhiều cho việc chia sẻ dữ liệu liên tục giữa các bộ dữ liệu lớn Như vậy các content providers API tuân thủ theo nguyên tắc CRUD
Hệ thống Android sử dụng cơ chế này vào mọi lúc Chẳng hạn như Content Providers ở đây trình bày tất cả các dữ liệu liên hệ của người dùng một cách đa dạng trên ứng dụng Settings Provider trình bày việc cài đặt các ứng dụng khác nhau trên hệ thống, bao gồm cả việc xây dựng ứng dụng Settings Media Store chịu trách nhiệm lưu trữ và chia sẻ các phương tiện khác nhau, chẳng hạn như ảnh
và âm nhạc trên các ứng dụng khác nhau Hình dưới đây minh họa việc ứng dụng Contacts sử dụng Contacts Provider như thế nào, đây là ứng dụng hoàn toàn riêng biệt dùng để lấy dữ liệu về các liên hệ của người sử dụng Bản thân ứng dụng Contacts không có bất kỳ dữ liệu liên lạc nào và Contacts Provider cũng không có bất kỳ giao diện sử dụng nào
Content Providers là các giao diện tương đối đơn giản với các phương thức tiêu chuẩn như insert(), update(), delete(), and query() Các phương thức này giống như các phương thức chuẩn trong cơ sở dữ liệu
Trong hệ thống Android tất cả các tài nguyên như Contact, SMS,… đều được lưu trữ vào CSDL SQLite của hệ thống Cũng như các CSDL khác , CSDL
mà hệ thống Android sử dụng để lưu trữ các thông tin cũng như cho phép chúng ta
Trang 28truy vấn dữ liệu như một CSDL MySQL thông thường Tuy nhiên, trong hệ thống
đó chúng ta không cần phải thao tác bằng lệnh SQL nhiều để truy vấn dữ liệu mà thay vào đó Android đã được trang bị API Content Providers cho phép người lập trình có thể dễ dàng truy xuất dữ liệu… Content Provider cung cấp một đối tượng con trỏ giúp chúng ta dễ dàng lấy được bất cứ dữ liệu nào chỉ cần cung cập một đường dẫn đúng đến dữ liệu đó Đường dẫn này còn được gọi là Uri
Broadcast Receivers
Broadcast Receivers (có thể gọi là Receiver) là một trong bốn loại thành phần trong ứng dụng Android Chức năng dùng để nhận các sự kiện mà các ứng dụng hoặc hệ thống phát đi
+ Tránh xử lý các code quá lâu trong onReceive()
+ Không có xử lý bất đồng bộ chờ callback trong Receiver ( cụ thể như hiển thị Dialog, kết nối các service…)
Một số broadcast thông dụng:
+ Thông báo tin nhắn tới
+ Thông báo cắm, rút thẻ nhớ
Trang 29Telephony cũng làm một thành phần tương đối quan trọng trong hệ thống Android Nó cho phép người lập trình có thể lấy các thông tin của hệ thống như thông tin SIM, thông tin thiết bị, thông tin mạng…Ngoài ra, chúng ta cũng có thể cài đặt các thông số cho cho thiết bị nếu các thông số đó có thể thay đổi được Tất
cả những điều đó được được quản lý bởi một class Telephony Manager trong Android
getSystemService( Content TELEPHONY_SERVICE);
1.1.5 Web Service
Tìm hiểu về Web Service
Web service là một tập các phương thức được gọi thực hiện từ xa thông qua một địa chỉ url Kết quả trả về của web service thường dưới dạng json hoặc xml Web service thường được sử dụng để tạo các ứng dụng phân tán
Hình 1.4 Kiến trúc của web service
Đặc điểm:
Web service cho phép client và server tương tác được với nhau ngay cả
Trang 30trong những môi trường khác nhau Ví dụ, đặt Web server cho ứng dụng trên một máy chủ chạy hệ điều hành Linux trong khi người dùng sử dụng máy tính chạy hệ điều hành Windows, ứng dụng vẫn có thể chạy và xử lý bình thường mà không cần thêm yêu cầu đặc biệt để tương thích giữa hai hệ điều hành này.
Phần lớn kĩ thuật của Web service được xây dựng dựa trên mã nguồn mở và được phát triển từ các chuẩn đã được công nhận, ví dụ như XML Một Web service bao gồm có nhiều mô-đun và có thể công bố lên mạng Internet
Là sự kết hợp của việc phát triển theo hướng từng thành phần với những lĩnh vực cụ thể và cơ sở hạ tầng Web, đưa ra những lợi ích cho cả doanh nghiệp, khách hàng, những nhà cung cấp khác và cả những cá nhân thông qua mạng Internet
Một ứng dụng khi được triển khai sẽ hoạt động theo mô hình server Nó có thể được triển khai bởi một phần mềm ứng dụng phía server ví dụ như PHP, Oracle Application server hay Microsoft.Net…
client- Ngày nay Web service đang rất phát triển, những lĩnh vực trong cuộc sống có thể áp dụng và tích hợp Web service là khá rộng lớn như dịch vụ chọn lọc
và phân loại tin tức (hệ thống thư viện có kết nối đến web portal để tìm kiếm các thông tin cần thiết); ứng dụng cho các dịch vụ du lịch (cung cấp giá vé, thông tin
về địa điểm…), các đại lý bán hàng qua mạng, thông tin thương mại như giá cả, tỷ giá hối đoái, đấu giá qua mạng…hay dịch vụ giao dịch trực tuyến (cho cả B2B và B2C) như đặt vé máy bay, thông tin thuê xe…
Ưu và nhược điểm
Trang 31 Thúc đẩy đầu tư các hệ thống phần mềm đã tồn tại bằng cách cho phép các tiến trình/chức năng nghiệp vụ đóng gói trong giao diện Web service.
Tạo mối quan hệ tương tác lẫn nhau và mềm dẻo giữa các thành phần trong hệ thống, dễ dàng cho việc phát triển các ứng dụng phân tán
Thúc đẩy hệ thống tích hợp, giảm sự phức tạp của hệ thống, hạ giá thành hoạt động, phát triển hệ thống nhanh và tương tác hiệu quả với hệ thống của các doanh nghiệp khác
Nhược điểm:
Những thiệt hại lớn sẽ xảy ra vào khoảng thời gian chết của Web service, giao diện không thay đổi, có thể lỗi nếu một máy khách không được nâng cấp, thiếu các giao thức cho việc vận hành
Có quá nhiều chuẩn cho Web service khiến người dùng khó nắm bắt
Phải quan tâm nhiều hơn đến vấn đề an toàn và bảo mật
Web Serive là một công nghệ cho phép Client truy xuất để thực hiện mọi tác vụ như một Web Application Về bản chất Web Service dựa trên XML và HTTP, trong đó XML làm nhiệm vụ mã hóa và giải mã dữ liệu và dùng SOAP để truyền tải Web Service không phụ thuộc vào platform nào đó
Thành phần của webservice
- Web Servive là một công nghệ cho phép Client truy xuất để thực hiện mọi tác vụ như một Web Application Về bản chất Web Service dựa trên XML và HTTP, trong đó XML làm nhiệm vụ mã hóa và giải mã dữ liệu và dùng SOAP để truyền tải Web Service không phụ thuộc vào platform nào, nó có thể sử dụng trên
đa nền tảng: Android, IOS, Windown Phone., do đó ta có thể sử dụng Web Service
để truyền tải dữ liệu giữa các ứng dụng hay giữa các platform
Nền tảng Web Service bao gồm có :
SOAP – Simple Object Access Protocol
UDDI Uniseral Description, Discovery and Intergration
Trang 32 WSDL – Web Services Description Language
SOAP:
SOAP – Một tiêu chuẩn của W3C, là giao thức sử dụng XML để định nghĩa
dữ liệu dạng thuần văn bản (plain text) thông qua HTTP SOAP là cách mà Web Service sử dụng để truyền tải dữ liệu Vì dựa trên XML nên SOAP là một giao thức không phụ thuộc platform cũng như bất kì ngôn ngữ lập trình nào
Một thông điệp SOAP được chia thành hai phần là header và body Phần header chỉ ra địa chỉ Web Service, host, Content-Type, Content-Length tương tự như một thông điệp HTTP
Trang 33Hình 1.5 Quá trình lấy dữ liệu từ Web service
1.2 Tổng quan về phân tích thế kế hướng đối tượng UML
1.2.1 Giới thiệu chung về UML
Ngôn ngữ mô hình hóa thống nhất (Unifield Modeling Language – UML) là một ngôn ngữ để biểu diễn mô hình theo hướng đối tượng được xây dựng với mục đích là:
+ Mô hình hoá các hệ thống sử dụng các khái niệm hướng đối tượng
+ Thiết lập một kết nối từ nhận thức của con người đến các sự kiện cần mô hình hoá
+ Giải quyết vấn đề về mức độ thừa kế trong các hệ thống phức tạp, có nhiều ràng buộc khác nhau
+ Tạo một ngôn ngữ mô hình hoá có thể sử dụng được bởi người và máy.UML tổ chức một mô hình thành một loạt các hướng nhìn, thể hiện các khía
Trang 34cạnh khác nhau của hệ thống Chỉ khi kết hợp tất cả các hướng nhìn lại với nhau, người ta mới có được một bức tranh trọn vẹn về hệ thống Một biểu đồ bình thường chỉ trình bày một phần nội dung của một hướng nhìn, và một hướng nhìn được định nghĩa với rất nhiều biểu đồ.
1.2.2 Các đặc điểm cơ bản của hệ thống hướng đối tượng
Lớp và đối tượng
Lớp (Class) – Mẫu để xác định trường hợp hoặc các đối tượng cụ thể
Đối tượng (Object) – Mô tả của một lớp
Thuộc tính (Attributes) – Mô tả cho đối tượng
Chức năng (Behaviors) – Xác định các đối tượng có thể làm gì
Phương thức và message
Phương thức (Method) thực hiện chức năng của đối tượng Tương tự như một hàm hoặc một thủ tục
Message được gửi khi một phương thức được kích hoạt
Tóm lược và ẩn thông tin
Tóm lược: Kết hợp dữ liệu và quá trình thành một thực thể
Ẩn thông tin: Chỉ có những thông tin cần thiết để sử dụng một module phần mềm mới được công bố cho người sử dụng
Thừa kế
Các lớp super hoặc các lớp cơ bản là những lớp mở đầu của hệ thống phân cấp các lớp
Các lớp con hoặc các lớp cụ thể được thừa kế từ các lớp này
Các lớp con được thừa kế các thuộc tính và phương thức từ các lớp cao hơn trong hệ thông phân cấp lớp
Đa hình thái và liên kết động
Đa hình thái: Một thông điệp có thể được giải thích khác nhau bởi các đối tượng khác nhau
Trang 35 Liên kết động: Nhập vào chậm trễ hoặc lựa chọn phương pháp cho một đối tượng được thực hiện khi thời gian bắt đầu chạy
Liên kết tĩnh: Loại của đối tượng được xác định tại thời điểm biên dịch
1.2.3 Ưu nhược điểm của phân tích thiết kế hướng đối tượng
Khó thực hiện vì khó xác định đối tượng của hệ thống
1.3 Ứng dụng mô hình UML trong thiết kế ứng dụng Android
Đối với nhiều lập trình viên, không có khoảng cách nào giữa ý tưởng để giải quyết một vấn đề và việc thể hiện điều đó thông qua các đoạn mã Họ nghĩ ra
và họ viết mã Trên thực tế, điều này gặp một số vấn đề Thứ nhất, việc trao đổi về các ý tưởng giữa những người lập trình sẽ gặp khó khăn, trừ khi tất cả đều nói cùng một ngôn ngữ Thậm chí ngay cả khi không gặp trở ngại về ngôn ngữ thì đối với từng công ty, từng nhóm cũng có những “ngôn ngữ” riêng của họ Điều này gây trở ngại cho một người mới vào để có thể hiểu được những việc đang được tiến hành Hơn nữa, trong lĩnh vực phần mềm, nhiều khi khó có thể hiểu được nếu chỉ xem xét các đoạn mã lệnh
Xây dựng mô hình sử dụng ngôn ngữ UML đã giải quyết được các khó khăn trên Khi trở thành một chuẩn trong việc lập mô hình, mỗi kí hiệu mang một
ý nghĩa rõ ràng và duy nhất, một nhà phát triển có thể đọc được mô hình xây dựng bằng UML do một người khác viết
Trang 36Những cấu trúc mà việc nắm bắt thông qua đọc mã lệnh là khó khăn nay đã được thể hiện trực quan Một mô hình rõ ràng, sáng sủa làm tăng khả năng giao tiếp, trao đổi giữa các nhà phát triển.
Mục đích chính của UML là để xây dựng mô hình cho các hệ thống phần mềm, nó có thể được sử dụng một cách hiệu quả trong nhiều lĩnh vực như:
Hệ thống thông tin doanh nghiệp (enterprise)
Các ứng dụng phân tán dựa trên Web
UML không chỉ giới hạn trong lĩnh vực phần mềm Nó còn có thể dùng để lập mô hình cho các hệ thống không phải là phần mềm như hệ thống pháp luật (luồng công việc – workflow), thiết kế phần cứng, …
Trang 37CHƯƠNG 2 : KHẢO SÁT VÀ PHÂN TÍCH THIẾT KẾ HỆ THỐNG 2.1 Khảo sát thực tế
2.1.1 Khảo sát phần mềm ngoài thị trường
a) Trang Web datsan.vn
Hình 2.1 Trang chủ website dansan.vn
Có rất nhiều vấn đề mà cả người cho thuê sân và người chơi thể thao gặp phải trong kinh doanh cũng như đặt sân và chơi môn thể thao mình yêu thích
Trang 38Xuất phát từ bản thân là những thành viên đam mê thể thao, phản ánh từ các bạn – Khách hàng của (www.anasportshop.com), sau nhiều lần trăn trở, chúng tôi quyết định phải có một công cụ, giải pháp cụ thể để giải quyết tất cả các vấn đề trên.
WWW.DATSAN.VNra đời từ lý do đó!
b) Trang Web tuyensonsport.vn
Vài năm trở lại đây, các tổ chức, cá nhân rất quan tâm đến những nhu cầu
về tập luyện thể thao hoặc tổ chức giải đấu thể thao phong trào Đặc biệt là bóng
đá, đã thu hút được rất nhiều “tín đồ” tham gia Chính những nhu cầu đó đã trở thành động lực lớn để Làng thể thao Tuyên Sơn - Đà Nẵng cho ra đời dịch vụ thuê sân bóng đá
Trang 39Hình 2.2 Trang chủ tuyensonsport.vn
Hệ thống sân hiện đại và chất lượng
Hiện nay, Tuyên Sơn có tất cả 12 sân bóng mini và 1 sân 11 người theo tiêu chuẩn quốc tế:
Khán đài với sức chứa hơn 1000 người dành cho các cổ động viên đến theo dõi, cổ vũ cho các trận thi đấu; đặc biệt là những trận đấu trong khuôn khổ các giải đấu bóng đá của công ty, đoàn thể
Hệ thống đèn chiếu sáng chuyên dụng, bật sáng liên tục từ 17h đến 23h mỗi ngày Tất cả đã tạo nên một hệ thống sân thi đấu hiện đại và chất lượng Đến với Tuyên Sơn, các bạn sẽ thấy được sự khác biệt của những sân bóng tại đây, không gian và tầm nhìn thông thoáng, rộng rãi là điều kiện thích hợp để thi đấu thể thao
và giải trí sau một ngày làm việc mệt nhọc
Khung giờ hoạt động thuận tiện
Bắt đầu từ 05h30 và kết thúc vào 22h30 hằng ngày, kể cả ngày lễ, chủ nhật Thời gian cho thuê sân được tính theo block 01 giờ Khung giờ như trên đáp ứng gần như mọi nhu cầu về thời gian chơi bóng của quý khách hàng
Hình thức thuê sân linh hoạt
Trang 40Cả hai hình thức thuê sân đều rất thuận tiện cho khách hàng Đối với những khách hàng bận rộn trong công việc thì thuê sân đá lẻ theo giờ là một lựa chọn hợp
lý Còn với những khách hàng muốn thi đấu thể thao thường xuyên thì thuê sân dài hạn theo hợp đồng mang lại nhiều ưu thế về lựa chọn khung giờ vàng
Bảng giá thuê sân bóng
2.1.2 Khảo sát hiện trạng thực tế tại trường Đại học CNTT&TT
Sân bóng trường Đại học Công nghệ thông tin và truyền thông nằm trong khuôn viên của trường với vị trí thuận tiện Ngày 20 tháng 01 năm 2012, sau gần 3