标题:新手,写了一个班级成绩管理程序,有几点不会
取消只看楼主
请多关照
Rank: 2
等 级:论坛游民
帖 子:12
专家分:20
注 册:2016-11-3
结帖率:33.33%
已结贴  问题点数:3 回复次数:1 
新手,写了一个班级成绩管理程序,有几点不会
希望大神能帮忙解决一下。
下面是我写的代码,结构体数组一直搞不明白。希望大神能帮我分析一下。
另外,有个保存的函数我写不出来,能帮我补充一下么(一共就那么点积分了,真抱歉)
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
struct chengji//构造体数组,也不太会,查的资料,后边跟的a[i]也不知道为什么总是错误的。 这个程序应该是N个学生的M门课程,然而弄不出来M门课程,所以改为三门
{
    int xuehao;
    char mingzi;
    float kecheng[3];
};a[i];
int menu(){//显示界面
    int x;
    printf("                                班级成绩管理系统                       \n");
    printf("********************************************************************************\n");
    printf("请选择系统功能项: \n");
    printf("   a.成绩录入     b.成绩显示     c.成绩保存     d.成绩排序     e.成绩修改     f.成绩统计    g.退出系统\n");
    printf("********************************************************************************\n");
    for (;;){
        printf("请输入  a ~ g 中的一个选项:");
        scanf("%c",&x);
        switch(x){
            case 'a':printf("成绩录入");break;
            case 'b':printf("成绩显示");break;
            case 'c':printf("成绩保存");break;
            case 'd':printf("成绩排序");break;
            case 'e':printf("成绩修改");break;
            case 'f':printf("成绩统计");break;
            case 'g':printf("退出系统");break;
            default:printf("输入错误,请重新输入");
        }
        return x;
    }
    }
