c语言总结小项目,学生管理系统

学完C语言之后的一个小项目,学生管理系统。自己接触编程的时间也不长,写的肯定比大佬写的繁琐,也有一些不足。从刚开始拿到要求无从下手,看了好几遍才开始动手写,界面,定义,函数一点点抠出来,如果写出来与要求不符再一点点改,到最后写完整个程序,能完整的实现出来还是很有成就感的,发出来纪念一下。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 100
struct student
{
    int id;
    float yu;
    float shu;
    float ying;
    float average;
};
struct student stu1[N];//定义结构体数组,用于存放学生信息
int n = 0;//学号
int i, s;//i循环用,s按学号查询学生成绩用
void help();//菜单函数
void type();//输入学生信息函数
void list();//列出成绩表
void average();//计算学生平均分
void sort();//按学生平均分进行排序
void search();//按学号查询学生成绩

int main(int argc, char const *argv[])
{
    char a;
    help();
    while (1)
    {

        printf("请输入命令");
        scanf("%c", &a);
        switch (a)
        {
        case 'T':
            type();
            break;
        case 'L':
            list();
            break;
        case 'A':
            average();
            break;
        case 'P':
            sort();
            break;
        case 'S':
            search();
            break;
        case 'C':
            system("clear");
            break;
        case 'H':
            help();
            break;
        case 'Q':
            printf("press any key to continue\n");
            return 0;
        default:
            printf("输入错误,请按照提示菜单输入\n");
            break;
            return 0;
        }
        getchar();
    }
    return 0;
}
void help()
{
    printf("**********************************************\n");
    printf("  *      学生成绩管理系统————帮助菜单      *  \n");
    printf("**********************************************\n");
    printf("  *        H = 显示帮助菜单                *  \n");
    printf("  *        T = 成绩录入                    *  \n");
    printf("  *        A = 计算学生平均分              *  \n");
    printf("  *        L = 列出成绩表                  *   \n");
    printf("  *        P = 按平均成绩由高到底排序      *  \n");
    printf("  *        S = 按学号查询学生成绩          *  \n");
    printf("  *        C = 清屏                        *  \n");
    printf("  *        Q = 退出系统                    *  \n");
    printf("*********************************************\n");
    printf("  *   Copyright <C> 2023.02.10 by 袁光辉   *  \n");
    printf("*********************************************\n");
}
void type()
{
    printf("请输入学生人数:");
    scanf("%d", &n);
    printf("请输入%d名学生的三门课成绩\n", n);
    printf("学号  语文  数学  外语\n");
    for (i = 0; i < n; i++)
    {
        stu1[i].id = i + 1;
        printf("%d     ", stu1[i].id);
        scanf("%f %f %f", &stu1[i].yu, &stu1[i].shu, &stu1[i].ying);
    }
}
void list()
{
    if (n == 0)
    {
        printf("成绩表为空!请先输入T录入学生成绩\n");
    }
    else
    {
        printf("学生成绩如下:\n");
        printf("学号  语文  数学  外语  平均分\n");
        for (i = 0; i < n; i++)
        {
            printf("%d   %.2f  %.2f  %.2f  %.2f\n", stu1[i].id, stu1[i].yu, stu1[i].shu, stu1[i].ying, stu1[i].average);
        }
    }
}
void average()
{
    if (n == 0)
    {
        printf("成绩表为空!请先输入T录入学生成绩\n");
    }
    for (i = 0; i < n; i++)
    {
        stu1[i].average = (stu1[i].yu + stu1[i].shu + stu1[i].ying) / 3;
    }
    printf("平均分已计算。请输入命令L查看\n");
}

void sort()
{
    if (n == 0)
    {
        printf("成绩表为空!请先输入T录入学生成绩\n");
    }
    struct student stu2;
    for (i = 0; i < n; i++)
    {
        if (stu1[i].average < stu1[i + 1].average)
        {
            stu2 = stu1[i];
            stu1[i] = stu1[i + 1];
            stu1[i + 1] = stu2;
        }
        if (stu1[i].average < stu1[i + 2].average)
        {
            stu2 = stu1[i];
            stu1[i] = stu1[i + 2];
            stu1[i + 2] = stu2;
        }
        if (stu1[i + 1].average < stu1[i + 2].average)
        {
            stu2 = stu1[i + 1];
            stu1[i + 1] = stu1[i + 2];
            stu1[i + 2] = stu2;
        }
    }
    printf("完成排序。请使用命令L查看\n");
}

void search()
{
    if (n == 0)
    {
        printf("成绩表为空!请先输入T录入学生成绩\n");
    }
    printf("请输入要查询的学生学号");
    scanf("%d", &s);
    for (i = 0; i < n; i++)
    {
        if (stu1[i].id == s)
        {
            printf("学号  语文  数学  外语  平均分\n");
            printf("%d   %.2f  %.2f  %.2f  %.2f\n", stu1[i].id, stu1[i].yu, stu1[i].shu, stu1[i].ying, stu1[i].average);
        }
    }
}

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值