【震荡箱体指标源码】【点餐系统 源码】【进销存管理系统源码】成绩分析源码_成绩分析源码怎么做

时间:2024-12-23 03:15:19 来源:桔子威客网站源码 分类:娱乐

1.SPARK-38864 - Spark支持unpivot源码分析
2.c语言怎么编写学生成绩管理系统
3.java编程:输入某个班学生的成绩成绩成绩,输入-1时,分析分析表示输入结束。源码源码计算该班的成绩成绩学生人数、最高分、分析分析最低分和平均分
4.. 输入百分制的源码源码震荡箱体指标源码学生成绩,输出A(90-100),成绩成绩B(80-89),C(70-79),D(60-69),E(60分以下)等级C语言题目
5.求一个c++小程序源代码,要求200行以上,分析分析给100分,源码源码能用再加100
6.Python+mysql+tkinter+matplotlib的成绩成绩可视化学生成绩管理系统课程设计(文末附源码)

成绩分析源码_成绩分析源码怎么做

SPARK-38864 - Spark支持unpivot源码分析

       unpivot是数据库系统中用于列转行的内置函数,如SQL SERVER,分析分析 Oracle等。以数据集tb1为例,源码源码每个数字代表某个人在某个学科的成绩成绩成绩。若要将此表扩展为三元组,分析分析可使用union实现。源码源码点餐系统 源码但随列数增加,SQL语句变长。许多SQL引擎提供内置函数unpivot简化此过程。unpivot使用时需指定保留列、进行转行的列、新列名及值列名。

       SPARK从SPARK-版本开始支持DataSet的unpivot函数,逐步扩展至pyspark与SQL。在Dataset API中,ids为要保留的Column数组,Column类提供了从String构造Column的隐式转换,方便使用。利用此API,可通过unpivot函数将数据集转换为所需的进销存管理系统源码三元组。values表示转行列,variableColumnName为新列名,valueColumnName为值列名。

       Analyser阶段解析unpivot算子,将逻辑执行计划转化为物理执行计划。当用户开启hive catalog,SPARK SQL根据表名和metastore URL查找表元数据,转化为Hive相关逻辑执行计划。物理执行计划如BroadcastHashJoinExec,表示具体的执行策略。规则ResolveUnpivot将包含unpivot的算子转换为Expand算子,在物理执行计划阶段执行。此转换由开发者自定义规则完成,通过遍历逻辑执行计划树,Bt 源码根据节点类型及状态进行不同处理。

       unpivot函数实现过程中,首先将原始数据集投影为包含ids、variableColumnName、valueColumnName的列,实现语义转换。随后,通过map函数处理values列,构建新的行数据,最终返回Expand算子。在物理执行计划阶段,Expand算子将数据转换为所需形式,实现unpivot功能。

       综上所述,祝福 源码SPARK内置函数unpivot的实现通过解析列参数,组装Expand算子完成,为用户提供简便的列转行功能。通过理解此过程,可深入掌握SPARK SQL的开发原理与内在机制。

