Trịnh Thị Cẩm Tú Quản lý danh sách lớp học 2221004346LỜI CẢM ƠN Lời đầu tiên em xin gửi lời cảm ơn thầy Nguyễn Huy Khang – giảng viên bộ môn Cấu Trúc Dữ Liệu & Giải Thuật – khoa Công ngh
Trang 1BỘ TÀI CHÍNH TRƯỜNG ĐẠI HỌC TÀI CHÍNH – MARKETING KHOA CÔNG NGHỆ THÔNG TIN
BÁO CÁO THỰC HÀNH NGHỀ NGHIỆP
Đề Tài:
CHƯƠNG TRÌNH QUẢN LÝ DANH SÁCH CÁC LỚP HỌC TRONG
PHẠM VI NHÀ TRƯỜNG
Tp HCM, ngày 12 tháng 03 năm 2023
Trang 2Trịnh Thị Cẩm Tú Quản lý danh sách lớp học 2221004346
LỜI CẢM ƠN
Lời đầu tiên em xin gửi lời cảm ơn thầy Nguyễn Huy Khang – giảng viên bộ
môn Cấu Trúc Dữ Liệu & Giải Thuật – khoa Công nghệ thông tin - trường Đại Học Tài Chính – Marketing đã tận tình giảng dạy, hướng dẫn, vẽ nên những bài
thuật toán cơ bản từ đó giúp sinh viên chúng em có những tư duy sáng tạo hơn để
có thể áp dụng và tạo ra những chương trình thực thế, mang tính ứng dụng
Tuy nhiên, với vốn hiểu biết còn ít ỏi, kĩ năng tư duy còn hạn chế nên sẽ không thể tránh khỏi những thiếu sót cũng như sai lầm trong bài đồ án này Em rất mong được sự góp ý chỉnh sửa từ phía thầy để bài đồ án này sớm được hoàn thiện nhất Xin chân thành cảm ơn những đóng góp của thầy!
Trang 3Trịnh Thị Cẩm Tú Quản lý danh sách lớp học 2221004346
NHẬN XÉT VÀ ĐÁNH GIÁ CỦA GIÁO VIÊN
- Điểm số:
- Điểm chữ:
Thành phố Hồ Chí Minh, ngày…tháng… năm 2023
Giảng viên
Trang 4Trịnh Thị Cẩm Tú Quản lý danh sách lớp học 2221004346
MỤC LỤC
CHƯƠNG 1: GIỚI THIỆU 7
1.1 Gi i thi u đềề tàiớ ệ 7
1.2 Lý do hình thành đềề tài 7
1.3 M c tều đềề tàiụ 7
1.4 Cấấu trúc (mô t cấấu trúc đả ược yều cấều, ch n CTDL đ th hi n, khai báo/đ nh nghĩa cấấu ọ ể ể ệ ị trúc) 7 1.5 D li u mấẫu(>=10 thông tn đôấi tữ ệ ượng cấền qu n lý)ả 8
1.6 Các ch c năng( li t kề các ch c năng xấy d ng trong chứ ệ ứ ự ương trình) 8
CHƯƠNG 2: TÌM KIẾM VÀ SẮP XẾP TRÊN MẢNG CẤU TRÚC 10
2.1 Khai báo th vi nư ệ 10
2.2 Khai báo cấấu trúc 10
2.3 Nh p danh sách l p h cậ ớ ọ 10
2.3.1 Chương trình con 10
2.3.2 Ki mể tra 12
2.3.3 Kềất qu ch yả ạ 12
2.4 Xuấất danh sách l pớ 12
2.4.1 Chương trình con 12
2.4.2 Ki m traể 13
2.4.3 Kềất qu ch yả ạ 14
2.5 Tìm kiềấm theo MaLop( s d ng thu t toán Linearysearch)ử ụ ậ 14
2.5.1 Chương trình con 14
2.5.2 Ki m traể 15
2.5.3 Kềất qu ch yả ạ 15
2.6 Tìm kiềấm theo MaLop( s d ng thu t toán Binarysearch)ử ụ ậ 15
2.6.1 Chươ trình con 15ng 2.6.2 Ki mể tra 16
16
2.6.3 Kềất qu ch yả ạ 16
2.7 Săấp xềấp danh sách l p theo MaLopớ 17
2.7.1 Chương trình con( s d ng thu t toán Selectonsort)ử ụ ậ 17
2.7.2 Ki m traể 17
2.7.3 Kềất qu ch yả ạ 18
2.8 Săấp xềấp danh sách l p theo MaLop( shakersort)ớ 18
2.8.1 Chươ trình con 18ng 2.8.2 Ki mể tra 19
2.8.3 Kềất qu ch yả ạ 19
Trang 5Trịnh Thị Cẩm Tú Quản lý danh sách lớp học 2221004346
2.9 Săấp xềấp hi u qu Quicksortệ ả 20
2.9.1 Chươ trình con 20ng 2.9.2 Ki mể tra 21
2.9.3 Kềất qu ch yả ạ 21
2.10 T o danh sách ch c năngạ ứ 21
2.10.1 Chương trình con 21
2.10.2 Ki m traể 22
2.10.3 Kềất qu ch yả ạ 22
2.11 Trình thông báo hoàn thành chương trình 23
2.11.1 Chươ trình con 23ng 2.11.2 Kềất qu ch yả ạ 23
CHƯƠNG 3: KẾT HỢP QUẢN LÝ BẰNG DANH SÁCH LIÊN KẾT 24 3.1 Khai báo th vi nư ệ 24
3.2 Khai báo cấấu trúc qu n lýả 24
3.3 Cấấu trúc xấy d ng node và listự 24
3.4 Xấy d ng hàm t o node và listự ạ 25
3.4.1 Hàm t o nodeạ 25
3.4.2 Hàm t o listạ 26
3.5 Hàm nh p thông tnậ 26
3.5.1 Chươ trình con 26ng 3.5.2 Ki m tra hàmể 28
3.5.3 Kềất qu ch yả ạ 28
3.6 Hàm xuấất danh sách 29
3.6.1 Chương trình con 29
3.6.2 Ki m traể 30
3.6.3 Kềất qu ch yả ạ 30
3.7 Xấy d ng đ n ch n ch c năngự ơ ọ ứ 30
3.7.1 Chươ trình con 30ng 3.7.2 Ki mể tra 31
3.7.3 Kềất qu ch yả ạ 32
32
Trang 6Trịnh Thị Cẩm Tú Quản lý danh sách lớp học 2221004346
MỤC LỤC HÌNH ẢNH
1) Khai báo thư viện 10
2) Hàm nhập thông tin một lớp 11
3) Hàm nhập thông tin một danh sách lớp 11
4) Hàm nhập sẵn 11
5) Kiểm tra hàm nhập 12
6) Kết quả chạy cho hàm nhập 12
7) Hàm xuất một lớp 13
8) Hàm xuất một danh sách lớp 13
9) Kiểm tra hàm xuất ở thân chương trình 13
10) Kết quả chạy cho hàm xuất 14
11) Hàm tìm kiếm Linearysearch(Ln) 14
12) Kiểm tra hàm Ln ở hàm main 15
13) Kết quả chạy cho hàm tìm kiếm 15
14) Hàm tìm kiếm Binarysearch(Bn) 15
15) Hàm Bn ở main 16
16) Hàm Bn khi chưa được sắp xếp 16
17) Kết quả chạy của hàm Bn sau khi áp dụng thuật săp xếp 17
18) Hàmm sắp xếp Selectionsort(Slt) 17
19) Đưa Slt vào main 17
20) Thuật toán sắp xếp hàm shakersort 19
21) Hàm shakersort ở main 19
22) Thuật toán sắp xếp hàm Quicksort 20
23) Kết quả chạy hàm quicksort 21
24) Đưa Quicksort vào main 21
25) Hàm menu 22
26) Đưa hàm menu vào main 22
27) Kết quả chạy hàm menu 22
28)Hàm Finish 23
Trang 7Trịnh Thị Cẩm Tú Quản lý danh sách lớp học 2221004346
1.1 Giới thiệu đề tài
DSLOP(MaLop, CVHT, SiSo, LopTruong, NhomHT) Cấu trúc quản
lý danh sách các lớp bao gồm các thông tin: Mã lớp (MaLop); Tên
giảng viên làm cố vấn học tập; Sỉ số lớp; Tên lớp trưởng; Số nhóm học tập (NhomHT) được tổ chức trong lớp đó.
1.2 Lý do hình thành đề tài
Xuất phát từ nhu cầu quản lý lớp học của Nhà trường được chặt chẽ,
dễ kiểm soát hơn Chương trình QUẢN LÝ LỚP HỌC ra đời để đáp ứng được nhu cầu quản lý, nắm bắt kịp thời thông tin của từng lớp học,
hỗ trợ cho công tác quản lý của Nhà trường diễn ra thuận tiện hơn.
Nắm bắt được nhu cầu và vốn kiến thức của mình tôi lựa chọn đề tài QUẢN LÝ DANH SÁCH LỚP HỌC TRONG NHÀ TRƯỜNG trong bài tập đồ án môn Cơ sở dữ liệu và Giải thuật nhằm giúp tôi nâng cao
kĩ năng tạo lập chương trình cũng như đem lại một chương trình hữu dụng cho người dùng.
1.3 Mục tiêu đề tài
Nhằm hỗ trợ Nhà trường quản lý được thông tin của từng lớp học, dễ dàng nắm bắt tình hình từng lớp học bằng ngôn ngữ lập trình C++ chạy trên màn hình consle.
1.4 Cấu trúc (mô tả cấu trúc được yêu cầu, chọn CTDL để thể
hiện, khai báo/định nghĩa cấu trúc)
Thông tin các lớp học bao gồm:
- MaLop: Mã của lớp học, gồm 1 chuỗi kiểu ký tự(char)
- CVHT: Tên cố vấn học tập, gồm 1 chuỗi kiểu ký tự
- SiSo: Sỉ số của lớp, là kiểu số nguyên
Trang 8Trịnh Thị Cẩm Tú Quản lý danh sách lớp học 2221004346
- NhomHT: Số nhóm có trong lớp, kiểu số nguyên
- LopTruong: Tên Lớp Trưởng, gồm 1 chuỗi kiểu ký tự
1.5 Dữ liệu mẫu(>=10 thông tin đối tượng cần quản lý)
Table 1: D li u mẫẫu ữ ệ
1.6 Các chức năng( liệt kê các chức năng xây dựng trong chương trình)
Các chức năng trên mảng cấu trúc
- Tạo cấu trúc quản lý danh sách lớp học
- Nhập/xuất danh sách lớp học
Trang 9Trịnh Thị Cẩm Tú Quản lý danh sách lớp học 2221004346
- Tìm kiếm lớp học dựa trên mã lớp( sử dụng LinearySearch và
BinarySearch).
- Sắp xếp theo mã lớp(selectionsort, bubblesort, interchangesort, )
- Sắp xếp theo mã lớp hiệu quả(quicksort).
- Chèn, thêm, xóa lớp từ danh sách.
- Tạo dựng chương trình lựa chọn chức năng.
Trang 10Trịnh Thị Cẩm Tú Quản lý danh sách lớp học 2221004346
CHƯƠNG 2: TÌM KIẾM VÀ SẮP XẾP TRÊN MẢNG CẤU
TRÚC
2.1 Khai báo thư viện
- Iostream: cung cấp các tiê Šn ích có
sẵn để làm viê Šc với bàn phím và màn hình.
- Iomanip: định nghĩa một số hàm giúp lập trình viên có thể định dạng output.
2.2 Khai báo cấu trúc
- MaLop: Mã của lớp học, gồm 1 chuỗi kiểu ký tự(char)
- CVHT: Tên cố vấn học tập, gồm 1 chuỗi kiểu ký tự
- SiSo: Sỉ số của lớp, là kiểu số nguyên
- NhomHT: Số nhóm có trong lớp, kiểu số nguyên
- LopTruong: Tên Lớp Trưởng, gồm 1 chuỗi kiểu ký tự
2.3 Nhập danh sách lớp học
2.3.1 Chương trình con
Để nhập danh sách sinh viên, cần xây dựng ba chương trình con gồm:
- void Nhap_1_o(DSLOP& ds): hỗ trợ nhập thông tin một lớp học
gồm: MaLop, CVHT, SiSo, NhomHT, LopTruong
1) Khai báo thư viện
Trang 13Trịnh Thị Cẩm Tú Quản lý danh sách lớp học 2221004346
2.4 Xuất danh sách lớp
2.4.1 Chương trình con
Để xuất danh sách lớp cần xây dựng ba chương trình con gồm:
- Void xuat_1_lop(DSLOP& ds): Hàm được khởi tạo nhằm mục
đích xuất thông tin cho 1 đối tượng lớp học
- Void xuat_1_ds(DSLOP ds[], int& n): Hàm xuất danh sách n lớp
Trang 14- int Linearysearch(DSLOP ds[], int n, char x[]): Chương trình
tìm kiếm MaLop tuyến tính
9) Ki m tra hàm xuẫết thẫn ch ể ở ươ ng trình
10) Kếết qu ch y cho hàm xuẫết ả ạ
11) Hàm tìm kiếếm Linearysearch(Ln)
Trang 15Để tìm kiếm danh sách theo MaLop sử dụng thuật toán
Binarysearch ta cần tạo một chương trình con như sau:
- Void Binarysearch(DSLOP ds[], int n, char x[]): Chương trình
con với thuật toán hỗ trợ tìm kiếm đối tượng.
12) Ki m tra hàm Ln hàm main ể ở
13) Kếết qu ch y cho hàm tìm kiếếm ả ạ
14) Hàm tìm kiếếm Binarysearch(Bn)
Trang 16Trịnh Thị Cẩm Tú Quản lý danh sách lớp học 2221004346
2.6.2 Kiểm tra
- Vì hàm sắp xếp Binarysearch chỉ thực hiện được chức năng tìm
kiếm của mình khi thông tin đã được sắp xếp tăng dần nên ta cần dùng hàm if để trả về không tìm thấy thông tin nếu đối tượng cần tìm chưa được sắp xếp.
Trang 17Trịnh Thị Cẩm Tú Quản lý danh sách lớp học 2221004346
- Sau khi được sắp xếp:
2.7 Sắp xếp danh sách lớp theo MaLop
2.7.1 Chương trình con( sử dụng thuật toán Selectionsort)
Để sắp xếp danh sách lớp theo MaLop cần tạo một chương trình con gồm:
- Void SelectionSort(DSLOP ds[], int n): Hỗ trợ chương trình sắp
xếp danh sách lớp theo MaLop theo hệ số từ cao – thấp
17) Kếết qu ch y c a hàm Bn sau khi áp d ng thu t sẵp xếếp ả ạ ủ ụ ậ
Trang 19- Void Shakersort(DSLOP ds[], int n, char x[]): Chương trình con
với thuật toán sắp xếp đối tượng theo trình tự thừ thấp – cao.
2.8.2 Kiểm tra
20) Thu t toán sẵếp xếếp hàm shakersort ậ
Trang 21Trịnh Thị Cẩm Tú Quản lý danh sách lớp học 2221004346
- Void Quicksort(DSLOP, int left, int right): Chương trình
với thuật toán sắp xếp hiệu quả.
2.9.2 Kiểm tra
22) Thu t toán sẵếp xếếp hàm Quicksort ậ
Trang 22- Void menu(int& num): Chương trình này giúp tạo ra một danh
sách các chức năng có trong chương trình nhằm giúp người dùng dễ dàng lựa chọn thao tác muốn thực hiện
24) Kếết qu ch y hàm quicksort ả ạ
23) Đ a Quicksort vào main ư
Trang 23Trịnh Thị Cẩm Tú Quản lý danh sách lớp học 2221004346
2.10.2 Kiểm tra
2.10.3 Kết quả chạy
27) Kếết qu ch y hàm menu ả ạ
25) Hàm menu
26) Đ a hàm menu vào main ư
Trang 24và đưa về trang menu:
- Void Finish(int& key): Chương trình với mục đích thông báo
đã hoàn thành nhiệm vụ được chọn và đưa người dùng về
trang menu.
2.11.2 Kết quả chạy
28)Hàm Finish
Trang 25Trịnh Thị Cẩm Tú Quản lý danh sách lớp học 2221004346
CHƯƠNG 3: KẾT HỢP QUẢN LÝ BẰNG DANH SÁCH LIÊN KẾT
3.1 Khai báo thư viện
- Iostream: cung cấp các tiê Šn ích có sẵn để làm viê Šc với bàn phím và màn hình.
- Iomanip: Thư viện hỗ trợ xuất các lệnh xuất trên console
3.2 Khai báo cấu trúc quản lý
- MaLop: Kiểu kí tự (tối đa 20 kí tự)
- CVHT: Kiểu kí tự (tối đa 50 kí tự)
- SiSo, NhomHT: Kiểu số nguyên (int)
- LopTruong: Kểu kí tự (tối đa 50 kí tự)
- Tydef: định nghĩa cấu trúc
3.3 Cấu trúc xây dựng node và list
Xây dựng node và list trong danh sách liên kết C++ nhằm mục đích tạo ra một cấu trúc dữ liệu linh hoạt và hiệu quả để lưu trữ và quản lý
Trang 26Với cấu trúc này, chúng ta có thể thêm, xóa phần tử hoặc duyệt danh sách một cách dễ dàng và hiệu quả Ngoài ra, danh sách liên kết còn cho phép tối ưu hóa việc sử dụng bộ nhớ, đặc biệt là khi chúng ta cần thêm hoặc xóa phần tử ở giữa danh sách.
3.4 Xây dựng hàm tạo node và list
Trang 27Hàm tạo list được sử dụng để tạo ra một danh sách liên kết mới Nó
có thể được thực hiện bằng cách sử dụng cấp phát động, hoặc bằng cách khởi tạo một đối tượng trong C++.
hàm tạo của danh sách mới khởi tạo con trỏ “pHead” và “pTail” là NULL, đại diện cho danh sách liên kết rỗng ban đầu.
Trang 28- void AddTail(LIST& l, NODE* p) : Dùng để tạo thông tin
mới được nhập vào thành một node và thêm vào cuối danh sách.
- void InputList(LIST& l) : Dùng để nhập thông tin cho nhiều
lớp học và thêm từng lớp học vào danh sách.
Trang 32Trịnh Thị Cẩm Tú Quản lý danh sách lớp học 2221004346
3.7 Xây dựng đơn chọn chức năng
Xây dựng menu chọn trong chương trình C++ có mục đích là để giúp người dùng tương tác với chương trình dễ dàng hơn Menu chọn cho phép người dùng lựa chọn các tùy chọn khác nhau trong chương trình,
từ đó giúp tối ưu hóa trải nghiệm người dùng và giúp người dùng tiết kiệm thời gian và công sức khi sử dụng chương trình.
3.7.1 Chương trình con
Để sử chương trình được trực quan ta cần 2 hàm menu và Finish để giúp người dùng chọn các chức năng cũng như hàm finish để thông báo chức năng và gọi lại menu tùy chọn.
- Void menu(int& num) : tạo menu các chức năng tùy chọn
- Void Finish(int& key) : thông báo kết thúc hàm chức năng và gọi lại menu để người dùng tiếp tục hoặc thoát tùy nhu cầu.
Trang 33Trịnh Thị Cẩm Tú Quản lý danh sách lớp học 2221004346
3.7.2 Kiểm tra
Trang 34Trịnh Thị Cẩm Tú Quản lý danh sách lớp học 2221004346
3.7.3 Kết quả chạy