#include
#include
#include
#include
#define N 2
typedef struct stu
{
char name[10];
char num[13];
char sex[4];
char c;
float math,chinese,english,sum,comp;
} STD;
void sub(char a[],char e[],int b,int c)
{
int i;
for(i=0;i
e[i]=a[b+i-1];
e[c]='\0';
}
void menu()
{
printf("\n\n\n\t\t\t******欢迎使用高考成绩查询系统******\n");
printf("\t\t\t1.建立学生档案.\n");
printf("\t\t\t2.查询成绩.\n");
printf("\t\t\t3.排序.\n");
printf("\t\t\t4.输出全部学生信息.\n");
printf("\t\t\t5.退出.\n");
}
int input(STD d[],STD h[])
{
FILE *fp1,*fp2;
int i,b=0;
char n[13],a[3];
for(i=0;i
{
printf("\n\t\t\t请输入第%d名学生信息\n",i+1);
printf("\t\t\t学号:");
scanf("%s",n);
sub(n,a,7,2);
if(strcmp(a,"01")==0)
{
strcpy(d[i].num,n);
printf("\t\t\t姓名:");
scanf("%s",d[i].name);
printf("\t\t\t性别:");
scanf("%s",d[i].sex);
printf("\t\t\t语文成绩:");
scanf("%f",&d[i].chinese);
printf("\t\t\t数学成绩:");
scanf("%f",&d[i].math);
printf("\t\t\t英语成绩:");
scanf("%f",&d[i].english);
getchar();
printf("\t\t\t理综:");
scanf("%f",&d[i].comp);
d[i].sum=d[i].chinese+d[i].english+d[i].math+d[i].comp;
b++;
}
else
{
strcpy(h[i].num,n);
printf("\t\t\t姓名:");
scanf("%s",h[i].name);
printf("\t\t\t性别:");
scanf("%s",h[i].sex);
printf("\t\t\t语文成绩:");
scanf("%f",&h[i].chinese);
printf("\t\t\t数学成绩:");
scanf("%f",&h[i].math);
printf("\t\t\t英语成绩:");
scanf("%f",&h[i].english);
getchar();
printf("\t\t\t文综:");
scanf("%f",&h[i].comp);
h[i].sum=h[i].chinese+h[i].english+h[i].math+h[i].comp;
}
system("cls");
}
if((fp1=fopen("d:\\daniel.dat","wb"))==NULL)
{
printf("\t\t\t错误!\n");
exit(1);
}
if((fp2=fopen("d:\\heddle.dat","wb"))==NULL)
{
printf("\t\t\t错误!\n");
exit(1);
}
fwrite(d,sizeof(STD),b,fp1);
fwrite(h,sizeof(STD),N-b,fp2);
fclose(fp1);
fclose(fp2);
system("cls");
printf("\n\t\t\t建立成功!\n");
getch();
return b;
}
void sort(STD d[],STD h[],int a)
{
int i,j;
FILE *fp1,*fp2;
STD t;
if((fp1=fopen("d:\\heddle.dat","wb"))==NULL)
{
printf("\t\t\t错误!\n");
exit(1);
}
if((fp2=fopen("d:\\daniel.dat","wb"))==NULL)
{
printf("\t\t\t错误!\n");
exit(1);
}
for(i=0;i
for(j=i+1;j
if(h[i].sum
{
t=h[i];
h[i]=h[j];
h[j]=t;
}
for(i=0;i
for(j=i+1;j
if(d[i].sum
{
t=d[i];
d[i]=d[j];
d[j]=t;
}
fwrite(h,sizeof(STD),N-a,fp1);
fwrite(d,sizeof(STD),a,fp2);
fclose(fp1);
fclose(fp2);
getch();
}
void output(STD d[],STD h[],int a)
{
int i;
FILE *fp1,*fp2;
if((fp1=fopen("d:\\heddle.dat","rb"))==NULL)
{
printf("\t\t\t错误!\n");
exit(1);
}
fread(h,sizeof(STD),N-a,fp1);
printf("\n文科\n\n");
printf("学号\t\t姓名\t语文\t数学\t英语\t文综\t\t总分\n");
for(i=0;i
printf("%12s\t%6s %6.1f %6.1f %6.1f %6.1f \t%6.1f\n",h[i].num,h[i].name,h[i].chinese,h[i].math,h[i].english,h[i].comp,h[i].sum);
printf("\n\n");
if((fp2=fopen("d:\\daniel.dat","rb"))==NULL)
{
printf("\t\t\t错误!\n");
exit(1);
}
fread(d,sizeof(STD),a,fp2);
printf("\n理科\n\n");
printf("学号\t\t姓名\t语文\t数学\t英语\t理综\t\t总分\n");
for(i=0;i