



















Preview text:
lOMoAR cPSD| 58675420
TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP.HCM
KHOA CÔNG NGHỆ THÔNG TIN
HỌC KỲ 1 - NĂM HỌC 2024 -2025 BÁO CÁO CUỐI KỲ
CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT
Đề tài:QUẢN LÝ DANH BẠ ĐIỆN THOẠI
GVHD : Thầy HOÀNG CÔNG TRÌNH SVTH :
Huỳnh Ngọc Thạch – 23133072
Huỳnh Hữu Huy – 23133027
Nguyễn Hồ Phát – 23133054
Nguyễn Lê Việt Quốc – 23133063 Lớp: DASA230179_05
TP.HCM, 17 THÁNG 11 NĂM 2024 lOMoAR cPSD| 58675420 MỤC LỤC
CHƯƠNG 1: GIAI ĐOẠN KHỞI ĐẦU.........................................................................
1.1. Lý do chọn đề tài....................................................................................................
1.2. Tính cấp thiết của đề tài........................................................................................
1.3. Mục đích của đề tài................................................................................................
1.4. Đối tượng và phạm vi nghiên cứu.........................................................................
1.5. Mô tả yêu cầu đề tài...............................................................................................
CHƯƠNG 2: GIAI ĐOẠN XÂY DỰNG: PHÂN TÍCH................................................ 2. 1.Use Case
Diagram................................................................................................... 3. 2.2. Đặc tả các Use
Case...............................................................................................
3.2. 1.Use Case thêm liên
lạc..................................................................................... 2.2.2.Use Case xóa
liên lạc........................................................................................
2.2.3.Use Case sửa liên lạc......................................................................................
2.2.4. Use Case tìm kiếm liên lạc............................................................................
2.2.5.Use Case hiển thị số lượng liên lạc................................................................
2.2.6. Use Case thêm liên hệ khẩn cấp...................................................................
2.2.7.Use Case hiển thị Lịch sử cuộc gọi ..............................................................
2.2.8.Use Case Hiển thị danh bạ.............................................................................
2.2.9. Use Case Gọi điện..........................................................................................
2.2.10. Use Case Làm mới danh bạ (reset all).......................................................
2.2.11. Use Case Cài đặt mật khẩu danh bạ..........................................................
2.2.12. Use Case Xóa danh bạ khẩn cấp tùy chọn.................................................
2.2.13. Use Case Xóa lịch sử cuộc gọi tùy chọn.....................................................
2.2.14. Use Case Hiển thị danh bạ theo từng sim(1/2/máy)..................................
2.2.15. Use Case Cài đặt danh sách liên hệ yêu thích...........................................
2.2.16. Use Case Nhắn tin.......................................................................................
2.2.17. Use Case Hiển thị tin nhắn gần đây...........................................................
2.2.18. Use Case Xóa tin nhắn tùy chọn.................................................................
CHƯƠNG 3: GIAI ĐOẠN XÂY DỰNG: THIẾT KẾ................................................. lOMoAR cPSD| 58675420
3.1. Cấu trúc lưu trữ...................................................................................................
3.2. Cấu trúc dữ liệu chính......................................................................................... 3.3. Thuật toán tiêu
biểu............................................................................................. 3.4. Các chức năng chính đã triển
khai..................................................................... CHƯƠNG 4: GIAI ĐOẠN THỬ
NGHIỆM.................................................................
4.1. Môi trường thử nghiệm.......................................................................................
4.2. Kết quả thử nghiệm ………… ………………… ………………………… 50
4.3. Đánh giá hiệu năng..............................................................................................
CHƯƠNG 5: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN..............................................
5.1. Kết luận................................................................................................................
5.2. Hạn chế.................................................................................................................
5.3. Hướng phát triển................................................................................................. lOMoAR cPSD| 58675420
CHƯƠNG 1: GIAI ĐOẠN KHỞI ĐẦU
1.1. Lý do chọn đề tài
Quản lý danh bạ điện thoại là một nhu cầu phổ biến và cần thiết trong cuộc sống
hiện đại, đặc biệt trong bối cảnh các thiết bị di động ngày càng trở thành một phần
không thể thiếu của con người.Việc xây dựng một ứng dụng quản lý danh bạ không chỉ
giúp lưu trữ và tìm kiếm thông tin hiệu quả, mà còn cung cấp các tiện ích mở rộng như
lịch sử cuộc gọi, tin nhắn gần đây, và quản lý danh sách liên lạc yêu thích.
Đề tài tạo cơ hội để áp dụng các cấu trúc dữ liệu và thuật toán đã học, như Linked
List, Binary Search, Quick Sort, Queue, Stack, Binary Tree, vào một bài toán thực
tế.Việc áp dụng các thuật toán tối ưu hóa cho các chức năng như tìm kiếm, sắp xếp, và
quản lý dữ liệu mang lại hiệu suất cao và phù hợp với các hệ thống lớn. Đề tài đặt ra
các bài toán đa dạng như quản lý dữ liệu lớn, tối ưu hóa thao tác thêm, xóa, sửa dữ liệu,
và tích hợp các tính năng nâng cao. Điều này giúp người thực hiện rèn luyện tư duy
logic, khả năng giải quyết vấn đề, và kỹ năng lập trình. Đề tài đáp ứng đầy đủ yêu cầu
của môn học Cấu trúc dữ liệu và giải thuật, từ việc lựa chọn bài toán có ý nghĩa thực tế
đến việc triển khai các thuật toán một cách bài bản và tối ưu. Lựa chọn đề tài “Quản lý
danh bạ điện thoại” không chỉ giúp người thực hiện khám phá và ứng dụng các kiến
thức đã học, mà còn mang lại một sản phẩm hữu ích với tính ứng dụng cao trong thực
tế, đồng thời mở ra nhiều cơ hội phát triển và nâng cấp trong tương lai.
1.2. Tính cấp thiết của đề tài
Trong thời đại công nghệ số 4.0, điện thoại di động đã trở thành một phần thiết
yếu trong cuộc sống, với danh bạ điện thoại đóng vai trò quan trọng trong việc lưu trữ
thông tin liên lạc phục vụ cả nhu cầu cá nhân và công việc. Tuy nhiên, các hệ thống
danh bạ hiện nay còn hạn chế về tính năng, như khả năng phân loại, tìm kiếm tối ưu,
hoặc quản lý danh bạ khẩn cấp trong các tình huống đặc biệt. Đồng thời, nhu cầu bảo
mật thông tin liên lạc ngày càng gia tăng, đặt ra yêu cầu về hệ thống có khả năng bảo
vệ dữ liệu cá nhân một cách hiệu quả. Đề tài này không chỉ mang lại ý nghĩa thực tiễn
trong việc nâng cao khả năng quản lý thông tin liên lạc mà còn có giá trị giáo dục, giúp
sinh viên thực hành các kỹ thuật lập trình hiện đại, bao gồm tổ chức dữ liệu thông minh, lOMoAR cPSD| 58675420
tìm kiếm hiệu quả và bảo mật dữ liệu. Với những lợi ích này, đề tài "Quản lý danh bạ
điện thoại" có tính cấp thiết cao và phù hợp với yêu cầu của xã hội hiện đại.
1.3. Mục đích của đề tài
Mục đích chính của đề tài "Quản lý danh bạ điện thoại" là xây dựng một hệ thống
hỗ trợ người dùng quản lý danh bạ một cách thông minh, hiệu quả và bảo mật. Hệ thống
này cho phép thực hiện các thao tác cơ bản như thêm, sửa, xóa, tìm kiếm liên lạc, đồng
thời tích hợp các tính năng nâng cao như phân loại danh bạ theo nơi lưu (Phone, Sim1,
Sim2), đánh dấu liên lạc yêu thích và quản lý danh bạ khẩn cấp. Ngoài ra, đề tài còn
hướng đến việc tăng cường bảo mật dữ liệu cá nhân thông qua việc cài đặt mật khẩu
bảo vệ danh bạ và tối ưu hóa trải nghiệm người dùng với các thuật toán sắp xếp, tìm
kiếm nhanh. Việc thực hiện đề tài không chỉ đáp ứng nhu cầu thực tiễn mà còn giúp
phát triển kỹ năng lập trình, ứng dụng các cấu trúc dữ liệu và thuật toán trong quản lý thông tin.
1.4. Đối tượng và phạm vi nghiên cứu
a. Đối tượng nghiên cứu
Các hệ thống quản lý danh bạ hiện nay trên điện thoại di động, tập trung
vào cách tổ chức và bảo mật thông tin liên lạc cá nhân.
b. Phạm vi nghiên cứu
Tập trung vào xây dựng một hệ thống quản lý danh bạ cá nhân trên giao
diện dòng lệnh, bao gồm các chức năng cơ bản và nâng cao, với dữ liệu được
lưu trữ dưới dạng file.
1.5. Mô tả yêu cầu đề tài
a. Các chức năng cơ bản
- Quản lý danh bạ liên lạc:
+ Thêm liên lạc mới: Người dùng có thể thêm liên lạc với các
thông tin như tên, số điện thoại, và nơi lưu (Phone, Sim1, Sim2).
+ Xóa liên lạc: Xóa một liên lạc khỏi danh bạ bằng cách nhập tên.
+ Sửa liên lạc: Cập nhật số điện thoại của liên lạc dựa trên tên. lOMoAR cPSD| 58675420
+ Hiển thị danh bạ: Hiển thị tất cả các liên lạc, được sắp xếp theo tên.
+ Tìm kiếm liên lạc: Tìm kiếm nhanh liên lạc bằng tên với thuật
toán Tìm kiếm nhị phân.
- Quản lý danh bạ khẩn cấp:
+ Thêm liên lạc khẩn cấp từ danh bạ hiện có.
+ Xóa liên lạc khẩn cấp (từng liên lạc hoặc toàn bộ).
+ Hiển thị danh sách các liên lạc khẩn cấp. - Gọi liên lạc:
+ Gọi liên lạc bằng tên, số điện thoại, hoặc số yêu thích.
+ Hiển thị lịch sử cuộc gọi.
+ Xóa lịch sử cuộc gọi (tùy chọn hoặc toàn bộ).
- Mật khẩu bảo vệ danh bạ:
+ Cài đặt mật khẩu cho danh bạ.
+ Xác thực mật khẩu khi truy cập. + Cập nhật mật khẩu.
b. Chức năng nâng cao
- Quản lý danh sách yêu thích:
+ Đánh dấu tối đa 10 số liên lạc yêu thích để truy cập nhanh.
+ Xóa hoặc thay đổi danh sách yêu thích. - Nhắn tin:
+ Gửi tin nhắn đến một liên lạc.
+ Hiển thị tin nhắn gần đây.
+ Xóa tin nhắn (từng tin nhắn dựa trên ID hoặc tất cả).
- Quản lý dữ liệu linh hoạt:
+ Hiển thị danh bạ dựa trên nơi lưu trữ (Phone, Sim1, Sim2).
+ Đồng bộ hóa liên lạc khẩn cấp với danh bạ chung.
- Reset toàn bộ hệ thống: lOMoAR cPSD| 58675420
+ Xóa toàn bộ dữ liệu (danh bạ, liên lạc khẩn cấp, lịch sử cuộc gọi, tin nhắn, mật khẩu).
c. Các ràng buộc và giới hạn
- Chỉ hỗ trợ giao diện dòng lệnh.
- Số lượng tối đa danh bạ yêu thích: 10 liên hệ.
- Dữ liệu được lưu trữ dưới dạng file (txt).
d. Kỳ vọng từ sản phẩm cuối cùng
- Quản lý danh bạ hiệu quả: Hỗ trợ người dùng thêm, sửa, xóa, và tìmkiếm
liên lạc một cách nhanh chóng, với khả năng sắp xếp danh bạ theo tên.
- Bảo mật cao: Danh bạ được bảo vệ bằng mật khẩu, đảm bảo thông tincá
nhân không bị truy cập trái phép.
- Đơn giản và dễ sử dụng: Giao diện dòng lệnh thân thiện, trực quan,phù
hợp với mọi đối tượng người dùng.
- Khả năng mở rộng: Đặt nền tảng để phát triển thêm các tính năng
nhưgiao diện đồ họa (GUI) và tích hợp với hệ thống đám mây trong tương lai.
CHƯƠNG 2: GIAI ĐOẠN XÂY DỰNG: PHÂN TÍCH lOMoAR cPSD| 58675420 2.1.Use Case Diagram
2.2. Đặc tả các Use Case
2.2.1.Use Case thêm liên lạc lOMoAR cPSD| 58675420 Use Case ID: UC1
Use Case Name: Thêm liên lạc Description:
Người dùng muốn thêm một liên lạc mới vào danh bạ với thông tin như tên, số
điện thoại, và nơi lưu (Phone, SIM1, SIM2). Actor: Người dùng. Pre-Condition:
Danh bạ không được đầy và thông tin liên lạc nhập vào phải hợp lệ. Post-Condition:
Thông tin liên lạc mới được lưu trữ thành công trong danh bạ. Basic Flow:
1. Người dùng chọn chức năng "Thêm liên lạc".
2. Hệ thống yêu cầu nhập thông tin liên lạc (tên, số điện thoại, nơi lưu). 3. Hệ thống kiểm tra:
o Thông tin không trùng với các liên lạc đã có.
o Tên và số điện thoại hợp lệ.
4. Hệ thống lưu thông tin liên lạc vào danh bạ.
5. Hiển thị thông báo "Thêm thành công". Exception Flow:
Nếu thông tin trùng hoặc không hợp lệ:
Hệ thống hiển thị thông báo lỗi và yêu cầu nhập lại.
- Sơ đồ hoạt động: lOMoAR cPSD| 58675420
2.2.2.Use Case xóa liên lạc lOMoAR cPSD| 58675420 Use Case ID: UC2
Use Case Name: Xóa liên lạc Description:
Người dùng muốn xóa một liên lạc khỏi danh bạ bằng cách nhập tên liên lạc. Actor: Người dùng. Pre-Condition: •
Danh bạ không được trống. •
Tên liên lạc cần xóa phải tồn tại trong danh bạ. Post-Condition: •
Liên lạc được xóa thành công khỏi danh bạ. Basic Flow:
1. Người dùng chọn chức năng "Xóa liên lạc".
2. Hệ thống yêu cầu nhập tên liên lạc cần xóa.
3. Hệ thống kiểm tra xem tên liên lạc có tồn tại không. 4. Nếu tìm thấy:
o Xóa liên lạc khỏi danh bạ.
o Hiển thị thông báo "Xóa thành công". Exception Flow:
Nếu không tìm thấy liên lạc: •
Hệ thống hiển thị thông báo lỗi "Không tìm thấy liên lạc". •
Người dùng có thể nhập lại tên liên lạc.
- Sơ đồ hoạt động: lOMoAR cPSD| 58675420
2.2.3.Use Case sửa liên lạc lOMoAR cPSD| 58675420 Use Case ID: UC3
Use Case Name: Sửa liên lạc Description:
Người dùng muốn sửa thông tin liên lạc (cụ thể là số điện thoại) của một liên lạc đã có trong danh bạ. Actor: Người dùng. Pre-Condition: •
Danh bạ không được trống. •
Tên liên lạc cần sửa phải tồn tại trong danh bạ. Post-Condition: •
Thông tin liên lạc được cập nhật thành công. Basic Flow:
1. Người dùng chọn chức năng "Sửa liên lạc".
2. Hệ thống yêu cầu nhập tên liên lạc cần sửa.
3. Hệ thống kiểm tra xem tên liên lạc có tồn tại không. 4. Nếu tìm thấy: o
Hệ thống yêu cầu nhập số điện thoại mới. o Cập nhật
thông tin liên lạc với số mới. o
Hiển thị thông báo "Cập nhật thành công". Exception Flow:
Nếu không tìm thấy liên lạc: •
Hệ thống hiển thị thông báo lỗi "Không tìm thấy liên lạc". •
Người dùng có thể nhập lại tên liên lạc.
- Sơ đồ hoạt động: lOMoAR cPSD| 58675420
2.2.4. Use Case tìm kiếm liên lạc lOMoAR cPSD| 58675420 Use Case ID: UC4
Use Case Name: Tìm kiếm liên lạc Description:
Người dùng muốn tìm một liên lạc trong danh bạ theo tên liên lạc. Actor: Người dùng. Pre-Condition: •
Danh bạ không được trống. Post-Condition: •
Thông tin liên lạc được hiển thị nếu tìm thấy. Basic Flow:
1. Người dùng chọn chức năng "Tìm kiếm liên lạc".
2. Hệ thống yêu cầu nhập tên liên lạc cần tìm.
3. Hệ thống tìm kiếm liên lạc theo tên sử dụng thuật toán tìm kiếm nhị phân. 4. Nếu tìm thấy:
o Hiển thị thông tin liên lạc. Exception Flow:
Nếu không tìm thấy liên lạc:
Hệ thống hiển thị thông báo lỗi "Không tìm thấy liên lạc".
- Sơ đồ hoạt động: lOMoAR cPSD| 58675420
2.2.5.Use Case hiển thị số lượng liên lạc lOMoAR cPSD| 58675420 Use Case ID: UC5
Use Case Name: Hiển thị số lượng liên lạc Description:
Người dùng muốn biết tổng số lượng liên lạc hiện có trong danh bạ. Actor: Người dùng. Pre-Condition: •
Danh bạ phải tồn tại dữ liệu (có thể trống, nhưng hệ thống vẫn hoạt động). Post-Condition: •
Hiển thị chính xác tổng số lượng liên lạc trong danh bạ. Basic Flow:
1. Người dùng chọn chức năng "Hiển thị số lượng liên lạc".
2. Hệ thống tính toán số lượng liên lạc hiện có trong danh bạ.
3. Hệ thống hiển thị tổng số lượng liên lạc trên màn hình. Exception Flow: Nếu danh bạ trống:
Hệ thống hiển thị thông báo "Danh bạ hiện đang trống".
- Sơ đồ hoạt động: lOMoAR cPSD| 58675420
2.2.6. Use Case thêm liên hệ khẩn cấp lOMoAR cPSD| 58675420 Use Case ID: UC6
Use Case Name: Thêm liên hệ khẩn cấp Description:
Người dùng muốn thêm một liên hệ từ danh bạ hiện tại vào danh sách liên hệ khẩn cấp. Actor: Người dùng. Pre-Condition: •
Danh bạ phải tồn tại dữ liệu (không được trống). •
Liên hệ cần thêm chưa tồn tại trong danh sách liên hệ khẩn cấp. Post-Condition: •
Liên hệ được thêm thành công vào danh sách liên hệ khẩn cấp. •
Danh sách liên hệ khẩn cấp được lưu vào file để duy trì dữ liệu. Basic Flow:
1. Người dùng chọn chức năng "Thêm liên hệ khẩn cấp".
2. Người dùng nhập tên hoặc số điện thoại của liên hệ cần thêm. 3. Hệ thống kiểm tra:
o Nếu liên hệ chưa tồn tại trong danh sách liên hệ khẩn cấp: a.
Hệ thống thêm liên hệ vào danh sách liên hệ khẩn cấp. b. Lưu danh sách vào file. c.
Hiển thị thông báo "Đã thêm liên hệ thành công".o Nếu liên hệ đã tồn tại:
Hệ thống hiển thị thông báo "Liên hệ đã tồn tại". Exception Flow: • Nếu danh bạ trống:
o Hệ thống hiển thị thông báo "Danh bạ hiện đang trống". •
Nếu liên hệ không tồn tại trong danh bạ:
o Hệ thống hiển thị thông báo "Liên hệ không tồn tại".
- Sơ đồ hoạt động: