通过利用c语言程序,设计一个菜单驱动的学生成绩管理程序,实现对学生成绩的各种管理。 按要求定义结构体数据类型,包括num(学号),name(姓名),score[5](5门课成绩),aver(5门课平均成绩),和sum(5门课总成绩),要求将下面功能都编写成独立的函数。 1.输入n个学生5门成绩的函数 2.计算每个学生的5门的总成绩和平均成绩。 3.计算n个学生的最高总分和最高平均分。 4.输入一个学号,输出该学生的学号、姓名和总分。 5.编写主函数集成上面4项功能。 6.程序能够进行异常处理,检查用户输入数据的有效性,在用户输入数据有错误(如类型错误)或无效时,不会中断程序的执行,程序具有一定的健壮性。

时间: 2024-03-23 07:35:54 浏览: 14
好的,下面是一个简单的C语言程序,实现了上述要求。请注意,该程序可能并不完美,您可以根据自己的需求进行修改和完善。 ``` #include <stdio.h> #include <string.h> #include <stdlib.h> #define MAX_STUDENT_NUM 100 // 最大学生数量 #define MAX_NAME_LEN 20 // 姓名最大长度 // 定义学生信息结构体 typedef struct { int num; // 学号 char name[MAX_NAME_LEN]; // 姓名 int score[5]; // 5门课成绩 int sum; // 5门课总成绩 double aver; // 5门课平均成绩 } Student; // 学生信息数组 Student students[MAX_STUDENT_NUM]; // 当前学生数量 int studentNum = 0; // 输入n个学生5门成绩的函数 void inputScores() { printf("请输入学生数量:"); scanf("%d", &studentNum); if (studentNum > MAX_STUDENT_NUM) { printf("学生数量超过最大值%d,请重新输入:", MAX_STUDENT_NUM); scanf("%d", &studentNum); } for (int i = 0; i < studentNum; i++) { printf("请输入第%d个学生的学号、姓名和5门课成绩:", i + 1); scanf("%d %s %d %d %d %d %d", &students[i].num, students[i].name, &students[i].score[0], &students[i].score[1], &students[i].score[2], &students[i].score[3], &students[i].score[4]); } } // 计算每个学生的5门的总成绩和平均成绩 void calculateScores() { for (int i = 0; i < studentNum; i++) { students[i].sum = 0; for (int j = 0; j < 5; j++) { students[i].sum += students[i].score[j]; } students[i].aver = (double)students[i].sum / 5.0; } } // 计算n个学生的最高总分和最高平均分 void calculateMaxScores() { int maxSum = 0; double maxAver = 0.0; for (int i = 0; i < studentNum; i++) { if (students[i].sum > maxSum) { maxSum = students[i].sum; } if (students[i].aver > maxAver) { maxAver = students[i].aver; } } printf("最高总分为:%d\n", maxSum); printf("最高平均分为:%.2f\n", maxAver); } // 输入一个学号,输出该学生的学号、姓名和总分 void outputScoreByNum() { int num; printf("请输入学生学号:"); scanf("%d", &num); for (int i = 0; i < studentNum; i++) { if (students[i].num == num) { printf("学号:%d,姓名:%s,总分:%d\n", students[i].num, students[i].name, students[i].sum); return; } } printf("未找到学号为%d的学生。\n", num); } // 主函数 int main() { int choice; while (1) { printf("请输入数字选择功能:\n"); printf("1. 输入n个学生5门成绩\n"); printf("2. 计算每个学生的5门总成绩和平均成绩\n"); printf("3. 计算n个学生的最高总分和最高平均分\n"); printf("4. 输入学号,输出该学生的学号、姓名和总分\n"); printf("5. 退出程序\n"); scanf("%d", &choice); switch(choice) { case 1: inputScores(); break; case 2: calculateScores(); break; case 3: calculateMaxScores(); break; case 4: outputScoreByNum(); break; case 5: exit(0); default: printf("无效的选择,请重新输入。\n"); } } return 0; } ``` 在上述程序中,我们使用了结构体来存储每个学生的信息。在输入学生信息时,我们使用了scanf函数从控制台读取输入,并使用了循环来输入多个学生的信息。在计算学生成绩时,我们使用了循环来计算每个学生的总成绩和平均成绩,并使用了临时变量来记录最高总分和最高平均分。在输出学生信息时,我们使用了循环来查找输入学号对应的学生信息,并输出该学生的信息。在主函数中,我们使用了循环和switch语句来实现菜单驱动的功能,用户可以根据需要选择不同的功能。 请注意,上述程序可能存在一些不足之处,比如未进行输入数据的有效性检查等。在实际使用中,您需要根据实际情况进行完善和修改。

相关推荐

最新推荐

recommend-type

C语言程序设计实现学生成绩记录簿

通过编写c语言《学生成绩记录簿系统...3)C语言程序设计的主要任务是要求学生遵循软件开发过程的基本规范,运用结构化程序设计的方法,按照课程设计的题目要求,分析、设计、编写、调试和测试C语言程序及编写设计报告。
recommend-type

学生成绩管理系统(数据结构)实验报告.docx

期末实践周必备(数据结构)学生成绩管理系统,基于C语言完成的,百分百作者原创,资源保证!
recommend-type

C语言数组实现学生信息管理系统设计

主要为大家详细介绍了C语言数组实现学生信息管理系统设计,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
recommend-type

C语言实现简单学生学籍管理系统

主要为大家详细介绍了C语言实现简单学生学籍管理系统,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
recommend-type

c语言作业——学生成绩统计.docx

整个程序功能 (1)学生基本信息(学号、姓名、…….)录入; (2)学生成绩录入; (3)统计学生成绩分布情况(每个分数段人数);...(6)统计不同生源地学生的平均成绩,按平均成绩排序,并输出结果。
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

实现实时数据湖架构:Kafka与Hive集成

![实现实时数据湖架构:Kafka与Hive集成](https://img-blog.csdnimg.cn/img_convert/10eb2e6972b3b6086286fc64c0b3ee41.jpeg) # 1. 实时数据湖架构概述** 实时数据湖是一种现代数据管理架构,它允许企业以低延迟的方式收集、存储和处理大量数据。与传统数据仓库不同,实时数据湖不依赖于预先定义的模式,而是采用灵活的架构,可以处理各种数据类型和格式。这种架构为企业提供了以下优势: - **实时洞察:**实时数据湖允许企业访问最新的数据,从而做出更明智的决策。 - **数据民主化:**实时数据湖使各种利益相关者都可
recommend-type

SPDK_NVMF_DISCOVERY_NQN是什么 有什么作用

SPDK_NVMF_DISCOVERY_NQN 是 SPDK (Storage Performance Development Kit) 中用于查询 NVMf (Non-Volatile Memory express over Fabrics) 存储设备名称的协议。NVMf 是一种基于网络的存储协议,可用于连接远程非易失性内存存储器。 SPDK_NVMF_DISCOVERY_NQN 的作用是让存储应用程序能够通过 SPDK 查询 NVMf 存储设备的名称,以便能够访问这些存储设备。通过查询 NVMf 存储设备名称,存储应用程序可以获取必要的信息,例如存储设备的IP地址、端口号、名称等,以便能
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。