c语言怎么编写学生成绩管理系统

       你是联大的把,你还要吗?

       程序:

       #include <stdio.h>

       #include <stdlib.h>

       #include <string.h>

       int man=0;

       int j;

       char str[];

       struct student

       {

        char id[];

        char name[];

        int n1;

        int n2;

        int n3;

        int n4;

        int n5;

        int n6;

        int n7;

        int n8;

        int n9;

        int zong;

        int ping;

        }student[],temp;

       void read(void)

       {

        FILE *cj;

        int i,k;

        man=0;

        while(1)

        {

        printf("请输入要读取的文件:\n");

        scanf("%s",&str);

        if((cj=fopen(str,"r"))==NULL)

        {

        printf("打开失败\n");

        }

        else

        {

        break;

        }

        }

        for(i=0;i<;i++)

        {

        if(fscanf(cj,"%s %s %d %d %d %d %d %d %d %d %d",&student[i].id,&student[i].name,&student[i].n1,&student[i].n2,&student[i].n3,&student[i].n4,&student[i].n5,&student[i].n6,&student[i].n7,&student[i].n8,&student[i].n9)==-1)

        {

        break;

        }

        man=man+1;

        }

        printf("从%s读取去了“%d”条记录\n",str,man);

        for(k=0;k<man;k++)

        {

        student[k].zong=student[k].n1+student[k].n2+student[k].n3+student[k].n4+student[k].n5+student[k].n6+student[k].n7+student[k].n8+student[k].n9;

        }

        for(i=0;i<man;i++)

        {

        student[i].ping=student[i].zong/9;

        }

        fclose(cj);

       }

       void write(void)

       {

        FILE *cj;

        int i;

        char me;

        printf("请确认是否保存(是:y,否:任意键):\n");

        scanf("%s",&me);

        if(me=='y')

        {

        if((cj=fopen(str,"w"))==NULL)

        {

        printf("保存失败\n");

        }

        for(i=0;i<man;i++)

        {

        fprintf(cj,"%s %s %d %d %d %d %d %d %d %d %d\n",student[i].id,student[i].name,student[i].n1,student[i].n2,student[i].n3,student[i].n4,student[i].n5,student[i].n6,student[i].n7,student[i].n8,student[i].n9);

        }

        printf("存了“%d”条记录到%s\n",man,str);

        fclose(cj);

        }

        else

        return;

       }

       void save(void)

       {

        FILE *cj;

        int i;

        char me;

        printf("请输入新的文件名:\n");

        scanf("%s",&str);

        printf("请确认是否保存(是:y,否:任意键):\n");

        scanf("%s",&me);

        if(me=='y')

        {

        if((cj=fopen(str,"w"))==NULL)

        {

        printf("保存失败\n");

        }

        for(i=0;i<man;i++)

        {

        fprintf(cj,"%s %s %d %d %d %d %d %d %d %d %d\n",student[i].id,student[i].name,student[i].n1,student[i].n2,student[i].n3,student[i].n4,student[i].n5,student[i].n6,student[i].n7,student[i].n8,student[i].n9);

        }

        printf("存了“%d”条记录到%s\n",man,str);

        fclose(cj);

        }

        else

        return;

       }

       void print(void)

       {

        int i;

        for(i=0;i<;i++)

        printf("*");

        printf("\n");

        printf(" | 学号 姓名 1 2 3 4 5 6 7 8 9 平均分 总分 | \n");

        for(i=0;i<man;i++)

        {

        printf(" | %s %-6s %3d %3d %3d %3d %3d %3d %3d %3d %3d %3d %3d | \n",student[i].id,student[i].name,student[i].n1,student[i].n2,student[i].n3,student[i].n4,student[i].n5,student[i].n6,student[i].n7,student[i].n8,student[i].n9,student[i].ping,student[i].zong);

        }

        for(i=0;i<;i++)

        printf("*");

        printf("\n");

       }

       void inquiry(void)

       {

        int i;

        char id[];

        while(1)

        {

        printf("请输入要查人的学号或名字(输入-1即返回上一级):\n");

        scanf("%s",&id);

        if(id[0]=='-'&&id[1]=='1')

        {

        printf("exit\n");

        break;

        }

        else

        {

        for(i=0;i<man;i++)

        {

        if(strcmp(student[i].id,id)==0)

        {

        j=i;

        break;

        }

        if(strcmp(student[i].name,id)==0)

        {

        j=i;

        break;

        }

        j=-1;

        }

        if(j==-1)

        {

        printf("无此人\n");

        }

        else

        {

        printf(" | 学号 姓名 1 2 3 4 5 6 7 8 9 总分 平均分 | \n");

        printf(" | %s %-6s %3d %3d %3d %3d %3d %3d %3d %3d %3d %3d %3d | \n",student[j].id,student[j].name,student[j].n1,student[j].n2,student[j].n3,student[j].n4,student[j].n5,student[j].n6,student[j].n7,student[j].n8,student[j].n9,student[i].ping,student[i].zong);

        }

        }

        }

       }

       void fail(void)

       {

        int i;

        printf("有不及格成绩的学生为:\n");

        for(i=0;i<man;i++)

        {

        if(student[i].n1<||student[i].n2<||student[i].n3<||student[i].n4<||student[i].n5<||student[i].n6<||student[i].n7<||student[i].n8<||student[i].n9<)

        {

        printf(" | %s %-6s %3d %3d %3d %3d %3d %3d %3d %3d %3d %3d %3d | \n",student[i].id,student[i].name,student[i].n1,student[i].n2,student[i].n3,student[i].n4,student[i].n5,student[i].n6,student[i].n7,student[i].n8,student[i].n9,student[i].ping,student[i].zong);

        }

        }

       }

       void compositor(void)

       {

        int i,k;

        char m;

        printf("请选择干什么排序:\n");

        printf("1.成绩1\n");

        printf("2.成绩2\n");

        printf("3.成绩3\n");

        printf("4.成绩4\n");

        printf("5.成绩5\n");

        printf("6.成绩6\n");

        printf("7.成绩7\n");

        printf("8.成绩8\n");

        printf("9.成绩9\n");

        printf("0.总成绩或平均成绩\n");

        scanf("%s",&m);

        if(m=='0')

        {

        for(k=man;k>0;k--)

        {

        for(i=0;i<k;i++)

        {

        if(student[i].zong<student[i+1].zong)

        {

        temp=student[i];

        student[i]=student[i+1];

        student[i+1]=temp;

        }

        }

        }

        }

        else if(m=='1')

        {

        for(k=man;k>0;k--)

        {

        for(i=0;i<k;i++)

        {

        if(student[i].n1<student[i+1].n1)

        {

        temp=student[i];

        student[i]=student[i+1];

        student[i+1]=temp;

        }

        }

        }

        }

        else if(m=='2')

        {

        for(k=man;k>0;k--)

        {

        for(i=0;i<k;i++)

        {

        if(student[i].n2<student[i+1].n2)

        {

        temp=student[i];

        student[i]=student[i+1];

        student[i+1]=temp;

        }

        }

        }

        }

        else if(m=='3')

        {

        for(k=man;k>0;k--)

        {

        for(i=0;i<k;i++)

        {

        if(student[i].n3<student[i+1].n3)

        {

        temp=student[i];

        student[i]=student[i+1];

        student[i+1]=temp;

        }

        }

        }

        }

        else if(m=='4')

        {

        for(k=man;k>0;k--)

        {

        for(i=0;i<k;i++)

        {

        if(student[i].n4<student[i+1].n4)

        {

        temp=student[i];

        student[i]=student[i+1];

        student[i+1]=temp;

        }

        }

        }

        }

        else if(m=='5')

        {

        for(k=man;k>0;k--)

        {

        for(i=0;i<k;i++)

        {

        if(student[i].n5<student[i+1].n5)

        {

        temp=student[i];

        student[i]=student[i+1];

        student[i+1]=temp;

        }

        }

        }

        }

        else if(m=='6')

        {

        for(k=man;k>0;k--)

        {

        for(i=0;i<k;i++)

        {

        if(student[i].n6<student[i+1].n6)

        {

        temp=student[i];

        student[i]=student[i+1];

        student[i+1]=temp;

        }

        }

        }

        }

        else if(m=='7')

        {

        for(k=man;k>0;k--)

        {

        for(i=0;i<k;i++)

        {

        if(student[i].n7<student[i+1].n7)

        {

        temp=student[i];

        student[i]=student[i+1];

        student[i+1]=temp;

        }

        }

        }

        }

        else if(m=='8')

        {

        for(k=man;k>0;k--)

        {

        for(i=0;i<k;i++)

        {

        if(student[i].n8<student[i+1].n8)

        {

        temp=student[i];

        student[i]=student[i+1];

        student[i+1]=temp;

        }

        }

        }

        }

        else if(m=='9')

        {

        for(k=man;k>0;k--)

        {

        for(i=0;i<k;i++)

        {

        if(student[i].n9<student[i+1].n9)

        {

        temp=student[i];

        student[i]=student[i+1];

        student[i+1]=temp;

        }

        }

        }

        }

        else

        printf("无此功能\n");

       }

       void raise(void)

       {

        printf("请输入添加人的学号:\n");

        scanf("%s",&student[man].id);

        printf("请输入添加人的姓名:\n");

        scanf("%s",&student[man].name);

        printf("请输入添加人的成绩1:\n");

        scanf("%d",&student[man].n1);

        printf("请输入添加人的成绩2:\n");

        scanf("%d",&student[man].n2);

        printf("请输入添加人的成绩3:\n");

        scanf("%d",&student[man].n3);

        printf("请输入添加人的成绩4:\n");

        scanf("%d",&student[man].n4);

        printf("请输入添加人的成绩5:\n");

        scanf("%d",&student[man].n5);

        printf("请输入添加人的成绩6:\n");

        scanf("%d",&student[man].n6);

        printf("请输入添加人的成绩7:\n");

        scanf("%d",&student[man].n7);

        printf("请输入添加人的成绩8:\n");

        scanf("%d",&student[man].n8);

        printf("请输入添加人的成绩9:\n");

        scanf("%d",&student[man].n9);

        student[man].zong=student[man].n1+student[man].n2+student[man].n3+student[man].n4+student[man].n5+student[man].n6+student[man].n7+student[man].n8+student[man].n9;

        student[man].ping=student[man].zong/9;

        man=man+1;

       }

       void alter(void)

       {

        int i;

        char id[];

        printf("请输入要修改人的学号:\n");

        scanf("%s",&id);

        for(i=0;i<man;i++)

        {

        if(strcmp(student[i].id,id)==0)

        {

        j=i;

        break;

        }

        j=-1;

        }

        if(j==-1)

        {

        printf("无此人\n");

        }

        else

        {

        printf("请输入要修改为的学号:\n");

        scanf("%s",&student[j].id);

        printf("请输入要修改为的姓名:\n");

        scanf("%s",&student[j].name);

        printf("请输入要修改为的成绩1:\n");

        scanf("%d",&student[j].n1);

        printf("请输入要修改为的成绩2:\n");

        scanf("%d",&student[j].n2);

        printf("请输入要修改为的成绩3:\n");

        scanf("%d",&student[j].n3);

        printf("请输入要修改为的成绩4:\n");

        scanf("%d",&student[j].n4);

        printf("请输入要修改为的成绩5:\n");

        scanf("%d",&student[j].n5);

        printf("请输入要修改为的成绩6:\n");

        scanf("%d",&student[j].n6);

        printf("请输入要修改为的成绩7:\n");

        scanf("%d",&student[j].n7);

        printf("请输入要修改为的成绩8:\n");

        scanf("%d",&student[j].n8);

        printf("请输入要修改为的成绩9:\n");

        scanf("%d",&student[j].n9);

        student[j].zong=student[j].n1+student[j].n2+student[j].n3+student[j].n4+student[j].n5+student[j].n6+student[j].n7+student[j].n8+student[j].n9;

        student[j].ping=student[j].zong/9;

        }

       }

       void deletes()

       {

        int i,k;

        char id[];

        printf("请输入要删除人的学号:\n");

        scanf("%s",&id);

        for(i=0;i<man;i++)

        {

        if(strcmp(student[i].id,id)==0)

        {

        j=i;

        break;

        }

        j=-1;

        }

        if(j==-1)

        {

        printf("无此人\n");

        }

        else

        {

        for(k=j;k<man;k++)

        {

        student[j]=student[j+1];

        j=j+1;

        }

        man=man-1;

        }

       }

       void menu(void)

       {

        int i;

        printf("\n");

        for(i=0;i<;i++)

        printf(" ");

        for(i=0;i<;i++)

        printf("*");

        for(i=0;i<9;i++)

        printf(" ");

        printf("\n");

        for(i=0;i<;i++)

        printf(" ");

        printf("# 1.显示学生成绩信息 6.查询不及格学生信息 #\n");

        for(i=0;i<;i++)

        printf(" ");

        printf("# 2.按成绩由高到低排序 7.修改学生成绩信息 #\n");

        for(i=0;i<;i++)

        printf(" ");

        printf("# 3.添加学生成绩信息 8.读取文件 #\n");

        for(i=0;i<;i++)

        printf(" ");

        printf("# 4.删除学生成绩信息 9.保存文件 #\n");

        for(i=0;i<;i++)

        printf(" ");

        printf("# 5.查询学生成绩信息 -. 另存为 #\n");

        for(i=0;i<;i++)

        printf(" ");

        printf("# +.退出 #\n");

        for(i=0;i<;i++)

        printf(" ");

        for(i=0;i<;i++)

        printf("*");

        for(i=0;i<9;i++)

        printf(" ");

        printf("\n");

       }

       int main(void)

       {

        char i;

        read();

        menu();

        while(1)

        {

        printf("请输入要选择的需要功能的序列号(输入0显示菜单):\n");

        scanf("%s",&i);

        if(i=='1')

        {

        print();

        }

        else if(i=='2')

        {

        compositor();

        print();

        }

        else if(i=='3')

        {

        raise();

        print();

        }

        else if(i=='4')

        {

        deletes();

        print();

        }

        else if(i=='5')

        {

        inquiry();

        }

        else if(i=='6')

        {

        fail();

        }

        else if(i=='7')

        {

        alter();

        print();

        }

        else if(i=='8')

        {

        read();

        }

        else if(i=='9')

        {

        write();

        }

        else if(i=='0')

        {

        menu();

        }

        else if(i=='+')

        {

        break;

        }

        else if(i=='-')

        {

        save();

        }

        else

        {

        printf("无此功能,请重新输入序列号\n");

        }

        }

        return 0;

       }

       记事本文件:你可以随意起名,但要放在和程序同目录

        顾佳

        金一宇

        李阳涛

        马凯

        史超

        徐磊

        杨浩

        于泽

        张昊

        张政

        周艨

        张楠

        王凡

