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

Bài tập lớn Đề tài 7 ứng dụng danh sách liên kết Đơn vào quản lý sinh viên

25 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 đề Ứng Dụng Danh Sách Liên Kết Đơn Vào Quản Lý Sinh Viên
Tác giả Hà Đình Cường, Nguyễn Tiến Đạt, Nguyễn Lâm Viết Huy
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 2023
Thành phố Bắc Ninh
Định dạng
Số trang 25
Dung lượng 2,26 MB

Nội dung

BỘ GIÁO DỤC VÀ ĐÀO TẠOBÀI TẬP LỚN CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT Nhóm: 7 TÊN BÀI TẬP LỚN: ỨNG DỤNG DANH SÁCH LIÊN KẾT ĐƠN VÀO QUẢN LÝ SINH VIÊN viên Điểm bằng số Điểm bằng chữ... Môn h

Trang 1

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

BÀI TẬP LỚN HỌC PHẦN: CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT TÊN BÀI TẬP LỚN: ĐỀ TÀI 7:ỨNG DỤNG DANH SÁCH LIÊN

KẾT ĐƠN VÀO QUẢN LÝ SINH VIÊN

Nguyễn Lâm Viết Huy K13 DCCNTT13.10.3 20220474

Bắc Ninh, năm 2023

Trang 2

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

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

Nhóm: 7 TÊN BÀI TẬP LỚN: ỨNG DỤNG DANH SÁCH LIÊN KẾT ĐƠN

VÀO QUẢN LÝ SINH VIÊN

viên

Điểm bằng số

Điểm bằng chữ

Trang 3

MỤC LỤC

DANH MỤC BẢNG BIỂU VÀ SƠ ĐỒ 4

Chương 1 Tổng quan về đề tài 5

1.1 Giới thiệu 5

Chương 1 Thuật toán (vẽ sơ đồ, các bước của thuật toán và ví dụ.) 7

2.1 Lưu đồ thuật toán 7

2.2 Bộ dữ liệu mẫu.(khoảng 10 bộ mẫu) 14

2.3 Thiết kế giao diện 15

Chương 3 Cài đặt 18

Module 1: Tạo danh sách sinh viên 18

Module 2 Hiển thị danh sách sinh viên 19

Module 3 Thêm 1 sinh viên vào danh sách, vị trí sinh viên thêm vào do ta chọn 19

Module 4 Liệt kê danh sách sinh viên trên màn hình theo thứ tY giảm dZn của tổng điểm 20

Module 5 Liệt kê tất cả sinh viên đoạt loại giỏi (có ĐTB >= 8.0) 20

Module 6 Nhập vào tên lớp, in ra màn hình danh sách sinh viên của lớp này 21

Module 7 In danh sách sinh viên có điểm trung bình từ [a,b] 21

Kết luận 22

Kết quả đạt được 22

Hướng phát triển 23

Danh mục sách tham khảo 24

Trang 4

DANH MỤC BẢNG BIỂU VÀ SƠ ĐỒ

Hình 2.3 Lưu đồ thuật toàn thêm 1 sinh viên vào vị trí trong danh sách

Trang 5

Chương 1 Tổng quan về đề tài1.1 Giới thiệu.

Môn học cấu trúc dữ liệu và giải thuật là một môn học quan trọng và cơ bản trong

chương trình đào tạo ngành công nghệ thông tin Môn học này giúp sinh viên nắm được các khái niệm, nguyên lý và phương pháp xây dYng, sử dụng và tối ưu hóa các cấu trúc

dữ liệu và giải thuật phù hợp cho các bài toán thYc tế Môn học này cũng đòi hỏi sinh viên phải có khả năng tư duy logic, phân tích và giải quyết vấn đề, cũng như kỹ năng lập trình bằng ngôn ngữ C/C++

Về đề tài của báo cáo của em là: Viết chương trình tạo mô ut Menu để quản lý danh sách sinh viên, mỗi sinh viên là mô ut cấu trúc gồm:

- Mã số sinh viên

- Họ đệm, tên sinh viên

- Điểm trung bình

- Tên lớp

Chương trình gồm các công việc sau:

- Tạo danh sách sinh viên: Quá trình nhập danh sách sẽ dừng lại khi nhập mã số <= 0

- Thêm 1 sinh viên vào danh sách, vị trí sinh viên thêm vào do ta chọn

- Liệt kê danh sách sinh viên trên màn hình theo thứ tY giảm dZn của tổng điểm

- Căn cứ vào ĐTB của sinh viên, liệt kê tất cả sinh viên đoạt loại giỏi (có ĐTB >= 8.0)

- Nhập vào tên lớp, in ra màn hình danh sách sinh viên của lớp này

- In ds sinh viên có điểm trung bình từ [a,b]

Ứng dụng danh sách liên kết đơn vào bài toán quản lý sinh viên

