成绩管理系统免费(成绩查询管理系统登录)
本文目录一览:
学生成绩管理系统永久免费版 v6.0.9的界面怎么进入
这个我没用过,我用过表单大师,用表单大师可以搭建一个学生成绩管理查询系统。可以根据自己的需求定制,功能灵活,你也可以试试。先是创建表单,再到表单中设置查询参数就可以建起一个查询系统了。
简单学生成绩管理系统
#define N 7 /*学生的人数*/
typedef struct
{
char num[5];
char name[10]; /*记录姓名和学号*/
float math,english,comput,average; /*各个科目及平均分*/
}mark; /*定义学生记录结构体类型*/
typedef struct
{
float fen[4];
int n;
}fsp;/*定义学生记录转化的中间变量*/
void count(mark *s)/*统计各科平均分 各科的最高(低)分及各分数段的人数*/
{
float ave[3]={0};/*存放各科平均分 */
float m[3][2] ;
int num[3][5]={0};/*存放各分数段的人数*/
int i;
m[0][1]=m[0][0]=s-math;
m[1][0]=m[1][1]=s-english;
m[2][0]=m[2][1]=s-comput;
for(i=0;iN;i++)
{ ave[0]+=(s+i)-math;
ave[1]+=(s+i)-english;
ave[2]+=(s+i)-comput;
if( (s+i)-math m[0][0] )
m[0][0]=(s+i)-math;
else if( (s+i)-math m[0][1] )
m[0][1]=(s+i)-math;
if( (s+i)-english m[1][0] )
m[1][0]=(s+i)-english;
else if( (s+i)-english m[1][1] )
m[1][1]=(s+i)-english;
if( (s+i)-comput m[2][0] )
m[2][0]=(s+i)-comput;
else if( (s+i)-comput m[2][1] )
m[2][1]=(s+i)-comput;
/*统计各科的最高(低)分*/
if((s+i)-math60.0)
num[0][0]++;
else if((s+i)-math70.0)
num[0][1]++;
else if((s+i)-math80.0)
num[0][2]++;
else if((s+i)-math90.0)
num[0][3]++;
else num[0][4]++;
/*统计数学各分数段的人数*/
if((s+i)-english60.0)
num[1][0]++;
else if((s+i)-english70.0)
num[1][1]++;
else if((s+i)-english80.0)
num[1][2]++;
else if((s+i)-english90.0)
num[1][3]++;
else num[1][4]++;
/*统计英语各分数段的人数*/
if((s+i)-comput60.0)
num[2][0]++;
else if((s+i)-comput70.0)
num[2][1]++;
else if((s+i)-comput80.0)
num[2][2]++;
else if((s+i)-comput90.0)
num[2][3]++;
else num[2][4]++;
/*统计计算机各分数段的人数 */
}
for(i=0;i3;i++)
ave[i]=ave[i]/N;
printf("三门科的平均分分别为:\
%.1f %.1f %.1f\
",ave[0],ave[1],ave[2]);
printf("三门科的最高分与最底分分别为:\
");
printf("%.1f %.1f\
%.1f %.1f\
%.1f %.1f\
",
m[0][0],m[0][1],m[1][0],m[1][1],m[2][0],m[2][1]);
printf("三门科不及格 60-69 70-79 80-89 90分以上的人数分别为:\
");
printf("数学: %3d%5d%6d%6d%4d\
",num[0][0],num[0][1],num[0][2],num[0][3],num[0][4]);
printf("英语: %3d%5d%6d%6d%4d\
",num[1][0],num[1][1],num[1][2],num[1][3],num[1][4]);
printf("计算机:%3d%5d%6d%6d%4d\
",num[2][0],num[2][1],num[2][2],num[2][3],num[2][4]);
}
void found(mark *s)/*输入学生的学号查询学生的成绩情况*/
{
char a[10];/*接受输入的学号*/
int flag,i;/*循环变量*/
char * b="exit";
do
{ flag=0;
printf("请输入所要查询的学生的学号或姓名\
");
getchar();
gets(a);
for(i=0;iN;i++)
{printf("该生的学号,姓名,各门课程及平均成绩为:\br%s %s %.1f %.1f %.1f %.1f\br"br ,(s+i)-num,(s+i)-name,(s+i)-math,(s+i)-english,(s+i)-comput,(s+i)-average);/*成绩打印*/br flag=1;}
if(flag==0) printf("查无此人\
");
}while(strcmp(a,b));
printf("查询结束");
}
main()
{
mark *s,*a,*b,*c,*d;
fsp *p;
s=(mark*)malloc(N*sizeof(mark));
a=(mark*)malloc(N*sizeof(mark));
b=(mark*)malloc(N*sizeof(mark));
c=(mark*)malloc(N*sizeof(mark));
d=(mark*)malloc(N*sizeof(mark));
p=(fsp*)malloc(N*sizeof(fsp));/*各变量空间开辟 */
printf("初始化学生的记录为:\
");
printf("按数学成绩排序学生的记录为:\
");
printf("按英语成绩排序学生的记录为:\
");
printf("按计算机成绩排序学生的记录为:\
");
printf("按平均成绩排序学生的记录为:\
");
count(s);
found(s);
}
成绩管理系统
你把有的课程名字改一下,或者添加一些东西,在结构体定义那里#include#include#includestructstu{intnum;intwuli;inthuaxue;intmath;};FILE*fp;//添加学生信息,可以排除与已存的冲突;voidadd(){inta,b,c,d,n=0;structstustudent;fp=fopen("score.txt","r+");printf("请输入要添加学生的学号、物理成绩、化学成绩及数学成绩\n");scanf("%d%d%d%d",student.num,student.wuli,student.huaxue,student.math);while(!feof(fp)){fscanf(fp,"%d%d%d%d",a,b,c,d);if(student.num==a){printf("该学生信息已存在,不需要添加\n");fclose(fp);n=1;break;}}if(n==0){printf("信息库中没有该学生信息,可以添加\n");fseek(fp,0,2);//文件末尾添加;fprintf(fp,"%d\t%d\t%d\t%d\n",student.num,student.wuli,student.huaxue,student.math);fclose(fp);}}//修改学生信息;voidmodify(){intn=0,number,a,b,c,d,offset;structstustudent;fp=fopen("score.txt","r+");if(fp==NULL){printf("信息库为空\n");exit(0);}printf("请输入要修改学生的学号\n");scanf("%d",number);while(!feof(fp)){offset=ftell(fp);fscanf(fp,"%d%d%d%d",a,b,c,d);if(number==a){printf("该学生信息为:\n");printf("%d\t%d\t%d\t%d\n",a,b,c,d);printf("请输入要修改的信息\n");scanf("%d%d%d%d",student.num,student.wuli,student.huaxue,student.math);fseek(fp,offset,0);fprintf(fp,"%d\t%d\t%d\t%d\n",student.num,student.wuli,student.huaxue,student.math);n=1;break;}}if(n==0){printf("该学生信息不存在\n");}fclose(fp);}//删除学生信息;voiddel(){intn=0,number,a,b,c,d,m,offset;fp=fopen("score.txt","r+");if(fp==NULL){printf("信息库为空\n");exit(0);}printf("请输入删除学生的学号\n");scanf("%d",number);while(!feof(fp)){offset=ftell(fp);fscanf(fp,"%d%d%d%d",a,b,c,d);if(number==a){printf("该学生信息为:\n");printf("%d\t%d\t%d\t%d\n",a,b,c,d);printf("是否要删除该学生信息,是:1;否:0\n");scanf("%d",m);if(m){fseek(fp,offset,0);fprintf(fp,"%s\t%s\t%s\t%s","","","","");printf("\n");printf("该学生信息已删除\n");}elseprintf("您已放弃删除该学生信息\n");n=1;break;}}if(n==0){printf("该学生信息不存在\n");}fclose(fp);}//查找学生信息;voidsearch(){intn=0,number,a,b,c,d,m;chars[10];fp=fopen("score.txt","r+");if(fp==NULL){printf("信息库为空\n");exit(0);}printf("请选择查找方式:1--按学号查找;0--按学科查找\n");scanf("%d",m);if(m){printf("请输入要查找学生的学号\n");scanf("%d",number);while(fscanf(fp,"%d%d%d%d",a,b,c,d)!=-1){if(number==a){printf("已找到,该学生信息为:\n");printf("%s%s%s%s\n","学号","物理成绩","化学成绩","数学成绩");printf("%d\t%d\t%d\t%d\n",a,b,c,d);n=1;break;}}if(n==0){printf("该学生信息不存在\n");}fclose(fp);}else{printf("请输入要查找的学科\n");scanf("%s",s);if(strcmp(s,"wuli")==0){printf("学号\t物理成绩\n");while(fscanf(fp,"%d%d%d%d",a,b,c,d)!=-1)printf("%d\t%d\n",a,b);fclose(fp);}if(strcmp(s,"huaxue")==0){printf("学号\t化学成绩\n");while(fscanf(fp,"%d%d%d%d",a,b,c,d)!=-1)printf("%d\t%d\n",a,c);fclose(fp);}if(strcmp(s,"math")==0){printf("学号\t数学成绩\n");while(fscanf(fp,"%d%d%d%d",a,b,c,d)!=-1)printf("%d\t%d\n",a,d);fclose(fp);}if(strcmp(s,"wuli")strcmp(s,"huaxue")strcmp(s,"math")){printf("错误,要查找的学科不存在\n");fclose(fp);}}}//统计学生信息;voidtongji(){intn=0,a,b,c,d,m,k,x[100],i,j,l=1;floatsum=0,h[100],k1;fp=fopen("score.txt","r+");if(fp==NULL){printf("信息库为空\n");exit(0);}printf("0--统计单科平均成绩\n");printf("1--统计单个学生的平均成绩和总成绩,对学生排名\n");printf("请选择统计类型\n");scanf("%d",m);if(!m){printf("1--统计物理的平均成绩\n");printf("2--统计化学的平均成绩\n");printf("3--统计数学的平均成绩\n");printf("请选择要统计的学科\n");scanf("%d",m);if(m==1){while(fscanf(fp,"%d%d%d%d",a,b,c,d)!=-1){sum=sum+b;n++;}printf("物理的平均成绩为%2.2f\n",sum/n);fclose(fp);}if(m==2){while(fscanf(fp,"%d%d%d%d",a,b,c,d)!=-1){sum=sum+c;n++;}printf("化学的平均成绩为%.2f\n",sum/n);fclose(fp);}if(m==3){while(fscanf(fp,"%d%d%d%d",a,b,c,d)!=-1){sum=sum+d;n++;}printf("数学的平均成绩为%.2f\n",sum/n);fclose(fp);}}else{while(fscanf(fp,"%d%d%d%d",a,b,c,d)!=-1){h[n]=(float)(b+c+d);x[n]=a;n++;}for(i=0;l==1ih[j+1]){k1=h[j];h[j]=h[j+1];h[j+1]=k1;k=x[j];x[j]=x[j+1];x[j+1]=k;l=1;}}}printf("排序后\n");printf("学号\t总成绩\t平均成绩\n");for(i=0;i=0m=5){switch(m){case1:add();break;case2:modify();break;case3:del();break;case4:search();break;case5:tongji();break;case0:exit(0);}printf("\n\n操作完毕,请再次选择!");}elseprintf("\n\n选择错误,请再次选择!");}}
学生成绩管理系统
学生成绩管理系统C代码
/ *头文件* /
#包括
包括
#包括 / *其他指令* /
包括中/ *字符串函数* /
/ *内存操作函数* /
/ *字符处理函数* /
包括 / *动态地址分配函数* /
定义:LEN大小(学生)
typedef结构中,学??生/ *定义结构数组,用于缓存数据* /
{字符数[6];
字符名称[5];
得分[3];
int总和;
浮动平均水平;
诠释订单
结构STU *下;
}成绩管理系统免费的学生;
/ *函数原型* /
学生成绩管理系统免费的init( );/ /初始化函数* /
诠释MENU_SELECT的(); / *菜单函数* /
学生的create(); / *创建的链表* /
无效打印(学生*头); / *显示所有记录* /
无效搜索(学生*头); / *找到记录* /
学生删除(STUDENT *头); / *删除记录* / /学生排序(学生头); / *排序* /
学生(学生*头,新的学生*); *插入/ *插入记录* /
无效保存(的学生头); / *保存文件* /
学生的load(); / *读取文件* /
/ *主函数接口* /
主()
{的学生*头,新的;
头的init(); / *初始化链表头的值是NULL * /
(;) / *循环无限* /
{开关(menu??_select())
{
案例1:头= create()方法的突破;
案例2:打印(头);休息;
案例3:搜索(头);突破;
情况下,4头=删除(头);突破;
情况下5头排序(头);突破;
案例6:头插入(头,与新的);打破; / *新的返回地址* /
案例7:保存(头);
案例8:头=负载(
案例9:退出);突破;(0)/ *如果菜单,返回值是年底的9个项目* /
}
}
}
/ *初始化函数* /
学生的init()
{
返回NULL; / *返回一个空指针* /
}
a
/ *菜单选择功能* /
menu_select
{N;
结构日期d / *定义的时间结构* / / GETDATE(&D)/ *读取系统日期,并把它在结构上D * /
printf的(“按任意键进入菜单......”); / *按任意键进入主菜单* /
的getch(); / *读取从键盘输入一个字符,但不显示在屏幕上* /
clrscr(); / *清屏* / / printf(“请********************************************* *********************************** \ n“);
printf(”请\ T \吨的\ n“);
printf(”请\ n \ t \ t学生成绩管理系统\ n“);
printf(”请************ ************************* MENU ************************ *************** \ n“);
printf的(”\ t \ t \ T1输入记录\ n“); / *输入学生记录* / BR / printf的(“\ t \ t \ T2打印记录\ n”); / *显示* /
printf的(“\ t \ t \ T3的搜索记录名称\ n”); / * * /
printf的(“\ t \ t \ T4。删除记录\ n”); / *删除* /
printf的(“\ t \ t \ T5。排序,使新的文件\ n“); / *排序* / br /输出(”\ t \ t \ T6插入记录到列表\ n“); / *插入* /
printf的(”\ t \ t \ T7保存的文件\ n“); / *保存* /
printf的(”\ t \ t \ T8负载的文件\ n“); / *读* /
printf的(”\ t \ T \ T9退出\ n“); / *退出* /
printf的(”\ n \ t \ t胡嘿黉\ n“);
printf的(”****** ************************************************** ************************ \ n“);
printf的(”\ t \ t \ t \ t%d \ \%d的\ \%e\“,d.da_year,d.da_mon,d.da_day); / *显示当前系统日期* /
做{
printf的(”\ n \ t \ t \拉幅机的选择(1?9):“);
scanf的(”%d“,&N);
}(N 9)/ *如果该选项是不减肥9 * /
回报率(N); / *返回选项的数量,主要功能调用相应的函数* /
}
/ *输入函数* /
学生创??建()
{I,S
学生头= NULL,* P / *定义函数这个函数返回一个指针表头指针* /
Clrscr();
(;)
{P =(学生)的malloc(LEN); / *打开了一个新的单元* / BR /(P)/ *如果指针p是空* /
{printf的(“\ Nout的记忆。”); / *输出内存溢出* /
回报(头); / *返回头指针,下同* /
}
printf的(“请输入NUM(0:列表结束):”);
scanf的(“%s”,P- NUM);
(P-数[0] == '0')打破; / *如果第一个字符的学生数0输入* /
printf(“请结束输入姓名:“);
scanf的(”%s“,P-名称);
printf(”请输入%D分数\ n“); / *迅速启动分型结果* /
= 0; / *计算每个学生的总成绩,初始值为0 * /
(i = 0; I 3; i + +)/ * 3个疗程周期的3倍* /
{
做{
printf的(“得分%D:”,i +1);
scanf的(“%d”的,普 - 得分[I]);
(P-得分[I] 得分[I] 100)/ *确保得分在0至100之间* /
printf的(“数据错误,请重新输入\ n”);
}而(P得分[I] [I] 100分);
= S + P-得分[I] / *堆积门的成绩* /
}
P-总和= S / *节省的总成绩* /
对平均= (浮)/ 3; / *首先转换类型转换s转换为float类型,然后寻求的平均* /
P-订单= 0; / *在此之前的值排序为0 * / BR / P =头; / *头节点作为一个新的输入节点的后继节点* /
头= P / *新的输入节点作为新的头节点* /
}
a回报(头);
}
/ *显示所有记录函数* / 无效打印(学生头)
{i = 0; / *统计记录数* /
学生* P / *移动指针* /
Clrscr();
P =头; / *初始的头指针* / / printf(“请\ n ************************************学生****** ****************************** \ n“);
printf(”请---- -------------------------------------------------- --------------------- \ n“); br /输出(”|记录|编号|名称| SC1 SC2 SC3 |森|大道|订单| \ n“);
printf的(”------------------------------------ ------------------------------------------- \ n“); ...... /而(p! = NULL)
{
+ +;
printf的(“|%3D |%4 |%|%-4S 3D | 3D | 3D | %的3d |%4.2f |%-5d的| \“,
,对 - 数,对 - 名称,对 - 分数[0],对 - 分数[1],对 - [2分],P-总之,对平均,P-订单);
P = P-下;
}
printf的(“------ -------------------------------------------------- ----------------------- \ n“);
printf的(”*************** *********************** END ************************** ************ \ n“);
}
/ *查找录音功能* /
无效搜索(学生*头) BR / {STUDENT * p; / *移动指针* /
个char [5]; / *商店的名称的字符数组* /
Clrscr();
scanf函数
printf的(“请输入您的名字进行搜索。\ n”);(%S“,S);
P =头; / *分配的头指针P * /
而(STRCMP(P-名称,s) P = NULL)/ *的名称的记录时不看,或指针的时空* /
P = P- / *移动指针指向下一个节点* /
(p! = NULL)/ *如果指针不为空* /
{printf(“请\ n ******** ***************************** FOUND ******************** **************** \ n“);
printf(”请---------------------- -------------------------------------------------- ------- \ n“);
printf的(”|编号|名称| SC1 SC2 | SC3 |森|大道|订购| \ n“);
printf的(” - -------------------------------------------------- --------------------------- \ n“);
printf的(”| 4 |%4S |%3D |%三维|%的3d |%的3d |%4.2f |%-5d的| \ N“,
对 - 数,对 - 名称,对 - 分数[0],对 - 分数[1],对 - 分数[2],对 - 总和,对 - 平均,对 - 顺序);
printf(“请------------------- -------------------------------------------------- --------- \ n“);
printf的(”***************************** ********** END ************************************** \ N“);
}
其他
printf的(”\ n该网页的没有NUM%的学生在名单上。\ n“); / *学生* /
}
/ *删除记录的函数* /
学生*头*删除(学生)
学生{N; * P1 * P2 / * P1是找到要删除一个节点的指针,P2及其前体的指针* /
字符c的s [6] / [6]用来存储学生数,c是用于输入字母* / / clrscr();
printf的(“请输入删除的民:”);
scanf的(“%s”);
P1 = P2 =头; / * P1和P2富最初的头指针* /
(STRCMP(P1-NUM) P1 = NULL)/ *当记录数的学校不看,或指针不为空* / / {P2 = P1 / * P1指针的值分配给P2 P1前体指针* /
P1 = P1-; / *点p1指针到下一条记录* /
} BR /(STRCMP(P1-民)== 0)/ *学生ID * /
{printf的(“***************** ********************* FOUND **************************** ******** \ n“);
printf(”请------------------------------ ------------------------------------------------- \ N“);
printf的(”|编号|名称| SC1 SC2 | SC3 |森|大道|在线订单| \ n“);
printf的(”--------- -------------------------------------------------- -------------------- \ n“);
printf的(”| 4 |%4S |%3D | 3D | 3D | 3D |%4.2f%5D | \ n“,
P1-民,P1-名称,P1-得分[0],P1 - [1分],P1-得分[2] ,P1-总之,P1-平均,P1-订单);
printf的(“-------------------------- -------------------------------------------------- --- \ n“);
printf(”请*********************************** **** END ************************************** \ n“); ...... / printf的(“成绩管理系统免费你确定要删除的学生Y / N成绩管理系统免费?”); / *提示你是否要删除,输入y删除n退出* /
(;)
/ {scanf函数(“%C”,&C);
(C =='N'| | C =='N'); / *如果你不删除,然后跳出循环* /
(C =='Y'| | C =='Y')
{
(P1 ==头)/ * P1 ==头,被删除节点是第一个节点* /
头= P1-下; / *第二个节点的地址给头* /
其他
P2-下一个= P1- /否则,请单击节点地址被分配到前一个节点的地址* /
N = N-1; br /输出(“\ nNum%的学生已被删除。\ n”,S); / printf的(“不要忘记保存。\ n”); / *循环后已被删除* /
}
}
} 其他
printf的(“\ n该网页的没有NUM%的学生在名单上。\ n”); /,找不到节点* /
回报(头);
}
/ *排序函数* /
学生排序(学生头)
{INT I = 0; / *保存排名* /
学生* P1, * P2 * T,*温度; / *定义一个临时指针* /
温度=头下; / *原来的下一个节点的指针表头的头指针* /
头 = NULL; / *头节点的新表的第一个节点* /
(temp! = NULL)/ *当原表不为空,进行排??序* /
{
T =温度; / *取前表节点* /
TEMP =温度 - ; / *原来的头节点的指针向后* /
P1 =头/头*移动指针P1指针从头开始* /
P2 =头; / *移动指针P2为的P1前驱体的头指针的初始值* /
而(平均平均 P1 = NULL)/ *成绩平均比??较* /
{
P2 = P1 / *点值小进行排序,新表指针落后* /
P1 = P1-下;
}
(P1 == P2)/ * P1 == P2,点值进行排序,应该排在第一个* / BR / {
T- = P1;进行排序的继任者的p * /
头= T / * / *新的头节点进行排序点* /
}
的else / *进行排序点应插入在中间的位置p2和p1的,例如为p的空尾之间* /
{
叔 - 下一个= p1的; / * t的后继是p1 * /
P2- = T / * P2的继任吨* /
}
}
P1 =头; / *排序头指针被分配到P1准备填写的排名* /
(p1! = NULL)/ * p1是不是空的,下面的操作* /
{
+ +; / *节点数量* /
P1-订单; / *分配的节点数量的排名* /
P1 = P1-; / *指针后移* /
}
printf的(“的排序是SUCESSFUL。\ n”排序;} / *成功* /
回报(头);
}
/ *插入记录功能* /
学生插入(学生头STUDENT *新)
{STUDENT * P0,P1,P2;
整数N,SUM1;
P1 =头/ * P1点的第一个节点* /
P0 =新/ * P0点要插入节点* /
printf的(“\ n请输入一个新的记录。\ n”) / *提示信息记录* /
printf的(“请输入数量:”);
scanf函数(“%s”的新数);
printf(“输入的名称:“);
scanf的(”%s“的新名);
printf的(”请输入%d的分数。\ n“);
SUM1 = 0; / *保存新的得分纪录,初始值为0 * /
为(i = 0; I 3; i + +)
{
做{
printf的(“得分%D:“,i +1);
scanf的(”%d“的,与新得分[]);
(新 - 得分[I] 100 | |新 - 得分[I] 0)
printf(“请数据错误,请重新输入。\ n”);
}而(新 - 评分[我] 100 | |新 - 评分[I] 0);
SUM1 = SUM1 +新 - 得分[I] / *累计门成绩* /
}
新 - 金额= SUM1; /存款总额新的记录* /
新的平均=()SUM1 / 3;
新订单= 0;
(头== NULL)/ *原链表为空表* /
{头= P0,P0- = NULL;} / *节点指出P0口作为头节点* /
其他
{((P0-平均平均)(P1-!= NULL))
{P2 = P1 / P2点只是P1结点* /
P1 = P1-; / * P1落后节点* /
}
(P0-平均 = P1-平均)
{如果(头== P1)头= P0 / *插入到原来的第一个节点* / /其他P2- = P0 / *在插入节点* /
P0- = P1;}
其他
{P1-下一个= P0到P2点P0- = NULL;} / *上的最后一个节点* /
}
N = N +1; / *节点数目加1 * /
头排序(头); / *调用sort函数的学生的成绩重新排序* /
printf的(“,已插入\ nStudent%s的。\ n”,新名);
printf的(“不要忘记保存新的文件。\ n“);
回报(头);
}
/ *将数据保存到文件函数* /
无效保存(学生*头)
{FILE * FP; / *定义点文件指针* /
STUDENT * p; / *定义移动指针* /
字符,OUTFILE [10];
输出(“请输入OUTFILE名称,例如C:\ \成绩\ n”);
scanf的(“%s”,OUTFILE);
((FP =打开(OUTFILE,“WB”) )== NULL)/ *为输出打开一个二进制文件,只写* /
{
printf的(“无法打开文件\ n”);
回报; / *如果您无法打开返回菜单* /
}
printf的(“\ nSaving的文件... \ n”);
P =头; / *移动指针从头开始* /
而(p! = NULL)/ * p不为空* /
{
FWRITE(P,LEN,1,FP); / *写的指针记录* /
P = P-下; / *指针后移* /
}
FCLOSE(FP); / *关闭文件* /
printf的(“将文件保存成功!\ n“);
}
/ *从文件功能* /
学生中读取数据负载()
{STUDENT * P1 * P2 *头= NULL; / *定义记录指针变量* /
FILE * FP / *定义指向文件的指针* /
字符的infile [10];
printf的(“输入INFILE名称,例如c:\ \成绩\ n“);
scanf的(”%s“,infile中);
((FP =的FOPEN(INFILE,”包“))= = NULL)/ *打开一个二进制文件只读* /
{
printf的(“无法打开文件\ n”);
回报(头);
}
printf的(“\ n载入的文件!\ n”);
P1 =(学生)的malloc(LEN); / *开辟了一条新的单位* /
(P1 )
{
printf的(“内存不足!\ n”);
回报(头);
}
头= P1 / *适用于空间,作为头指针* /
同时(!的feof(FP))/ *循环读取数据,直到年底结束的文件* / {
(FREAD(P1,LEN,1,FP)= 1)打破; / *如果你不读出的数据的循环* /
P1- =(学生)的malloc(LEN); / *下一个结点打开空间* /
(P1-)
{
printf的(“内存不足!\ n”);
回报(头); BR /}
P2 = P1 / P2点只是P1结点* /
P1 = P1-; / *指针回新读入数据链当前的表* /
}
P2- = NULL; / *最后一个节点的继任指针为空* /
FCLOSE(FP);
输出( “你已经成功从文件中读取数据!\ n”);
回报(头);
}