void baocun(){//保存这个函数  我也不会写
}
void luru(){//对成绩进行录入,N个学生,三门课程:语 数  外。这不会,没写出来
    int N,i,j;
    char temp[N];
    for(i=1;i<=N;i++){
        printf("分别输入:\n姓名,学号,科目成绩:语,数,外:\n");
    }
}
void paixu(){//对某科成绩进行排序
    int i,j,t,N;
    for(i=1;i<=N;i++)//N次比较
    for(j=1;j<=N-i;j++)
    if(a[i].kecheng[1]>a[i+1].kecheng[1]){
        t=a[1].kecheng[1];a[i].kecheng[1]=a[i+1].kecheng[1];a[i+1].kecheng[1]=t;
    }
    printf("语文成绩排序结果:%s   %d   %.1f\n",a[i].mingzi,a[i].xuehao,a[i].kecheng[1]);
    for(i=1;i<=N;i++)//N次比较
    for(j=1;j<=N-i;j++)
    if(a[i].kecheng[2]>a[i+1].kecheng[2]){
        t=a[1].kecheng[2];a[i].kecheng[2]=a[i+1].kecheng[2];a[i+1].kecheng[2]=t;
    }
    printf("数学成绩排序结果:%s   %d   %.1f\n",a[i].mingzi,a[i].xuehao,a[i].kecheng[2]);
    for(i=1;i<=N;i++)//N次比较
    for(j=1;j<=N-i;j++)
    if(a[i].kecheng[3]>a[i+1].kecheng[3]){
        t=a[1].kecheng[3];a[i].kecheng[3]=a[i+1].kecheng[3];a[i+1].kecheng[3]=t;
    }
    printf("外语成绩排序结果:%s   %d   %.1f\n",a[i].mingzi,a[i].xuehao,a[i].kecheng[3]);
}
void xianshi(){//显示录入学生的成绩信息
    int N;
    for(int t=1;t<=N;t++){
        printf("姓名   学号   语   数   外\n");
        printf("%s    %d   %.1f   %.1f   %.1f\n",a[i].mingzi,a[i].xuehao,a[i].kecheng[1],a[i].kecheng[2],a[i].kecheng[3]);
        if (a[i+1].xuehao==0) break;
    }
}
void xiugai(){//修改成绩
    int x,z,c,s,N;
    printf ("请输入密码:");
    scanf("%d",&x);
    if(x==1234){//对密码进行判断
        for (;;){//提取某个学生的信息
            printf("输入要修改的学生号\n");
            scanf("%d",&c);
            for(int i=1;i<=N;i++){
                if(c==a[i].xuehao){ s=i;
                }
            }
        }
        system("cls");//清屏
        printf("请输入选择\n");
        printf("%d   %s    %.1f   %.1f   %.1f\n",a[i].xuehao,a[i].mingzi,a[i].kecheng[1],a[i].kecheng[2],a[i].kecheng[3]);
        for(;;){//对某一科目进行修改
            printf ("1.语文 2.数学 3.外语 4.退出\n");
            scanf("%d",&z);   
            if(z>=1&&z<=3){//修改语文成绩
                if(z==1){
                    system("cls");
                    for(;;){
                        printf ("输入语文分数0~100:\n");
                        scanf("%f",&a[s].kecheng[1]);
                        if(a[s].kecheng[1]>=0&&a[s].kecheng[1]<=100) printf("修改成功\n");
                    }   
                }
                if(z==2){
                    for(;;){
                        printf("输入数学分数0~100:\n");
                        scanf("%f",&a[s].kecheng[2]);
                        if(a[s].kecheng[2]>=0&&a[s].kecheng[2]<=100) printf("修改成功\n");
                    }
                }
                if(z==3){
                    for(;;){
                            printf("输入外语分数0~100:\n");
                            scanf("%f",&a[s].kecheng[3]);
                            if(a[s].kecheng[3]>=0&&a[s].kecheng[3]<=100) printf("修改成功\n");   
                    }
                }
                if(z==4){
                    break;
                }
            }
        }
    }
    else printf ("密码错误,请重新输入。\n");
}
void pinjun(){//各科平均成绩
    float sum1=0,sum2=0,sum3=0,ave1,ave2,ave3;
    int j=0,k=0,l=0,N;
    for(int i=1;i<=N;i++){//计算平均成绩
        sum1=sum1+a[i].kecheng[1]; j++;
        sum2=sum2+a[2].kecheng[2]; k++;
        sum3=sum3+a[3].kecheng[3]; l++;
    }
    ave1=sum1/j;ave2=sum2/k;ave3=sum3/l;
    printf("语文的平均成绩:%.2f \n 数学的平均成绩:%.2f \n 外语的平均成绩:%.2f\n",ave1,ave2,ave3);
    int m=0,n=0,p=0;
    for(i=1;i<=N,i++){//计算超过的人数
        while(a[i].kecheng[1]>ave1)  m++;
        while(a[i].kecheng[2]>ave2)  n++;
        while(a[i].kecheng[3]>ave3)  p++;
    }
    printf("超过语文平均成绩的人数是:%d\n 超过数学平均成绩的人数是:%d\n 超过外语平均成绩的人数是:%d\n",m,n,p);
}
int bye(){//退出系统,也不懂
    int ch;
    ch=getchar();
    return 0;
}
int main(){
    for (;;){
        switch(menu()){
            case 'a':luru();//成绩录入
            system("pause");//按任意键继续
            system("cls");
            break;
            case 'b':xianshi();//成绩显示
            system("pause");
            system("cls");
            break;
            case 'c':baocun();//成绩保存  不会写。
            system("pause");
            system("cls");
            break;
            case 'd':paixu();//成绩排序   
            system("pause");
            system("cls");
            break;
            case 'e':xiugai();//成绩修改
            system("pause");
            system("cls");
            break;
            case 'f':pinjun();//成绩统计
            system("pause");
            system("cls");
            break;
            case 'g':bye();//退出系统
            return 0;
            }
        }
    }
//技术要求:
//题目9:班级成绩管理系统
//对一个有N个学生的班级,每个学生有M门课程。该系统实现对班级成绩的录入、显示、修改、排序、保存等操作的管理。功能要求:
//(1)本系统采用一个结构体数组,每个数据的结构应当包括:学号、姓名、M门课程名称。 (2)本系统显示这样的菜单:
// 请选择系统功能项: a、成绩录入 b、成绩显示 c、成绩保存 d、成绩排序
//e、成绩修改(要求先输入密码) f、成绩统计  g、退出系统
//1)显示每门课程成绩最高的学生的基本信息 2)显示每门课程的平均成绩  
//3)显示超过某门课程平均成绩的学生人数  
//(4)执行一个具体的功能之后,程序将重新显示菜单。 (5)将学生成绩保存到文件中。
 
搜索更多相关主题的帖子: 管理程序 include mingzi 结构体 课程 
2016-11-08 20:23
请多关照
Rank: 2
等 级:论坛游民
帖 子:12
专家分:20
注 册:2016-11-3
得分:0 
回复 2楼 syl411120229
我学了1个月左右吧。还是新手。不知道那些大神为什么不帮一下小新手呢。。。提点一下后辈多好

我是一个很笨很笨的新手,请多多关照,谢谢~
2016-11-08 21:38



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-470911-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019646 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved