c语言学生管理系统文档格式.docx
《c语言学生管理系统文档格式.docx》由会员分享,可在线阅读,更多相关《c语言学生管理系统文档格式.docx(30页珍藏版)》请在冰豆网上搜索。
\t\t\t\t3按一门课成绩顺序排序\n"
\t\t\t\t4按一门课成绩降序排序\n"
\t\t\t\t5返回上级菜单\n"
\t\t\t\t6返回主系统\n"
//按某门课成绩排序菜单
voidmenupx3()
inti;
for(i=1;
i<
=n;
i++)
*%d按科目%d的成绩排序\n"
i,i);
//学生信息维护菜单
voidmenuxxwh()
\n\n\n\t\t\t\*************学生信息维护*************\n"
\n\t\t\t\t1显示所有学生信息\n"
\t\t\t\t2计算每个学生的总分和平均分\n"
\t\t\t\t3按学号查找一个同学\n"
\t\t\t\t4按姓名查找一个同学\n"
\t\t\t\t5按学号删除一个同学的信息\n"
\t\t\t\t6按姓名删除一个同学的信息\n"
\t\t\t\t7添加一个同学的信息\n"
\t\t\t\t8修改一个同学的信息\n"
\t\t\t\t9返回上级菜单\n"
\t\t\t\t10返回主系统\n"
//链表
link*creat()
link*head,*p;
inti,j=0;
FILE*fp1;
head=NULL;
p=(link*)malloc(sizeof(link));
if(p==NULL)
printf("
申请内存出错!
!
"
else
head=p;
已正确读取文件\n"
m,n);
fp1=fopen("
输入.txt"
"
r"
if(fp1==NULL)
读取文件失败!
while(j<
m)
j++;
fscanf(fp1,"
%d%s%s"
&
p->
number,p->
name,p->
sex);
for(i=0;
n;
%d"
score[i]);
next=(link*)malloc(sizeof(link));
if(p->
next==NULL)
if(j==m)
p->
next=NULL;
p=p->
next;
fclose(fp1);
returnhead;
}
//信息输入到文件
voidfscan(link*head)
FILE*fp;
link*t;
inti,j;
t=head;
fp=fopen("
输出.txt"
w+"
if(fp==NULL)
文件处理错误!
else
fprintf(fp,"
学号姓名性别"
for(j=1;
j<
j++)
科目%d"
j);
\n"
while(t!
=NULL)
%4d%s%s"
t->
number,t->
name,t->
%4d"
t=t->
fclose(fp);
信息已写入文件!
/*//链表复制
link*copcreat(link*head)
link*p,*q,*h,*t=NULL;
inti;
p=head;
h=NULL;
q=(link*)malloc(sizeof(link));
if(q==NULL)
h=q;
while(p!
q->
ave=p->
ave;
number=p->
number;
for(i=0;
{
q->
score[i]=p->
score[i];
}
sum=p->
sum;
strcpy(q->
name);
sex,p->
if(q->
{p=p->
t=q;
q=q->
t->
returnh;
*/
//显示学生信息
voidprint(link*head)
link*t,*h;
t=h=head;
"
****"
学生信息"
//计算每个同学的总分、平均分
link*sum(link*head)
link*p;
p=head;
while(p!
p->
sum=0;
ave=0;
sum+=p->
sum/n;
//输出成绩、总分、平均分
voidprint1(link*head)
*****"
学生成绩和总分"
总分平均分\n"
%.2f"
sum);
ave);
//排序
//按总分顺序排序
link*sumsxpx(link*head)
link*p,*q,*temp;
temp=(link*)malloc(sizeof(link));
for(p=head;
p!
=NULL;
p=p->
next)
for(q=p->
q!
q=q->
{
if(p->
sum>
sum)
temp->
temp->
{
temp->
}
strcpy(temp->
p->
sum=q->
ave=q->
number=q->
for(i=0;
p->
score[i]=q->
strcpy(p->
name,q->
sex,q->
q->
sum=temp->
ave=temp->
number=temp->
q->
score[i]=temp->
strcpy(q->
name,temp->
sex,temp->
}
}
//按总分降序排序
link*sumjxpx(link*head)
sum<
//按一门课顺序排序
link*scoresxpx(link*head)
link*h=head;
link*p,*q,*temp;
inta,i;
请选择一门课科目:
scanf("
a);
score[a-1]>
score[a-1])
//按一门课降序排序
link*scorejxpx(link*head)
score[a-1]<
//按学号查找一个同学信息
link*findxh(link*head)
intx;
link*h,*t=NULL;
请输入学生的学号\n"
scanf("
x);
for(h=head;
h!
h=h->
if(x==h->
number)
t=h;
break;
returnt;
//按姓名查找一个同学
link*findxm(link*head)
charstr[10];
link*h,*t=NULL;
请输入学生的姓名\n"
getchar();
gets(str);
for(h=head;
if(strcmp(h->
name,str)==0)
//按学号删除一个同学
link*delxh(link*head)
intkey,k=0;
link*h,*t,*p;
h=t=p=head;
请输入要删除的学生的学号:
key);
for(;
k++;
if(k>
2)
t=t->
if((key==p->
number)&
&
(k==1))
h=p->
elseif(key==p->
number&
k>
1)
{
next=p->
elseif(key==p->
t=NULL;
returnh;
//按姓名删除一个同学
link*delxm(link*head)
intk=0;
charstr[10];
请输入要删除的学生的姓名:
getchar();
gets(str);
if((strcmp(p->
name,str)==0)&
elseif(strcmp(p->
name,str)==0&
elseif(strcmp(p->
//添加一个学生信息
link*add(link*head)
link*h,*h1;
inti,k=0;
h1=(link*)malloc(sizeof(link));
请输入要添加学生的信息:
学号姓名性别"
i+1);
h1->
number,h1->
name,h1->
h1->
next=head;
h=h1;
//修改一个同学的信息
link*xg(link*t)
link*p=t;
请输入这个同学的所有信息:
returnp;
//主函数
main()
inta,b,c,i,j;
link*h,*t,*d;
link*f,*p;
L:
\n\n\n\n\n\n\t\t\t\********欢迎使用学生信息管理系统********\n"
\n\n\t\t\t\t制作人:
\n\n\t\t\t\t请输入学生数和科目数:
%d%d"
m,&
n);
H:
system("
cls"
menu();
while
(1)
switch(a)
case1:
h=creat();
}
break;
case2:
print(h);
}break;
case3:
{system("
c