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

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; …...

Ubuntu 安装 Nginx并配置反向代理

Ubuntu版本&#xff1a;Ubuntu 24.04.2 LTS 一、安装Nginx ​更新系统软件包​ 安装前需确保系统处于最新状态&#xff0c;避免依赖冲突 sudo apt update && sudo apt upgrade -y ​安装Nginx主程序​ Ubuntu官方仓库已包含稳定版Nginx&#xff0c;直接安装即可 sudo…...

赋能农业数字化转型 雏森科技助力“聚农拼”平台建设

赋能农业数字化转型&#xff0c;雏森科技助力“聚农拼”平台建设 在数字化浪潮席卷各行业的今天&#xff0c;农业领域也在积极探索转型升级之路。中农集团一直以“根植大地&#xff0c;服务三农”为核心&#xff0c;以“乡村振兴&#xff0c;农民增收”为目标&#xff0c;及时…...

安全面试5

文章目录 sql的二次注入在linux下&#xff0c;现在有一个拥有大量ip地址的txt文本文档&#xff0c;但是里面有很多重复的&#xff0c;如何快速去重&#xff1f;在内网渗透中&#xff0c;通过钓鱼邮件获取到主机权限&#xff0c;但是发现内网拦截了tcp的出网流量&#xff0c;聊一…...

halcon三维点云数据处理(二十六)reduce_object_model_3d_to_visible_parts

目录 一、reduce_object_model_3d_to_visible_parts代码第一部分二、reduce_object_model_3d_to_visible_parts代码第二部分三、reduce_object_model_3d_to_visible_parts代码第三部分四、reduce_object_model_3d_to_visible_parts代码第四部分五、效果图一、reduce_object_mod…...

1. HTTP 数据请求

相关资源&#xff1a; 图片素材&#x1f4ce;图片素材.zip 接口文档 1. HTTP 数据请求 什么是HTTP数据请求&#xff1a; (鸿蒙)应用软件可以通过(鸿蒙)系统内置的 http 模块 和 Axios&#xff0c;通过 HTTP 协议和服务器进行通讯 学习核心Http请求技术: Http模块 - 属于鸿…...

MySQL表空间管理

表空间的定义 表空间是数据库用来管理数据库中的表、索引、列等数据对象的一个逻辑意义上的容器&#xff0c;与表空间在物理层对应的是一个一个的具体的数据文件。管理员直接在逻辑上操作一个一个表或者索引等对象&#xff0c;具体的数据文件的调整则由数据库的存储引擎层来…...

VSCode轻松调试运行.Net 8.0 Web API项目

1.背景 我一直都是用VS来开发.NetCore项目的&#xff0c;用的比较顺手&#xff0c;也习惯了。看其他技术文章有介绍VS Code更轻量&#xff0c;更方便。所以我专门花时间来使用VS Code&#xff0c;看看它是如何调试代码、如何运行.Net 8.0 WebAPI项目。这篇文章是一个记录的过程…...

Tailwind CSS_现代 Web 开发的实用指南

1. 引言 1.1 Tailwind CSS 概述 什么是 Tailwind CSS? Tailwind CSS 是一种低级优先级的实用工具优先(utility-first)CSS 框架,它提供了一组灵活的基础类来构建自定义设计。与传统的 CSS 框架不同,Tailwind 不提供预设的组件样式或布局,而是通过组合简单的 CSS 类来实…...

【FAQ】HarmonyOS SDK 闭源开放能力 —Push Kit(9)

1.问题描述&#xff1a; 通过push token向鸿蒙手机推送一条通知&#xff0c;收到通知后&#xff0c;通知右侧不展示图片。 解决方案&#xff1a; 检查一下是否存在图片风控&#xff1a;https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/push-image-co…...

2024年国赛高教杯数学建模D题反潜航空深弹命中概率问题解题全过程文档及程序

