学生管理系统,输入输出学生信息及成绩

学生管理系统,输入输出学生信息及成绩,第1张

学生管理系统,输入输出学生信息及成绩
#include 
#include 
#include 
#define INIT_SIZE 100
#define SIZE 3

typedef struct Student
{
	char id[15];
	char name[20];
	char sex[10];
	int age;
	double score[SIZE];
	double sum;
	double avg;

}Student,*PStudent;
typedef struct Student_Head
{
	struct Student* arr;//用来保存malloc返回的堆内内存块地址
	int length;//当前空间已使用的个数
	int list_size;//当前空间总大小
}Student_Head,*PStudent_Head;
void Init_Student_Head(struct Student_Head* p)//初始化模块
{
	assert(p != 0);
	if (p == NULL)
	{
		printf("指针为NULLn");
		return;
	}
	p->arr = (struct Student*)malloc(INIT_SIZE * sizeof(struct Student));
	assert(p->arr != NULL);
	p->length = 0;
	p->list_size = INIT_SIZE;
}
bool IsFull(struct Student_Head* p)//判满 *** 作
{
	return p->length == p->list_size;
}
static void Inc(struct Student_Head* p)//扩容 *** 作
{
	p->arr = (struct Student*)realloc(p->arr, p->list_size * sizeof(struct Student) * 2);

	assert(p->arr != NULL);
	//p->length
}

bool Add_Student(PStudent_Head p)//添加学生信息
{
	assert(p != NULL);
	if (p == NULL)
	{
		printf("指针为NULLn");
		return false;
	}
	if(IsFull(p))
	{
		Inc(p);//扩容
	}
	printf("请输入学生学号:");
	scanf_s("%s", &p->arr[p->length].id,15);//下一个要插入的位置
	printf("请输入学生姓名:");
	scanf_s("%s", &p->arr[p->length].name,20);
	printf("请输入学生性别:");
	scanf_s("%s", &p->arr[p->length].sex,10);
	printf("请输入学生年龄:");
	scanf_s("%d", &p->arr[p->length].age);
	printf("请输入学生语文成绩:");
	scanf_s("%lf", &p->arr[p->length].score[0]);
	printf("请输入学生数学成绩:");
	scanf_s("%lf", &p->arr[p->length].score[1]);
	printf("请输入学生英语成绩:");
	scanf_s("%lf", &p->arr[p->length].score[2]);
	p->arr[p->length].sum = p->arr[p->length].score[0] + p->arr[p->length].score[1] + p->arr[p->length].score[2];
	p->arr[p->length].avg = p->arr[p->length].sum / SIZE;
	p->length++;
	return true;
}
void Show(struct Student_Head* p)
{
	printf("学号 姓名 性别 年龄 语文成绩 数学成绩 英语成绩 总成绩 平均成绩n");
	for (int i = 0; i < p->length; i++)
	{
		printf("%s ", p->arr[i].id);
		printf("%s ", p->arr[i].name);
		printf("%s ", p->arr[i].sex);
		printf("%d ", p->arr[i].age);
		printf("%f ", p->arr[i].score[0]);
		printf("%f ", p->arr[i].score[1]);
		printf("%f ", p->arr[i].score[2]);
		printf("%f ", p->arr[i].sum);
		printf("%fn", p->arr[i].avg);
	}
}
int main()
{
	struct Student_Head tmp;
	Init_Student_Head(&tmp);

	int n;
	printf("请输入添加人数:");
	scanf_s("%d", &n);
	
	for (int i = 0; i < n; i++)
	{
		printf("请输入第%d个人的信息:n", i + 1);
		Add_Student(&tmp);
	}
	Show(&tmp);
	return 0;
}

 

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5659080.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存