// Nếu bạn bị lỗi thư viện conio.h => Do bạn dùng C++ bản mới.
// Hãy kéo xuống comment và lấy code update nhé.
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
struct
SinhVien
{
char
ten
[
30
]
;
char
gt
[
5
]
;
int
age
;
float
dT
,
dL
,
dH
;
float
dtb
=
0
;
}
;
typedef
SinhVien
SV
;
void
nhap
(
SV
&sv);
void
nhapN
(
SV
a
[
]
,
int
n
)
;
void
xuat
(
SV
sv
)
;
void
xuatN
(
SV
a
[
]
,
int
n
)
;
void
tinhDTB
(
SV
&sv);
void
sapxep
(
SV
a
[
]
,
int
n
)
;
void
xeploai
(
SV
a
)
;
void
xeploaiN
(
SV
a
[
]
,
int
n
)
;
void
xuatFile
(
SV
a
[
]
,
int
n
,
char
fileName
[
]
)
;
int
main
(
)
{
int
key
;
char
fileName
[
]
=
“DSSV.txt”
;
int
n
;
bool
daNhap
=
false
;
do
{
printf
(
“\nNhap so luong SV: “
)
;
scanf
(
“%d”
,
&n);
}
while
(
n
<
=
0
)
;
SV
a
[
n
]
;
while
(
true
)
{
system
(
“cls”
)
;
printf
(
“******************************************\n”
)
;
printf
(
“** CHUONG TRINH QUAN LY SINH VIEN **\n”
)
;
printf
(
“** 1. Nhap du lieu **\n”
)
;
printf
(
“** 2. In danh sach sinh vien **\n”
)
;
printf
(
“** 3. Sap xep sinh vien theo DTB **\n”
)
;
printf
(
“** 4. Xep loai sinh vien **\n”
)
;
printf
(
“** 5. Xuat DS sinh vien **\n”
)
;
printf
(
“** 0. Thoat **\n”
)
;
printf
(
“******************************************\n”
)
;
printf
(
“** Nhap lua chon cua ban **\n”
)
;
scanf
(
“%d”
,
&key);
switch
(
key
)
{
case
1
:
printf
(
“\nBan da chon nhap DS sinh vien!”
)
;
nhapN
(
a
,
n
)
;
printf
(
“\nBan da nhap thanh cong!”
)
;
daNhap
=
true
;
printf
(
“\nBam phim bat ky de tiep tuc!”
)
;
getch
(
)
;
break
;
case
2
:
if
(
daNhap
)
{
printf
(
“\nBan da chon xuat DS sinh vien!”
)
;
xuatN
(
a
,
n
)
;
}
else
{
printf
(
“\nNhap DS SV truoc!!!!”
)
;
}
printf
(
“\nBam phim bat ky de tiep tuc!”
)
;
getch
(
)
;
break
;
case
3
:
if
(
daNhap
)
{
printf
(
“\nBan da chon sap xep SV theo STB!”
)
;
sapxep
(
a
,
n
)
;
xuatN
(
a
,
n
)
;
}
else
{
printf
(
“\nNhap DS SV truoc!!!!”
)
;
}
printf
(
“\nBam phim bat ky de tiep tuc!”
)
;
getch
(
)
;
break
;
case
4
:
if
(
daNhap
)
{
printf
(
“\nBan da chon thoat xep loai SV!”
)
;
xeploaiN
(
a
,
n
)
;
}
else
{
printf
(
“\nNhap DS SV truoc!!!!”
)
;
}
printf
(
“\nBam phim bat ky de tiep tuc!”
)
;
getch
(
)
;
break
;
case
5
:
if
(
daNhap
)
{
printf
(
“\nBan da chon xuat DS SV!”
)
;
xuatFile
(
a
,
n
,
fileName
)
;
}
else
{
printf
(
“\nNhap DS SV truoc!!!!”
)
;
}
printf
(
“\nXuat DSSV thanh cong vao file %s!”
,
fileName
)
;
printf
(
“\nBam phim bat ky de tiep tuc!”
)
;
getch
(
)
;
break
;
case
0
:
printf
(
“\nBan da chon thoat chuong trinh!”
)
;
getch
(
)
;
return
0
;
default
:
printf
(
“\nKhong co chuc nang nay!”
)
;
printf
(
“\nBam phim bat ky de tiep tuc!”
)
;
getch
(
)
;
break
;
}
}
}
void
tinhDTB
(
SV
&sv){
sv.dtb = (sv.dH + sv.dL + sv.dT)/3;
}
void
nhap
(
SV
&sv){
printf(“\nNhap ten: “);
fflush
(
stdin
)
;
gets
(
sv
.
ten
)
;
printf
(
“\nNhap gioi tinh: “
)
;
gets
(
sv
.
gt
)
;
printf
(
“\nNhap tuoi: “
)
;
scanf
(
“%d”
,
&sv.age);
printf
(
“\nNhap diem 3 mon: “
)
;
scanf
(
“%f%f%f”
,
&sv.dT, &sv.dL, &sv.dH);
tinhDTB
(
sv
)
;
}
void
nhapN
(
SV
a
[
]
,
int
n
)
{
printf
(
“\n____________________________________\n”
)
;
for
(
int
i
=
0
;
i
<
n
;
++
i
)
{
printf
(
“\nNhap SV thu %d:”
,
i
+
1
)
;
nhap
(
a
[
i
]
)
;
}
printf
(
“\n____________________________________\n”
)
;
}
void
xuat
(
SV
sv
)
{
printf
(
“\nHo ten SV: %s”
,
sv
.
ten
)
;
printf
(
“\nGioi tinh: %s”
,
sv
.
gt
)
;
printf
(
“\nTuoi SV : %d”
,
sv
.
age
)
;
printf
(
“\nDiem Toan – Ly – Hoa: %.2f – %.2f – %.2f”
,
sv
.
dT
,
sv
.
dL
,
sv
.
dH
)
;
printf
(
“\nDiem TB: %.2f”
,
sv
.
dtb
)
;
}
void
xuatN
(
SV
a
[
]
,
int
n
)
{
printf
(
“\n____________________________________\n”
)
;
for
(
int
i
=
0
;
i
<
n
;
++
i
)
{
printf
(
“\nThong tin SV thu %d:”
,
i
+
1
)
;
xuat
(
a
[
i
]
)
;
}
printf
(
“\n____________________________________\n”
)
;
}
void
sapxep
(
SV
a
[
]
,
int
n
)
{
//Sap xep theo DTB tang dan
SV
tmp
;
for
(
int
i
=
0
;
i
<
n
;
++
i
)
{
for
(
int
j
=
i
+
1
;
j
<
n
;
++
j
)
{
if
(
a
[
i
]
.
dtb
>
a
[
j
]
.
dtb
)
{
tmp
=
a
[
i
]
;
a
[
i
]
=
a
[
j
]
;
a
[
j
]
=
tmp
;
}
}
}
}
void
xeploai
(
SV
sv
)
{
if
(
sv
.
dtb
>
=
8
)
printf
(
“Gioi”
)
;
else
if
(
sv
.
dtb
>
=
6.5
)
printf
(
“Kha”
)
;
else
if
(
sv
.
dtb
>
=
4
)
printf
(
“Trung binh”
)
;
else
printf
(
“Yeu”
)
;
}
void
xeploaiN
(
SV
a
[
]
,
int
n
)
{
printf
(
“\n____________________________________\n”
)
;
for
(
int
i
=
0
;
i
<
n
;
++
i
)
{
printf
(
“\nXep loai cua SV thu %d la: “
,
i
+
1
)
;
xeploai
(
a
[
i
]
)
;
}
printf
(
“\n____________________________________\n”
)
;
}
void
xuatFile
(
SV
a
[
]
,
int
n
,
char
fileName
[
]
)
{
FILE
*
fp
;
fp
=
fopen
(
fileName
,
“w”
)
;
fprintf
(
fp
,
“%20s%5s%5s%10s%10s%10s%10s\n”
,
“Ho Ten”
,
“GT”
,
“Tuoi”
,
“DT”
,
“DL”
,
“DH”
,
“DTB”
)
;
for
(
int
i
=
0
;
i
<
n
;
i
++
)
{
fprintf
(
fp
,
“%20s%5s%5d%10f%10f%10f%10f\n”
,
a
[
i
]
.
ten
,
a
[
i
]
.
gt
,
a
[
i
]
.
age
,
a
[
i
]
.
dT
,
a
[
i
]
.
dL
,
a
[
i
]
.
dH
,
a
[
i
]
.
dtb
)
;
}
fclose
(
fp
)
;
}