使用C语言设计并实现一个成绩管理系统

使用C语言设计并实现一个成绩管理系统,该系统用于教师管理一门课程的成绩。

系统功能:成绩录入、打印成绩单、修改成绩、统计分数段、统计平均分、统计不及格学生,相关要求:

1) 系统要有主菜单界面,让教师了解系统的功能,以及如何选择系统功能。

2) 系统应该能够让教师自由选择并完成成绩录入、打印成绩单、修改成绩、统计分数段、统计平均分、统计不及格学生等项目中的任何一项或多项工作。

#include <stdio.h>  #define MAX_STUDENTS 100  
#define PASS_MARK 60  struct Student {  char name[50];  int score;  
};  void printMenu();  
void inputScores(struct Student students[], int *numStudents);  
void printScoreSheet(struct Student students[], int numStudents);  
void modifyScore(struct Student students[], int numStudents);  
void statisticsScoreSegment(struct Student students[], int numStudents);  
void statisticsAverageScore(struct Student students[], int numStudents);  
void statisticsFailedStudents(struct Student students[], int numStudents);  int main() {  struct Student students[MAX_STUDENTS];  int numStudents = 0;  int choice;  do {  printMenu();  printf("请输入你的选择(1-6):");  scanf("%d", &choice);  switch(choice) {  case 1:  inputScores(students, &numStudents);  break;  case 2:  printScoreSheet(students, numStudents);  break;  case 3:  modifyScore(students, numStudents);  break;  case 4:  statisticsScoreSegment(students, numStudents);  break;  case 5:  statisticsAverageScore(students, numStudents);  break;  case 6:  statisticsFailedStudents(students, numStudents);  break;  default:  printf("无效的选择,请重新选择。\n");  break;  }  } while(choice != 7);  return 0;  
}  void printMenu() {  printf("\n--------成绩管理系统--------\n");  printf("1. 录入成绩\n");  printf("2. 打印成绩单\n");  printf("3. 修改成绩\n");  printf("4. 统计分数段\n");  printf("5. 统计平均分\n");  printf("6. 统计不及格学生\n");  printf("7. 退出\n");  printf("请选择一个操作:\n");  
}  void inputScores(struct Student students[], int *numStudents) {  char continueInput = 'y';  while(continueInput == 'y') {  if(*numStudents >= MAX_STUDENTS) {  printf("已达到最大学生数量,无法再录入新的学生。\n");  return;  }  printf("请输入学生姓名:");  scanf("%s", students[*numStudents].name);  printf("请输入学生成绩:");  scanf("%d", &students[*numStudents].score);  (*numStudents)++;  printf("是否继续录入?(y/n):");  scanf(" %c", &continueInput); // 注意前面的空格,用于跳过前面可能残留的换行符。  }  
}  void printScoreSheet(struct Student students[], int numStudents) {  printf("\n成绩单\n");  printf("姓名\t成绩\n");  for(int i = 0; i < numStudents; i++) {  printf("%s\t%d\n", students[i].name, students[i].score);  }  
}  void modifyScore(struct Student students[], int numStudents) {  char name[50];  int newScore;  printf("请输入要修改成绩的学生姓名:");  scanf("%s", name);  for(int i = 0; i < numStudents; i++) {  if(strcmp(name, students[i].name) == 0) {  printf("请输入新的成绩:");  scanf("%d", &newScore);  students[i].score = newScore;  printf("成绩已成功修改。\n");  return;  }  }  printf("未找到该学生。\n");  
}  void statisticsScoreSegment(struct Student students[], int numStudents) {  int scoreSegment[11] = {0}; // 存储每个分数段的学生数量,下标代表分数段,例如scoreSegment[10

程序没有使用数据库或文件存储数据,所有的成绩都保存在内存中,因此当程序结束时,所有的数据都会丢失。在实际应用中,你可能需要使用数据库或文件来持久化存储数据。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/230804.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

关于《企业数字化平台》

大家好&#xff0c;开始我们《企业数字化平台》系列栏目&#xff0c;首先做一个简短的自我介绍&#xff0c;Duster是本人现在的笔名&#xff0c;曾用笔名尘埃&#xff0c;写了本书《生活新视界》&#xff0c;如果有缘的话&#xff0c;希望您读到他&#xff0c;如果您能读懂&…

Android Stuido报错处理

仅用作报错记录。防止以后出项问题不知如何解决。 报错1 Dependency‘androidx.annotation:xx requires libraries and applications … 需要修改CompileSDKVersion更改为报错中提示的版本 打开项目build.gradle文件&#xff0c;将compileSdk和targetSdk修改为报错中提示的版…

【深入pytorch】transforms.functional 梯度流动问题

实验环境&#xff1a; torch.__version__ Out[3]: 1.12.1cu113首先测试一下&#xff1a; import torch from torchvision.transforms import functional as F from torch.autograd import Function img torch.randn(1, 3, 224, 224) startpoints torch.FloatTensor([[0., 0…

.NET Core中鉴权 Authentication Authorization

Authentication: 鉴定身份信息&#xff0c;例如用户有没有登录&#xff0c;用户基本信息 Authorization: 判定用户有没有权限 使用框架提供的Cookie鉴权方式 1.首先在服务容器注入鉴权服务和Cookie服务支持 services.AddAuthentication(options > {options.DefaultAuthe…

【性能优化】一、使用JMeter进行压力测试并进行简单调优

压力测试 压力测试不同于功能测试&#xff0c;其目的是为了测试出系统在高并发&#xff0c;高数据量的情况下可能会出现的问题&#xff08;内存泄露、并发、同步&#xff09; 一种典型的内存泄漏就是对象在创建之后由很多用户进行调用&#xff0c;导致对象被不断新建但复用率…

2020 年网络安全应急响应分析报告

2020 年全年奇安信集团安服团队共参与和处置了全国范围内 660起网络安全应急响应事件。2020 年全年应急响应处置事件行业 TOP3 分别为:政府部门行业(146 起)医疗卫生行业(90 起)以及事业单位(61 起&#xff0c;事件处置数分别占应急处置所有行业的 22.1%、13.6%、9.2%。2020 年…

防篡改、控权限,一键搞定!迅软DLP助您轻松应对企业外发风险

由于电子文档传播性强&#xff0c;政企单位在与客户或合作伙伴分享重要资料时&#xff0c;存在非法篡改和无序传播的风险。因此&#xff0c;为了保护自身利益并确保与外界的安全交流&#xff0c;对外发文件的有效安全管控变得至关重要。 迅软DLP提供了针对外发文件的严格安全管…

OAuth 2.0进阶指南:解锁高级功能的秘密

欢迎来到我的博客&#xff0c;代码的世界里&#xff0c;每一行都是一个故事 OAuth 2.0进阶指南&#xff1a;解锁高级功能的秘密 前言令牌管理与刷新令牌的生命周期&#xff1a;刷新机制&#xff1a;有效管理访问令牌&#xff0c;防止令牌泄漏的方法&#xff1a; 客户端凭证客户…

宝塔Linux:部署His医疗项目通过jar包的方式

&#x1f4da;&#x1f4da; &#x1f3c5;我是默&#xff0c;一个在CSDN分享笔记的博主。&#x1f4da;&#x1f4da; ​​​ &#x1f31f;在这里&#xff0c;我要推荐给大家我的专栏《Linux》。&#x1f3af;&#x1f3af; &#x1f680;无论你是编程小白&#xff0c;还是有…

OpenAI发布官方提示工程指南和示例

OpenAI提供了一系列策略和技巧&#xff0c;以帮助用户更有效地使用ChatGPT。这些方法可以单独使用也可以组合使用&#xff0c;以获得更好的效果。官方给出了6 个大提示策略&#xff08;并给出了具体教程和示例&#xff09; 主要策略&#xff1a; 1、清晰的指令&#xff1a; 告…

测试估算:确保项目成功的关键

引言&#xff1a; 在软件开发过程中&#xff0c;测试是不可或缺的一环。它可以帮助发现和修复软件中的错误和缺陷&#xff0c;提高软件的质量和可靠性。然而&#xff0c;测试工作需要耗费大量的时间和资源&#xff0c;因此进行测试估算是至关重要的。本文将介绍测试估算的重要性…

微信小程序校园跑腿系统怎么做,如何做,要做多久

​ 在这个互联网快速发展、信息爆炸的时代&#xff0c;人人都离不开手机&#xff0c;每个人都忙于各种各样的事情&#xff0c;大学生也一样&#xff0c;有忙于学习&#xff0c;忙于考研&#xff0c;忙着赚学分&#xff0c;忙于参加社团&#xff0c;当然也有忙于打游戏的&#x…

js中国标准时间转换

一、将中国标准时间转换为 例如 2023-12-18 08:00:00 // 获取今天的日期let today new Date();// 设置 beginDate 为今天的上午8点let beginDate new Date(today.getFullYear(), today.getMonth(), today.getDate(), 8, 0, 0, 0);// 设置 finishDate 为 beginDate 的后三天的…

快速排序(一)

目录 快速排序&#xff08;hoare版本&#xff09; 初级实现 问题改进 中级实现 时空复杂度 高级实现 三数取中 快速排序&#xff08;hoare版本&#xff09; 历史背景&#xff1a;快速排序是Hoare于1962年提出的一种基于二叉树思想的交换排序方法 基本思想&#xff1a…

Flink系列之:窗口去重

Flink系列之&#xff1a;窗口去重 一、窗口去重二、示例三、限制 一、窗口去重 适用于Streaming窗口去重是一种特殊的去重&#xff0c;它根据指定的多个列来删除重复的行&#xff0c;保留每个窗口和分区键的第一个或最后一个数据。对于流式查询&#xff0c;与普通去重不同&…

软件测试技术分享| Appium用例录制

下载及安装 下载地址&#xff1a; github.com/appium/appi… 下载对应系统的 Appium 版本&#xff0c;安装完成之后&#xff0c;点击 “Start Server”&#xff0c;就启动了 Appium Server。 在启动成功页面点击右上角的放大镜&#xff0c;进入到创建 Session 页面。配置好…

QT作业3

完善对话框&#xff0c;点击登录对话框&#xff0c;如果账号和密码匹配&#xff0c;则弹出信息对话框&#xff0c;给出提示”登录成功“&#xff0c;提供一个Ok按钮&#xff0c;用户点击Ok后&#xff0c;关闭登录界面&#xff0c;跳转到其他界面 如果账号和密码不匹配&#xf…

Java 程序的命令行解释器

前几天我写了一个简单的词法分析器项目&#xff1a;https://github.com/MarchLiu/oliva/tree/main/lora-data-generator 。 通过词法分析快速生成 lora 训练集。在这个过程中&#xff0c;我需要通过命令行参数给这个 java 程序传递一些参数。 这个工作让我想起了一些不好的回忆…

对Arthas-Trace命令的一次深度剖析,竟发现...

前言&#xff1a;此文仅为笔者学习Arthas源码的一次尝试&#xff0c;不对本文结论负全部责任。 一、背景 笔者在学习arthas这个十分方便的小工具的过程中&#xff0c;发现&#xff1a; 目前据arthas官方解释&#xff1a;因为trace多层是十分消耗资源的&#xff0c;因此trace命…

【期刊出版征稿】2024年艺术、教育和管理国际学术会议(ICAEM2024)

2024年艺术、教育和管理国际学术会议 2024 International Conference on Arts, Education and Management&#xff08;ICAEM2024&#xff09; 2024年艺术、教育和管理国际学术会议&#xff08;ICAEM2024&#xff09;将于2024年2月02-04日在马来西亚-吉隆坡召开。会议主题主要…