qq_58990927 2021-06-04 10:20 采纳率: 100%
浏览 525
已采纳

实验内容对学生基本信息,包括学号、姓名、至少三门课成绩。

对学生基本信息,包括学号、姓名、至少三门课成绩。学生基本信息录入;学生基本信息的输出;按学号查询学生信息(学号、姓名、成绩);按学号修改某学生信息并输出;计算平均成绩(找出最大值、最小值);删除某学生信息;添加某学生信息输出平均分大于80分的同学信息;根据总成绩或平均成绩综合排名;2、实验要求a、用数组存储学生信息;b、基本功能用函数实现; c、选做实验内容中6项功能,多者不限; d、程序能正确执行、输入与输出有必要的提示信息、界面美观;e、用菜单调用。3、最后结果输出。要求:输出格式要界面直观、清晰大方、格式规范。四、实验结果及分析1、实验运行过程及分析叙述每个函数的功能及实现过程,如:函数名称、返回类型、形式参数说明、定义的什么变量,主要使用什么语句或函数,可以粘贴重要语句行(不要全部粘贴),并加以解释说明。

  • 写回答

3条回答 默认 最新

  • 关注
    #define _CRT_SECURE_NO_WARNINGS 1
    #include<stdio.h>
    #include<conio.h>
    #include<stdlib.h>
    #include<string.h>
    typedef struct _Student
    {
    	char name[20];
    	int age;
    	int stuNum;
    	int Cscore;
    	int Mscore;
    	int Escore;
    	int Gscore;
    	double AvgScore;
    }Student;
    //定义链表的结点
    typedef struct _Node
    {
    	Student stu;//学生-数据域
    	struct _Node* pNext;//指向下一个结点的指针
    }Node;
    //定义头结点
    Node* g_pHead = NULL;
    void modifyStudent(){
    
    }
    void printStudent(){
    	
    }
    void saveStudent(){
    	
    }
    void readStudent(){
    	
    }
    int countStudent(){
    	
    }
    Node* findStudent(){
    	
    }
    void deleteStudent(){
    	
    }
    //录入学生信息
    void inputStudent()
    {
    	//创建一个结点-动态开辟
    	Node* pNewNode = (Node*)malloc(sizeof(Node));
    	pNewNode->pNext = NULL;
    	//头插法
    	if (g_pHead == NULL)//原来什么也没有
    	{
    		g_pHead = pNewNode;
    	}
    	else
    	{
    		pNewNode->pNext = g_pHead;
    		g_pHead = pNewNode;
    	}
    	printf("请输入学生姓名:\n");
    	scanf("%s", pNewNode->stu.name);//name是数组名,不用加&
    	printf("请输入学生年龄:\n");
    	scanf("%d", &pNewNode->stu.age);
    	printf("请输入学生的学号:\n");
    	scanf("%d", &pNewNode->stu.stuNum);
    	printf("请输入学生的C成绩:\n");
    	scanf("%d", &pNewNode->stu.Cscore);
    	printf("请输入学生的数学成绩:\n");
    	scanf("%d", &pNewNode->stu.Mscore);
    	printf("请输入学生的英语成绩:\n");
    	scanf("%d", &pNewNode->stu.Escore);
    	pNewNode->stu.Gscore = pNewNode->stu.Cscore + pNewNode->stu.Mscore + pNewNode->stu.Escore;
    	pNewNode->stu.AvgScore = pNewNode->stu.Gscore / 3.0;
    	printf("录入完成!\n");
    	system("pause");
    	system("cls");//清屏
    }
    //主菜单
    void mainMenu()
    {
    	printf("*\t学生成绩管理系统\t*\n");
    	printf("——————————————------\n");
    	printf("*\t1.输入学生信息\t\t*\n");
    	printf("*\t2.显示学生信息\t\t*\n");
    	printf("*\t3.保存学生信息\t\t*\n");
    	printf("*\t4.读取学生信息\t\t*\n");
    	printf("*\t5.统计记录\t\t*\n");
    	printf("*\t6.查找学生信息\t\t*\n");
    	printf("*\t7.更新学生信息\t\t*\n");
    	printf("*\t8.删除学生信息\t\t*\n");
    	printf("*\t9.学生成绩排序\t\t*\n");
    	printf("*\t0.退出系统\t\t*\n");
    	printf("——————————————------\n");
    }
    
    //键盘输入
    void keyDown()
    {
    	char ch = _getch();
    	switch (ch)
    	{
    	case '1'://录入
    		inputStudent();
    		break;
    	case '2'://打印
    		printStudent();
    		break;
    	case '3'://保存
    		saveStudent();
    		break;
    	case '4'://读取
    		readStudent();
    		break;
    	case '5'://统计
    		printf("学生总人数为:%d\n", countStudent());
    		system("pause");
    		system("cls");
    		break;
    	case '6'://查找
    	{
    		Node* p = findStudent();
    		if (p != NULL)
    		{
    			printf("学号:%d\t姓名:%s\t年龄:%d\tC成绩:%d\t数学成绩:%d\t英语成绩:%d\n", p->stu.stuNum, p->stu.name, p->stu.age, p->stu.Cscore, p->stu.Mscore, p->stu.Escore);
    		}
    		else
    		{
    			printf("没有找到该学生。\n");
    		}
    		system("pause");
    		system("cls");
    		break;
    	}
    	case '7'://修改
    		modifyStudent();
    		break;
    	case '8'://删除
    		deleteStudent();
    		break;
    	case '9'://排序
    	case '0'://退出
    		exit(0);
    		break;
    	default:
    		printf("输入错误,请重新输入。\n");
    		system("pause");
    		system("cls");
    		break;
    	}
    }
    int main(void)
    {
    	while (1)
    	{
    		mainMenu();
    		keyDown();
    	}
    	return 0;
    }
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?