Tải bản đầy đủ (.pdf) (73 trang)

XÂY DỰNG CỔNG THÔNG TIN SỰ KIỆN SINH VIÊN VÀ DỰ ÁN GÂY QUỸ

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 (6.13 MB, 73 trang )

ĐẠI HỌC ĐÀ NẴNG
TRƯỜNG ĐẠI HỌC BÁCH KHOA
KHOA CÔNG NGHỆ THÔNG TIN
____***____

BÁO CÁO ĐỒ ÁN CHUYÊN NGÀNH

CÔNG NGHỆ PHẦN MỀM
ĐỀ TÀI:

XÂY DỰNG CỔNG THÔNG TIN SỰ KIỆN SINH VIÊN
VÀ DỰ ÁN GÂY QUỸ

Giáo viên hướng dẫn:

TS. Nguyễn Văn Hiệu

Sinh viên thực hiện:
Đỗ Minh Nhật
Trần Hữu Thắng

15T1
15T1

102150055
102150068

Nguyễn Đình Hoan 15T1
Nguyễn Đức Văn
15T1


102150034
102150081

Lê Văn Mẫn

102150049

15T1
Nhóm: 15.11A

Đà Nẵng, tháng 04 năm 2019


Mục lục

GVHD: Nguyễn Văn Hiệu

MỤC LỤC
Nội dung
MỤC LỤC

........................................................................................................................ 1

DANH MỤC HÌNH ẢNH .................................................................................................... 3
MỞ ĐẦU

........................................................................................................................ 5

CHƯƠNG 1. TỔNG QUAN VỀ ĐỀ TÀI ............................................................................ 6
1.1. Đề tài ....................................................................................................................................... 6

1.2. Giới thiệu về SVdanang......................................................................................................... 6
1.3. Nhu cầu người dùng .............................................................................................................. 6

CHƯƠNG 2. CƠ SỞ LÝ THUYẾT ..................................................................................... 7
2.1. Spring boot ............................................................................................................................ 7
2.1.1.
2.1.2.
2.1.3.
2.1.4.

Giới thiệu ................................................................................................................................... 7
Phiên bản.................................................................................................................................... 7
Tạo một Spring boot application ................................................................................................ 7
Giới thiệu RESTful Webservice ................................................................................................ 7

2.2. Angular ................................................................................................................................... 9
2.2.1. Giới thiệu ........................................................................................................................................ 9
2.2.2. Các đặc tính của Angular ............................................................................................................... 9
2.2.3. Các thành phần chính trong Angular .............................................................................................. 9

2.3. Android ................................................................................................................................. 11
2.3.1. Giới thiệu ...................................................................................................................................... 11
2.3.2. Cơ chế hoạt động .......................................................................................................................... 12
2.3.3. Môi trường phát triển ................................................................................................................... 13
CHƯƠNG 3.
PHÂN TÍCH THIẾT KẾ HỆ THỐNG ...................................................................... 15

3.1. Phân tích và thiết kế hệ thống............................................................................................. 15
3.1.1. Đặc tả chức năng của hệ thống ..................................................................................................... 15
3.1.2. Phân tích đối tượng ...................................................................................................................... 15

3.1.3. Hệ thống sơ đồ Use-case .............................................................................................................. 16
3.1.4. Cơ sở dữ liệu ............................................................................................................................ 18

CHƯƠNG 4. XÂY DỰNG CHƯƠNG TRÌNH ................................................................. 20
4.1. Xây dựng hệ thống ............................................................................................................... 20
4.1.1. Phần Back-End ............................................................................................................................. 20
4.1.2. Phần Front-End website ............................................................................................................... 29
4.1.3. Phần Front-End application .......................................................................................................... 44

4.2. Bảng phân công công việc ................................................................................................... 48

CHƯƠNG 5. TRIỂN KHAI HỆ THỐNG......................................................................... 49
5.1. Kế hoạch làm việc ................................................................................................................ 49
5.2. Triển khai hệ thống API trên VPS ..................................................................................... 51
5.2.1. Java SE Runtime Environment 8 .................................................................................................. 51
5.2.2. Apache Tomcat ............................................................................................................................ 51
5.2.3. Triển khai Database bằng MySQL ............................................................................................... 52
5.2.4. Triển khai Spring Boot Application trong Tomcat ....................................................................... 52

5.3. Triển khai hệ thống website trang public .......................................................................... 54
5.3.1. Build dự án Angular với cấu hình product ................................................................................... 54
5.3.2. Sao chép toàn bộ output folder lên folder của Web Server .......................................................... 54

Báo cáo đồ án chuyên ngành Công nghệ phần mềm

Trang 1


Mục lục


GVHD: Nguyễn Văn Hiệu

5.3.3. Cấu hình Server điều hướng request đến file index.html ............................................................. 55

5.4. Quá trình triển khai dự án thông qua Trello .................................................................... 56

CHƯƠNG 6. KẾT QUẢ SẢN PHẨM VÀ ĐÁNH GIÁ .................................................... 57
6.1. Kết quả sản phẩm ................................................................................................................ 57
6.1.1. Trang Public ................................................................................................................................. 57
6.1.2. Trang quản lý ............................................................................................................................... 63
6.1.3. Ứng dụng di động ......................................................................................................................... 67

