学生成绩管理系统V2.0
某班有最多不超过30人(具体人数由键盘输入)参加某门课程的考试,参考前面章节的“学生成绩管理系统V1.0”,用一维数组和函数指针作函数参数编程实现如下菜单驱动的学生成绩管理系统,其中每位同学的学号和成绩等数据可以通过不同数组的同一下标来关联:
(1)录入每个学生的学号和考试成绩;
(2)计算课程的总分和平均分;
(3)按成绩由高到低排出名次表;
(4)按成绩由低到高排出名次表;
(5)按学号由小到大排出成绩表;
(6)按学号查询学生排名及其考试成绩;
(7)按优秀(90~100)、良好(80~89)、中等(70~79)、及格(60~69)、不及格(0~59)5个类别,统计每个类别的人数以及所占的百分比;
(8)输出每个学生的学号、考试成绩。
这里只用函数指针来做函数参数。
#include <iostream>
#include <iomanip>
using namespace std;
void input(int*, float*,int*);
void caculate(float*,int*);
void sort_in_descending_order_by_score(int*, float* ,int*);
void sort_in_ascending_order_by_score(int*, float*, int*);
void sort_in_ascending_order_by_number(int* ,float* ,int*);
void search(int* ,float* ,int*);
void statistic(float* ,int *);
int main()
{int n;cout << "Input student number(n<30):";cin >> n;int choice;int xvehao[30];float score[30];int* p1 = &n, * p2 = xvehao;float *p3 = score;while (1){cout << endl;cout << "Management for Students' scores" << endl;cout << "1.Input record" << endl;cout << "2.Caculate total and average score of course" << endl;cout << "3.Sort in descending order by score" << endl;cout << "4.Sort in ascending order by score" << endl;cout << "5.Sort in ascending order by number" << endl;cout << "6.Search by number" << endl;cout << "7.Statistic analysis" << endl;cout << "8.List record" << endl;cout << "0.Exit" << endl;cout << "Please Input your choice:";cin >> choice;if (choice == 1)input(p2, p3, p1);else if (choice == 2)caculate(p3, p1);else if (choice == 3)sort_in_descending_order_by_score(p2, p3, p1);else if (choice == 4)sort_in_ascending_order_by_score(p2, p3, p1);else if (choice == 5)sort_in_ascending_order_by_number(p2, p3, p1);else if (choice == 6)search(p2, p3, p1);else if (choice == 7)statistic(p3, p1);else if (choice == 8)sort_in_ascending_order_by_number(p2, p3, p1);else if (choice == 0)break;else{cout << "Please input any number from 0 to 8!"<<endl; continue;}}return 0;
}
void input(int *p2, float *p3,int *p1)
{int i;cout << "Input student's ID, name and score:" << endl;for (i = 1; i <= *p1; i++){cin >> *(p2+i) >> *(p3+i);}}
void caculate(float *p3, int *p1)
{float sum=0,aver;int i;for (i = 1; i <= *p1; i++){sum += *(p3+i);}aver = sum / *p1;cout << "sum=" << sum << " , aver=" << fixed << setprecision(2) << aver;cout << endl;
}
void sort_in_descending_order_by_score(int *p2, float *p3, int *p1)
{int i, j,k;for (i = 1; i <= *p1; i++){k = i;for (j = i+1; j <= *p1 ; j++){if (*(p3+k) < *(p3+j))k = j;}int x = *(p2+i), y = *(p3+i);*(p2 + i) = *(p2 + k); *(p3 + i) = *(p3 + k);*(p2 + k) = x; *(p3 + k) = y;}for (i = 1; i <= *p1; i++){cout << *(p2+i) << " " << *(p3+i) << endl;}
}
void sort_in_ascending_order_by_score(int*p2, float*p3, int*p1)
{int i, j, k;for (i = 1; i <= *p1; i++){k = i;for (j = i + 1; j <= *p1; j++){if (*(p3 + k) > *(p3 + j))k = j;}int x = *(p2 + i), y = *(p3 + i);*(p2 + i) = *(p2 + k); *(p3 + i) = *(p3 + k);*(p2 + k) = x; *(p3 + k) = y;}for (i = 1; i <= *p1; i++){cout << *(p2 + i) << " " << *(p3 + i) << endl;}
}
void sort_in_ascending_order_by_number(int *p2, float *p3, int *p1)
{int i, j,k;for (i = 1; i <= *p1; i++){k = i;for (j = i + 1; j <= *p1; j++){if (*(p2+j) < *(p2+k))k = j;}int x = *(p2+i), y = *(p3+i);*(p2 + i) = *(p2 + k); *(p3 + i) = *(p3 + k);*(p2 + k) = x; *(p3 + k) = y;}for (i = 1; i <= *p1; i++){cout << *(p2 + i) << " " << *(p3 + i) << endl;}
}
void search(int *p2, float *p3, int *p1)
{int number;cin >> number;int i,k;for (i = 1; i <= *p1; i++){if (*(p2+i) == number){cout << *(p2 + i) << " " << *(p3 + i) <<endl;k = 1;break;}else k = 0;}if (k == 0)cout << "Can't find this student!"<<endl;
}
void statistic(float *p3, int *p1)
{int i;int A = 0, B = 0, C = 0, D = 0, E = 0, F = 0;for (i = 1; i <= *p1; i++){if (*(p3+i) == 100)A++;else if (*(p3 + i) >= 90 && *(p3 + i) <= 99)B++;else if (*(p3 + i) >= 80 && *(p3 + i) <= 89)C++;else if (*(p3 + i) >= 70 && *(p3 + i) <= 79)D++;else if (*(p3 + i) >= 60 && *(p3 + i) <= 69)E++;else F++;}cout << "<60 " << F<< " " <<fixed<<setprecision(2)<< ((float)F / *p1) * 100 << "%" << endl;cout << "60-69 " << E<< " " << fixed << setprecision(2) << ((float)E / *p1) * 100 << "%" << endl;cout << "70-79 " << D<< " " << fixed << setprecision(2) << ((float)D / *p1) * 100 << "%" << endl;cout << "80-89 " << C<< " " << fixed << setprecision(2) << ((float)C / *p1) *100<< "%"<<endl;cout << "90-99 " << B<< " " << fixed << setprecision(2) << ((float)B / *p1) * 100 << "%" << endl;cout << "100 " << A<< " " << fixed << setprecision(2) << ((float)A / *p1) * 100 << "%" << endl;
}
相关文章:
学生成绩管理系统V2.0
某班有最多不超过30人(具体人数由键盘输入)参加某门课程的考试,参考前面章节的“学生成绩管理系统V1.0”,用一维数组和函数指针作函数参数编程实现如下菜单驱动的学生成绩管理系统,其中每位同学的学号和成绩等数据可以…...

