👉博__主👈:米码收割机
👉技__能👈:C++/Python语言
👉公众号👈:测试开发自动化【获取源码+商业合作】
👉荣__誉👈:阿里云博客专家博主、51CTO技术博主
👉专__注👈:专注主流机器人、人工智能等相关领域的开发、测试技术。
一、设计要求
使用C++语言,设计一个 试题库管理系统
的设计要求如下:
- 用户认证:
- 用户需要提供用户名和密码进行身份认证,只有管理员账户(用户名为 “admin”,密码为 “password”)可以访问系统。
- 功能实现:
- 提供以下功能选项:添加试题、删除试题、查询试题、生成试卷、退出系统。
- 管理员可以根据需要选择相应的操作,并执行相应的功能。
- 试题管理:
- 可以添加试题:输入试题的难易程度、题型、章节和内容,将新试题添加到试题库中。
- 支持删除试题:根据试题索引,管理员可以删除指定试题。
- 支持查询试题:根据关键字搜索试题内容,显示符合条件的试题信息。
- 试卷生成:
- 允许生成试卷:管理员可以输入要生成的试卷文件名,将试题库中所有试题按照格式输出到指定文件中作为试卷。
- 文件操作:
- 数据持久化:数据保存在文件中,能够持久化存储试题信息,保证数据不会丢失。
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 试题管理系统 ” 获取。👈👈👈
二、功能展示
2.1 登录功能
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 试题管理系统 ” 获取。👈👈👈
2.2 添加试题
2.3 查询试题
2.4 生成试题
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 试题管理系统 ” 获取。👈👈👈
2.5 删除试题
2.6 退出系统
3. 代码分析
- 头文件包含及命名空间声明
- 头文件包含了
<iostream>
,<fstream>
,<vector>
,<string>
,<sstream>
,这些是 C++ 标准库提供的头文件。 - 使用了
using namespace std;
声明使用std
命名空间,避免重复书写std::
。
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 试题管理系统 ” 获取。👈👈👈
- 试题结构体
Question
- 结构体包含四个成员变量:
difficulty
(难易程度)、questionType
(题型)、chapter
(章节)、content
(试题内容)。
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 试题管理系统 ” 获取。👈👈👈
struct Question { string difficulty; // 难易程度 string questionType; // 题型 string chapter; // 章节 string content; // 试题内容 };
- 试题库类
QuestionBank
- 使用了私有成员变量
questions
,是一个存储Question
结构体对象的vector
容器。 - 提供了公有函数:
addQuestion(const Question& question)
:添加试题到试题库。deleteQuestion(int index)
:根据索引删除试题。searchQuestions(const string& keyword)
:根据关键字查询匹配的试题。generatePaper(const string& outputFileName)
:生成试卷文件。
// 试题库类 class QuestionBank { private: vector<Question> questions; public: // 略....略。。。。源码获取 关注【测试开发自动化】公众号,回复 “ 试题管理系统 ” 获取。 };
- 主函数
main()
- 首先要求用户输入用户名和密码进行登陆验证,用户名为 “admin”,密码为 “password”。
- 登录成功后,进入一个循环,显示菜单选项,根据用户选择执行相应的操作。
- 操作包括:
- 添加试题:输入试题信息,并将其添加到试题库。
- 删除试题:根据输入的索引删除试题。
- 查询试题:根据关键字查询匹配的试题并输出。
- 生成试卷:输入文件名生成试卷文件。
- 退出系统:结束程序运行。
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 试题管理系统 ” 获取。👈👈👈
int main() { QuestionBank questionBank; string username, password; cout << "=========欢迎登录试题库管理系统=========" << endl; cout << "请输入用户名: "; cin >> username; cout << "请输入密码: "; cin >> password; cout << endl; if (username == "admin" && password == "password") { while (true) { cout << "*********欢迎进入试题库管理系统**************" << endl; cout << "1. 添加试题" << endl; cout << "2. 删除试题" << endl; cout << "3. 查询试题" << endl; cout << "4. 生成试卷" << endl; cout << "5. 退出" << endl; cout << "请选择操作:"; int choice; cin >> choice; switch (choice) { case 1: { Question question; cout << "请输入试题的难易程度: "; cin >> question.difficulty; cout << "请输入试题的题型: "; cin >> question.questionType; cout << "请输入试题的章节: "; cin >> question.chapter; cin.ignore(); // 清除输入缓冲区 cout << "请输入试题的内容: "; getline(cin, question.content); questionBank.addQuestion(question); cout << "试题添加成功!" << endl; break; } case 2: { int index; cout << "请输入要删除的试题索引: "; // 略。。。。 // 略。。。。 break; } case 3: { string keyword; cout << "请输入查询关键字: "; cin >> keyword; // 略。。。。源码获取 关注【测试开发自动化】公众号,回复 “ 试题管理系统 ” 获取。 // 略。。。。源码获取 关注【测试开发自动化】公众号,回复 “ 试题管理系统 ” 获取。 break; } case 4: { // 略。。。。 // 略。。。。 break; } case 5: // 略。。。。源码获取 关注【测试开发自动化】公众号,回复 “ 试题管理系统 ” 获取。 // 略。。。。源码获取 关注【测试开发自动化】公众号,回复 “ 试题管理系统 ” 获取。 return 0; default: // 略。。。。 // 略。。。。 break; } } } else { cout << "登录失败。用户名或密码不正确。" << endl; } return 0; }
- 输入输出
- 使用
cin
和cout
进行标准输入输出。 - 使用
getline(cin, str)
可以读取一整行的输入。
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 试题管理系统 ” 获取。👈👈👈