6.2. Kết luận và hướng phát triển.............................................................................................. 71
6.2.1. Đạt được ....................................................................................................................................... 71
6.2.2. Chưa đạt ....................................................................................................................................... 71
6.2.3. Hướng phát triển........................................................................................................................... 71

Báo cáo đồ án chuyên ngành Công nghệ phần mềm

Trang 2


Mục lục

GVHD: Nguyễn Văn Hiệu

DANH MỤC HÌNH ẢNH
Hình 1. Thành phần chính trong Angular.............................................................................. 9
Hình 2. Các thành phần chính trong Android ..................................................................... 12
Hình 3. Sơ dồ Use case Admin của Svdanang ..................................................................... 16

Hình 4. Sơ đồ Use case trưởng ban ..................................................................................... 17
Hình 5. Sơ đồ Use case thành viên diễn đàn ....................................................................... 17
Hình 6. Sơ đồ Use case người dùng..................................................................................... 18
Hình 7. Cơ sở dữ liệu ........................................................................................................... 19
Hình 8. Quá trình CRUD với 4 phương thức API Mapping ................................................ 22
Hình 9. Thanh toán bằng Paypal SDK ................................................................................ 22
Hình 10. JWT framework ..................................................................................................... 24
Hình 11. Hoạt động của JWT .............................................................................................. 25
Hình 12. JWT trả về khi đăng nhập ..................................................................................... 26
Hình 13. Swagger trong dự án............................................................................................. 28
Hình 14. Cách tổ chức ứng dụng trang quản lý .................................................................. 29
Hình 15. Core Module trang quản lý ................................................................................... 30
Hình 16. Shared Module trang quản lý ............................................................................... 31
Hình 17. User Module trang quản lý ................................................................................... 32
Hình 18. Role Module trang quản lý ................................................................................... 32
Hình 19. Event Module trang quản lý.................................................................................. 33
Hình 20. Project Module trang quản lý ............................................................................... 34
Hình 21. Blogpost Module trang quản lý ............................................................................ 35
Hình 22. Meeting Module trang quản lý.............................................................................. 35
Hình 23. Profile Module trang quản lý................................................................................ 36
Hình 24. Dashboard Module trang quản lý ......................................................................... 36
Hình 25. Cách tổ chức ứng dụng cho trang public.............................................................. 37
Hình 26. Core Module trang public..................................................................................... 38
Hình 27. Shared Module trang public ................................................................................. 38
Hình 28. Home Module trang public ................................................................................... 39
Hình 29. Register-Loing Module trang public..................................................................... 40
Hình 30. Blog Module trang public ..................................................................................... 41
Hình 31. Event Module trang public ................................................................................... 41
Hình 32. Fund - Raising Project Module trang public ........................................................ 42
Hình 33. Me Module trang public ....................................................................................... 43

Hình 34. Java SE Runtime Environment ............................................................................. 51
Hình 35. Apache Tomcat ..................................................................................................... 52
Hình 36. Triển khai database bằng MySQL ........................................................................ 52
Hình 37. Spring Boot Application trong Tomcat ................................................................ 52
Hình 38. Kết quả việc Update packaging JAR into WAR................................................... 53
Hình 39. Triển khai Tomcat ................................................................................................. 53
Hình 40. Kết quả thực hiện triển khai trên Tomcat ............................................................. 54

Báo cáo đồ án chuyên ngành Công nghệ phần mềm

Trang 3


Mục lục

GVHD: Nguyễn Văn Hiệu

Hình 41. Giao diện công cụ FileZilla FTP Client ................................................................ 55
Hình 42. Triển khai dự án thông qua Trello ........................................................................ 56
Hình 43. Trang chủ .............................................................................................................. 57
Hình 44. Trang danh sách bài viết ...................................................................................... 58
Hình 45. Trang chi tiết bài viết ............................................................................................ 58
Hình 46. Trang danh sách sự kiện ....................................................................................... 59
Hình 47. Trang chi tiết sự kiện ............................................................................................ 59
Hình 48. Form đăng kí tham gia sự kiện ............................................................................. 60
Hình 49. Trang danh sách dự án gây quỹ............................................................................ 60
Hình 50. Trang chi tiết dự án gây quỹ ................................................................................. 61
Hình 51. Form ủng hộ dự án gây quỹ .................................................................................. 61
Hình 52. Trang thanh toán khi ủng hộ (Paypal).................................................................. 62
Hình 53. Trang quản lý thông tin cá nhân của người dùng ................................................ 62

Hình 54. Trang liên hệ ......................................................................................................... 63
Hình 55. Trang quản lý ........................................................................................................ 63
Hình 56. Trang tạo người dùng mới .................................................................................... 64
Hình 57. Trang quản lý vai trò ............................................................................................ 64
Hình 58. Tạo mới vai trò...................................................................................................... 65
Hình 59. Trang phân quyền cho vai trò ............................................................................... 65
Hình 60. Trang quản lý bài đăng ......................................................................................... 66
Hình 61. Trang tạo mới bài đăng ........................................................................................ 66
Hình 62. Quản lý lịch họp .................................................................................................... 67
Hình 63. Trang tạo mới cuộc họp ........................................................................................ 67
Hình 64. Trang xem dự án gây quỹ trên di động ................................................................. 68
Hình 65. Trang chỉnh sửa thông tin cá nhân trên di động .................................................. 68
Hình 66. Trang xem thông tin cá nhân trên di động............................................................ 69
Hình 67. Thanh Sidebar trong ứng dụng di động ................................................................ 69
Hình 68. Trang chủ ứng dụng .............................................................................................. 70
Hình 69. Ủng hộ dự án trên di động .................................................................................... 70

