欢迎来到天天文库
浏览记录
ID:37767668
大小:17.87 KB
页数:9页
时间:2019-05-30
《学生成绩管理系统(链表)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、#include#include#include#defineM10typedefstructxsnodeSD;//将structxsnode用SD表示structxsnode{intxh;//学号charxm[15];//姓名floatcj[M];//成绩floatpj;//平均分structxsnode*next;};SD*create(intn,intN)//创建链表{inti,j;structxsnode*head=NULL,*p,*pr;pr=head;print
2、f("输入学生信息");printf("学号姓名");for(i=0;ixh,p->xm);for(j=0;jcj[j]);if(head==NULL)head=p;elsepr->next=p;pr=p;}pr->next=NULL;returnhead;//返回
3、链表的的头节点指针}voidaverage(SD*head,intN)//求每个学生平均分{intj;SD*p=head;//指向链表头while(p!=NULL)//若不是表尾,则进入循环{p->pj=0;for(j=0;jpj=p->pj+p->cj[j]/N;p=p->next;}}voidoutput(SD*head,intN)//输出列表{inti;SD*p=head;printf("输出学生信息");printf("学号姓名");for(i=0;i4、d",i+1);//“”是为了调节间距printf("平均分");printf("");while(p!=NULL){printf("%-8d%-10s",p->xh,p->xm);for(i=0;i<3;i++)//为每门成绩赋值printf("%-9.2f",p->cj[i]);printf("%-9.2f",p->pj);p=p->next;//让p指向下一个节点}}voidsearch_xh(SD*head,intt,intN)//按学号查找某一学生信息{inti;SD*p=head;while(p!=NULL){5、if(p->xh==t)//如果与要早的学号相等,则输出改学生信息并结束循环{printf("%-8d%-10s",p->xh,p->xm);for(i=0;icj[i]);printf("%-9.2f",p->pj);break;}p=p->next;}if(p==NULL)//若到了表尾,则没有找到该学生printf("该学生不存在");}voidsearch_xm(SD*head,charname[],intN)//按姓名查找某一学生信息{inti,j,k=0;SD6、*p=head;while(p!=NULL){j=strcmp(name,p->xm);//将name与p->xm进行比较,若相等则进入循环,输出该学生信息并结束循环if(j==0){printf("%-8d%-10s",p->xh,p->xm);for(i=0;icj[i]);printf("%-9.2f",p->pj);k=1;break;}p=p->next;}if(k==0)printf("该学生不存在");}voidDis_Search_Menu()//菜单,提7、示查找信息{printf("学生成绩查询");printf("-------------------");printf("1:按姓名查询");printf("2:按学号查询");printf("0:退出");printf("-------------------");}voidsearch(SD*head,intN)//选择查找条件{SD*p=head;intselect;intn,b;charname[11];while(b)//b=0;结束循环,b为非0则进入循环{Dis_Sea8、rch_Menu();printf("请输入所选查询功能号:");scanf("%d",&select);switch(select){case1:printf("请输入查询姓名:");//选择1,按姓名查找scanf("%s",name);sea
4、d",i+1);//“”是为了调节间距printf("平均分");printf("");while(p!=NULL){printf("%-8d%-10s",p->xh,p->xm);for(i=0;i<3;i++)//为每门成绩赋值printf("%-9.2f",p->cj[i]);printf("%-9.2f",p->pj);p=p->next;//让p指向下一个节点}}voidsearch_xh(SD*head,intt,intN)//按学号查找某一学生信息{inti;SD*p=head;while(p!=NULL){
5、if(p->xh==t)//如果与要早的学号相等,则输出改学生信息并结束循环{printf("%-8d%-10s",p->xh,p->xm);for(i=0;icj[i]);printf("%-9.2f",p->pj);break;}p=p->next;}if(p==NULL)//若到了表尾,则没有找到该学生printf("该学生不存在");}voidsearch_xm(SD*head,charname[],intN)//按姓名查找某一学生信息{inti,j,k=0;SD
6、*p=head;while(p!=NULL){j=strcmp(name,p->xm);//将name与p->xm进行比较,若相等则进入循环,输出该学生信息并结束循环if(j==0){printf("%-8d%-10s",p->xh,p->xm);for(i=0;icj[i]);printf("%-9.2f",p->pj);k=1;break;}p=p->next;}if(k==0)printf("该学生不存在");}voidDis_Search_Menu()//菜单,提
7、示查找信息{printf("学生成绩查询");printf("-------------------");printf("1:按姓名查询");printf("2:按学号查询");printf("0:退出");printf("-------------------");}voidsearch(SD*head,intN)//选择查找条件{SD*p=head;intselect;intn,b;charname[11];while(b)//b=0;结束循环,b为非0则进入循环{Dis_Sea
8、rch_Menu();printf("请输入所选查询功能号:");scanf("%d",&select);switch(select){case1:printf("请输入查询姓名:");//选择1,按姓名查找scanf("%s",name);sea
此文档下载收益归作者所有