Code:
//Bai tap nhap mot cau truc sinh vien,ghi cau truc do len file==>doc
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<io.h>
struct sinhvien
{
char hoten[25];
float t,l,h;
};
sinhvien sv[100]; int n;float sobyte; //Mang sinh vien,so sinh vien va so byte cua tap tin la toan cuc
void nhapsv(sinhvien sv[],int n) //Nhap danh sach sinh vien
{
float t,l,h;clrscr();
for(int i=0;i<n;i++)
{
fflush(stdin);
printf("\n Sinh vien thu %d: ",i+1);
printf("\n *Ho va ten: ");gets(sv[i].hoten);
printf("\n *Diem toan,li,hoa: ");scanf("%f%f%f",&t,&l,&h);
sv[i].t=t;sv[i].l=l;sv[i].h=h;
}
}
void xuatsv(sinhvien sv[],int n)
{
printf("\n %3d %25s %5s %5s %5s ","stt","ho va ten","toan","li","hoa");
for(int i=0;i<n;i++)
printf("\n %3d %25s %5.1f %5.1f %5.1f ",i+1,sv[i].hoten,sv[i].t,sv[i].l,sv[i].h);
}
void ghi()// ghi danh sach sinh vien vua nhap len file
{
printf("\n Nhap so sinh vien can xu li: ");scanf("%d",&n);
nhapsv(sv,n);
FILE *fp; char name[20],lc;
fflush(stdin);
nhaplai:clrscr();printf("\n Nhap ten file can luu: ");gets(name);
fp=fopen(name,"wb");
if(fp==NULL)
{
printf("\n Loi tao file,ban co muon nhap lai khong(c/k)? ");
scanf("%c",&lc);
lc=getch();
if(lc=='c'||lc=='C') goto nhaplai;
exit(0);
}
for(int i=0;i<n;i++)
fwrite(&sv[i],sizeof(sv[i]),1,fp);
printf("\n DA GHI XONG"); getch();
fclose(fp);
}
void doc() //Doc du lieu
{
FILE *fp;char name[20],lc; int i;
nhaplai1:clrscr();fflush(stdin);printf("\n Nhap ten file can mo: ");gets(name);
fp=fopen(name,"rb");
if(fp==NULL)
{
printf("\n Loi doc file,ban co muon nhap lai khong(c/k)? ");
scanf("%c",&lc);
lc=getch();
if(lc=='c'||lc=='C') goto nhaplai1;
exit(0);
}
printf("\n Danh sach sinh vien");
printf("\n %3d %25s %5s %5s %5s ","stt","ho va ten","toan","li","hoa");
i=0;
while(!feof(fp))
{
fread(&sv,sizeof(sv),1,fp);
printf("\n %3d %25s %5.1f %5.1f %5.1f ",i+1,sv.hoten,sv.t,sv.l,sv.h);
i++;
}
getch();
}
void menu()
{
int i;
while(1)
{
clrscr();
printf("\n 1. Nhap");
printf("\n 2. Xuat");
printf("\n 0. Thoat");
scanf("%d",&i);
switch(i)
{
case 1:clrscr();ghi();break;
case 2:clrscr();doc();break;
case 0:return;
}
}
}
void main()
{
clrscr();
menu();
}