Báo cáo đồ án chuyên ngành Công nghệ phần mềm

Trang 4


Mục lục

GVHD: Nguyễn Văn Hiệu

MỞ ĐẦU
Lời đầu tiên, chúng em muốn gửi những lời cảm ơn và biết ơn chân thành nhất
của mình tới tất cả những người đã hỗ trợ, giúp đỡ chúng em về kiến thức và tinh
thần trong quá trình thực hiện đồ án.

Trước hết chúng em xin chân thành cảm ơn Thầy Nguyễn Văn Hiệu, Giảng
viên Khoa Công Nghệ Thông Tin, Trường Đại Học Bách Khoa – Đại Học Đà Nẵng,
người đã trực tiếp hướng dẫn, nhận xét, giúp đỡ chúng em trong suốt quá trình thực
hiện đồ án.
Xin chân thành cảm ơn ban giám hiệu nhà trường, các thầy cô trong Khoa Công
Nghệ Thông Tin và các phòng ban nhà trường đã tạo điều kiện tốt nhất cho chúng em
cũng như các bạn khác trong suốt thời gian làm đồ án.
Với đề tài thiết thực và hữu ích cho xã hội, chúng em đã làm việc một cách
đầy nỗ lực với mục tiêu sản phẩm được đến với người dùng một cách dễ dàng và đầy
sự hấp dẫn.
Tuy nhiên với vốn kiến thức hạn hẹp, và thời gian làm việc có hạn nên chúng
em không tránh khỏi những thiếu sót. Chúng em rất mong nhận được những ý kiến,
đóng góp, phê bình của Quý thầy cô để sản phầm được hoàn thiện hơn. Đó sẽ là
hành trang quý giá để chúng em tiếp tục hoàn thiện kiến thức của mình sau này.
Em xin chân thành cảm ơn.

Báo cáo đồ án chuyên ngành Công nghệ phần mềm

Trang 5


GVHD: Nguyễn Văn Hiệu

CHƯƠNG 1.

TỔNG QUAN VỀ ĐỀ TÀI

1.1. Đề tài
Xây dựng website và ứng dụng di động cho cổng thông tin về sự kiện sinh
viên và dự án gây quỹ vì cộng đồng dành cho diễn đàn Svdanang.

1.2. Giới thiệu về SVdanang
Diễn đàn Svdanang là một diễn đàn dành cho sinh viên ở Đà Nẵng, là một tổ
chức phi lợi nhuận đã thành lập được 15 năm.Tổ chức thường tạo ra các sự kiện
dành cho sinh viên đăng kí tham gia cũng như các dự án cộng đồng cần sự giúp đỡ
và gây quỹ từ mọi người. Mục tiêu của diễn đàn sẽ là cổng thông tin cho sinh viên
và học sinh tiếp cận được với thông tin và các dự án cộng đồng một cách nhanh
chóng và thuận lợi nhất có thể.
1.3. Nhu cầu người dùng
 Diễn đàn cần tạo ra 1 website và ứng dụng để cập nhật thông tin các chương
trình và sự kiện của diễn đàn đến với mọi người. Mọi người có thể đăng kí
trực tuyến cũng như ủng hộ cho các dự án vì cộng đồng. Nhận và đọc các tin
tức về hoạt động sinh viên nhanh và thuận tiện. Thành viên trong diễn đàn có
thể quản lý thành viên nhân sự trong diễn đàn, tạo cuộc họp nhanh và tiện
lợi.
 Hệ thống phục vụ cho 3 đối tượng người dùng chính:
o Admin diễn đàn
o Thành viên diễn đàn
o Người dùng là Sinh viên, người ủng hộ…
 Website cho phép người dùng có thể lưu trữ và điền trực tiếp các thông tin
vào các Form đăng kí tuyển tình nguyện viên dành cho các sự kiện diễn đàn
Svdanang, ngoài ra người dùng còn có thể ủng hộ trực tuyến cho các dự án
gây quỹ vì cộng đồng được tổ chức bởi diễn đàn Svdanang.
 Thành viên của diễn đàn thì có thể tiếp cận với các lịch họp và nắm bắt thông
tin người đăng ký cũng như thành viên của diễn đàn.

Báo cáo đồ án chuyên ngành Công nghệ phần mềm

Trang 6



GVHD: Nguyễn Văn Hiệu

CHƯƠNG 2.

CƠ SỞ LÝ THUYẾT

2.1. Spring boot
2.1.1. Giới thiệu
Spring boot là một module của Spring Framework cung cấp tính năng RAD(Rapid
Application
Development) để phát triển ứng dụng nhanh. Nếu như trước đây, công đoạn khởi tạ
o một dự án Spring khá vất vả từ việc khai báo các dependency trong file pom.xml  
cho đến cấu hình bằng XML hoặc annotation phức tạp, thì giờ đây với Spring
Boot, chúng ta có thể tạo các ứng dụng Spring một cách nhanh chóng và cấu hình c
ũng đơn giản hơn.
Dưới đây một số tính năng nổi bật của Spring Boot:
 Có các tính năng của Spring Framework.
 Tạo ứng dụng độc lập, có thể chạy bằng java -jar (cho cả java web)
 Cung cấp một loạt các tính năng phi chức năng phổ biến cho các dự án lớn
