实现对数据的录入、查询、增加、删除、修改、统计、排序功能; 学生基本信息文件data.dat
#include <stdio.h>
#define SIZE 10
#include<string.h>
#include<stdlib.h>
#include<conio.h>
struct student
{
int num;
char name[10];
int Yuwen;
int Maths;
int En;
int CScore;
int Sum;
double Avarage;
}
stu[SIZE];
/*1查看数据(向文件fp中录入信息)*/
void ck()
{
FILE *fp;
fp=fopen("data.dat","wb");
if(fp==NULL)
{
printf(" cannot open file data.dat\n");
exit(0);
}
printf("输入要录入的学生数目:");
int N;
scanf("%d", &N);
printf("学号 姓名 语文 英语 数学 C语言\n");
for (int i = 0; i < N; i++)
{
scanf("%d%s%d%d%d%d",&stu[i].num,&stu[i].name,&stu[i].Yuwen,&stu[i].Maths,&stu[i].En,&stu[i].CScore);
stu[i].Sum = stu[i].Yuwen + stu[i].Maths + stu[i].En + stu[i].CScore;
stu[i].Avarage = stu[i].Sum / 4.0;
}
for (int i = 0; i < N; i++)
if (fwrite(&stu[i], sizeof(struct student),1,fp)!=1)
printf("file write error!\n");
fclose(fp);
}
/*
/*2输出文件fp中的数据*/
void flist()
{
FILE *fp;
int i;
fp=fopen("data.dat","rb");
printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");
printf(" 成绩列表\n");
printf("-----------------------------------------------------------------------------------\n");
printf("学号 姓名 语文 数学 英语 C语言成绩 总成绩 平均成绩\n");
printf("-----------------------------------------------------------------------------------\n");
for(i=0;fread(&stu[i],sizeof(struct student),1,fp)==1;i++)//for(i=0;fread(&stu[i],6,1,fp)==1;i++)
{
printf("%d%6s%6d%6d%6d%6d%6d %.2lf\n",stu[i].num,stu[i].name,stu[i].Yuwen,stu[i].Maths,stu[i].En,stu[i].CScore,stu[i].Sum,stu[i].Avarage);
}
printf("-----------------------------------------------------------------------------------\n\n");
printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");
fclose(fp);
}
/*3查找数据*/
void fsearch()
{
FILE *fp;
int num;
fp=fopen("data.dat","rb");
printf("请输入要查找的学号:");
scanf("%d",&num);
printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");
printf(" 查询结果\n");
printf("-----------------------------------------------------------------------------------\n");
printf("学号 姓名 语文 数学 英语 C语言 总成绩 平均成绩\n");
printf("-----------------------------------------------------------------------------------\n");
for(int i=0;fread(&stu[i],sizeof(struct student),1,fp)==1;i++)
if(stu[i].num==num)
{
printf("%d%6s%6d%6d%6d%6d%6d %.2lf\n",stu[i].num,stu[i].name,stu[i].Yuwen,stu[i].Maths,stu[i].En,stu[i].CScore,stu[i].Sum,stu[i].Avarage);
}
printf("-----------------------------------------------------------------------------------\n\n");
printf("※※※※※※※