用c语言写出对一个有N个学生的班级,每个学生有3门课程,分别为语文,数学,语言。该系统实现对班级成绩的录入、显示、删除等操作的管理。功能要求: (1)本系统采用一个结构体数组,每个数据的结构应当包括:学号、姓名、M门课程名称。 (2)本系统显示这样的菜单: 系统功能选项: a、 数据导入及显示 b、新记录输入 c、 删除记录 1)显示每门课程成绩最高的学生的基本信息 2)显示每门课程的平均成绩 3)显示超过某门课程平均成绩的学生人数 g、 退出系统 注意:需保证学号唯一性 (该题目用数组完成)

时间: 2024-03-18 22:39:58 浏览: 19
好的,我可以帮您完成这个任务。以下是C语言代码实现,供您参考: ```c #include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX_STUDENT_NUM 100 // 学生结构体 typedef struct { char id[20]; // 学号 char name[20]; // 姓名 float score[3]; // 三门课程成绩 } Student; // 学生数组 Student students[MAX_STUDENT_NUM]; int studentCount = 0; // 学生数量 // 显示菜单 void showMenu() { printf("\n系统功能选项:\n"); printf("a、数据导入及显示\n"); printf("b、新记录输入\n"); printf("c、删除记录\n"); printf("1)显示每门课程成绩最高的学生的基本信息\n"); printf("2)显示每门课程的平均成绩\n"); printf("3)显示超过某门课程平均成绩的学生人数\n"); printf("g、退出系统\n"); } // 数据导入及显示 void showData() { int i, j; printf("\n学号\t姓名\t语文\t数学\t英语\n"); for (i = 0; i < studentCount; i++) { printf("%s\t%s", students[i].id, students[i].name); for (j = 0; j < 3; j++) { printf("\t%.1f", students[i].score[j]); } printf("\n"); } } // 新记录输入 void addData() { printf("\n请输入学号:"); char id[20]; scanf("%s", id); int i; for (i = 0; i < studentCount; i++) { if (strcmp(students[i].id, id) == 0) { printf("学号已存在!\n"); return; } } strcpy(students[studentCount].id, id); printf("请输入姓名:"); scanf("%s", students[studentCount].name); printf("请输入语文成绩:"); scanf("%f", &students[studentCount].score[0]); printf("请输入数学成绩:"); scanf("%f", &students[studentCount].score[1]); printf("请输入英语成绩:"); scanf("%f", &students[studentCount].score[2]); studentCount++; printf("添加成功!\n"); } // 删除记录 void deleteData() { printf("\n请输入要删除学生的学号:"); char id[20]; scanf("%s", id); int i, j; for (i = 0; i < studentCount; i++) { if (strcmp(students[i].id, id) == 0) { for (j = i; j < studentCount - 1; j++) { students[j] = students[j + 1]; } studentCount--; printf("删除成功!\n"); return; } } printf("学号不存在!\n"); } // 显示每门课程成绩最高的学生的基本信息 void showMaxScore() { int i, j; for (i = 0; i < 3; i++) { float maxScore = 0; int maxIndex = -1; for (j = 0; j < studentCount; j++) { if (students[j].score[i] > maxScore) { maxScore = students[j].score[i]; maxIndex = j; } } printf("\n%s成绩最高的学生:\n", i == 0 ? "语文" : (i == 1 ? "数学" : "英语")); printf("学号:%s\n姓名:%s\n成绩:%.1f\n", students[maxIndex].id, students[maxIndex].name, maxScore); } } // 显示每门课程的平均成绩 void showAvgScore() { int i, j; float sum[3] = {0}; for (i = 0; i < studentCount; i++) { for (j = 0; j < 3; j++) { sum[j] += students[i].score[j]; } } printf("\n语文平均成绩:%.1f\n数学平均成绩:%.1f\n英语平均成绩:%.1f\n", sum[0] / studentCount, sum[1] / studentCount, sum[2] / studentCount); } // 显示超过某门课程平均成绩的学生人数 void showAboveAvgCount() { int course; printf("\n请输入课程编号:1-语文,2-数学,3-英语:"); scanf("%d", &course); if (course < 1 || course > 3) { printf("无效的课程编号!\n"); return; } float avgScore = 0; int i; for (i = 0; i < studentCount; i++) { avgScore += students[i].score[course - 1]; } avgScore /= studentCount; int count = 0; for (i = 0; i < studentCount; i++) { if (students[i].score[course - 1] > avgScore) { count++; } } printf("\n超过%s平均成绩的学生人数:%d\n", course == 1 ? "语文" : (course == 2 ? "数学" : "英语"), count); } int main() { char option; do { showMenu(); printf("\n请输入选项:"); scanf("%s", &option); switch (option) { case 'a': // 数据导入及显示 showData(); break; case 'b': // 新记录输入 addData(); break; case 'c': // 删除记录 deleteData(); break; case '1': // 显示每门课程成绩最高的学生的基本信息 showMaxScore(); break; case '2': // 显示每门课程的平均成绩 showAvgScore(); break; case '3': // 显示超过某门课程平均成绩的学生人数 showAboveAvgCount(); break; case 'g': // 退出系统 printf("\n谢谢使用!\n"); break; default: printf("\n无效的选项!\n"); break; } } while (option != 'g'); return 0; } ``` 这个程序可以实现您所需要的功能,同时保证学号的唯一性。

