面试题:实现学生管理系统

        这是我在以前面试中遇到的一个问题, 面试官说:你能现场实现一个学生管理系统吗,实现对学生的增删查改这4个功能

        当时写了半天没写出来.....,所以我在这里记录一下

10分钟实现学生管理系统并实现 增删查改 功能

#include <iostream>
#include <vector>
#include <string>
#include <algorithm>// 学生类
struct Student {int id;// 学号std::string name;// 名字double score;// 分数// 打印学生信息void print() const {std::cout << "ID: " << id << ", Name: " << name << ", Score: " << score << std::endl;}
};// 管理员类
class Admin {
public:// 添加学生void addStudent(int id, const std::string& name, double score) {students.push_back({ id, name, score });// 会调用默认的构造函数生成匿名学生std::cout << "添加学生成功!" << std::endl;}// 删除学生void deleteStudent(int id) {auto it = std::remove_if(students.begin(), students.end(), [id](const Student& s) {return s.id == id;});if (it != students.end()) {students.erase(it,students.end());std::cout << "删除学生成功!" << std::endl;}else {std::cout << "学生不存在!" << std::endl;}}// 查找学生void findStudent(int id) const {auto it = std::find_if(students.begin(), students.end(), [id](const Student& s) {return s.id == id;});if (it != students.end()) {it->print();// 调用学生的打印}else {std::cout << "学生不存在!" << std::endl;}}// 更新学生void updateStudent(int id, const std::string& newName, double newScore) {auto it = std::find_if(students.begin(), students.end(), [id](const Student& s) {return s.id == id;});if (it != students.end()) {it->name = newName;it->score = newScore;std::cout << "更新学生成功!" << std::endl;}else {std::cout << "学生不存在!" << std::endl;}}// 列出所有学生信息void listAllStudents() const {for (const auto& student : students) {student.print();}}
private:std::vector<Student> students;//用数组存储学生
};int main() {Admin manager;std::string name;int id = 0;double score = 0.0;int choice = 0;while (true) {std::cout << "1. 添加学生" << std::endl;std::cout << "2. 删除学生" << std::endl;std::cout << "3. 查找学生" << std::endl;std::cout << "4. 更新学生" << std::endl;std::cout << "5. 列出所有学生信息" << std::endl;std::cout << "6. 退出" << std::endl;std::cout << "Enter your choice: ";std::cin >> choice;switch (choice) {case 1:std::cout << "请输入学号 姓名 分数";std::cin >> id >> name >> score;manager.addStudent(id, name, score);break;case 2:std::cout << "请输入要删除学生的学号";std::cin >> id;manager.deleteStudent(id);break;case 3:std::cout << "请输入要查找学生的学号";std::cin >> id;manager.findStudent(id);break;case 4:std::cout << "请输入要更新学生的学号,姓名,分数";std::cin >> id >> name >> score;manager.updateStudent(id, name, score);break;case 5:manager.listAllStudents();break;case 6:return 0;// 表正常退出default:std::cout << "输入不合法,请重新输入" << std::endl;}}return 0;
}

remove_if

       remove_if是 C++ <algorithm> 头文件中的一个算法, 将不符合条件的元素移动到前面,并返回新的结束迭代器,需要配合容器的 erase() 方法来真正删除元素(再删除一段访问)

#include <algorithm>  // std::remove_if
#include <vector>     // std::vector
#include <iostream>   // std::cout
using namespace std;int main() {std::vector<int> vec = {1,3, 4, 5, 6};auto end_begin =  std::remove_if(vec.begin(), vec.end(), [](int x){return x % 2 == 0;//移除所有偶数});vec.erase(end_begin, vec.end());// 删除一段访问for (int n : vec) {std::cout << n << " ";  // 输出:1 3 5}cout << endl;
}

find_if

        find_if 是 C++ <algorithm> 头文件中的一个算法,用于查找容器中第一个符合指定条件的元素,并返回指向该元素的迭代器。如果找不到,则返回 end() 迭代器 

#include <iostream>
#include <vector>
#include <algorithm> // std::find_ifint main() {std::vector<int> vec = {1, 3, 5, 4, 6, 7};auto it = std::find_if(vec.begin(), vec.end(), [](int x){return x % 2 == 0;});if (it != vec.end()) {std::cout << "找到第一个偶数:" << *it << std::endl; // 输出:找到第一个偶数:4} else {std::cout << "未找到偶数" << std::endl;}
}

 

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

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

相关文章

大语言模型基础—语言模型的发展历程--task1

目录 1.语言模型的发展历程 1.1 统计语言模型 1.2 神经语言模型 1.3 预训练语言模型 1.4 大语言模型 1.5 总结 1.6 各阶段对比与演进逻辑 1.语言模型的发展历程 语言模型的发展历程经历了四个主要阶段&#xff1a;统计语言模型、神经语言模型、预训练语言模型和大语言模…

BIG_EVENT

环境准备: 开发: 跨域问题: 只有浏览器才存在跨域问题, 此时浏览器的地址和前端服务一致,所以不存在跨域问题, 但是当浏览器中的js代码需要向8080发送请求时就会由于存在跨域问题而失败. 简单的说前端和浏览器的地址端口是一致的,浏览器只能向前端服务发送请求, 所以可以使用配…

DAY33 贪心算法Ⅱ

122. 买卖股票的最佳时机 II - 力扣&#xff08;LeetCode&#xff09; 想到把整体利润分解为每天的利润&#xff0c;就豁然开朗了。 class Solution { public:int maxProfit(vector<int>& prices) {int result0;for(int i1;i<prices.size();i){resultmax(0,pric…

【Qt】qApp简单介绍

1. 介绍 在Qt中&#xff0c;qApp是一个全局指针&#xff0c;它指向当前的QApplication或QGuiApplication对象。这个全局指针在Qt应用程序中非常有用&#xff0c;因为它可以让你在任何地方访问到应用程序对象。 在C中&#xff0c;全局指针是一个可以在程序的任何地方访问的指针…

Redis 设置密码无效问题解决

一、验证密码有没有生效 运行cmd&#xff0c;cd到redis的目录下 输入“redis-cli.exe” 回车 输入“auth 123456” 回车 若错误&#xff0c;说明没有设置密码或者设置的密码没有生效 输入“exit” 回车就立即退出redis 二、解决方案是&#xff1a;直接修改后缀是 .conf 的…

手写一些常见算法

手写一些常见算法 快速排序归并排序Dijkstra自定义排序交替打印0和1冒泡排序插入排序堆排序 快速排序 public class Main {public static void main(String[] args) {int nums[] {1,3,2,5,4,6,8,7,9};quickSort(nums,0,nums.length - 1);}private static void quickSort(int[…

VBA即用型代码手册:选择、转到Select、 Go To

我给VBA下的定义&#xff1a;VBA是个人小型自动化处理的有效工具。可以大大提高自己的劳动效率&#xff0c;而且可以提高数据的准确性。我这里专注VBA,将我多年的经验汇集在VBA系列九套教程中。 作为我的学员要利用我的积木编程思想&#xff0c;积木编程最重要的是积木如何搭建…

[CISSP] [1] 访问控制//入侵检测与网络防护

访问控制 检测性访问控制&#xff08;Detective Access Control&#xff09; 作用&#xff1a;用于发现和记录未经授权的活动。方式&#xff1a;这类控制本身不直接阻止攻击或违规行为&#xff0c;而是监测、检测并记录这些事件&#xff0c;以便后续调查或响应。例子&#xff1…

【SpringBoot】MD5加盐算法的详解

目录 一、什么是加盐算法 二、如何实现加盐算法 2.1 加盐算法代码实现 2.2 注册页面中进行密码加盐 2.3 登录页面进行加盐的解密 2.4 注册和登录 一、什么是加盐算法 加盐算法是一种用于增强密码安全性的技术。这种技术通过在密码存储过程中添加一个随机生成的盐值&…

uniapp移动端图片比较器组件,仿英伟达官网rtx光追图片比较器功能

组件下载地址&#xff1a;https://ext.dcloud.net.cn/plugin?id22609 已测试h5和微信小程序&#xff0c;理论支持全平台 亮点&#xff1a; 简单易用 使用js计算而不是resize属性&#xff0c;定制化程度更高 组件挂在后可播放指示线动画&#xff0c;提示用户可以拖拽比较图片…

CI/CD—Jenkins实现自动构建Docker镜像运行Java程序

实现原理 1、Java代码中创建一个dockerfile文件 --> 2、代码上传至GitLab --> 3、Jenkins同步GitLab的代码进行构建生成jar --> 4、Jenkins将jar包和dockerfile文件传到测试服务器上 --> 5、在测试服务器上执行dockerfile构建jar镜像 --> 6、镜像构建完运行容器…

docker 搭建alpine下nginx1.26/mysql8.0/php7.4环境

docker 搭建alpine下nginx1.26/mysql8.0/php7.4环境 docker-compose.yml services:mysql-8.0:container_name: mysql-8.0image: mysql:8.0restart: always#ports:#- "3306:3306"volumes:- ./etc/mysql/conf.d/mysql.cnf:/etc/mysql/conf.d/mysql.cnf:ro- ./var/log…

队列的简单例题

题目如下 模拟队列 首先你要明白队列的话 只有队尾才能进行新增&#xff0c;也就是入队 只有队首才能出队&#xff0c;也就是删除 队首队尾指针一开始默认都是0 相当于队列中一开始是有一个元素的就是 0的位置 队首指针head0 队尾指针tail0 1.入队也就是队尾要先赋值&#xf…

vue3+elementuiplus的table表格动态高度

table表格流体高度 1、前提 了解自定义指令、hooks 2、核心思路 通过自定义指令&#xff08;new ResizeObserver&#xff09;监听表格变化&#xff0c;然后通过hooks去更新表格高度。 3、核心代码 src/directives/resize.ts // import { debounce } from /utils;import { t…

Apache POI详解

目录 前言 Apache POI是一个强大的Java库&#xff0c;广泛用于处理Microsoft Office文档&#xff0c;包括Word、Excel和PowerPoint等。本文将详细介绍如何使用Apache POI库操作Word模板&#xff08;包括替换占位符、操作表格&#xff09;、将Word文档转换为PDF&#xff0c;以及…

AutoGen多角色、多用户、多智能体对话系统

2023-03-11-AutoGen 使用【autoGenchainlitdeepSeek】实现【多角色、多用户、多智能体对话系统】 1-核心思路 01&#xff09;技术要点&#xff1a;autoGenchainlitdeepSeek02&#xff09;什么是autoGen->autogen是微软旗下的多智能体的框架03&#xff09;什么是chainlit-&g…

问deepseek: OpenFOAM并行分区后,是如何实现ldumatrix矩阵向量乘法计算逻辑的?

在OpenFOAM中&#xff0c;lduMatrix 是用于存储稀疏矩阵的类&#xff0c;支持并行计算。并行分区后&#xff0c;lduMatrix 的矩阵向量乘法通过以下步骤实现&#xff1a; 1. 矩阵分区 分区&#xff1a;将矩阵和向量分配到多个处理器上&#xff0c;每个处理器负责一部分。接口&…

数据类设计_图片类设计之4_规则类图形混合算法(前端架构)

前言 学的东西多了,要想办法用出来.C和C是偏向底层的语言,直接与数据打交道.尝试做一些和数据方面相关的内容 引入 接续上一篇,讨论图片类型设计出来后在场景中如何表达,以及图片的混合算法.前面的内容属于铺垫和基础,这篇内容和实际联系起来了. 背景图和前景图 这里笔者想先…

【openwebui 搭建本地知识库(RAG搭建本地知识库)】

安装准备 openwebui 这个本地安装之前写过使用python安装。也可以直接用docker 命令 docker run --rm -d \-p 3080:8080 \-p 3081:8081 \-e WEBUI_AUTHtrue \-e DEFAULT_LOCALEcn \-e GLOBAL_LOG_LEVEL"INFO" \-e AIOHTTP_CLIENT_TIMEOUT100 \--privilegedtrue \-…

Nginx的流式响应配置详解

现在大模型场景繁多&#xff0c;项目中涉及nginx转发大模型的流式数据时&#xff0c;需配置nginx的转发策略&#xff1a; location /streaming {proxy_pass http://backend_server;proxy_cache off; # 关闭缓存proxy_buffering off; # 关闭代理缓冲chunked_transfer_encoding …