HỌC VIỆN CƠNG NGHỆ BƯU CHÍNH VIỄN THƠNG
KHOA CƠNG NGHỆ THÔNG TIN 1
****************
BÁO CÁO MÔN HỌC
THỰC TẬP CƠ SỞ
Đề tài: Ứng dụng ToDo-List
Giảng viên: Đỗ Thị Bích Ngọc
Sinh viên:
Mã sinh viên:
SĐT:
Hà Nội – 2023
0
Mục lục
I.
Giới thiệu bài tốn.............................................................................................................................. 2
II.
Bản kế hoặc từng tuần....................................................................................................................3
III.
Tìm hiểu cơng nghệ.........................................................................................................................4
1.
Tìm hiểu flutter framework........................................................................................................... 4
2.
Tìm hiểu spring boot........................................................................................................................5
IV.
V.
Kết quả đã làm được.................................................................................................................... 11
Những việc chưa làm được...............................................................................................................11
VI.
Đặc tả............................................................................................................................................. 12
2.
Mô tả chức năng............................................................................................................................13
VII.
Class diagram................................................................................................................................23
VIII.
IX.
1.
X.
Thiết kế cơ sở dữ liệu................................................................................................................24
Kiến trúc code............................................................................................................................... 24
Kiến trúc code backend................................................................................................................24
Triển khai.......................................................................................................................................... 26
1.
Backend......................................................................................................................................... 27
1
I.
Giới thiệu bài tốn
− Ứng dụng quản lý cơng việc To-Do List được thiết kế để hỗ trợ người dùng trong
việc quản lý và theo dõi các dự án, nhiệm vụ và ghi chú.
− Ứng dụng này sử dụng phương pháp luận Pomodoro, một phương pháp quản lý
thời gian phổ biến, nhằm giúp người dùng tập trung và nâng cao năng suất làm
việc.
− Tính năng của ứng dụng cho phép người dùng thêm, sửa đổi và xóa các dự án,
nhiệm vụ và ghi chú.
− Mỗi dự án có thể chứa nhiều nhiệm vụ và nhiều ghi chú.
− Ngoài ra, mỗi nhiệm vụ được trang bị với một số lượng Pomodoro, một đơn vị
thời gian được sử dụng để đánh giá thời gian cần thiết để hồn thành nhiệm vụ đó.
− Khi người dùng bắt đầu một nhiệm vụ, họ có thể chọn phương pháp luận
Pomodoro để theo dõi thời gian. Mỗi nhiệm vụ chỉ có thể chọn tối đa 5 Pomodoro
để cơng việc có thể đạt hiệu quả cao nhất, bởi nếu cần nhiều thời gian hơn thì nên
chia nhỏ thành nhiều nhiệm vụ ngắn.
− Trong ứng dụng, hiển thị thời gian đã sử dụng cho mỗi Pomodoro và thời gian cịn
lại cho nhiệm vụ hiện tại.
− Ngồi ra, người dùng có thể tạm dừng và tiếp tục nhiệm vụ bất cứ lúc nào, và ứng
dụng sẽ tự động cập nhật thời gian đã sử dụng.
− Ứng dụng cũng cung cấp các chức năng nhắc nhở giúp người dùng không bỏ sót
bất kỳ nhiệm vụ nào trong danh sách To-Do List.
− Người dùng có thể thiết lập thơng báo nhắc nhở cho các nhiệm vụ trong danh sách
To-Do List để đảm bảo rằng họ sẽ khơng qn hồn thành nhiệm vụ đó.
− Ngồi ra, ứng dụng cũng cung cấp cho người dùng khả năng tùy chỉnh và điều
chỉnh thông tin về dự án, nhiệm vụ và ghi chú một cách dễ dàng.
2
− Tính năng này giúp người dùng linh hoạt trong việc quản lý và sắp xếp các cơng
việc của mình.
− Tính năng đặc biệt của ứng dụng là khả năng tính tốn số lượng Pomodoro cần
thiết để hồn thành nhiệm vụ.
− Điều này giúp người dùng lên kế hoạch và quản lý thời gian một cách hiệu quả
hơn, từ đó nâng cao hiệu suất làm việc.
− Trong tổng quan, ứng dụng quản lý công việc To-Do List với phương pháp luận
Pomodoro là một cơng cụ hữu ích cho người dùng quản lý và theo dõi các dự án,
nhiệm vụ và ghi chú.
− Sự kết hợp giữa phương pháp luận Pomodoro và tính năng nhắc nhở giúp người
dùng tập trung và nâng cao năng suất làm việc, từ đó nâng cao hiệu quả làm việc
của người dùng.
II.
Tuần
Bản kế hoặc từng tuần.
Kế hoạch
Update 06/03/2022
sửa kế hoạch tuần
4 thêm kế hoạch
làm lại tuần 3, lý do
làm chưa đủ, làm
sai
Update 14/03 thay đổi
kế hoạch tuần 6 7 8 9
10 vì xác định nhầm kế Update 19/03 thay đổi
hoạch khơng thể dùng kế hoạch vì ước tính
firebase trước khi viết
thời gian khơng đủ
api nếu làm trước sẽ
mất cơng làm lại
Tìm hiểu Figma
để thiết kế giao
diện
Tuần Xác định các thực
3
thể
Quan hệ vẽ ERD
Xác định các
bảng.
Tuần
Thiết kế giao diện. thêm làm lại tuần 3
4
Chuyển phần thêm
sửa xóa project thêm
sửa xóa note thêm
sửa xóa task trong
project sang tuần 6
làm cùng với dựng
data base postgresql
Code giao diện và
fake data.
Tuần
Đăng kí đăng
5
nhập, thêm sửa
xố project, thêm
sửa xố note,
3
Tuần
6
Tuần
7
Tuần
8
Tuần
9
thêm sửa xố task
trong project.
- Xử lý thơng báo
sử dụng firebase
cloud messaging
Tìm hiểu và dựng
db postgresql
Tìm hiểu spring,
restful api.
Tìm hiểu authen
spring phân
quyền.
Tìm hiểu và dựng db
postgresql
Tìm hiểu spring, restful
api.
Tìm hiểu authen spring
phân quyền.
Viết API cho app.
- Xử lý thông báo sử
dụng firebase cloud
messaging
Tuần
Viết API cho app.
10
Tuần
11
Tuần
12
Thêm code giao diện
Ghép API vào
app.
Viết báo cáo.
III. Tìm hiểu cơng nghệ.
1. Tìm hiểu flutter framework.
− Flutter là một framework dựa trên ngôn ngữ lập trình dart, hỗ trợ lập trình
mobile app nhiều nền tảng (cross-platform) chỉ trên 1 code base.
− Dựng view Flutter.
o Tất cả các thành phần view trong một ứng dụng flutter gọi là widget.
o Để tạo ra 1 màn hình ta sử dụng widget Scaffold chứa các thành phần
như:
▪ AppBar
▪ Body
▪ FloatingActionButton.
▪ …
o Ngồi ra cịn có các widget khác thì chia thành 2 phần là widget để
định nghĩa bố cục và widget để hiển thị nội dung.
o Widget định nghĩa bố cục như:
▪ Column: đặt các thành phần view trong Column theo chiều dọc.
▪ Row: đặt các thành phần view trong Row theo chiều ngang.
▪ Stack: cho phép các thành phần view nằm đè lên nhau.
o Widget để hiển thị nội dung như:
▪ Text: hiển thị nội dung chữ.
▪ Button: cho phép hành động click.
▪ …
4
−
−
−
−
Scaffold widget.
Container widget.
Row và column.
Text widget
2. Tìm hiểu spring boot.
−
−
−
−
−
−
−
−
−
−
−
Spring boot là một framework trong java framework.
Là một framework mạnh mẽ và phổ biến, giúp rút ngắn thời gian phát
triển, giảm sự rườm rà và tăng tính ổn định.
Các annotation trong Spring Boot
@Component
o Đánh dấu bên trên Class để Spring biết nó là 1 Bean
o ( SB khi chạy sẽ dị tìm tồn bộ các Class cùng cấp/ ở trong Packet
thấp hơn so với Class mà bạn cung cấp cho Spring. Trong q trình
dị tìm này, khi gặp 1 Class đánh dấu như trên, nó sẽ tạo ra 1 Instance
và đưa vào ApplicationContext để quản lí và các Bean được quản lí ở
đây đều là dạng Singleton )
@ComponentScan("file1")
@ComponentScan( {"file1", "file2"} )
o SpringBoot sẽ chạy và dị tìm tồn bộ các Class cùng cấp/ ở bên
trong các Package thấp hơn và tạo ra Bean từ các Class tìm thấy.
@SpringBootApplication(scanBasePackages = "file1")
@SpringBootApplication(scanBasePackages = {"file1", "file2"} )
o Ngồi ra ta có thể Config trực tiếp nó bên trong
@SpringBootApplication Annotation
@DeleteMapping("{id}")
o Response delete(@PathVariable("id") Long id){
@GetMapping(“/api/v1/user/{id}”)
o Response getById(@PathVariable String id) {
o Ví dụ trên sử dụng @PathVariable như 1 phần của URI, được đại
diện bởi giá trị của {id}
o Response get(@PathVariable(required = false) String id) {
o required = false: tức là khơng bắt buộc phải có id, thì sẽ theo path ở
trên đã định nghĩa
@RequestBody CalculateExtraPointInputDto inputDto
o @RequestBody + @ResponseBody:Dùng để ánh xạ dữ liệu truyền từ
Client-Server và ngược lại
o @RequestBody chỉ rằng là 1 Method Param buộc phải ( bind ) trong
Body của HTTP request
o Annotation này giúp chuyển đổi Body của HTTP request thành các
Domain Object ( đối tượng miền POJO )
o Kiểu dữ liệu cũng phải trùng khớp với Domain Class
o ResponseBody dùng để báo với Controller rằng Java Object trả về
cho Client tự động ánh xạ sang JSON và chuyển vào HttpResponse
5
o Ta sẽ đặt @ResponseBody trên method trả về
− @Autowired
o Đánh dấu cho Spring biết rằng sẽ tự động Inject Bean tương ứng vào
vị trí đánh dấu
o Sau khi tìm 1 Class được Annotation tương đương @Component, quá
trình Inject Bean xảy ra như sau:
● Nếu Class đó KHƠNG có:
Constructor + Setter, sử dụng Java
Reflection để đưa đối tượng vào thuộc tính có đánh dấu
@Autowired
● Nếu có hàm ConstructorL: sẽ Inject Bean vào bởi tham số của
hàm
● Nếu có hàm Setter:sẽ Inject Bean vào bởi tham số của hàm
o Tất cả các Bean được quản lí trong ApplicationContext đều chỉ được
tạo ra 1 lần duy nhất và khi có Class yêu cầu @Autowired thì sẽ lấy
đối tượng có sẵn trong ApplicationContext để Inject vào.
− @Controller
− @Service
− @Repository
o 3 Annotation này để giúp đánh dấu các tầng với nhau
o Bản chất thì @Service = @Repository = @Component, nên có thể
thay đổi cho nhau nhưng mà nên đặt theo đúng tên tầng để dễ dàng
sửa chữa, code tường minh hơn.
− @RestController
o Là sự kết hợp của @Controller + @ResponseBody ( tức ta sẽ không
cần thêm @ResponseBody lên trên của method )
− @Configuration
o Đánh dấu trên 1 Class, cho phép SB biết được đây là nơi định nghĩa
ra các Bean.
o Cũng là 1 @Component, chỉ khác ở ý nghĩa sử dụng.
o Ngồi đi tìm các Class đánh dấu @Component mà SB cịn tìm các
Class đánh dấu @Configuration và tạo ra đối tượng này -> tìm
method đánh dấu @Bean trong đối tượng vừa tạo ra, thực hiện gọi
method có đánh dấu đó để lấy ra các Bean và đưa vào Context
− @Bean
o Đánh dấu trên các Method, cho phép SB biết được rằng đây là Bean
và đưa vào Context.
o Nó nằm trong Class có đánh dấu là @Configuration
o Ngoài ra nếu Method được đánh dấu này chứa tham số truyền vào,
SB tự động Inject các Bean đã có trong Context vào làm tham số.
− Controller layer
6
o Controller layer đại diện cho việc xử lí Incoming HTTP Request +
Response về và 2 @Annotation trên giúp ta mark cái class phục vụ
mục đích sử dụng Controller Layer
o
− Phần khoanh là phần xử lý controller.
o B1: Request được nhận bởi DispatcherServlet
o DispatcherServlet chịu trách nghiệm xử lí mọi Request tới + map
Request tới Controller method
− @RequestBody
o @Annotation này giúp map HTTP Request Body -> Java object một
cách tự động
o Object mà đi kèm với @Annotation này sẽ nhận được giá trị sau khi
mapping từ Body -> Java object
o ( Tuy nhiên phải đảm bảo rằng Type của object gán với @Annotation
này phải corresponse với JSON được send cùng với HTTP Request )
− @ResponseBody
o @Annotation nói với Controller rằng object được trả về tự động bằng
cách map Java object -> JSON/ HttpResponse object
− @RestController
o @Annotation này là sự kết hợp giữa 2 Annotation @Controller và
o @RequestMapping
o @Annotation này là 1 class-level + method-level @Annotation giúp
xử lí Request tới + map Request này tới Controller method để xử lí
o Nó chứa Path + Header + HTTP Method
7
−
−
−
−
−
−
−
o Sử dụng @Annotation kết hợp với các @Annotation khác như là:
@RequestParam
o Chúng ta có thể code hết vào Controller layer là đã có thể dựng lên
một web server rồi. Nhưng để giảm độ phức tạp và dễ dàng bảo trì
hoặc nâng cấp thì thơng thường sẽ chia thành 3 layer
Controller layer (đã nói ở trên)
Service layer
Repository layer
Service layer
o Là nơi xử lý các business logic xử lý data từ ngoài vào và từ trong ra.
o Ngoài là từ client gửi lên
o Trong là từ database
o Service sẽ nhận Input Dto từ controller thông qua param của các
method và map sang Entity sau đó thực hiện xử lý các logic thơng
qua entity như lưu sửa xóa lấy ra từ database.
o Sau đó sẽ trả ra Output Dto cho controller để trả về response cho
client.
o Class Mapper sẽ giúp convert Dto sang entity và ngược lại.
Repository layer
o Là nơi giao tiếp với database.
o Nhận các yêu cầu từ service layer và lấy dữ liệu ra sau đó trả lại cho
service layer để xử lý.
ORM
o ORM ( Object relational Mapping ) là 1 quá trình mapping dữ liệu từ
Java object <-> CSDL và ngược lại
o ORM giúp mình ánh xạ các Tables, Columns, DataType, Table
Relation, ... trong DB thành các Class và các attributes trong Java
o ORM giúp cho dev tương tác với DB thông qua các object đã
mapping mà không cần biết tới kiểu DB, type của DB -> giúp làm
việc được với nhiều kiểu DB, dễ dàng thay đổi DB hơn, các câu lệnh
SQL không phụ thuộc vào loại DB
Hibernate
o Trước khi Hibernate ra đời thì ta thao tác với CSDL thơng qua JDBC
và theo thời gian thì JDBC bộc lộ nhiều điểm yếu như là ( boilder
code, khi đổi CSDL thì viết lại code, giao tiếp giữa các Table khó,
khơng có tính OOP,... )
o Hibernate là 1 framework, là 1 thư viện ORM ( Object Relational
Mapping ) giúp các Devs viết application có thể map các object tới
CSDL + hỗ trợ OOP với CSDL
o Có thể hiểu Hibernate là 1 layer trung gian giữa Application và
Database, và chúng ta sẽ giao tiếp với Hibernate thay vì với DB
8
o Như ta thấy ở hình trên chính là luồng của một ứng dụng.
o Bát đầu khi client gửi request lên server.
o Khi request vào dispathcher nó sẽ đưa xuống controller để xử lý
request
o Từ controller đi xuông service để thực hiện các xử lý logic.
o Service sẽ gọi xuống Persistence có thể hiểu là Repository layer để
thực hiện các thao tác xuống database và trả về kết quả.
o Và để giao tiếp với Hibernate, chúng ta sẽ tạo ra Class đại diện cho 1
Table, và mọi dữ liệu trong Database sẽ được Hibernate bind vào
Class đó cho chúng ta
− @Entity
o @Annotation này là 1 class-level annotation, thường đặt trên 1
POJO để đại diện cho dữ liệu có thể persistence trong DB.
o 1 Entity đại diện cho 1 Table được lưu trữ trong DB + mọi instance
của Entity đại diện cho 1 row trong Table
o Ngoài ra để sử dụng @Annotation này ta phải chắc rằng POJO này
phải có No-arg Constructor và 1 Primary key
− @Table
o @Annotation này cho phép chúng ta chỉ định Table được sử dụng để
mapping tới Entity này
− @Id
o @Annotation này là một attribute-level annotation và đặt trên 1
attribute đại diện cho Primary key của Table
− @GeneratedValue
o Đây là 1 @Annotation đi kèm với cung cấp các “auto generation
strategies” cho giá trị của Primary Key
o Persistence Layer
o Persistence Layer bao gồm 3 thành phần chính
o Entity Classes: define data model của Application, sử dụng
@Annotation của JPA để mapping giữa Java object và DB Table
o Data Access Object (DAO): đại diện cho việc store + retrive data với
DB, sử dụng JPA đã cung cấp 1 set các Interface + @Annotation để
làm công việc này
o Database config: là việc config trong application.properties bao
gồm các URL DB, username, password, driver
Restful API
− API ( Application Programming Interface )
9
−
−
o Nhiệm vụ giúp Application/ thiết bị/ ... có thể giao tiếp với nhau ( dù
không cùng 1 ngôn ngữ/ gốc ..), cho phép chúng connect với nhau
API có thể từ bên thứ 3, hoặc là từ 1 hoặc 2 bên kia
o API tức là giao tiếp bằng dữ liệu (data)
REST ( Representational State Transfer )
o Là 1 kiến trúc cho phép thiết bị hoạt động trên mạng có thể giao tiếp
với nhau thông qua Web
o Client-Server: Server lắng nghe trạng thái của Client
o Stateless: tình trạng phi trạng thái, tức sẽ không lưu dữ liệu của
Client lên Server. Điều này có nghĩa rằng sau khi Client gửi dữ liệu
lên Server, Server thực thi xong thì quan hệ của chúng sẽ bị cắt đứt.
Điều đó làm Server và Client được hoạt động độc lập, thiết kế Server
trở nên đơn giản hơn
o Cache: thường là Cache ở Client ( có thể là ở Server nhưng ít ):
những lần Request sau sẽ nhanh, các Response được lấy ra từ Cache,
giúp Server giảm tải xử lí Request + Client nhận được Response
nhanh hơn
o Uniform Interface: Tạo ra các quy ước chuẩn để giao tiếp giữa các
thành phần trong hệ thống, đơn giản hóa việc Client tương tác với
Server
o Layer System:
phân lớp hệ thống, hệ thống REST chia tách các
thành phần hệ thống theo từng lớp, mỗi lớp chỉ sử dụng ở dưới nó và
giao tiếp với lớp ở ngay trên nó mà thơi
o Hệ thống REST tập trung vào xử lí tài ngun, Resource là bất cứ
cái gì mà bạn có thể gọi tên được như video, ảnh, ... các tài nguyên
này giúp ta định nghĩa được các Service trong hệ thống, kiểu thơng
tin nó trả về, hành vi xử lí thơng tin của nó, ... )
o Thơng thường nhắc tới REST là nhắc tới HTTP vì hệ thống sử dụng
HTTP Protocol
⇨ Là 1 kiến trúc, cung cấp chuẩn cho thiết bị giao tiếp với nhau thông
qua Web
Restful
o Xuất phát từ Rest + 4 method: GET/ POT/ PUT/ DELETE để quản lí
Resource
o Chỉ có 1 đường dẫn duy nhất + các tham số phía sau + HTTP
method để control được Resource đó
10
−
o Phát triển từ Rest + đường dẫn để quản lí Resource
Restful API
o Là tiêu chuẩn dùng trong việc thiết kế các API cho application để
tiện cho việc quản lí các Resource, chú trọng vào tài nguyên hệ
thống + được truyền tải qua HTTP
−
IV.
o RESTFUL nhưng trả về data
CRUD
o create/ read/ update/ delete
Kết quả đã làm được.
− Sử dụng java spring boot làm backend cho ứng dụng gồm các chức năng:
o Đăng nhập, đăng ký, cập nhật thông tin người dùng.
o CRUD Project.
o CRUD Task.
o CRUD Note.
− Sử dụng flutter framework làm ứng dụng di động ghép các api từ backend để giao
tiếp với cơ sở dữ liệu gồm các tính năng:
o Đăng nhập, đăng xuất, đăng ký, xem thơng tin người dùng, cập nhật thông
tin người dùng.
o CRUD Project.
o CRUD Task.
o CRUD Note.
o Làm nhiệm vụ với phương pháp luận pomodoro.
V.
Những việc chưa làm được.
11
− Triển khai thông báo đẩy khi gần đến hạn một cơng việc.
o Lý do: Sau khi tìm hiểu thì em đã biết được Firebase cloud messing không
cho phép đẩy thông báo theo lịch đã lên trước, nếu muốn triển khai cần phải
sử dụng cronjob, nhưng vì thời gian có hạn và độ phức tạp của công việc
nên em đã không thể triển khai.
VI.
Đặc tả.
1. Use case diagram.
12
2. Mô tả chức năng.
UC ID
TD001
Tên chức năng
Xem danh sách project.
Tác nhân
User
13
Điều kiện trước
Người dùng được phân quyền và đăng nhập vào ứng dụng
thành công.
Luồng chức
1. Người dùng đăng nhập vào ứng dụng.
năng
2. Người dùng chuyển sang tab project.
3. Ứng dụng hiển thị danh sách tất cả các project hiện có
của người dùng.
UC ID
TD002
Tên chức năng
Xem chi tiết project.
Tác nhân
User
Điều kiện trước
Người dùng được phân quyền và đăng nhập vào ứng dụng
thành công.
Luồng chức
1. Người dùng đăng nhập vào ứng dụng.
năng
2. Người dùng chuyển sang tab project.
3. Ứng dụng hiển thị danh sách tất cả các project hiện có
của người dùng.
4. Người dùng chọn một project muốn xem.
5. Ứng dụng hiển thị thông tin chi tiết của project kèm
các task của project.
UC ID
TD003
Tên chức năng
Tạo project.
Tác nhân
User
Điều kiện trước
Người dùng được phân quyền và đăng nhập vào ứng dụng
thành công.
Luồng chức
1. Người dùng đăng nhập vào ứng dụng.
năng
2. Người dùng ấn vào floating action button.
14
3. Ứng dụng hiện lên 3 lựa chọn tạo project, tạo task,
tạo note.
4. Người dùng chọn nút tạo project.
5. Ứng dụng chuyển đến màn hình tạo project mới.
6. Người dùng nhập thông tin project.
7. Người dùng ấn nút lưu.
8. Ứng dụng kiểm tra dữ liệu người dùng nhập vào và
lưu lại.
UC ID
TD004
Tên chức năng
Chỉnh sửa project.
Tác nhân
User
Điều kiện trước
Người dùng được phân quyền và đăng nhập vào ứng dụng
thành công.
Luồng chức
1. Người dùng đăng nhập vào ứng dụng.
năng
2. Người dùng chuyển sang tab project.
3. Ứng dụng hiển thị danh sách các project.
4. Người dùng chọn nút show more trên góc phải trên
cùng của một item project.
5. Người dùng chọn edit.
6. Ứng dụng chuyển đến màn hình chỉnh sửa thơng tin
project.
7. Người dùng chỉnh sửa thông tin project.
8. Người dùng ấn nút lưu.
9. Ứng dụng kiểm tra dữ liệu người dùng nhập vào và
lưu lại.
Luồng thay thế
4a. Người dùng ấn vào project muốn sửa.
15
4a.1. Ứng dụng chuyển đến màn hình thơng tin chi tiết
project.
4a.2. Người dùng chọn nút show more ở góc trái trên
cùng màn hình
Use case tiếp tục bước 5.
UC ID
TD005
Tên chức năng
Xóa project.
Tác nhân
User
Điều kiện trước
Người dùng được phân quyền và đăng nhập vào ứng dụng
thành công.
Luồng chức
1. Người dùng đăng nhập vào ứng dụng.
năng
2. Người dùng chuyển sang tab project.
3. Ứng dụng hiển thị danh sách các project.
4. Người dùng chọn nút show more trên góc phải trên
cùng của một item project.
5. Người dùng chọn delete.
6. Ứng dụng xóa project khỏi cơ sở dữ liệu
UC ID
TD006
Tên chức năng
Xem danh sách task.
Tác nhân
User
Điều kiện trước
Người dùng được phân quyền và đăng nhập vào ứng dụng
thành công.
Luồng chức
1. Người dùng đăng nhập vào ứng dụng.
năng
2. Ứng dụng hiển thị danh sách task có trong ngày hơm
nay, tối đa 5 task.
16
3. Người dùng ấn vào see all để xem tất cả.
4. Ứng dụng hiển thị tất cả các task có trong ngày hôm
nay.
Luồng thay thế
3a. Người dùng chọn tab project.
3a.1. Ứng dụng hiển thị danh sách các project.
3a.2. Người dùng chọn một project.
3a.3. Ứng dụng hiển thị danh sách task trong project.
3b. Người dùng chọn tab calendar.
3b.1 Ứng dụng hiển thị danh sách task có trong ngày
đang chọn.
3b.2. Người dùng chuyển ngày.
3b.3. Ứng dụng cập nhật danh sách task theo ngày chọn.
UC ID
TD007
Tên chức năng
Xem chi tiết task.
Tác nhân
User
Điều kiện trước
Người dùng được phân quyền và đăng nhập vào ứng dụng
thành công.
1. Người dùng đăng nhập vào ứng dụng.
Luồng chức
năng
2. Người dùng chọn task cần xem chi tiết.
3. Ứng dụng chuyển đến màn hình thơng tin chi tiết
task.
UC ID
TD008
Tên chức năng
Tạo task.
Tác nhân
User
Điều kiện trước
Người dùng được phân quyền và đăng nhập vào ứng dụng
thành công.
17
Luồng chức
1. Người dùng đăng nhập vào ứng dụng.
năng
2. Người dùng ấn vào floating action button.
3. Ứng dụng hiện lên 3 lựa chọn tạo project, tạo task,
tạo note.
4. Người dùng chọn nút tạo task.
5. Ứng dụng chuyển đến màn hình tạo task mới.
6. Người dùng nhập thông tin task.
7. Người dùng ấn nút lưu.
8. Ứng dụng kiểm tra dữ liệu người dùng nhập vào và
lưu lại.
UC ID
TD009
Tên chức năng
Chỉnh sửa task.
Tác nhân
User
Điều kiện trước
Người dùng được phân quyền và đăng nhập vào ứng dụng
thành công.
Luồng chức
1. Người dùng đăng nhập vào ứng dụng.
năng
2. Người dùng tìm task cần chỉnh sửa.
3. Người dùng chọn nút show more trên góc phải trên
cùng của một item task.
4. Người dùng chọn edit.
5. Ứng dụng chuyển đến màn hình chỉnh sửa thơng tin
task.
6. Người dùng chỉnh sửa thông tin task.
7. Người dùng ấn nút lưu.
8. Ứng dụng kiểm tra dữ liệu người dùng nhập vào và
lưu lại.
18
Luồng thay thế
3a. Người dùng ấn vào task muốn sửa.
3a.1. Ứng dụng chuyển đến màn hình thơng tin chi tiết
task.
3a.2. Người dùng chọn nút show more ở góc trái trên
cùng màn hình
Use case tiếp tục bước 4.
UC ID
TD010
Tên chức năng
Xóa task.
Tác nhân
User
Điều kiện
Người dùng được phân quyền và đăng nhập vào ứng dụng
trước
thành công.
Luồng chức
1. Người dùng đăng nhập vào ứng dụng.
năng
2. Người dùng tìm đến task cần xóa.
3. Người dùng chọn nút show more trên góc phải trên
cùng của một item task.
4. Người dùng chọn delete.
5. Ứng dụng xóa task khỏi cơ sở dữ liệu
UC ID
TD011
Tên chức năng
Xem danh sách note.
Tác nhân
User
Điều kiện trước
Người dùng được phân quyền và đăng nhập vào ứng dụng
thành công.
Luồng chức
5. Người dùng đăng nhập vào ứng dụng.
năng
6. Ứng dụng hiển thị danh sách tất cả các note, tối đa 5
task.
19
7. Người dùng ấn vào see all để xem tất cả.
8. Ứng dụng hiển thị tất cả các note của người dùng.
UC ID
TD012
Tên chức năng
Xem chi tiết note.
Tác nhân
User
Điều kiện trước
Người dùng được phân quyền và đăng nhập vào ứng dụng
thành công.
1. Người dùng đăng nhập vào ứng dụng.
Luồng chức
năng
2. Người dùng chọn note cần xem chi tiết.
3. Ứng dụng chuyển đến màn hình thơng tin chi tiết
note.
UC ID
TD013
Tên chức năng
Tạo note.
Tác nhân
User
Điều kiện trước
Người dùng được phân quyền và đăng nhập vào ứng dụng
thành công.
Luồng chức
1. Người dùng đăng nhập vào ứng dụng.
năng
2. Người dùng ấn vào floating action button.
3. Ứng dụng hiện lên 3 lựa chọn tạo project, tạo task,
tạo note.
4. Người dùng chọn nút tạo note.
5. Ứng dụng chuyển đến màn hình tạo note mới.
6. Người dùng nhập thông tin note.
7. Người dùng ấn nút lưu.
20
8. Ứng dụng kiểm tra dữ liệu người dùng nhập vào và
lưu lại.
UC ID
TD014
Tên chức năng
Chỉnh sửa note.
Tác nhân
User
Điều kiện trước
Người dùng được phân quyền và đăng nhập vào ứng dụng
thành công.
Luồng chức
1. Người dùng đăng nhập vào ứng dụng.
năng
2. Người dùng tìm note cần chỉnh sửa.
3. Người dùng ấn vào note muốn sửa.
4. Ứng dụng chuyển đến màn thông tin chi tiết note.
5. Người dùng chọn nút show more trên góc phải trên
cùng của màn hình.
6. Người dùng chọn edit.
7. Ứng dụng chuyển đến màn hình chỉnh sửa thơng tin
note.
8. Người dùng chỉnh sửa thông tin note.
9. Người dùng ấn nút lưu.
10. Ứng dụng kiểm tra dữ liệu người dùng nhập vào và
lưu lại.
UC ID
TD015
Tên chức năng
Xóa note.
Tác nhân
User
Điều kiện
Người dùng được phân quyền và đăng nhập vào ứng dụng
trước
thành công.
21
Luồng chức
1. Người dùng đăng nhập vào ứng dụng.
năng
2. Người dùng tìm đến note cần xóa.
3. Người dùng ấn vào note muốn xóa.
4. Ứng dụng chuyển đến màn thơng tin chi tiết note.
5. Người dùng chọn nút show more trên góc phải trên
cùng của màn hình.
6. Người dùng chọn delete.
7. Ứng dụng xóa note khỏi cơ sở dữ liệu.
22
VII. Class diagram.
23
VIII. Thiết kế cơ sở dữ liệu.
24