为了账号安全,请及时绑定邮箱和手机立即绑定

【明天交,急】学生成绩管理系统的问题,求解答

【明天交,急】学生成绩管理系统的问题,求解答

C++
谢偃 2017-01-04 12:13:03
编译没问题,运行有1、  新增学生信息时为什么不论总分多少排名总会在最后,输出时总分、排名不会输出? 截图2、  不能索阅信息 截图23、  不能修改信息 截图3123程序太长,发不完的评论续上#include "stdio.h" #include "string.h" #include "math.h" #include "stdlib.h" int size=0; struct STU {long int num;       /*学号*/  char name[20];      /*姓名*/  int Chi;            /*语文成绩*/  int Math;           /*数学成绩*/  int sum;            /*总分*/  int mc;             /*名次*/ }; struct STU s[100]; void Input() {int n=0; FILE *fp;  fp=fopen("F:\\1.txt","r");   while(fscanf(fp,"%ld %s %d %d\n",&s[n].num,s[n].name,&s[n].Chi,&s[n].Math)!=EOF)   {       n=n+1;   }  size=n;     } void Disp()          /*显示*/ {int i;   printf("\t\t   - - - * * * * * * * * * * * * * * * * * * * * - - -\n"); printf("\t\t   -                  学生成绩情况                   -\n"); printf("\t\t   - - - * * * * * * * * * * * * * * * * * * * * - - -\n"); printf("\t\t   - 学号\t姓名\t语文\t数学\t总分\t名次 -\n"); printf("\t\t   - - - - - - - - - - - - - - - - - - - - - - - - - -\n"); for(i=0;i<size;i++) printf("\t\t   - %ld\t%s\t%d\t%d\t%d\t%d -\n",s[i].num,s[i].name,s[i].Chi,s[i].Math,s[i].sum,s[i].mc); printf("\t\t   - - - * * * * * * * * * * * * * * * * * * * * - - -\n"); printf("\n");printf("\n"); } void Count()         /*计算*/ {int i; for(i=0;i<size;i++)    s[i].sum=s[i].Chi+s[i].Math; Disp(); } void Sort()         /*排序*/  {int i,j,z; Count();            /*每个人先按照下标排名,然后相邻2位比较总分,总分小的后移,算size-1次*/ for(i=0;i<size;i++)    s[i].mc=i+1; for(j=1;j<size;j++)   for(i=size-1;i>=0;i--)     {if(s[i].sum<=s[i+1].sum)        {z=s[i].mc;          s[i].mc=s[i+1].mc;          s[i+1].mc=z;        }    } Disp(); } void Append()      /*添加*/ {   int j,f,k,i; add: printf("\t\t   - - -* * * * * * * * *- - -\n"); printf("\t\t   - 是否新增一个学生的信息?-\n");     printf("\t\t   -       1.是              -\n");     printf("\t\t   -       2.否,并退出      -\n");     printf("\t\t   -       请输入数字:      -\n");     printf("\t\t   - - -* * * * * * * * *- - -\n"); scanf("%d",&j);     printf("\n"); if(j==1) {   zengjia:    printf("\t\t   - - -* * * * * * * * * * * * * * * * *- - -\n");             /*判断该学生信息是否已经存在*/        printf("\t\t   -    请输入学生的信息(无需总分和名次):   -\n");        printf("\t\t   - - -* * * * * * * * * * * * * * * * *- - -\n");        printf("\n");    scanf("%ld%s%d%d",&s[size].num,&s[size].name,&s[size].Chi,&s[size].Math);    k=s[size].num;    for(i=0;i<size;i++)          if(k==s[i].num) {printf("\t\t    已存在该学生信息\n");printf("\n");printf("\n");goto add;}        size++;    Sort();        printf("\n");    printf("\t\t   学号\t姓名\t语文\t数学\t总分\t名次\n");        printf("\t\t   - - - - - - - - - - - - - - - - - - - - - - - -0\n");        printf("\t\t   %ld\t%s\t%d\t%d\n",s[size-1].num,s[size-1].name,s[size-1].Chi,s[size-1].Math,s[size-1].sum,s[size-1].mc);    printf("\n");printf("\n"); jixu:    printf("\t\t   - - - * * * * * * * * * * * * - - -\n");         /*判断是否继续操作*/    printf("\t\t   -   是否继续增加一个学生的信息?  -\n");        printf("\t\t   -      1.是                       -\n");        printf("\t\t   -      2.否,并退出               -\n");        printf("\t\t   -            请输入数字:         -\n");        printf("\t\t   - - - * * * * * * * * * * * * - - -\n");        scanf("%d",&f);    printf("\n");    if(f==1) {printf("\n");printf("\n");goto zengjia;}    else if(f==2) goto end;         else {printf("\t\t    无效数字,请重新输入。\n");printf("\n");printf("\n");goto jixu;} }     else if(j!=2&&j!=1) {printf("\t\t    无效数字,请重新输入。");printf("\n");printf("\n");goto add;} end: printf("\n");printf("\n");printf("\n");printf("\n");printf("\n"); }
查看完整描述

目前暂无任何回答

  • 0 回答
  • 1 关注
  • 1714 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信