在原来作业的基础上添加一个计算平均值和按照平均值排序以及删除指定学号的学生信息

本文介绍了一个使用C++编写的简单学生信息管理系统,包括添加新学生、根据语文、数学和英语成绩排序以及删除学生功能。展示了如何通过结构体和指针操作实现基本数据管理。

代码如下:

#include<stdio.h>

typedef struct student
{
    int num;
    char name[128];
    float Chinese;
    float math;
    float English;
	float avg;
}STU;
int count=0;
int avg(STU *stu);
void shanchu(STU *stu);
void add(STU *stu);
void math(STU *stu);
void chinese(STU *stu);
void english(STU *stu);

int main(int argc, char const *argv[])
{
    STU stu[100];
    int input;
    while(1)
    {
        printf("********功能选择******×*********\n");
        printf("*******1.添加学生信息***********\n");
        printf("*******2.以语文成绩进行排序*****\n");
        printf("*******3.以数学成绩进行排序*****\n");
        printf("*******4.以英语成绩进行排序*****\n");
        printf("*******5.平均分成绩进行排序*****\n");
        printf("*******6.删除学生信息***********\n");
        printf("*******7.退出程序*×*************\n");
        printf("请输入要进行的操作>");
        scanf("%d",&input);
        switch(input)
        {
            case 1:
                add(stu);
                break;
            case 2:
                chinese(stu);
                break;
            case 3:
                math(stu);
                break;
            case 4:
                english(stu);
                break;
            case 5:
				avg(stu);
                break;
            case 6:
				shanchu(stu);
					break;
            case 7:
                printf("程序正常退出\n");
                return 0;
                break;
            default:
                printf("输入错误,请重新输入\n");
                break;

        }
    printf("总共%d个学员:\n",count);
    for(int i=0;i<count;i++)
    {
        printf("学号%d  姓名%s  语文成绩%.2f  数学成绩%.2f  英语成绩%.2f\n",stu[i].num,stu[i].name,stu[i].Chinese,stu[i].math,stu[i].English);
    }
        
    }
    return 0;
}
void add(STU *stu)
{
    int a;
    while(1)
    {
        printf("请输入学生学号:");
        scanf("%d",&stu[count].num);
        printf("请输入学生姓名:");
        scanf("%s",stu[count].name);
        printf("请输入学生语文成绩:");
        scanf("%f",&stu[count].Chinese);
        printf("请输入学生数学成绩:");
        scanf("%f",&stu[count].math);
        printf("请输入学生英语成绩:");
        scanf("%f",&stu[count].English);
        count++;//学生数量+1
        printf("继续添加 1:添加 0:返回菜单");
        scanf("%d",&a);
        if(a!=1)
        break;

    }

}

void shanchu(STU *stu)
{
	int n;
	int i,j;
	printf("请输入你要删除的学生信息的学生号:\n");
	scanf("%d",&n);
	for(i = 0;i<count;i++)
	{
			if(n == stu[i].num)
			{
				for(int j = i;j<count;j++)
				{
					stu[j] = stu[j+1];
					count--;
				}
			}
		}
}

int avg(STU *stu)
{
    int i, j;
	STU tmp;
    for(i = 0; i < count-1; i++)
    {
        for(j = 0; j < count-i-1; j++)
        {
            if((stu[j].English+stu[j].math+stu[j].Chinese)/3< (stu[j+1].English+stu[j+1].math+stu[j+1].Chinese)/3)
            {
                tmp = stu[j];
                stu[j] = stu[j+1];
                stu[j+1] = tmp;
            }
        }
    }

}
void math(STU *stu)
{
    int i, j;
    STU tmp;
    for(i = 0; i < count-1; i++)
    {
        for(j = 0; j < count-i-1; j++)
        {
            if(stu[j].math< stu[j+1].math)
            {
                tmp = stu[j];
                stu[j] = stu[j+1];
                stu[j+1] = tmp;
            }
        }
    }
}
void chinese(STU *stu)
{
    int i, j;
    STU tmp;
    for(i = 0; i < count-1; i++)
    {
        for(j = 0; j < count-i-1; j++)
        {
            if(stu[j].Chinese< stu[j+1].Chinese)
            {
                tmp = stu[j];
                stu[j] = stu[j+1];
                stu[j+1] = tmp;
            }
        }
    }
}
void english(STU *stu)
{
    int i, j;
    STU tmp;
    for(i = 0; i < count-1; i++)
    {
        for(j = 0; j < count-i-1; j++)
        {
            if(stu[j].English< stu[j+1].English)
            {
                tmp = stu[j];
                stu[j] = stu[j+1];
                stu[j+1] = tmp;
            }
        }
    }
}


