用c++写该题的具体代码 以班级为单位进行选题,题目信息以文件形式存放, 包括:编号、题目、任务要求、完成时间 功能要求: 1学生信息包括:学号、姓名、班级; 2输入学号,随机抽取题目,限定每个题目只能被一个学生选中 3选题结果以文件形式存放,可以随时进行查询操作。

时间: 2024-02-23 13:56:30 浏览: 18
好的,以下是用 C++ 实现该题的代码: ```c++ #include <iostream> #include <fstream> #include <vector> #include <string> #include <ctime> #include <cstdlib> using namespace std; struct Student { string id; // 学号 string name; // 姓名 string cls; // 班级 }; struct Topic { string id; // 编号 string title; // 题目 string requirement; // 任务要求 string deadline; // 完成时间 string studentId; // 学生学号,初始值为空字符串 }; vector<Student> students; // 学生列表 vector<Topic> topics; // 题目列表 vector<Topic> selections; // 选题结果 // 读取学生信息 void readStudents() { ifstream fin("students.txt"); string id, name, cls; while (fin >> id >> name >> cls) { students.push_back({id, name, cls}); } fin.close(); } // 读取题目信息 void readTopics() { ifstream fin("topics.txt"); string id, title, requirement, deadline; while (fin >> id >> title >> requirement >> deadline) { topics.push_back({id, title, requirement, deadline, ""}); } fin.close(); } // 随机抽取题目 Topic* selectTopic(const string& studentId) { vector<Topic*> availableTopics; for (auto& topic : topics) { if (topic.studentId.empty()) { availableTopics.push_back(&topic); } } if (availableTopics.empty()) { return nullptr; } srand(time(nullptr)); int index = rand() % availableTopics.size(); Topic* topic = availableTopics[index]; topic->studentId = studentId; selections.push_back(*topic); return topic; } // 查询选题结果 void querySelections() { for (auto& selection : selections) { cout << selection.studentId << " " << selection.id << endl; } } int main() { readStudents(); readTopics(); while (true) { cout << "请输入学生学号(输入 q 退出):"; string studentId; cin >> studentId; if (studentId == "q") { break; } bool found = false; for (auto& student : students) { if (student.id == studentId) { found = true; Topic* topic = selectTopic(studentId); if (topic == nullptr) { cout << "所有题目都已被选完!" << endl; } else { cout << "您的题目是:" << topic->title << endl; } break; } } if (!found) { cout << "学生不存在!" << endl; } } cout << "选题结果如下:" << endl; querySelections(); return 0; } ``` 注意:本代码仅供参考,实际使用时需要根据具体需求进行修改和完善。

相关推荐

最新推荐

recommend-type

linux系统中c++写日志文件功能分享

主要介绍了linux系统中c++写日志文件功能,简化了glog,只保留了写日志文件的功能,只是改写了linux版本,需要的朋友可以参考下
recommend-type

vscode使用官方C/C++插件无法进行代码格式化问题

官方的C/C++插件是支持使用.clang-format配置文件进行自定义风格代码格式化的,无需另外安装clang-format插件。 但是使用clang-format -style=llvm -dump-config &gt; .clang-format导出的默认配置文件进行格式化的时候...
recommend-type

C++中进行txt文件读入和写入的方法示例

主要给大家介绍了C++中进行txt文件读入和写入的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用C++具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
recommend-type

第四届 蓝桥杯 竞赛试题题目 C/C++高职高专组

第四届“蓝桥杯”全国软件专业人才设计与创业大赛选拔赛 C/C++高职高专组 1、题目标题: 猜年龄 美国数学家维纳(N.Wiener)智力... 对方同时也需要在电脑dos窗口中以字符的形式输出该标志,并能任意控制层数。    ...
recommend-type

C++操作文件进行读取、删除、修改指定行

今天小编就为大家分享一篇关于C++操作文件进行读取、删除、修改指定行,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

优化MATLAB分段函数绘制:提升效率,绘制更快速

![优化MATLAB分段函数绘制:提升效率,绘制更快速](https://ucc.alicdn.com/pic/developer-ecology/666d2a4198c6409c9694db36397539c1.png?x-oss-process=image/resize,s_500,m_lfit) # 1. MATLAB分段函数绘制概述** 分段函数绘制是一种常用的技术,用于可视化不同区间内具有不同数学表达式的函数。在MATLAB中,分段函数可以通过使用if-else语句或switch-case语句来实现。 **绘制过程** MATLAB分段函数绘制的过程通常包括以下步骤: 1.
recommend-type

SDN如何实现简易防火墙

SDN可以通过控制器来实现简易防火墙。具体步骤如下: 1. 定义防火墙规则:在控制器上定义防火墙规则,例如禁止某些IP地址或端口访问,或者只允许来自特定IP地址或端口的流量通过。 2. 获取流量信息:SDN交换机会将流量信息发送给控制器。控制器可以根据防火墙规则对流量进行过滤。 3. 过滤流量:控制器根据防火墙规则对流量进行过滤,满足规则的流量可以通过,不满足规则的流量则被阻止。 4. 配置交换机:控制器根据防火墙规则配置交换机,只允许通过满足规则的流量,不满足规则的流量则被阻止。 需要注意的是,这种简易防火墙并不能完全保护网络安全,只能起到一定的防护作用,对于更严格的安全要求,需要
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。