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

cấu trúc dữ liệu và giải thuật bài tập lớn quản lý sinh viên

12 0 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

Tiêu đề Quản lý sinh viên
Tác giả Đào Văn Hải, Nguyễn Văn Hào, Phạm Trọng Minh
Trường học Trường Đại học Công nghệ Đông Á
Chuyên ngành Cấu trúc dữ liệu và giải thuật
Thể loại Bài tập lớn
Năm xuất bản 2022
Thành phố Bắc Ninh
Định dạng
Số trang 12
Dung lượng 2,85 MB

Nội dung

Cầu trúc dữ liệu và giải thuật là một môn học nền tảng trong chương trình huấn luyện trang bị cho sinh viên những tri thức cơ bản về cấu trúc, đữ liệu khi thiết kê và thiết lập các softw

Trang 1

- BỘ GIÁO DỤC VÀ ĐÀO TẠO ~ TRƯỜNG ĐẠI HỌC CÔNG NGHỆ ĐÔNG Á

(bìa 1, bia đóng giấy màu)

BÀI TẬP LỚN HOC PHAN: CAU TRÚC DỮ LIỆU VÀ GIẢI THUẬT

TÊN BÀI TẬP LỚN: QUẢN LÝ SINH VIÊN

Sinh viên thực hiện 0 Ũ Mã sinh viên

Bac Ninh, thang 1 nam 2022

Trang 2

BỘ GIÁO DỤC VÀ ĐÀO TẠO „

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ ĐÔNG Á

(trang phụ bia số 2, bìa mềm)

BÀI TẬP LỚN HOC PHAN: CAU TRUC DU LIEU VA GIẢI THUẬT

Nhom: 12

TEN (BAI TAP LON): QUAN LY SINH VIEN

Sinh viên thực 0 0 Mã sinh Diem

viên bằng hiện

SỐ

Hào

Phạm Trọng 20201022

CÁN BỘ CHÁM 1 CÁN BỘ CHÁM 2

(Ky và ghi rõ họ tên) (Ký và ghi rõ họ tên)

Bac Ninh, thang 1 Nam 2022

Trang 3

MUC LUC (Trinh bay trong trang riéng)

CHUONG I: TONG QUAN VE CAU TRUC DU LIEU VA GIAI THUAT

1.1.MỤC DICH VA NOI DUNG CUA CTDL.wccccccccccccccscessecestettesesteseeees

1.1.1.Mục dichio ccc icccccccccccscccesecetssnessssnssesenesnnssestsesnnesners

1.2.Các khái niệm cơ bán về CTDL và giải thuật 52-22222222

1.2.1.Giải thuật (Algorithm)) c1: 911 SH 1011010111110 112tr

1.2.2.Cấu trúc đữ liệu (data strueture) - 2 s2 E2221222222222 xe

1.2.3.Cầu trúc lưu trữ (storage strucfUre) -s sss c2 re

1.2.4.Ngôn ngữ diễn đạt giải thuật - St 222 re

1.2.5.Xác định độ phức tạp của giải thuật ác c2

CHƯƠNG II: CÀI ĐẶT CHƯƠNG TRÌNH 52 2S 2222211125122 ssee

2.1.GIỚI THIỆU ĐÈ TÀI 2S 2125121121211 211112E151 2n nrreee

D.2.CAU TRUC —

2.2.2.Các chức năng c1 1 1111111111110 1111111 HH HH0 111g

2.3.Chương trình eon i- : : 2.1111 11111 1111 111111111 0110111 11 01111111 tk

2.3.1.Cầu trúc sinh viên -:- 22t 21111112221 1102111110 reg

2.3.2.Khởi tạo một node sinh viên c0 2n n net

2.3.3.Khởi tạo danh sách liên kết sSn n1 11511111121111 11112151 x6

2.3.4.Nhập danh sách sinh viễn S11 nnnn SH 911211821128 tt

2.3.5.Chèn thêm một sinh viên vào danh sách - các s22

2.3.6.Sắp xếp danh sách sinh viên theo điểm trung bình

2.3.7.Chức năng chọn thao tác ác 1111 1n HH0 121011

2.3.8.Kết luận 22 c n H22122122 1212121222222 2a

Trang 4

Lời Mở Đầu

Trong ký nguyên Công Nghệ Thông Tin, câu trúc dữ liệu là nên tảng trong mọi

hoạt động của các tô chức.Cầu trúc dữ liệu được dấu hiệu dưới nhiều khía cạnh Cầu trúc

dữ liệu và giải thuật là một môn học nền tảng trong chương trình huấn luyện trang bị cho

sinh viên những tri thức cơ bản về cấu trúc, đữ liệu khi thiết kê và thiết lập các software

