某班有M人(具体人数由键盘输入)参加期末考试,有N门课程(具体课程数由键盘输入)用C语言编程实现包括以下功能的菜单驱动的学生成绩管理系统。

时间: 2024-03-09 10:47:22 浏览: 27
好的,我理解了,您想了解如何用C语言编写一个菜单驱动的学生成绩管理系统,我可以给您提供一些思路和代码示例。 首先,您需要定义一些结构体来存储学生信息和成绩信息,例如: ```c #define MAX_NAME_LEN 20 #define MAX_COURSE_NUM 10 // 学生信息结构体 typedef struct { int id; // 学号 char name[MAX_NAME_LEN]; // 姓名 } Student; // 成绩信息结构体 typedef struct { int student_id; // 学号 int course_id; // 课程编号 float score; // 成绩 } Score; ``` 然后,您可以定义一个数组来存储所有学生和成绩信息: ```c #define MAX_STUDENT_NUM 100 Student students[MAX_STUDENT_NUM]; Score scores[MAX_STUDENT_NUM * MAX_COURSE_NUM]; int student_num = 0; // 实际学生数量 int score_num = 0; // 实际成绩数量 ``` 接下来,您可以编写一些函数来实现不同的功能,例如: 1. 添加学生信息: ```c void add_student() { if (student_num >= MAX_STUDENT_NUM) { printf("学生数量已达上限,无法添加新学生!\n"); return; } printf("请输入新学生的学号和姓名:"); scanf("%d %s", &students[student_num].id, students[student_num].name); student_num++; printf("添加成功!\n"); } ``` 2. 添加成绩信息: ```c void add_score() { int student_id, course_id; float score; printf("请输入学生的学号和课程编号:"); scanf("%d %d", &student_id, &course_id); // 查找学生是否存在 int i; for (i = 0; i < student_num; i++) { if (students[i].id == student_id) { break; } } if (i == student_num) { printf("该学生不存在!\n"); return; } // 添加成绩信息 printf("请输入该学生的成绩:"); scanf("%f", &score); scores[score_num].student_id = student_id; scores[score_num].course_id = course_id; scores[score_num].score = score; score_num++; printf("添加成功!\n"); } ``` 3. 查询学生成绩: ```c void query_score() { int student_id, course_id; printf("请输入要查询的学生的学号和课程编号:"); scanf("%d %d", &student_id, &course_id); // 查找学生是否存在 int i; for (i = 0; i < student_num; i++) { if (students[i].id == student_id) { break; } } if (i == student_num) { printf("该学生不存在!\n"); return; } // 查找成绩信息 int j; for (j = 0; j < score_num; j++) { if (scores[j].student_id == student_id && scores[j].course_id == course_id) { break; } } if (j == score_num) { printf("该学生没有该课程的成绩!\n"); return; } printf("该学生的成绩为:%.2f\n", scores[j].score); } ``` 最后,您可以编写一个菜单函数来实现交互式操作: ```c void menu() { printf("欢迎使用学生成绩管理系统!\n"); while (1) { printf("请选择要执行的操作:\n"); printf("1. 添加学生信息\n"); printf("2. 添加成绩信息\n"); printf("3. 查询学生成绩\n"); printf("4. 退出系统\n"); int choice; scanf("%d", &choice); switch (choice) { case 1: add_student(); break; case 2: add_score(); break; case 3: query_score(); break; case 4: printf("谢谢使用!\n"); return; default: printf("无效的选项!\n"); break; } } } ``` 您可以在主函数中调用菜单函数来启动程序: ```c int main() { menu(); return 0; } ``` 以上就是一个简单的学生成绩管理系统的实现。当然,这只是一个基础版本,您可以根据自己的需求进行扩展。

相关推荐

某班有最多不超过30人(具体人数由键盘输入)参加期末考试,最多不超过6门(具体门数由键盘输入)。定义结构体类型描述学生信息,每个学生信息包括:学号、姓名、多门课的成绩、总成绩和平均成绩。用结构体数组作为函数参数,编程实现如下菜单驱动的学生成绩管理系统。 (1) 录入每个学生的学号、姓名和各科考试成绩。 (2) 计算每门课程的总分和平均分。 (3) 计算每个学生的总分和平均分。 (4) 按每个学生的总分由高到低排出名次表。 (5) 按学号由小到大排出成绩表。 (6) 按姓名的字典顺序排出成绩表。 (7) 按学号查询学生排名极其考试成绩。 (8) 按姓名查询学生排名极其考试成绩。 (9) 按优秀(90~100)、良好(80~90)、中等(70~80)、及格(60~70)、不及格(0~59)5个类别,对每门课程分别统计每个类别的人数以及所占的百分比。 (10) 输出每个学生的学号、姓名、各科考试成绩以及每门课程的总分和平均分。 要求程序运行后先显示如下菜单,并提示用户输入选项: 1. Input record 2. Caculate total and average score of every course 3. Caculate total and average score of every student 4. Sort in descending order by total score of every student 5. Sort in ascending order by number 6. Sort in dictionary order by name 7. Search by number 8. Search by name 9. Statistic analysis for every course 10. List record 0. Exit

