学生管理系统

前言

C语言学完了,知识很多,也很琐碎,学生成绩管理系统对我们而言是一次锻炼的机会,一次让我们将C语言知识融会贯通的机会,通过编程学生成绩管理系统,我们运用了循环、指针、函数等知识,也能让我们更加熟悉了C语言相关知识。话不多说,直接开始。

一、思路

学生成绩管理系统,说难也难,说简单也简单,对于初学者的我们也算一项不小的挑战了,对于这个系统,它的功能等等很多,所以我们需要有一个大概的思路,来让我们更好的完成它。

  1. 流程图

2、代码

根据这个流程图,我们先做好一个大概的框架,然后再一部分一部分的补全即可。

1)登录界面

将学生成绩管理系统的功能键选择的提示信息打印出来,就组成了一个简易的登录界面:

void menu()
{
    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> 2011.06.12 BY 姓名  *\n");
    printf("*********************************************\n");
}

2)功能界面

  1. 成绩录入

void luru()
{
    i=0;
    printf("请输入学生人数:");
    scanf("%d",&j);
    printf("请输入%d名学生的三门课成绩:\n",j);
    printf("学号  语文  数学  外语\n");
    while (i<j)
    {
        scanf("%d %f %f %f",&stu[i].xuehao,&stu[i].yuwen,&stu[i].shuxue,&stu[i].waiyu);
        i++;
    }
    
}
  1. 计算学生平均分

void avg()
{
    for(i=0;i<j;i++)
    {
        stu[i].AVG=(stu[i].yuwen+stu[i].shuxue+stu[i].waiyu)/3;
    }
    printf("平均分已计算。请使用命令L查看。\n");
}
  1. 列出成绩表

void grades()
{
    printf("学生成绩如下:\n");
    printf("学号 语文 数学 外语 平均分\n");
    for(i=0;i<j;i++)
    {
        printf(" %d    %.1f  %.1f   %.1f   %.1f\n",stu[i].xuehao,stu[i].yuwen,stu[i].shuxue,stu[i].waiyu,stu[i].AVG);
    }
}
  1. 按平均成绩由高到低排序

void paixu()
{
    i=0;
    int k;
    struct student tem;
    for(i=0;i<j;i++)
    {
        for(k=i+1;k<j;k++)
        {
            if(stu[i].AVG<stu[k].AVG)
            {   
                tem=stu[i];
                stu[i]=stu[k];
                stu[k]=tem;
            } 
        }  
    }
    printf("完成排序。请使用L命令查看。\n");
}
  1. 按学号查询学生成绩

void chaxun()
{
    int m;
    printf("请输入要查询的学生学号:");
    scanf("%d",&m);
    for(i=0;i<j;i++)
    {
        if(stu[i].shuxue=m)
        {
            printf("学号 语文 数学 外语 平均分\n");
            printf(" %d    %.1f  %.1f   %.1f   %.1f\n",stu[i].xuehao,stu[i].yuwen,stu[i].shuxue,stu[i].waiyu,stu[i].AVG);
        }   
    }
}
  1. 清屏

void qingping()
{
    system("clear");
}
  1. 请退出系统

void tuicu()
{
    t=0;
    printf("Press any key to continue\n");
    return ;
}

3)完整代码

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define N 10000
char ch;
int t=1,j,i;
struct student
{
    int xuehao;
    float yuwen;
    float shuxue;
    float waiyu;
    float AVG;
}stu[N];

void menu()
{
    printf("**********************************************\n");
    printf("     *     学生成绩管理系统----帮助菜单  *\n");
    printf("**********************************************\n");
    printf("     *      H = 显示帮助菜单               *\n");
    printf("     *      T = c成绩录入                 *\n");
    printf("     *      A = 计算学生平均分             *\n");
    printf("     *      L = 列出成绩表                *\n");
    printf("     *      P = 按平均成绩由高到低排序      *\n");
    printf("     *      S = 按学号查询学生成绩         *\n");       
    printf("     *      C = 清屏                     *\n");
    printf("     *      Q = 请退出系统                *\n");
    printf("*********************************************\n");
    printf("     * Copyright <C> 2011.06.12 BY 姓名  *\n");
    printf("*********************************************\n");
}
void luru()
{
    i=0;
    printf("请输入学生人数:");
    scanf("%d",&j);
    printf("请输入%d名学生的三门课成绩:\n",j);
    printf("学号  语文  数学  外语\n");
    while (i<j)
    {
        scanf("%d %f %f %f",&stu[i].xuehao,&stu[i].yuwen,&stu[i].shuxue,&stu[i].waiyu);
        i++;
    } 
}
void avg()
{
    for(i=0;i<j;i++)
    {
        stu[i].AVG=(stu[i].yuwen+stu[i].shuxue+stu[i].waiyu)/3;
    }
    printf("平均分已计算。请使用命令L查看。\n");
}
void grades()
{
    printf("学生成绩如下:\n");
    printf("学号 语文 数学 外语 平均分\n");
    for(i=0;i<j;i++)
    {
        printf(" %d    %.1f  %.1f   %.1f   %.1f\n",stu[i].xuehao,stu[i].yuwen,stu[i].shuxue,stu[i].waiyu,stu[i].AVG);
    }
}
void paixu()
{
    i=0;
    int k;
    struct student tem;
    for(i=0;i<j;i++)
    {
        for(k=i+1;k<j;k++)
        {
            if(stu[i].AVG<stu[k].AVG)
            {   
                tem=stu[i];
                stu[i]=stu[k];
                stu[k]=tem;
            } 
        }  
    }
    printf("完成排序。请使用L命令查看。\n");
}
void chaxun()
{
    int m;
    printf("请输入要查询的学生学号:");
    scanf("%d",&m);
    for(i=0;i<j;i++)
    {
        if(stu[i].shuxue=m)
        {
            printf("学号 语文 数学 外语 平均分\n");
            printf(" %d    %.1f  %.1f   %.1f   %.1f\n",stu[i].xuehao,stu[i].yuwen,stu[i].shuxue,stu[i].waiyu,stu[i].AVG);
        }   
    }
}
void qingping()
{
    system("clear");
}
void tuicu()
{
    t=0;
    printf("Press any key to continue\n");
    return ;
}
int main(int argc, char const *argv[])
{
    menu();
    while (t)
    {
        printf("请输入命令=");
        scanf("%c",&ch);
        getchar();
        switch (ch)
        {
            case 'H':
                menu();
                break;
            case 'T':
                luru();
                break;
            case 'A':
                if(n==0)
                {
                    printf("成绩表为空!请先使用命令T录入学生成绩\n");                                  
                }
                eles
                {
                    avg();                                  
                }
                break;
            case 'L':
                if(n==0)
                {
                    printf("成绩表为空!请先使用命令T录入学生成绩\n");                                  
                }
                eles
                {
                    grades();                                 
                }            
                break;
            case 'P':
                if(n==0)
                {
                    printf("成绩表为空!请先使用命令T录入学生成绩\n");                                  
                }
                eles
                {
                    paixu();                              
                } 
                break;
            case 'S':
                chaxun();
                break;
            case 'C':
            qingping();
                break;
            case 'Q':
                tuicu();
                break;
            default:
                break;
        } 
    }
    return 0;
}
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值