Trong các bước khắc phục một bài toán trên PC, giai đoạn lập trình có vai trò trọng yêu nhất.Việc ứng dụng tin học ngày càng phát triển, các yêu cầu của thực tiễn ngày càng

phong phú.Điều đó đòi hỏi phải thiết kế các giải thuật khắc phục một cách tốt nhất vẫn đề

đặt ra

Trang 5

CHUONG I: TONG QUAN VE CAU TRUC DU LIEU VA GIAI THUAT

1.1.MỤC DICH VA NOI DUNG CUA CTDL

1.1.1.Mục đích

- Môn học CTDL & giải thuật dành cho các sinh viên đã có những kiến thức cơ

bản về lập trình và thành thạo ít nhất một trong số các ngôn ngữ lập trình cơ bản như Pascal, C, C++,

- Củng cô và nâng cao kiến thức cơ bản về cầu trúc dữ liệu và giải thuật của ngành khoa học máy tính

- Tăng cường khả năng phân tích, thiết kế và cài đặt các chương trình cho máy tính

- Nâng cao khả năng tư duy trừu tượng và sự khái quát khi giải quyết các bài toán thực tế

bằng máy tính

1.1.2.Nội dung

- Trình bầy các phương pháp phân tích và thiết kế một chương trình

- Giới thiệu các cầu trúc dữ liệu từ đơn giản (các cau trúc tuyến tính như : mảng, danh sách) đến phức tạp (các cầu trúc phi tuyến như: cây, đồ thị) và các thao tác cơ bản tương

ứng trên các cầu trúc dữ liệu

- Tìm hiểu các giải thuật từ cơ bản như các giải thuật sắp xếp, tìm kiếm, đến một số giải thuật nâng cao như các giải thuật đệ quy, các giải thuật trên các cấu trúc dữ liệu cây, đồ thị

1.2.Các khái niệm cơ bản về CTDL và giải thuật

1.2.1.Giải thuật (Algorithm)

a.Khái niệm

- Là một đặc tả chính xác và không nhập nhằng về một chuỗi các bước có thể được thực hiện một các tự động, đề cuối cùng ta có thé thu được các kết quả mong muốn

- Đặc ta (specification) : ban mô tả chỉ tiết và đầy đủ về một đối tượng hay một vấn đẻ b.Một số yêu cầu của giải thuật

- Đúng đắn

- Rõ ràng

Trang 6

- Phải kết thúc sau một số hữu hạn bước thực hiện

- Có mô tả các đối tượng đữ liệu mà thuật toán sẽ thao tác như dữ liệu vào (nguồn), dữ

liệu ra (đích) và các dữ liệu trung gian

- Có thời gian thực hiện phải hợp ly

1.2.2.Cau tric dir liéu (data structure)

a Khai niém

- Là kiểu đữ liệu mà bên trong nó có chứa nhiều thành phần dữ liệu và các thành phần dữ liệu day được tổ chức theo một cấu trúc nào đó Nó dùng đề biểu diễn cho các thông tin có cầu trúc của bài toán Cấu trúc dữ liệu thê hiện khía cạnh logic của dữ liệu

- Còn các dữ liệu không có cau tric duoc gọi là các dữ liệu vô hướng hay các dữ liệu đơn

giản

b.Các kiểu cấu trúc dữ liệu

* C6 hai loại cầu trúc dữ liệu chính :

- Cầu trúc tuyến tính: là cấu trúc dữ liệu mà các phần tử bên trong nó luôn được bồ trí

theo một trật tự tuyến tính hay trật tự trước sau Đây là loại cầu trúc dữ liệu đơn giản nhất Ví dụ :mảng, danh sách

- Cầu trúc phi tuyến: là các CTDL mà các thành phần bên trong không còn được bồ trí

theo trật tự tuyến tính mà theo các cấu trúc khác

1.2.3.Cẫu trúc lưu trữ (storage structure)

- Cấu trúc lưu trữ của một cầu trúc dữ liệu thê hiện khía cạnh vật lý (cài đặt) của

cầu trúc dữ liệu đó

- VỀ nguyên tắc, nó là một trong số các cách tô chức lưu trữ của máy tính

- Tuy nhiên trong thực tế sử dụng, cầu trúc lưu trữ thường được hiểu là cấu trúc kiểu dữ

liệu mà một ngôn ngữ lập trình hỗ trợ, và số lượng các cầu trúc lưu trữ thường là số lượng các kiêu dữ liệu của ngôn ngữ lập trình đó

a.Các kiểu cấu trúc lưu trữ

* Cầu trúc lưu trữ trong: là CTLT nằm ở bộ nhớ trong (bộ nhớ chính) của máy tính CTLT này có đặc điểm là tương đổi đơn giản, dễ tô chức và tốc độ thao tác rất

