题目要求:
按要求完成以下综合实验:
(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("@@@@@@@@@@@