成绩管理系统代码.docx
《成绩管理系统代码.docx》由会员分享,可在线阅读,更多相关《成绩管理系统代码.docx(11页珍藏版)》请在冰豆网上搜索。
成绩管理系统代码
程序设计中用到的结构体类型:
学生信息结构体类型:
#include
#include
#include
#include
#include
voidmenu();
voidmain();
voidalter(linklistL);
voiddelnode(linklistL);
voidinsert(linklistL,listnode*p);
voidoutputlist(linklistL);
listnode*listfind(linklistL);
voidsort(linklistL);
structstudent
{
intnumber;//学号
floatscore;//成绩
charname[10];//姓名
intenglish;
intwuli;
inthuaxue;
intsum;
};
voidmain()//主函数
{
inti;
L=(listnode*)malloc(sizeof(listnode));
L->next=NULL;
//通过malloc申请sizeof(listnode)大小的一段连续内存空间,并将该空间地址首地址(指针)强制转换成listnode*类型,并赋值给lnode变量
for(;;)
{
menu();
scanf("%d",&i);
switch(i)
{
case1:
printf("**************学生成绩管理系统的建立***************\n");
L=createlist();
break;
case2:
printf("****************************************\n");
printf("******插入一条新记录********\n");
printf("****************************************\n");
printf("*学号班级姓名语文数学英语物理化学*\n");
printf("***********************************************\n");
p=(listnode*)malloc(sizeof(listnode));
scanf("%d,%d,%d,%d,%d,%d,%d,%d",p->data.num,p->data.clas,p->data.name,p->data.yuwen,p->data.math,p->data.english,p->data.wuli,p->data.huaxue);
insert(L,p);
break;
case3:
printf("************************************\n");
printf("*******查询记录*******\n");
printf("************************************\n");
p=listfind(L);
if(p!
=NULL){
printf("*学号班级姓名语文数学英语物理化学*\n");
printf("------------------------------------------------\n");
printf("%s%s%s%d%d%d%d%d",p->data.num,p->data.clas,p->data.name,p->data.yuwen,p->data.math,p->data.english,p->data.wuli,p->data.huaxue);
printf("------------------------------------------------\n");
}
else
printf("没有你要找的人!
\n");
break;
case4:
printf("***********************************\n");
printf("*******修改记录*********\n");
printf("***********************************\n");
alter(L);
break;
case5:
printf("***********************************\n");
printf("*******删除记录*********\n");
printf("***********************************\n");
delnode(L);
break;
case6:
printf("***********************************\n");
printf("********列出所有记录*********\n");
printf("***********************************\n");
outputlist(L);
break;
case7:
scort(L,p);
printf("\t谢谢使用!
\n");
break;
}
}
}
voidmenu()//主界面
{
printf("------------------StartMenu------------------\n");
printf("============================================\n");
printf("||~~~学生成绩管理系统~~~||\n");
printf("||******************************************||\n");
printf("||*********1.写入学生信息********||\n");
printf("||------------------------------------------||\n");
printf("||*********2.添加学生信息********||\n");
printf("||------------------------------------------||\n");
printf("||*********3.查找学生信息********||\n");
printf("||------------------------------------------||\n");
printf("||*********4.修改学生信息********||\n");
printf("||------------------------------------------||\n");
printf("||*********5.删除学生信息********||\n");
printf("||------------------------------------------||\n");
printf("||*********6.查看全部学生********||\n");
printf("||------------------------------------------||\n");
printf("||*********7.按照成绩排序********||\n");
printf("||------------------------------------------||\n");
printf("||*********0.退出管理系统********||\n");
printf("||------------------------------------------||\n");
printf("============================================\n");
printf("\n请选择数字0-7.\n\n");
}
//函数功能:
实现按成绩排序
linklistscort(linklistL)
{linklistp,q,small;
inttemp;
for(p=L->next;p->next!
=NULL;p=p->next)
{
small=p;
for(q=p->next;q;q=q->next)
{
if(q->data.sumdata.sum)
{
small=q;
}
}
printf("循环后,获得最小值为:
%d,此时链表为:
",small->data.sum);
if(small!
=p)
{
temp=p->data.sum;
p->data.sum=small->data.sum;
small->data.sum=temp;
}
listTraverse(L);
}
printf("输出排序后的数字:
\n");
L=scort(L);
}
linklistlistTraverse(linklistL)
{
p=L->next;
while(p)
{
printf("按总成绩排序为%d",p->data.sum);
p=p->next;
}
printf("\n");
}
//函数功能:
打印信息
voidoutputlist(linklistL)
{
listnode*p;
p=L->next;
printf("学号班级姓名语文数学英语物理化学\n");
printf("-----------------------------\n");
while(p!
=NULL)
{
printf("%s%s%s%d%d%d%d%d%d",p->data.num,p->data.clas,p->data.name,p->data.yuwen,p->data.math,p->data.english,p->data.wuli,p->data.huaxue,p->data.sum);
printf("------------------------------\n");
p=p->next;
}
}
//函数功能:
输入数据
voidinsert(linklistL,listnode*p)/*向单链表中插入一个完整的信息*/
{
listnode*p1,*p2;
p1=L;
p2=p1->next;
printf("学号班级姓名语文数学英语物理化学\n");
printf("--------------------------------------------\n");
scanf("%s%s%s%d%d%d%d%d",p->data.num,p->data.clas,p->data.name,&p->data.yuwen,&p->data.math,&p->data.english,&p->data.wuli,&p->data.huaxue);
p->data.sum=p->data.yuwen+p->data.math+p->data.english+p->data.wuli+p->data.huaxue;
while(p2!
=NULL&&strcmp(p2->data.num,p->data.num)<0)//比较大小,前者大返回1,相等返回0,前者小返回-1
{
p1=p2;
p2=p2->next;
}
p1->next=p;
p->next=p2;
printf("添加成功!
\n");
}
/*函数功能:
按学号找学生信息*/
listnode*listfind(linklistL)
{
listnode*p;
charnum[11];
charname[9];
intxz;
printf("--------------------\n");
printf("1.按学号查询\n");
printf("2.按姓名查询\n");
printf("--------------------\n");
printf("请选择:
");
p=L->next;
scanf("%d",&xz);
if(xz==1)
{
printf("请输入要查找的学号:
");
scanf("%s",num);
while(p&&strcmp(p->data.num,num)!
=0)
p=p->next;
}
else
if(xz==2)
{
printf("请输入要查询者的姓名:
");
scanf("%s",name);
while(p&&strcmp(p->data.name,name)!
=0)
p=p->next;
}
returnp;
}
voidmenu(structstudent*parr,intlen)
{
printf("\t\t||=========================================||\n");
printf("\t\t||-----------------------------------------||\n");
printf("\t\t||-----------welcome!
----------||\n");
printf("\t\t||------------学生成绩管理系统---------||\n");
printf("\t\t||-----------------------------------------||\n");
printf("\t\t||=========================================||\n");
getchar();
getchar();
system("cls");
return;
}
/*函数功能:
结束整个程序*/
voidexit(structstudent*parr,intlen)
{//getchar();
charch='\0';
do
{
printf("您确定要退出!
(y/n):
");
scanf("%c",&ch);
}while((ch!
='Y')&&(ch!
='y')&&(ch!
='N')&&(ch!
='n'));
if((ch=='Y')||(ch=='y'))
{
exit(0);
}
return;
}
/*函数功能:
修改学生信息*/
voidalter(linklistL)//成绩管理系统链表上的结点修改
{
charch;
listnode*p,*q;
p=listfind(L);
if(p==NULL)
{
printf("没有查到要修改的学生!
\n");
}
else
{
printf("真的要修改该结点吗?
(y/n)");
scanf("%s",&ch);
if(ch=='y'||ch=='Y')
{
q=L;
printf("输入新的学号:
\n");
scanf("%s",p->data.num);
printf("输入新班级:
\n");
scanf("%s",p->data.clas);
printf("输入新的姓名:
\n");
scanf("%s",p->data.name);
printf("输入语文:
\n");
scanf("%d",&p->data.yuwen);
printf("输入英语:
\n");
scanf("%d",&p->data.math);
printf("输入地址:
\n");
scanf("%d",&p->data.english);
printf("输入物理:
\n");
scanf("%d",&p->data.wuli);
printf("输入化学:
\n");
scanf("%d",&p->data.huaxue);
printf("修改成功!
\n");
}
if(ch=='n'||ch=='N')
printf("无需修改\n");
}
}
/*函数功能:
添加学生*/
voidinsert(structstudent*parr,int*len)
{
intnumber=0;//添加学生的个数
inti;
printf("请输入您要添加几个学生信息:
");
scanf("%d",&number);
parr=(structstudent*)malloc((sizeof(structstudent)*(*len+number)));
for(i=*len;i<*len+number;i++)
{
printf("请输入第%d个学生信息:
",i+1);
printf("姓名:
");
scanf("%s",parr[i].name);
printf("成绩:
");
scanf("%f",&parr[i].score);
printf("学号:
");
scanf("%d",&parr[i].number);
}output(parr,&*len);
}