Code:
#include<stdio.h>
#include<dos.h>
#include<conio.h>
#include<string.h>
#include<ctype.h>
#include<fstream.h>
#include<stdlib.h>
#include<iostream.h>
struct Date
{
int ngay;
int thang;
int nam;
};
struct quequan
{
char tinh[20];
char huyen[20];
char xa[20];
};
struct hoten
{
char ho[20];
char tendem[20];
char ten[20];
};
struct sinh_vien
{
hoten ht;
Date ns;
quequan qq;
float diem_tb;
char ma_so[5];
char lop[20];
};
struct
{
char tenlop[30];
sinh_vien thanhvien;
int nam,nu;
int nienkhoa,tong;
char danhhieu[20];
}lop;
/*-----------------------------------------------*/
FILE *f;
int n;
void khoi_tao(sinh_vien a[]);
void them_sv(sinh_vien a[]);
void in_danh_sach(sinh_vien a[],int n);
void loai_sv(sinh_vien a[]);
void sua_chua(sinh_vien a[]);
void sx_ten(sinh_vien a[]);
void sx_ns(sinh_vien a[]);
void sx_tb(sinh_vien a[]);
void sx_ma_so(sinh_vien a[]);
void tim_kiem(sinh_vien a[]);
void tim_que(sinh_vien a[]);
void ghi(sinh_vien a[],int n);
/*-------------------------------------------------*/
// void chuan(void);
void main()
{ textmode(C80);
sinh_vien a[150];
char ch='a';
clrscr();
khoi_tao(a);
while(ch!='0')
{
clrscr();
printf("\n Chuong trinh quan ly sinh vien ");
printf("\n *-------------------------------------------*");
printf("\n\n\n Nhan vao 1 trong nhung phim sau de chon chuc nang : ");
printf("\n\n 1: Them mot sinh vien vao danh sach");
printf("\n 2: In danh sach sinh vien");
printf("\n 3: Loai mot sinh vien khoi danh sach");
printf("\n 4: Thay doi thong tin mot sinh vien");
printf("\n 5: Sap xep sinh vien theo ten");
printf("\n 6: Sap xep sinh vien theo ngay sinh");
printf("\n 7: Sap xep sinh vien theo diem trung binh");
printf("\n 8: Sap xep sinh vien theo ma so");
printf("\n 9: Tim kiem sinh vien theo Ten");
printf("\n A: Tim kiem sinh vien theo Que");
printf("\n 0: Thoat");
fflush(stdin);
ch=getch();
switch(ch)
{
case '1': them_sv(a); break;
case '2': in_danh_sach(a,n); break;
case '3': loai_sv(a); break;
case '4': sua_chua(a); break;
case '5': sx_ten(a); break;
case '6': sx_ns(a); break;
case '7': sx_tb(a); break;
case '8': sx_ma_so(a); break;
case '9': tim_kiem(a); break;
case 'A': tim_que(a);break;
case '0': ghi(a,n); break;
};
}
}
/*-------------------------------------------*/
void khoi_tao(sinh_vien a[])
{
n=0;
sinh_vien sv;
if(f==NULL)
f=fopen("file_ghi","ab");
else
while(fread(&sv,sizeof(sinh_vien),1,f)>0)
{
n++;
a[n]=sv;
}
fclose(f);
}
/*----------------------------------------------*/
void in_danh_sach(sinh_vien a[], int n)
{
int i,y=1;
clrscr();
fflush(stdin);
printf("ÚÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÂ ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄ ÂÄÄÄÄÄÄÄ¿");
y++;
gotoxy(1,y); printf("³Stt");
gotoxy(6,y); printf("³ Ho va Ten");
gotoxy(34,y); printf("³ Ngay sinh");
gotoxy(46,y); printf("³ Que quan");
gotoxy(62,y); printf("³Diem tb");
gotoxy(72,y); printf("³ Ma so ³");
printf("ÃÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÅ ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄ ÅÄÄÄÄÄÄÄ´");
y++;
for(i=1;i<=n;i++)
{
// chuan(a[i].ho);
// chuan(a[i].ten);
y++;
gotoxy(1,y); printf("³ %d",i);
gotoxy(6,y); printf("³ %s %s",a[i].ht.ho,a[i].ht.ten);
gotoxy(34,y); printf("³%2d:%2d:%d",a[i].ns.ngay,a[i].ns.thang,a[i].ns.nam);
gotoxy(46,y); printf("³ %s",a[i].qq.tinh);
gotoxy(62,y); printf("³");
if(a[i].diem_tb>=0)
{
gotoxy(63,y); printf("%0.2f",a[i].diem_tb);
}
gotoxy(72,y); printf("³ %s ³",a[i].ma_so);
if(y>23)
{
if(i==n)
printf("ÀÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÁ ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄ ÁÄÄÄÄÄÄÙ");
getch();
clrscr();
y=0;
}
}
if(y!=0)
{
printf("ÀÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÁ ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄ ÁÄÄÄÄÄÄÄÙ");
getch();
}
}
/*-------------------------------------------------*/
void them_sv(sinh_vien a[])
{
clrscr();
char s[30];
float tb;
int i,j,d,c;
printf("\n Ho va Ten:"); fflush(stdin); gets(s);
if(s!='\')
{
n++;
c=strlen(s)-1;
while(s[c]==' '&&c>0) c--;
d=c;
while(s[d]!=' '&&d>0) d--;
j=0;
for(i=d+1;i<=c;i++)
{
a[n].ht.ten[j]=s[i];
j++;
}
a[n].ht.ten[j]='\';
c=d;
while(s[c]==' '&&c>0) c--;
d=0;
while(s[d]==' '&&d<c) d++;
j=0;
for(i=d;i<=c;i++)
{
a[n].ht.ho[j]=s[i];
j++;
}
a[n].ht.ho[j]='\';
printf("\n Ngay thang nam sinh:"); scanf("%d%d%d",&i,&j,&d);
a[n].ns.ngay=i;
a[n].ns.thang=j;
a[n].ns.nam=d;
printf("\n Que quan:");
printf("Tinh : ");fflush(stdin); gets(s);strcpy(a[n].qq.tinh,s);
printf("Huyen : ");fflush(stdin); gets(s);strcpy(a[n].qq.huyen,s);
printf("Xa : ");fflush(stdin); gets(s);strcpy(a[n].qq.xa,s);
printf("\n Diem trung binh:"); scanf("%f",&tb);
a[n].diem_tb=tb;
printf("\n Ma so sinh vien:"); fflush(stdin); gets(a[n].ma_so);
}
}
/*-------------------------------------------*/
void loai_sv(sinh_vien a[])
{
clrscr();
int k,i;
char ch='n';
printf("\n So thu tu cua sinh vien can xoa:");
scanf("%d",&k);
if(k<1||k>n)
printf("\n Khong tim thay sinh vien thu %d trong danh sach",k);
else
{
printf("\n Sinh vien thu %d la: %s %s",k,a[k].ht.ho,a[k].ht.ten);
printf("\n Sinh ngay %d %d %d",a[k].ns.ngay,a[k].ns.thang,a[k].ns.nam);
printf("\n Que quan:");
printf("\n Tinh: %s",a[k].qq.tinh);
printf("\n\t Huyen : %s",a[k].qq.huyen);
printf("\n\t Xa: %s",a[k].qq.xa);
if(a[k].diem_tb>=0)
printf("\n Diem trung binh: %0.2f",a[k].diem_tb);
printf("\n Ma so sinh vien: %s",a[k].ma_so);
printf("\n Ban co chac la xoa sinh vien nay khong (y/n)");
fflush(stdin); ch=getche();
}
if(ch=='y'||ch=='Y')
{
for(i=k;i<n;i++)
a[i]=a[i+1];
n--;
printf("\n Da xoa sinh vien thu %d khoi danh sach",k);
}
getch();
}
/*----------------------------------------------*/
void sua_chua(sinh_vien a[])
{
clrscr();
int k,i;
char ch='n';
printf("\n So thu tu cua sinh vien can thay doi:");
scanf("%d",&k);
if(k<1||k>n)
printf("\n Khong tim thay sinh vien thu %d trong danh sach",k);
else
{
printf("\n Sinh vien thu %d la: %s %s",k,a[k].ht.ho,a[k].ht.ten);
printf("\n Sinh ngay %d %d %d",a[k].ns.ngay,a[k].ns.thang,a[k].ns.nam);
printf("\n Que quan: ");
printf("\n Tinh: %s",a[k].qq.tinh);
printf("\n Huyen: %s",a[k].qq.huyen);
printf("\n Xa: %s",a[k].qq.xa);
if(a[k].diem_tb>=0)
printf("\n Diem trung binh: %0.2f",a[k].diem_tb);
printf("\n Ma so sinh vien: %s",a[k].ma_so);
printf("\n Ban co chac la can phai thay doi khong (y/n)");
fflush(stdin); ch=getche();
}
if(ch=='y'||ch=='Y')
{
them_sv(a);
a[k]=a[n];
n--;
printf("\n Sinh vien thu %d da duoc thay doi",k);
}
getch();
}
/*---------------------------------------------*/
void sx_ten(sinh_vien a[])
{
int i,j,h,t;
sinh_vien tg;
for(i=1;i<n;i++)
for(j=i+1;j<=n;j++)
{
t=strcmpi(a[i].ht.ten,a[j].ht.ten);
h=strcmpi(a[i].ht.ho,a[j].ht.ho);
if(t>0||(t==0&&h>0))
{
tg=a[i]; a[i]=a[j]; a[j]=tg;
}
}
in_danh_sach(a,n);
getch();
}
/*----------------------------------------------*/
void sx_ns(sinh_vien a[])
{
int i,j;
sinh_vien tg;
for(i=1;i<n;i++)
for(j=i+1;j<=n;j++)
if(a[i].ns.nam>a[j].ns.nam||(a[i].ns.nam==a[j].ns.nam&&(a[i].ns.thang>
a[j].ns.thang||(a[i].ns.thang==a[j].ns.thang&&a[i].ns.ngay>a[j].ns.ngay))))
{
tg=a[i]; a[i]=a[j]; a[j]=tg;
}
in_danh_sach(a,n);
getch();
}
/*-----------------------------------------------*/
void sx_tb(sinh_vien a[])
{
int i,j;
sinh_vien tg;
for(i=1;i<n;i++)
for(j=i+1;j<=n;j++)
if(a[i].diem_tb>a[j].diem_tb)
{
tg=a[i]; a[i]=a[j]; a[j]=tg;
}
in_danh_sach(a,n);
getch();
}
/*-------------------------------------------------*/
void sx_ma_so(sinh_vien a[])
{
int i,j,k;
sinh_vien tg;
for(i=1;i<n;i++)
for(j=i+1;j<=n;j++)
if(strcmp(a[i].ma_so,a[j].ma_so)>0)
{
tg=a[i]; a[i]=a[j]; a[j]=tg;
}
in_danh_sach(a,n);
getch();
}
/*--------------------------------------------------*/
void tim_kiem(sinh_vien a[])
{
clrscr();
int i,k;
char s1[27],s2[27];
printf("\n Ho va ten sinh vien can tim:");
fflush(stdin); gets(s1);
for(i=1;i<=n;i++)
{
strcpy(s2,a[i].ht.ho);
k=strlen(s2);
s2[k]=' ';
s2[k+1]='\';
strcat(s2,a[i].ht.ten);
k=strcmp(s1,s2);
if(k==0) break;
}
k=i;
if(k>n)
printf("\n Khong tim thay sinh vien tren");
else
{
printf("\n Do la sinh vien thu %d",k);
printf("\n Ho va ten: %s %s",a[k].ht.ho,a[k].ht.ten);
printf("\n Sinh ngay %d %d %d",a[k].ns.ngay,a[k].ns.thang,a[k].ns.nam);
printf("\n Que quan: Tinh %s - Huyen %s - Xa %s",a[k].qq.tinh,a[k].qq.huyen,a[k].qq.xa);
if(a[k].diem_tb>=0)
printf("\n Diem trung binh: %0.2f",a[k].diem_tb);
printf("\n Ma so sinh vien: %s",a[k].ma_so);
}
getch();
}
/*-----------------------------------------------*/
void tim_que(sinh_vien a[])
{
int i,k;
char s1[27],s2[27];
printf("\n Tinh cua nhung sinh vien can tim:");
fflush(stdin); gets(s1);
for(i=1;i<=n;i++)
{
strcpy(s2,a[i].qq.tinh);
k=strlen(s2);
s2[k]=' ';
s2[k+1]='\';
strcpy(s2,a[i].qq.tinh);
k=strcmp(s1,s2);
if(k==0) break;
}
k=i;
if(k>n)
printf("\n Khong tim thay");
else
{
printf("\n Do la sinh vien thu %d",k);
printf("\n Ho va ten: %s %s",a[k].ht.ho,a[k].ht.ten);
printf("\n Sinh ngay %d %d %d",a[k].ns.ngay,a[k].ns.thang,a[k].ns.nam);
printf("\n Que quan: Tinh %s - Huyen %s - Xa %s",a[k].qq.tinh,a[k].qq.huyen,a[k].qq.xa);
if(a[k].diem_tb>=0)
printf("\n Diem trung binh: %0.2f",a[k].diem_tb);
printf("\n Ma so sinh vien: %s",a[k].ma_so);
}
getch();
}
/*----------------------------------------------*/
void que(sinh_vien a[])
{
char s1[30];
char s2[30];
printf("Nhap que cua nhung sinh vien can tim : ");
fflush(stdin);gets(s1);
for(int i=1;i<=n;i++)
{
strcpy(s2,a[i].qq.tinh);
}
}
/*----------------------------------------------*/
void ghi(sinh_vien a[],int n)
{
int i;
char ch;
printf("\n\n\n Are you sure save this changes... ? (y/n):");
fflush(stdin); ch=getch();
if(ch=='y'||ch=='Y')
{
for(i=1;i<=n;i++)
fwrite(&a[i],sizeof(sinh_vien),1,f);
fclose(f);
}
}