删除结果如下:

ubuntu@ubuntu:day2$ gcc zy.c 
ubuntu@ubuntu:day2$ ./a.out
********功能选择******×*********
*******1.添加学生信息***********
*******2.以语文成绩进行排序*****
*******3.以数学成绩进行排序*****
*******4.以英语成绩进行排序*****
*******5.平均分成绩进行排序*****
*******6.删除学生信息***********
*******7.退出程序*×*************
请输入要进行的操作>1
请输入学生学号:1
请输入学生姓名:大木
请输入学生语文成绩:95
请输入学生数学成绩:100
请输入学生英语成绩:93
继续添加 1:添加 0:返回菜单1
请输入学生学号:2
请输入学生姓名:小智
请输入学生语文成绩:85
请输入学生数学成绩:76
请输入学生英语成绩:70
继续添加 1:添加 0:返回菜单1
请输入学生学号:3
请输入学生姓名:小霞
请输入学生语文成绩:90
请输入学生数学成绩:70
请输入学生英语成绩:84
继续添加 1:添加 0:返回菜单1
请输入学生学号:4
请输入学生姓名:小刚
请输入学生语文成绩:66
请输入学生数学成绩:82
请输入学生英语成绩:86
继续添加 1:添加 0:返回菜单1
请输入学生学号:5
请输入学生姓名:小姚
请输入学生语文成绩:88
请输入学生数学成绩:88
请输入学生英语成绩:88
继续添加 1:添加 0:返回菜单0
总共5个学员:
学号1  姓名大木  语文成绩95.00  数学成绩100.00  英语成绩93.00
学号2  姓名小智  语文成绩85.00  数学成绩76.00  英语成绩70.00
学号3  姓名小霞  语文成绩90.00  数学成绩70.00  英语成绩84.00
学号4  姓名小刚  语文成绩66.00  数学成绩82.00  英语成绩86.00
学号5  姓名小姚  语文成绩88.00  数学成绩88.00  英语成绩88.00
********功能选择******×*********
*******1.添加学生信息***********
*******2.以语文成绩进行排序*****
*******3.以数学成绩进行排序*****
*******4.以英语成绩进行排序*****
*******5.平均分成绩进行排序*****
*******6.删除学生信息***********
*******7.退出程序*×*************
请输入要进行的操作>2
总共5个学员:
学号1  姓名大木  语文成绩95.00  数学成绩100.00  英语成绩93.00
学号3  姓名小霞  语文成绩90.00  数学成绩70.00  英语成绩84.00
学号5  姓名小姚  语文成绩88.00  数学成绩88.00  英语成绩88.00
学号2  姓名小智  语文成绩85.00  数学成绩76.00  英语成绩70.00
学号4  姓名小刚  语文成绩66.00  数学成绩82.00  英语成绩86.00
********功能选择******×*********
*******1.添加学生信息***********
*******2.以语文成绩进行排序*****
*******3.以数学成绩进行排序*****
*******4.以英语成绩进行排序*****
*******5.平均分成绩进行排序*****
*******6.删除学生信息***********
*******7.退出程序*×*************
请输入要进行的操作>5
总共5个学员:
学号1  姓名大木  语文成绩95.00  数学成绩100.00  英语成绩93.00
学号5  姓名小姚  语文成绩88.00  数学成绩88.00  英语成绩88.00
学号3  姓名小霞  语文成绩90.00  数学成绩70.00  英语成绩84.00
学号4  姓名小刚  语文成绩66.00  数学成绩82.00  英语成绩86.00
学号2  姓名小智  语文成绩85.00  数学成绩76.00  英语成绩70.00
********功能选择******×*********
*******1.添加学生信息***********
*******2.以语文成绩进行排序*****
*******3.以数学成绩进行排序*****
*******4.以英语成绩进行排序*****
*******5.平均分成绩进行排序*****
*******6.删除学生信息***********
*******7.退出程序*×*************
请输入要进行的操作>6
请输入你要删除的学生信息的学生号:
2
总共4个学员:
学号1  姓名大木  语文成绩95.00  数学成绩100.00  英语成绩93.00
学号5  姓名小姚  语文成绩88.00  数学成绩88.00  英语成绩88.00
学号3  姓名小霞  语文成绩90.00  数学成绩70.00  英语成绩84.00
学号4  姓名小刚  语文成绩66.00  数学成绩82.00  英语成绩86.00

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值