IY’ WE
S BO GIAO DUC VA DAO TAO
l TRƯỜNG ĐẠI HỌC TÀI CHÍNH - MARKETING
KHOA CÔNG NGHỆ THÔNG TIN BAI TAP DO AN ~ wv ~ ^ ` CAU TRUC DU LIEU VA GIAI THUAT TRUONG DAI HOC TAICHINH MARKETING
> Gidne vier Inebng din: Newyén Quie Thanh
>> À4ầm học thực hiểm: Nguyễn Xuân TíHi
> Ma sé mém hoe: 2121001038
» Mai lov hoc phan: 2121112901202
Trang 2
LOI CAM ON
Đầu tiên, em xin chân thành cảm ơn va tri ân sâu sắc đến qúy thầy cô Trường Đại học Tài Chính - Marketing „ đặc biệt là quý thầy cô khoa Công nghệ thông tin và thầy Nguyễn Quốc Thanh đã dạy dỗ tận tình cho chúng em những tháng ngày vừa qua khi mới là sinh viên năm nhất còn bỡ ngỡ về một môi trường học tập mới , thay cô luôn quan tâm chúng em hỏi chúng em không hiểu chỗ nao thi chia sẻ màn hình thầy cô chỉ cho chúng em
Thầy đã truyền đạt cho chúng em rất nhiều kiến thức bé ích, giúp chúng em ngày càng hoàn thiện bản thân mình hơn Cũng là đồ án môn cấu trúc đữ liệu và giải thuật thì cũng một lần nữa em xinh chúc tất cả các quý thầy cô giáo và Ths.Nguyễn Quốc Thanh ngày càng mạnh khỏe
Trang 3MUC LUC
CHUONG I: GIỚI THIỆU - -2- 2 22212251225112211221112211211111111211211121211211 2 re 1
L.1 GiGi thi@U GE Dai ceccccccccccceeceeseeeeeeeeeessseesseeneeesessnneeeeeeeseeeegneed 1
1.2 Cấu trúc (khai báo/định nghĩa cấu truc) ccccceeecceesessessseeeeeeeees 1
1.3 DữỮ liệu mẫu HH SH HH HH nen hen vu 2
1.4 Các chức năng trên mảng cấu trÚc c cv: 2
CHƯƠNG II: TIM KIEM VA SAP XEP TREN MANG CAU TRÚC - <2 4
2.1 Nhap danh Sach MON NOC cccccseceeecseeeeceeeeeeeeeeseeeetsaeeaeeeesseraneeees 4 A) CHUONG CHINN CONL cc eeccceeeeeeseeeeseeeeesesaesaeseeeaeneeesaeeseersnsseraneere 4
b) Kiém tra (haM Main kiểm tra CC) (chen 5
C) KẾt QUả Chạy TT n n1 nn nh He n 5
2.2 Xuất danh sách môn học c1 n nghe 5
A) Chương trÌnh CON tu nh K non nano 5
b)_ Kiểm tra (hàm Main kiểm tra CC) (chen 6
C) KẾt QUả Chạy TT n n1 nn nh He n 7
2.3 Tìm kiếm thông tin môn học theo mã môn học dùng Liner
151121 I NI EI I EI EIU EI I EI EE EE EI EE EEE nnn Eeias 7
A) CHUONG CHINN CONL cc eeccceeeeeeseeeeseeeeesesaesaeseeeaeneeesaeeseersnsseraneere 7
a) Ki€mtra (ham Main ki€m tra Ct) .ccccccccceccscececeeceueeeueeeeeaeeuans 8
'o) <1 0K6 [U- Ike] a= ) Ae 9
2.4 Tim kiém théng tin m6n hoc theo ma mén hoc dung Binary
SEQICN I NI EI I EI EIU EI I EI EE EE EI EE EEE nnn Eeias 9
A) Chương trÌnh CON tu nh K non nano 9
b)_ Kiểm tra (hàm Main kiểm tra CC) con nhe 10
c) Kết QUả Chạy nnnnn TT TT Tnhh Huy 11
2.5 Tìm kiếm thông tin môn học theo Tên dùng Liner Search 11
a) Chương trình COn cuc nnn ng n TH HT Hong 11
b)_ Kiểm tra (hàm Main kiểm tra CC) con nhe 11
c) Kết QUả Chạy nnnnn TT TT Tnhh Huy 12
2.6 Tìm kiếm thông tin môn học theo Tên dùng Binary Search 12
a) Chương trình COn cuc nnn ng n TH HT Hong 12
Trang 4C) KOt QUA CHAY ce eeececcesccccceceeeececeeeceeeeeeeeeeeeeeeeeeeeeeeeeeeseeeeeeeeneess 14
2.7 Hàm hoán VỊ cu uc ng ng nh ng TH nen kế HE Đế kết 14
2.8 Sắp xếp danh sách theo MaMH dùng hàm Shaker Sort 15
a) Chương trình COn cuc nnn ng n TH HT Hong 15
b)_ Kiểm tra (hàm Main kiểm tra CC) con nhe 16
c) Kết QUả Chạy nnnnn TT TT Tnhh Huy 16
2.9 Sắp xếp danh sách theo MaMH dùng hàm Selection Sort 16
a) Chương trình COn cuc nnn ng n TH HT Hong 16
b)_ Kiểm tra (hàm Main kiểm tra CC) con nhe 17
c) Kết QUả Chạy nnnnn TT TT Tnhh Huy 18
2.10 Sắp xếp danh sách theo Tên dùng hàm Interchange Sort 18
a) Chương trình COn cuc nnn ng n TH HT Hong 18
b)_ Kiểm tra (hàm Main kiểm tra CC) con nhe 18
c) Kết QUả Chạy nnnnn TT TT Tnhh Huy 19
2.11 Sắp xếp danh sách theo Khóa học dùng hàm Bubble Sort 19
a) Chương trình COn cuc nnn ng n TH HT Hong 20
b)_ Kiểm tra (hàm Main kiểm tra CC) con nhe 20
c) Kết QUả Chạy nnnnn TT TT Tnhh Huy 21
2.12_ Sắp xếp danh sách theo ĐTB dùng hàm Insertion Sort 21
a) Chương trình COn cuc nnn ng n TH HT Hong 21
b)_ Kiểm tra (hàm Main kiểm tra CC) con nhe 22
c) Kết QUả Chạy nnnnn TT TT Tnhh Huy 23
2.13 Sắp xếp danh sách theo Tín chỉ dùng hàm Quick Sort 23
a) Chương trình COn cuc nnn ng n TH HT Hong 23
b)_ Kiểm tra (hàm Main kiểm tra CC) con nhe 24
c) Kết QUả Chạy nnnnn TT TT Tnhh Huy 25
2.14_ Sắp xếp danh sách theo MAMH dùng hàm Merge Sort 25
a) Chương trình COn cuc nnn ng n TH HT Hong 25
b)_ Kiểm tra (hàm Main kiểm tra CC) con nhe 29
c) Kết QUả Chạy nnnnn TT TT Tnhh Huy 30
CHƯƠNG III: TÌM KIÊM VÀ SẮP XÉP TRÊN DSLK 2252222222212 31
3.1 Khởi tạo danh sách liên kết và các chương trình con hỗ trợ 31
3.2_ Nhập thông tin môn hỌọc ccccnn nn nh n Tnhh heo 33
Trang 5b)_ Kiểm tra (hàm Main kiểm tra CC) con nhe 33
c) Kết QUả Chạy nnnnn TT TT Tnhh Huy 35
3.3 Xuất thông tin môn hỌc cnn ng ng Hee 35
A) Chương trÌnh COn tt kg nnn nha kho 35
b)_ Kiểm tra (hàm Main kiểm tra CC) con nhe 36
c) Kết QUả Chạy nnnnn TT TT Tnhh Huy 38
3.4 Đếm số phần tử có trong danh sách thông tin môn học 38
A) Chuong trÌnh COn tt kg nnn nh kho 38
b)_ Kiểm tra (hàm Main kiểm tra CC) con nhe 38
c) Kết QUả Chạy nnnnn TT TT Tnhh Huy 40
3.5 Tìm kiếm thông tin môn học theo mã môn học bằng Liner
11121 IEE I I EE I EI EEE EEL EE Enea 40
a) Chương trình COn cuc nnn ng n TH HT Hong 40
b)_ Kiểm tra (hàm Main kiểm tra CC) con nhe 41
c) Kết QUả Chạy nnnnn TT TT Tnhh Huy 43
3.6 Tìm kiếm thông tin môn học theo tên bằng Liner Search 43
a) Chương trình COn cuc nnn ng n TH HT Hong 43
b)_ Kiểm tra (hàm Main kiểm tra CC) con nhe 43
c) Kết QUả Chạy nnnnn TT TT Tnhh Huy 45
3.7 Hàm hoán vị hỗ trợ cho một số hàm sắp xếp :: :‹: 45
3.8 Sắp xếp thông tin môn học theo MaMH bằng Selection Sort 46
a) Chương trình COn cuc nnn ng n TH HT Hong 46
b)_ Kiểm tra (hàm Main kiểm tra CC) con nhe 47
c) Kết QUả Chạy nnnnn TT TT Tnhh Huy 48
3.9 Sắp xếp thông tin môn học theo mã môn hoc bang
lnterchang€ SOFẨ nen nền nh nh TH Thế BH Kế TT ben TK bến tà th 48
a) Chương trình COn cuc nnn ng n TH HT Hong 48
b)_ Kiểm tra (hàm Main kiểm tra CC) con nhe 49
c) Kết QUả Chạy nnnnn TT TT Tnhh Huy 51
3.10 Sắp xếp thông tin môn học theo mã môn học bằng Bubble
Sort 51
A) Chương trÌnh COn tt kg nnn nha kho 51
b)_ Kiểm tra (hàm Main kiểm tra CC) con nhe 52
Trang 63.11 Sort
a)
b)
C) 3.12 Sort a) b) C) Sắp xếp thông tin môn học theo mã môn học bằng Insertion 4
Chương trình COn ccc cnnnnnn ng n nghe rro 54
Kiểm tra (hàm Main kiểm tra CC) che 55
J4{-i0ei0.Near PP 56 Sắp xếp thông tin môn học theo mã môn học bằng Quick
56
Chương trình COn ccc cnnnnnn ng n nghe rro 56
Kiểm tra (hàm Main kiểm tra CC) che 58
Trang 7DANH MUC BANG, HINH A
Bang 1.1 DU QU MAU cccccceceecsceeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeereeeeeeeeesaaaaas 2
Y
Hinh 2 1 K@t qua thdng tin MON NOC ccccceesteeeeeeessesseeeeeessesesesseeeeaaeeeaas 5
Hình 2 2 Xuất thông tin môn học uc HS vn ng nghe hàn 7
Hình 2 3 Tìm kiếm mã môn học bằng Liner Search c cv cssiiksserervsrxes 9
Hình 2 4 Tìm kiếm mã môn học bằng Binary Search ccc ch viyrses 11
Hình 2 5 Tìm kiếm tên môn học bằng Liner Search cv cksssisiivrres 12
Hình 2 6 Tìm kiếm tên môn học bằng Binary Search ccc ch riyrsea 14
Hình 2 7 Sắp xếp mã môn học bằng Shaker SOFẨ cà nh nh nh nh khen 16
Hình 2 8 Sắp xếp mã môn học băng SeleCtiOn SOF cu ST nh nh kh 18
Hình 2 9 Sắp xếp tên môn học bằng Interchange SOT - nh nen nhe 19
Hình 2 10 Sắp xếp mã môn học băng Bubble Sort che 21 Hình 2 11 Sắp xếp theo tên môn học bằng Insertion SOFẨ che reo 23 Hình 2 12 Sắp xep tin chi bang Ợ gHơ7ơở7„„7Ừ7Ừýy,d 25 Hình 2 13 Sắp xếp mã môn học bằng Merge SOF ch xe 30
Hình 3 1 Kết quả nhập thông tin môn học vào DSLK ‹ccccccccc‡cc+‡‡ccs+c: 35 Hình 3 2 Kết quả xuất danh sách môn học ra mản hình :++:c++++:::: 38 Hình 3 3 Đém số lượng môn học có trong danh sách ‹cccccc‡‡‡ccxx‡+++: 40 Hình 3 4 Tìm kiếm mã môn học có tron danh sách đã nhập ở trên - - 43 Hình 3 5 Tìm kiếm tên môn học có trong danh sách đã nhập ở trên 45
Hình 3 6 Sắp xếp mã môn học bằng S€l€CEIOH SOẨ cu cu nh nh kh bế 48
Hình 3 7 Sắp xếp mã môn học bằng Interchange Sort eerie 51
Hinh 3.8 Sap xếp mã môn học bằng Bubble SOY cu nh nền kh nhe kéo 54
Trang 8CHUONG I: GIOI THIEU 11 Giới thiệu đề bài
Xây dựng chức năng tìm kiếm và sắp xếp trên các câu trúc hỗ trợ quản lý thông tin các môn học bao gồm các thông tin: Mã môn học (MaMH), Tên
môn học (TenMH), Số tín chỉ (SoTC), Số giờ lý thuyết (GioLT), Số giờ thực hành (GioTH), Số giờ tự học (TuHoc)
1.2 Cấm trúc (khai báo/định nghĩa cấu trúc) Thông tin môn học cần quản lý gồm:
Ũ MaMH: Mã số môn học, gồm một chuỗi ký tự số có chiều dài 10 ký tự
l TenMH: Tên môn học, chỉ quản lý các tên Tiếng Việt với chiều dài 15
ký tự
Ũ SoTC: Số tín chỉ, cho biết số lượng tín chỉ của môn học
l GioLT: Giờ lí thuyết, số giờ học lí thuyết của môn học
Ũ GioTH: Giờ thực hành, số giờ học thực hành của môn học
Trang 9float GioTH;
float Tuhoc;
};
1.3 Dữ liệu mẫu
Mã Tên Số tín Giờ lý Giờ Tự
môn môn chỉ thuyết thực học học học hành 1 Toán 12 5 5 2 2 Van 11 4 3 1 3 Anh 10 6 2 6 4 Sw 9 4 3 4 5 Dia 7 5 4 3 6 Tin 15 3 1 5 7 Lí 6 6 2 6 8 Hóa 8 4 5 2 9 Sinh 13 5 4 4 10 Thé 4 7 2 1 duc Bảng 1 1 Dữ liệu mẫu 1.4 Các chức năng trén mang cau tric Nhập danh sách môn học Xuất danh sách môn học
Trang 10Các chức năng trên danh sách liên kết U
U U
Nhập danh sách môn học Xuất danh sách môn học
Trang 11CHUONG II: TIM KIEM VA SAP XEP TREN MANG CAU TRUC
2.1 Nhập danh sách môn học
a) — Chương trình con
Đề nhập danh sách môn học, cần xây dựng hai chương trình con gồm:
0 void nhap_o(MONHOC& a);: hễ trợ nhập thông tin một môn học
gồm mã môn học, tên môn học, tín chỉ, giờ lý thuyết, giờ thực hành, tự học
1 void nhap_Mang(MONHOC a[], int n);: hỗ trợ nhập danh sách môn học //Nhập ô cho thông tin môn học void nhap_o(MONHOC& a) { Cout << " Ma mon hoc:"; cin.getline(a.MaMH, 10); Cout << " Ten mon hoc:"; cin.getline(a IlenMH, 10); cout << " So tin chi:"; cin >> a.SoTC; cout << " Gio li thuyet:"; cin >> a.GioLT; cout << " Gio thuc hanh:"; cin >> a.GioTH; cout << "Tu hoc:"; cin >> a.Tuhoc; cin.ignore();
}
//Nhap Théng tin môn học
Trang 12} b) — Kiểm tra (hàm Main kiểm tra cíc) void Main() { const int spt = 3; MONHOC dsmh[spt]; nhap_Mang(dsmh, spt); return @; c) — Kết quả chạp Hình 2 1 Kết quả thông tin môn „ học 22_ Xuất danh sách môn học a) Chương trình con
0 void xuat_o(MONHOC a);: hỗ trợ xuất một thông tin môn học
gồm: mã môn học, tên môn học, số tín chỉ, giờ lý thuyết, giờ thực hành, tự
học
0 void xuat_Mang(MONHOC af], int n);
Trang 13cout << " Ma mon hoc:" << a.MaMH << endl; cout << " Ten mon hoc:" << a.TenMH << endl; cout << "So tin chi:" << a.SoTC << endl; cout << " Gio li thuyet:" << a.GioLT << endl; cout << " Gio thuc hanh:" << a.GioTH << endl; cout << " Tu hoc:" << a.Tuhoc << endl;
}
//Xuât thông tin môn học
void xuat_Mang(MIONHOC a[], int n) { cout << " ==========> Danh sach mon hoc: <========-=-' << endl; for (inti = 0; i < n; i++) { xuat_o(a[il); cout << endl;
} }
b) Kiém tra (ham Main kiém tra ctc) void Main()
{
const int spt = 3;
MONHOC dsmh[spt];
nhap_Mang(dsmh, spt); //kiém tra phần xuất
Xuat_Mang(dsmh, spt);
Trang 14c) Két qua chay
Hình 2.2 Xuất thông tin môn học
2.3 Tìm kiếm thông tin môn học theo mã môn học dùng Liner Search a) Chương trình con
ñ int LinerSearch(MONHOC a[], int n, char x[]): Tim
kiém thông tin môn học theo MaMH
//Dùng LinearSearch để tìm mã môn học int LinearSearch(MONHOC af], int n, char x[])
{
for (inti = 0; i < n; i++)
Trang 15const int spt = 3;
MONHOC dsmh[spt];
nhap_Mang(dsmh, spt); xuat_Mang(dsmh, spt); char MaMH[10];
cout << "\n Nhap ma mon hoc muon tim: "; cin.getline(MaMH, 11);
/Tìm kiếm MaMH bang linersearch
int i = LinearSearch(dsmh, spt, MaMH); if (i >= 0) { cout << "\n mon hoc bang LinerSearch: < xuat_o(dsmh[i]); > Khong co thong tin < mee ee ee ee LL iW,
„ Hình 2 3 Tìm kiếm mã môn học bằng Lier Search
Trang 16ñ int BinarySearch(MONHOC a[], int n, char x[]): Tim
kiém thông tin môn học theo MaMH
//Ham tim kiếm BinarySearch theo MAMH
int BinarySearch(MONHOC a[], int n, char x[])
{
int left = 0; int right = ñn - 1;
int mid = (left + right) / 2;
while (left <= right && strcmp(a[mid].MaMH, x) != 0)
{
if (strcemp(x, a[mid].MaMH) < 0) right = mid - 1;
else left = mid + 1; mid = (left + right) / 2; } if (left > right) return (-1); return (mid); } d) Kiémtra (ham Main kiém tra ctc) void Main() { const int spt = 3; MONHOC dsmh[spt]; nhap_Mang(dsmh, spt); xuat_Mang(dsmh, spt); char MaMH[10];
cout << "\n Nhap ma mon hoc muon tim: "; cin.getline(MaMH, 11);
/[Tim Kiém MaMH bang BinarySearch