大一上学期写的学生成绩管理系统

简介: 大一上学期写的学生成绩管理系统

今天在电脑上偶然看到自己大一上学期写的学生管理系统,当时写是因为C与看课本的课后习题有这个,老师没有让写,我当时为了挑战一下自己,就开始搞,前前后后修改了很多次,最后终于完成了。嘿嘿,特地来分享一下。

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define N 30
#define MAX 150
void InputRecord(int num[], char name[][MAX], int score[], int n);
int CaculateTotal(int score[], int n);
float CaculateAverage(int n, int sum);
void DescendingSort(int num[], char name[][MAX], int score[], int n);
void AscendingSort(int num[], char name[][MAX], int score[], int n);
void AscendingNumSort(int num[], char name[][MAX], int score[], int n);
void AscendingNameSort(int num[], char name[][MAX], int score[], int n);
void LinNumSearch(int num[], char name[][MAX], int score[], int n);
void LinNameSearch(int num[], char name[][MAX], int score[], int n);
void StatisticAnalysis(int score[], int n);
void ListRecord(int num[], char name[][MAX], int score[], int n, int sum, int aver);
void Swap(int *x, int *y);
int main()
{
    int num[N], n, op, score[N], sum;
    char name[N][MAX];
    float aver;
    printf("How many students:\n");
    scanf("%d", &n);
    printf("1.Input record\n2.Caculate total and average score of course\n3.Sort in descending order by score\n4.Sort in ascending order by score\n5.Sort in ascending order by number\n6.Sort in dictionary order by name\n7.Search by number\n8.Search by name\n9.Statistic analysis\n10.List record\n0.Exit\nPlease enter your choice\n");
    do
    {
        printf("Input option:\n");
        scanf("%d", &op);
        switch (op)
        {
        case 1:
            InputRecord(num, name, score, n);
            break;
        case 2:
            aver = CaculateAverage(n, CaculateTotal(score, n));
            break;
        case 3:
            DescendingSort(num, name, score, n);
            break;
        case 4:
            AscendingSort(num, name, score, n);
            break;
        case 5:
            AscendingNumSort(num, name, score, n);
            break;
        case 6:
            AscendingNameSort(num, name, score, n);
            break;
        case 7:
            LinNumSearch(num, name, score, n);
            break;
        case 8:
            LinNameSearch(num, name, score, n);
            break;
        case 9:
            StatisticAnalysis(score, n);
            break;
        case 10:
            sum = CaculateTotal(score, n);
            aver = CaculateAverage(n, sum);
            ListRecord(num, name, score, n, sum, aver);
            break;
        case 0:
            exit(0);
        }
    } while (op >= 0);
    return 0;
}
void InputRecord(int num[], char name[][MAX], int score[], int n)
{
    int i;
    for (i = 0; i < n; i++)
    {
        scanf("%d%s%d", &num[i], &name[i], &score[i]);
    }
}
int CaculateTotal(int score[], int n)
{
    int i;
    int total = 0;
    for (i = 0; i < n; i++)
    {
        total += score[i];
    }
    return total;
}
float CaculateAverage(int n, int sum)
{
    return (float)sum / n;
}
void DescendingSort(int num[], char name[][MAX], int score[], int n)
{
    int i, j;
    char temp[MAX];
    for (i = 0; i < n - 1; i++)
    {
        for (j = 1; j < n; j++)
        {
            if (score[j] > score[i])
            {
                Swap(&score[j], &score[i]);
                Swap(&num[j], &num[i]);
                strcpy(temp, name[i]);
                strcpy(name[i], name[j]);
                strcpy(name[j], temp);
            }
        }
    }
    for (i = 0; i < n; i++)
    {
        printf("num:%d name:%s score:%d\n", num[i], name[i], score[i]);
    }
}
void Swap(int *x, int *y)
{
    int temp;
    temp = *x;
    *x = *y;
    *y = temp;
}
void AscendingSort(int num[], char name[][MAX], int score[], int n)
{
    int i, j;
    char temp[MAX];
    for (i = 0; i < n - 1; i++)
    {
        for (j = 1; j < n; j++)
        {
            if (score[j] < score[i])
            {
                Swap(&score[j], &score[i]);
                Swap(&num[j], &num[i]);
                strcpy(temp, name[i]);
                strcpy(name[i], name[j]);
                strcpy(name[j], temp);
            }
        }
    }
    for (i = 0; i < n; i++)
    {
        printf("num:%d name:%s score:%d\n", num[i], name[i], score[i]);
    }
}
void AscendingNumSort(int num[], char name[][MAX], int score[], int n)
{
    int i, j;
    char temp[MAX];
    for (i = 0; i < n - 1; i++)
    {
        for (j = 1; j < n; j++)
        {
            if (num[j] < num[i])
            {
                Swap(&score[j], &score[i]);
                Swap(&num[j], &num[i]);
                strcpy(temp, name[i]);
                strcpy(name[i], name[j]);
                strcpy(name[j], temp);
            }
        }
    }
    for (i = 0; i < n; i++)
    {
        printf("num:%d name:%s score:%d\n", num[i], name[i], score[i]);
    }
}
void AscendingNameSort(int num[], char name[][MAX], int score[], int n)
{
    int i, j;
    char temp[MAX];
    for (i = 0; i < n - 1; i++)
    {
        for (j = 1; j < n; j++)
        {
            if ((strcmp(name[j], name[i])) < 0)
            {
                Swap(&score[j], &score[i]);
                Swap(&num[j], &num[i]);
                strcpy(temp, name[i]);
                strcpy(name[i], name[j]);
                strcpy(name[j], temp);
            }
        }
    }
    for (i = 0; i < n; i++)
    {
        printf("num:%d name:%s score:%d\n", num[i], name[i], score[i]);
    }
}
void LinNameSearch(int num[], char name[][MAX], int score[], int n)
{
    int i;
    char na[MAX];
    printf("Input the searching name:");
    scanf("%s", na);
    for (i = 0; i < n; i++)
    {
        if ((strcmp(name[i], na)) == 0)
            printf("no=%d\tscore=%d\n", i + 1, score[i]);
    }
}
void LinNumSearch(int num[], char name[][MAX], int score[], int n)
{
    int x, i;
    printf("Input the searching ID:");
    scanf("%d", &x);
    for (i = 0; i < n; i++)
    {
        if (num[i] == x)
        {
            printf("no:%d\tscore=%d\n", i + 1, score[i]);
        }
    }
}
void StatisticAnalysis(int score[], int n)
{
    int i, A = 0, B = 0, C = 0, D = 0, E = 0;
    for (i = 0; i < n; i++)
    {
        if (score[i] >= 0 && score[i] <= 59)
        {
            A++;
        }
        else if (score[i] >= 60 && score[i] <= 69)
        {
            B++;
        }
        else if (score[i] >= 70 && score[i] <= 79)
        {
            C++;
        }
        else if (score[i] >= 80 && score[i] <= 89)
        {
            D++;
        }
        else if (score[i] >= 90 && score[i] <= 100)
        {
            E++;
        }
    }
    printf("90~100:%d\trate:%f %\n", E, (float)E / n * 100.0);
    printf("80~89:%d\trate:%f %\n", D, (float)D / n * 100.0);
    printf("70~79:%d\trate:%f %\n", C, (float)C / n * 100.0);
    printf("60~69:%d\trate:%f %\n", B, (float)B / n * 100.0);
    printf("0~59:%d\trate:%f %\n", A, (float)A / n * 100.0);
}
void ListRecord(int num[], char name[][MAX], int score[], int n, int sum, int aver)
{
    int i;
    for (i = 0; i < n; i++)
    {
        printf("num=%d\tname=%s\tscore=%d\n", num[i], name[i], score[i]);
    }
    printf("sum=%d\taverage=%d\n", sum, aver);
}
相关文章
|
传感器 人工智能 运维
当电力运维遇上元宇宙:AR智能巡检新纪元
随着新型电力系统发展,传统人工巡检已难适应复杂设备需求。AR眼镜凭借虚实融合、实时交互特性,助力电力运维提效保安全,广泛应用于变电站巡检、高危作业防护与故障处置,显著缩短响应时间,推动运维模式向智能预防转型。
|
网络协议 Java 数据建模
docker-maven-plugin:自动构建Maven多模块的Docker镜像,并推送到Docker Registry或阿里云
docker-maven-plugin:自动构建Maven多模块的Docker镜像,并推送到Docker Registry或阿里云
docker-maven-plugin:自动构建Maven多模块的Docker镜像,并推送到Docker Registry或阿里云
|
并行计算 数据可视化 PyTorch
PyTorch自定义CUDA算子教程与运行时间分析(一)
最近因为工作需要,学习了一波CUDA。这里简单记录一下PyTorch自定义CUDA算子的方法,写了一个非常简单的example,再介绍一下正确的PyTorch中CUDA运行时间分析方法。
2127 0
|
2天前
|
人工智能 JSON 安全
|
2天前
|
云安全 人工智能 安全
|
3天前
|
人工智能 自然语言处理 数据挖掘
Qwen3.8-Max-Preview深度全解析:2.4万亿参数旗舰MoE模型+Token Plan限时优惠完整落地指南
2026年7月,全新旗舰级混合专家大模型Qwen3.8-Max-Preview正式开放抢先体验,作为通义千问Qwen3系列规格最高、综合推理能力顶尖的新一代模型,该模型总参数量达到2.4万亿(2.4T),是当前线上可调用的原生多模态旗舰模型,综合推理水准对标海外顶级Fable 5模型,在复杂工程开发、长文档深度分析、多步骤智能体自治、跨境多语言创作、海量数据挖掘五大高难度业务场景实现跨越式性能提升。
674 0
|
3天前
|
人工智能 自然语言处理 数据挖掘
最新版通义千问(Qwen3.8-Max-Preview)功能介绍
2026年,通义千问正式推出全新旗舰级大模型 **Qwen3.8-Max-Preview 预览版**,作为首款突破万亿参数规格的新一代基座模型,该模型总参数量达到**2.4万亿**,采用全新迭代的MoE混合专家架构,综合推理性能、长文本处理、多模态理解、复杂任务规划能力全面超越前代Qwen3.7-Max版本,整体实力跻身全球第一梯队,可对标海外顶级旗舰模型,是当前面向复杂工程开发、多智能体协同、超长文档解析、专业办公自动化场景的最优国产基座模型。
707 0
|
4天前
|
人工智能
Qwen3.8抢先体验!正式版即将发布并开源!
千问Qwen3.8即将开源,参数达2.4T,进化速度以“天”计,实力媲美Fable 5。预览版Qwen3.8-Max已上线阿里Token Plan等平台,限时优惠:日间Credits低至1折,夜间更优,个人/团队版月付仅35元起!
646 25

热门文章

最新文章