班级管理系统

完成学生信息管理系统

要求:定义一个班级,包括多个学生,以及记录实际学生的个数

Plain Text

自动换行

 #define MAX 100            //最大容量

//定义学生类型

struct Stu

{

    char name[20];

    int age;

    double score;

};

//定义班级类型

struct Class

{

    struct Stu student[MAX];       //存放学生的容器

    int size;                      //实际人数

};

 

1> 完成班级的创建,创建时,需要传递班级实际人数

2> 完成班级学生的信息录入工作

3> 完成将班级学生按成绩进行降序排序工作

4> 输出班级中成绩最好和最差学生的信息

5> 完成信息的输出工作

6> 完成班级的销毁工作

要求:班级创建在堆区,尽量分文件编译完成

代码:

main:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

#include "head.h"

int main(int argc, const char *argv[])
{
	//菜单
	int menu =0;

	//创建一个班级
	Class *class = create();
	if(NULL == class)
	{
		return -1;
	}

	while(1)
	{
		create_menu();       //创建菜单

		printf("请输入操作码:");
		scanf("%d",&menu);
		getchar();

		switch(menu)
		{
		case 1:
			{
				input(class); //录入
			}
			break;
		case 2:
			{
				sort(class); //排序
			}
			break;
		case 3:
			{
				maxmin(class); //成绩最好最差的学生
			}
			break;
		case 4:
			{
				output(class); //输出
			}
			break;
		case 5:
			{
				destroy(class); //销毁
				class = NULL;
			}
			break;
		case 0:goto END;

		default:printf("Error!\n");
		}

	}
	
END:	
	return 0;
}

hs.c:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define MAX 100            //最大容量

//定义学生类型
typedef struct Stu
{
    char name[20];
    int age;
    double score;
}Stu,* Stu_str;

//定义班级类型
typedef struct Class
{
    struct Stu student[MAX];       //存放学生的容器
    int size;                      //实际人数
}Class,* Class_str;


//定义创建菜单函数
void create_menu()
{
		printf("\n\t\t======学生管理系统========\n");
		printf("\t\t1、录入班级学生信息\n");
		printf("\t\t2、按成绩把班级学生信息降序\n");
		printf("\t\t3、展示成绩最高和最低学生的信息\n");
		printf("\t\t4、展示班级学生信息\n");
		printf("\t\t5、销毁班级\n");
		printf("\t\t0、退出\n");
}

//定义创建班级函数
Class *create()
{
	//申请内存
	Class *class = (Class *)malloc(sizeof(Class));

	if(NULL == class)
	{
		printf("申请失败!");
		return NULL;
	}

	printf("请输入班级学生个数:");
	scanf("%d",&class->size);

	//内存空间初始化
	memset(class,0,sizeof(class));

	//返回内存地址
	return class;
}

//定义按成绩把班级学生信息降序函数
void sort(Class *class)
{
	if(NULL == class)
	{
		printf("班级不存在!");
		return;
	}

	for(int i=1;i<class->size;i++)
	{
		for(int j=0;j<class->size - i;j++)
		{
			if(class->student[j].score < class->student[j+1].score)
			{
				Stu temp = class->student[j];
				class->student[j] = class->student[j+1];
				class->student[j+1] = temp;
			}
		}
	}
	printf("排序成功!\n");
}

//定义班级学生信息录入函数
void input(Class *class)
{
	for(int i=0; i<class->size; i++)
	{
		printf("请输入第%d个学生的名字:", i+1);
		scanf("%s", class->student[i].name);
		printf("请输入第%d个学生的年龄:", i+1);
		scanf("%d", &class->student[i].age);
		printf("请输入第%d个学生的分数:", i+1);
		scanf("%lf", &class->student[i].score);
		putchar(10);
	}
	printf("录入成功!\n");
}

//定义展示成绩最好和最差学生信息函数
void maxmin(Class *class)
{
	if(NULL == class)
	{
		printf("班级不存在!");
		return;
	}

	int max = 0,maxi = 0,min = 0,mini = 0;
	max = class->student[0].score;
	min = class->student[0].score;
	for(int i=0;i<class->size;i++)
	{
		if(max < class->student[i].score)
		{
			max = class->student[i].score;
			maxi = i;
		}
		if(min > class->student[i].score)
		{

			min = class->student[i].score;
			mini = i;
		}
	}
	printf("班级成绩最好学生信息如下:\n");
	printf("\t姓名\t年龄\t分数\n\t%s\t%d\t%lf\n", \
			class->student[maxi].name, class->student[maxi].age, class->student[maxi].score);
	printf("班级成绩最差学生信息如下:\n");
	printf("\t姓名\t年龄\t分数\n\t%s\t%d\t%lf\n", \
			class->student[mini].name, class->student[mini].age, class->student[mini].score);
}

//定义展示班级学生信息函数
void output(Class *class)
{
	if(NULL == class)
	{
		printf("班级不存在!");
		return;
	}
	printf("班级学生信息如下:\n");
	for(int i=0; i<class->size; i++)
	{
		printf("\t姓名\t年龄\t分数\n\t%s\t%d\t%lf\n", \
				class->student[i].name, class->student[i].age, class->student[i].score);
	}
}

//定义销毁班级函数
void destroy(Class *class)
{
		//释放内存
	if(NULL != class)
	{
		free(class);       //释放空间
		class = NULL;
	}
}

head.h:

#ifndef HEAD_H
#define HEAD_H

#define MAX 100            //最大容量

//定义学生类型
typedef struct Stu
{
    char name[20];
    int age;
    double score;
}Stu,* Stu_str;

//定义班级类型
typedef struct Class
{
    struct Stu student[MAX];       //存放学生的容器
    int size;                      //实际人数
}Class,* Class_str;

void create_menu();               //函数声明
Class *create();
void input(Class *class);
void sort(Class *class);
void maxmin(Class *class);
void output(Class *class);
void destroy(Class *class);

#endif

运行结果:

思维导图:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值