như nhúng trực tiếp web server như Tomcat, Jetty,…
 Cấu hình ít, tự động cấu hình bất kì khi nào có thể (Giảm thời gian viết code,
tăng năng suất)
 Không yêu cầu XML config
 Cung cấp nhiều plugin
 Chuẩn cho Microservices (Cloud support; giảm việc setup,
config; các thư viện hỗ trợ…)
2.1.2. Phiên bản
Phiên bản 2.1.x
2.1.3. Tạo một Spring boot application
Để tạo một Spring boot application chúng ta cần có các thành phần chính sau:

 Java 1.8
 Gradle 2.3+ hoặc Maven 3.0+
 Spring Framework 5.0.0.BUILD-SNAPSHOT
 An IDE (Spring Tool Suit) – một extention trong eclipse.
2.1.4. Giới thiệu RESTful Webservice
2.1.4.1. Giới thiệu
RESTful Web Service là các Web Service được viết dựa trên kiến trúc REST.
REST đã được sử dụng rộng rãi thay thế cho các Web Service dựa trên SOAP và
WSDL. RESTful WebService nhẹ, dễ dàng mở rộng và bảo trì. REST định nghĩa các

Báo cáo đồ án chuyên ngành Công nghệ phần mềm

Trang 7


GVHD: Nguyễn Văn Hiệu

quy tắc kiến trúc để bạn thiết kế Web services, chú trọng vào tài nguyên hệ thống,
bao gồm các trạng thái tài nguyên được định dạng như thế nào và được truyền tải qua
HTTP, và được viết bởi nhiều ngôn ngữ khác nhau. Nếu tính theo số dịch vụ mạng
sử dụng, REST đã nổi lên trong vài năm qua như là một mô hình thiết kế dịch vụ
chiếm ưu thế. Trong thực tế, REST đã có những ảnh hưởng lớn và gần như thay thế
SOAP và WSDL vì nó đơn giản và dễ sử dụng hơn rất nhiều.
2.1.4.2.

Xây dựng RESTful Webservice

Quy tắc để tạo ra một ứng dụng WebService tuân thủ 4 quy tắc sau thiết kế cơ bản
sau:
 Sử dụng các phương thức HTTP một cách rõ ràng.

Bạn muốn thực hiện các thao tác trên dữ liệu cần lưu ý các thao tác sau:
- Để tạo một tài nguyên trên máy chủ, bạn cần sử dụng phương thức POST.
- Để truy xuất một tài nguyên, sử dụng GET.
- Để thay đổi trạng thái một tài nguyên hoặc để cập nhật nó, sử dụng PUT.
- Để huỷ bỏ hoặc xoá một tài nguyên, sử dụng DELETE.
- Phi trạng thái.
 Một đặc điểm của REST là phi trạng thái (stateless), có nghĩa là nó không lưu
giữ thông tin của client. Chẳng hạn bạn vừa gửi yêu cầu để xem trang thứ 2
của một tài liệu, và bây giờ bạn muốn xem trang tiếp theo.REST không lưu trữ
lại thông tin rằng trước đó nó đã phục vụ bạn. Điều đó có nghĩa là REST không
quản lý phiên làm việc (Session).
 Hiển thị cấu trúc thư mục như các URls.
- REST đưa ra một cấu trúc để người dùng có thể truy cập vào tài nguyên của
nó thông qua các URL, tài nguyên ở đây là tất cả những cái mà bạn có thể
gọi tên được (Video, ảnh, báo cáo thời tiết,..).
- Một vài nguyên tắc bổ sung để lưu ý trong khi nói về cấu trúc địa chỉ của
RESTful Web service là:
• Giấu các đuôi tài liệu mở rộng của bản gốc trong máy chủ (.jsp, .php, .asp),
nếu có, vì vậy bạn có thể giấu một số thứ mà không cần thay đổi địa chỉ
Urls.
• Để mọi thứ là chữ thường.
• Thay thế các khoảng trống bằng gạch chân hoặc hoặc gạch nối (một trong
hai loại).
• Tránh các chuỗi yêu cầu càng nhiều càng tốt.
• Thay vì sử dụng mã(404 Not Found) khi yêu cầu địa chỉ cho một phần
đường dẫn, luôn luôn cung cấp một trang mặc định hoặc tài nguyên như
một phản hồi.
 Truyền tải JavaScript Object Notation (JSON), XML hoặc cả hai.

Báo cáo đồ án chuyên ngành Công nghệ phần mềm


Trang 8


GVHD: Nguyễn Văn Hiệu

Khi Client gửi một yêu cầu tới web service nó thường được truyền tải dưới
dạng XML hoặc JSON và thông thường nhận về với hình thức tương tự.
- Đôi khi Client cũng có thể chỉ định kiểu dữ liệu nhận về mà nó mong muốn
(JSON, hoặc XML,..), các chỉ định này được gọi là các kiểu MINE, nó được
gửi kèm trên phần HEADER của request.
- Dưới đây là các kiểu MINE phổ biến thường sử dụng với REST service.
-

MIME-Type
JSON
XML
XHTML

Content-Type
application/json
application/xml
application/xhtml+xml

