Báo cáo tiến trình: mô tả bài toán+ Tìm hiểu về liên kết đôi
Bài toán “quản lí sinh viên” nhằm giải quyết và đáp ứng một cách hiệu quả nhu cầu về quản lí thông tin trong Trường Đại học. Tin học hóa trong công tác quản lí nhằm giảm bớt sức lao động của con người, tiết kiệm được thời gian, độ chính xác cao, gọn nhẹ và tiện lợi hơn rất nhiều so với làm thủ công.
Hiện nay số lượng sinh viên tại các trường ngày càng tăng để quản lí sinh viên một cách tốt nhất về tông tin sinh viên, lịch thi, điểm... đòi hỏi phải có một chương trình quản lí sinh viên tốt.
Mục đích của chương trình là quản lí quá trình học tập của sinh viên.Mỗi sinh viên khi trúng tuyển vào trường cần cung cấp cho phòng quản lí hồ sơ của sinh viên như: họ tên, ngày sinh, nơi sinh, giới tính, khoa, ...) Sau đó thì phân lớp cho các sinh viên.
Bộ giáo vụ sẽ cấp cho mỗi sinh viên một mã số riêng biệt gọi là mã số sinh viên. Trong quá trình học tập của sinh viên, bộ phận giáo vụ sẽ ghi chép nhận xét về sinh viên.
Mỗi môn học cũng sẽ được phân biệt bởi mã số môn học. Các thông tin khác liên quan đến môn học là tên môn học, số học phần của môn học và giáo viên phụ trách. Sau khi giảng dạy xong môn học thì giáo viên phụ trách phải cung cấp cho phòng giáo vụ kết quả học tập sinh viên bao gồm: mã số môn học, tên môn học, mã số sinh viên, tên sinh viên và điểm kiểm tra thành phần, điểm trung bình, điểm cả năm, qua đó xếp loại hạnh kiểm học lực, in ấn và báo cáo đánh giá chất lượng về học tập, rèn luyện của sinh viên, sau đó báo cáo kết quả lên phòng quản lí rèn luyện học sinh sinh viên.
Phòng rèn luyện qua đó đánh giá và xếp loại được hạnh kiểm và học lực của sinh viên để xét học bổng và khen thưởng theo quy định học lực khá điểm trung bình kì >=8,0, đạt hạnh kiểm tốt.
Mỗi học kì phòng quản lí học tập sinh viên có nhiệm vụ sắp xếp lịch thi cuối kì, thi lại cuối năm theo quy định tổ chức và quản lí kỳ từ khâu chuẩn bị (chọn môn thi, các lớp tham gia) xếp thí sinh vào phòng thi, xếp lịch thi, xử lí kết quả in ấn các danh sách, báo cáo tổng hợp, đánh giá chất lượng.
Như đã biết sinh viên 1 khóa của khoa mình số lượng không phải là ít,(theo kết quả thống kê mới đây (10/2013) số lượng phác thảo là 800SV/1 khóa) để quản lí và truy xuất thông tin của 1 sinh viên trong khoa cũng không phải là chuyện đơn giản, hơn nữa sự thay đổi về số lượng của sinh viêncó thể xảy ra và xảy ra bất kì lúc nào vì vậy việc xây dựng 1 chương trình để quản lí sinh viên là điều vô cùng cần thiết.
+Yêu cầu
Xây dựng chương trình quản lý sinh viên 1 khóa của khoa bằng ngôn ngữ C (sử dụng danh sách liên kết đôi để tổ chức dữ liệu cho danh sách sinh viên) . Chương trình bao gồm các chức năng sau :
- Nhập danh sách thông tin sinh viên
- In danh sách thông tin sinh viên
- Tìm kiếm thông tin sinh viên qua mã số sinh viên, qua tên.....
- Danh sách sinh viên thi đỗ
- Xóa một nhân viên ( Thông qua mã nhân viên)
- Sửa đổi thông tin về một sinh viên
-thêm 1 sinh viên vào trước vị trị nào đó
- thêm 1 sinh viên vào sau vị trí nào đó
-Sắp xếp sinh viên theo tên
- Sắp xếp sinh viên theo mã số
- Thoát
.............................
............................
Tổng quan về danh sách liên kết.
Danh sách liên kết là danh sách mà các phần tử ( Node) liên kết với nhau nhờ vào vùng liên kết của chúng. Mỗi nude bao gồm hai thành phần:
Phần Data dùng để chứa dữ liệu cần xử lí
Phần liên kết dùng để liên kết dùng để liên kết tới các node khác.
Phân loại.
Tùy cách liên kết giữa các phần tử , danh sách liên kết gồm có nhiều loại khác nhau:
- Danh sách liên kết đơn: mỗi phần tử liên kết với phần tử đằng sau nó trong danh sách.
- Danh sách liên kêt đôi/kép: mỗi phần tử liên kết với các phần tử đứng trước và sau nó trong danh sách.
- Danh sách liên kết vòng: phần tử cuối danh sách liên kết với phần tử đầu danh sách.
TÌM HIỂU VỀ DANH SÁCH LIÊN KẾT ĐÔI.
a) Khái niệm
Mỗi phần tử liên kết với phần tử đứng trước và đứng sau nó trong danh sách.
• Cấu trúc dữ liêu 1 nút
typedef struct tagDnode
{ Data Info;
struct tagDnode *pPre;
struct tagDnode *pNext;
}DNode;
• Cấu trúc List kép
Typedef struct tagDList
{ DNode *pHead;
DNode *pTail;
}DList;
Danh sách liên kết đôi(kép) được tạo từ các nút
(Node) có hai liên kết:
- next_left trỏ đến node đứng trước trong danh sách.
- next_right trỏ tới node kế tiếp trong danh sách
Danh sách liên kết kép được xác định bởi hai con trỏ:
- left trỏ vào node đầu tiên.
- right trỏ vào node cuối cùng.
b, Các thao tác:
b.1.Khởi tạo danh sách liên kết đôi
b.2.Tạo mới 1 phần tử
b.3.Thêm 1 phần tử vào danh sách
b.4.Duyệt qua các nút trong 1 danh sách
b.5.Tìm kiếm 1 phần tử trong danh sách
b.6.Loại bỏ 1 phần tử trong danh sách
b.7.Hủy toàn bộ danh sách
b.8.Tạo 1 danh sách mới/Nhập danh sách