#include #include #include #include #pragma warning(disable:4996) #define MAX 100 using namespace std; typedef struct SinhVien { char masv[10], ho[10], ten[20]; int diem; bool Delete = false; } sv; typedef struct IndexHoTen { int vitri; char ho[10], ten[20]; } idxHT; typedef struct IndexMaSV { int vitri; char masv[10]; } idxMSV; typedef struct IndexDiem { int vitri, diem; } idxDiem; int n; sv DS[MAX]; idxHT IndexHoTen[100]; idxMSV IndexMaSV[100]; idxDiem IndexDiem[100]; void CapNhatIndex(sv a, int i) { IndexDiem[i].diem = a.diem; IndexDiem[i].vitri = i; strcpy(IndexHoTen[i].ho, a.ho); strcpy(IndexHoTen[i].ten, a.ten); IndexHoTen[i].vitri = i; strcpy(IndexMaSV[i].masv, a.masv); IndexMaSV[i].vitri = i; } void Nhap1(sv &a) { nhaplaimsv: cout << "Nhap vao Ma Sinh Vien: "; fflush(stdin); cin >> a.masv; //if () ktra trung cout << "Nhap vao Ho: "; cin >> a.ho; cout << "Nhap vao Ten: "; cin >> a.ten; nhaplaidiem: cout << "nhap vao Diem: "; cin >> a.diem; if (a.diem < 0 || a.diem >10) goto nhaplaidiem; } void Xuat1(sv a) { cout << left << setw(10) << a.masv << "\t"; cout << left << setw(10) << a.ho << "\t"; cout << left << setw(20) << a.ten << "\t"; cout << left << setw(4) << a.diem << endl; } int TimTheoMSV(sv DS[], int n, char masvcantim[10]) { for (int i = 0; i < n; i++) { if (strcmp(DS[i].masv, masvcantim) == 0 && DS[i].Delete == false) return i; } return -1; } void TimTheoTen(sv DS[], int n) { for (int j = 0; j < n - 1; j++) { for (int k = j + 1; k < n; k++) { if (IndexDiem[j].diem > IndexDiem[k].diem) { idxDiem temp; temp = IndexDiem[k]; IndexDiem[k] = IndexDiem[j]; IndexDiem[j] = temp; } } } bool check = false; char tencantim[20]; cout << "Nhap vao ten sinh vien can tim: "; nhaplai: cin >> tencantim; if (strcmp(tencantim, "0") == 0) return; for (int i = 0; i < n; i++) { if (strcmp(tencantim, DS[i].ten) == 0 && tencantim !=0 && DS[i].Delete == false) { for (int j = 0; j < n; j++) { if (IndexDiem[j].vitri == i) { cout <<"MSSV: "<> macanxoa; TimTheoMSV(DS, n, macanxoa); DS[i].Delete = true; } void Them(sv DS[], int &n) { int soluongthem, k = n, j = 1; nhap: cout << "Nhap vao so luong sinh vien can them"; cin >> soluongthem; if (n + soluongthem > 100 || soluongthem < 0) { cout << "Ban da nhap sai so luong. vui long nhap lai! " << endl; } else { n = n + soluongthem; for (int i = k; i < n; i++) { cout << "Nhap vao thong tin sinh vien thu " << j << endl; Nhap1(DS[i]); j++; CapNhatIndex(DS[i], i); } } } void Sua(sv DS[], int n) { char masvcan[10]; cout << "Nhap vao ma sinh vien can tim: "; nhapsvcantim: cin >> masvcan; if (TimTheoMSV(DS, n, masvcan) == -1) { cout << "Khong tim thay sinh vien can tim! vui long nhap lai:" << endl; goto nhapsvcantim; } else { int i = TimTheoMSV(DS, n, masvcan); int select; system("cls"); cout << "1. Sua ma sv \n2. Sua Ho \n3. Sua ten \n4. Sua diem \n0. Back" << endl; nhaplai: cin >> select; switch (select) { case 1: cout << "Nhap vao ma sinh vien moi: "; cin >> DS[i].masv; break; case 2: cout << "Nhap vao ho moi: "; cin >> DS[i].ho; break; case 3: cout << "Nhap vao ten moi: "; cin >> DS[i].ten; break; case 4: cout << "Nhap vao diem moi: "; cin >> DS[i].diem; break; case 0: break; default: cout << "Lua chon khong dung! vui long nhap lai: " << endl; goto nhaplai; break; } } } void MenuXuat(sv DS[], int n) { int select; nhap: system("cls"); cout << "================================Menu================================" << endl; cout << "1.Sap xep theo MSSV \n2.Sap xep theo ten \n3.Sap xep theo diem \n0.Back!" << endl; cin >> select; switch (select) { case 1: cout << "Xuat theo MSSV: " << endl; for (int j = 0; j < n - 1; j++) { for (int k = j + 1; k < n; k++) { if (strcmp(IndexMaSV[j].masv , IndexMaSV[k].masv)>0) { idxMSV temp; temp = IndexMaSV[k]; IndexMaSV[k] = IndexMaSV[j]; IndexMaSV[j] = temp; } } } cout << endl << left << setw(13) << "MSSV\t" << left << setw(10) << "HO\t" << left << setw(20) << " TEN\t" << left << setw(4) << "DIEM\t" << endl; for (int i = 0; i < n; i++) { Xuat1(DS[IndexMaSV[i].vitri]); } system("pause"); case 2: cout << "Xuat theo ten: " << endl; for (int j = 0; j < n - 1; j++) { for (int k = j + 1; k < n; k++) { if (strcmp(IndexHoTen[j].ten, IndexHoTen[k].ten)>0) { idxHT temp; temp = IndexHoTen[k]; IndexHoTen[k] = IndexHoTen[j]; IndexHoTen[j] = temp; } else if (IndexHoTen[k].ten == IndexHoTen[j].ten) { if (IndexHoTen[k].ho < IndexHoTen[j].ho) { idxHT temp; temp = IndexHoTen[k]; IndexHoTen[k] = IndexHoTen[j]; IndexHoTen[j] = temp; } } } } cout << endl << left << setw(13) << "MSSV\t" << left << setw(10) << "HO\t" << left << setw(20) << " TEN\t" << left << setw(4) << "DIEM\t" << endl; for (int i = 0; i < n; i++) { Xuat1(DS[IndexHoTen[i].vitri]); } system("pause"); case 3: cout << "Xuat theo Diem: " << endl; for (int j = 0; j < n - 1; j++) { for (int k = j + 1; k < n; k++) { if (IndexDiem[k].diem > IndexDiem[j].diem) { idxDiem temp; temp = IndexDiem[k]; IndexDiem[k] = IndexDiem[j]; IndexDiem[j] = temp; } } } cout << endl << left << setw(13) << "MSSV\t" << left << setw(10) << "HO\t" << left << setw(20) << " TEN\t" << left << setw(4) << "DIEM\t" << endl; for (int i = 0; i < n; i++) { Xuat1(DS[IndexDiem[i].vitri]); } system("pause"); default: break; } } void Menu() { nhap: system("cls"); cout << "================================Menu================================" << endl; cout << "1.Them sv\n2.Xuat\n3.Xoa sv\n4.Sua sv\n5.Tim sv theo mssv\n6.Tim sv theo ten\n7.Luu File\n8.Doc File\n0.Thoat!" << endl; int chon; cout << "Nhap chon: "; cin >> chon; if (chon == 0) return; else if (chon == 1) { Them(DS, n); system("pause"); } else if (chon == 2) { MenuXuat(DS,n); system("pause"); } else if (chon == 3) { Xoa(DS, n); system("pause"); } else if (chon == 4) { Sua(DS, n); } else if (chon == 5) { char masvcan[10]; cout << "Nhap vao ma sinh vien can tim: "; cin >> masvcan; if (TimTheoMSV(DS, n, masvcan) == -1) { cout << "Khong tim thay sinh vien co ma sinh vien la: " << masvcan << endl; } else { int i = TimTheoMSV(DS, n, masvcan); Xuat1(DS[i]); } system("pause"); } else if (chon == 6) { TimTheoTen(DS, n); system("pause"); } else if (chon == 7) { //LuuFile(); system("pause"); } else if (chon == 8) { //DocFile(); system("pause"); } else { cout << "\nban nhap sai.\nMoi ban nhap lai!\n"; system("pause"); } goto nhap; } int main() { Menu(); system("pause"); return 0; }