java编程:输入某个班学生的成绩,输入-1时,表示输入结束。计算该班的学生人数、最高分、最低分和平均分

       1、题目描述:

       /*java编程:输入某个班学生的成绩,输入-1时,表示输入结束。计算该班的学生人数、最高分、最低分和平均分*/

       分析:

       根据题目可知,①需要连续输入数据,并将连续输入的数据保存,②记录输入的数据个数③需要有输入数据内容判断,如果输入-1则停止输入,执行计算。

       2、代码如下

        public static void main(String[] args) {

        ArrayList<Float> gList=new ArrayList<>();//定义浮点型动态数组,用作记录成绩,也可以取数组长度作为人数

        Scanner input =new Scanner(System.in);

        float grade=0;

         for ( ;grade!=-1;  ) { //当输入-1时结束

         System.out.println("请输入学生成绩(-1结束输入):");

         grade=input.nextFloat();

         if (grade!=-1) { //避免最后一次录入-1

         gList.add(grade);

        }

        }

        //当输入-1时停止记录数据

         

         

        //求最高分

        //最低分

        float max=0,sum=0,aveg=0;

        float min=gList.get(0);//取第一项作为最低分初始值

        for (int i = 0; i < gList.size(); i++) {

        if (max<gList.get(i)) {

        max=gList.get(i);

        }

        if (min>gList.get(i)) {

        min=gList.get(i);

        }

        sum+=gList.get(i);//求总分

        }

        //平均分

        aveg=sum/gList.size();

        System.out.println("共有 "+gList.size()+"人,"+"最高分:"+max

        +",最低分:"+min+",平均分:"+aveg);

        }

       3、运行效果

