【无标题】

使用结构体完成学生(学号、姓名、性别、成绩)管理系统

1> 使用菜单实现

2> 功能1:完成对学生信息的录入,确定人数,完成输入

2> 功能2:完成对学生信息的输出

3> 功能3:输出成绩最高和最低学生的信息

4> 功能4:输出学生的总成绩和平均成绩

5> 功能5:对学生信息按成绩进行排序,根据传入的升降序,确定排序功能、

6> 功能6:提示并输入要查找的学生名字,查找该名字是否存在于该班级

7> 功能0:退出

#include<stdio.h>
#include<string.h>
#define MAX 30
struct Stu
{
    int StuNum;
    char Name[20];
    char Gender[20];
    double score;
};
void caidan() {
    printf("\t\t\t\t*******************学生管理系统*************************\t\t\t\n");
    printf("\t\t\t\t***功能1:输入学生信息***********功能2:输出学生信息******\t\t\t\n");
    printf("\t\t\t\t***功能3:最优和最差学生信息**** 功能4:学生成绩总和和平均成绩\t\n");
    printf("\t\t\t\t***功能5:学生信息排序***********功能6:查找学生信息******\t\t\t\n");
    printf("\t\t\t\t*******************功能0:退出*************************\t\t\t\n");
}
void fun1(struct Stu *arr, int *n) {
    printf("请输入录入学生人数:");
    scanf("%d", n);
    for (int i=0;i<*n;i++)
    {
        printf("请输入第%d名学生学号",i+1);
        scanf("%d", &arr[i].StuNum);
        printf("请输入第%d名学生姓名", i + 1);
        scanf("%s", arr[i].Name);
        printf("请输入第%d名学生性别", i + 1);
        scanf("%s", arr[i].Gender);
        printf("请输入第%d名学生成绩", i + 1);
        scanf("%lf", &arr[i].score);
    }
    printf("学生信息录入成功!");
    printf("\n");
    
}
void fun2(struct Stu* arr, int n) {
    printf("学号\t姓名\t性别\t成绩\t\n");
    for (int j = 0; j < n; j++) {
        printf("%d\t%s\t%s\t%.1lf\t\n", arr[j].StuNum, arr[j].Name, arr[j].Gender, arr[j].score);
    }
}
void fun3(struct Stu* arr, int n) {
    int a,b;
    for (int i = 0; i < n; i++) {
        if (arr[i].score < arr[i+1].score) {
            a = i + 1;
        }
    }
    for (int i = 0; i < n; i++) {
        if (arr[i].score >arr[i + 1].score) {
            b = i + 1;
        }
    }
    printf("班上最牛逼的学生信息:");
    printf("%d\t%s\t%s\t%.1lf\t\n", arr[a].StuNum, arr[a].Name, arr[a].Gender, arr[a].score);
    //printf("傻子学生信息:");
    //printf("%d\t%s\t%s\t%.1lf\t\n", arr[b].StuNum, arr[b].Name, arr[b].Gender, arr[b].score);
    
}
void fun4(struct Stu* arr, int n) {
    double sum=0;
    for (int i = 0; i < n; i++) {
        sum =sum+arr[i].score;
    }
    double avg = sum / n;
    printf("sum=%.1lf and avg=%.1lf\n", sum, avg);
}
void fun5(struct Stu* arr, int  n,int k) {
    for (int i = 1; i < n; i++)  
    {
        for (int j = 0; j < n - i; j++)
        {
            if (k == 1) {
                if (arr[j].score > arr[j + 1].score)
                {
                    
                    int temp = arr[j].score;
                    arr[j].score = arr[j + 1].score;
                    arr[j + 1].score = temp;
                }
            }
            else if (k == 0) {
                if (arr[j].score < arr[j + 1].score)
                {
                    int temp = arr[j].score;
                    arr[j].score = arr[j + 1].score;
                    arr[j + 1].score = temp;
                }
            }

        }
    }
    printf("学号\t姓名\t性别\t成绩\t\n");
    for (int j = 0; j < n; j++) {
        printf("%d\t%s\t%s\t%.1lf\t\n", arr[j].StuNum, arr[j].Name, arr[j].Gender, arr[j].score);
    }
}
void fun6(struct Stu* arr, int n, char name[]) {
    int k = 0;
    for (int j = 0; j < n; j++) {
        int b = strcmp(arr[j].Name, name);
        switch (b) {
        case 0: {
            printf("在");
        }goto END;
        }
        
    }
    printf("不在");
END:    
    printf("\n");
}
int main() {
    int number = 0;
    int a = 0;
    struct Stu arr[MAX];
    while (1) {
        caidan();
        printf("请输入您的选项:");
        scanf("%d", &a);
        switch (a)
        {
           case 1: {
               fun1(arr, &number);
           }break;
           case 2: {
               fun2(arr, number);
           }break;
           case 3: {
               fun3(arr, number);
           }break;
           case 4: {
               fun4(arr, number);
           }break;
           case 5: {
               int i;
               printf("请输入0(降序)或1(升序):");
               scanf("%d", &i);
               fun5(arr, number,i);
           }break;
           case 6: {
               char name[20] = "";
               printf("请输入要查询的学生姓名:");
               scanf("%s", name);
               fun6(arr, number,name);
               
           }break;
           case 0: goto END;
        default:
            printf("您输入有误");
        }

    }
END:
    printf("\n");
}

  • 20
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值