2024.7.17作业

完成学生信息管理系统

要求:定义一个班级,包括多个学生,以及记录实际学生的个数,班级创建在堆区,尽量分文件编译完成

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

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

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

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

5> 完成信息的输出工作

6> 完成班级的销毁工作

主函数:

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

int main(int argc,const char *argv[])
{

    printf("\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\t6.退出\n");
 
	int meau=0;
	int size=0;       //数组实际大小
	struct Class * ptr = create();
    	if(NULL == ptr)
    	{
        	return -1;
    	}
	while(1)
	{
		printf("请输入>>>");
		scanf("%d",&meau);   
		switch(meau)
		{
			case 1:
				shuru(ptr);
				break;
			case 2:
				shuchu(ptr);
				break;
			case 3:
				maximum(ptr);
				break;
			case 4:
				sort(ptr);
				break;
			case 5:
				xiaohui(&ptr);
				break;
			case 6:
				exit(0);
			default:
				printf("输入错误,请重新输入\n");
				break;
		}
	}
        return 0;
}

test.h 

#ifndef TEST_H
#define TEST_H
#define MAX 100            //最大容量

//定义学生类型
struct Stu
{
	    char name[20];
    	int age;
    	double score;
};
//定义班级类型
struct Class
{
    	struct Stu student[MAX];       //存放学生的容器
    	int size;                      //实际人数
};

void shuru(struct Class *p);   //学生信息录入函数
void shuchu(const struct Class *p);    //学生信息输出函数
void maximum(const struct Class *p);   //求学生成绩最好和最差的学生的函数
void sort(struct Class *p);       //排序函数
struct Class *create();      //申请内存函数
void xiaohui(struct Class **p);    //释放空间函数

#endif

test.c 

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define MAX 100
//定义学生类型
struct Stu
{
	    char name[20];
    	int age;
    	double score;
};
//定义班级类型
struct Class
{
    	struct Stu student[MAX];       //存放学生的容器
    	int size;                      //实际人数
};


void shuru(struct Class *p)   //学生信息录入函数
{
	if(NULL == p)
    	{
        	printf("error\n");
        	return ;
    	}
	int n=0;    
	printf("要录入学生信息的个数>>");
	scanf("%d",&n);
	for(int i=p->size;i<n+p->size;i++)
	{
		printf("请输入第%d个学生的姓名:",i+1);
		scanf("%s",p->student[i].name);
		printf("请输入第%d个学生的年龄:",i+1);
		scanf("%d",&p->student[i].age);
		printf("请输入第%d个学生的成绩:",i+1);
		scanf("%lf",&p->student[i].score);
		printf("\n");
	}
	p->size+=n;
}

void shuchu(const struct Class *p)    //学生信息输出函数
{
	if(NULL == p)
    	{
        	printf("error\n");
        	return ;
    	}	
	printf("学生信息如下:\n");
	printf("姓名\t年龄\t成绩\n");
	for(int i=0;i<p->size;i++)
	{
		printf("%s\t%d\t%.2lf\n",p->student[i].name,p->student[i].age,p->student[i].score);
	}
}
 
void maximum(const struct Class *p)   //求学生成绩最好和最差的学生的函数
{
	if(NULL == p)
    	{
        	printf("error\n");
        	return ;
    	}
	int max=0,min=0;
	for(int i=0;i<p->size;i++)
	{
		if(p->student[i].score>p->student[max].score)  
		{
			max=i;
		}
		if(p->student[i].score<p->student[min].score)
		{
			min=i;
		}
	}
	printf("成绩最好的学生是%s\n",p->student[max].name);
	printf("成绩最差的学生是%s\n",p->student[min].name);
}
 
void sort(struct Class *p)       //排序函数
{
	if(NULL == p)
    	{
        	printf("error\n");
        	return ;
    	}
	int n=p->size;
	for(int i=1;i<n;i++)
	{
		for(int j=0;j<n-i;j++)
		{
			if(p->student[j].score<p->student[j+1].score)
			{
				struct Stu temp=p->student[j];
				p->student[j]=p->student[j+1];
				p->student[j+1]=temp;
			}
		}
	}
}

struct Class *create()      //申请内存函数
{
    	struct Class *ptr=(struct Class *)malloc(32*MAX+4);
    	if(NULL == ptr)
    	{
       	 	printf("申请失败\n");
        	return NULL;
    	}

    	//程序执行至此,表示内存申请成功
    	//给内存空间进行初始化
    	memset(ptr,0,32*MAX+4);

    	//将内存地址返回
    	return ptr;
}

void xiaohui(struct Class **p)    //释放空间函数
{
	if(NULL != *p)
    	{
        	free(*p);       //释放空间
        	*p = NULL;
    	}
}

运行结果

思维导图

相关推荐

  1. 小抄 20240717

    2024-07-17 21:34:04       21 阅读
  2. 作业..........

    2024-07-17 21:34:04       57 阅读
  3. 数据库管理-第221期 Oracle的高可用-04(20240717

    2024-07-17 21:34:04       23 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-17 21:34:04       101 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-17 21:34:04       109 阅读
  3. 在Django里面运行非项目文件

    2024-07-17 21:34:04       87 阅读
  4. Python语言-面向对象

    2024-07-17 21:34:04       96 阅读

热门阅读

  1. python基础语法

    2024-07-17 21:34:04       27 阅读
  2. C#线程池介绍及应用

    2024-07-17 21:34:04       21 阅读
  3. Collections.unmodifiableList

    2024-07-17 21:34:04       19 阅读
  4. 自动驾驶,革了谁的命

    2024-07-17 21:34:04       28 阅读
  5. linux service小例

    2024-07-17 21:34:04       23 阅读
  6. 正则表达式

    2024-07-17 21:34:04       24 阅读
  7. 笔记:运行时动态更改Ioc服务的实现

    2024-07-17 21:34:04       28 阅读
  8. 力扣—最大连续1的个数 III

    2024-07-17 21:34:04       25 阅读
  9. Netty HTTP

    2024-07-17 21:34:04       19 阅读
  10. 后仿综述 Gate Level Simulation: A Comprehensive Overview

    2024-07-17 21:34:04       21 阅读