【C++】开源:tinyxml2解析库配置使用
😏★,:.☆( ̄▽ ̄)/$:.★ 😏 这篇文章主要介绍tinyxml2解析库配置使用。 无专精则不能成,无涉猎则不能通。——梁启超 欢迎来到我的博客,一起学习,共同进步。 喜欢的朋友可以关注一下,…...

如何使用webpack打包一个库library,使用webpack打包sdk.
如何使用webpack打包一个库library 如果你需要自己封装一些包给别人使用,那么可以参考以下方法 初始化库 mkdir library cd library npm init -y经过以上步骤后会生成一个library文件夹,里面包含一个package.json文件。然后简单修改为如下所示: {&qu…...

项目一:基于stm32的阿里云智慧消防监控系统
若该文为原创文章,转载请注明原文出处。 Hi,大家好,我是忆枫,今天向大家介绍一个单片机项目。 一、简介 智慧消防监控系统,是用于检测火灾,温度,烟雾的监控系统。以 stm32单片机为核心外加 MQ…...

【果树农药喷洒机器人】Part6:基于深度相机与分割掩膜的果树冠层体积探测方法
📢:如果你也对机器人、人工智能感兴趣,看来我们志同道合✨ 📢:不妨浏览一下我的博客主页【https://blog.csdn.net/weixin_51244852】 📢:文章若有幸对你有帮助,可点赞 👍…...
打印1到最大的n位数
目录 1.题目概述 2.题解 1.题目概述 输入数字 n,按顺序打印出从 1 到最大的 n 位十进制数。比如输入 3,则打印出 1、2、3 一直到最大的 3 位数 999。 1. 用返回一个整数列表来代替打印 2. n 为正整数,0 < n < 5 示例: 输入…...

设计模式行为型——状态模式
目录 状态模式的定义 状态模式的实现 状态模式角色 状态模式类图 状态模式举例 状态模式代码实现 状态模式的特点 优点 缺点 使用场景 注意事项 实际应用 在软件开发过程中,应用程序中的部分对象可能会根据不同的情况做出不同的行为,把这种对…...

ElastAlert通过飞书机器人发送报警通知
前言 公司采用ELK架构搜集业务系统的运行日志,以前开发人员只有在业务出现问题的时候,才会去kibana上进行日志搜索操作,每次都是被用户告知系统出问题了,这简直是被啪啪打脸~ 于是痛定思痛,决定主动出击,…...

恒温碗语音芯片,具备数码管驱动与温度传感算法,WT2003H-B012
近年来,随着科技的飞速发展,智能家居产品已然成为了现代生活的一部分,为人们的生活带来了更多的便利和舒适。在这个不断演进的领域中,恒温碗多功能语音芯片——WT2003H-B012成为众多厂商的首选,为智能家居领域注入了全…...

新能源汽车需要检测哪些项目
截至2022年底,中国新能源车保有量达1310万辆,其中纯电动汽车保有量1045万辆。为把好新能源汽车安全关,我国新能源汽车除了完善的强制性产品认证型式实验外,还建立了“车企-地方-国家”逐级上报的三级监管体系实行新能源汽车全生命…...

VR内容定制 | VR内容中控管理平台可以带来哪些价值?
随着科技的不断发展,虚拟现实(VR)技术已经逐渐渗透到各个领域,其中教育领域也不例外。通过VR技术,学生可以身临其境地参与到各种场景中,获得更加直观、生动的学习体验。为了让教师更好地进行VR教学的设计和管理,提高教…...
篇十八:状态模式:状态驱动的行为
篇十八:"状态模式:状态驱动的行为" 开始本篇文章之前先推荐一个好用的学习工具,AIRIght,借助于AI助手工具,学习事半功倍。欢迎访问:http://airight.fun/。 另外有2本不错的关于设计模式的资料&…...

【Tomcat】(Tomcat 下载Tomcat 启动Tomcat 简单部署 基于Tomcat进行网站后端开发)
文章目录 Tomcat下载Tomcat启动Tomcat简单部署 基于Tomcat进行网站后端开发 Tomcat Tomcat 是一个 HTTP 服务器.HTTP 协议就是 HTTP 客户端和 HTTP 服务器之间的交互数据的格式. HTTP 服务器我们可以通过 Java Socket 来实现. 而 Tomcat 就是基于 Java 实现的一个开源免费,也是…...

简单动态字符串 sds
Redis 设计了简单动态字符串(Simple Dynamic String,SDS)的结构,用来表示 字符串。相比于 C 语言中的字符串实现,SDS 这种字符串的实现方式,会提升字符串的操 作效率,并且可以用来保存二进制数据…...
“深入剖析JVM内部原理:解密Java虚拟机的奥秘“
标题:深入剖析JVM内部原理:解密Java虚拟机的奥秘 摘要:本文将深入探讨Java虚拟机(JVM)的内部原理,包括其架构、内存管理、垃圾回收机制、即时编译器等关键组成部分。通过解密JVM的奥秘,我们将更…...

使用QT纯代码创建(查找)对话框详细步骤与代码
一、创建项目文件 打开Qt Creator->文件->新建文件或项目->选择Qt Widgets Application 为项目起名字 输入类的名字 二、 了解每个文件的作用 项目创建完毕之后就会出现以下几个文件,先来分别介绍以下这些文件的作用。 Headers->finddialog.h——很显…...
4945: 二进制转十进制
4945: 二进制转十进制 时间限制: 1.000 Sec 内存限制: 128 MB 提交: 520 解决: 335 [命题人:][下载数据: 30] 提交状态报告 题目描述 将二进制数转成十进制输出 输入 一行,一个二进制数,二进制数的位数小于32位。 输出 一个十进制的整数。…...
java后端技术汇总 + 中间件 + 架构思想
1. 华为OD机考题 答案 2023华为OD统一考试(AB卷)题库清单-带答案(持续更新) 2023年华为OD真题机考题库大全-带答案(持续更新) 2. 面试题 一手真实java面试题:2023年各大公司java面试真题汇总--…...

《机器学习系统:设计与实现》读书笔记一
最近几年一直在做算法工程的工作,对机器学习系统有所涉猎,也很感兴趣。近期发现一本开源书籍《机器学习系统:设计与实现》。去图书馆找了它的纸质版,发现内容不尽相同。在这里结合两者做一个读书笔记。本文是第一篇,主…...

C语言单链表OJ题(较难)
一、链表分割 牛客网链接 题目描述: 现有一链表的头指针 ListNode* pHead,给一定值x,编写一段代码将所有小于x的结点排在其余结点之前,且不能改变原来的数据顺序,返回重新排列后的链表的头指针。 思路:…...
渲染学进阶内容——模型
最近在写模组的时候发现渲染器里面离不开模型的定义,在渲染的第二篇文章中简单的讲解了一下关于模型部分的内容,其实不管是方块还是方块实体,都离不开模型的内容 🧱 一、CubeListBuilder 功能解析 CubeListBuilder 是 Minecraft Java 版模型系统的核心构建器,用于动态创…...

【项目实战】通过多模态+LangGraph实现PPT生成助手
PPT自动生成系统 基于LangGraph的PPT自动生成系统,可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析:自动解析Markdown文档结构PPT模板分析:分析PPT模板的布局和风格智能布局决策:匹配内容与合适的PPT布局自动…...

如何将联系人从 iPhone 转移到 Android
从 iPhone 换到 Android 手机时,你可能需要保留重要的数据,例如通讯录。好在,将通讯录从 iPhone 转移到 Android 手机非常简单,你可以从本文中学习 6 种可靠的方法,确保随时保持连接,不错过任何信息。 第 1…...
论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一)
宇树机器人多姿态起立控制强化学习框架论文解析 论文解读:交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一) 论文解读:交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化…...
解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错
出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上,所以报错,到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本,cu、torch、cp 的版本一定要对…...
相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)
【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:有对最普通的场景进行各个日志注释讲解,但相机场景太多,日志差异也巨大。后面将展示各种场景下的日志。 通过notepad++打开场景下的日志,通过下列分类关键字搜索,即可清晰的分析不同场景的相机运行流程差异…...

k8s业务程序联调工具-KtConnect
概述 原理 工具作用是建立了一个从本地到集群的单向VPN,根据VPN原理,打通两个内网必然需要借助一个公共中继节点,ktconnect工具巧妙的利用k8s原生的portforward能力,简化了建立连接的过程,apiserver间接起到了中继节…...
uniapp中使用aixos 报错
问题: 在uniapp中使用aixos,运行后报如下错误: AxiosError: There is no suitable adapter to dispatch the request since : - adapter xhr is not supported by the environment - adapter http is not available in the build 解决方案&…...
OpenLayers 分屏对比(地图联动)
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 地图分屏对比在WebGIS开发中是很常见的功能,和卷帘图层不一样的是,分屏对比是在各个地图中添加相同或者不同的图层进行对比查看。…...

html css js网页制作成品——HTML+CSS榴莲商城网页设计(4页)附源码
目录 一、👨🎓网站题目 二、✍️网站描述 三、📚网站介绍 四、🌐网站效果 五、🪓 代码实现 🧱HTML 六、🥇 如何让学习不再盲目 七、🎁更多干货 一、👨…...