C语言学生管理系统.docx

上传人:b****5 文档编号:8509862 上传时间:2023-01-31 格式:DOCX 页数:19 大小:17.77KB
下载 相关 举报
C语言学生管理系统.docx_第1页
第1页 / 共19页
C语言学生管理系统.docx_第2页
第2页 / 共19页
C语言学生管理系统.docx_第3页
第3页 / 共19页
C语言学生管理系统.docx_第4页
第4页 / 共19页
C语言学生管理系统.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

C语言学生管理系统.docx

《C语言学生管理系统.docx》由会员分享,可在线阅读,更多相关《C语言学生管理系统.docx(19页珍藏版)》请在冰豆网上搜索。

C语言学生管理系统.docx

C语言学生管理系统

#include

#include

#include

#include

typedefchariteamtype;

typedefstructStuIF

{

iteamtypeNAME[10],STNB[10];

floatCCN,CMH,CEG;

floatSUM,AVGE;

}PerStu;

typedefstructnode

{

structStuIFPerStu;

structnode*prior,*next;

}PerNode;

PerNode*H;

PerNode*InitNode()

{

PerNode*L;

L=(PerNode*)malloc(sizeof(PerNode));

if(L)

{L->prior=NULL;L->next=NULL;}

returnL;

}

voidDplyone(PerNode*Q1)

{

if(!

Q1)return;

else{

printf("%-12s",Q1->PerStu.NAME);

printf("%-12s",Q1->PerStu.STNB);

printf("%-12.1f",Q1->PerStu.CCN);

printf("%-12.1f",Q1->PerStu.CMH);

printf("%-12.1f",Q1->PerStu.CEG);

printf("%-12.1f",Q1->PerStu.SUM);

printf("%-12.1f",Q1->PerStu.AVGE);

printf("\n");

}

return;

}

PerNode*Srchone(PerNode*Q2)

