一、设计要求
1.读取题目信息:
• 使用 readProjects 函数从指定文件 projects.txt 中读取题目信息,并将其存储在 Project 结构体的向量中。
2.随机抽取题目:
• 使用 drawProject 函数从未被选中的题目中随机抽取一个题目,并标记为已选中。通过 srand(time(0)) 初始化随机数种子确保每次运行时随机性。
3.保存选题结果:
• 使用 saveSelection 函数将学生选题结果保存到指定文件 selections.txt 中,包含学生信息和题目信息。
4.查询选题结果:
• 使用 querySelection 函数从 selections.txt 文件中读取并显示所有的选题结果。
5.主函数 main:
• 提供一个简单的菜单驱动界面,用户可以选择以下操作:
• 输入学生信息(学号、姓名、班级),并将学生信息存储在 map 容器中,键为学号。
• 输入学号随机抽取题目,并保存选题结果到文件中。
• 查询并显示所有的选题结果。
• 退出程序。
• 使用 while 循环和 cin 获取用户输入,执行相应操作,并提供简单的错误处理。
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 题库 ” 获取,拿来即用。👈👈👈
二、设计思路
以下是对各个代码块的详细分析及其设计思路:
- 结构体定义
struct Student {
string id;
string name;
string className;
};
struct Project {
int id;
string title;
string requirements;
string deadline;
bool isSelected;
};
设计思路:
• 定义两个结构体 Student 和 Project 来分别表示学生和题目信息。
• Student 包含学号、姓名和班级信息。
• Project 包含题目编号、标题、要求、截止日期,以及一个布尔值 isSelected 来标识该题目是否已被选中。
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 题库 ” 获取,拿来即用。👈👈👈 读取题目信息
vector readProjects(const string& filename) {
vector projects;
ifstream file(filename);
string line;
while (getline(file, line)) {stringstream ss(line);
// 略....(至少10行代码)
// 略....(至少10行代码)
file.close();
return projects;
}
设计思路:
• 从文件中读取题目信息并存储到 vector 中。
• 使用 ifstream 读取文件,通过 stringstream 解析每一行的数据,并填充到 Project 结构体中。
• 初始化 isSelected 为 false,表示题目未被选中。随机抽取题目
Project* drawProject(vector& projects) {
srand(time(0));
while (true) {// 略....(至少10行代码)
// 略....(至少10行代码)
}
设计思路:
• 使用 srand(time(0)) 初始化随机数种子,确保每次运行程序时随机性。
• 通过 rand() 函数随机抽取一个未被选中的题目,并标记为已选中,返回该题目的指针。- 保存选题结果
void saveSelection(const Student& student, const Project& project, const string& filename) {
ofstream file(filename, ios::app);
file << "学号: " << student.id << ", 姓名: " << student.name << ", 班级: " <<
// 略....(至少10行代码)
// 略....(至少10行代码)
file.close();
}
设计思路:
• 将学生的选题结果追加写入到文件中,确保每次选题结果不会覆盖之前的记录。
• 使用 ofstream 以追加模式打开文件 (ios::app),将学生信息和题目信息格式化后写入文件。
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 题库 ” 获取,拿来即用。👈👈👈 查询选题结果
void querySelection(const string& filename) {
ifstream file(filename);
string line;// 略....(至少10行代码)
// 略....(至少10行代码)
file.close();
}
设计思路:
• 从文件中读取所有选题结果并输出到控制台。
• 使用 ifstream 打开文件,逐行读取并输出每一行内容。主函数
int main() {
string projectFile = "projects.txt";
string selectionFile = "selections.txt";
vector projects = readProjects(projectFile);
map students;
int choice;
while (true) {cout << "1. 输入学生信息\n2. 输入学号随机抽取题目\n3. 查询选题结果\n4. 退出\n选择操作: "; cin >> choice; if (choice == 1) { Student student; cout << "输入学号: "; cin >> student.id;
// 略....(至少10行代码)
// 略....(至少10行代码)}
return 0;
}
设计思路:
• 设置项目文件和选题结果文件的文件名。
• 读取题目信息并存储在 vector 中。
• 使用 map 存储学生信息,键为学生的学号。
• 提供一个菜单驱动的界面,让用户可以选择输入学生信息、随机抽取题目、查询选题结果或退出程序。
• 用户输入学号和相关信息后存储到 map 中。
https://www.h3cw.com/sitemap/post.html
• 用户输入学号进行随机抽题,并保存选题结果到文件中。
• 用户可以查询选题结果,显示所有保存的记录。
通过这些设计,程序实现了一个完整的选题管理系统,支持学生信息输入、题目随机抽取、选题结果保存和查询功能。
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 题库 ” 获取,拿来即用。👈👈👈
三、可视化分析
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 题库 ” 获取,拿来即用。👈👈👈