Đề tài này có ý nghĩa thYc tiễn cao, vì việc quản lý danh sách sinh viên là một nhu cZu thường xuyên của các cơ sở giáo dục Đề tài này cũng có tính thách thức, vì yêu cZu sinh viên phải áp dụng các kiến thức về cấu trúc dữ liệu (danh sách liên kết), giải thuật (tìm kiếm, sắp xếp) và lập trình C++ để xây dYng chương trình hoàn chỉnh

Mục tiêu của báo cáo này là:

Trang 6

- Trình bày lý thuyết về cấu trúc dữ liệu danh sách liên kết, các thuật toán tìm kiếm và sắp xếp phổ biến.

- Giới thiệu thiết kế và cài đặt chương trình quản lý danh sách sinh viên bằng C++

- Rút ra kết luận và kiến nghị cải tiến

1.2 phân công công việc.

Bảng 1: Bảng phân công công việc.

1 Làm giao diện console Nguyễn Lâm Viết Huy

2 Tạo danh sách sinh viên Nguyễn Tiến Đạt

3 Làm thuật toán Hà Đình Cường

Trang 7

Chương 2 Thuật toán (vẽ sơ đồ, các bước của thuật toán và ví dụ.)2.1 Lưu đồ thuật toán.

Hình 2.1 Lưu đồ thuật toán nhập dữ liệu

Trang 8

Hình 2.2 Lưu đồ thuật toán xuất dữ liệu.

Trang 9

Hình 2.3 Lưu đồ thuật toàn thêm 1 sinh viên vào vị trí trong danh sách do ta chọn

Trang 10

Hình 2.4 Lưu đồ thuật toán hiển thị danh sách sinh viên theo ĐTB giảm dần

Trang 11

Hình 2.5 Lưu đồ thuật toán hiển thị danh sách sinh viên giỏi( ĐTB >= 8.0).

Trang 12

Hình 2.6 Lưu đồ thuật toán hiển thị danh sách sinh viên của một lớp.

Trang 13

Hình 2.7 Lưu đồ thuật toán hiển thị danh sách sinh viên có ĐTB từ [a, b]

Trang 14

2.2 Bộ dữ liệu mẫu.(khoảng 10 bộ mẫu)

Bảng 1 Bảng dữ liệu mẫu

Trang 15

2.3 Thiết kế giao diện.

Giao diện nhập sinh viên:

Giao diện hiển thị danh sách sinh viên:

Trang 16

Giao diện thêm sinh viên vào vị trí trong danh sách:

Giao diện hiển thị danh sách theo ĐTB giảm dZn:

Trang 17

Giao diện hiển thị sinh viên giỏi( ĐTB >= 8):

Giao diện hiển thị danh sách sinh viên của 1 lớp:

Trang 18

Giao diện hiển thị danh sách sinh viên có ĐTB từ [a, b]:

Trang 19

Chương 3 Cài đặt.

Module 1: Tạo danh sách sinh viên

oid nhapSinhVien ( SinhVien sv ) {

  cout << "Nhap ma so sinh vien (0 de dung): " ;

  cin >> sv maSV ;

  if ( sv maSV == ) 0 return ;

  cin ignore ();

  cout << "Nhap ho ten sinh vien: " ;

  getline ( cin , sv hoTen );

  cout << "Nhap diem trung binh: " ;

  cin >> sv diemTB ;

  cin ignore ();

  cout << "Nhap ten lop: " ;

  getline ( cin , sv tenLop );

}