. 输入百分制的学生成绩,输出A(-),B(-),C(-),D(-),E(分以下)等级C语言题目

       案例五:给出一百分制成绩,要求输出成绩等级A,B,C,D,E。分以上为A,~分为B,~分为C,~分为D,分以下为E。

       1.程序分析:

        设成绩用score表示,并且score为整型数据。若score≥,score可能是,,…,把这些值都列出来太麻烦了,可以利用两个整数相除,结果自动取整的方法,即当≤score≤时,score/只有和9两种情况,这样用switch语句来解决便简便了。

       程序源代码:

        main( )

        {

       float score:

       char grade;

       printf(“请输入学生成绩:”);

       scanf(“%f”,&score);

       while(score>||score<0)

       {

       printf(“\n输入有误,请重输。”);

       scanf(“%f”,& score);

       }

       switch((int)( score/))

       {

       case :

       case 9:grade=’A’;break;

       case 8:grade=’B’;break;

       case 7:grade=’C’;break;

       case 6:grade=’D’;break;

       case 5:

       case 4:

       case 3:

       case 2:

       case 1:

       case 0:grade=’E’;

       }

       printf(“成绩是%5.1f,相应的等级是%c。\n”,socre,grade);

       }

       5.程序运行结果:

        ① 请输入学生成绩:.5

        成绩是:.5,相应的等级是A。

        ② 请输入学生成绩:

        成绩是:.0,相应的等级是E。

       6.案例扩展:由键盘输入学生成绩等级,输出成绩范围。等级评定同案例相同。

       分享 分享到新浪Qing3

       顶

       阅读()┊ 评论 (0)┊ 收藏(0) ┊转载(0) ┊ 顶▼ ┊打印┊举报

       转载列表:

       转载

       转载是分享博文的一种常用方式...

       前一篇:判断某一年是否为闰年后一篇:企业发放的奖金根据利润提成

