BẢNG PHÂN CÔNG NHIỆM VỤKết quả thực hiện1 Nguyễn Xuân Chức 22707218 - Hàm xuất bảng thông tin tất cả sinh viên - Hàm thêm sinh viên - Hàm sắp xếp sinh viên theo tên- Hàm xuất danh sách s
Trang 1BỘ CÔNG THƯƠNG TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP THÀNH PHỐ HỒ CHÍ MINH
KHOA CÔNG NGHỆ THÔNG TIN
MÔN HỌC: CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT
NỘI DUNG: QUẢN LÝ DANH SÁCH SINH VIÊN BẰNG DANH SÁCH KỀ
Giảng viên bộ môn: VÕ QUANG HOÀNG KHANG
Lớp học phần : DHKTPM18ATT – 422000161103
Tp Hồ Chí Minh, ngày 01 tháng 09 năm 2023
Nguyễn Xuân Chức 22707218 0389568496Đoàn Ngọc Bảo Uyên 22699971 0943648490
Trang 21 BẢNG PHÂN CÔNG NHIỆM VỤ
thực hiện
Kết quả thực hiện
Điểm của nhóm
Điểm của giáo viên
1 Nguyễn Xuân Chức 22707218 - Hàm xuất bảng
thông tin tất cả sinh viên
- Hàm thêm sinh viên
- Hàm sắp xếp sinh viên theo tên
- Hàm xuất danh sách sinh viên rớt môn
- Hàm xuất danh sách sinh viên có điểm cao nhất
- Hàm ghi / đọc thông tin từ file(txt
và bin)
6/9/2023
28/8-Tốt 10
2 Đoàn Ngọc
Bảo Uyên 22699971 - Menu - Hàm tìm kiếm
theo giải thuật Linear Search
- Hàm xóa sinh viênkhi biết mssv
- Hàm sắp xếp sinh viên theo điểm trung bình
- Hàm chỉnh sửa thông tin sinh viên (mssv / họ tên / tuổi /điểm trung bình )
- Hàm tìm thông tin
sinh viên theo MSSV
6/9/2023 Tốt 10
Trang 328/8-2 MÔ TẢ BÀI TOÁN
*THÔNG TIN LƯU TRỮ:
- Lưu trữ thông tin cơ bản của sinh viên(Struct):
+ Mã số sinh viên
+ Họ tên sinh viên
+ Tuổi sinh viên
+ Điểm trung bình của sinh viên
*CÁC CHỨC NĂNG CHÍNH CỦA CHƯƠNG TRÌNH:
1 Bảng thông tin tất cả sinh viên
2 Thêm 1 hoặc nhiều sinh viên
3 Xóa 1 sinh viên
4 Chỉnh sửa thông tin của 1 sinh viên ( mssv / họ tên / tuổi / điểm trung bình )
5 Sắp xếp sinh viên theo điểm trung bình (/ từ cao đến thấp )
a) Theo điểm trung bình ( Từ thấp đến cao )
b) Theo điểm trung bình ( Từ cao đến thấp )
c) Theo tên ( Từ A Z )
d) Theo tên ( Từ Z A )
6 Truy vấn
a) Thông tin sinh viên theo MSSV
b) Danh sách sinh viên rớt môn
c) Sinh viên có điểm cao nhất
7 Sao lưu vào file QuanLiSinhVien.txt
8 Lấy thông tin từ dữ liệu sẵn có
9 Thoát chương trình
Trang 43 KHAI BÁO DỮ LIỆU
void output(SinhVien sv[], int n);
/*
* SinhVien sv[] : Thao tác mảng sv kiểu SinhVien
*int n : kiểu số nguyên dùng để quản lý số lượng sinh viên
*Dùng để xuất bảng thông tin sinh viên
*/
void them(SinhVien sv[], int n);
/*
* SinhVien sv[] : Thao tác mảng sv kiểu SinhVien
*int n : kiểu số nguyên dùng để quản lý số lượng sinh viên
*Dùng để thêm một hay nhiều thông tin sinh viên
*/
int timMSSV(SinhVien sv[], int n, char mssv[]);
/*
* SinhVien sv[] : Thao tác mảng sv kiểu SinhVien
*int n : kiểu số nguyên dùng để quản lý số lượng sinh viên
*char mssv[] : chuỗi dùng để tìm kiếm mssv dạng chuỗi thuộc sv[]
*Hàm tìm kiếm thông tin sinh viên theo MSSV ( Giải thuật tìm kiếm tuyến tính )
*/
void xoa(SinhVien sv[], int &n);
/*
* SinhVien sv[] : Thao tác mảng sv kiểu SinhVien
*int n : kiểu số nguyên dùng để quản lý số lượng sinh viên
*Dùng để xóa sinh viên trong danh sách
*/
Too long to read on your phone? Save
to read later on your computer
Save to a Studylist
Trang 5void xoaSV(SinhVien sv[], int &n, int k);
/*
* SinhVien sv[] : Thao tác mảng sv kiểu SinhVien
*int n : kiểu số nguyên dùng để quản lý số lượng sinh viên
*int k : vị trí sinh viên cần xóa
*Dùng để xóa thông tin sinh viên khi biết mssv
*/
void chinhSuaMSSV(SinhVien sv[], int n, int k);
/*
* SinhVien sv[] : Thao tác mảng sv kiểu SinhVien
*int n : kiểu số nguyên dùng để quản lý số lượng sinh viên
*int k : vị trí sinh viên cần chỉnh sửa thông tin
* Dùng để chỉnh sửa thông tin về mssv của sinh viên ( MSSV là chuỗi gồm 8 chữ số )
*/
void chinhSuaHoTen(SinhVien sv[], int n);
/*
* SinhVien sv[] : Thao tác mảng sv kiểu SinhVien
*int n : kiểu số nguyên dùng để quản lý số lượng sinh viên
* Dùng để chỉnh sửa thông tin về họ và tên của sinh viên
*/
void chinhSuaTuoi(SinhVien sv[], int n);
/*
* SinhVien sv[] : Thao tác mảng sv kiểu SinhVien
*int n : kiểu số nguyên dùng để quản lý số lượng sinh viên
*Dùng để chỉnh sửa thông tin về tuổi của sinh viên
*/
Trang 6void chinhSuaDiemTB(SinhVien sv[], int n);
/*
* SinhVien sv[] : Thao tác mảng sv kiểu SinhVien
*int n : kiểu số nguyên dùng để quản lý số lượng sinh viên
* Dùng để chỉnh sửa thông tin về điểm trung bình của sinh viên
*/
void sapXepTang(SinhVien sv[], int n);
/*
* SinhVien sv[] : Thao tác mảng sv kiểu SinhVien
*int n : kiểu số nguyên dùng để quản lý số lượng sinh viên
*Dùng để sắp xếp bảng thông tin sinh viên theo điểm trung bình ( từ thấp đến cao )
*/
void sapXepGiam(SinhVien sv[], int n);
/*
* SinhVien sv[] : Thao tác mảng sv kiểu SinhVien
*int n : kiểu số nguyên dùng để quản lý số lượng sinh viên
*Dùng để sắp xếp bảng thông tin sinh viên theo điểm trung bình ( từ cao đến thấp )
*/
void tach(SinhVien sv, char tmp[]);
/*
* SinhVien sv[] : Thao tác mảng sv kiểu SinhVien
Char tmp[] : Chuỗi tạm lưu từ cuối trong chuỗi SinhVien
*Dùng để lưu tạm từ cuối của chuỗi
*/
void sapXepAZ(SinhVien sv[], int n) ;
/*
* SinhVien sv[] : Thao tác mảng sv kiểu SinhVien
*int n : kiểu số nguyên dùng để quản lý số lượng sinh viên
*Dùng để sắp xếp hoTen của SinhVien theo thứ tự A Z
Trang 7void sapXepZA(SinhVien sv[], int n) ;
/*
* SinhVien sv[] : Thao tác mảng sv kiểu SinhVien
*int n : kiểu số nguyên dùng để quản lý số lượng sinh viên
*Dùng để sắp xếp hoTen của SinhVien theo thứ tự Z A
*/
void timThongTin(SinhVien sv[], int n);
/*
* SinhVien sv[] : Thao tác mảng sv kiểu SinhVien
*int n : kiểu số nguyên dùng để quản lý số lượng sinh viên
*Dùng để tìm và xuất thông tin sinh viên theo mssv đã nhập
*/
Trang 8void timThongTinRotMon(SinhVien sv[], int n);
/*
* SinhVien sv[] : Thao tác mảng sv kiểu SinhVien
*int n : kiểu số nguyên dùng để quản lý số lượng sinh viên
*Dùng để xuất bảng thông tin những sinh viên rớt môn ( có điểm trung bình nhỏ hơn 4 )
*/
void timThongTinSinhVienDiemCaoNhat(SinhVien sv[], int n);
/*
* SinhVien sv[] : Thao tác mảng sv kiểu SinhVien
*int n : kiểu số nguyên dùng để quản lý số lượng sinh viên
*Dùng để in ra thông tin sinh viên có điểm trung bình cao nhất
*/
void luuFileBin(SinhVien sv[], int n);
/*
* SinhVien sv[] : Thao tác mảng sv kiểu SinhVien
*int n : kiểu số nguyên dùng để quản lý số lượng sinh viên
*Dùng để lưu trữ chính những thông tin sinh viên
*/
void luuFileTxt(SinhVien sv[], int n);
/*
* SinhVien sv[] : Thao tác mảng sv kiểu SinhVien
*int n : kiểu số nguyên dùng để quản lý số lượng sinh viên
*Dùng để lưu trữ phụ (để đọc) những thông tin sinh viên
*/
Trang 9void moFile(SinhVien sv[], int &n);
/*
* SinhVien sv[] : Thao tác mảng sv kiểu SinhVien
*int n : kiểu số nguyên dùng để quản lý số lượng sinh viên
*Dùng để lấy dữ liệu có sẵn từ file đưa vào chương trình
*/
Trang 10int timMSSV(SinhVien sv[], int n, char mssv[]){
for(int i=0; i<n; i++){
* - Nếu tìm thấy mssv xuất ra vị trí thứ i
* - Ngược lại xuất -1
*/
void xoaSV(SinhVien sv[], int &n, int k){
for(int i=k; i<n-1; i++){
* Hàm thực hiện xóa phần tử thứ k bằng cách dịch chuyển các phần tử phía sau lên
* trước một vị trí và giảm đi số lượng ( n )
* Xuất “(+) Da xoa” thông báo xóa thành công
Trang 11* Nhập mssv cần xóa và cho chạy qua hàm timMSSV()
* - Nếu tìm thấy ( Giá trị trả về >=0): trả về vị trí cần xóa thứ i ( sử dụng hàm *
void sapXepAZ(SinhVien sv[], int n){
for(int i=0; i<n-1; i++){
* Sử dụng thuật toán Interchange Sort ( Sắp xếp đổi chỗ trực tiếp ) để sắp xếp sinh viên
* theo điểm trung bình (từ thấp đến cao)
* Cụ thể :
* - Duyệt qua từng phần tử của mảng ( bắt đầu từ i = 0 và lặp đến i < n-1 )
Trang 12* - Xét phần tử tại vị trí i với các phần tử sau nó ( bắt đầu từ j = i+1 và lặp đến j < n )
* - Nếu phần tử tại vị trí i lớn hơn phần tử tại vị trí j thì đổi chỗ 2 phần tử đó cho nhau
void sapXepZA(SinhVien sv[], int n){
for(int i=0; i<n-1; i++){
Trang 13* Mô tả thuật toán :
* Xuất phát từ đầu dãy, đổi chỗ các cặp phần tử kế cận để đưa phần tử nhỏ hơn trong
* cặp phần tử đó về vị trí đứng cuối dãy , sau đó sẽ không xét đến nó ở bước tiếp theo
* Cụ thể :
* - Duyệt qua từng phần tử của mảng ( bắt đầu từ i = 0 và lặp đến i < n-1 )
* - Xét phần tử tại vị trí j với phần tử sau nó ( bắt đầu từ j = 0 và lặp đến j < n-i-1 )
* - Nếu phần tử tại vị trí j nhỏ hơn phần tử tại vị trí j+1 thì đổi chỗ 2 phần tử đó cho nhau
Trang 145 KẾT QUẢ CHẠY TRƯỜNG TRÌNH
Menu :
Chức năng 1 : Bảng thông tin tất cả sinh viên
Trang 15Chức năng 2 : Thêm sinh viên
- Thêm một sinh viên
- Thêm nhiều sinh viên
Trang 16- Trở lại :
- Lỗi
Nhập sai chức năng
Trang 17Chức năng 3 : Xóa sinh viên ( khi biết mssv )
- Xóa thành công
- Lỗi :
Nhập sai mssv :
Trang 18Chưa nhập mssv :
Chức năng 4 : Chỉnh sửa thông tin sinh viên
- Chỉnh sửa thành công
Chỉnh sửa mssv
Trang 19Chỉnh sửa họ tên
Chỉnh sửa tuổi
Trang 20Chỉnh sửa điểm trung bình
Trở lại
Trang 21- Lỗi :
Nhập sai mssv
Chưa nhập mssv
Nhập sai chức năng
Trang 22Chức năng 5 : Sắp xếp theo điểm trung bình
- Sắp xếp thành công :
Từ thấp đến cao
Trang 23Từ cao đến thấp
Trở lại
Trang 24- Lỗi
Nhập sai chức năng
Chức năng 6 : Truy vấn
- Tìm kiếm thông tin theo mssv
- Truy vấn những sinh viên rớt môn
- Truy vấn sinh viên có điểm trung bình cao nhất
- Trở lại
Trang 25Chức năng 7 : Sao lưu
- Sao lưu thông tin sinh viên vào file QuanLiSinhVien.txt
Chức năng 8 : Mở dữ liệu sẵn có
- Lấy dữ liệu từ file QuanLiSinhVien.txt đã sao lưu
Trang 26Chức năng 9 : Thoát chương trình