void xuatSinhVien ( SinhVien sv ) {

  cout << "         " << sv maSV << \t\t " << sv hoTen << " t\t\t " << sv diemTB << \t\t " << sv tenLop << endl ;

Trang 20

Module 3 Thêm 1 sinh viên vào danh sách, vị trí sinh viên thêm vào do ta chọn.

void themSinhVien ( vector SinhVien < > & dssv ) {

bool soSanhDiemTB ( SinhVien , SinhVien ) { b

  return a diemTB > b diemTB ;

Module 5 Liệt kê tất cả sinh viên đoạt loại giỏi (có ĐTB >= 8.0)

bool hocLucGioi ( SinhVien sv ) {

  return sv diemTB >= ; 8

}

void lietKeHocLucGioi ( vector SinhVien < > dssv ) {

  cout << endl ;

  bool coSinhVien false ;

  cout << "Danh sach sinh vien hoc luc gioi: \n " ;

Trang 21

Module 6 Nhập vào tên lớp, in ra màn hình danh sách sinh viên của lớp này.

bool thuocLop ( SinhVien sv , string tenLop ) {

  return sv tenLop == tenLop ;

}

void lietKeTheoLop ( vector SinhVien < > dssv ) {

  cout << endl ;

  string tenLop ;

  cout << "Nhap ten lop can liet ke: " ;

  getline ( cin , tenLop );

  bool coSinhVien false ;

  cout << "Danh sach sinh vien thuoc lop " << tenLop << ": \n " ;

  for ( int ; i = 0 i < dssv size (); i ++ ) {

Module 7 In danh sách sinh viên có điểm trung bình từ [a,b].

bool diemTrongKhoang ( SinhVien sv , double , double ) {

  return sv diemTB >= a && sv diemTB <= ; b

}

void lietKeTheoDiem ( vector SinhVien < > dssv ) {

  double , ; a b

Trang 22

  cin >> >> ;

  bool coSinhVien false ;

  cout << "Danh sach sinh vien co diem trung binh trong khoang [" << a

Trang 23

Kết luậnKết quả đạt được

Trong báo cáo này, em đã trình bày tổng quan về đề tài, các lưu đồ thuật toán, thiết kế và cài đặt chương trình quản lý danh sách sinh viên bằng C++ Em đã đánh giá hiệu năng và

độ phức tạp của chương trình, và rút ra những kết luận và kiến nghị sau:

 Chương trình quản lý danh sách sinh viên có thể hoạt động ổn định và đáp ứngđược các yêu cZu của đề tài Chương trình có giao diện menu thân thiện với ngườidùng, cho phép nhập, xuất, tìm kiếm, sắp xếp và xóa danh sách sinh viên theo cáctiêu chí khác nhau

 Chương trình sử dụng cấu trúc dữ liệu danh sách liên kết để lưu trữ danh sách sinhviên Cấu trúc dữ liệu này có ưu điểm là tiết kiệm bộ nhớ, linh hoạt trong việcthêm, xóa phZn tử, không bị giới hạn kích thước Tuy nhiên, cấu trúc dữ liệu nàycũng có nhược điểm là khó khăn trong việc truy xuất ngẫu nhiên các phZn tử, vàcZn phải quản lý con trỏ một cách cẩn thận để tránh rò rỉ bộ nhớ

 Chương trình sử dụng các thuật toán tìm kiếm tuZn tY và sắp xếp chèn trYc tiếp đểthYc hiện các chức năng tìm kiếm và sắp xếp danh sách sinh viên Các thuật toánnày có độ phức tạp thời gian là O(n) và O(n^2) trong trường hợp xấu nhất Cácthuật toán này đơn giản và dễ hiểu, nhưng không hiệu quả khi số lượng sinh viênlớn

Hướng phát triển.

DYa trên những kết luận trên, em có một số kiến nghị để cải tiến chương trình quản lý danh sách sinh viên như sau:

 Nghiên cứu và áp dụng các cấu trúc dữ liệu khác để lưu trữ danh sách sinh viên, ví

dụ như danh sách liên kết kép, danh sách liên kết vòng, cây nhị phân tìm kiếm,bảng băm… Các cấu trúc dữ liệu này có thể giải quyết một số nhược điểm củadanh sách liên kết đơn, như tăng tốc độ truy xuất ngẫu nhiên, giảm thiểu số lZnduyệt danh sách…

Trang 24

 Nghiên cứu và áp dụng các thuật toán tìm kiếm và sắp xếp nâng cao để thYc hiệncác chức năng tìm kiếm và sắp xếp danh sách sinh viên, ví dụ như tìm kiếm nhịphân, sắp xếp nhanh, sắp xếp chèn nhị phân… Các thuật toán này có thể giảm độphức tạp thời gian của các chức năng này, đặc biệt khi số lượng sinh viên lớn.

 Thêm một số tính năng mới cho chương trình quản lý danh sách sinh viên, ví dụnhư thống kê điểm theo các nhóm, xuất danh sách sinh viên ra file, nhập danh sáchsinh viên từ file, tìm kiếm sinh viên theo nhiều tiêu chí cùng lúc… Các tính năngnày có thể làm cho chương trình quản lý danh sách sinh viên trở nên đa dạng vàphong phú hơn

Em xin chân thành cảm ơn thZy giáo hướng dẫn đã tận tình chỉ bảo và giúp đỡ Em trong quá trình làm báo cáo Em cũng xin cảm ơn các bạn cùng lớp đã góp ý và đóng góp cho báo cáo của Em Em rất mong nhận được những nhận xét và đánh giá khách quan từ thZy giáo và các bạn để Em có thể hoàn thiện báo cáo của mình hơn Xin cảm ơn!

Trang 25

Danh mục sách tham khảo

1 Quản lý sinh viên sử dụng danh sách liên kết đơn (freetuts.net)

2 Bài 69 Chương trình quản lý sinh viên sử dụng struct – Luyện Code (luyencode.net)

3 Donahoe, T., 1993 Finding the Way: Structure, Time, and Culture in School Improvement[pdf]Availableat:

<http://www.schoolsmovingup.net/cs/smu/view/rs/485 >

Ngày đăng: 19/12/2024, 14:50

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

TÀI LIỆU LIÊN QUAN