C语言实验四:综合程序设计

本文介绍了使用C语言设计一个学生信息管理系统的过程,包括定义学生结构体,输入、输出学生信息,按总成绩排序,查询、插入、删除和修改学生信息的函数实现。通过菜单驱动的交互方式,用户可以选择相应操作。同时,文中提到了一篇更详细的参考文章,供进一步学习。
摘要由CSDN通过智能技术生成

题目要求:

 按要求完成以下综合实验:

(1)设计一个表示学生信息的结构类型,包含学号、姓名、出生日期(包含年、月、日三部分信息)和3门课(语文、数学、英语)的成绩;

(2)编写实现从键盘读入n个学生信息的函数;

(3)编写输出所有学生信息的函数;

(4)编写利用指针实现按总成绩排序的函数;

(5)编写查询并输出学生相关信息的函数;

(6)编写插入学生信息的函数;

(7)编写删除学生信息的函数;

(5)编写修改指定学生相关信息的函数;

(8)在main中以菜单驱动的方式,根据用户选择,分别调用相关函数实现对应功能。

 1、菜单函数:根据用户选择,分别调用相关函数实现对应功能。

int menu()
{
	printf("\n");

	printf("------------------------菜单------------------------\n");
	printf("*          1、输入n学生的信息                      *\n");
	printf("*          2、输出所有学生的信息                   *\n");
	printf("*          3、将学生信息按总分从大到小排序         *\n");
	printf("*          4、查询学生信息                         *\n");
	printf("*          5、插入学生的信息                       *\n");
	printf("*          6、删除一个学生的信息                   *\n");
	printf("*          7、修改学生的信息                       *\n");
	printf("*          8、退出                                 *\n");
	printf("----------------------------------------------------\n");
	printf("请选择菜单选项:\n");
	printf("\n");

	int choice;
	scanf("%d", &choice);

	return choice;

}

 2、输入函数:编写实现从键盘读入n个学生信息的函数;

int scanf_students()
{
	printf("\n");

	int n;
	printf("请输入本次需要登记信息的人数:\n");
	scanf("%d", &n);
	if (n != 0)
	{
		for (int i = 0; i < n-1 ; i++)
		{
			printf("请输入第%d位学生姓名:\n", i+1);
			scanf("%s", &stu[i].name);
			printf("请输入该学生学号:\n");
			scanf("%s", &stu[i].id);
			printf("请输入该学生出生年份:\n");
			scanf("%4d", &stu[i].year);
			printf("请输入该学生出生月份:\n");
			scanf("%2d", &stu[i].month);
			printf("请输入该学生出生于几号:\n");
			scanf("%2d", &stu[i].day);
			printf("请输入该学生语文成绩:\n");
			scanf("%d", &stu[i].chinese);
			printf("请输入该学生数学成绩:\n");
			scanf("%d", &stu[i].math);
			printf("请输入该学生英语成绩:\n");
			scanf("%d", &stu[i].english);
			printf("已记录完成,即将开始下一位学生信息记录\n");
			stu[i].add = stu[i].chinese + stu[i].english + stu[i].math;
		}
		printf("请输入第%d位学生姓名:\n", n);
		scanf("%s", &stu[n-1].name);
		printf("请输入该学生学号:\n");
		scanf("%s", &stu[n-1].id);
		printf("请输入该学生出生年份:\n");
		scanf("%d", &stu[n-1].year);
		printf("请输入该学生出生月份:\n");
		scanf("%02d", &stu[n-1].month);
		printf("请输入该学生出生于几号:\n");
		scanf("%02d", &stu[n-1].day);
		printf("请输入该学生语文成绩:\n");
		scanf("%d", &stu[n-1].chinese);
		printf("请输入该学生数学成绩:\n");
		scanf("%d", &stu[n-1].math);
		printf("请输入该学生英语成绩:\n");
		scanf("%d", &stu[n-1].english);
		printf("已记录完成,即将返回菜单\n");
		stu[n-1].add = stu[n-1].chinese + stu[n-1].english + stu[n-1].math;
	}
	else {
		printf("无效输入,即将返回菜单\n");
	}
	printf("\n");

	
	return n;
}

 3、输出函数:编写输出所有学生信息的函数;

void printf_students(int sum)
{
	printf("\n");

	if (sum > 0)
	{
	printf("---------------------学生信息如下------------------------\n");
		for (int i = 0; i < sum - 1; i++)
		{
			printf("---------------------%s同学的信息如下------------------------\n",stu[i].name);

			printf("第%d位学生姓名为: \n%s\n",i+1, stu[i].name);

			printf("该学生学号为:\n%s\n", stu[i].id);

			printf(" % s学生出生于: \n%04d-%02d-%02d\n",stu[i].name, stu[i].year, stu[i].month, stu[i].day);

			printf("%s的语文成绩: \n%d分\n", stu[i].name, stu[i].chinese);

			printf("%s的数学成绩: \n%d分\n", stu[i].name, stu[i].math);

			printf("%s的英语成绩: \n%d分\n", stu[i].name, stu[i].english);


		}
		printf("---------------------%s同学的信息如下------------------------\n", stu[sum-1].name);
		printf("请输入第%d位学生姓名:\n %s\n",sum, stu[sum-1].name);

		printf("该学生学号为:\n%s\n", stu[sum-1].id);

		printf("该学生出生于:\n%d-%02d-%02d\n", stu[sum-1].year, stu[sum-1].month, stu[sum-1].day);

		printf("%s的语文成绩:\n%d分\n", stu[sum-1].name, stu[sum-1].chinese);

		printf("%s的数学成绩:\n%d分\n", stu[sum-1].name, stu[sum-1].math);

-		printf("%s的英语成绩:\n%d分\n", stu[sum-1].name, stu[sum-1].english);

		printf("全部信息已输出完成,即将返回菜单\n");
	printf("---------------------学生信息输出完成--------------------\n");
	}
	else
		printf("-------------------请先输入学生信息!---------------------\n");
	printf("\n");

}

 4、排序函数:编写利用指针实现按总成绩排序的函数;(本人按总成绩从高到低)

void sort_students(int sum)
{
	printf("\n");

	max = stu;
	for (int i = 0; i < sum ; i++)
	{
		for (int j = 0; j < sum  - i-1; j++)
		{
			if ((max+j)->add <= (max+1+j)->add)
			{
				tem = *(max+j);
				*(max+j) = *(max+1+j);
				*(max+1+j) = tem;
				
			}
		}
	}
	printf("@@@@@@@@@@@
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

熟人看不到

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值