相关推荐

最新推荐

recommend-type

小学生测验C语言课程设计报告

1.通过本课程设计,培养上机动手能力,使学生巩固《C语言程序设计》课程学习的内容,掌握工程软件设计的基本方法,强化上机动手能力,闯过编程关; 2.为后续各门计算机课程的学习打下坚实基础; 3.理解程序设计的思路...
recommend-type

C语言实现学生选修课程系统设计

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

在C语言中输入一个大写字母,将其转变成一个小写字母,并且有相应的提示。

1.学习简单的C语言编程
recommend-type

C语言实现输入一个字符串后打印出该字符串中字符的所有排列

主要介绍了C语言实现输入一个字符串后打印出该字符串中字符的所有排列的方法,是数学中非常实用的排列算法,需要的朋友可以参考下
recommend-type

基于Java的SaaS OA协同办公毕设(源码+使用文档)

系统概述 SaaS OA协同办公系统通常包括以下几个关键组件: 用户界面(UI):提供用户交互界面,用于任务管理、日程安排、文档共享等。 后端服务:处理业务逻辑,如用户认证、数据管理、服务集成等。 数据库:存储用户数据、任务数据、文档数据等。 服务层:提供业务逻辑服务,如权限管理、工作流程等。 集成API:与其他系统集成,如邮件服务、短信服务等。 主要功能 用户认证与管理:用户登录、权限分配、用户资料管理。 任务管理:创建、分配、跟踪和归档任务。 日程管理:安排会议、提醒事件、查看日历。 文档管理:上传、下载、共享和版本控制文档。 协同工作:实时编辑文档、团队讨论、任务协作。 技术架构 Java:作为主要的编程语言。 Spring Boot:用于快速开发基于Java的后端服务。 Apache Shiro或Spring Security:用于安全和认证。 Thymeleaf或JSF:用于构建Java Web应用的用户界面。 数据库:如MySQL、PostgreSQL或MongoDB。 开发优势 实用性:解决企业日常办公需求,提高工作效率。 技术先进:使用当前流行的Java技术栈和框架。
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

MATLAB正态分布协方差分析:揭示正态分布变量之间的协方差

![MATLAB正态分布协方差分析:揭示正态分布变量之间的协方差](https://site.cdn.mengte.online/official/2021/11/20211128213137293.png) # 1. 正态分布概述 正态分布,又称高斯分布,是统计学中最重要的连续概率分布之一。它广泛应用于自然科学、社会科学和工程领域。 正态分布的概率密度函数为: ``` f(x) = (1 / (σ√(2π))) * exp(-(x - μ)² / (2σ²)) ``` 其中: - μ:正态分布的均值 - σ:正态分布的标准差 - π:圆周率 正态分布具有以下特性: - 对称性:
recommend-type

我正在开发一款个人碳足迹计算app,如何撰写其需求分析文档,请给我一个范例

为了更全面、清晰地定义个人碳足迹计算app的需求,需求分析文档应该包含以下内容: 1.项目简介:对该app项目的概述及目标进行说明。 2.用户分析:包括目标用户群、用户需求、行为等。 3.功能需求:对app的基本功能进行定义,如用户登录、数据录入、数据统计等。 4.非功能需求:对使用app的性能和质量等进行定义,如界面设计、数据安全、可扩展性等。 5.运行环境:包括app的开发环境和使用环境。 下面是一个范例: 需求分析文档 1. 项目简介 该app项目旨在为用户提供一款方便、易用、可定制的个人碳足迹计算平台,以促进环保和可持续性发展。 2. 用户分析 目标用户群:全球关
recommend-type

JSBSim Reference Manual

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