#include <stdio.h>
#include <math.h>
#include <stdlib.h>
typedef struct subject
{
char subname[20];
int score;
char teach[20];
struct subject *next;
}subject;
typedef struct student
{
char num[20];
char name[20];
int age;
char sex;
subject sub[20];
}student;
void subread(FILE *fin,subject &sub) //从文件中读入课程信息
{
fscanf(fin,"%s",sub.subname);
fscanf(fin,"%d",&sub.score);
fscanf(fin,"%s",sub.teach);
}
int sturead(FILE *fin,student &stud) //从文件中读入学生信息,并返回课程总数
{
int i=-1;
char j;
fscanf(fin,"%s",stud.num);
fscanf(fin,"%s",stud.name);
fscanf(fin,"%d %c",&stud.age,&stud.sex);
do
{
i++;
subread(fin,stud.sub[i]);
fscanf(fin,"%c",&j);
fscanf(fin,"%c",&j);
}
while (j=='y');
return i+1;
}
void subprint(subject &sub,int n) //输出学生的课程信息
{
printf("\n课程信息%d\n课程名称:%s\n成绩:%d\n任课老师:%s\n",n,sub.subname,sub.score,sub.teach);
}
void stuprint(student &stu,int n) //输出学生信息
{
char *s;
int i;
if (stu.sex=='m')
s="男";
else if (stu.sex=='f')
s="女";
printf("\n\n学生信息\n学号:%s\n姓名:%s\n年龄:%d\n性别:%s\n",stu.num,stu.name,stu.age,s);
for (i=0;i<n;i++)
subprint(stu.sub[i],i+1);
}
void readonly(FILE *fin,student stud)
{
int i;
for (i=0;i<10;i++)
sturead(fin,stud[i]);
}
/*void print(FILE *fin,student stud) //读入并输出学生信息
{
int i,numofsub;
for (i=0;i<10;i++)
{
numofsub=sturead(fin,stud[i]);
stuprint(stud[i],numofsub);
}
}
*/
char mainmenu()
{
char c;
do
{
system("cls");
printf("a. 从文件中读入学生信息\n");
printf("b. 查询\n");
printf("c. 排序\n");
printf("d. 统计\n");
printf("e. 结束程序\n");
printf("Give your choice(a-e):");
c=getchar();
}
while(c<'a'||c>'e');
return(c);
}
void main()
{
FILE *fin;
student stud[10];
fin=fopen("in.txt","r");
if (fin==NULL)
{
printf("打开文件错误!\n");
exit(0);
}
int i,numofsub;
for (i=0;i<10;i++)
{
numofsub=sturead(fin,stud[i]);
stuprint(stud[i],numofsub);
}
fclose(fin);
}