Danh Sách Sinh Viên Cài Đặt Bằng Mảng

00:39
Danh Sách Sinh Viên Cài Đặt Bằng Mảng
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);
}

Share this :

Lưu ý: Chỉ thành viên của blog này mới được đăng nhận xét.