返回列表 回复 发帖

本人菜鸟,求一c

我们就学了点基础但是现在要实训了,有点困难,所以想请大家给点资源,因为本人刚注册的没有c币以后一定会努力的,我们老师要做一个,,1.内容一:学生数据结构的设计,学生成绩数据的输入输出函数
2.内容二:设计每门课的平均成绩函数和本人信息函数
3.内容三:设计每个学生的平均成绩函数和屏幕提示信息函数
4.内容四:设计统计不及格学生名单函数和主函数     。。。。

生成绩管理系统,该系统的需求是:



1. 成绩的录入和显示。



2.每个学生的平均成绩。



3.每门课的平均成绩。



4.每门课不同分数段的人数。



5. 每门课不及格学生的名单。



6.软件编写人员的基本信息。


给你一个参考,还是要自己去改下,自己研究下!
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define N 40
struct x
{

        int code;
        char name[20];
        int score[5];
        int sum;

};

void menu();
void scan(struct x st[],int n);
void print(struct x st[],int n);
void add(struct x st[],int n);
void del(struct x st[],int n);
void checkcode(struct x st[],int n);
void checkname(struct x st[],int n);
void range(struct x st[],int n);
void show(struct x st[],int n);
void main()
{
        char choose;
        int flag=1,i,m;
    struct x st[N+1];
        for(i=0;i<N;i++)
        {
                st.code=0;
                st.sum=0;
        }

        while(flag)
        {
                menu();
                printf("请选择:\n");
                choose=getchar();

                switch(choose)
                {
                case '1':        printf("请输入人数:");
                                        scanf("%d",&m);
                                        scan(st,m);
                                        getchar();getchar();
                                        break;
                case '2':   print(st,N);
                                        getchar();getchar();
                                        break;
                case '3':   add(st,N);
                                        print(st,N);
                                        getchar();getchar();
                                        break;       
                case '4':   del(st,N);
                                        getchar();getchar();
                                        break;
                case '5':   checkcode(st,N);
                                        getchar();getchar();
                                        break;       
                case '6':   checkname(st,N);
                                        getchar();getchar();
                                        break;
                case '7':   range(st,N);
                                        getchar();getchar();
                                        break;
                case '8':   show(st,N);
                                        getchar();getchar();
                                        break;                                                               
                case '0':   flag=0;
                                        printf("\n ********* The End ********** \n");
                                        break;
                default:        printf("\n Wrong Selection! \n");
                                        getchar();
                                        getchar();
                }       
        }
}
void menu()
{
        system("cls");
        printf("\n 学生成绩统计与分析系统 \n");
        printf("\n 菜单\n\n");
        printf("\n 1、输入学生基本信息 \n");
        printf("\n 2、显示学生基本信息 \n");
        printf("\n 3、增加学生基本信息 \n");
        printf("\n 4、删除学生基本信息 \n");
        printf("\n 5、按学号查找学生基本信息 \n");
        printf("\n 6、按姓名查找学生基本信息 \n");
        printf("\n 7、统计 \n");
        printf("\n 8、按总分排序 \n");
        printf("\n 0、结束 \n");
                       
}

void scan(struct x st[],int n)
{
        int i,j;       
        printf("学号 姓名  高数  听说  读写  导论  C程\n");       
        for(i=0;i<n;i++)
        {
                scanf("%d%s",&st.code,&st.name);
                for(j=0;j<5;j++)
                {        scanf("%d",&st.score[j]);
                        st.sum+=st.score[j];
                }
       
        }

}

void print(struct x st[],int n)
{       
        int i,j;
        printf("学号 姓名  高数   听说  读写  导论  C程\n");
        for(i=0;i<n;i++)
                if(st.code!=0)
                {        printf("%d %5s",st.code,st.name);
                        for(j=0;j<5;j++)
                                printf("%6d",st.score[j]);
                        printf("\n");
                }

}

void add(struct x st[],int n)
{
        int i,j;
        printf("请输入要加学生信息:\n");
        for(i=0;i<n;i++)               
                if(st.code==0)
                {
                        scanf("%d%s",&st.code,st.name);
                        for(j=0;j<5;j++)
                        {
                                scanf("%d",&st.score[j]);
                                st.sum+=st.score[j];
                        }
                        break;
                }
       
}

void del(struct x st[],int n)
{
        int co,i;
        printf("请输入要删学生学号:\n");
        scanf("%d",&co);
        for(i=0;i<n;i++)
                if(st.code==co) st.code=0;
        print(st,N);

}

void checkcode(struct x st[],int n)
{
        int co,i,j;
        printf("请输入要查学生学号:\n");
        scanf("%d",&co);
        for(i=0;i<n;i++)
                if(st.code==co)
                {       
                        printf("学号 姓名  高数   听说  读写  导论  C程\n");
                        printf("%d %5s",st.code,st.name);
                        for(j=0;j<5;j++)
                                printf("%6d",st.score[j]);
                        printf("\n");
                        break;
                }
                else
                {
                        printf("NO information!!!");
                        break;
                }

}

void checkname(struct x st[],int n)
{
        int i,j;
        char na[20];
        printf("请输入要查学生姓名:\n");
        scanf("%s",na);
        for(i=0;i<n;i++)
                if(!(strcmp(st.name,na)) && st.code)
                {       
                        printf("学号 姓名  高数   听说  读写  导论  C程\n");
                        printf("%d %5s",st.code,st.name);
                        for(j=0;j<5;j++)
                                printf("%6d",st.score[j]);
                        printf("\n");
                        break;
                }
                else
                {
                        printf("NO information!!!");
                        break;
                }

}       

void range(struct x st[],int n)
{
        int i,j,a[5]={0};
        printf("请输入要统计的科目(0.高数,1.听说,2.读写,3.导论,4.C程):\n");
        scanf("%d",&j);
        for(i=0;i<n;i++)
                if(st.score[j]>=90 && st.score[j]<=100 && st.code!=0) a[0]++;
                else if(st.score[j]>=80 && st.score[j]<=89 && st.code!=0) a[1]++;
                else if(st.score[j]>=70 && st.score[j]<=79 && st.code!=0) a[2]++;
                else if(st.score[j]>=60 && st.score[j]<=69 && st.code!=0) a[3]++;
                else if(st.score[j]<=60 && st.code!=0)a[4]++;
        printf("成绩在90~100、80~89、70~79、60~69、<=60的人数分别为\n");
        for(i=0;i<5;i++)
                printf("%d  ",a);
                printf("\n");
}

void show(struct x st[],int n)
{
        int i,j;
        for(i=0;i<n-1;i++)       
         for(j=0;j<n-1-i;j++)
                 if(st[j].sum<st[j+1].sum)
                 {       
                        st[N]=st[j];
                        st[j]=st[j+1];
                        st[j+1]=st[N];
                 }
        print(st,N);

}
返回列表