学生成绩管理系统

  思路

        一开始学习函数的时候没有学好,所以在写这个管理系统的时候没有用函数,所以显的代码非常的臃肿,之后我会再发一个用函数写的学生管理系统。首先我写了一个结构体数组用来存储学生的信息,主函数里用的switch case来实现功能,这个学生管理系统的功能有添加信息、修改信息、查找信息和删除信息。先上效果图(代码在最下方)

效果

显示界面

 未录入信息时的操作

当我们未录入信息时选择查找信息时,因为里面没有数据,所以当我们输入学号查找时会显示“查无此人”,未录入信息时无论是选择修改信息还删除信息效果都是一样的。

 录入信息

 我们可以多次录入信息,直到我们不想再录入,这时我们输入完一个信息后再输入0就会返回操作界面了

 查找信息

输入学号查找即可,输入信息一样都可以继续查找,也可以主动返回操作界面。

 修改信息

如图所示,我把小红的信息删除了,添加了小李的信息,所以在查找信息时找不到小红的信息了,但我们能查到小李的信息了。

 删除信息

删除信息后还可以继续添加信息,因为我写了一个变量来计算结构体数组的长度,当删除后就减一,添加信息后就加一。

 代码

#include <stdio.h>
#include <string.h>
struct student //定义结构体
{
    char name[20];
    int stu_number;
    float chinese;
    float math;
    float english;
    float _avg;
} stu[3];

int main(int argc, char const *argv[])
{
    int number;
    int number_1;
    int x = 0, y, z, t,d;
    int exit_1 = 1;
    int exit_2 = 1;
    float avg_ch,avg_math,avg_eng,avg_z;
    float sum_avg=0;
    float ch,ma,en,av;
    char na[20];
    int nu;

    while (exit_1)
    {
        printf("------------------------------------------------------------------------\n");
        printf("1.录入或添加信息       2.查找信息      3.修改信息     4.删除信息        5.退出\n");
        printf("------------------------------------------------------------------------\n");
        printf("请输入你的操作:");
        scanf("%d", &number);
        switch (number)
        {
        case 1: //录入或添加信息
            exit_2 = 1;
            for (; x < 50 && exit_2; x++)
            {
                printf("请输入第%d位同学的信息\n", x + 1);
                printf("请输入姓名:");
                scanf("%s", stu[x].name);
                printf("请输入学号:");
                scanf("%d", &stu[x].stu_number);
                printf("请输入语文成绩:");
                scanf("%f", &stu[x].chinese);
                printf("请输入数学成绩:");
                scanf("%f", &stu[x].math);
                printf("请输入英语成绩:");
                scanf("%f", &stu[x].english);
                stu[x]._avg = (stu[x].chinese + stu[x].math + stu[x].english) / 3;
                printf("退出请输入0,任意键继续输入:");
                scanf("%d", &exit_2);
                printf("\n");
            }
            break;
        case 2: //查找信息
            exit_2 = 1;
            while (exit_2)
            {
                printf("请输入要查找学生的学号:");
                scanf("%d", &number_1);
                t = 1;
                for (y = 0; y <= x; y++)
                {
                    if (stu[y].stu_number == number_1)
                    {
                        t = 0;
                        printf("姓名:%s\n", stu[y].name);
                        printf("学号:%d\n", stu[y].stu_number);
                        printf("语文成绩:%.2f\n", stu[y].chinese);
                        printf("数学成绩:%.2f\n", stu[y].math);
                        printf("英语成绩:%.2f\n", stu[y].english);
                        printf("平均成绩:%.2f\n", stu[y]._avg);
                        printf("\n");
                    }
                    else if (y == x  && t == 1)
                    {
                        printf("查无此人!");
                    }
                }

                printf("退出请输入0,任意键继续输入:");
                scanf("%d", &exit_2);
                printf("\n");
            }

            break;
        case 3: //修改信息
            exit_2 = 1;
            while (exit_2)
            {
                t = 1;
                printf("请输入要修改信息的学生的学号:");
                scanf("%d", &number_1);
                for (y = 0; y <= x; y++)
                {
                    if (stu[y].stu_number == number_1)
                    {
                        t = 0;
                        printf("请输入姓名:");
                        scanf("%s", stu[y].name);
                        printf("请输入学号:");
                        scanf("%d", &stu[y].stu_number);
                        printf("请输入语文成绩:");
                        scanf("%f", &stu[y].chinese);
                        printf("请输入数学成绩:");
                        scanf("%f", &stu[y].math);
                        printf("请输入英语成绩:");
                        scanf("%f", &stu[y].english);
                        stu[x]._avg = (stu[y].chinese + stu[y].math + stu[y].english) / 3;
                    }
                    else if (y == x && t == 1)
                    {
                        printf("查无此人!");
                    }
                }

                printf("退出请输入0,任意键继续输入:");
                scanf("%d", &exit_2);
                printf("\n");
            }

            break;
        case 4: //删除信息
            exit_2=1;
            while (exit_2)
            {

                printf("请输入你要删除的学生的学号");
                scanf("%d", &number_1);
                t = 0;
                for (y = 0; y <= x; y++)
                {
                    if (stu[y].stu_number == number_1)
                    {
                        t = 1;
                        for (z = y; z < x; z++)
                        {
                            stu[z] = stu[z + 1];
                        }
                        x = x - 1;//将x控制在有信息的最后一位
                    }
                    else if (y == x && t == 1)
                    {
                        printf("查无此人!");
                    }
                }
                printf("退出请输入0,任意键继续输入:");
                scanf("%d", &exit_2);
                printf("\n");
            }

            break;
        case 5: //退出
            exit_1 = 0;
            break;
        default:

            break;
        }
    }

    return 0;
}

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值