Trang 7

nhanh Tuy nhiên, CTLT này có nhược điểm là không có tính lưu tồn (persistence), và

kích thước khá hạn chế

- Cấu trúc lưu trữ trong có hai loại:

+ Cầu trúc lưu trữ tĩnh: là CTUT mà kích thước dữ liệu luôn cổ định Cấu trúc này còn được gọi là CTLUT tuần tự

© Các ngăn nhớ đứng liền kê nhau thành một dãy liên tục trong bộ nhớ

© Số lượng và kích thước mỗi ngăn là có định

© Có thê truy nhập trực tiếp vào từng ngăn nhờ chỉ số, nên tốc độ truy nhập vào các ngăn là đồng đều

+ Cầu trúc lưu trữ động: là CTLT mà kích thước dữ liệu có thể thay đổi trong khi chạy

chương trình Cầu trúc này còn được gọi là cầu trúc con trỏ hay móc nồi

© Chiếm các ngăn nhớ thường không liên tục

®©_ Số lượng và kích thước các ngăn có thê thay đối

® Việc truy nhập trực tiếp vào từng ngăn rất hạn chế, mà thường sử dụng cách truy nhập tuần tự, bắt đầu từ một phần từ đầu, rồi truy nhập lần lượt qua các con trỏ móc nối (liên kết)

* Cầu trúc lưu trữ ngoài: là CTLT nằm ở bộ nhớ ngoài (bộ nhớ phụ) CTUT ngoài

thường có cấu trúc phức tạp và tốc độ thao tác chậm hơn rất nhiều so với CTLT trong, nhưng CTLT này có tính lưu tồn và cho phép chúng ta lưu trữ các đữ liệu có kích thước rất lớn

1.2.4.Ngôn ngữ diễn đạt giải thuật

* Nguyên tắc khi sử dụng ngôn ngữ:

- Tính độc lập của giải thuật : ngôn ngữ được chọn phải làm sáng tỏ tỉnh thần của giải thuật, giúp người đọc dé dàng hiểu được logic của giải thuật

- Tính có thể cài đặt được của giải thuật : ngôn ngữ được chọn phải thể hiện được khả

năng có thê lập trình được của giải thuật, và giúp người đọc dễ dàng chuyền từ mô tả giải thuật thành chương trình

* Các ngôn ngữ diễn đạt giải thuật

- Ngôn ngữ tự nhiên

- Lưu đồ giải thuật ( sử dụng các hình vẽ)

- Ngôn ngữ lập trình

Trang 8

1.2.5.Xác định độ phức tạp của giải thuật

a.Khái niệm

- Quy kết quả tính toán thời gian thực hiện một giải thuật A nào đó về một hàm có

dạng TA(n), với n đại điện cho kích thước dữ liệu vào của giải thuật A (nếu không có gì

nhằm lẫn giải thuật thì ta kí hiệu ngắn gọn là T(n))

b.Các trường hợp tính T(n):

e Th tot nhat Ttn(n)

e 1⁄h xâu nhat Txn(n)

e 1/h trung binh Ttb(n)

CHUONG II: CAI DAT CHUONG TRINH

2.1.GIỚI THIỆU ĐÈ TÀI

- Xây dựng chức năng menu dùng chọn thao tác để quản lý một danh sách sinh viên có các thông tin sau: Mã sinh viên (MaSV), Họ đệm (HoDem), Tên (Ten), Điểm trung bình (DiemTB), Mã lớp (MaLop) Và các chức nặng như: Nhập danh sách sinh viên (Nếu nhập mã số >= 0 thì dừng nhập), chèn thêm sinh viên vào danh sách, sắp xếp danh sách sinh viên theo điểm trung bình giảm dần

2.2.CÂU TRÚC

2.2.1.Cau 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ầu trúc quản lý sinh viên gồm

-FMaSV: Mã sinh viên, gồm chuỗi kí tự số có chiều dai 10 ki tu

+HoDem: Ho dém, gom chuỗi kí tự chữ có chiều dài 20 kí tự

+Ten: Tén, gom chudi ki tu chit co chiéu dai 15 ki tu

+DiemTB: Điểm trung bình, gồm kí tự số thực

+MaLop: Mã lớp, gồm chuỗi kí tự chữ có chiều dài 10 kí tự

- Code :

2.2.2.Các chức năng

- Các chức năng trên mảng cầu trúc/danh sách liên kết

+ Nhập, xuất danh sách

-t Chèn thêm một sinh viên vào danh sách

Trang 9

+ Sắp xếp danh sách ()

2.3.Chương trình con

2.3.1.Cầu trúc sinh viên

6 //khoti tao cau truc sinh vien