2.2. Angular
2.2.1. Giới thiệu
Angular là một nền tảng phát triển dành cho xây dựng ứng dụng web trên mobile và
desktop.
2.2.2. Các đặc tính của Angular
Đa nền tảng.

Tốc độ, hiệu năng và hiệu suất.
Hỗ trợ phát triển toàn diện.
2.2.3. Các thành phần chính trong Angular

Hình 1. Thành phần chính trong Angular

Module:
 Giúp tổ chức ứng dụng thành các khối chức năng liên kết.
 Mỗi ứng dụng phải có ít nhất một module, thường là AppModule.

Báo cáo đồ án chuyên ngành Công nghệ phần mềm

Trang 9


GVHD: Nguyễn Văn Hiệu

Component:
 Là cách thức chính xây dựng và xác định thành phần trên trang.
 Ứng dung sẽ được cấu trúc như một cây Component.
 Root Component là thành phần cao nhất chứa các thành phần còn lại.
Templates:
 Cho phép component render HTML trên trang web.
Metadata:
 Là dạng siêu dữ liệu cho Angular biết cách để thực thi một class.
 Các metadata decorators thường dùng
là @Component, @Injectable, @Input và @Output.
 @Component: lấy đối tượng cấu hình cần thiết với dữ liệu mà Angular cần
để tạo và thể hiện component và phần view tương ứng
 @Input/@Output: các Component sẽ giao tiếp với nhau thông qua input và

output. Nếu chạy trên browser thì input, output chính là các yếu tố thuộc tính
(properties) và sự kiện (events).
Data binding:
 Là cách thức tự đồng bộ hoá dữ liệu giữa template và component.
 Component gửi các giá trị, truyền các thuộc tính cho DOM hiển thị.
 DOM bắt các sự kiện của người dung như click.. để gửi về cho component
thực hiện.
 Two-way binding: giá trị từ component được hiển thị trên DOM và khi
người dung tác động, thay đổi giá trị này trên DOM thì trong component giá trị
sẽ được cập nhật.
Directive:
 Angular templates là dynamic. Khi Angular render ra templates, nó làm thay
đổi các phần tử DOM qua sự hướng dẫn của directive.
 Directive là một thành phần mở rộng HTML, hay nói cách khác là các thuộc
tính của các thẻ HTML mà Angular định nghĩa thêm.
 Có 2 kiểu directive:
Structual directive: làm thay đổi layout bằng cách thêm, sửa, xoá các phần tử
DOM như *ngFor, *ngIf.
Attribute directive: làm thay đổi giao diện hoặc hành vi của một phần tử đã
xuất hiện như ngModel, ngSwitch, ngStyle, ngClass.
Services:
 Cung cấp các phương thức lưu trữ dữ liệu xuyên suốt vòng đời của ứng
dụng.
 Cung cấp phương thức truy xuất dữ liệu một cách nhất quán.
Dependency injection:

Là một mô hình thiết kế phần mềm mà trong đó các thành phần được
đưa ra từ những phần phụ thuộc.

Angular sử dụng dependency injection để cung cấp services cho các

components mới cần khởi tạo service.

Báo cáo đồ án chuyên ngành Công nghệ phần mềm

Trang 10


GVHD: Nguyễn Văn Hiệu


Angular tạo liên kết mạnh mẽ, dễ dàng sử dụng khai báo Injection

2.3. Android
2.3.1. Giới thiệu
 Android là một hệ điều hành có mã nguồn mở dựa trên nền tảng Linux được
thiết kế dành cho các thiết bị di động có màn hình cảm ứng như điện thoại
thông minh và máy tính bảng.
 Android gồm 5 phần chính sau được chứa trong 4 lớp:
o Nhân Linux: Đây là nhân nền tảng mà hệ điều hành Android dựa vào
nó để phát triển. Đâu là lớp chứa tất cả các thiết bị giao tiếp ở mức
thấp dùng để điều khiển các phần cứng khác trên thiết bị Android.
o Thư viện: Chứa tất cả các mã cái mà cung cấp cấp những tính năng
chính của hệ điều hành Android, đôi với ví dụ này thì SQLite là thư
viện cung cấp việc hộ trợ làm việc với database dùng để chứa dữ liệu.
Hoặc Webkit là thư viện cung cấp những tính năng cho trình duyệt
Web.
o Android runtime: Là tầng cùng với lớp thư viện Android runtime cung
cấp một tập các thư viện cốt lỗi để cho phép các lập trình viên phát
triển viết ứng dụng bằng việc sử dụng ngôn ngữ lập trình Java.
Android Runtime bao gốm máy ảo Dalvik(ở các version < 4.4, hiện

tài là phiên bản máy ảo ART được cho là mạnh mẽ hơn trong việc xử
lý biên dịch). Là cái để điều khiển mọi hoạt động của ứng dụng
Android chạy trên nó(máy ảo Dalvik sẽ biên dịch ứng dụng để nó có
thể chạy(thực thi) được , tương tự như các ứng dụng được biên dịch
trên máy ảo Java vậy). Ngoài ra máy ảo còn giúp tối ưu năng lượng
pin cũng như CPU của thiết bị Android
o Android framework: Là phần thể hiện các khả năng khác nhau của
Android(kết nối, thông báo, truy xuất dữ liệu) cho nhà phát triển ứng
dụng, chúng có thể được tạo ra để sử dụng trong các ứng dụng của họ.
o Application: Tầng ứng dụng là tầng bạn có thể tìm thấy chuyển các
thiết bị Android như Contact, trình duyệt…Và mọi ứng dụng bạn viết
đều nằm trên tầng này.

