#include<conio.h>
#include<stdio.h>
#include<string.h>
struct date
{
unsigned char ngay;
unsigned char thang;
int nam;
};
struct sinhvien
{
char mssv[17];
char hoten[30];
struct date ngaysinh;
float diemtb;
};
void nhapngaysinh (date &d)
{
printf(“Nhap ngay: “);
scanf(“%u”,&d.ngay);
printf(“Nhap thang: “);
scanf(“%u”,&d.thang);
printf(“Nhap nam: “);
scanf(“%d”,&d.nam);
}
void xuatngaysinh (date d)
{
printf(“%2u/%2u/%4d”,d.ngay,d.thang,d.nam);
}
void nhap1sinhvien (sinhvien &sv)
{
float diem;
printf(“Nhap MSSV: “);
flushall();
gets(sv.mssv);
printf(“Nhap ho ten sinh vien: “);
flushall();
gets(sv.hoten);
printf(“Nhap ngay sinh: “);
nhapngaysinh(sv.ngaysinh);
flushall();
printf(“Nhap diem trung binh: “);
scanf(“%f”,&diem);
sv.diemtb=diem;
}
void xuat1sinhvien (sinhvien sv)
{
printf(“MSSV: %s”,sv.mssv);
printf(“\nHo ten: %s”,sv.hoten);
printf(“\nNgay sinh: “);
xuatngaysinh(sv.ngaysinh);
printf(“\nDiem trung binh: %.2f”,sv.diemtb);
}
void nhapdssinhvien (sinhvien lh[], int &n) //Nhap danh sach sinh vien
{
printf(“Nhap so luong sinh vien: “);
scanf(“%d”,&n);
for (int i=0;i<n;i++)
{
printf(“\n\nNhap thong tin sinh vien thu %d: \n”,i+1);
nhap1sinhvien(lh[i]);
}
}
void xuatdssinhvien (sinhvien lh[], int n) //Xuat danh sach sinh vien
{
for (int i=0;i<n;i++)
{
printf(“\n\nThong tin cua sinh vien thu %d: \n\n”,i+1);
xuat1sinhvien(lh[i]);
}
}
void timkiem (sinhvien lh[], int n) //Cho biet thong tin sinh vien khi nhap mssv
{
char id[17];
int i=0,dem=0;
printf(“\n\nNhap MSSV can tra cuu: “);
scanf(“%s”,&id);
if (strlen(id))
while (i<n)
if (stricmp(lh[i].mssv,id)==0)
{
printf(“\t\tMSSV: %s \n”,lh[i].mssv);
printf(“\t\tHo ten: %s \n”,lh[i].hoten);
printf(“\t\tNgay sinh: “);
xuatngaysinh(lh[i].ngaysinh);
printf(“\n”);
printf(“\t\tDiem trung binh: %.2f \n”,lh[i].diemtb);
dem++;
break;
}
else
i++;
if (!dem)
printf(“Khong ton tai sinh vien nay.\n”);
}
void timkiem2 (sinhvien lh[], int n) //Cho biet ten va diem trung binh khi nhap mssv
{
char id[17];
int i=0,dem=0;
printf(“Nhap MSSV can tra cuu: “);
scanf(“%s”,&id);
if (strlen(id))
while (i<n)
if (stricmp(lh[i].mssv,id)==0)
{
printf(“\t\tHo ten: %s \n”,lh[i].hoten);
printf(“\t\tDiem trung binh: %.2f \n”,lh[i].diemtb);
dem++;
break;
}
else
i++;
if (!dem)
printf(“Khong ton tai sinh vien nay.\n”);
}
void sapxeptb (sinhvien lh[], int n) //Sap xep sinh vien giam dan theo diem trung binh
{
sinhvien tmp;
for (int i=0;i<n-1;i++)
{
for (int j=i+1;j<n;j++)
{
if (lh[i].diemtb < lh[j].diemtb)
{
tmp=lh[i];
lh[i]=lh[j];
lh[j]=tmp;
}
}
}
for (int i=0;i<n;i++)
printf(“MSSV: %s\nHo ten: %s\nDiem trung binh: %.2f\n\n”,lh[i].mssv,lh[i].hoten,lh[i].diemtb);
}
void sapxepmssv (sinhvien lh[], int n) //Sap xep sinh vien tang dan theo mssv
{
sinhvien tmp;
for (int i=0;i<n-1;i++)
{
for (int j=i+1;j<n;j++)
{
if ((lh[i].mssv) > (lh[j].mssv))
{
tmp=lh[i];
lh[i]=lh[j];
lh[j]=tmp;
}
}
}
for (int i=0;i<n;i++)
printf(“Ho ten: %s\nMSSV: %s\nDiem trung binh: %.2f\n\n”,lh[i].hoten,lh[i].mssv,lh[i].diemtb);
}
void sapxepten (sinhvien lh[], int n) //Sap xep sinh vien tang dan theo do dai ten cua sinh vien
{
sinhvien tmp;
for (int i=0;i<n-1;i++)
{
for (int j=i+1;j<n;j++)
{
if (strlen(lh[i].hoten) > strlen(lh[j].hoten))
{
tmp=lh[i];
lh[i]=lh[j];
lh[j]=tmp;
}
}
}
for (int i=0;i<n;i++)
printf(“MSSV: %s\nHo ten: %s\nDiem trung binh: %.2f\n\n”,lh[i].mssv,lh[i].hoten,lh[i].diemtb);
}
void xoak (sinhvien lh[], int &n, int k)
{
for (int i=k;i<n-1;i++)
lh[i]=lh[i+1];
n–;
}
void xoasinhvien (sinhvien lh[], int n) //Xoa sinh vien thong qua mssv
{
char id[17];
printf(“Nhap MSSV can xoa: “);
scanf(“%s”,&id);
for (int i=0;i<n;i++)
if (strcmp(id,lh[i].mssv)==0)
{
xoak(lh,n,i);
break;
}
xuatdssinhvien(lh,n);
}
void dskha (sinhvien lh[], int n) //Danh sach sinh vien kha
{
int dem=0;
for (int i=0;i<n;i++)
{
if (lh[i].diemtb >=6.5)
{
printf(“\t\tMSSV: %s\n”,lh[i].mssv);
printf(“\t\tHo ten: %s\n”,lh[i].hoten);
printf(“\t\tNgay sinh: “);
xuatngaysinh(lh[i].ngaysinh);
printf(“\n”);
printf(“\t\tDiem trung binh: %.2f\n\n\n”,lh[i].diemtb);
dem++;
}
}
if (!dem)
printf(“Khong co sinh vien nao kha.\n”);
}
void badgioi (sinhvien lh[], int n) //Sinh vien co diem tb thap nhat trong ds sinh vien gioi
{
float lose;
int j,dem=0;
for (int i=0;i<n;i++)
{
if (lh[i].diemtb >=8.0)
{
printf(“\t\tMSSV: %s\n”,lh[i].mssv);
printf(“\t\tHo ten: %s\n”,lh[i].hoten);
printf(“\t\tNgay sinh: “);
xuatngaysinh(lh[i].ngaysinh);
printf(“\n”);
printf(“\t\tDiem trung binh: %.2f\n\n\n”,lh[i].diemtb);
dem++;
}
if (dem>=2)
if (lh[i].diemtb> lh[j].diemtb)
lose=lh[j].diemtb;
printf(“\n\t\tSinh vien co diem tb thap nhat trong top gioi la.\n”);
printf(“MSSV: %s\nHo ten: %s\nDiem trung binh: %.2f\n”,lh[j].mssv,lh[j].hoten,lh[j].diemtb);
}
if (!dem)
printf(“Khong co sinh vien nao kha.\n”);
}
void main()
{
clrscr();
int n;
sinhvien lh[100];
printf(“——————– NHAP DANH SACH SINH VIEN ———————\n”);
nhapdssinhvien(lh,n);
printf(“\n\n”);
printf(“——————– XUAT DANH SACH SINH VIEN ———————\n”);
xuatdssinhvien(lh,n);
printf(“\n\n”);
printf(“—————- TIM KIEM INFORMATION SINH VIEN ——————\n”);
timkiem(lh,n);
printf(“\n\n”);
printf(“—————- TIM KIEM DIEM TRUNG BINH VA TEN SINH VIEN ——————\n”);
timkiem2(lh,n);
printf(“\n\n”);
printf(“—————- SAP XEP GIAM DAN THEO DIEM TRUNG BINH ——————\n”);
sapxeptb(lh,n);
printf(“\n\n”);
printf(“—————- SAP XEP TANG DAN THEO MSSV ——————\n”);
sapxepmssv(lh,n);
printf(“\n\n”);
printf(“—————- SAP XEP TANG DAN THEO DO DAI TEN ——————\n”);
sapxepten(lh,n);
printf(“\n\n”);
printf(“—————- DANH SACH SINH VIEN KHA ——————\n”);
dskha(lh,n);
printf(“\n\n”);
printf(“—————- SINH VIEN CUOI TOP GIOI ——————\n”);
badgioi(lh,n);
printf(“\n\n”);
printf(“—————- XOA SINH VIEN ——————\n”);
xoasinhvien(lh,n);
printf(“\n\n”);
getch();
}