最新推荐

recommend-type

开源、易集成的人脸识别系统

这个图人脸检测服务用于检测图像中的所有人脸。人脸验证可用于:当客户向您提供身份证或驾驶执照并且您需要验证这是否是他时、当用户将他的社交网络帐户连接到您的应用程序并且您想要验证这是否是他时。它能在图像上找到对应的人脸,可以用于收集有关您的商店在不同性别中受欢迎程度的统计数据、收集有关您的活动在哪些年龄段受欢迎的统计数据、获取地标信息以了解客户的视线、收集商店中有多少顾客的统计数据、识别所有顾客是否正确佩戴口罩。
recommend-type

实验3.circ(王龙建2310461170) (2).zip

实验3.circ(王龙建2310461170) (2).zip
recommend-type

stable diffusion提示词-人物系列

stable diffusion提示词人物系列,包含提示词和预览图,把提示词复制到stable diffusion里,即可使用。
recommend-type

2024-2030中国X射线光电子能谱仪(XPS)市场现状研究分析与发展前景预测报告 Sample.pdf

QYResearch是全球知名的大型咨询公司,行业涵盖各高科技行业产业链细分市场,横跨如半导体产业链(半导体设备及零部件、半导体材料、集成电路、制造、封测、分立器件、传感器、光电器件)、光伏产业链(设备、硅料/硅片、电池片、组件、辅料支架、逆变器、电站终端)、新能源汽车产业链(动力电池及材料、电驱电控、汽车半导体/电子、整车、充电桩)、通信产业链(通信系统设备、终端设备、电子元器件、射频前端、光模块、4G/5G/6G、宽带、IoT、数字经济、AI)、先进材料产业链(金属材料、高分子材料、陶瓷材料、纳米材料等)、机械制造产业链(数控机床、工程机械、电气机械、3C自动化、工业机器人、激光、工控、无人机)、食品药品、医疗器械、农业等。 邮箱:market@qyresearch.com
recommend-type

3ds Max 2018 - Simplified Chinese.lnk

3ds Max 2018 - Simplified Chinese.lnk
recommend-type

STC89C51 简单时钟

STC89C51 简单时钟,叫你从基础开始学习单片机,
recommend-type

管理建模和仿真的文件

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

MATLAB归一化方法大比拼:5种方法,哪种最适合你的数据?

![MATLAB归一化方法大比拼:5种方法,哪种最适合你的数据?](https://www.finebi.com/wp-content/uploads/2019/11/FineBI%E8%A1%8C%E4%B8%9A%E9%A9%BE%E9%A9%B6%E8%88%B1-1024x510.png) # 1. MATLAB归一化概述 归一化是一种数据预处理技术,用于将数据缩放到特定范围内,从而消除不同特征之间的尺度差异。在MATLAB中,有各种归一化方法可用于不同类型的数据和应用程序。 归一化的主要目的是: - 提高模型的训练效率和准确性,通过消除特征之间的尺度差异,使模型能够更有效地学习
recommend-type

failed to register layer: ApplyLayer exit status 1 stdout: stderr: archive/tar: invalid tar header

很抱歉听到这个问题。这个错误通常是由于Docker镜像损坏或Docker存储库中缺少所需的图层引起的。您可以尝试以下几种方法来解决这个问题: 1. 清理Docker镜像和容器:使用命令“docker system prune”清理不再使用的Docker对象。 2. 检查Docker存储库:确保您正在使用可靠的Docker存储库,并检查是否存在所有必需的图层。 3. 重新下载Docker镜像:如果您确定问题是由于损坏的Docker镜像引起的,则可以尝试重新下载Docker镜像。 4. 更新Docker版本:如果您使用的是旧版Docker,则可能会出现此问题。尝试更新到最新版本的Docke
recommend-type

Linux系统常用操作命令大全手册

附件是Linux系统常用操作命令大全手册,是 markdown格式,其中覆盖了Linux系统管理、文件操作、网络配置等多个方面,都是日常工作中非常常用的命令,欢迎大家下载学习使用!