当前位置: 首页 > news >正文

C语言综合案例:学生成绩管理系统

C语言综合案例:学生成绩管理系统

需求

1.存储最多50名学生的信息(不使用结构体)

2.每个学生包含:

  • 学号(字符数组)
  • 姓名(字符数组)
  • 3门课程成绩(一维数组)

3.实现功能菜单:

  • 添加学生信息
  • 显示所有学生信息
  • 计算学生平均分
  • 查找最高分科目
  • 退出系统

代码

/*************************************************************************> File Name:    demo.c> Author:       张扣> Description:C语言综合案例:学生成绩管理系统> Created Time: 2025年02月27日 星期四 21时10分38秒************************************************************************/#include <stdio.h>
#include <string.h>//常量定义
#define MAX_STU 50      //定义学生数量
#define NAME_LEN 20     //名字的最大长度
#define ID_LEN 8        //学号的最大长度
#define COURSE_NUM 3    //课程数量//全局数组实现数据存储
char stu_id[MAX_STU][ID_LEN];       //学号二维数组
char stu_name[MAX_STU][NAME_LEN];   //姓名二维数组
int scores[MAX_STU][COURSE_NUM];    //成绩二维数组
int stu_count = 0;                  //当前实际学生数/***输入校验成绩*course 课程名称*/
int get_valid_score(const char* course)//const修饰的变量,值不能改变
{int score;while(1){printf("请输入%s成绩(0~100):",course);//校验:1.校验输入的数据格式 2.校验成绩的范围是否正确if(scanf("%d",&score == 1 && score >= 0 && score <= 100)){return score;}//输入有误while(getchar() != '\n');   //清空输入缓冲区printf("成绩输入有误!\n");}
}/***添加学生信息*/
void add_student()
{//判断数组是否已经存满if(stu_count >= MAX_STU){printf("存储已满!\n");return;//函数返回,后续代码不再执行}printf("\n---添加第%d个学生---\n",stu_count + 1);//输入学号printf("请输入学号:");scanf("%s",stu_id[stu_count]);//输入姓名printf("请输入姓名:");getchar();scanf("%[^\n]",stu_name[stu_count]);//%[^\n]匹配除了\n以外的输入//输入各科成绩scores[stu_count][0] = get_valid_score("语文");scores[stu_count][1] = get_valid_score("数学");scores[stu_count][2] = get_valid_score("英语");stu_count++;
}/***显示所有学生信息*/
void show_all()
{if(stu_count == 0){printf("暂无学生信息!\n");return;//跳出函数,后续代码不执行}//格式化输出信息printf("\n%-12s%-20s%-12s%-12s%-12s\n","学号","姓名","语文","数学","英语");for(int i = 0; i < stu_count; i++){//获取学号和姓名printf("%-12s%-20s",stu_id[i],stu_name[i]);for(int j = 0; j <  COURSE_NUM; j++){printf("%-12d",scores[i][j]);}printf("\n");}printf("\n");
}/***计算平均分*/
void calc_average()
{if(stu_count == 0){printf("暂无数据!\n");return;}char target_id[ID_LEN];printf("请输入要查询的学号:");scanf("%s",target_id);for(int i = 0; i < stu_count; i++){if(strcmp(stu_id[i],target_id) == 0){float sum = 0;for(int j = 0; j < COURSE_NUM; j++){sum += scores[i][j];}printf("平均分:%.2f\n",sum/COURSE_NUM);return;}}printf("未找到该学生!\n");
}/***查找最高分科目*/
void find_max()
{int max_score = -1;char max_course[20];char max_stu[NAME_LEN];for(int i = 0; i < stu_count; i++){for(int j = 0; j < COURSE_NUM; j++){if(scores[i][j] > max_score){max_score = scores[i][j];//最高成绩对应的姓名strcpy(max_stu,stu_name[i]);switch(j){case 0:strcpy(max_course,"语文");break;case 1:strcpy(max_course,"数学");break;case 2:strcpy(max_course,"英语");break;}}}}if(max_score != -1){printf("最高分记录:%s的%s获得%d分\n",max_stu,max_course,max_score);}else{printf("暂无数据!\n");}
}int main(int argc,char *argv[])
{//定义一个变量,用来接收用户的输入int choice;while(1){//设计头printf("\n=== 学生成绩管理系统 v1.0 ===\n");printf("1.添加学生信息\n");printf("2.显示所有学生信息\n");printf("3.查看平均分\n");printf("4.查看最高分\n");printf("5.退出系统\n");printf("请选择操作:");//过滤非数字int result = scanf("%d",&choice);//该判断的作用,检测是否输入的是整数,输入的数据匹配scanf() == 1,不匹配scanf() != 1if(result != 1){//如果输入的不是数字,就执行这个判断//清空输入缓冲区while(getchar() != '\n');printf("输入有误!\n");continue;}//过滤掉1~5以外的数字//校验switch(choice){case 1://添加学生信息add_student();break;case 2://显示所有学生信息show_all();break;case 3://查看平均分calc_average();break;case 4://查找最高分find_max();break;case 5://退出系统printf("系统已退出!\n");return 0;default:printf("无效选项!\n");}}return 0;
}

相关文章:

C语言综合案例:学生成绩管理系统

C语言综合案例&#xff1a;学生成绩管理系统 需求 1.存储最多50名学生的信息&#xff08;不使用结构体&#xff09; 2.每个学生包含&#xff1a; 学号&#xff08;字符数组&#xff09;姓名&#xff08;字符数组&#xff09;3门课程成绩&#xff08;一维数组&#xff09; …...

使用python做http代理请求

有这样一个需求现在有两台A&#xff0c;B两台电脑组成了一个局域网&#xff0c;在A电脑上开发webjava应用&#xff0c;需要调用第三方接口做http请求&#xff0c;但是这个请求只能在B电脑上请求。 一种解决方案&#xff1a;自定义一个中间服务&#xff0c;在电脑B上运行一个简…...

数据库事务的基本要素(ACID)

数据库事务的基本要素&#xff08;ACID&#xff09; 在数据库管理系统&#xff08;DBMS&#xff09;中&#xff0c;事务&#xff08;Transaction&#xff09;是一个或多个数据库操作的集合&#xff0c;这些操作要么全部成功&#xff0c;要么全部失败。事务的目标是保证数据的一…...

DeepSeek R1满血+火山引擎详细教程

DeepSeek R1满血火山引擎详细教程 一、安装Cherry Studio。 Cherry Studio AI 是一款强大的多模型 AI 助手,支持 iOS、macOS 和 Windows 平台。可以快速切换多个先进的 LLM 模型,提升工作学习效率。下载地址 https://cherry-ai.com/ 认准官网&#xff0c;无强制注册。 这…...

大型语言模型技术对比:阿里Qwen qwq、DeepSeek R1、OpenAI o3与Grok 3

1. 引言 在人工智能&#xff08;AI&#xff09;领域中&#xff0c;大型语言模型&#xff08;Large Language Models&#xff0c;简称LLM&#xff09;近年来取得了显著的突破。从早期的GPT-3到如今的各种高级模型&#xff0c;这些技术不仅推动了自然语言处理&#xff08;NLP&am…...

ArcGIS Pro可见性分析:精通地形视线与视域分析

在地理信息系统&#xff08;GIS&#xff09;的广泛应用中&#xff0c;可见性分析作为一项关键技术&#xff0c;发挥着不可替代的作用。 无论是城市规划、环境监测&#xff0c;还是军事侦察、景观设计&#xff0c;可见性分析都能提供精确的数据支持&#xff0c;帮助我们更好地理…...

计算机工具基础(五)——Vim

Vim MIT《Missing in CS Class(2020):Class 3》笔记 Vim是终端环境中常用的纯文本编辑器。Vim的默认配置文件位于~/.vimrc 模式 Vim有如下5种模式&#xff1a; 常规模式(Normal)&#xff1a;进入Vim后的默认模式&#xff0c;用于阅读文件。以Esc自其他模式中退至此模式插入模…...

Android应用app实现AI电话机器人接打电话

Android应用app实现AI电话机器人接打电话 --安卓AI电话机器人 一、前言 【Dialer3.0智能拨号器】Android版手机app&#xff0c;由于采用蓝牙电话的方式来调用手机SIM卡发起呼叫、接听来电&#xff0c;并接收和处理通话的声音&#xff0c;通常我们以“蓝牙电话方案”来称呼它。 …...

Mobaxterm服务器常用命令(持续更新)

切换文件夹 cd path # for example, cd /gpu03/deeplearning/进入不同GPU ssh mgmt ssh gpu01 ssh gpu03寻找文件位置 find /path -name file_name #for example, find / -name lib #在根目录下搜寻名为lib文件 #for example, find /home/deeplearning -name "lib"…...

Android14窗口管理自适应投屏分辨率

环境 console:/ # cat /proc/version Linux version 6.1.57 (机密信息) (Android (10087095, pgo, bolt, lto, -mlgo, based on r487747c) clang version 17.0.2 (https://android.googlesource.com/toolchain/llvm-project d9f89f4d16663d5012e5c09495f3b30ece3d2362), LLD 17…...

Shot Studio for macOS 发布 1.0.2

Shot Studio 是一个 macOS 的 app&#xff0c;专门为开发者设计&#xff0c;主要用于各大 app 应用商店的预览图设计。 提供了非常多的模板&#xff0c;也预设了很多尺寸。可以直接一键使用 在 1.0.2 这个版本中新增了&#xff1a; 文本渐变 图层&#xff1a;边框、颜色、圆…...

《深度学习实战》第4集:Transformer 架构与自然语言处理(NLP)

《深度学习实战》第4集&#xff1a;Transformer 架构与自然语言处理&#xff08;NLP&#xff09; 在自然语言处理&#xff08;NLP&#xff09;领域&#xff0c;Transformer 架构的出现彻底改变了传统的序列建模方法。它不仅成为现代 NLP 的核心&#xff0c;还推动了诸如 BERT、…...

Starrocks入门(二)

1、背景&#xff1a;考虑到Starrocks入门这篇文章&#xff0c;安装的是3.0.1版本的SR&#xff0c;参考&#xff1a;Starrocks入门-CSDN博客 但是官网的文档&#xff0c;没有对应3.0.x版本的资料&#xff0c;却有3.2或者3.3或者3.4或者3.1或者2.5版本的资料&#xff0c;不要用较…...

银河麒麟高级服务器操作系统在线调整/pro/{PID}/limits文件中nofile的软限制和硬限制参数值操作方法

银河麒麟高级服务器操作系统在线调整/pro/{PID}/limits文件中nofile的软限制和硬限制参数值操作方法 一 系统环境二 使用场景三 操作步骤 一 系统环境 [rootlocalhost ~]# nkvers ############## Kylin Linux Version ################# Release: Kylin Linux Advanced Server…...

html css js网页制作成品——HTML+CSS甜品店网页设计(5页)附源码

目录 一、&#x1f468;‍&#x1f393;网站题目 二、✍️网站描述 三、&#x1f4da;网站介绍 四、&#x1f310;网站效果 五、&#x1fa93; 代码实现 &#x1f9f1;HTML 六、&#x1f947; 如何让学习不再盲目 七、&#x1f381;更多干货 一、&#x1f468;‍&#x1f…...

Open WebUI项目源码学习记录(从0开始基于纯CPU环境部署一个网页Chat服务)

感谢您点开这篇文章:D&#xff0c;鼠鼠我是一个代码小白&#xff0c;下文是学习开源项目Open WebUI过程中的一点笔记记录&#xff0c;希望能帮助到你&#xff5e; 本人菜鸟&#xff0c;持续成长&#xff0c;能力不足有疏漏的地方欢迎一起探讨指正&#xff0c;比心心&#xff5e…...

【Python 入门基础】—— 人工智能“超级引擎”,AI界的“瑞士军刀”,

欢迎来到ZyyOvO的博客✨&#xff0c;一个关于探索技术的角落&#xff0c;记录学习的点滴&#x1f4d6;&#xff0c;分享实用的技巧&#x1f6e0;️&#xff0c;偶尔还有一些奇思妙想&#x1f4a1; 本文由ZyyOvO原创✍️&#xff0c;感谢支持❤️&#xff01;请尊重原创&#x1…...

蓝桥杯练习代码

一、最长公共前缀 编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀&#xff0c;返回空字符串 ""。 示例 1&#xff1a; 输入&#xff1a;strs ["flower","flow","flight"] 输出&#xff1a;"fl"示例…...

Imagination通过最新的D系列GPU IP将效率提升至新高度

Imagination DXTP GPU IP在加速移动设备和其他电力受限设备上的图形和计算工作负载时&#xff0c;能够延长电池续航时间。 英国伦敦 – 2025年2月25日 – 今日&#xff0c;Imagination Technologies&#xff08;“Imagination”&#xff09;宣布推出其最新的GPU IP——Imagina…...

C高级——shell(3)

一、shell的选择结构 1.回顾&#xff1a;C语言的选择结构:if , if else if ,if else,switch &#xff08;switch的执行速度最快&#xff09; 2.shell的选择结构&#xff1a; 单分支if 双分支 if else 多分支if elif case..in 1.1 shell的选择结构的格式 --------C语言的格式--…...

智慧医疗能源事业线深度画像分析(上)

引言 医疗行业作为现代社会的关键基础设施,其能源消耗与环境影响正日益受到关注。随着全球"双碳"目标的推进和可持续发展理念的深入,智慧医疗能源事业线应运而生,致力于通过创新技术与管理方案,重构医疗领域的能源使用模式。这一事业线融合了能源管理、可持续发…...

IGP(Interior Gateway Protocol,内部网关协议)

IGP&#xff08;Interior Gateway Protocol&#xff0c;内部网关协议&#xff09; 是一种用于在一个自治系统&#xff08;AS&#xff09;内部传递路由信息的路由协议&#xff0c;主要用于在一个组织或机构的内部网络中决定数据包的最佳路径。与用于自治系统之间通信的 EGP&…...

智能在线客服平台:数字化时代企业连接用户的 AI 中枢

随着互联网技术的飞速发展&#xff0c;消费者期望能够随时随地与企业进行交流。在线客服平台作为连接企业与客户的重要桥梁&#xff0c;不仅优化了客户体验&#xff0c;还提升了企业的服务效率和市场竞争力。本文将探讨在线客服平台的重要性、技术进展、实际应用&#xff0c;并…...

第25节 Node.js 断言测试

Node.js的assert模块主要用于编写程序的单元测试时使用&#xff0c;通过断言可以提早发现和排查出错误。 稳定性: 5 - 锁定 这个模块可用于应用的单元测试&#xff0c;通过 require(assert) 可以使用这个模块。 assert.fail(actual, expected, message, operator) 使用参数…...

在Ubuntu中设置开机自动运行(sudo)指令的指南

在Ubuntu系统中&#xff0c;有时需要在系统启动时自动执行某些命令&#xff0c;特别是需要 sudo权限的指令。为了实现这一功能&#xff0c;可以使用多种方法&#xff0c;包括编写Systemd服务、配置 rc.local文件或使用 cron任务计划。本文将详细介绍这些方法&#xff0c;并提供…...

Java 二维码

Java 二维码 **技术&#xff1a;**谷歌 ZXing 实现 首先添加依赖 <!-- 二维码依赖 --><dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.5.1</version></dependency><de…...

springboot整合VUE之在线教育管理系统简介

可以学习到的技能 学会常用技术栈的使用 独立开发项目 学会前端的开发流程 学会后端的开发流程 学会数据库的设计 学会前后端接口调用方式 学会多模块之间的关联 学会数据的处理 适用人群 在校学生&#xff0c;小白用户&#xff0c;想学习知识的 有点基础&#xff0c;想要通过项…...

安全突围:重塑内生安全体系:齐向东在2025年BCS大会的演讲

文章目录 前言第一部分&#xff1a;体系力量是突围之钥第一重困境是体系思想落地不畅。第二重困境是大小体系融合瓶颈。第三重困境是“小体系”运营梗阻。 第二部分&#xff1a;体系矛盾是突围之障一是数据孤岛的障碍。二是投入不足的障碍。三是新旧兼容难的障碍。 第三部分&am…...

Mysql8 忘记密码重置,以及问题解决

1.使用免密登录 找到配置MySQL文件&#xff0c;我的文件路径是/etc/mysql/my.cnf&#xff0c;有的人的是/etc/mysql/mysql.cnf 在里最后加入 skip-grant-tables重启MySQL服务 service mysql restartShutting down MySQL… SUCCESS! Starting MySQL… SUCCESS! 重启成功 2.登…...

第7篇:中间件全链路监控与 SQL 性能分析实践

7.1 章节导读 在构建数据库中间件的过程中&#xff0c;可观测性 和 性能分析 是保障系统稳定性与可维护性的核心能力。 特别是在复杂分布式场景中&#xff0c;必须做到&#xff1a; &#x1f50d; 追踪每一条 SQL 的生命周期&#xff08;从入口到数据库执行&#xff09;&#…...