zoukankan      html  css  js  c++  java
  • 成绩统计系统2.0

    大一做的实训项目

    /* 学生成绩管理 */
    #include "stdio.h"
    #define PFORMAT "%4d %5d %4d %7d %8d %4d %6d %8d %7d\n"//整形输出格式控制
    #define PF "%4.2f %5.2f %4.2f %7.2f %8.2f %4.2f %6.2f %8.2f %7.2f\n"//浮点形输出格式控制
    #define IFORMAT "   %d %5d %5d %4d %7d %8d %4d %6d %8d %7d\n"//输入格式控制
    #define MAX 45//定义变量常量,最大人数只能达到45人
    typedef struct{
     int num;             //学号
     int practical;       //应用文
     int english;         //英语
     int math;     //数学
     int computer_based;  //计算机基础
     int c;     //C语言
     int pe;     //体育
     int mental_health;  //心理健康
     int thinking;    //思想道德与法律基础
     int sum;
    }RECORD;
    /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /*  自定义函数声明  */
    int printb();//显示
    void cls();//清屏
    void scanf1(int *x);
    int identify(int i);//确定
    int findnum(RECORD student[],int people);//查找学号
    void sta(int x,int a[]);//统计各分数段人数
    int fen(int *n);//显示提示录入子菜单的信息
    int importing(RECORD student[],int *people);//输入子菜单
    RECORD impor(RECORD student,char ch);//输入
    int sum(RECORD student);//计算总分
    int luru(int num,int k,int i,int);//输入各科
    void output(RECORD student[],int *people);//输出子菜单
    void outpu(RECORD student,int i);//输出
    void add(RECORD student[],int *people);//添加记录
    void delet(RECORD student[],int *people);//删除记录
    void find(RECORD student[],int *people);//查找
    void modify(RECORD student[],int *people);//修改
    void statistical(RECORD student[],int *people);//统计人数
    void most(RECORD student[],int people);//平均值
    void ave(RECORD student[],int people);//求最值
    void save_file(RECORD student[],int people);//保存文件
    void open_file();//打开文件
    /////////////////////////主函数///////////////////////////////////////////////////////////////////////////////////
    void main()
    {
     int people=0,x,i=1;//people是总人数,相当于定义了全局变量,因为在函数调用时,需要改变值时都是传地址。i
        RECORD student[MAX];//定义结构体数组
        do
        { 
         x=printb();//调用显示信息函数,x是返回的对应的选项
         switch(x)
         {
           case 1: i=importing(student,&people);break;//传数组和people变量的地址过去
           case 2: output(student,&people);break;
           case 3: add(student,&people);break;
           case 4: delet(student,&people);break;
           case 5: find(student,&people);break;
           case 6: modify(student,&people);break;
           case 7: statistical(student,&people);break;
           case 8: most(student,people);break;
           case 9: ave(student,people);break;
           case 10: save_file(student,people);break;
           case 11: open_file();break;
           case 12: return;
         }
     if(i==1)getch();
        }while(x!=12);//当输入是12就退出系统
        exit(0);
    }
    ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /*      显示信息      */       
    int printb(){
    int x=1;
    do{
     cls();
     printf("\t\t**********************************************\n");
     printf("\t\t*               成绩统计系统                 *\n");
     printf("\t\t*              欢迎进入主菜单                *\n");
     printf("\t\t*     1  成绩录入          7  统计人数       *\n");
     printf("\t\t*     2  查看成绩          8  计算最值       *\n");
     printf("\t\t*     3  添加成绩          9  算平均分       *\n");
     printf("\t\t*     4  删除记录          10 保存文件       *\n");
     printf("\t\t*     5  查找成绩          11 打开文件       *\n");
     printf("\t\t*     6  修改成绩          12 退出系统       *\n");
     printf("\t\t*                                            *\n");
     printf("\t\t*                    编者:张旺  班级:35111  *\n");
     printf("\t\t**********************************************\n\n");
     printf("\t\t\t  您的使用,是对我最大的支持\n");
     printf("\t\t    如果您有什么意见或看法,请发E-mail给我\n");
     printf("\t\t\t  zhangwang6719@foxmail.com\n");
     if(x<1||x>12)
     {
       printf("警告:请您重新选择进入的子菜单(1~12):");
     }
     else
     printf("请您选择要进入的子菜单(1~12):");
     scanf1(&x);
      }
    while(x<1||x>12);//如果输入1~12之外的数,就继续循环
    return x;
    }
    ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /*    清屏   */
    void cls()
    {
     system("cls");
    }
    ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /*输入 字符串转化数字*/
    void scanf1(int *x)
    {
     char ch[10];
     int n,i,j=1,s=0;
     gets(ch);//从键盘上读入字符串
     for(i=strlen(ch)-1;-1!=i;i--)//测试字符串的长度,然后从前面开始取每个字符
     {
     n=ch[i]-'0';//原字符减去'0'字符,就得了相应的数值
     if(n<0||n>9)//当数值不在0到9之间,就返回120,120在整个程序中无意义
     {
      *x=120;
      return;
     }
     s+=n*j;//当输入两个以上的字符,就要对第二个字符乘j,j是不断乘10倍数
     j*=10;
     }
     *x=s;
    }
    ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /*显示提示录入子菜单的信息*/
    int fen(int *people)
    {
     int k;
     cls();
     printf("\n\t\t\t欢迎进入成绩录入子菜单\n");
     /*==========选择录入成绩的方式=======*/
     printf("请选择录入成绩的方式\n");
     printf("1 一次录入一个人的所有成绩\n");
     printf("2 按科目录入\n");
     printf("3 返回主菜单\n\n请选择:");
     scanf1(&k);
     if(3==k)return k;
     while(k<1||k>3)
     {
      cls();
      printf("\t\t\t欢迎进入成绩录入子菜单\n");
      printf("警告:请重新选择录入成绩的方式\n");
      printf("1 一次性把每个人的各科输完\n2  按科目输入\n3 返回主菜单\n\n请选择:");
      scanf1(&k);
      if(3==k)return k;
     }
     /*============输入人数==========*/
     printf("请输入本班的人数,人数不能超过%d个: ",MAX);
     scanf1(people);
     while(*people<1||*people>MAX)
     {
      if(*people==0)
         printf("警告:人数不可能是没有,请重新输入: ");
      else if(*people>MAX)
         printf("警告:人数超过最大数,请重新输入: ");
      else
         printf("警告:人数不可能是负数,请重新输入: ");
      scanf1(people);
     }
     return k;//k是返回选择的方式
    }
    ////////////////////////////////////////////////////////////////////////////////////////////////////
    /* 输入子菜单 */
    int importing(RECORD student[],int *people)//
    {
     int peo,i,k;//peo总人数 i是循环变量 k是fen函数返回的录入方式的值,1代表记录录入方式,2是单科录入方式,3直接返回
     k=fen(&peo);//feo()函数是显示提示信息,继续把peo地址传到fen函数,feo()函数返回的K的值
     *people=peo;//人数赋值
     if(3==k)return 0;//直接返回主菜单
     /*===========记录录入方式==========*/
     if(1==k)
     {
      for(i=0;i<*people;i++)
      {
       student[i].num=3511101+i;//自动给学号赋值
       student[i]=impor(student[i],'y');
      }//调用录入函数,传单个的结构体的值,返回单个的结构体的全部值,y是在函数里相应输出学号,
     }
     /*==========单科录入方式==========*/
     else
     {
       k=1;i=0;//k代表科目,i代表人数
       while(k<9)
       {
        switch(k)
        {
          case 1: student[i].num=(3511101+i);//赋值学号
              student[i].practical=luru(student[i].num,k,i,0);break;//函数调用里k,i主要是负责文字提示
          case 2: student[i].english=luru(student[i].num,k,i,0);break;
          case 3: student[i].math=luru(student[i].num,k,i,0);break;
          case 4: student[i].computer_based=luru(student[i].num,k,i,0);break;
          case 5: student[i].c=luru(student[i].num,k,i,0);break;
          case 6: student[i].pe=luru(student[i].num,k,i,0);break;
          case 7: student[i].mental_health=luru(student[i].num,k,i,0);break;
          case 8: student[i].thinking=luru(student[i].num,k,i,0);break;
        }//luru(a,b,c,d)单科录入函数,a学号输出,b科目代码,c科目输出提示的方式,d是否输出学号的提示0代表不输出
        if(++i==*people)//当i与总人数相等时,k加1就跳到下一个科目,i又从零开始
         {k++;i=0;}
       }
     }
     for(i=0;i<*people;i++)
     student[i].sum=sum(student[i]);//调用求和函数,
     printf("\n成绩录入完毕!按任意键进入主菜单!");
     return 1;
    }
    ////////////////////////////////////////////////////////////////////////////////////////////////////
    /*计算总分*/
    int sum(RECORD student)//传地址过来,返回总分
    {
     student.sum=student.practical+student.english+
     student.math+student.computer_based+student.c+
     student.pe+student.mental_health+student.thinking;
     return student.sum;
    }
    ////////////////////////////////////////////////////////////////////////////////////////////////////
    /*  输出子菜单  */
    void output(RECORD student[],int *people)
    {
     int i;
     cls();//调用清屏函数
     printf("\n\t\t\t欢迎进入成绩查看子菜单\n");
     if(*people==0)
     {
      printf("您还没有录入成绩!\n按任意键进入主菜单!");
      return;
     }
     for(i=0;i<*people;i++)
     {
     outpu(student[i],i);//调用单条记录输出,i为0时输出提示信息
     }
     printf("\n按任意键进入主菜单!");
    }
    ////////////////////////////////////////////////////////////////////////////////////////////////////
    /*   添加子菜单  */
    void add(RECORD student[],int *people)
    {
     int x,i,m,n=0,num;//x添加方式,i循环变量,n标志学号是否存在0表示不存在,nun学号
     cls();
     printf("\n\t\t\t欢迎进入成绩添加插入子菜单\n");
     if(!(*people<MAX))//判断是否超过了最大范围
     {
      printf("警告:超过了最大限度!\n");
     }
     else
     {
      printf("请选择\n1 添加成绩  2 插入成绩\n请输入:");
      scanf1(&x);
      while(x<1||2<x)//只有当输入1和2才有效,其它数字都要重新输入
      {
       cls();
       printf("警告:只能输入1或2,请重新输入!\n");
       scanf1(&x);
      }
      if(x==1)//当X为1时,添加成绩
      {
        if(0==*people)
       student[*people].num=3511101;//当人数为零时,就重新赋值为3511101
        else
       student[*people].num=student[*people-1].num+1;//学号增加1
       student[*people]=impor(student[*people],'y');//调用录入函数
       student[*people].sum=sum(student[*people]);//计算刚录入的总分
       *people+=1;//总人数增加1
      }
      else//插入记录
      {
         cls();
         printf("请输入学号:提示学号的范围是%d到%d\n",3511101,3511100+MAX);
            scanf1(&num);
            while(num<3511101||3511100+MAX<num)//判断学号的是否有效,如果不要这个范围内就重新输入
            {
             cls();
             printf("警告:此学号超过了范围!提示学号的范围是%d到%d\n",3511101,3511100+MAX);
             printf("请重新输入:");
             scanf1(&num);
            }
            for(i=0;i<*people;i++)
             if(num==student[i].num)//查找学号是否存在
       {
         cls();
         printf("警告:此学号已经存在!");
         n=1;//标示此学号已经存在
         break;
       }
         if(0==n)
         {
           for(i=0;i<*people;i++)//查找学号所在的位置
            if(num<student[i].num)
            break;
           for(m=*people;m>i;m--)//把后面的记录全部往后面移
           {
            student[m]=student[m-1];
           }
           student[i].num=num;
        student[i]=impor(student[i],'y');//调用录入函数
        student[i].sum=sum(student[i]);//计算刚录入的总分
        *people+=1;//人数增加1
         }
         printf("\n成绩添加成功!");
      }
      }
     printf("\n按任意键进入主菜单!");
     return;
    }
    ////////////////////////////////////////////////////////////////////////////////////////////////////
    /*    删除记录  */
    void delet(RECORD student[],int *people)
    {
     int x;
     cls();
     printf("\n\t\t\t欢迎进入成绩删除子菜单\n");
     if(0==*people)//判断总人数是否存在,如果没有一个人,就存在删除了
      printf("还没有成绩,请输入成绩!");
     else
     {
      x=findnum(student,*people);//调用查找学号函数,返回要查找那个元素的下标 -1表示没有这个学号
      if(-1!=x)
      {
       if(1==identify(1))//调用确定函数,当返回1时表示要删除该条记录
       {
        *people-=1;//总人数减1
        while(x<*people)
        {
       student[x]=student[x+1];//把后面的记录全部往前面移动
       x++;
        }
        printf("删除成功!\n"); 
       }
      }
        }
     printf("\n按任意键进入主菜单!"); 
    }
    ////////////////////////////////////////////////////////////////////////////////////////////////////
    /*    查找记录   */
    void find(RECORD student[],int *people)
    {
     int x;
     cls();
     printf("\n\t\t\t欢迎进入成绩查找子菜单\n");
     if(0==*people)//判断总人数是否存在,如果没有一个人,就存在查找
      printf("还没有成绩,无法查找,请输入成绩!");
     else
     {
      x=findnum(student,*people);//调用查找学号函数,返回要查找那个元素的下标 -1表示没有这个学号
      if(-1!=x)
      {
       outpu(student[x],0);//调用单条记录输出,0表示输出提示信息
      }
     }
     printf("\n按任意键进入主菜单!");
    }
    ////////////////////////////////////////////////////////////////////////////////////////////////////
    /*成绩修改子菜单*/
    void modify(RECORD student[],int *people)
    {
     int x;
     char c;
     cls();
     printf("\n\t\t\t欢迎进入成绩修改子菜单\n");
     if(0==*people)//判断总人数是否存在,如果没有一个人,就存在修改
      printf("还没有成绩,无法修改,请输入成绩!");
     else
     {
      x=findnum(student,*people);//调用查找学号函数,返回要查找那个元素的下标 -1表示没有这个学号
      if(-1!=x)
      {
       outpu(student[x],0);//显示出那条记录
       if(1==identify(0))//调用确定函数,确定是否要删除本条记录
       {
        scanf("%c",&c);//用于接收回车字符
        student[x]=impor(student[x],'n');//调用单条记录录入函数
        student[x].sum=sum(student[x]);//重新计算总分
       printf("\n修改在成功!");
       }
       else//当你输入N时,
        printf("\n修改失败!");
      }
     }
     printf("\n按任意键进入主菜单!");
    }
    ////////////////////////////////////////////////////////////////////////////////////////////////////
    /*       统计各分数段人数函数调用      */
    void statistical(RECORD student[],int *people)
    {
     int i,j, a[8][5]={0};//每一行存放一科成绩,每一列存在一个等级
     cls();
     printf("\n\t\t\t欢迎进入成绩统计子菜单\n");
     if(0==*people)//如果是0个人就直接返回
     {
      printf("还没有成绩,无法统计,请输入成绩!");
      printf("\n按任意键进入主菜单!");
      return;
     }
     for(i=0;i<*people;i++)
     {
      sta(student[i].practical,a[0]);//调用函数,一次只传一个人一科成绩
      sta(student[i].english,a[1]);
      sta(student[i].math,a[2]);
      sta(student[i].computer_based,a[3]);
      sta(student[i].c,a[4]);
      sta(student[i].pe,a[5]);
      sta(student[i].mental_health,a[6]);
      sta(student[i].thinking,a[7]);
     } 
     printf("\t各分数段人数  ");
     printf("100-90  90-80 80-70 70-60 60以下\n");
     for(i=0;i<8;i++)
     {
       for(j=0;j<5;j++)
       {
      if(j==0)
      {
       switch(i)
        {
       case 0: printf("\t      应用文     ");break;
       case 1: printf("\t\t英语     ");break;
       case 2: printf("\t\t数学     ");break;
          case 4: printf("\t       C语言     ");break;
       case 3: printf("\t  计算机基础     ");break;
       case 5: printf("\t\t体育     ");break;
       case 6: printf("\t    心理健康     ");break;
       case 7:printf("\t    思想道德     ");break;
        }
      }
      printf("%d     ",a[i][j]);
       }
       printf("\n");
     }
     printf("\n按任意键进入主菜单!");
    }
    ////////////////////////////////////////////////////////////////////////////////////////////////////
    /*  计算最值   */
    void most(RECORD student[],int people)
    {
     RECORD stu[2];//stu[0]存在最大值,stu[1]存在最小值
     int i;
     cls();
     printf("\n\t\t欢迎进入查看成绩最高分与最低分子菜单\n");
     if(0==people)//如果是0个人就直接返回
     {
      printf("还没有成绩,无法查看,请输入成绩!");
      printf("\n按任意键进入主菜单!");
      return;
     }
     stu[0]=stu[1]=student[0];//把第一记录初始化为最大、最小
     /*====查找最大、最小的各科的分数=====*/
     for(i=1;i<people;i++)
     {
       if(stu[0].practical<student[i].practical)
        stu[0].practical=student[i].practical;
       if(stu[1].practical>student[i].practical)
        stu[1].practical=student[i].practical;
       if(stu[0].english<student[i].english)
        stu[0].english=student[i].english;
       if(stu[1].english>student[i].english)
        stu[1].english=student[i].english;
       if(stu[0].math<student[i].math)
        stu[0].math=student[i].math;
       if(stu[1].math>student[i].math)
        stu[1].math=student[i].math;
       if(stu[0].computer_based<student[i].computer_based)
        stu[0].computer_based=student[i].computer_based;
       if(stu[1].computer_based>student[i].computer_based)
        stu[1].computer_based=student[i].computer_based;
       if(stu[0].c<student[i].c)
        stu[0].c=student[i].c;
       if(stu[1].c>student[i].c)
        stu[1].c=student[i].c;
       if(stu[0].pe<student[i].pe)
        stu[0].pe=student[i].pe;
       if(stu[1].pe>student[i].pe)
        stu[1].pe=student[i].pe;
       if(stu[0].mental_health<student[i].mental_health)
        stu[0].mental_health=student[i].mental_health;
       if(stu[1].mental_health>student[i].mental_health)
        stu[1].mental_health=student[i].mental_health;
       if(stu[0].thinking<student[i].thinking)
        stu[0].thinking=student[i].thinking;
       if(stu[1].thinking>student[i].thinking)
        stu[1].thinking=student[i].thinking;    
       if(stu[0].sum<student[i].sum)
        stu[0].sum=student[i].sum;
       if(stu[1].sum>student[i].sum)
        stu[1].sum=student[i].sum;    
     }
     printf("应用文 英语 数学 计算机基础 C语言 体育 心理健康 思想道德  总分\n");
     printf("单科最高分\n");
      printf(PFORMAT,stu[0].practical,stu[0].english,stu[0].math,
      stu[0].computer_based,stu[0].c,stu[0].pe,stu[0].mental_health,
      stu[0].thinking,stu[0].sum);  
     printf("单科最低分\n");
      printf(PFORMAT,stu[1].practical,stu[1].english,stu[1].math,
      stu[1].computer_based,stu[1].c,stu[1].pe,stu[1].mental_health,
      stu[1].thinking,stu[1].sum);  
     printf("\n按任意键进入主菜单!");
    ////////////////////////////////////////////////////////////////////////////////////////////////////
    /*    平均值  */
    void ave(RECORD student[],int people)
    {
     float average[9];
     int i;
     cls();
     printf("\n\t\t\t欢迎进入计算平均分子菜单\n");
     if(0==people)//如果是0个人就直接返回
     {
      printf("还没有成绩,无法计算,请输入成绩!");
      printf("\n按任意键进入主菜单!");
      return;
     }
     /*===把第一条记录初始化====*/
     average[0]=student[0].practical;
     average[1]=student[0].english;
     average[2]=student[0].math;
     average[3]=student[0].computer_based;
     average[4]=student[0].c;
     average[5]=student[0].pe;
     average[6]=student[0].mental_health;
     average[7]=student[0].thinking;
     average[8]=student[0].sum;
     /*========求和========*/
     for(i=1;i<people;i++)
     {
      average[0]+=student[i].practical;
      average[1]+=student[i].english;
      average[2]+=student[i].math;
      average[3]+=student[i].computer_based;
      average[4]+=student[i].c;
      average[5]+=student[i].pe;
      average[6]+=student[i].mental_health;
      average[7]+=student[i].thinking;
      average[8]=student[i].sum;
     }
     /*========总分数除总人数==========*/
     average[0]/=people;
     average[1]/=people;
     average[2]/=people;
     average[3]/=people;
     average[4]/=people;
     average[5]/=people;
     average[6]/=people;
     average[7]/=people;
     average[8]/=people;
      printf("应用文 英语 数学 计算机基础 C语言 体育 心理健康 思想道德  总分\n");
      printf(PF,average[0],average[1],average[2],average[3],average[4],
      average[5],average[6],average[7],average[8],average[8]);   
     printf("\n按任意键进入主菜单!");
    }
    ////////////////////////////////////////////////////////////////////////////////////////////////////
    /*  单条记录录入  */
    RECORD impor(RECORD student,char ch)//
    {
      if('y'==ch)
      {
       cls();
       printf("学号:%d\n",student.num);
      }//luru(a,b,c,d)单科录入函数,a学号上面已经输出,b科目代码,c科目输出提示的方式,d是否输出学号的提示
        student.practical=luru(0,1,1,1);
        student.english=luru(0,2,1,1);
        student.math=luru(0,3,1,1);
      student.computer_based=luru(0,4,1,1);
      student.c=luru(0,5,1,1);
      student.pe=luru(0,6,1,1);
      student.mental_health=luru(0,7,1,1);
      student.thinking=luru(0,8,1,1);
      return student;
    }
    /////////////////////////////////////////////////////
    /*  录入各科  */
    int luru(int num,int k,int i,int ii)//学号 科目 提示科目
    {
     int x;//x是从键盘得到的一个分数,并返回
     if(0==i)
      cls();
     if(0==ii)
      {
      if(0==i)
       switch(k)
       {
        case 1: printf("请输入应用文的成绩\n");break;
        case 2: printf("请输入英语的成绩\n");break;
        case 3: printf("请输入数学的成绩\n");break;
        case 4: printf("请输入计算机基础的成绩\n");break;
        case 5: printf("请输入C语言的成绩\n");break;
        case 6: printf("请输入体育的成绩\n");break;
        case 7: printf("请输入心理健康的成绩\n");break;
        case 8: printf("请输入思想道德与法律基础的成绩\n");break;
       }
      }
     else
     {
       switch(k)
       {
        case 1: printf("请输入应用文的成绩:");break;
        case 2: printf("请输入英语的成绩:");break;
        case 3: printf("请输入数学的成绩:");break;
        case 4: printf("请输入计算机基础的成绩:");break;
        case 5: printf("请输入C语言的成绩:");break;
        case 6: printf("请输入体育的成绩:");break;
        case 7: printf("请输入心理健康的成绩:");break;
        case 8: printf("请输入思想道德与法律基础的成绩:");break;
       }
     }
     if(0==ii)
       printf("学号是%d的成绩:",num);
     scanf1(&x);
     while(x>100||x<0)
     {
      printf("成绩错误!请重新输入:");
      scanf1(&x);
     }
     return x;
     
    }
    ////////////////////////////////////////////////////////////////////////////////////////////////////
    /* 单条记录输出  */
    void outpu(RECORD student,int i)//接收结构体的变量,i是否输出提示信息
    {
     if(0==i)
     {
      printf("\n     学号   应用文 英语 数学 计算机基础 C语言 体育 心理健康 思想道德  总分\n");
      
     }
      printf(IFORMAT,student.num,student.practical,student.english,
      student.math,student.computer_based,student.c,student.pe,
      student.mental_health,student.thinking,student.sum);
    }
    /////////////////////////////////////////////////////////////////////////////////////////////////////
    /*查找学号*/
    int findnum(RECORD student[],int people)//返回是数组的下标
    {
     int i,x;
     printf("请输入学号:提示学号的范围是%d到%d\n",3511101,3511100+MAX);
     scanf1(&x);
     for(i=0;i<people;i++)
     {
       if(x==student[i].num)
       {
        return i;
       }
     }
     printf("警告:没有这个学号!");
     return -1;
    }
    /////////////////////////////////////////////////////////////////////////////////////////////////////
    /*  确定  */
    int identify(int i)//i为1显示删除 0修改 返回是1或0
    {
     char ch[10];
     if(1==i)
      printf("确定要删除记录吗?\n");
     else 
      printf("确定要修改记录吗?\n");
     printf("请输入Y或N: ");
     scanf("%s",ch);
     while(!(ch[0]=='y'||ch[0]=='n'||ch[0]=='Y'||ch[0]=='N'))
     {
      printf("警告:只能输入Y或N: ");
      scanf("%s",ch);
     }
     if('Y'==ch[0]||'y'==ch[0])
      return 1;
     else
      return 0;
    }
    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /*  统计各分数段人数函数  */
    void sta(int x,int a[])
     {
          switch(x/10)
          {
       case 10: case 9: a[0]+=1; break;
       case 8: a[1]+=1;break;
       case 7: a[2]+=1;break;
       case 6: a[3]+=1;break;
       default: a[4]+=1;
       } 
     }
     
    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /*    文件保存   */
    void save_file(RECORD student[],int people)
    {
     FILE *fp;
     int i;
     cls();
     printf("\n\t\t\t欢迎进入保存文件子菜单\n");
     if((fp=fopen(".\\成绩.txt","wb"))==NULL)
     {
      printf("文件新建失败!\n");
      printf("\n按任意键进入主菜单!");
      return;
     }
     for(i=0;i<people;i++)
     {
     fwrite(&student[i],sizeof(RECORD),1,fp);
     }
     fclose(fp);
      printf("文件保存成功!\n");
      printf("提示:文件保存在当前目录下文件名是成绩.txt,请勿删除!");
     printf("\n按任意键进入主菜单!");
    }
    ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /*   文件打开 */
    void open_file()
    {
     RECORD student[MAX];
     FILE *fp;
     int i,n=1;
     cls();
      printf("\n\t\t\t欢迎进入打开文件子菜单\n");
     if((fp=fopen(".\\成绩.txt","rb"))==NULL)
     {
      printf("文件打开失败!\n");
      printf("\n按任意键进入主菜单!");
      return;
     }
     n=0;
     while(!feof(fp))
     {
      fread(&student[n],sizeof(RECORD),1,fp);
      n++;
     }
     fclose(fp);
     for(i=0;i<n-1;i++)
      outpu(student[i],i);
     printf("\n按任意键进入主菜单!");
    }
    那些都是浮云,只有本领才是王道
  • 相关阅读:
    [ lucene高级 ] lucene中的算法PriorityQueue
    [ lucene扩展 ] MoreLikeThis 相似检索
    排序08归并排序
    lucene中的数值型字段(NumericField)
    两三年前的搜索管理系统
    java中的集合包简要分析
    倒排索引基础
    散列02java中的hashMap
    Mysql数据库中InnoDB和MyISAM的差别
    ajax 乱码
  • 原文地址:https://www.cnblogs.com/zhangwang/p/3042751.html
Copyright © 2011-2022 走看看