Danh sách sinh vên cài đặt bằng mảng với các chức năng cơ bản
#include iostream #include stdio.h using namespace std; #define N 50 typedef struct SinhVien { char HoTen[30]; int NamSinh; float DiemTB; }; typedef struct List { SinhVien SV[N]; int Size; }; bool KiemTraDay(List L) { if (L.Size == N) return true; else return false; } // hàm nhập thông tin cho 1 sinh viên void NhapSV(SinhVien &x) { cin.ignore(); cout << "Ho ten: "; cin.getline(x.HoTen, 30); cout << "Nam sinh: "; cin >> x.NamSinh; cout << "Diem tb: "; cin >> x.DiemTB; cout << "------------------------------------" << endl; } // hàm xuất thông tin cho 1 sinh viên void XuatSV(SinhVien x) { cout << "Ho ten: " << x.HoTen << endl; cout << "Nam sinh: " << x.NamSinh << endl; cout << "Diem tb: " << x.DiemTB << endl; cout << "-------------------------------------" << endl; } // hàm nhập n sinh viên void NhapDanhSach(List& L) { for (int i = 0; i < L.Size; i++) { cout << "Thong tin sinh vien thu " << i + 1 << endl; NhapSV(L.SV[i]); } } // hàm xuất n sinh viên void XuatDanhSach(List L) { cout << "---------- DANH SACH SINH VIEN ----------" << endl; for (int i = 0; i < L.Size; i++) { XuatSV(L.SV[i]); } } // thêm 1 sinh viên vào vị trí thứ k void ThemBatKy(List &L, SinhVien x, int k) { if (KiemTraDay(L)) cout << "Danh sach day. " << endl; else { if (k < 1 || k > L.Size + 1) cout << "vi tri khong hop le" << endl; else { for (int i = L.Size; i > k; i--) { L.SV[i] = L.SV[i - 1]; } L.SV[k-1] = x; L.Size++; } } } // xóa 1 sinh viên vị trí thứ k void XoaBatKy(List& L, int k) { if (KiemTraDay(L)) cout << "Danh sach day." << endl; else { if (k<1 k=""> L.Size) cout << "vi tri khong hop le. " << endl; else { for (int i = k - 1; i < L.Size - 1; i++) { L.SV[i] = L.SV[i + 1]; } L.Size--; } } } // hàm tìm kiếm chính xác theo tên void TimKiemChinhXac(List L, char s[]) { for (int i = 0; i < L.Size; i++) { if (L.SV[i].HoTen == s) { cout << "Co sinh vien " << s << " trong danh sach " << endl; XuatSV(L.SV[i]); } } } // hàm tìn kiếm theo tên gần đúng void TimKiemGanDung(List L, char s[]) { for (int i = 0; i < L.Size; i++) { int dem = 0, j = 0; char u; while (dem != strlen(s) && j != strlen(s)) { u = s[j]; for (int a = 0; a < strlen(L.SV[i].HoTen); a++) { if (u == L.SV[i].HoTen[a]) dem++; } j++; } if (dem == strlen(s)) { cout << "Co sinh vien " << s << " trong danh sach " << endl; XuatSV(L.SV[i]); } } } void LocDanhSach(List L) { for (int i = 0; i < L.Size; i++) { if (L.SV[i].DiemTB <= 5.0) { XuatSV(L.SV[i]); } } } int main() { List L; SinhVien x; int k; cout << "So luong sinh vien: "; cin >> L.Size; NhapDanhSach(L); system("cls"); int chon; do { system("cls"); cout << "1. Xuat danh sach. " << endl; cout << "2. Them bat ky. " << endl; cout << "3. Xoa bat ky. " << endl; cout << "4. Tim kiem. " << endl; cout << "5. Loc sinh vien diem trung binhf <= 5.0 " << endl; cin >> chon; switch (chon) { case 1: { XuatDanhSach(L); system("pause"); break; } case 2: { NhapSV(x); cout << "Nhap vi tri: "; cin >> k; ThemBatKy(L, x, k); system("pause"); break; } case 3: { cout << "Nhap vi tri: "; cin >> k; XoaBatKy(L, k); system("pause"); break; } case 4: { char s[30]; cin.ignore(); cout << "Ten can tim: "; cin.getline(s, 30); TimKiemGanDung(L, s); system("pause"); break; } case 5: { LocDanhSach(L); system("pause"); break; } default: break; } } while (chon != 0); } 1>
Lưu ý: Chỉ thành viên của blog này mới được đăng nhận xét.