👉博__主👈:米码收割机
👉技__能👈:C++/Python语言
👉公众号👈:测试开发自动化【获取源码+商业合作】
👉荣__誉👈:阿里云博客专家博主、51CTO技术博主
👉专__注👈:专注主流机器人、人工智能等相关领域的开发、测试技术。
【C++面向对象】C++考试题库管理系统(源码)【独一无二】
目录
- 【C++面向对象】C++考试题库管理系统(源码)【独一无二】
- 一、设计要求
- 二、功能展示
- 2.1 登录功能
- 2.2 添加试题
- 2.3 查询试题
- 2.4 生成试题
- 2.5 删除试题
- 2.6 退出系统
- 3. 代码分析
一、设计要求
使用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)
可以读取一整行的输入。
- 使用
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 试题管理系统 ” 获取。👈👈👈