1. Trang chủ
  2. » Luận Văn - Báo Cáo

bt doan 6 trinh thi cam tubáo cáo thực hành nghề nghiệp chương trình quản lý danh sách các lớp học trong phạm vi nhà trường

48 1 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 48
Dung lượng 7,11 MB

Nội dung

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 1

BỘ 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 2

Trị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!

2

Trang 3

Trị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

3

Trang 4

Trị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 8

1.1 Gi i thi u đềề tàiớ ệ 8

1.2 Lý do hình thành đềề tài 8

1.3 M c tều đềề tàiụ 8

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) 8 1.5 D li u mấẫu(>=10 thông tn đôấi tữ ệ ượng cấền qu n lý)ả 9

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) 9

CHƯƠNG 2: TÌM KIẾM VÀ SẮP XẾP TRÊN MẢNG CẤU TRÚC 11

2.1 Khai báo th vi nư ệ 11

2.2 Khai báo cấấu trúc 11

2.3 Nh p danh sách l p h cậ ớ ọ 11

2.3.1 Chương trình con 11

2.3.2 Ki mể tra 13

2.3.3 Kềất qu ch yả ạ 13

2.4 Xuấất danh sách l pớ 13

2.4.1 Chương trình con 13

2.4.2 Ki m traể 14

2.4.3 Kềất qu ch yả ạ 15

2.5 Tìm kiềấm theo MaLop( s d ng thu t toán Linearysearch)ử ụ ậ 15

2.5.1 Chương trình con 15

2.5.2 Ki m traể 16

2.5.3 Kềất qu ch yả ạ 16

2.6 Tìm kiềấm theo MaLop( s d ng thu t toán Binarysearch)ử ụ ậ 16

2.6.1 Chươ trình con 16ng 2.6.2 Ki mể tra 17

17

2.6.3 Kềất qu ch yả ạ 17

2.7 Săấp xềấp danh sách l p theo MaLopớ 18

2.7.1 Chương trình con( s d ng thu t toán Selectonsort)ử ụ ậ 18

2.7.2 Ki m traể 18

2.7.3 Kềất qu ch yả ạ 19

2.8 Săấp xềấp danh sách l p theo MaLop( shakersort)ớ 19

2.8.1 Chươ trình con 19ng 2.8.2 Ki mể tra 20

2.8.3 Kềất qu ch yả ạ 20

4

Trang 5

Trị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ệ ả 21

2.9.1 Chươ trình con 21ng 2.9.2 Ki mể tra 22

2.9.3 Kềất qu ch yả ạ 22

2.10 T o danh sách ch c năngạ ứ 22

2.10.1 Chương trình con 22

2.10.2 Ki m traể 23

2.10.3 Kềất qu ch yả ạ 23

2.11 Trình thông báo hoàn thành chương trình 24

2.11.1 Chươ trình con 24ng 2.11.2 Kềất qu ch yả ạ 24

CHƯƠNG 3: KẾT HỢP QUẢN LÝ BẰNG DANH SÁCH LIÊN KẾT 25 3.1 Khai báo th vi nư ệ 25

3.2 Khai báo cấấu trúc qu n lýả 25

3.3 Cấấu trúc xấy d ng node và listự 25

3.4 Xấy d ng hàm t o node và listự ạ 26

3.4.1 Hàm t o nodeạ 26

3.4.2 Hàm t o listạ 27

3.5 Hàm nh p thông tnậ 27

3.5.1 Chươ trình con 27ng 3.5.2 Ki m tra hàmể 29

3.5.3 Kềất qu ch yả ạ 29

3.6 Hàm xuấất danh sách 30

3.6.1 Chương trình con 30

3.6.2 Ki m traể 31

3.6.3 Kềất qu ch yả ạ 31

3.7 Hàm xóa toàn b danh sáchộ 31

3.7.1 Chương trình con 31

3.7.2 Ki m traể 32

32

3.7.3 Kềất qu ch yả ạ 32

3.8 Hàm tìm thông tn 32

3.8.1 Chươ trình con 32ng 3.8.2 Ki mể tra 33

33

3.8.3 Kềất qu ch yả ạ 33

3.9 Hàm xóa thông tn theo mã 33

5

Trang 6

Trịnh Thị Cẩm Tú Quản lý danh sách lớp học 2221004346

3.9.1 Chươ trình con 33ng

3.9.2 Ki mể tra 34

34

3.9.3 Kềất qu ch yả ạ 34

34

34

3.10 Hàm săấp xềấp (bubblesort) 34

3.10.1 Chươ trình con 34ng 3.10.2 Ki mể tra 35

35

3.10.3 Kềất qu ch yả ạ 35

3.11 Hàm săấp xềấp Selectonsort 36

3.11.1 Chươ trình con 36ng 3.11.2 Ki mể tra 37

3.11.3 Kềất qu ch yả ạ 37

3.12 Hàm săấp xềấp Interchangesort 37

3.12.1 Chươ trình con 38ng 3.12.2 Ki mể tra 38

3.12.3 Kềất qu ch yả ạ 39

3.13 Hàm săấp xềấp Insertonsort 39

3.13.1 Chươ trình con 40ng 3.13.2 Ki mể tra 41

3.13.3 Kềất qu ch yả ạ 41

3.14 Hàm săấp xềấp Quicksort 41

3.14.1 Chươ trình con 42ng 3.14.2 Ki mể tra 42

3.15 Xấy d ng đ n ch n ch c năngự ơ ọ ứ 42

3.15.1 Chươ trình con 43ng 3.15.2 Ki mể tra 44

