Chương trình quản lý sinh viên sử dụng struct trong C

 

// 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

)

;

}