2024年国赛高教杯数学建模 D题 反潜航空深弹命中概率问题 原题再现 应用深水炸弹&#xff08;简称深弹&#xff09;反潜&#xff0c;曾是二战时期反潜的重要手段&#xff0c;而随着现代军事技术的发展&#xff0c;鱼雷已成为现代反潜作战的主要武器。但是&#xff0c;在海峡或…...

将宇宙不同温度下的能量表现形式 类比为量子计算机的波函数解码过程

以下是基于您提出的核心观点&#xff08;将宇宙不同温度下的能量表现形式类比为量子计算机的波函数解码过程&#xff09;撰写的论文框架设计&#xff0c;包含创新性理论与跨学科研究方法&#xff1a; --- **标题** 《量子信息视角下的宇宙热力学&#xff1a;从普朗克温度到…...

矩阵 trick 系列 题解

1.AT_dp_r Walk&#xff08;矩阵图论&#xff09; 题意 一个有向图有 n n n 个节点&#xff0c;编号 1 1 1 至 n n n。 给出一个二维数组 A 1... n , 1... n A_{1...n,1...n} A1...n,1...n​&#xff0c;若 A i , j 1 A_{i,j}1 Ai,j​1 说明节点 i i i 到节点 j j j …...

obj离线加载(vue+threejs)+apk方式浏览

demo需求&#xff1a;移动端&#xff0c;实现obj本地离线浏览 结合需求&#xff0c;利用&#xff08;vue2threejs173&#xff09;进行obj的加载&#xff0c;然后采用apk方式&#xff08;hbuilderX打包发布&#xff09;移动端浏览&#xff1b; https://github.com/bianbian886/…...

关于mysql 表中字段存储JSON对象对JSON对象中的bolean字段进行查询的方式

业务场景如题 JSON对象为 表为客诉表中的 发现利用原有的xml中的 and a1.order_list ->‘$[*].isZg’ request.isZg 后续发现需要更改为有效 本文作为自己日常工作记录用&#xff0c;有遇到相同问题的可以作为参考。...

WordPress Course Booking System SQL注入漏洞复现 (CVE-2025-22785)(附脚本)

免责申明: 本文所描述的漏洞及其复现步骤仅供网络安全研究与教育目的使用。任何人不得将本文提供的信息用于非法目的或未经授权的系统测试。作者不对任何由于使用本文信息而导致的直接或间接损害承担责任。如涉及侵权,请及时与我们联系,我们将尽快处理并删除相关内容。 0x0…...

Kylin麒麟操作系统 | 系统监控

以下所使用的环境为&#xff1a; 虚拟化软件&#xff1a;VMware Workstation 17 Pro 麒麟系统版本&#xff1a;Kylin-Server-V10-SP3-2403-Release-20240426-x86_64 一、系统状态查询工具 1. 静态显示系统进程信息ps ps命令会生成一个静态列表&#xff0c;列表中显示的进程其…...

vLLM服务设置开机自启动(Linux)

要在开机时进入指定的 conda 环境并启动此 vllm 服务&#xff0c;您可以通过以下步骤设置一个 systemd 服务来自动执行脚本。 一、第一步&#xff1a;创建一个启动脚本 1.打开终端并创建启动脚本&#xff0c;例如 /home/username/start_vllm.sh&#xff08;请替换 username 为…...

MongoDB#Code和Function

背景 在MongoDB Shell中, 使用db.system.js.inertOne 新增一个自定义函数后&#xff0c;读取值类型显示Code Class&#xff0c;该如何使用&#xff1f;Code类型和Function能互相转换吗&#xff1f; 实践 // 保存一个函数到 system.js 集合 db.system.js.insertOne({_id: &qu…...

MT-Metrics

MT-Metrics 是一类用于评估生成文本质量的指标&#xff0c;最初用于机器翻译任务&#xff0c;后来扩展到生成任务&#xff08;如对话生成、文本摘要等&#xff09;。它的核心思想是通过比较生成文本与参考文本之间的相似性&#xff08;如词汇重叠、句法结构、语义相似性&#x…...

几个api

