学生管理系统

前言 

这是博主在培训班培训时做的一个小项目学生管理系统,因为当时博主基础比较弱,只能实现老师要求的基础功能,所以博主做的这个项目看起来很鸡肋,但对博主来说已经很成功了,毕竟来培训之前博主没有任何编程基础。额外的功能像增删改查什么的由于时间原因当时没有实现,博主会在培训结束的时候继续优化的,争取靠自己手敲。

head.h 头文件代码

#include <stdio.h>
#ifndef __HEAD_H__
#define __HEAD_H__
typedef struct DataType //定义一个名为DataType的结构体并重命名为DT用来组织和管理学生成绩
{
    int id;   //学生学号
    float chinese; //语文成绩
    float math;    //数学成绩
    float english; //英语成绩
    float average; //平均分
} DT;
DT stu[100];
extern int StudentCount;

//声明子函数
void Help();
void Type();
void List();
void Average();
void Sort();
void Search();
#endif

main.c 主函数代码 

#include <stdio.h>
#include<stdlib.h>
#include"head.h"
//定义全局变量
int StudentCount = 0; //定义学生人数变量,初始化学生人数
DT stu[100];          //定义DT类型的数组
char IN;  //定义输入指令变量

int main(int argc, char const *argv[])
{
    Help();
    while (1)
    {
        printf("请输入命令=");
        scanf(" %c", &IN);
        getchar();
        if (IN == 'T')
        {
            Type(); //调用Type子函数录入成绩
            continue;
        }
        else if (IN == 'L')
        {
            if (StudentCount == 0)
            {
                printf("成绩表为空! 请先使用命令 T 录入学生成绩\n");
            }
            else
            {
                List(); //调用List子函数输出成绩表
                continue;
            }
        }
        else if (IN == 'A')
        {
            if (StudentCount == 0)
            {
                printf("成绩表为空! 请先使用命令 T 录入学生成绩\n");
            }
            else
            {
                Average(); //调用Average子函数计算平均分
                continue;
            }
        }
        else if (IN == 'P')
        {
            if (StudentCount == 0)
            {
                printf("成绩表为空! 请先使用命令 T 录入学生成绩\n");
            }
            else
            {
                Sort(); //调用Sort子函数按平均分由高到低排序
                continue;
            }
        }
        else if (IN == 'S')
        {
            if (StudentCount == 0)
            {
                printf("成绩表为空! 请先使用命令 T 录入学生成绩\n");
            }
            else
            {
                Search(); //调用Search子函数查询学生成绩
                continue;
            }
        }
        else if (IN == 'C')
        {
            system("clear");
            continue;
        }
        else if (IN == 'H')
        {
            Help();
            continue;
        }
        else if (IN == 'Q')
        {
            printf("Press any key to continue\n");
            break;
        }
    }
}

fun.c 功能函数代码

#include <stdio.h>
#include "head.h"
void Help() //系统帮助菜单函数,用来显示系统帮助菜单(即命令菜单)
{
    printf("\t\t\t\t*******************************************\n");
    printf("\t\t\t\t  *\t学生成绩管理系统———帮助菜单\t*  \n");
    printf("\t\t\t\t*******************************************\n");
    printf("\t\t\t\t  *\t  H = 显示帮助菜单\t\t*  \n");
    printf("\t\t\t\t  *\t  T = 成绩录入\t\t\t*  \n");
    printf("\t\t\t\t  *\t  A = 计算学生平均分\t\t*  \n");
    printf("\t\t\t\t  *\t  L = 列出成绩表\t\t*  \n");
    printf("\t\t\t\t  *\t  P = 按平均成绩由高到低排序\t*  \n");
    printf("\t\t\t\t  *\t  S = 按学号查询学生成绩\t*  \n");
    printf("\t\t\t\t  *\t  C = 清屏\t\t\t*  \n");
    printf("\t\t\t\t  *\t  Q = 退出系统\t\t\t*  \n");
    printf("\t\t\t\t*******************************************\n");
    printf("\t\t\t\t  *  Copyright <c> 2024.08.09 By 姓名   *  \n");
    printf("\t\t\t\t*******************************************\n");
    printf("\n");
}
void Type() //定义一个录入成绩的子函数
{
    DT s;
    printf("请输入学生人数:");
    scanf("%d", &StudentCount);
    printf("请输入%d名学生的三门课成绩:\n", StudentCount);
    printf("学号 语文 数学 外语\n");
    for (int i = 0; i < StudentCount; i++)
    {
        s.id = i + 1;
        printf("%d", s.id);
        scanf("%f%f%f", &s.chinese, &s.math, &s.english);
        stu[i].id = s.id;
        stu[i].chinese = s.chinese;
        stu[i].math = s.math;
        stu[i].english = s.english;
    }
}

void List()
{
    printf("学生成绩如下:\n");
    printf("学号\t语文\t数学\t外语\t平均分\n");
    for (int i = 0; i < StudentCount; i++)
    {
        printf("%d\t%.1f\t%.1f\t%.1f\t%.1f\n", stu[i].id, stu[i].chinese, stu[i].math, stu[i].english, stu[i].average);
    }
}
void Average() //定义一个计算学生成绩平均分的子函数
{
    for (int i = 0; i < StudentCount; i++)
    {
        stu[i].average = (stu[i].chinese + stu[i].math + stu[i].english) / 3;
    }
    printf("平均分已计算。请使用命令 L 查看\n");
}
void Sort() //定义一个按平均分由高到低排序的函数,使用冒泡排序思想
{
    for (int j = 0; j < StudentCount - 1; j++)
    {
        for (int i = 0; i < StudentCount - 1 - j; i++)
        {
            if (stu[i].average < stu[i + 1].average)
            {
                DT tem = stu[i];
                stu[i] = stu[i + 1];
                stu[i + 1] = tem;
            }
        }
    }
    printf("完成排序。请使用命令 L 查看\n");
}
void Search() //定义一个查询学生成绩的函数
{
    int j;
    printf("输入要查询的学生学号: ");
    scanf("%d", &j);
    for (int i = 0; i < StudentCount; i++)
    {
        if (stu[i].id == j)
        {
            printf("%d\t%.1f\t%.1f\t%.1f\t%.1f\n", stu[i].id, stu[i].chinese, stu[i].math, stu[i].english, stu[i].average);
        }
    }
}

主界面效果展示 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

-Turbo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值