求一个c++小程序源代码,要求行以上,给分,能用再加

       //=================================[说明]=======================================*/

       //学生成绩管理

       //文件名:main.cpp

       //------!!!!!!---------BOF-[程序代码开始]-------------------

       #include<iostream>

       #include<string>

       using namespace std;

       //=============<开始定义结构体>===================================================

       struct combox

       {

        int num;

        int mark;

        string name;

        combox *next;

       };

       //=============<结束定义结构体>===================================================

       //=============<开始定义Commonbox类>==============================================

       //-----类体开始------------------------

       class Commonbox

       {

       private:

        combox *head;

        void Swap(combox *,combox *); //交换两个combox变量的数据域

        void Print(combox *); //输出一combox指定的记录

        combox *Find(int); //查找条例条件的记录,并返回该记录的指针

       public:

        Commonbox()

        {

        head=NULL;

        }

        int ListCount(); //统计当前链表的记录总数,返回一个整数

        void AddItem(int num, string name, int mark); //添加一条记录到表尾

        void RemoveItem(int); //删除一条指定的记录

        void List(); //列出当前链表中的所有记录

        void Sort(); //对当前链表进行排序

        void Search(int); //在当前链表查找指定记录并输出

        float Average(); //计算平均成绩

       };

       //-----类体结束------------------------

       //-----类成员函数开始----------------------------------

       int Commonbox::ListCount() //统计当前链表的记录总数,返回一个整数

       {

        if (! head)return 0;

        combox *p=head;

        int n=0;

        while (p)

        {

        n++;

        p=p->next;

        }

        return n;

       }

       void Commonbox::AddItem(int num, string name, int mark) //添加一条记录到表尾

       {

        if (! head)

        {

        head=new combox;

        head->mark=mark;

        head->num=num;

        head->name=name;

        head->next=NULL;

        return;

        }

        combox *t=head;

        while (t && t->num!=num)

        t=t->next;

        if (t)

        {

        cout<<"操作失败:学号为"<<num<<"的记录已经存在!"<<endl;

        return;

        }

        combox *p=head;

        while (p->next)p=p->next;

        combox *p1=new combox;

        p1->num=num;

        p1->mark=mark;

        p1->name=name;

        p1->next=NULL;

        p->next=p1;

        return;

       }

       void Commonbox::RemoveItem(int num) //删除一条指定的记录

       {

        combox *t=Find(num);

        if (! t)return;

        combox *p=head;

       //如果要删除的记录位于表头

        if (head==t)

        {

        head=head->next;

        delete p;

        cout <<"成功删除学号为 "<<num<<" 的记录!"<<endl<<endl;

        return;

        }

        while (p->next!=t)p=p->next;

        combox *p1=p->next;

        p->next=p1->next;

        delete p1;

        cout <<"成功删除学号为 "<<num<<" 的记录!"<<endl<<endl;

        return;

       }

       void Commonbox::Print(combox *p) //输出一combox指定的记录

       {

        cout<<p->num<<"\t\t";

        cout<<p->name<<"\t\t";

        cout<<p->mark<<endl;

        return;

       }

       void Commonbox::List() //列出当前链表中的所有记录

       {

        if (ListCount()==0)

        {

        cout <<"错误:当前的列表为空!"<<endl;

        return;

        }

        combox *p=head;

        cout<<"共有记录:"<<ListCount()<<endl;

        cout<<"学号\t\t姓名\t\t分数"<<endl;

        while (p)

        {

        Print(p);

        p=p->next;

        }

        cout <<endl;

        return;

       }

       void Commonbox::Search(int num) //在当前链表查找指定记录并输出

       {

        cout <<"Searching...."<<endl;

        combox *p=Find(num);

        if (p)

        {

        cout<<"学号\t\t姓名\t\t分数"<<endl;

        Print(p);

        }

        cout <<endl;

       }

       combox *Commonbox::Find(int num)

       {

        if (ListCount()==0)

        {

        cout <<"错误:当前的列表为空!"<<endl;

        return NULL;

        }

        combox *p=head;

        while (p)

        {

        if (p->num==num)break;

        p=p->next;

        }

        if (! p)

        {

        cout <<"错误:找不到该记录!\n";

        return NULL;

        }

        return p;

       }

       void Commonbox::Swap(combox *p1, combox *p2) //交换两个combox变量的数据域

       {

        combox *temp=new combox;

        temp->num=p1->num;

        temp->mark=p1->mark;

        temp->name=p1->name;

        p1->num=p2->num;

        p1->mark=p2->mark;

        p1->name=p2->name;

        p2->num=temp->num;

        p2->mark=temp->mark;

        p2->name=temp->name;

       }

       void Commonbox::Sort() //对当前链表进行排序

       {

        cout <<"Sorting..."<<endl;

        if (ListCount()<2) return;

        combox *temp=NULL,*p=NULL,*p1=NULL,*p2=NULL,*k=NULL;

        int n=ListCount(),i,j;

        p=head;

        for (i=1;i<n;i++)

        {

        k=p;

        p1=p->next;

        for (j=0;j<n-i;j++)

        {

        if (k->num > p1->num)

        {

        k=p1;

        }

        p1=p1->next;

        }

        if (p!=k)Swap(k,p);

        p=p->next;

        }

        cout <<"Complete successfully!"<<endl<<endl;

        return;

       }

       float Commonbox::Average() //计算平均成绩

       {

        if (ListCount()==0)

        {

        cout <<"错误:当前的列表为空!"<<endl;

        return -1;

        }

        int sum=0,n=0;

        combox *p=head;

        while (p)

        {

        sum += p->mark;

        p=p->next;

        n++;

        }

        return float(sum)/n;

       }

       //-----类成员函数结束----------------------------------

       //=============<结束定义Commonbox类>==============================================

       Commonbox student; //定义全局变量

       int Menu()

       {

        cout <<"===========[主选单:]==========="<<endl;

        int n=1,select=-1;

        cout <<n++<<".输入学生成绩;"<<endl<<endl;

        cout <<n++<<".按学号排序;"<<endl<<endl;

        cout <<n++<<".按学号查找记录;"<<endl<<endl;

        cout <<n++<<".删除由学号指定的记录;"<<endl<<endl;

        cout <<n++<<".列出所有记录;"<<endl<<endl;

        cout <<n++<<".计算平均成绩;"<<endl<<endl;

        cout <<"0.退出;"<<endl<<endl;

        cout <<"[请选择(输入相应数字)]:";

        cin >>select;

        return select;

       }

       char Exit() //返回一个字符患,用于确认退出

       {

        char s;

        cout<<"确定要退出程序吗?[Y/N]:";

        cin >>s;

        return s;

       }

       void Input(int *num, string *name, int *mark) //输入学生信息

       {

        cout <<"请输入 学号 姓名 分数:";

        cin >>*num;

        if (*num==-1)return;

        cin >>*name>>*mark;

        return;

       }

       void AddNew() //增加记录

       {

        int num=0,mark=0;

        string name="";

        cout<<endl<<"当输入的学号为-1时表示结束输入."<<endl;

        Input(&num, &name, &mark);

        while (num!=-1)

        {

        student.AddItem(num,name,mark);

        Input(&num, &name, &mark);

        }

        return;

       }

       void DoFind() //按学号查找

       {

        int num;

        cout<<endl<<"当输入的学号为-1时表示结束输入."<<endl;

        do

        {

        cout <<"请输入要查找的学生的学号: ";

        cin>>num;

        if (num==-1)continue;

        student.Search(num);

        }

        while (num!=-1);

        return;

       }

       void DoDelete() //删除记录

       {

        cout<<endl<<"当输入的学号为-1时表示结束输入."<<endl;

        int num;

        do

        {

        cout <<"请输入要删除的学生的学号:";

        cin>>num;

        if (num==-1)continue;

        student.RemoveItem(num);

        }

        while (num!=-1);

        return;

       }

       void ShowAverage() //输出平均数

       {

        float avr=student.Average();

        if (avr>0)

        {

        cout<<"共有记录:\t"<<student.ListCount()<<endl<<endl;

        cout<<"平均成绩:\t"<<avr<<endl<<endl;

        }

        return;

       }

       //-------