Báo cáo đồ án chuyên ngành Công nghệ phần mềm

Trang 11


GVHD: Nguyễn Văn Hiệu

Hình 2. Các thành phần chính trong Android

2.3.2. Cơ chế hoạt động
2.3.2.1. Nguyên tắc hoạt động
Khi bạn biên dịch một ứng dụng, bộ SDK Android sẽ đóng gói ứng dụng của
bạn vào một file có hậu tố .apk. Một tếp APK chứa tất cả nội dung của một ứng
dụng Android và các thiết bị sử dụng nền tảng Android sẽ sử dụng chúng để cài đặt
ứng dụng vào hệ thống.
Sau khi được cài đặt vào một thiết bị, ứng dụng sẽ được đặt vào bên trong một
hộp cát bảo mật của chính nó:

 Vì hệ điều hành Android là một hệ thống Linux đa người dùng, trong đó mỗi
ứng dụng là một người dùng.
 Theo mặc định, hệ thống gán cho từng ứng dụng một ID người dùng Linux
duy nhất (ID chỉ được dùng bởi hệ thống và không xác định với người dùng).
Hệ thống sẽ gán quyền tất cả các tệp trong một ứng dụng sao cho ID người
dùng được gán cho ứng dụng đó thì mới có thể truy cập.
 Mỗi một tiến trình có máy ảo riêng của mình, vì thế mã của một ứng dụng sẽ
chạy độc lập với các ứng dụng khác.
2.3.2.2. Thành phần
 Hoạt động (Activity) biểu diễn một màn hình đơn với giao diện người dùng.
Hoạt động triển khai như một lớp con của Activity. Activity là một thành
phần ứng dụng cung cấp một màn hình mà với nó người dùng có thể tương
tác để thực hiện một điều gì đó. Ví dụ như quay số điện thoại, chụp ảnh, gửi
e-mail… Mỗi hoạt động được đưa vào một cửa sổ là nơi để vẽ giao diện
Báo cáo đồ án chuyên ngành Công nghệ phần mềm

Trang 12


GVHD: Nguyễn Văn Hiệu









người dùng, cửa sổ này thường lấp đầy màn hình nhưng cũng có thể nhỏ hơn

màn hình và nổi lên trên màn hình khác.
Ứng dụng bao gồm nhiều hoạt động liên kết lỏng lẻo với nhau. Thường thì
một hoạt động trong một ứng dụng, sẽ được quy định là hoạt động chính, nó
được trình bày trước khi ứng dụng khởi chạy lần đầu tiên. Sau đó, mỗi hoạt
động có thể bắt đầu hoạt động khác. Mỗi khi một hoạt động mới được khởi
tạo, hành động trước đó sẽ dừng lại, nhưng hệ thống vẫn giữ nguyên hoạt
động đó trong một ngăn xếp (back-stack). Khi một hoạt động mới được khởi
tạo, nó sẽ được đưa lên đỉnh ngăn xếp, chiếm lấy tiêu điểm của người dùng
và theo cơ chế vào sau ra trước của ngăn xếp.
Khi một hoạt động bị dừng vì hoạt động khác được khởi tạo, nó được thông
báo về sự thay đổi này thông qua vòng đời của hoạt động.
Dịch vụ (Service): là một thành phần chạy ngầm để thực hiện các thao tác
chạy lâu hoặc để thực hiện công việc việc cho các ứng dụng từ xa. Dịch vụ
không cung cấp một giao diện người dùng. Ví dụ, một ứng dụng có thể phát
nhạc dưới nền trong khi người dùng đang ở một ứng dụng khác hoặc nó có
thể tải ứng dụng qua mạng mà không chặn người dùng tương tác với hoạt
động. Dịch vụ triển khai như một lớp con của Service.
BroadcastsReceive là một thành phần có chức năng hồi đáp lại các thông báo
trên hệ thống, có nhiều broadcast receiver trên hệ thống như: pin yếu hoặc
pin đã tắt hoặc một bức ảnh đã được chụp.
Intent: Các loại thành phần trên sẽ được kích hoạt bằng một thông báo không
đồng bộ gọi là Intent. Intent sẽ gắn kết các thành phần với nhau lúc runtime.
Nó được khởi tạo từ một đối tượng Intent, nó định nghĩa một thông báo để
kích hoạt một thành phần. Đối với các Activity và Service Intent có chức
năng định nghĩa một hoạt động sẽ thực hiện và có thể chỉ định URI của dữ
liệu để hành động dựa trên đó.
AndroidManifest (bản kê khai): kê khai các thành phần trong ứng dụng.
Xác định quyền của người dùng mà ứng dụng yêu cầu, chẳng hạn truy cập
Intenet.
o Mô tả mức API tối thiểu mà ứng dụng yêu cầu dựa trên những API

mà ứng dụng sử dụng.
o Khai báo các tính năng phần cứng phần mềm được sử dụng hoặc yêu
cầu bởi hệ thống.
o Các thư viện API mà ứng dụng cần liên kết.
2.3.3. Môi trường phát triển

 Hệ điều hành:

