完整word版学生成绩管理系统源代码Word下载.docx
《完整word版学生成绩管理系统源代码Word下载.docx》由会员分享,可在线阅读,更多相关《完整word版学生成绩管理系统源代码Word下载.docx(18页珍藏版)》请在冰豆网上搜索。
\n\r8.保存学生成绩信息在这里你可以将学生你信息保存到内存中.\n"
\n\r9.帮助学生成绩信息在这里你可以获得帮助信息.\n"
\n\r0.退出系统在这里选择是否保存后,你可以安全的退出本系统.\n\n\r"
voidmenu()
\n\r\xc9\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcb\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xbb"
\r\xba学生信息导入\xba学生信息处理\xba"
\r\xba____________________________________\xba__________________________________________\xba"
\r\xba1-->
输入学生成绩信息\xba6-->
学生成绩信息统计\xba"
\r\xba2-->
注销学生成绩信息\xba7-->
显示学生成绩信息\xba"
\r\xba3-->
查询学生成绩信息\xba8-->
保存学生成绩信息\xba"
\r\xba4-->
修改学生成绩信息\xba9-->
帮助学生成绩信息\xba"
\r\xba5-->
学生成绩信息排序\xba0-->
退出系统\xba"
\r\xc8\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xca\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xbc"
voidwrong()
\n\r输入错误!
请验证后重新输入.\n"
voidnotfind()
cprintf("
\n\r该学生信息不存在!
voidprintc()/*此函数用于输出中文格式*/
\r学号姓名班级英语数学C语言总分平均分\n"
voidprinte(Node*p)/*此函数用于输出英文格式*/
\r%-4s%-4s%4s%5d%5d%8d%5d%7d\n\r"
p->
data.num,p->
data.name,p->
data.cla,p->
data.score3,p->
data.score2,p->
data.score1,p->
data.total,p->
data.ave);
Node*Locate(Ll,charfindinfo[],charnameornum[])/*该函数用于定位连表中符合要求的接点,并返回该指针*/
Node*r;
if(strcmp(nameornum,"
num"
)==0)/*按学号查询*/
r=l->
next;
while(r!
=NULL)
if(strcmp(r->
data.num,findinfo)==0)
returnr;
r=r->
elseif(strcmp(nameornum,"
name"
)==0)/*按姓名查询*/
data.name,findinfo)==0)
return0;
voidinput(Ll)/*增加学生*/
{
Node*p,*r,*s;
charnum[10];
r=l;
s=l->
while(r->
next!
=NULL)
/*将指针置于最末尾*/
while
(1)
{cprintf("
\r如果输入完毕,请按任意键返回主菜单\n"
\r如果你还想输入,请按y(yes)继续\n\r"
scanf("
%s"
num);
if(strcmp(num,"
y"
)==0)
{cprintf("
请你输入学号:
"
}elsebreak;
while(s)
if(strcmp(s->
data.num,num)==0)
printf("
\t学号为'
%s'
的学生已经存在,若要修改请你选择'
4修改'
!
\n"
print1();
printc();
printe(s);
getch();
return;
}
s=s->
p=(Node*)malloc(sizeof(Node));
strcpy(p->
data.num,num);
\r请你输入姓名:
scanf("
data.name);
getchar();
\r请你输入班级:
data.cla);
\r请你输入c语言成绩(0-100):
%d"
&
p->
data.score1);
\r请你输入数学成绩(0-100):
data.score2);
\r请你输入英语成绩(0-100):
data.score3);
data.total=p->
data.score3+p->
data.score1+p->
data.score2;
data.ave=p->
data.total/3;
/*信息输入已经完成*/
next=NULL;
r->
next=p;
r=p;
shoudsave=1;
voidquery(Ll)/*查询学生信息*/
intselect;
charfindinfo[20];
Node*p;
if(!
l->
next)
\n没有信息可以查询!
\n1==>
按学号查找\n\r2==>
按姓名查找\n\r"
select);
if(select==1)/*学号*/
\r请你输入要查找的学号:
findinfo);
p=Locate(l,findinfo,"
if(p)
查找结果\n\r"
printe(p);
else
notfind();
elseif(select==2)/*姓名*/
\r请你输入要查找的姓名:
wrong();
voidDelete(Ll)/*删除学生信息*/
Node*p,*r;
\n没有信息可以删除!
按学号删除\n\r2==>
按姓名删除\n\r"
if(select==1)
\r请你输入要删除的学号:
=p)
next=p->
free(p);
\n\r该学生已经成功删除!
elseif(select==2)
\r请你输入要删除的姓名:
elsewrong();
voidmodify(Ll)/*修改学生信息*/
\n\r没有信息可以修改!
\r请你输入要修改的学生学号:
\r请你输入新学号(原来是%s):
data.num);
\r请你输入新姓名(原来是%s):
\r请你输入新班级(原来是%s):
\r请你输入新的c语言成绩(原来是%d分):
\r请你输入新的数学成绩(原来是%d分):
\r请你输入新的英语成绩(原来是%d分):
data.total/3;
\n\r信息修改成功!
voiddisplay(Ll)
{/*显示全部学生信息*/
intcount=0;
p=l->
p)
\n\r没有信息可以显示!
显示结果"
while(p)
{if(count%5==0)getch();
p=p->
count++;
voidStatistic(Ll)/*统计学生信息*/
Node*pm_max,*pe_max,*pc_max,*pt_max,*pa_max;
/*用于指向分数最高的接点*/
Node*pm_min,*pe_min,*pc_min,*pt_min,*pa_min;
Node*r=l->
r)
\n\r没有信息可以统计!
return;
pm_max=pe_max=pc_max=pt_max=pa_max=pm_min=pe_min=pc_min=pt_min=pa_min=r;
if(r->
data.score1>
=pc_max->
data.score1)
pc_max=r;
data.score1<
=pc_min->
pc_min=r;
data.score2>
=pm_max->
data.score2)
pm_max=r;
data.score2<
=pm_min->
pm_min=r;
data.score3>
=pe_max->
data.score3)
pe_max=r;
data.score3<
=pe_min->
pe_min=r;
data.total>
=pt_max->
data.total)
pt_max=r;
data.total<
=pt_min->
pt_min=r;
data.ave>
=pa_max->
data.ave)
pa_max=r;
data.ave<
=pa_min->
pa_min=r;
====================================统计结果====================================\n"
\r总分最高者:
%-16s%d分\n"
pt_max->
data.name,pt_max->
data.total);
\r平均分最高者:
pa_max->
data.name,pa_max->
\r英语最高者:
pe_max->
data.name,pe_max->
\r数学最高者:
pm_max->
data.name,pm_max->
\rc语言最高者:
%-16s%d分\n\r"
pc_max->
data.name,pc_max->
\r总分最低者:
pt_min->
data.name,pt_min->
\r平均分最低者:
pa_min->
data.name,pa_min->
\r英语最低者:
pe_min->
data.name,pe_min->
\r数学最低者:
pm_min->
data.name,pm_min->
\rc语言最低者:
pc_min->
data.name,pc_min->
voidSort(Ll)
Lll;
Node*p,*rr,*s;
ll=(L)malloc(sizeof(Node));
/*用于做新的连表*/
ll->
if(l->
next==NULL)
\n\r没有信息可以排序!
s=(Node*)malloc(sizeof(Node));
/*新建接点用于保存信息*/
s->
data=p->
data;
rr=ll;
while(rr->
=NULL&
&
rr->
next->
=p->
rr=rr->
if(rr->
rr->
next=s;
else
next=rr->
free(l);
next=ll->
\n\r排序已经完成!
voidSave(Ll)/**/
FILE*fp;
intflag=1,count=0;
fp=fopen("
c:
\\student"
"
wb"
if(fp==NULL)
\n\r重新打开文件时发生错误!
exit
(1);
if(fwrite(p,sizeof(Node),1,fp)==1)
flag=0;
break;
if(flag)
\n\r文件保存成功.(有%d条信息已经保存.)\n\r"
count);
shoudsave=0;
fclose(fp);
voidmain()/**/
Ll;
/*链表*/
FILE*fp;
/*文件指针*/
intcount=0,i,menu_select;
/*菜单选择*/
charch,creat;
time_tit;
textmode(C80);
window(1,1,80,25);
textbackground
(1);
clrscr();
\r学生成绩管理系统"
\r-------扬州大学信息工程学院软件0902班"
);
\r设计人员:
李天鹏"
l=(Node*)malloc(sizeof(Node));
rb"
\n\r该文件还未存在,是否需要创建?
(y/n,Y/N)\n\r"
%c"
creat);
if(creat=='
y'
||creat=='
Y'
)
exit(0);
gotoxy(9,11);
textcolor(12);
\n\r文件已经打开,系统正在导入信息"
for(i=0;
i<
6;
i++)
."
sleep
(1);
}textcolor(10);
\n"
while(!
feof(fp))
p=(Node*)malloc(s