学生信息管理系统(简单)

#include<stdio.h>
#define number 12
int fflush(FILE*);
struct student
{
	char name[20];
	int id;
	int chinese;
	int math;
	int c;
}a[number] =
{
	{ "guoa",2017211180,80,67,65},
{ "wued",2017211195,90,98,32},
{ "yeili",2017211112,88,96,84},
{ "zhaot",2017211140,79 ,89,76},
{ "cnghu",2017211151,91 ,70,69},
{ "songdf",2017211136,79,87,91},
};
void fuction()//函数初始化
{
	    void show();
		void jieguo();
		void jiandanpaixu();
		void shanchu();
		void tianjia();
		void pinjun();
		void maopao();

}
int main()
{
	int choice;
	fuction();
	show();
	
	while (scanf("%d", &choice) == 1) 
	{
		
		
		
		switch (choice)
		{
		case 1:jieguo(); break;
		case 2:shanchu(); break;
		case 3:maopao(); break;
		case 4:pinjun(); break;
		case 5:tianjia(); break;
		case 0: {
			printf("\n\n\n\n\t\t\t\t\t\t【欢迎再次使用】\n\n\n");
			system("pause");
			exit(0); }; break;
		default:printf("请按要求输入\a\n");
		
		}
		show();
	}
	system("pause");
}





void show()//初始界面
{

	for (int i = 0; i < 8; i++)
	{
		printf("------------------------");
	}
	printf("\n\n");
	printf("\t\t\t\t\t\t\t\t\t\t\t学生信息管理系统\n\n");
	for (int i = 0; i < 8; i++)
	{
		printf("------------------------");
	}
	printf("\n");
	printf("【欢迎使用学生成绩管理系统】\n");
	printf("[1] [显示所有学生信息]\n");
	printf("[2] [删除学生信息]\n");
	printf("[3] [对学生信息进行排序]\n");
	printf("[4] [求平均分]\n");
	printf("[5] [录入学生信息]\n");
	printf("[0] [退出程序]\n");
	printf("[请输入您的选择](0 - 5):");
}

void jieguo()//显示结果
{
	int i;
	for (i = 0; a[i].id != 0; i++)
	{
	}

	printf("\n【姓名】\t\t【学号】\t\t【语文成绩】\t【数学成绩】\t【C语言】\n");
	for (int h = 0; h < i; h++)
	{
		printf("%s\t\t\t%d\t\t %d\t\t %d \t\t%d\n", a[h].name, a[h].id, a[h].chinese, a[h].math, a[h].c);
	}

}

void jiandanpaixu(int y)//排序
{
	struct student *t = NULL, l;
	t = a;
	for (int i = y; i <6; i++)
	{
		*(t + i) = *(t + i + 1);
	}
}
void shanchu()//删除某个成员
{
	char str[20] = { NULL };
	struct student *t, m;
	char *q = NULL, *p = NULL;
	int xc = 0, k = 0, *l = NULL, c,m1;
	t = a;
	p = a->name;
	l = &a->id;
	printf("[1] [按姓名删除某个学生信息]\n");
	printf("[2] [按学号删除某个学生信息]\n");
	scanf("%d", &c); fflush(stdin);
	switch (c)
	{
	case 1: {
		printf("[请输入你所要删除的信息的学生的名字!]:");
		scanf("%s", str); fflush(stdin);
		q = str;
		for (int i = 0; i < number; i++)
		{
			while ((!(xc = *p - *q)) && *p)
			{
				*q++;
				*p++;
			}

			if (xc == 0)
			{
				t = NULL;
				t = (struct student *)malloc(sizeof(struct student));
				jiandanpaixu(i);
				free(t);
				t = &a[i - 1];

			}

			q = str;
			p = a[i + 1].name;
			t++;
		}
		jieguo();
	}break;
	case 2:
	{
		printf("[请输入你所要删除的信息的学生的学号]:");
		scanf("%d", &k); fflush(stdin);
		for (int i = 0; i < number; i++)
		{
			if (!(*l - k))
			{
				t = NULL;
				t = (struct student *)malloc(sizeof(struct student));
				jiandanpaixu(i);
				free(t);
				t = &a[i - 1];
			}
			l += sizeof(m) /sizeof(m1);
			t++;


		}
		jieguo();

	}break;
	default:printf("[输入错误,已返回主菜单!]\n\a");
	}
	
}


void tianjia()//添加某个信息
{
	int i, b;
	printf("你想要添加几组学生的信息?\n");
	scanf("%d", &b); fflush(stdin);
	for (i = 0; a[i].id != 0; i++)
	{

	}
	printf("\n\t\t【姓名】 【学号】 【语文成绩】 【数学成绩】 【C语言】\n");
	for (int j = i; j<i + b; j++)
	{

		printf("第[%d]组:\t", j + 1);

		scanf("%s", a[j].name);
		scanf("%d", &a[j].id);
		scanf("%d", &a[j].chinese);
		scanf("%d", &a[j].math);
		scanf("%d", &a[j].c);
	}
	printf("[添加成功!!!]\n");
}
void maopao()//排序
{
	struct student *v = NULL, b;
	int c;
	v = a;
	printf("[1] [按学号对学生排序]\n");
	printf("[2] [按语文成绩对学生排序]\n");
	printf("[3] [按数学成绩对学生排序]\n");
	printf("[4] [按c语言成绩对学生排序]\n");
	scanf("%d", &c); fflush(stdin);
	for (int i = 0; i < 5; i++)
	{
		for (int j = i + 1; j < 6; j++)
		{
			switch (c)
			{
			case 1:
			{

				if ((v + i)->id >(v + j)->id)
				{
					b = *(v + i);
					*(v + i) = *(v + j);;
					*(v + j) = b;
				}
			}break;
			case 2:
			{
				if ((v + i)->chinese > (v + j)->chinese)
				{
					b = *(v + i);
					*(v + i) = *(v + j);;
					*(v + j) = b;
				}

			}break;
			case 3:
			{

				if ((v + i)->math > (v + j)->math)
				{
					b = *(v + i);
					*(v + i) = *(v + j);;
					*(v + j) = b;
				}

			}break;
			default:printf("[输入错误,已返回主菜单!]\a\n");
			}
		}
	}
	jieguo();
}

void pinjun()//求平均值
{

	float guide = 0;
	struct student m;
	int *ojbk = NULL, c;
	int k = 0;
	printf("[1] [语文平均分]\n");
	printf("[2] [数学平均分]\n");
	printf("[3] [C语言平均分]\n");
	scanf("%d", &c); fflush(stdin);
	if (c == 1)ojbk = &a->chinese;
	else if (c == 2)ojbk = &a->math;
	else if (c == 3)ojbk = &a->c;
	else goto cv;
	for (int i = 0; *(ojbk + i) != '\0'; i += sizeof(m) / 4)
	{
		guide += *(ojbk + i);
		k++;
	}
	if (c == 1)printf("语文成绩的总平均为[%f]\n", guide / k);
	else if (c == 2)printf("数学成绩的总平均为[%f]\n", guide / k);
	else if (c == 3)printf("C语言成绩的总平均为[%f]\n", guide / k);
	else cv:printf("[输入错误,已返回主菜单!]\a\n");
}

发布了29 篇原创文章 · 获赞 24 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/yyk219/article/details/79988964