#include"stdio.h"
#include"stdlib.h"
#include"process.h"
#include"conio.h"
#define NULL 0
typedef struct stu
{ int xh;
char xm[10];
float fs;
}stu; /*编程时设计的结构体*/
typedef struct Student
{ stu xs;
struct Student* next;
}Student,*LinkList; /*程序中子函数的声明*/
int EnterChoice(void);
void TianJia(LinkList,LinkList);
void ChaXun(LinkList,LinkList);
void XiuGai(LinkList,LinkList);
void LiuLan(LinkList);
void CunDang(LinkList,LinkList);
void DuQu(void);
void swap(Student*,Student*);
/*主函数部分*/
int main()
{ LinkList List_1; //存放原记录文件中的数据
LinkList List_2; //存放修改或添加的数据
Student* r;
Student* s;
FILE* fp;
char* str;
char ch;
int choice;
int i;
if((fp=fopen("c:\\abc.txt","a+"))==NULL)
{ printf("ERROR!\n");
exit(0); }//以读写的方式打开文件
/*初始化两个单链表*/
List_1=(LinkList)malloc(sizeof(Student));
List_2=(LinkList)malloc(sizeof(Student));
List_1->next=List_2->next=NULL;
/*查出回车数,即记录个数,保存在i中*/
i=0; rewind(fp);
ch=fgetc(fp);
while(EOF!=ch)
{ if('\n'==ch) i++;
ch=fgetc(fp);
} /*读入文件中的数据,保存在List_1中*/
rewind(fp);
r=List_1;
for(;i>=1;i--)
{ s=(Student*)malloc(sizeof(Student));
str=s->xs.xm;
fscanf(fp,"%d %s %f",&(s->xs.xh),str,&(s->xs.fs));
r->next=s; r=s;
}
r->next=NULL;
fclose (fp);//关闭文件
while((choice=EnterChoice())!=7)
{ switch(choice)
{ case 1: TianJia(List_1,List_2); break;
case 2: ChaXun(List_1,List_2); break;
case 3: XiuGai(List_1,List_2); break;
case 4: LiuLan(List_2); break;
case 5: CunDang(List_1,List_2); break;
case 6: DuQu(); break;
default:printf("\n输入错误,请重新输入!\n");
getch();
}
}//使用该系统进行管理
/*将链表中所有节点申情的空间释放*/
r=List_1->next;
while(r!=NULL)
{ s=r; r=r->next; free(s);
}
r=List_2->next;
while(r!=NULL)
{ s=r; r=r->next; free(s);
}
free(List_1);
free(List_2);
printf("\n成功退出系统!谢谢使用!\n");
return 0; }
/*******************************************************/
/*功能选择输入子函数*/
int EnterChoice(void)
{ char choice;
system("cls");
printf("\n----------------------------\n");
printf("\t学生管理系统\n");
printf("----------------------------\n");
printf("1.添加学员信息\n");
printf("2.查询学生记录\n");
printf("3.修改学生记录\n");
printf("4.浏览学生记录\n");
printf("5.存档学生记录\n");
printf("6.读取学生记录\n");
printf("7.推出系统\n");
printf("请选择操作(1-7):");
scanf("%d",&choice
);
return choice;//返回主函数 }
/*******************************************************/
/*添加学员信息子函数*/
void TianJia(LinkList List_1,LinkList List_2)
{ Student* s;
Student* r;
int i;
int n;
char* str;
s=NULL;
T: //若输入错误,返回此处执行
printf("请输入你们班的人数:");
scanf("%d",&n);
if(n
{ printf("人数应大于0!\n");
goto T;
}//输入错误
for(i=1;i
{ s=(Student*)malloc(sizeof(Student));
str=s->xs.xm;
L: //若输入学号已存在于学员记录信息中,程序返回此处继续执行
printf("请输入第%d个学员的学号:",i);
scanf("%d",&(s->xs.xh));
/*判断是否已存在该学号的学生*/
r=List_1->next; while(r!=NULL)
{
if(r->xs.xh==s->xs.xh)
{ printf("已存在该学号的学生!\n\n");
goto L;
}
r=r->next;
}
r=List_2->next;
while(r!=NULL)
{
if(r->xs.xh==s->xs.xh)
{
printf("已存在该学号的学生!\n");
goto L;
}
r=r->next;
}
printf("请输入第%d个学员的姓名:",i);
scanf("%s",str);
printf("请输入第%d个学员的成绩:",i);
scanf("%f",&(s->xs.fs));
/*将此学生信息存入List_2中*/
s->next=List_2->next;
List_2->next=s;
}
printf("\n--------输入完毕!------------\n");
getch();
return;//返回主函数 }
/*******************************************************/
/*查询学员信息子函数*/
void ChaXun(LinkList List_1,LinkList List_2)
{ Student* r; int x;
printf("请输入要查找的学员的学号:");
scanf("%d",&x);
/*查询该学生记录是否存放在List_1中*/
r=List_1->next;
while(r!=NULL)
{ if(x==r->xs.xh)
{ printf("\n此学员的学号为:[ %d ]\n",x);
printf("此学员的姓名为:[ %s ]\n",r->xs.xm);
printf("此学员的成绩为:[ %.1f ]\n",r->xs.fs);
getch();
return;//返回主函数
} else r=r->next;
}
/*查询该学生记录是否存放在List_2中*/
r=List_2->next;
while(r!=NULL)
{ if(x==r->xs.xh)
{ printf("此学员的学号为:[ %d ]\n",x);
printf("此学员的姓名为:[ %s ]\n",r->xs.xm);
printf("此学员的成绩为:[ %f ]\n",r->xs.fs);
getch();
return;//返回主函数
} else r=r->next;
}
printf("\n没有要查找的学员记录!\n");
getch();
return;//返回主函数 }
/*******************************************************/
/*修改学员信息子函数*/
void XiuGai(LinkList List_1,LinkList List_2)
{ Student* r;
Student* s;
int xh;
int n;
int flag;
printf("请输入要修改的学员的学号:");
scanf("%d",&xh);
/*若该学员信息存放在List_1中,置flag为1*/
r=List_1->next;
while(r!=NULL)
{ if(r->xs.xh==xh)
{ flag=1; break;
}
r=r->next;
}
/*若该学员信息存放在List_2中,置flag为2*/
if(r==NULL)
{ r=List_2->next;
while(r!=NULL)
{ if(r->xs.xh==xh)
{ flag=2; break;
}
r=r->next;
}
}
if(r==NULL)
{
printf("\n没有该学员的纪录!\n");
getch();
return;//返回主函数
}
printf("\n学 号\t姓 名\t成 绩\n");
printf("%d\t%s\t%.1f\n",xh,r->xs.xm,r->xs.fs);
/*若该学员信息在List_2中,进行修改*/
if(2==flag)
{ r=List_2->next;
while(r->xs.xh!=xh)
r=r->next;
L1: //若输入功能选项错误,返回此处执行
printf("\n请选择修改的内容:1.学号 2.姓名 3.成绩 4.退出\n");
scanf("%d",&n);
switch(n)
{
case 1: L11: //若输入学号已存在于其他学员,返回此处执行
printf("\n请输入新的学号: ");
scanf("%d",&(r->xs.xh));
/*判断List_1中是否已存在该学号的学生*/
s=List_1->next;
while(s!=NULL)
{ if(r->xs.xh==s->xs.xh)
{ printf("已存在该学号的学生!\n");
goto L11;
}
s=s->next;
}
/*判断List_2中是否已存在该学号的学生*/
s=List_2->next;
while(s!=NULL)
{ if(r->xs.xh==s->xs.xh && s!=r)
{ printf("已存在该学号的学生!\n");
goto L11;
}
s=s->next;
}
break;
case 2: printf("\n请输入新的姓名: ");
scanf("%s",r->xs.xm);
break;
case 3: printf("\n请输入新的成绩: ");
scanf("%f",&(r->xs.fs));
break;
case 4: printf("退出该功能!\n");
getch();
return;
default:printf("\n输入错误!请重新输入!\n");
goto L1;
}
printf("\n谢谢! 修改完毕!\n");
getch();
return;//返回主函数
}
/*若该学员信息在List_1中,进行修改*/
r=List_1;
while(r->next->xs.xh!=xh)
r=r->next;
s=r->next;
r->next=s->next;
s->next=List_2->next;
List_2->next=s;
L2: //若输入功能选项错误,返回此处执行
printf("\n请选择修改的内容:1.学号 2.姓名 3.成绩 4.退出\n");
scanf("%d",&n);
switch(n) {
case 1: L22: //若输入学号已存在于其他学员,返回此处执行
printf("\n请输入新的学号: ");
scanf("%d",&(s->xs.xh));
/*判断List_1中是否已存在该学号的学生*/
r=List_1->next;
while(r!=NULL)
{ if(r->xs.xh==s->xs.xh)
{ printf("已存在该学号的学生!\n");
goto L22;
}
r=r->next;
}
/*判断List_2中是否已存在该学号的学生*/
r=List_2->next;
while(r!=NULL)
{ if(r->xs.xh==s->xs.xh && r!=s)
{
printf("已存在该学号的学生!\n");
goto L22;
}
r=r->next;
}
break;
case 2: printf("\n请输入新
的姓名: ");
scanf("%s",s->xs.xm); break;
case 3: printf("\n请输入新的成绩: ");
scanf("%f",&(s->xs.fs)); break;
case 4: printf("退出该功能!\n");
getch(); return;
default:printf("\n输入错误!请重新输入!\n"); goto L2;
}
printf("\n谢谢! 修改完毕!\n");
getch();
return;//返回主函数
}
/*******************************************************/
/*浏览学员信息子函数*/
void LiuLan(LinkList List)
{ Student* r;
int i,j,n;
r=List->next;
if(r==NULL)
{ printf("\n学员信息未被添加或修改,没有可浏览的学生记录!\n");
getch();
return;//返回主函数
}//查看是否有添加或修改的学生记录
printf("\n\t学 号\t姓 名\t成 绩\n");
/*计算共有多少条可浏览的记录,存放在n中*/
n=0;
while(r!=NULL)
{ n++; r=r->next; }
/*用冒泡法对List做升序排序*/
for(j=1;j
{ r=List->next;
for(i=1;i
{ if(r->xs.xh>r->next->xs.xh)
swap(r,r->next);//交换r与r->next中的内容
r=r->next;
}
}
/*在屏幕上显示学员记录*/
r=List->next;
while(r!=NULL)
{ printf("\t%d\t%s\t%.1f\n",r->xs.xh,r->xs.xm,r->xs.fs);
r=r->next;
}
printf("\n班级信息显示完毕!\n");
getch();
return;//返回主函数
}
/*******************************************************/
/*存档学员信息子函数*/
void CunDang(LinkList L1,LinkList L2)
{ FILE* fp;
Student* r;
if((fp=fopen("c:\\abc.txt","w"))==NULL)
{ printf("open file error!\n"); exit(0); }//以写的方式打开文件
if(L1->next==NULL && L2->next==NULL)
{ printf("\n未输入需要保存的信息!\n");
getch();
return;//返回主函数
}//查看是否有需要保存的记录
/*将两个链表中的记录保存在硬盘文件上*/
r=L1->next;
while(r!=NULL)
{ fprintf(fp,"%d\t%s\t%.1f\n",r->xs.xh,r->xs.xm,r->xs.fs);
r=r->next;
}
r=L2->next;
while(r!=NULL)
{ fprintf(fp,"%d\t%s\t%.1f\n",r->xs.xh,r->xs.xm,r->xs.fs);
r=r->next;
}
printf("\n文件保存成功!\n");
getch();
fclose(fp);//关闭文件
return; //返回主函数
}
/*******************************************************/
/*读取学员信息子函数*/
void DuQu(void)
{ int i; char ch;
FILE* fp;
int xuehao;
float fenshu;
char str[10];
if((fp=fopen("c:\\abc.txt","r"))==NULL)
{ printf("ERROR!\n"); exit(0); }//以只读方式打开文件
/*查出回车数,即记录个数,存放在i中*/
i=0;
ch=fgetc(fp);
while(EOF!=ch)
{ if('\n'==ch) i++;
ch=fgetc(fp);
}
if(0==i)
{ printf("\n无保存记录!\n");
fclose(fp);
getch();
return;//返回主函数
}//文件中无学员记录
printf("\n\t
学 号\t姓 名\t成 绩\n");
/*读出文件中的数据并显示*/
rewind(fp);
for(;i>=1;i--)
{ fscanf(fp,"%d %s %f",&xuehao,str,&fenshu);
printf("\t%d\t%s\t%.1f\n",xuehao,str,fenshu);
}
fclose(fp);
printf("\n\n读取完毕!\n");
getch();
return;//返回主函数 }
/*******************************************************/
/*浏览前对记录排序时,用于交换两节点中内容的函数*/
void swap(Student* xs1,Student* xs2)
{ stu st;
st=xs1->xs;
xs1->xs=xs2->xs;
xs2->xs=st;
}
#include"stdio.h"
#include"stdlib.h"
#include"process.h"
#include"conio.h"
#define NULL 0
typedef struct stu
{ int xh;
char xm[10];
float fs;
}stu; /*编程时设计的结构体*/
typedef struct Student
{ stu xs;
struct Student* next;
}Student,*LinkList; /*程序中子函数的声明*/
int EnterChoice(void);
void TianJia(LinkList,LinkList);
void ChaXun(LinkList,LinkList);
void XiuGai(LinkList,LinkList);
void LiuLan(LinkList);
void CunDang(LinkList,LinkList);
void DuQu(void);
void swap(Student*,Student*);
/*主函数部分*/
int main()
{ LinkList List_1; //存放原记录文件中的数据
LinkList List_2; //存放修改或添加的数据
Student* r;
Student* s;
FILE* fp;
char* str;
char ch;
int choice;
int i;
if((fp=fopen("c:\\abc.txt","a+"))==NULL)
{ printf("ERROR!\n");
exit(0); }//以读写的方式打开文件
/*初始化两个单链表*/
List_1=(LinkList)malloc(sizeof(Student));
List_2=(LinkList)malloc(sizeof(Student));
List_1->next=List_2->next=NULL;
/*查出回车数,即记录个数,保存在i中*/
i=0; rewind(fp);
ch=fgetc(fp);
while(EOF!=ch)
{ if('\n'==ch) i++;
ch=fgetc(fp);
} /*读入文件中的数据,保存在List_1中*/
rewind(fp);
r=List_1;
for(;i>=1;i--)
{ s=(Student*)malloc(sizeof(Student));
str=s->xs.xm;
fscanf(fp,"%d %s %f",&(s->xs.xh),str,&(s->xs.fs));
r->next=s; r=s;
}
r->next=NULL;
fclose (fp);//关闭文件
while((choice=EnterChoice())!=7)
{ switch(choice)
{ case 1: TianJia(List_1,List_2); break;
case 2: ChaXun(List_1,List_2); break;
case 3: XiuGai(List_1,List_2); break;
case 4: LiuLan(List_2); break;
case 5: CunDang(List_1,List_2); break;
case 6: DuQu(); break;
default:printf("\n输入错误,请重新输入!\n");
getch();
}
}//使用该系统进行管理
/*将链表中所有节点申情的空间释放*/
r=List_1->next;
while(r!=NULL)
{ s=r; r=r->next; free(s);
}
r=List_2->next;
while(r!=NULL)
{ s=r; r=r->next; free(s);
}
free(List_1);
free(List_2);
printf("\n成功退出系统!谢谢使用!\n");
return 0; }
/*******************************************************/
/*功能选择输入子函数*/
int EnterChoice(void)
{ char choice;
system("cls");
printf("\n----------------------------\n");
printf("\t学生管理系统\n");
printf("----------------------------\n");
printf("1.添加学员信息\n");
printf("2.查询学生记录\n");
printf("3.修改学生记录\n");
printf("4.浏览学生记录\n");
printf("5.存档学生记录\n");
printf("6.读取学生记录\n");
printf("7.推出系统\n");
printf("请选择操作(1-7):");
scanf("%d",&choice
);
return choice;//返回主函数 }
/*******************************************************/
/*添加学员信息子函数*/
void TianJia(LinkList List_1,LinkList List_2)
{ Student* s;
Student* r;
int i;
int n;
char* str;
s=NULL;
T: //若输入错误,返回此处执行
printf("请输入你们班的人数:");
scanf("%d",&n);
if(n
{ printf("人数应大于0!\n");
goto T;
}//输入错误
for(i=1;i
{ s=(Student*)malloc(sizeof(Student));
str=s->xs.xm;
L: //若输入学号已存在于学员记录信息中,程序返回此处继续执行
printf("请输入第%d个学员的学号:",i);
scanf("%d",&(s->xs.xh));
/*判断是否已存在该学号的学生*/
r=List_1->next; while(r!=NULL)
{
if(r->xs.xh==s->xs.xh)
{ printf("已存在该学号的学生!\n\n");
goto L;
}
r=r->next;
}
r=List_2->next;
while(r!=NULL)
{
if(r->xs.xh==s->xs.xh)
{
printf("已存在该学号的学生!\n");
goto L;
}
r=r->next;
}
printf("请输入第%d个学员的姓名:",i);
scanf("%s",str);
printf("请输入第%d个学员的成绩:",i);
scanf("%f",&(s->xs.fs));
/*将此学生信息存入List_2中*/
s->next=List_2->next;
List_2->next=s;
}
printf("\n--------输入完毕!------------\n");
getch();
return;//返回主函数 }
/*******************************************************/
/*查询学员信息子函数*/
void ChaXun(LinkList List_1,LinkList List_2)
{ Student* r; int x;
printf("请输入要查找的学员的学号:");
scanf("%d",&x);
/*查询该学生记录是否存放在List_1中*/
r=List_1->next;
while(r!=NULL)
{ if(x==r->xs.xh)
{ printf("\n此学员的学号为:[ %d ]\n",x);
printf("此学员的姓名为:[ %s ]\n",r->xs.xm);
printf("此学员的成绩为:[ %.1f ]\n",r->xs.fs);
getch();
return;//返回主函数
} else r=r->next;
}
/*查询该学生记录是否存放在List_2中*/
r=List_2->next;
while(r!=NULL)
{ if(x==r->xs.xh)
{ printf("此学员的学号为:[ %d ]\n",x);
printf("此学员的姓名为:[ %s ]\n",r->xs.xm);
printf("此学员的成绩为:[ %f ]\n",r->xs.fs);
getch();
return;//返回主函数
} else r=r->next;
}
printf("\n没有要查找的学员记录!\n");
getch();
return;//返回主函数 }
/*******************************************************/
/*修改学员信息子函数*/
void XiuGai(LinkList List_1,LinkList List_2)
{ Student* r;
Student* s;
int xh;
int n;
int flag;
printf("请输入要修改的学员的学号:");
scanf("%d",&xh);
/*若该学员信息存放在List_1中,置flag为1*/
r=List_1->next;
while(r!=NULL)
{ if(r->xs.xh==xh)
{ flag=1; break;
}
r=r->next;
}
/*若该学员信息存放在List_2中,置flag为2*/
if(r==NULL)
{ r=List_2->next;
while(r!=NULL)
{ if(r->xs.xh==xh)
{ flag=2; break;
}
r=r->next;
}
}
if(r==NULL)
{
printf("\n没有该学员的纪录!\n");
getch();
return;//返回主函数
}
printf("\n学 号\t姓 名\t成 绩\n");
printf("%d\t%s\t%.1f\n",xh,r->xs.xm,r->xs.fs);
/*若该学员信息在List_2中,进行修改*/
if(2==flag)
{ r=List_2->next;
while(r->xs.xh!=xh)
r=r->next;
L1: //若输入功能选项错误,返回此处执行
printf("\n请选择修改的内容:1.学号 2.姓名 3.成绩 4.退出\n");
scanf("%d",&n);
switch(n)
{
case 1: L11: //若输入学号已存在于其他学员,返回此处执行
printf("\n请输入新的学号: ");
scanf("%d",&(r->xs.xh));
/*判断List_1中是否已存在该学号的学生*/
s=List_1->next;
while(s!=NULL)
{ if(r->xs.xh==s->xs.xh)
{ printf("已存在该学号的学生!\n");
goto L11;
}
s=s->next;
}
/*判断List_2中是否已存在该学号的学生*/
s=List_2->next;
while(s!=NULL)
{ if(r->xs.xh==s->xs.xh && s!=r)
{ printf("已存在该学号的学生!\n");
goto L11;
}
s=s->next;
}
break;
case 2: printf("\n请输入新的姓名: ");
scanf("%s",r->xs.xm);
break;
case 3: printf("\n请输入新的成绩: ");
scanf("%f",&(r->xs.fs));
break;
case 4: printf("退出该功能!\n");
getch();
return;
default:printf("\n输入错误!请重新输入!\n");
goto L1;
}
printf("\n谢谢! 修改完毕!\n");
getch();
return;//返回主函数
}
/*若该学员信息在List_1中,进行修改*/
r=List_1;
while(r->next->xs.xh!=xh)
r=r->next;
s=r->next;
r->next=s->next;
s->next=List_2->next;
List_2->next=s;
L2: //若输入功能选项错误,返回此处执行
printf("\n请选择修改的内容:1.学号 2.姓名 3.成绩 4.退出\n");
scanf("%d",&n);
switch(n) {
case 1: L22: //若输入学号已存在于其他学员,返回此处执行
printf("\n请输入新的学号: ");
scanf("%d",&(s->xs.xh));
/*判断List_1中是否已存在该学号的学生*/
r=List_1->next;
while(r!=NULL)
{ if(r->xs.xh==s->xs.xh)
{ printf("已存在该学号的学生!\n");
goto L22;
}
r=r->next;
}
/*判断List_2中是否已存在该学号的学生*/
r=List_2->next;
while(r!=NULL)
{ if(r->xs.xh==s->xs.xh && r!=s)
{
printf("已存在该学号的学生!\n");
goto L22;
}
r=r->next;
}
break;
case 2: printf("\n请输入新
的姓名: ");
scanf("%s",s->xs.xm); break;
case 3: printf("\n请输入新的成绩: ");
scanf("%f",&(s->xs.fs)); break;
case 4: printf("退出该功能!\n");
getch(); return;
default:printf("\n输入错误!请重新输入!\n"); goto L2;
}
printf("\n谢谢! 修改完毕!\n");
getch();
return;//返回主函数
}
/*******************************************************/
/*浏览学员信息子函数*/
void LiuLan(LinkList List)
{ Student* r;
int i,j,n;
r=List->next;
if(r==NULL)
{ printf("\n学员信息未被添加或修改,没有可浏览的学生记录!\n");
getch();
return;//返回主函数
}//查看是否有添加或修改的学生记录
printf("\n\t学 号\t姓 名\t成 绩\n");
/*计算共有多少条可浏览的记录,存放在n中*/
n=0;
while(r!=NULL)
{ n++; r=r->next; }
/*用冒泡法对List做升序排序*/
for(j=1;j
{ r=List->next;
for(i=1;i
{ if(r->xs.xh>r->next->xs.xh)
swap(r,r->next);//交换r与r->next中的内容
r=r->next;
}
}
/*在屏幕上显示学员记录*/
r=List->next;
while(r!=NULL)
{ printf("\t%d\t%s\t%.1f\n",r->xs.xh,r->xs.xm,r->xs.fs);
r=r->next;
}
printf("\n班级信息显示完毕!\n");
getch();
return;//返回主函数
}
/*******************************************************/
/*存档学员信息子函数*/
void CunDang(LinkList L1,LinkList L2)
{ FILE* fp;
Student* r;
if((fp=fopen("c:\\abc.txt","w"))==NULL)
{ printf("open file error!\n"); exit(0); }//以写的方式打开文件
if(L1->next==NULL && L2->next==NULL)
{ printf("\n未输入需要保存的信息!\n");
getch();
return;//返回主函数
}//查看是否有需要保存的记录
/*将两个链表中的记录保存在硬盘文件上*/
r=L1->next;
while(r!=NULL)
{ fprintf(fp,"%d\t%s\t%.1f\n",r->xs.xh,r->xs.xm,r->xs.fs);
r=r->next;
}
r=L2->next;
while(r!=NULL)
{ fprintf(fp,"%d\t%s\t%.1f\n",r->xs.xh,r->xs.xm,r->xs.fs);
r=r->next;
}
printf("\n文件保存成功!\n");
getch();
fclose(fp);//关闭文件
return; //返回主函数
}
/*******************************************************/
/*读取学员信息子函数*/
void DuQu(void)
{ int i; char ch;
FILE* fp;
int xuehao;
float fenshu;
char str[10];
if((fp=fopen("c:\\abc.txt","r"))==NULL)
{ printf("ERROR!\n"); exit(0); }//以只读方式打开文件
/*查出回车数,即记录个数,存放在i中*/
i=0;
ch=fgetc(fp);
while(EOF!=ch)
{ if('\n'==ch) i++;
ch=fgetc(fp);
}
if(0==i)
{ printf("\n无保存记录!\n");
fclose(fp);
getch();
return;//返回主函数
}//文件中无学员记录
printf("\n\t
学 号\t姓 名\t成 绩\n");
/*读出文件中的数据并显示*/
rewind(fp);
for(;i>=1;i--)
{ fscanf(fp,"%d %s %f",&xuehao,str,&fenshu);
printf("\t%d\t%s\t%.1f\n",xuehao,str,fenshu);
}
fclose(fp);
printf("\n\n读取完毕!\n");
getch();
return;//返回主函数 }
/*******************************************************/
/*浏览前对记录排序时,用于交换两节点中内容的函数*/
void swap(Student* xs1,Student* xs2)
{ stu st;
st=xs1->xs;
xs1->xs=xs2->xs;
xs2->xs=st;
}