#include<stdio.h>
#include<conio.h>
#include<string.h>
#define MAX 100
struct SinhVien
{
char MaSo[20], HoTen[30];
float DiemToan, DiemLy, DiemHoa;
};
typedef struct SinhVien SINHVIEN;
// Nguyên mấu hàm
void NhapThongTinSinhVien(SINHVIEN &);
void XuatThongTinSinhVien(SINHVIEN);
float TinhDiemTrungBinh(SINHVIEN);
char* XepLoai(SINHVIEN);
void NhapThongTinSinhVien(SINHVIEN &sv)
{
/*fflush(stdin);
printf("\nNhap vao ma so: ");
gets(sv.MaSo);*/
fflush(stdin);
printf("\nNhap vao ho ten: ");
gets(sv.HoTen);
do
{
printf("\nNhap vao diem toan: ");
scanf("%f",&sv.DiemToan);
if(sv.DiemToan < 0 || sv.DiemToan > 10)
{
printf("\nDiem toan khong hop le. Xin kiem tra lai !");
}
}while(sv.DiemToan < 0 || sv.DiemToan > 10);
do
{
printf("\nNhap vao diem ly: ");
scanf("%f",&sv.DiemLy);
if(sv.DiemLy < 0 || sv.DiemLy > 10)
{
printf("\nDiem ly khong hop le. Xin kiem tra lai !");
}
}while(sv.DiemLy < 0 || sv.DiemLy > 10);
do
{
printf("\nNhap vao diem hoa: ");
scanf("%f",&sv.DiemHoa);
if(sv.DiemHoa < 0 || sv.DiemHoa > 10)
{
printf("\nDiem hoa khong hop le. Xin kiem tra lai !");
}
}while(sv.DiemHoa < 0 || sv.DiemHoa > 10);
}
void XuatThongTinSinhVien(SINHVIEN sv)
{
printf("\nMaSo: %s", sv.MaSo);
printf("\nHoTen: %s", sv.HoTen);
printf("\nDiem Toan: %f", sv.DiemToan);
printf("\nDiem Ly: %f", sv.DiemLy);
printf("\nDiem Hoa: %f", sv.DiemHoa);
printf("\nDiem Trung Binh: %f",TinhDiemTrungBinh(sv));
printf("\nXep loai: %s",XepLoai(sv));
}
float TinhDiemTrungBinh(SINHVIEN sv)
{
return (sv.DiemToan + sv.DiemLy + sv.DiemHoa) / 3;
}
char* XepLoai(SINHVIEN sv)
{
float Dtb = TinhDiemTrungBinh(sv);
if(Dtb < 2)
{
return "Kem";
}
if(Dtb < 5)
{
return "Yeu";
}
if(Dtb < 6)
{
return "Trung Binh";
}
if(Dtb < 7)
{
return "Trung Binh Kha";
}
if(Dtb < 8)
{
return "Kha";
}
if(Dtb < 9)
{
return "Gioi";
}
return "Xuat Sac";
}
void NhapThongTinLopHoc(SINHVIEN DanhSachSinhVien[], int &n)
{
do
{
printf("\nNhap vao so luong sinh vien trong lop: ");
scanf("%d", &n);
if(n < 1)
{
printf("\nSo luong khong hop le. Xin kiem tra lai !");
}
}while(n < 1);
for(int i = 0; i < n; i++)
{
printf("\n\tNhap Thong Tin Sinh Vien Thu %d",i + 1);
int Check; // Khởi tạo ban đầu
char mssv[20];
do
{
Check = 1;
fflush(stdin);
printf("\nNhap vao ma so: ");
gets(mssv);
for(int j = i - 1; j >= 0; j--)
{
if(strcmp(DanhSachSinhVien[j].MaSo, mssv) == 0)
{
Check = 0; // Cập nhật lại
break;
}
}
if(Check == 0)
{
printf("\nMa so sinh vien da bi trung. Xin nhap lai !");
}
}while(Check == 0);
strcpy(DanhSachSinhVien[i].MaSo,mssv); // Gán qua
NhapThongTinSinhVien(DanhSachSinhVien[i]);
}
}
void XuatThongTinLopHoc(SINHVIEN DanhSachSinhVien[], int n)
{
printf("\nSo luong sinh vien co trong lop: %d", n);
for(int i = 0; i < n; i++)
{
printf("\n\tXuat Thong Tin Sinh Vien Thu %d",i + 1);
XuatThongTinSinhVien(DanhSachSinhVien[i]);
}
}
int main()
{
SINHVIEN List[MAX];
int n;
NhapThongTinLopHoc(List,n);
XuatThongTinLopHoc(List,n);
getch();
return 0;
}