3.15.3 Kềất qu ch yả ạ 44

6

Trang 7

Trị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

7

Trang 8

Trị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

8

Trang 9

Trị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

9

Trang 10

Trị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.

10

Trang 11

Trị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

11

1) Khai báo thư viện

Trang 14

Trị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 15

- int Linearysearch(DSLOP ds[], int n, char x[]): Chương trình

tìm kiếm MaLop tuyến tính

15

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 16

Để 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.

16

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 17

Trị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 18

Trị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

18

17) Kếết qu ch y c a hàm Bn sau khi áp d ng thu t sẵp xếếp ả ạ ủ ụ ậ

Trang 20

- 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 22

Trị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

22) Thu t toán sẵếp xếếp hàm Quicksort ậ

Trang 23

- 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

23

24) Kếết qu ch y hàm quicksort ả ạ

23) Đ a Quicksort vào main ư

Trang 24

Trị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

Trang 25

- 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

25

28)Hàm Finish

Trang 26

Trị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ý

26

Trang 27

Vớ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

27

Trang 28

Hà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.

28

Trang 29

- 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 34

Trịnh Thị Cẩm Tú Quản lý danh sách lớp học 2221004346

3.7.3 Kết quả chạy

Trước khi xóa:

Sau khi xóa:

Trang 35

Trịnh Thị Cẩm Tú Quản lý danh sách lớp học 2221004346

3.8.2 Kiểm tra

35

Trang 39

Trịnh Thị Cẩm Tú Quản lý danh sách lớp học 2221004346

3.11 Hàm sắp xếp Selectionsort

Hàm selectionsort trong danh sách liên kết sắp xếp các phần tử theo thứ tự tăng dần hoặc giảm dần bằng cách thực hiện các bước sau đây:

1 Khởi tạo một node temp để lưu trữ giá trị của phần tử được chọn

để so sánh với các phần tử khác trong danh sách.

2 Duyệt danh sách và tìm phần tử có giá trị nhỏ nhất hoặc lớn nhất (tuỳ thuộc vào yêu cầu sắp xếp) bằng cách so sánh giá trị của node temp với các node khác.

3 Hoán đổi giá trị của node temp và phần tử nhỏ nhất hoặc lớn nhất được tìm thấy.

4 Tiếp tục tìm kiếm phần tử nhỏ nhất hoặc lớn nhất trong danh sách còn lại bằng cách bỏ qua node temp đã được sắp xếp.

5 Lặp lại quá trình trên cho đến khi tất cả các phần tử được sắp xếp theo yêu cầu.

Các phép toán chèn, xóa node và duyệt danh sách sẽ được sử dụng trong quá trình thực hiện hàm selectionsort.

3.11.1 Chương trình con

Để thực hiện nhiệm vụ sắp xếp này cần khai báo tạo một chương trình con với tên Selectionsort như sau:

39

Trang 41

Trịnh Thị Cẩm Tú Quản lý danh sách lớp học 2221004346

3.12 Hàm sắp xếp Interchangesort

Hàm interchange sort được sử dụng để sắp xếp các phần tử trong danh sách liên kết theo thứ tự tăng dần Cách thức hoạt động của hàm này như sau:

1 Ta bắt đầu từ phần tử đầu tiên của danh sách và duyệt từ trái sang phải.

2 Với mỗi phần tử, ta so sánh nó với các phần tử còn lại trong danh sách Nếu phần tử đó nhỏ hơn các phần tử còn lại, ta hoán đổi chúng với nhau.

3 Sau khi duyệt hết danh sách từ phần tử đầu tiên đến phần tử cuối cùng, ta quay lại bước 1 và tiếp tục thực hiện phân tích.

4 Tiến hành sắp xếp danh sách liên kết cho đến khi tất cả các phần

tử được sắp xếp theo thứ tự tăng dần.

Hàm interchange sort có độ phức tạp O(n^2), với n là số lượng phần

tử trong danh sách liên kết Nó chỉ nên được sử dụng cho danh sách liên kết nhỏ vì nếu danh sách quá lớn thì thời gian để sắp xếp danh sách liên kết sẽ rất lâu.

41

Trang 43

Trịnh Thị Cẩm Tú Quản lý danh sách lớp học 2221004346

3.13 Hàm sắp xếp Insertionsort

Thuật toán insertionsort trong danh sách liên kết là một thuật toán sắp xếp đơn giản Các bước thực hiện của thuật toán như sau:

1 Bắt đầu từ phần tử đầu tiên của danh sách liên kết.

2 Đặt phần tử đầu tiên này làm một danh sách đã được sắp xếp.

3 Duyệt qua danh sách liên kết từ phần tử thứ hai cho đến hết danh sách:

a So sánh phần tử hiện tại với từng phần tử trong danh sách đã được sắp xếp.

b Nếu phần tử hiện tại nhỏ hơn phần tử đã được sắp xếp, chèn phần

tử hiện tại trước phần tử đó.

c Nếu phần tử hiện tại lớn hơn hoặc bằng phần tử đã được sắp xếp, tiếp tục duyệt qua danh sách đã được sắp xếp.

4 Sau khi duyệt qua toàn bộ danh sách, ta thu được danh sách đã được sắp xếp.

Khi chèn một phần tử vào danh sách đã được sắp xếp, ta cần sử dụng một con trỏ để chỉ đến phần tử trước phần tử đang xét trong danh sách

đã được sắp xếp Sau đó, ta chỉ cần đổi các con trỏ để chèn phần tử đang xét vào danh sách đã được sắp xếp.

43

Ngày đăng: 02/07/2024, 16:24

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN