【C++面向对象】C++考试题库管理系统(源码)【独一无二】

请添加图片描述


👉博__主👈:米码收割机
👉技__能👈:C++/Python语言
👉公众号👈:测试开发自动化【获取源码+商业合作】
👉荣__誉👈:阿里云博客专家博主、51CTO技术博主
👉专__注👈:专注主流机器人、人工智能等相关领域的开发、测试技术。


【C++面向对象】C++考试题库管理系统(源码)【独一无二】


目录

  • 【C++面向对象】C++考试题库管理系统(源码)【独一无二】
  • 一、设计要求
  • 二、功能展示
    • 2.1 登录功能
    • 2.2 添加试题
    • 2.3 查询试题
    • 2.4 生成试题
    • 2.5 删除试题
    • 2.6 退出系统
  • 3. 代码分析


一、设计要求

使用C++语言,设计一个 试题库管理系统 的设计要求如下:

  1. 用户认证

    • 用户需要提供用户名和密码进行身份认证,只有管理员账户(用户名为 “admin”,密码为 “password”)可以访问系统。
  2. 功能实现

    • 提供以下功能选项:添加试题、删除试题、查询试题、生成试卷、退出系统。
    • 管理员可以根据需要选择相应的操作,并执行相应的功能。
  3. 试题管理

    • 可以添加试题:输入试题的难易程度、题型、章节和内容,将新试题添加到试题库中。
    • 支持删除试题:根据试题索引,管理员可以删除指定试题。
    • 支持查询试题:根据关键字搜索试题内容,显示符合条件的试题信息。
  4. 试卷生成

    • 允许生成试卷:管理员可以输入要生成的试卷文件名,将试题库中所有试题按照格式输出到指定文件中作为试卷。
  5. 文件操作

    • 数据持久化:数据保存在文件中,能够持久化存储试题信息,保证数据不会丢失。

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 试题管理系统 ” 获取。👈👈👈


二、功能展示

2.1 登录功能

在这里插入图片描述

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 试题管理系统 ” 获取。👈👈👈

2.2 添加试题

在这里插入图片描述

2.3 查询试题

在这里插入图片描述

2.4 生成试题

在这里插入图片描述

在这里插入图片描述

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 试题管理系统 ” 获取。👈👈👈

2.5 删除试题

在这里插入图片描述

2.6 退出系统

在这里插入图片描述


3. 代码分析

  1. 头文件包含及命名空间声明
    • 头文件包含了 <iostream>, <fstream>, <vector>, <string>, <sstream>,这些是 C++ 标准库提供的头文件。
    • 使用了 using namespace std; 声明使用 std 命名空间,避免重复书写 std::

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 试题管理系统 ” 获取。👈👈👈

  1. 试题结构体 Question
    • 结构体包含四个成员变量:difficulty(难易程度)、questionType(题型)、chapter(章节)、content(试题内容)。

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 试题管理系统 ” 获取。👈👈👈

struct Question {
    string difficulty; // 难易程度
    string questionType; // 题型
    string chapter; // 章节
    string content; // 试题内容
};
  1. 试题库类 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:
    // 略....略。。。。源码获取 关注【测试开发自动化】公众号,回复 “ 试题管理系统 ” 获取。
};
  1. 主函数 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;
}

  1. 输入输出
    • 使用 cincout 进行标准输入输出。
    • 使用 getline(cin, str) 可以读取一整行的输入。

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 试题管理系统 ” 获取。👈👈👈

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

构建第一个ArkTS应用(FA模型)

创建ArkTS工程 若首次打开DevEco Studio&#xff0c;请点击Create Project创建工程。如果已经打开了一个工程&#xff0c;请在菜单栏选择File > New > Create Project来创建一个新工程。选择Application应用开发&#xff08;本文以应用开发为例&#xff0c;Atomic Servi…

深入理解Java内存模型及其作用

目录 1.前言 2.为什么要有 Java 内存模型&#xff1f; 2.1 一致性问题 2.2 重排序问题 3.Java 内存模型的定义 4.规范内容 4.1 主内存和工作内存交互规范 4.2 什么是 happens-before 原则&#xff1f; 1.前言 当问到 Java 内存模型的时候&#xff0c;一定要注意&#…

【轻松上手】透明屏安装教程,一步到位,让您轻松享受透明视界

透明屏以其独特的视觉效果和广泛的应用场景&#xff0c;越来越受到人们的青睐。想要轻松享受透明视界&#xff0c;正确的安装步骤至关重要。下面&#xff0c;我们将为您提供一份简单明了的透明屏安装教程&#xff0c;让您一步到位&#xff0c;轻松上手。 第一步&#xff1a;准备…

STM32学习和实践笔记(4): 分析和理解GPIO_InitTypeDef GPIO_InitStructure (a)

深入分析及学习一下上面这一段代码的构成与含义。 首先&#xff0c;这个GPIO_InitTypeDef GPIO_InitStructure;其实与int a 是完全类似的语法格式以及含义。 GPIO_InitStructure就相当于a这样一个变量。不过从这个变量的名字可以知道&#xff0c;这是一个用于GPIO初始化的结构…

Java | Leetcode Java题解之第7题整数反转

题目&#xff1a; 题解&#xff1a; class Solution {public int reverse(int x) {int rev 0;while (x ! 0) {if (rev < Integer.MIN_VALUE / 10 || rev > Integer.MAX_VALUE / 10) {return 0;}int digit x % 10;x / 10;rev rev * 10 digit;}return rev;} }

MySQL函数大全

目录 一、数值类函数 1、ABS 2、SQRT 3、POW 4、MOD 5、CEIL 6、FLOOR 7、RAND 8、ROUND 9、SIGN 二、聚合函数 三、字符串函数 1、LENGTH 2、CHAR_LENGTH 3、CONCAT 4、INSERT 5、LOWER 6、UPPER 7、LEFT 8、RIGHT 9、TRIM 10、REPLACE 11、SUBSTRING …

正则表达式(1)

文章目录 专栏导读1、match2、匹配目标3、通用匹配4、常用匹配规则表格 专栏导读 ✍ 作者简介&#xff1a;i阿极&#xff0c;CSDN 数据分析领域优质创作者&#xff0c;专注于分享python数据分析领域知识。 ✍ 本文录入于《python网络爬虫实战教学》&#xff0c;本专栏针对大学生…

前端调试工具之Chrome Elements、Network、Sources、TimeLine调试

常用的调试工具有Chrome浏览器的调试工具&#xff0c;火狐浏览器的Firebug插件调试工具&#xff0c;IE的开发人员工具等。它们的功能与使用方法大致相似。Chrome浏览器简洁快速&#xff0c;功能强大这里主要介绍Chrome浏览器的调试工具。 打开 Google Chrome 浏览器&#xff0c…

Java多线程实战-从零手搓一个简易线程池(三)线程工厂,核心线程与非核心线程逻辑实现

&#x1f3f7;️个人主页&#xff1a;牵着猫散步的鼠鼠 &#x1f3f7;️系列专栏&#xff1a;Java全栈-专栏 &#x1f3f7;️本系列源码仓库&#xff1a;多线程并发编程学习的多个代码片段(github) &#x1f3f7;️个人学习笔记&#xff0c;若有缺误&#xff0c;欢迎评论区指正…

SWM341系列应用(上位机应用)

SWM341系列之上位机应用 1、分级图像和PNG、JPG的应用 现象&#xff1a;客户使用SWM34SVET6HMI_0.4.1版本上位机进行UI界面布局&#xff0c;反馈在模拟运行时&#xff08;PC端&#xff09;流畅&#xff0c;在Demo平台&#xff08;设备端&#xff09;运行卡顿。 分析及解决&…

基于SpringBoot+微信小程序的图书借阅管理系统(包运行调试)

介绍 系统介绍 是一套图书借阅管理系统&#xff0c;包括用户小程序以及后台管理系统。 前台商城系统包含用户注册登录、首页门户、图书查询、在线借阅、个人中心、我的信息、我的借阅、押金充值。 后台管理系统包含统计分析、用户管理、分类管理、图书管理、借阅管理、管理员…

Unknown redis exception; event execu tor terminated;解决

最近查看服务器日记是不是报发现有台服务器报错&#xff1a; rocessing failed; nested exception is org.springframework.data.redis.RedisSystemException: Unknown redis exception; nested exception is java.util.concurrent.RejectedExecutionException: event execu …

升降梯人数识别摄像机

升降梯人数识别摄像机是一种智能监测设备&#xff0c;主要用于实时识别和计算升降梯内乘客的数量。通过搭载先进的图像识别技术和人工智能算法&#xff0c;该设备可以准确监测乘客进出数量&#xff0c;提供重要数据支持和信息反馈&#xff0c;帮助管理人员有效管理升降梯运行&a…

经久耐用耐强腐蚀PFA材质气体洗涤瓶全氟烷氧基树脂尾气吸收瓶

PFA洗气瓶是一种常用于净化和干燥各种气体的实验室器皿&#xff0c;以去除其中的水分、油脂、颗粒物等杂质&#xff0c;从而使需要用到的气体满足实验要求。 PFA气体吸收瓶 PFA洗气瓶的工作原理&#xff1a; 主要是通过液体吸收、溶解或发生化学反应来去除气体中的杂质。在洗气…

【软件工程】详细设计(二)

这里是详细设计文档的第二部分。前一部分点这里 4. 学生端模块详细设计 学生端模块主要由几个组件构成&#xff1a;学生登录界面&#xff0c;成绩查询界面等界面。因为学生端的功能相对来说比较单一&#xff0c;因此这里只给出两个最重要的功能。 图4.1 学生端模块流程图 4.…

牛客网BC-71 三角形判断(操作符注意事项)

例题如下 这道题的编程很容易实现&#xff0c;但恰恰因为太简单导致容易忘记注意事项 代码如下 #include<stdio.h> int main() {int a 0,b 0,c 0;while(scanf("%d%d%d",&a,&b,&c)!EOF){if(ab>c&&ac>b&&bc>a){ //三…

零基础如何自学人工智能?推荐优秀的学习路径及方法

人工智能&#xff08;AI&#xff09;是一个广泛且复杂的领域&#xff0c;自学AI可能是一项艰巨的任务&#xff0c;但只要有兴趣和决心&#xff0c;这绝对是可能的。以下是一个零基础自学人工智能的学习路径&#xff0c;旨在帮助那些只有兴趣&#xff0c;但缺乏背景知识的人。 *…

C语言第三十九弹---预处理(上)

✨个人主页&#xff1a; 熬夜学编程的小林 &#x1f497;系列专栏&#xff1a; 【C语言详解】 【数据结构详解】 预处理 1、预定义符号 2、#define定义常量 3、#define定义宏 4、带有副作用的宏参数 5、宏替换的规则 6、宏和函数的对比 总结 在C语言中&#xff0c;预处…

宝塔面板docker管理器安装后,返回docker菜单页,提示当前未安装docker或docker-compose 未安装,再次安装后,依然提示未安装。

宝塔面板docker管理器安装后&#xff0c;返回docker菜单页&#xff0c;提示当前未安装docker或docker-compose 未安装&#xff0c;再次安装后&#xff0c;依然提示未安装。 OS: debian 11 BT: 7.9.8 解答&#xff1a; 您好&#xff0c;服务器终端执行以下命令截图看一下命令…

企业微信企业主体变更认证介绍

企业微信变更主体有什么作用&#xff1f; 说一个自己亲身经历的事情&#xff0c;当时我在一家教育公司做运营&#xff0c;公司所有客户都是通过企业微信对接的。后来行业整顿&#xff0c;公司不得不注销&#xff0c;换了营业执照打算做技能培训&#xff0c;但发现注销后原来的企…