Yêu cầu
TÌM KIẾM SINH VIÊN
- Hướng dẫn: Sau khi đã nhập thông tin sinh viên vào mảng. Tìm kiếm sinh viên theo mã sinh viên
Hướng dẫn giải
Code
/*
BÀI 3: XÂY DỰNG CHƯƠNG TRÌNH LƯU THÔNG TIN SINH VIÊN VÀ SẮP XẾP SINH VIÊN THEO ĐIỂM TĂNG DẦN
CÓ THẺ TÌM KIẾM SINH VIÊN THEO MÃ SINH VIÊN
Input: Nhập vào từ bàn phím các thông tin sinh viên như: mã số sinh viên, tên sinh viên, ngành học, điểm trung bình
- Cho người dùng nhập vào mã số sinh viên cần tìm kiếm.
Output: Xuất ra thông tin của sinh viên cần tìm kiếm trên màn hình, sắp xếp theo điểm tăng dần
*/
#include<stdio.h>
#include<conio.h>
#include<string.h>
// Cau truc Struct SinhVien
struct SinhVien {
char mssv[50];
char tenSV[50];
char nganhHoc[50];
float diemTB;
};
typedef SinhVien SV;
// Hàm hoán vị
void hoanVi(SV *sinhvien1, SV *sinhvien2) {
SV temp;
temp = *sinhvien1;
*sinhvien1 = *sinhvien2;
*sinhvien2 = temp;
}
int main() {
// 1. INPUT
int N;
printf("Moi nhap so luong Sinh vien: ");
scanf("%d", &N);
// 2. Khoi tao mang SinhVien N nguoi
SV danhsachSV[N];
// 3. Nhap thong tin Sinh vien
for(int i=0; i<N; i++) {
printf("=== Moi nhap thong tin sinh vien thu %d ===\n", i);
fflush(stdin);
printf("- MSSV: ");
gets(danhsachSV[i].mssv);
printf("- Ho ten: ");
gets(danhsachSV[i].tenSV);
printf("- Nganh hoc: ");
gets(danhsachSV[i].nganhHoc);
printf("- Diem trung binh: ");
scanf("%f", &danhsachSV[i].diemTB);
}
// 4. Giái thuật sắp xếp theo điểm tăng dần
for(int i=0; i<N; i++) {
for(int j=i+1; j<N; j++) {
if(danhsachSV[i].diemTB > danhsachSV[j].diemTB) {
hoanVi(&danhsachSV[i], &danhsachSV[j]);
}
}
}
// 5. OUTPUT xuất ra màn hình
printf("====== DANH SACH SINH VIEN ======\n");
for(int i=0; i<N; i++) {
printf("=== Thong tin sinh vien thu %d:\n", i);
printf("- MSSV: ");
puts(danhsachSV[i].mssv);
printf("- Ho ten: ");
puts(danhsachSV[i].tenSV);
printf("- Nganh hoc: ");
puts(danhsachSV[i].nganhHoc);
printf("- Diem trung binh: %f\n ", danhsachSV[i].diemTB);
}
// 6. Tìm kiếm sinh viên
char tukhoatimkiem[50];
printf("Moi nhap MSSV can tim: ");
fflush(stdin);
gets(tukhoatimkiem);
// Duyệt vòng lặp qua danh sách sinh viên để dò tìm
int vitriIndex = -1;
for(int i=0; i<N; i++) {
if(strcmp(danhsachSV[i].mssv, tukhoatimkiem) == 0) {
vitriIndex = i;
}
}
if(vitriIndex == -1) {
// Không tim thấy kết quả
printf("Khong tim thay ket qua");
} else {
// In ra thông tin sinh viên tìm được
printf("=== Thong tin sinh vien can tim: \n");
fflush(stdin);
printf("- MSSV: ");
puts(danhsachSV[vitriIndex].mssv);
printf("- Ho ten: ");
puts(danhsachSV[vitriIndex].tenSV);
printf("- Nganh hoc: ");
puts(danhsachSV[vitriIndex].nganhHoc);
printf("- Diem trung binh: %.2f\n ", danhsachSV[vitriIndex].diemTB);
}
getch(); // Lenh dung man hinh
return 0;
}
|