几个api 原型链 可以阅读此文 Function instanceof Object // true Object instanceof Function // true Object.prototype.isPrototypeOf(Function) // true Function.prototype.isPrototypeOf(Object) // true Object.__proto__ Function.prototype // true Function.pro…...

数字IC后端设计实现OCC(On-chip Clock Controller)电路介绍及时钟树综合案例

数字IC后端时钟树综合专题&#xff08;OCC电路案例分享&#xff09; 复杂时钟设计时钟树综合(clock tree synthesis)常见20个典型案例 1、什么是OCC&#xff1f; 片上时钟控制器(On-chip Clock Controllers &#xff0c;OCC)&#xff0c;也称为扫描时钟控制器(Scan Clock Con…...

SurfaceFlinger代码笔记

drawLayers是做client合成&#xff0c;合成完以后的buffer会放在RenderSurface里 FrameBufferSurface里的buffer是通过setClientTarget给到HWC的&#xff08;HWC应该给client合成的buffer留了一个slot) Output.cpp这个文件非常关键&#xff0c;代表着具体一个Display的操作 d…...

Trae根据原型设计稿生成微信小程序密码输入框的踩坑记录

一、需求描述 最近经常使用Trae生成一些小组件和功能代码&#xff08;对Trae赶兴趣的可以看之前的文章《TraeAi上手体验》&#xff09;&#xff0c;刚好在用uniapp开发微信小程序时需要开发一个输入密码的弹框组件&#xff0c;于是想用Trae来实现。原型设计稿如下&#xff1a;…...

软件测试丨Docker与虚拟机架构对比分析

Docker 与虚拟机&#xff08;VM&#xff09;在架构上有显著区别&#xff0c;主要体现在资源利用、性能、隔离性和启动时间等方面。以下是两者的主要架构区别&#xff1a; 1. 架构层次 Docker: 主机操作系统&#xff1a;Docker 直接运行在宿主机的操作系统上。Docker 引擎&…...

在VsCode中选择conda编译器环境

当vscode出现始终在激活一个已经不存在的虚拟环境&#xff0c;可选择手动将其调换 在 Visual Studio Code (VSCode) 中选择 Python 虚拟环境的步骤如下&#xff1a; 确保安装了 Python 插件&#xff1a;首先&#xff0c;你需要确保已经安装了适用于 VSCode 的 Python 插件。你…...

微信小程序 - 条件渲染(wx:if、hidden)与列表渲染(wx:for)

一、条件渲染概述 条件渲染用于根据特定条件决定是否渲染某部分内容 微信小程序提供了两种方式实现条件渲染&#xff0c;分别是 wx:if、hidden 二、条件渲染 1、wx:if &#xff08;1&#xff09;基本介绍 wx:if 根据 condition 的真假决定是否渲染该组件及其子组件 condit…...

【STL】4.<list>

list 前言list容器一.list初始化二.常用函数三.排序 总结 前言 stl系列主要讲述有关stl的文章&#xff0c;使用STL可以大大提高程序开发的效率和代码的可维护性&#xff0c;且在算法比赛中&#xff0c;STL可以帮助我们更方便地实现各种算法。提高我们的效率。 list容器 要使用…...

华为AP 4050DN-HD的FIT AP模式改为FAT AP,家用FAT基本配置

在某鱼买了两台华为AP 4050DN-HD , AP是二手的 , 在AC上上过线 , 所以就不能开机自选为FIP模式了 我没有AC无线控制器 , 就是买一个自己玩 , AP又是FIT瘦AP模式 ,所以我就想把AP的瘦AP模式改为FAT胖AP模式 1. 准备工作 1.1下载好对应软件&#xff0c;进入到 企业业务网站去下…...

vue 设置生产 开发 测试环境

在 Vue.js 中&#xff0c;可以通过配置不同的环境变量来区分生产、开发和测试环境的请求。一般情况下&#xff0c;我们使用 webpack 或 Vite 进行构建&#xff0c;它们都支持环境变量的配置。 以下是如何在 Vue 项目中配置不同环境的请求&#xff1a; 1. 配置 .env 文件 在项…...