C语言课程设计成绩管理系统代码.docx
《C语言课程设计成绩管理系统代码.docx》由会员分享,可在线阅读,更多相关《C语言课程设计成绩管理系统代码.docx(11页珍藏版)》请在冰豆网上搜索。
C语言课程设计成绩管理系统代码
C语言课程设计成绩管理系统代码
#defineLsizeof(structstudent)
#include
structstudent
{
charname[10];//姓名
longnum;//学号
charsex[3];//性别
intgrade;//班级
floatscore1,score2,score3,score4;//四门课成绩
floatall;//总分
floataverage;//平均分
structstudent*next;//指向下一个结点的指针
};
structstudent*head;//全局指针变量
chara;
voidinput(structstudent*q)
{
structstudent*p;
while
(1)
{
p=(structstudent*)malloc(L);//开辟存储空间
printf("输入姓名:
");
scanf("%s",p->name);
printf("输入学号:
");
scanf("%ld",&p->num);
printf("输入性别:
");
scanf("%s",p->sex);
printf("输入班级:
");
scanf("%d",&p->grade);
printf("输入四门课成绩:
");
scanf("%f%f%f%f",&p->score1,&p->score2,&p->score3,&p->score4);
fflush(stdin);
p->all=p->score1+p->score2+p->score3+p->score4;
p->average=p->all/4;
p->next=q;
q=p;
printf("是否回主菜单(Y/N):
");
scanf("%c",&a);
if(a=='Y'||a=='y')
break;
}
}
voidadd()
{
structstudent*p1,*p2;
charc;
p2=(structstudent*)malloc(L);
p1=head;
while
(1)
{
while(p1->next!
=0)
p1=p1->next;
printf("输入姓名:
");
scanf("%s",p2->name);
printf("输入学号:
");
scanf("%ld",&p2->num);
printf("输入性别:
");
scanf("%s",p2->sex);
printf("输入班级:
");
scanf("%d",&p2->grade);
printf("输入四门课成绩:
");
scanf("%f%f%f%f",&p2->score1,&p2->score2,&p2->score3,&p2->score4);
fflush(stdin);
p2->all=p2->score1+p2->score2+p2->score3+p2->score4;
p2->average=p2->all/4;
p2->next=0;
p1->next=p2;
printf("是否回主菜单?
(y/n):
");
scanf("%c",&c);
fflush(stdin);
if(c=='y'||c=='Y')
break;
}
}
voidfind(structstudent*p)
{
longb;
intflag;//判断标志
while
(1)
{
printf("输入学号:
");
scanf("%ld",&b);
flag=0;
while(p!
=0)
{
if(p->num==b)
{
printf("姓名\t学号\t性别\t班级\t语文\t数学\t外语\t综合\t总分\t平均分\n");
printf("%s\t%ld\t%s\t%d\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\n",p->name,p->num,p->sex,p->grade,p->score1,p->score2,p->score3,p->score4,p->all,p->average);
flag=1;
break;
}//如果结点的学号和要查找的学号相等,输出结点信息,同时标志变为1
else
p=p->next;//p指向下一结点
}
if(flag==0)//判断标志是0或1,确定循环结束的形式
printf("无查询结果!
\n");//若标志为0,提示无查找结果
printf("是否回主菜单(Y/N):
");
fflush(stdin);
scanf("%c",&a);
if(a=='Y'||a=='y')
break;
}
}
voiddel()
{
structstudent*p1,*p2,*p;
chart;
longb;
intflag=0;
while
(1)
{
printf("请输入学号:
");
scanf("%ld",&b);
if(head->num==b)
{
p=head;
printf("姓名\t学号\t性别\t班级\t语文\t数学\t外语\t综合\t总分\t平均分\n");
printf("%s\t%ld\t%s\t%d\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\n",p->name,p->num,p->sex,p->grade,p->score1,p->score2,p->score3,p->score4,p->all,p->average);
printf("是否删除(Y/N):
");
fflush(stdin);
scanf("%c",&t);
if(t=='Y'||t=='y')//判断是否删除,
head=head->next;
free(p1);
}
else
{
p2=head;
p1=p2->next;
while(p1!
=0)
{
if(p1->num==b)
{
printf("姓名\t学号\t性别\t班级\t语文\t数学\t外语\t综合\t总分\t平均分\n");
printf("%s\t%ld\t%s\t%d\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\n",p1->name,p1->num,p1->sex,p1->grade,p1->score1,p1->score2,p1->score3,p1->score4,p1->all,p1->average);
flag=1;
break;
}
else
{
p2=p1;
p1=p1->next;
}
}//查找到要删除的结点,并显示信息
if(flag==0)
printf("对不起,无查询结果!
");
else
{
printf("是否删除(Y/N):
");//提示是否删除
fflush(stdin);
scanf("%c",&t);
if(t=='Y'||t=='y')//判断是否删除,若是执行删除语句
p2->next=p1->next;
free(p1);
}
}
printf("是否回主菜单(Y/N):
");
fflush(stdin);
scanf("%c",&a);
if(a=='Y'||a=='y')
break;
}
}
voidchange()
{
structstudent*p;
longb;
intflag;
charc;
while
(1)
{
printf("输入学号:
");
scanf("%ld",&b);
p=head;
flag=0;
while(p!
=0)
{
if(p->num==b)
{
printf("姓名\t学号\t性别\t班级\t语文\t数学\t外语\t综合\t总分\t平均分\n");
printf("%s\t%ld\t%s\t%d\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\n",p->name,p->num,p->sex,p->grade,p->score1,p->score2,p->score3,p->score4,p->all,p->average);
flag=1;
break;
}
else
p=p->next;
}
if(flag==0)
printf("无查询结果!
\n");
else
{
printf("输入要修改的项目:
\n1、姓名2、学号3、性别4、班级5、分数\n请输入:
");
fflush(stdin);
scanf("%c",&c);
switch(c)
{
case'1':
{
printf("输入修改后的姓名:
");
scanf("%s",p->name);
break;
}
case'2':
{
printf("输入修改后的学号:
");
scanf("%ld",&p->num);
break;
}
case'3':
{
printf("输入修改后的性别:
");
scanf("%s",p->sex);
break;
}
case'4':
{
printf("输入修改后的姓名:
");
scanf("%d",&p->grade);
break;
}
case'5':
{
printf("输入修改后的分数:
");
scanf("%f%f%f%f",&p->score1,&p->score2,&p->score3,&p->score4);
p->all=p->score1+p->score2+p->score3+p->score4;
p->average=p->all/4;
break;
}
default:
printf("输入有误!
");
}
}
printf("是否回主菜单(Y/N):
");
scanf("%c%c",&a,&a);
if(a=='Y'||a=='y')
break;
}
}
voidshow(structstudent*p)
{
while
(1)
{
if(p==0)
break;
else
{
printf("姓名\t学号\t性别\t班级\t语文\t数学\t外语\t综合\t总分\t平均分\n");
printf("%s\t%ld\t%s\t%d\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\n",p->name,p->num,p->sex,p->grade,p->score1,p->score2,p->score3,p->score4,p->all,p->average);
}
p=p->next;
}//显示每一个结点的信息
printf("按任意键返回:
");
getch();
}
main()
{
structstudent*head;
intfunction;
intflag=0;//判断是否退出的标志
while
(1)
{
head=0;
printf("=====================学生成绩管理系统========================\n");
printf("1、录入2、查找3、添加4、删除5、更改6、显示7、退出\n");
printf("===========注:
此系统必须先录入才能进行其它操作!
============\n");
printf("请输入功能:
");
scanf("%d",&function);
switch(function)
{
case1:
{
input(head);
break;
}
case2:
{
find(head);
break;
}
case3:
{
add();
break;
}
case4:
{
del();
break;
}
case5:
{
change();
break;
}
case6:
{
show(head);
break;
}
case7:
flag=1;
break;
default:
printf("输入有误!
请重新输入!
");
}
if(flag==1)
break;//判断是否退出
fflush(stdin);
system("cls");//清屏
}
}