Báo cáo đồ án chuyên ngành Công nghệ phần mềm

Trang 13


GVHD: Nguyễn Văn Hiệu

Ứng dụng Android có thể được lập trình trên cả 3 nền tảng hệ điều hành phổ
biến nhất hiện nay: Microsoft Windows, Linux và Mac.
 Java development kit (JDK):
JDK là một hệ tiêu chuẩn trong việc triển khai nền tảng Java, bao gồm các
trình thông dịch dịch và thư viện lớp.
 Android Software Development Kit (SDK):
SDK là bộ Công Cụ Phát Triển Cho Android. SDK này sẽ cung cấp cho
chúng ta một bộ các thư viện và công cụ cần thiết để chúng ta có thể build,
kiểm tra và debug cho các ứng dụng Android
 Android Studio:
Chức năng của Android Studio là cung cấp giao diện để tạo các ứng dụng và
xử lý phần lớn các công cụ quản lý file phức tạp đằng sau hậu trường. Ngôn
ngữ lập trình được sử dụng ở đây là Java và được cài đặt riêng trên thiết bị
của bạn. Android Studio rất đơn giản, bạn chỉ cần viết, chỉnh sửa và lưu các
dự án của mình và các file trong dự án đó. Đồng thời, Android Studio sẽ cấp

quyền truy cập vào Android SDK.

Báo cáo đồ án chuyên ngành Công nghệ phần mềm

Trang 14


GVHD: Nguyễn Văn Hiệu

CHƯƠNG 3.

PHÂN TÍCH THIẾT KẾ HỆ THỐNG

3.1. Phân tích và thiết kế hệ thống
3.1.1. Đặc tả chức năng của hệ thống
Diễn đàn Svdanang hiện chỉ đang quảng bá thương hiệu trên Facebook, vì vậy hiện
nay diễn đàn muốn tái xây dựng trang website cho chính các hoạt động của diễn đàn
và kèm theo đó là thông tin bên lề liên quan đến sinh viên, và Svdanang đang muốn
có một hệ thống gồm các chức năng chính như sau:
 Quản lý các thành viên trong diễn đàn
o Quản lý về số lượng thành viên diễn đàn.
o Quản lý về thông tin thành viên diễn đàn.
o Quản lý các thông tin thành viên đăng bài.
o Quản lý các cuộc họp của nội bộ thành viên diễn đàn.


Tạo ra một cổng thông tin cho người dùng bên ngoài
o Cung cấp các tin tức hoạt động về sinh viên.
o Cung cấp thông tin về các sự kiện đã đang và sẽ diễn ra được tổ chức bởi
diễn đàn Svdanang.

o Cung cấp thông tin về các dự án vị cộng đồng cần được gây quỹ ủng hộ.
o Đăng kí tham gia các hoạt động sự kiện do Svdanang tổ chức.
o Thanh toán trực tuyến để ủng hộ các dự án.

3.1.2. Phân tích đối tượng
Actor
Description
Admin
• Quản lý thành viên diễn đàn

Thành viên diễn đàn



Quản lý tài khoản người dùng



Quản lý lịch họp của diễn đàn



Quản lý bài đăng về sự kiện và dự án



Quản lý các giao dịch ủng hộ




Kiểm duyệt các bài viết



Quản lý thông tin người đăng kí tham gia sự kiện



Xem bài đăng về sự kiện, dự án gây quỹ



Tạo bài đăng về sự kiện, dự án gây quỹ



Xem lịch họp và báo vắng



Xem kế hoạch sự kiện



Ủng hộ dự án gây quỹ



Quản lý người đăng kí tham gia sự kiện


Báo cáo đồ án chuyên ngành Công nghệ phần mềm

Trang 15


GVHD: Nguyễn Văn Hiệu

Người dùng



Đăng kí tham gia tình nguyện viên, người chơi



Ủng hộ dự án vì cộng đồng trực tuyến



Xem tin tức về các hoạt động sinh viên



Xem các dự án cộng đồng

3.1.3. Hệ thống sơ đồ Use-case
Sơ dồ sau đây cung cấp một cái nhìn tổng quan về các nhóm chức năng, tác nhân
tham gia:
3.1.3.1. Admin diễn đàn


Hình 3. Sơ dồ Use case Admin của Svdanang

Báo cáo đồ án chuyên ngành Công nghệ phần mềm

Trang 16


GVHD: Nguyễn Văn Hiệu

3.1.3.2. Thành Viên diễn đàn
3.1.3.2.1. Trưởng ban

Hình 4. Sơ đồ Use case trưởng ban

3.1.3.2.2. Thành viên các ban

Hình 5. Sơ đồ Use case thành viên diễn đàn

Báo cáo đồ án chuyên ngành Công nghệ phần mềm

Trang 17


GVHD: Nguyễn Văn Hiệu

3.1.3.3.

Người dùng

Hình 6. Sơ đồ Use case người dùng


3.1.4. Cơ sở dữ liệu

Báo cáo đồ án chuyên ngành Công nghệ phần mềm

Trang 18


GVHD: Nguyễn Văn Hiệu

Hình 7. Cơ sở dữ liệu

Báo cáo đồ án chuyên ngành Công nghệ phần mềm

Trang 19


GVHD: Nguyễn Văn Hiệu

CHƯƠNG 4.

