铎哥说生活 244129836
关注数: 13 粉丝数: 66 发帖数: 787 关注贴吧数: 28
大家帮帮忙。。。。。。给加个菜单~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 原程序 #include <stdio.h> #include <stdlib.h> struct xsnode { int xh; //学号 char xm[15]; //姓名 int gs; //高数 int yy; //英语 int wl; //计算机 double pj; //平均分 struct xsnode *next; }; struct xsnode *create(void) //学生信息录入,建立链表 { int i; int n; struct xsnode *head=NULL,*p; //head为头指针 printf(" 输入学生人数:"); scanf("%d",&n); printf("\n\n 输入学生信息\n"); printf("\n********************************\n"); printf("学号 姓名 高数 英语 计算机 \n"); printf("--------------------------------\n"); for(i=0;i<n;i++) { p=(struct xsnode*)malloc(sizeof(struct xsnode)); scanf("%d%s%d%d%d",&p->xh,p->xm,&p->gs,&p->yy,&p->wl); if(head==NULL) {head=p; head->next=NULL; }//head指向第一个结点 else { p->next=head; head=p;//新结点插入头结点前面,head指向新结点 } } printf("********************************\n"); return head; } void average(struct xsnode *xshead) //求平均分 { struct xsnode *p=xshead; while(p!=NULL) { p->pj=(p->gs+p->yy+p->wl)/3.0; p=p->next; } } void xuehao(struct xsnode *xshead) //按学号查询学生信息 { int num; struct xsnode *p=xshead; printf("\n请输入查询学生学号:"); scanf("%d",&num); while(p!=NULL) { if(p->xh==num) { printf("*******************************************************\n"); printf(" 学号 姓名 高数 英语 计算机 平均分\n"); printf("-------------------------------------------------------\n"); printf(" %-4d %-10s%-9d%-9d%-9d%-9.2f \n", p->xh,p->xm,p->gs,p->yy,p->wl,p->pj); break; } p=p->next; } printf("*******************************************************\n"); if(p==NULL) printf("\n没找到!"); } void xiugai(struct xsnode *xshead) //修改某学生信息并输出 { int num; struct xsnode *p=xshead; printf("\n请输入修改学生学号:"); scanf("%d",&num); while(p!=NULL) { if(p->xh==num) { printf("\n 已找到,信息如下:\n\n"); printf("********************************************************\n"); printf(" 学号 姓名 高数 英语 计算机 平均分\n"); printf("--------------------------------------------------------\n"); printf(" %-4d %-10s%-9d%-9d%-9d%-9.2f \n", p->xh,p->xm,p->gs,p->yy,p->wl,p->pj); printf("********************************************************\n"); printf(" \n输入修改信息\n\n"); printf(" 学号 姓名 高数 英语 计算机\n"); printf("--------------------------------------------------------\n"); scanf("%d%s%d%d%d",&p->xh,&p->xm,&p->gs,&p->yy,&p->wl); p->pj=(p->gs+p->yy+p->wl)/3.0; printf("\n修改后信息输出\n\n"); printf(" 学号 姓名 高数 英语 计算机 平均分\n"); printf("********************************************************\n"); printf(" %-8d%-10s%-9d%-9d%-9d%-9.2f \n", p->xh,p->xm,p->gs,p->yy,p->wl,p->pj); } p=p->next; } printf("********************************************************\n"); } void pingjun80(struct xsnode *xshead) // 输出平均分大于80分的同学信息 { //int num; struct xsnode *p=xshead; printf("\n\n输出平均分大于80分的同学信息\n\n"); printf("******************************************************\n"); printf(" 学号 姓名 高数 英语 计算机 平均分\n"); printf("------------------------------------------------------\n"); while(p!=NULL) { if(p->pj>80) printf(" %-8d%-10s%-9d%-9d%-9d%-9.2f \n", p->xh,p->xm,p->gs,p->yy,p->wl,p->pj); p=p->next; } printf("******************************************************\n"); } void pingjun60(struct xsnode *xshead) // 输出平均分小于60分的同学信息 { //int num; struct xsnode *p=xshead; printf("\n\n输出平均分小于60分的同学信息\n\n"); printf("******************************************************\n"); printf(" 学号 姓名 高数 英语 计算机 平均分\n"); printf("------------------------------------------------------\n"); while(p!=NULL) { if(p->pj<60) printf(" %-8d%-10s%-9d%-9d%-9d%-9.2f \n", p->xh,p->xm,p->gs,p->yy,p->wl,p->pj); p=p->next; } printf("******************************************************\n"); } void output(struct xsnode *xshead) //链表显示,输出学生信息 { struct xsnode *p=xshead; printf(" \n\n\n 输出学生信息\n"); printf("*******************************************************\n"); printf(" 学号 姓名 高数 英语 计算机 平均分\n"); printf("-------------------------------------------------------\n"); while(p!=NULL) { printf(" %-8d%-10s%-9d%-9d%-9d%-9.2f \n", p->xh,p->xm,p->gs,p->yy,p->wl,p->pj); p=p->next; } printf("*******************************************************\n"); } void main() { struct xsnode *xshead; xshead=create(); //创建链表 average(xshead); //求平均分 output(xshead); //输出链表 pingjun80(xshead);//输出平均分大于80分的同学信息 pingjun60(xshead);//输出平均分小于60分的同学信息 xuehao(xshead); //按学号查询 xiugai(xshead); //修改学生信息 output(xshead); //输出链表 free(xshead); //释放头结点 菜单。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。 while(1) { printf(" **********学生成绩管理系统***************\n"); printf(" 1. 成绩录入\n"); printf(" 2. 成绩输出\n"); printf(" 3. 成绩修改\n"); printf(" 4. 求每个学生平均成绩\n"); printf(" 5. 退出系统\n"); printf(" **********请输入编号选择功能***********\n"); scanf("%d",&h); switch(h) {case 1: xshead=create(); break; case 2: output(); break; case 3: xiugai(); break; case 4: average(); break; case 5: return; } 求告诉怎么把这两个结合在一起~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1 下一页