7 struct SinhVien {

8 int mssvj;

11 float diemtb;

13 * 35

14 + typedef struct SinhVien sinhvien;

2.3.2 Khởi tạo một node sinh viên

16 //Khoi tao mot node

17 struct node {

18 sinhvien *data;

19 struct node* link;

28 — };

21 typedef struct node Node;

22

51 Node *KhoiTaoNode() {

52 sinhvien® sv = new sinhvien;

53 Input_ThongTin(sv)j5

54 Node* p = new Node;

55 if (p == NULL) {

56 cout << “Cap phat bo nho that bai\n";

57 return @;

59 p->data = sv;

68 p->link = NULL;

61 return p;

62 + }

63

2.3.3.Khởi tạo danh sách liên kết

Trang 10

23 //Khoi tao danh sach Lien két

24 struct list {

27 * 35

28 typedef struct list List;

29 void KhoiTaoList(List &1) {

30 1.pHead = 1.pTail = NULL;

31 }

32

2.3.4.Nhập danh sách sinh viên

- Đề nhập danh sách sinh viên, cần xây dựng các hàm sau:

+ void Input_ThongTin

33 //Ham nhap thong tin

34] void Input_ThongTin(sinhvien *sv) {

35 cout << "Nhap ma so sinh vien : \n";

36 cin >> sv->mssv;

38 cout << “Nhap ho sinh vien: \n";

40 getline(cin; sv->ho) ;

42 cout << “Nhap ten sinh vien : \n";

43 getline(cin,sv->ten);

45 cout << “Nhap diem trung binh cua sinh vien:\n";

46 cin >> sv->diemtb;

48 cout << ”“Nhap lop cua sinh vien : \n";

49 getline(cin, sv->lop);

58 — }

+ void Show

10

Trang 11

75 //Ham xuat danh sạch sinh vìien

76 void Show(List 1) {

77 for (Node* k = l.pHead; k != NULL; k = k->link) {

78 cout << “MSSV : ” << k->data->mssv<<endl;

79 cout << "Ho : ™ << k->data->ho << endl;

8e cout << "Ten " << k->data->ten << endl;

81 cout << “Diem trung binh : “ << k->data->diemtb << endl;

82 cout << “Lop : ” << k->data->lop << endl;

84 }

85 + }

86 [] void showNode(Node *k) {

88 cout << “MSSV : " << k->data->mssv << endl;

89 cout << “Ho : ™ << k->data->ho << endl;

98 cout << “Ten : " << k->data->ten << endl;

91 cout << “Diem trung binh : ” << k->data->diemtb << endl;

92 cout << “Lop : “ << k->data->lop << endl;

s3-)

94

2.3.5.Chèn thêm một sinh viên vào danh sách

- Đề chèn thêm một sinh viên vào danh sách, ta dùng hàm sau:

+ void Them VaoDauMotSinh Vien

64

65

66

67

68

69

79

71

72

73

//Ham them sinh vien

void ThemVaoDauMotSinhVien(List 81, Node *p) {

if (l.pHead == NULL) {

l.pHead = l.pTail= p;

}

else {

p->link = 1.pHead;

l.pHead = p;

2.3.6.Sắp xếp danh sách sinh viên theo điểm trung bình

- Đề sắp xếp danh sách, ta dùng hàm sau:

+void

2.3.7.Chức năng chọn thao tác

- Đề chọn chức năng , ta dùng hàm sau:

+ void menu

11

\n";

Trang 12

95 //ham menu

96] void ChucNang(List 81) {

97 int n;

98 cout << “======Danh Sach Chuc Nang=========Ì\n”;

99 cout << "1 => Nhap, them 1 sinh vien moi \n";

190 cout << "2 => In danh sach sinh vien \n ";

101 cout << "@ = >Thoat chuong trinh\n";

192 [—] while (1){

183 cout << "Nhap chuc nang ban chon: ”;

104 cin >> nj

105 if (n == 1) {

106 cout << “Moi Ban nhap thong tin 1 sinh vien : \n";

108 ThemVacoDauMotSinhVien(1, p);

110 FJ if (n == 2) {

111 cout << “Danh Sach Sinh Vien : \n";

114) if (n == @) {

116 + }

118 + }

119

2.3.8.Kết luận

- Đây là một môn học khó và bài báo cáo này là kết quả của cả nhóm làm việc

- Báo cáo này chúng em còn nhiều sai sót cần phải chỉnh sửa.Chúng em mong mình có thê cải thiện tôt hơn trong thời gian tới

- Do thời gian có hạn nên chương chỉnh còn chưa ưng ý

12

Ngày đăng: 22/07/2024, 17:29

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

TÀI LIỆU LIÊN QUAN

w