Xác định bài toánBài toán quản lý sinh viên nhằm hỗ trợ các cán bộ hoặc nhà trường dễ dàng theo dõi thông tin sinh viên, bao gồm mã sinh viên, tên, lớp, điểm số, và thông tin liên hệ.. Đ
Trang 1ĐẠI HỌC BÁCH KHOA HÀ NỘI
TRƯỜNG ĐIỆN – ĐIỆN TỬ
BÁO CÁO BÀI TẬP LỚN MÔN CẤU TRÚC DỮ LIỆU & GIẢI THUẬT
Nhóm 19:
Thành viên 1: Phạm Văn Minh – 20233534
Thành viên 2: Lê Bá Quyết –
Thành viên 3:
Trang 2ĐỀ TÀI: QUẢN LÝ HỌC PHÍ
Nội dung
I Xác định bài toán 3
II Đối tượng được quản lý 4
III Xác định thuật toán 4
1. Danh sách liên kết đơn 4
1.1 Nhập danh sách sinh viên 4
1.2 In danh sách sinh viên 5
1.3 Tìm kiếm sinh viên theo mã số 6
1.4 Sắp xếp danh sách sinh viên theo điểm trung bình 7
2. Danh sách liên kết đôi 8
2.1 Xử lý nhập thông tin môn học 8
2.2 In danh sách môn học 9
2.3 Xóa sinh viên cuối danh sách 9
3. Ngăn xếp 10
3.1 Nhập danh sách từ file 10
3.2 In danh sách 11
3.3 Xóa sinh viên đầu tiên 11
3.4 Đếm số lượng sinh viên 12
3.5 Tìm kiếm sinh viên 13
4. Hàng đợi 14
4.1 Nhập danh sách sinh viên 14
4.2 Xuất danh sách sinh viên 14
IV Cài đặt chương trình 14
Trang 3I Xác định bài toán
Bài toán quản lý sinh viên nhằm hỗ trợ các cán bộ hoặc nhà trường dễ dàng theo dõi thông tin sinh viên, bao gồm mã sinh viên, tên, lớp, điểm số, và thông tin liên hệ Việc quản lý sinh viên giúp xử lý nhanh chóng các hoạt động như tìm kiếm, sắp xếp, thống kê số lượng sinh viên
II Đối tượng được quản lý
Sinh viên: Mã sinh viên, họ tên, lớp học, chuyên ngành, số học phí cần
nộp, số học phí đã nộp, các khoản miễn giảm (nếu có)
Phiếu thu học phí: Mã phiếu thu, mã sinh viên, số tiền nộp, ngày nộp, và
người thu
Chi tiết quản lý học phí sinh viên:
Sinh viên: Bao gồm mã sinh viên, họ và tên, lớp học, chuyên ngành, tổng
số học phí cần nộp, số tiền đã nộp, số tiền miễn giảm, và số tiền còn phải đóng
Phiếu thu học phí: Mã phiếu thu, mã sinh viên, số tiền nộp, ngày nộp, số
tiền còn thiếu, người lập phiếu
III Xác định thuật toán
1 Danh sách liên kết đơn
Để thực hiện các chức năng trên ta cần:
Khai báo cấu trúc dữ liệu
Khai báo cấu trúc một nút trong danh sách liên kết đơn
Khai báo danh sách liên kết đơn
Khởi tạo danh sách rỗng
Tạo nút mới với thành phần dữ liệu x
Trang 41.1 Nhập danh sách sinh viên và học phí
Nhập danh sách n sinh viên, mỗi sinh viên có thông tin về mã sinh viên,
họ tên, lớp, số học phí cần nộp, số tiền đã nộp, và các khoản miễn giảm
Sử dụng thuật toán để thêm các sinh viên vào danh sách liên kết đơn
o Mô tả thuật toán:
- Nhập n danh sách và thông tin từng sinh viên và học phí
- Cho i chạy từ i=1->n, nếu i<= n thì sau mỗi lần duyệt thêm 1 phần
tử vào sau danh sách
- Nếu i > n thì kết thúc thuật toán
o Sơ đồ thuật toán
1.2 In danh sách sinh viên và học phí
In thông tin về mã sinh viên, họ tên, lớp, số học phí cần nộp, số đã nộp, và
số tiền miễn giảm
Sơ đồ thuật toán
Trang 51.3 Tìm kiếm sinh viên theo mã số
Tìm kiếm sinh viên theo mã sinh viên để xem thông tin về học phí của sinh viên đó
Mô tả thuật toán:
• Bước 1: p = DQ.Head;
• Bước 2: Lặp trong khi (p!=NULL) và (p->infor.ma != x) thì p = p -> Next;
• Bước 3:
o Nếu p != NULL thì p trỏ đến phần tử cần tìm
o Ngược lại thì không tìm thấy phần tử cần tìm
Sơ đồ thuật toán
Trang 61.4 Sắp xếp danh sách sinh viên theo mức học phí
Sắp xếp danh sách sinh viên theo số học phí cần nộp từ thấp đến cao hoặc ngược lại
Mô tả thuật toán:
+ Mô tả thuật toán: Sử dụng 2 con trỏ p, q dể duyệt và so sánh với nhau
p = Q.Head;
Lặp trong khi (p != NULL)
q = p -> next;
Lặp trong khi (q != NULL)
So sánh giá trị của phần tử p và q nếu không đúng trật tự thì hoán đổi giá trị của p và q cho nhau
Sơ đồ thuật toán
Trang 72 Danh sách liên kết đôi
Danh sách liên kết đôi được sử dụng để quản lý chi tiết phiếu thu học phí của sinh viên
2.1 Xử lý nhập thông tin môn học
Nhập thông tin phiếu thu của mỗi sinh viên, bao gồm mã phiếu thu, mã sinh viên, số tiền nộp, ngày nộp và người lập phiếu
Mô tả thuật toán
Khởi tạo danh sách rỗng
Tạo nút mới p với thành phần dữ liệu x
Nhập n sản phẩm
Duyệt từ i=1 đến i<= n Với mỗi lần duyệt, lưu 1 phần tử vào p
Ngược lại i>n thì kết thúc
Sơ đồ thuật toán
Trang 82.2 In danh sách môn học
Duyệt qua danh sách các phiếu thu và in thông tin chi tiết của mỗi phiếu
Sơ đồ thuật toán
2.3 Xóa sinh viên cuối danh sách
Xóa sinh viên cuối cùng trong danh sách liên kết đôi
Mô tả thuật toán:
Kiểm tra danh sách không rỗng
Lưu phần tử cuối tạm thời vào p
Chuyển phần tử cuối tới phần tử bên trái
Xóa p
Kiểm tra lại danh sách
Trang 9 Sơ đồ thuật toán
3 Ngăn xếp
3.1 Nhập danh sách từ file
Nhập danh sách sinh viên và học phí từ file đã lưu trước đó vào ngăn xếp
Mô tả thuật toán:
- Khởi tạo danh sách rỗng
- Nhập số lượng (n) sách
- Duyệt từng i=1 cho đến khi i<= n Với mỗi 1 phần tử ta thêm 1 thông tin sách vào sau danh sách
- Nếu i>n, kết thúc
Sơ đồ thuật toán:
Trang 103.2 In danh sách
In thông tin về học phí của các sinh viên từ ngăn xếp
Sơ đồ thuật toán:
3.3 Xóa sinh viên đầu tiên
Xóa sinh viên đầu tiên trong danh sách ngăn xếp
Mô tả thuật toán:
- Kiểm tra danh sách không rỗng
- Lưu phần tử đầu vào p
- Chuyển phần tử đầu tới phần tử bên cạn
- Xóa phần tử đã được lưu trong p -> Xóa p
- Kiểm tra: nếu danh sách chỉ có 1 phần tử, khi xóa đi phần tử cuối không còn
Sơ đồ thuật toán:
Trang 113.4 Đếm số lượng sinh viên
Đếm tổng số lượng sinh viên trong danh sách
Mô tả thuật toán:
- Bước 1: khởi tạo biến đếm = 0
- Bước 2: Kiểm tra danh sách còn phần tử và duyệt từ phần tử đầu đến phần tử cuối
của danh sách
- Nếu p -> Info == k thì tăng biến đếm lên 1 In ra màn hình giá trị biến đếm
Sơ đồ thuật toán:
Trang 123.5 Tìm kiếm sinh viên
Tìm kiếm thông tin học phí của sinh viên theo mã sinh viên
Mô tả thuật toán:
- Bước 1: p= Q.Head; //p trỏ từ đầu danh sách
- Bước 2: Kiểm tra danh sách còn phần tử và nếu chưa tìm thấy phần
tử thì lặp trong khi (p!=NULL) và (p->Info != k) thì p = p -> Next;
- Bước 3: Nếu p != NULL thì p trỏ đến phần tử cần tìm Ngược lại thì không tìm thấy phần tử cần tìm
Sơ đồ thuật toán:
3.6 Đếm số học sinh cần đóng học phí
Mô tả thuật toán
- Bước 1: khởi tạo biến đếm = 0
- Bước 2: Kiểm tra danh sách còn phần tử và duyệt từ phần tử đầu đến phần tử cuối của danh sách
Nếu p -> Info == k thì tăng biến đếm lên 1 In ra màn hình giá trị biến đếm
Sơ đồ thuật toán:
Trang 134 Hàng đợi
4.1 Nhập danh sách sinh viên
Nhập n sinh viên và lưu vào hàng đợi
Để thực hiện các chức năng trên ta cần:
• Khai báo cấu trúc dữ liệu
• Khai báo cấu trúc một nút trong h àng đ ợi
• Khởi tạo hàng đợi
• Kiểm tra hàng đợi rỗng
Mô tả thuật toán:
Sơ đồ thuật toán:
Trang 144.2 Xuất danh sách sinh viên
Xuất danh sách sinh viên từ hàng đợi ra màn hình
4.3 Xóa bớt dữ liệu của danh sách
Mô tả thuật toán:
• Nếu Q.head==NULL thì kết thúc chương trình
• Nếu Q.head khác NULL ta gán p=Q.head; Q.Head=p->next Q.Head->prev=NULL
Sơ đồ thuật toán
4.4 Tìm kiếm dữ liệu theo mã sách Mô tả thuật toán
Mô tả thuật toán
Sơ đồ thuật toán
IV Cài đặt chương trình