C语言实验-学生信息管理系统

  1. 按以下菜单界面编写学生信息管理系统;

1)录入学生信息首先输入学生人数,然后根据学生人数开辟动态数组;

2)学生信息包括学号、姓名、性别、三门课成绩、总分;其中学号、姓名、

性别、三门课成绩是需要从键盘录入的,而总分是由程序计算的,而不

是用户自己算了再输入。

3)显示结果(学生信息)要以列表的形式显示,注意美观性;

4)要有必要的容错措施,比如输入各科分数要在0-100之间,输入错误给

用户提示,让其重新输入;

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<iostream>
#include<Windows.h>
#include<assert.h>
using namespace std;typedef struct student
{char ID[15];char name[15];char sex[5];int score[3];int totalscore;
}student;typedef struct Data
{student* data;int size;int capacity;
}Data;enum Option
{EXIT,//0ADD,PRINT,SEARCH_BY_ID,SEARCH_BY_NAME,SORT,FIND_BY_SCORE
};void menu()
{cout << "\n*************************\n";cout << "1.录入学生信息\n";cout << "2.显示学生信息\n";cout << "3.按学号查找\n";cout << "4.按姓名查找\n";cout << "5.按总分递减排序\n";cout << "6.查找有2科目不及格的学生信息\n";cout << "0.退出\n";cout << "*************************\n";cout << "请输入功能号0-6:";}void Init(Data* pdata)
{assert(pdata);cout << "输入学生人数:" << endl;cin >> pdata->capacity;pdata->data = (student*)malloc(sizeof(student) * (pdata->capacity));pdata->size = 0;for (int i = 0; i < pdata->capacity; i++){pdata->data[i].totalscore = 0;}}
void fun1(Data*pdata)
{int flag = 0;if (pdata->size==pdata->capacity){cout << "容量不够,无法输入" << endl;return;}cout << "输入学号:";scanf("%s",pdata->data[pdata->size].ID);cout << "输入姓名:";scanf("%s", pdata->data[pdata->size].name);cout << "输入性别:";scanf("%s", pdata->data[pdata->size].sex);do {cout << "输入三科成绩:";for (int i = 0; i < 3; i++){scanf("%d", &pdata->data[pdata->size].score[i]);if (pdata->data[pdata->size].score[i] > 100 || pdata->data[pdata->size].score[i] < 0){flag = 1;}//如果输入成绩不合法pdata->data[pdata->size].totalscore += pdata->data[pdata->size].score[i];}if (flag == 1){cout << "成绩输入不合规,重新输入" << endl;}} while (flag != 0);cout << "信息输入成功" << endl;pdata->size++;
}
void fun2(Data* pdata)//打印信息
{assert(pdata);printf("%-10s%-10s%-5s%-12s%-5s\n", "学号", "姓名", "性别", "成绩", "总成绩");for (int i = 0; i < pdata->size; i++){printf("%-10s%-10s%-5s%-4d%-4d%-4d%-5d\n",pdata->data[i].ID, pdata->data[i].name, pdata->data[i].sex, pdata->data[i].score[0],pdata->data[i].score[1],pdata->data[i].score[2],pdata->data[i].totalscore);}
}
void fun3(Data*pdata)
{cout << "\n请输入要查找的学号:\n";char IDinput[15]="\0";cin >> IDinput;for (int i = 0; i < pdata->size; i++){if (strcmp(pdata->data[i].ID, IDinput) == 0){printf("%-10s%-10s%-5s%-12s%-5s\n", "学号", "姓名", "性别", "成绩", "总成绩");printf("%-10s%-10s%-5s%-4d%-4d%-4d%-5d\n",pdata->data[i].ID,pdata->data[i].name,pdata->data[i].sex,pdata->data[i].score[0],pdata->data[i].score[1],pdata->data[i].score[2],pdata->data[i].totalscore);break;}}
}
void fun4(Data*pdata)
{cout << "\n请输入要查找的姓名:\n";char nameinput[15] = "\0";cin >> nameinput;printf("%-10s%-10s%-5s%-12s%-5s\n", "学号", "姓名", "性别", "成绩", "总成绩");for (int i = 0; i < pdata->size; i++){if (strcmp(pdata->data[i].name, nameinput) == 0){printf("%-10s%-10s%-5s%-4d%-4d%-4d%-5d\n",pdata->data[i].ID,pdata->data[i].name,pdata->data[i].sex,pdata->data[i].score[0],pdata->data[i].score[1],pdata->data[i].score[2],pdata->data[i].totalscore);}}
}
int compare(const void* a, const void* b)
{return ((student*)b)->totalscore - ((student*)a)->totalscore;
}
void fun5(Data*pdata)//排序
{qsort(pdata->data, pdata->size, sizeof(student), compare);fun2(pdata);
}
void fun6(Data* pdata)
{for (int i = 0; i < pdata->size; i++){int flag = 0;for (int j = 0; j < 3; j++){if (pdata->data[i].score[j] < 60){flag++;}}if (flag >= 2){printf("%-10s%-10s%-5s%-4d%-4d%-4d%-5d\n",pdata->data[i].ID,pdata->data[i].name,pdata->data[i].sex,pdata->data[i].score[0],pdata->data[i].score[1],pdata->data[i].score[2],pdata->data[i].totalscore);}}
}int main()
{int input = 0;Data data;Init(&data);do{menu();printf("请输入你的选择:>");scanf("%d", &input);system("cls");switch (input){case ADD:fun1(&data);break;case PRINT:fun2(&data);break;case SEARCH_BY_ID:fun3(&data);break;case SEARCH_BY_NAME:fun4(&data);break;case SORT:fun5(&data);break;case FIND_BY_SCORE:fun6(&data);break;case EXIT:fun2(&data);printf("退出通讯录\n");break;default:printf("选择错误,重新选择\n");break;}} while (input);return 0;
}

测试用例可以自己简单测一测

取码点赞👍!

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

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

相关文章

[方法] Unity 实现仿《原神》第三人称跟随相机 v1.0

参考网址&#xff1a;【Unity中文课堂】RPG战斗系统Plus 在Unity游戏引擎中&#xff0c;实现类似《原神》的第三人称跟随相机并非易事&#xff0c;但幸运的是&#xff0c;Unity为我们提供了强大的工具集&#xff0c;其中Cinemachine插件便是实现这一目标的重要工具。Cinemachi…

开源的贴吧数据查询工具

贴吧数据查询工具 这是一个贴吧数据查询工具&#xff0c;目前仍处于开发阶段。 本地运行 要本地部署这个项目&#xff0c;请 克隆这个仓库并前往项目目录 git clone https://github.com/Dilettante258/tieba-tools.git cd tieba-tools安装依赖 pnpm install运行项目 np…

240503-关于Unity的二三事

240503-关于Unity的二三事 1 常用快捷键 快捷键描述CtrlP播放/停止Ctrl1打开Scene窗口Ctrl2打开Game窗口Ctrl3打开Inspect窗口Ctrl4打开Hierarchy窗口Ctrl5打开Project窗口Ctrl6打开Animation窗口 2 关联VisualStudio2022 3 节约时间&#xff1a;将最新声明的参数移动到最上…

mysql主库delete一个没主键的表导致从库延迟很久问题处理

一 问题描述 发现线上环境一个从库出现延迟&#xff0c;延迟了2天了&#xff0c;还没追上主库。 查看当前运行的sql及事务&#xff0c;发现这个sql语句是在delete一个没主键的表。 二 问题模拟 这里在测试环境复现下这个问题。 2.1 在主库造数据 use baidd; CREATE TABL…

使用D3.js进行数据可视化

D3.js介绍 D3.js是一个流行的JavaScript数据可视化库&#xff0c;全称为Data-Driven Documents&#xff0c;即数据驱动文档。它以数据为核心&#xff0c;通过数据来驱动文档的展示和操作。D3.js提供了丰富的API和工具&#xff0c;使得开发者能够创建出各种交互式和动态的数据可…

PPT基础

5种ppt仅可读形式 Ⅰ 开始选项卡 1.【幻灯片】组中&#xff1a;新建幻灯片&#xff0c;从大纲中导入幻灯片&#xff1b;修改幻灯片的版式&#xff1b;节&#xff08;新增节&#xff0c;重命名节&#xff09;。 2.【字体】组中&#xff1a;设置字体&#xff0c;字体大小&…

2024年怎么下载学浪app视频

想要在2024年紧跟潮流&#xff0c;成为一名优秀的学浪用户吗&#xff1f;今天就让我们一起探索如何下载学浪app视频吧&#xff01; 学浪视频下载工具打包 学浪下载工具打包链接&#xff1a;百度网盘 请输入提取码 提取码&#xff1a;1234 --来自百度网盘超级会员V10的分享…

BJFUOJ-C++程序设计-实验2-类与对象

A 评分程序 答案&#xff1a; #include<iostream> #include<cstring>using namespace std;class Score{ private:string name;//记录学生姓名double s[4];//存储4次成绩&#xff0c;s[0]和s[1]存储2次随堂考试&#xff0c;s[2]存储期中考试&#xff0c;s[3]存储期…

推荐一个好用的命令行工具ShellGPT

ShellGPT 配置安装常用功能聊天写命令并执行 高级功能函数调用角色管理 总结 这两天突然想到&#xff0c;现有的很多工具都在被大模型重构&#xff0c;比如诞生了像perplexity.ai 这种新交互形式的搜索引擎&#xff0c;就连wps也推出了AI服务&#xff0c;甚至都可以直接生成ppt…

code-server容器webpack的ws无法连接解决方法

TLDR 通过指定client的wsrul去连接ws devServer.client.webSocketURL ‘wss://<Forwarded uri>/ws’ 拓扑 1、code-server: 用于编写代码、启动webpack dev-server 服务&#xff1b;[https://<domain>:8001] 2、webpack: 用于浏览dev-server服务&#xff1b;[ht…

AI实景直播间的打造指南,简单四步曲,轻松打造24小时不间断直播。

AI实景直播间的打造指南&#xff1a;简单四步曲&#xff0c;轻松打造24小时不间断直播&#xff01; 随着直播时代的来临&#xff0c;ai自动化直播系统成为商家们蓬勃发展的选择。本文将为您介绍如何借助智享ai自动直播&#xff0c;轻松打造一个属于自己的24小时不间断直播间。…

「 网络安全常用术语解读 」SBOM主流格式SWID详解

国际标准化组织&#xff08;ISO&#xff09;和国际电工委员会&#xff08;International Electrotechnical Commission&#xff0c;IEC&#xff09;发布了ISO/IEC 19770-2软件标识&#xff08;Software Identification&#xff0c;SWID&#xff09;标签标准&#xff0c;该标准定…

ctfshow web入门 sql注入 web224--web233

web224 扫描后台&#xff0c;发现robots.txt&#xff0c;访问发现/pwdreset.php &#xff0c;再访问可以重置密码 &#xff0c;登录之后发现上传文件 检查发现没有限制诶 上传txt,png,zip发现文件错误了 后面知道群里有个文件能上传 <? _$GET[1]_?>就是0x3c3f3d60245…

k8s环境prometheus operator监控集群外资源

文章目录 k8s环境添加其他节点基于prometheus operator k8s环境prometheus operator添加node-exporter方式一&#xff1a;通过 ServiceMonitor 方式可以写多个监控node节点运行 external-node.yaml查看资源有没有被创建热更新 外部需要被监控服务器安装 node-exporterdocker 方…

基于SSM的宠物领养平台(有报告)。Javaee项目。ssm项目。

演示视频&#xff1a; 基于SSM的宠物领养平台&#xff08;有报告&#xff09;。Javaee项目。ssm项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构&#xff0c;通过Spring Spri…

微信api、微信个人号二次开发、微信ipad协议

微信iPad协议videosAPI接口可以用于以下功能&#xff1a; 对接企业CRM和SCRM系统&#xff1a;通过接口可以实现与企业的客户关系管理系统或社交客户关系管理系统的对接&#xff0c;方便企业管理与客户的微信通讯记录和信息。 智能机器人&#xff1a;通过接口可以实现与微信聊天…

TCP重传机制——快速重传

TCP 有一种快速重传机制&#xff0c;它不以时间为驱动&#xff0c;而是以数据驱动重传。 在上图&#xff0c;发送方发出了 1&#xff0c;2&#xff0c;3&#xff0c;4&#xff0c;5 份数据&#xff1a; 第一份 Seq1 先送到了&#xff0c;于是就 Ack 回 2&#xff1b;结果 Seq2…

【热门话题】Chrome 插件研发详解:从入门到实践

&#x1f308;个人主页: 鑫宝Code &#x1f525;热门专栏: 闲话杂谈&#xff5c; 炫酷HTML | JavaScript基础 ​&#x1f4ab;个人格言: "如无必要&#xff0c;勿增实体" 文章目录 Chrome 插件研发详解&#xff1a;从入门到实践一、引言二、Chrome 插件基础概念…

计算机的翻译(编译和链接)过程

&#x1f381;个人主页&#xff1a;我们的五年 &#x1f50d;系列专栏&#xff1a;C语言基本概念 &#x1f337;追光的人&#xff0c;终会万丈光芒 &#x1f389;欢迎大家点赞&#x1f44d;评论&#x1f4dd;收藏⭐文章 目录 &#x1f697;1.翻译环境和运行环境&#xff1…

【翻译】REST API

自动伸缩 API 创建或更新自动伸缩策略 API 此特性设计用于 Elasticsearch Service、Elastic Cloud Enterprise 和 Kubernetes 上的 Elastic Cloud 的间接使用。不支持直接用户使用。 创建或更新一个自动伸缩策略。 请求 PUT /_autoscaling/policy/<name> {"rol…