运用所学的 C 语言知识编辑一个应用程序:学习成绩管理系统 程序说明:有 N 个学生,每个学生的数据包含学号(不重复)、姓名、三门课的成绩及平均成绩,试设计一学生成绩管理系统,使之能提供以下功能: (1)主菜单学生成绩管理系统1.成绩录入2.成绩查询 3.成绩统计 4.退出 (2)各菜单项功能 ②成绩录入:输入学生的学号、姓名及三门课的成绩; ②成绩询: *按学号查询学生记录; ③成绩统计: *计算学生的平均分; *根据学生的平均分高低,对学生的数据进行排序后输出; ④退出系统:退出整个系统(即主菜单)。 提示:数据结构设计描述参考 主医数 菜单函数 Input 函数 select 函数 statistics 函数退出系统 各变量的定义和作用 int num ; char name ; int score ; float average ; /*定义学号,变量为整型*/ /*定义姓名,变量为字符型*/ /*定义课程的成绩,变量为整型*/ /*定义平均分,变量为浮点型*/并说明各函数之间的关系

时间: 2024-02-27 09:55:38 浏览: 23
好的,我会根据你的要求回答你的问题。 首先,需要定义一个数据结构来存储每个学生的信息,包括学号、姓名、三门课的成绩和平均成绩。可以定义一个结构体来实现,例如: ``` struct student { int num; // 学号 char name[20]; // 姓名 int score[3]; // 三门课的成绩 float average; // 平均成绩 }; ``` 接下来,可以设计一个主菜单函数,供用户选择不同的功能。主菜单函数可以调用不同的子函数来完成各项功能。例如: ``` void menu() { int choice; do { printf("学生成绩管理系统\n"); printf("1. 成绩录入\n"); printf("2. 成绩查询\n"); printf("3. 成绩统计\n"); printf("4. 退出\n"); printf("请选择:"); scanf("%d", &choice); switch (choice) { case 1: input(); break; case 2: search(); break; case 3: statistics(); break; case 4: printf("谢谢使用,再见!\n"); break; default: printf("输入有误,请重新选择!\n"); break; } } while (choice != 4); } ``` 成绩录入函数可以让用户输入学生的学号、姓名和三门课的成绩,然后将其存储在一个数组中。例如: ``` void input() { int n, i, j; printf("请输入学生人数:"); scanf("%d", &n); struct student stu[n]; for (i = 0; i < n; i++) { printf("请输入第%d个学生的信息:\n", i + 1); printf("学号:"); scanf("%d", &stu[i].num); printf("姓名:"); scanf("%s", stu[i].name); printf("三门课的成绩:"); for (j = 0; j < 3; j++) { scanf("%d", &stu[i].score[j]); } stu[i].average = (stu[i].score[0] + stu[i].score[1] + stu[i].score[2]) / 3.0; printf("录入成功!\n"); } } ``` 成绩查询函数可以根据学号查询学生的记录。例如: ``` void search() { int n, i, num; printf("请输入要查询的学生学号:"); scanf("%d", &num); for (i = 0; i < n; i++) { if (num == stu[i].num) { printf("学号:%d\n", stu[i].num); printf("姓名:%s\n", stu[i].name); printf("三门课的成绩:%d %d %d\n", stu[i].score[0], stu[i].score[1], stu[i].score[2]); printf("平均成绩:%.2f\n", stu[i].average); return; } } printf("未找到该学生!\n"); } ``` 成绩统计函数可以计算每个学生的平均分,并且根据平均分高低对学生的数据进行排序后输出。例如: ``` void statistics() { int n, i, j; struct student temp; printf("按平均分高低对学生进行排序后输出:\n"); for (i = 0; i < n - 1; i++) { for (j = i + 1; j < n; j++) { if (stu[i].average < stu[j].average) { temp = stu[i]; stu[i] = stu[j]; stu[j] = temp; } } } for (i = 0; i < n; i++) { printf("学号:%d\n", stu[i].num); printf("姓名:%s\n", stu[i].name); printf("三门课的成绩:%d %d %d\n", stu[i].score[0], stu[i].score[1], stu[i].score[2]); printf("平均成绩:%.2f\n", stu[i].average); } } ``` 最后,各函数之间的关系如下: 主菜单函数 menu() 调用了成绩录入函数 input()、成绩查询函数 search()、成绩统计函数 statistics(),以及退出系统函数。成绩查询函数 search() 和成绩统计函数 statistics() 都需要使用存储学生信息的数组,因此需要在全局定义该数组。

相关推荐

最新推荐

recommend-type

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

通过编写c语言《学生成绩记录簿系统》让我知道所学的编程语言是需要多练多编写代码锻炼出来的。 1)C语言课程设计的主要目的是培养学生综合运用C语言程序设计课程所学到的知识,编写C程序解决实际问题的能力,以及...
recommend-type

java实现学生成绩录入系统

主要为大家详细介绍了java实现学生成绩录入系统,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
recommend-type

数据库实验一实验一 熟悉数据库管理工具、数据库和表的基本操作 一、实验目的: 1.了解SQL Server或MYSQL数据库的基本知识; 2.熟悉SQL Se

实验一 熟悉数据库管理工具、数据库和表的基本操作 一、实验目的: 1.了解SQL Server或MYSQL数据库的基本知识; 2.熟悉SQL Server或MYSQL环境和系统结构; 3.掌握图形化交互工具的基本操作,学会数据库及表的...
recommend-type

物联网学习篇1:Python SDK接入阿里云物联网平台,接收服务端订阅消息

下载之后,可见得到了一个 qpid-proton-0.29.0.tar.gz 的压缩包。 有两个方法: 1. 直接运用SCP软件拖进服务器中; 2. 直接用wget下载 # 1.下载文件 $ wget ...
recommend-type

基于matlab实现人工免疫算法的解决TSP问题的方法

基于matlab实现人工免疫算法的解决TSP问题的方法,体现了免疫算法在进化计算过程中的抗原学习、记忆机制、浓度调节机制以及多样性抗体保持策略等优良特性.rar
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

【实战演练】增量式PID的simulink仿真实现

# 2.1 Simulink仿真环境简介 Simulink是MATLAB中用于建模、仿真和分析动态系统的图形化环境。它提供了一个直观的用户界面,允许用户使用块和连接线来创建系统模型。Simulink模型由以下元素组成: - **子系统:**将复杂系统分解成更小的、可管理的模块。 - **块:**代表系统中的组件,如传感器、执行器和控制器。 - **连接线:**表示信号在块之间的流动。 Simulink仿真环境提供了广泛的块库,涵盖了各种工程学科,包括控制系统、电子和机械工程。它还支持用户自定义块的创建,以满足特定仿真需求。 # 2. Simulink仿真环境的搭建和建模 ### 2.
recommend-type

训练集和测试集的准确率都99%,但是预测效果不好

即使训练集和测试集的准确率都很高,但是在实际的预测中表现不佳,可能会有以下几个原因: 1. 数据质量问题:模型训练和测试的数据可能存在问题,比如数据标签错误、数据集采样不均衡、数据集中存在异常值等问题,这些问题可能会导致模型在实际预测中表现不佳。 2. 特征工程问题:模型的特征工程可能存在问题,导致模型无法很好地捕捉数据的特征,从而影响预测效果。 3. 模型选择问题:模型的选择可能不合适,比如选择的模型太简单,无法很好地拟合数据,或者选择的模型太复杂,导致过拟合等问题。 4. 超参数调整问题:模型的超参数可能没有调整到最佳状态,需要进行调整。 针对以上可能的原因,可以采取相应的措施进
recommend-type

JSBSim Reference Manual

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