XÂY DỰNG CHƯƠNG TRÌNH

4.1. Xây dựng hệ thống
4.1.1. Phần Back-End
4.1.1.1.

Triển khai ứng dụng với Maven project.

Maven là công cụ quản lý và thiết lập tự động 1 dự án phần mềm. Maven

hỗ trợ việc tự động hóa các quá trình tạo dự án ban đầu, thực hiện biên dịch,
kiểm thử, đóng gói và triển khai sản phẩm.
Trong mỗi project Maven tạo ra một file .pom, trong file này định nghĩa ra
những task như task khi chạy test, task khi build và khi chạy Maven sẽ dựa vào
những định nghĩa này để thao tác với project.
<groupId>bkdn.svdanang</groupId>
<artifactId>svdanang</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>svdanang</name>
<description>Dự án website Sinh Viên Đà
Nẵng</description>
jar</packaging>

<groupId>, <artifactId>, <version> bộ ba thông tin để
mô tả tên, version của project.
định nghĩa định dạng khi đóng gói thành phần, có
thể là jar, war, ear… jar (đóng gói thành .jar )
<dependency> nơi khai báo các thư viện sử dụng trong dự án.
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-datajpa</artifactId>
</dependency>

4.1.1.2.

Các đối tượng trả về.

o Class ApiResponse: dùng cho việc trả về các phản hồi trạng thái từ
Server.


Báo cáo đồ án chuyên ngành Công nghệ phần mềm

Trang 20


GVHD: Nguyễn Văn Hiệu

o Class ApiResponseDTO: dùng cho việc trả về các phản hồi trạng thái
từ Server có đối tượng đính kèm.

4.1.1.3.





Xử lý ngoại lệ.

class FileStorageException extends RuntimeException
xử lý ngoại lệ khi thao tác với File.
class CustomizedResponseEntityExceptionHandler
extends ResponseEntityException xử lý ngoại lệ khi đăng
nhập không thành công, truy cập bị từ chối, phương thức không được
chấp nhận, BAD REQUEST.
class ResourceNotFoundException extends
RuntimeException xử lý ngoại lệ khi khi không tìm thấy Resource.

4.1.1.4.

JPA.


o Tạo ra các entity được liên kiết với Database thông qua các annotation
trong thư viện javax.persistence.
o Hổ trợ việc tạo các câu truy vấn đơn giản khi extends
JpaRepository<Entity, Long>
4.1.1.5.

Thực hiện các câu truy vấn.

o JPQL:
o NATIVE:

Báo cáo đồ án chuyên ngành Công nghệ phần mềm

Trang 21


GVHD: Nguyễn Văn Hiệu

4.1.1.6.

Quá trình CRUD với 4 phương thức API Mapping.

Hình 8. Quá trình CRUD với 4 phương thức API Mapping

4.1.1.7.

Thanh toán bằng Paypal SDK.

Hình 9. Thanh toán bằng Paypal SDK


Thực hiện:

-

/api/paypal/make/payment: Thực hiện trung gian việc tạo đối
tượng Payment và gởi token và đường dẫn url để người dung
tiếp tục quá trình ủng hộ( Tương ứng quá trình 1 và 2).

Báo cáo đồ án chuyên ngành Công nghệ phần mềm

Trang 22


GVHD: Nguyễn Văn Hiệu

-

4.1.1.8.

/api/paypal/complete/payment/{projectId}: Thực hiện việc xác
nhận ủng hộ, bằng việc nhận PayerId, PaymentId bên phía
Paypal trả về và thực hiện lưu thông tin người ủng hộ vào
Database.( Tương ứng quá trình 5 và 6).
Gọi api tiền tệ từ bên phía thứ 3.

API quy đổi tiền tệ từ USD -> VND và VND -> USD tại :
/>=a5e56b418118c07efd12

Thao tác với Json nhận được từ phía thứ 3 để lấy được tỉ giá giữa 2 đơn vị tiền

tệ:

4.1.1.9.

JWT framework .

JSON Web Token (JWT) là 1 tiêu chuẩn mở (RFC 7519) định nghĩa
cách thức truyền tin an toàn giữa các thành viên bằng 1 đối tượng
JSON. Thông tin này có thể được xác thực và đánh dấu tin cậy nhờ vào
"chữ ký" của nó. Phần chữ ký của JWT sẽ được mã hóa
lại bằng HMAC hoặc RSA.

Báo cáo đồ án chuyên ngành Công nghệ phần mềm

Trang 23


GVHD: Nguyễn Văn Hiệu

Hình 10. JWT framework

Những đặc điểm nổi bật của JWT:
1. Kích thước nhỏ: JWT có thể được truyền thông qua URL, hoặc qua
giao thức POST, hay nhét vào bên trong phần HTTP Header. Kích
thước nhỏ hơn ứng với công việc truyền tải sẽ nhanh hơn. Dưới đây
là cách thức truyền token vào trong HTTP Header sử
dụng Bearer Schema
Authorization: Bearer <token>
2. Khép kín: Phần Payload (hiểu nôm na là khối hàng) chứa toàn bộ
những thông tin mà chúng ta cần tới, ví dụ như thông tin của người

dùng (thay vì phải truy vấn cơ sở dữ liệu nhiều lần)
Hoạt động của JWT:

Báo cáo đồ án chuyên ngành Công nghệ phần mềm

Trang 24


×