{

charstnb[10];

PerNode*L;

L=Q2->next;

if(!

L)printf("\n系统中暂无任何信息,查找失败!

\n");

else{

printf("\n\n请输入要查找的学生学号:

");

scanf("%s",stnb);

while(L&&(strcmp(L->PerStu.STNB,stnb))!

=0)

{L=L->next;}

if(!

L)printf("\n系统中无此相关信息,查找失败!

\n");

}

returnL;

}

voidConSrchFroC(PerNode*Q3)

{

PerNode*L,*p=Q3->next;

floatf1,f2,f3;

intflag;

charm;

do{

do{

flag=1;

printf("\n\n请输入两个分数来指定条件查找分数段:

\n");

scanf("%f%f",&f1,&f2);

if(f1==f2){flag=0;printf("\n\n输入的分数无法确定查找分数段!

\n");}

elseif(f1>f2){f3=f1;f1=f2;f2=f3;}

}while(!

flag);

flag=0;

L=p;

while(L)

{

if((L->PerStu.CCN)>=f1&&(L->PerStu.CCN)<=f2)

{

flag++;

if(flag==1)

printf("\n\n姓名学号科一分数科二分数科三分数总分平均分\n");

Dplyone(L);

}

L=L->next;

}

if(!

flag)printf("\n系统中无满足条件分数段的学生记录!

\n");

printf("\n是否在科一中继续查找,输入Y继续,N退出查找:

\n");

do{m=getche();

}while(m!

='Y'&&m!

='N'&&m!

='y'&&m!

='n');

}while((m=='Y')||(m=='y'));

return;

}

voidConSrchFroM(PerNode*Q4)

{

PerNode*L,*p=Q4->next;

floatf1,f2,f3;

intflag;

charm;

do{

do{

flag=1;

printf("\n\n请输入两个分数来指定条件查找分数段:

\n");

scanf("%f%f",&f1,&f2);

if(f1==f2){flag=0;printf("\n输入的分数无法确定查找分数段!

\n");}

elseif(f1>f2){f3=f1;f1=f2;f2=f3;}

}while(!

flag);

flag=0;

L=p;

while(L)

{

if((L->PerStu.CMH)>=f1&&(L->PerStu.CMH)<=f2)

{

flag++;

if(flag==1)

printf("\n\n姓名学号科一分数科二分数科三分数总分平均分\n");

Dplyone(L);

}

L=L->next;

}

if(!

flag)printf("\n系统中无满足条件分数段的学生记录!

\n");

printf("\n是否在科二中继续查找,输入Y继续,N退出查找:

\n");

do{m=getche();

}while(m!

='Y'&&m!

='N'&&m!

='y'&&m!

='n');

}while((m=='Y')||(m=='y'));

return;

}

voidConSrchFroE(PerNode*Q5)

{

PerNode*L,*p=Q5->next;

floatf1,f2,f3;

intflag;

charm;

do{

do{

flag=1;

printf("\n\n请输入两个分数来指定条件查找分数段:

\n");

scanf("%f%f",&f1,&f2);

if(f1==f2){flag=0;printf("\n输入的分数无法确定查找分数段!

\n");}

elseif(f1>f2){f3=f1;f1=f2;f2=f3;}

}while(!

flag);

flag=0;

L=p;

while(L)

{

if((L->PerStu.CEG)>=f1&&(L->PerStu.CEG)<=f2)

{

flag++;

if(flag==1)

printf("\n\n姓名学号科一分数科二分数科三分数总分平均分\n");

Dplyone(L);

}

L=L->next;

}

if(!

flag)printf("\n系统中无满足条件分数段的学生记录!

\n");

printf("\n是否在科三中继续查找,输入Y继续,N退出查找:

\n");

do{m=getche();

}while(m!

='Y'&&m!

='N'&&m!

='y'&&m!

='n');

}while((m=='Y')||(m=='y'));

return;

}

voidConSrchFroS(PerNode*Q6)

{

PerNode*L,*p=Q6->next;

floatf1,f2,f3;

intflag;

charm;

do{

do{

flag=1;

printf("\n\n请输入两个分数来指定条件查找分数段:

\n");

scanf("%f%f",&f1,&f2);

if(f1==f2){flag=0;printf("\n输入的分数无法确定查找分数段!

\n");}

elseif(f1>f2){f3=f1;f1=f2;f2=f3;}

}while(!

flag);

flag=0;

L=p;

while(L)

{

if((L->PerStu.SUM)>=f1&&(L->PerStu.SUM)<=f2)

{

flag++;

if(flag==1)

printf("\n\n姓名学号科一分数科二分数科三分数总分平均分\n");

Dplyone(L);

}

L=L->next;

}

if(!

flag)printf("\n系统中无满足条件分数段的学生记录!

\n");

printf("\n是否在总分中继续查找,输入Y继续,N退出查找:

\n");

do{m=getche();

}while(m!

='Y'&&m!

='N'&&m!

='y'&&m!

='n');

}while((m=='Y')||(m=='y'));

return;

}

voidConSrchFroA(PerNode*Q7)

{

PerNode*L,*p=Q7->next;

floatf1,f2,f3;

intflag;

charm;

do{

do{

flag=1;

printf("\n\n请输入两个分数来指定条件查找分数段:

\n");

scanf("%f%f",&f1,&f2);

if(f1==f2){flag=0;printf("\n输入的分数无法确定查找分数段!

\n");}

elseif(f1>f2){f3=f1;f1=f2;f2=f3;}

}while(!

flag);

flag=0;

L=p;

while(L)

{

if((L->PerStu.AVGE)>=f1&&(L->PerStu.AVGE)<=f2)

{

flag++;

if(flag==1)

printf("\n\n姓名学号科一分数科二分数科三分数总分平均分\n");

Dplyone(L);

}

L=L->next;

}

if(!

flag)printf("\n系统中无满足条件分数段的学生记录!

\n");

printf("\n是否在平均分中继续查找,输入Y继续,N退出查找:

\n");

do{m=getche();

}while(m!

='Y'&&m!

='N'&&m!

='y'&&m!

='n');

}while((m=='Y')||(m=='y'));

return;

}

voidFpwrite(FILE*Q8,PerNode*Q9)

{

if(!

Q8)printf("\n文件打开失败,存盘失败!

");

elseif(!

Q9)printf("\n存盘信息有误,存盘失败!

");

else

fprintf(Q8,"%s%s%-5.1f%-5.1f%-5.1f%-6.1f%-5.1f",Q9->PerStu.NAME,Q9->PerStu.STNB,Q9->PerStu.CCN,Q9->PerStu.CMH,Q9->PerStu.CEG,Q9->PerStu.SUM,Q9->PerStu.AVGE);

return;

}

voidEnter(PerNode*L1)

{

charm;

PerNode*P,*L=L1;

do{

P=(PerNode*)malloc(sizeof(PerNode));

if(!

P){printf("内存空间不足,创建失败!

");break;}

else

{

P->prior=L;

P->next=L->next;

if(L->next)L->next->prior=P;

L->next=P;

printf("\n学生姓名:

");

scanf("%s",P->PerStu.NAME);

printf("\n\n学生学号:

");

scanf("%s",P->PerStu.STNB);

printf("\n\n学生第一科成绩:

");

scanf("%f",&(P->PerStu.CCN));

printf("\n\n学生第二科成绩:

");

scanf("%f",&(P->PerStu.CMH));

printf("\n\n学生第三科成绩:

");

scanf("%f",&(P->PerStu.CEG));

P->PerStu.SUM=P->PerStu.CCN+P->PerStu.CMH+P->PerStu.CEG;

P->PerStu.AVGE=P->PerStu.SUM/3.0;

}

printf("\n\n此条信息以创建完毕,是否继续创建,");

printf("\n输入Y继续,N退出创建信息:

\n");

do{m=getche();

}while(m!

='Y'&&m!

='N'&&m!

='y'&&m!

='n');

printf("\n");

}while((m=='Y')||(m=='y'));

return;

}

PerNode*Load(PerNode*L2)

{

ints;

FILE*fp;

PerNode*P,*q,*L;

if((fp=fopen("学生成绩管理系统.txt","r+"))==NULL)

printf("\n文件打开失败!

");

else{

{

L=L2->next;

while(L){q=L->next;free(L);L=q;}

L2->next=NULL;

}

fscanf(fp,"%d",&s);

while(s--)

{

P=(PerNode*)malloc(sizeof(PerNode));

P->prior=L2;

P->next=L2->next;

if(L2->next)L2->next->prior=P;

L2->next=P;

fscanf(fp,"%s%s%f%f%f%f%f",P->PerStu.NAME,P->PerStu.STNB,&(P->PerStu.CCN),&(P->PerStu.CMH),&(P->PerStu.CEG),&(P->PerStu.SUM),&(P->PerStu.AVGE));//完成读取

}

fclose(fp);

printf("\n数据载入成功!

\n");

}

returnL2;

}

voidSearch(PerNode*L3)

{

charm;

PerNode*P;

do{

P=Srchone(L3);

if(P)

{

printf("\n查找成功,是否显示此条信息,Y显示,N退出显示:

\n");

do{m=getche();

}while(m!

='Y'&&m!

='N'&&m!

='y'&&m!

='n');

if((m=='Y')||(m=='y'))

{

printf("\n\n姓名学号科一分数科二分数科三分数总分平均分\n");

Dplyone(P);

}

}

printf("\n是否继续查找,输入Y继续,N退出查找:

\n");

do{m=getche();

}while(m!

='Y'&&m!

='N'&&m!

='y'&&m!

='n');

}while((m=='Y')||(m=='y'));

return;

}

voidConditionSrch(PerNode*L4)

{

charm;

if(L4->next==NULL)printf("\n系统中暂无任何信息,条件查找失败!

\n");

else

do{

printf("\n\n条件查找指定分数段的学生信息,输入括号内数字确定科目\n");

printf("科一

(1),科二

(2),科三(3),总分(4),平均分(5):

\n");

do{m=getche();

}while(m!

='1'&&m!

='2'&&m!

='3'&&m!

='4'&&m!

='5');

switch(m)

{

case'1':

ConSrchFroC(L4);break;

case'2':

ConSrchFroM(L4);break;

case'3':

ConSrchFroE(L4);break;

case'4':

ConSrchFroS(L4);break;

case'5':

ConSrchFroA(L4);break;

}

printf("\n\n是否继续条件查找,输入Y继续,N退出查找:

\n");

do{m=getche();

}while(m!

='Y'&&m!

='N'&&m!

='y'&&m!

='n');

}while((m=='Y')||(m=='y'));

return;

}

voidCount(PerNode*L5)

{

intn=0;

floats=0;

PerNode*L=L5->next;

while(L)

{

n++;

s=s+L->PerStu.SUM;

L=L->next;

}

if(n==0)printf("\n系统中暂无学生信息!

\n");

else

printf("\n学生总人数为%d,班级总分的平均分为%5.2f\n",n,s/n);

}

voidDelete(PerNode*L6)

{

charm;

PerNode*P,*q;

do{

if(L6->next==NULL){printf("\n系统中暂无任何信息,删除失败!

\n");break;}

else

{

P=Srchone(L6);

if(!

P);

else

{

printf("\n是否确定删除,输入Y确定,N取消删除:

\n");

do{m=getche();

}while(m!

='Y'&&m!

='N'&&m!

='y'&&m!

='n');

if((m=='Y')||(m=='y'))

{

q=P->prior;

q->next=P->next;

if(P->next)P->next->prior=q;

free(P);

printf("\n删除成功!

\n");

}

else;

}

}

printf("\n是否继续删除,输入Y继续,N退出删除:

\n");

do{m=getche();

}while(m!

='Y'&&m!

='N'&&m!

='y'&&m!

='n');

}while((m=='Y')||(m=='y'));

return;

}

voidPutOrder(PerNode*L7)

{

PerNode*K,*M,*P=L7->next;

PerNode*T1,*T2,*T3;

intflag,fg;

if(P&&(P->next))

while(P->next)

{

K=P->next;

while(K->next){K=K->next;}

flag=1;

M=K;

while(M!

=P)

{

fg=1;

T2=M->prior;

T1=T2->prior;

T3=M->next;

if((atoi(T2->PerStu.STNB))>(atoi(M->PerStu.STNB)))

{

T1->next=M;

M->prior=T1;

M->next=T2;

T2->prior=M;

T2->next=T3;

if(T3)T3->prior=T2;

flag=0;

fg=0;

}

if(fg)M=M->prior;

if((P==T2)&&(!

fg))P=M;

}

if(flag)break;

P=P->next;

}

return;

}

voidDisplay(PerNode*L8)

{

PerNode*L;

L=L8->next;

if(!

L)printf("\n系统中暂无任何信息!

");

else{

PutOrder(L8);

L=L8->next;

printf("\n学生成绩系统中信息如下:

\n");

printf("\n\n姓名学号科一分数科二分数科三分数总分平均分\n");

while(L)

{

Dplyone(L);

L=L->next;

}

}

return;

}

voidConditionDiy(PerNode*L9)

{

charm;

PerNode*L=L9->next;

if(!

L)printf("\n系统中暂无任何信息!

");

else

{

printf("\n是否按学号升序显示,输入Y显示,N降序显示:

\n");

do{m=getche();

}while(m!

='Y'&&m!

='N'&&m!

='y'&&m!

='n');

printf("\n");

if(m=='Y'||m=='y')

Display(L9);

else

{

printf("\n学生成绩系统中信息如下:

\n");

printf("\n\n姓名学号科一分数科二分数科三分数总分平均分\n");

while(L->next){L=L->next;}

do

{

Dplyone(L);

L=L->prior;

}while(L->prior);

}

}

}

voidSave(PerNode*L10)

{

ints=0;

charm;

PerNode*L=L10->next;

FILE*txl;

printf("\n是否确定存盘,输入Y确定,N退出存盘:

\n");

do{m=getche();

}while(m!

='Y'&&m!

='N'&&m!

='y'&&m!

='n');

if((m=='Y')||(m=='y'))

{

while(L)

{L=L->next;s++;}

if(s)

{

if((txl=fopen("学生成绩管理系统.txt","w+"))==NULL)

{printf("\n文件打开失败!

");return;}

fprintf(txl,"%d",s);

L=L10->next;

while(L)

{Fpwrite(txl,L);L=L->next;}

printf("\n存盘成功!

\n");

fclose(txl);

}

elseprintf("\n存盘失败!

\n");

}

elsereturn;

return;

}

voidMenu(PerNode*H)

{

charm;

do{

system("cls");

printf("\n");

printf("|-----------------------|\n");

printf("|菜单|\n");

printf("|-----------------------|\n");

printf("|1--载入学生信息|\n");

printf("|2--创建学生信息|\n");

printf("|3--查找学生信息|\n");

printf("|4--条件查找学生信息|\n");

pr

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 党团建设

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1