Skip to content

Latest commit

 

History

History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 

README.md

ModerBox.QuestionBank - 题库转换工具

功能概述

题库转换工具用于将不同格式的题库文件转换或合并为统一的标准格式,方便在不同的学习平台间迁移题库数据。

支持的格式

源格式(输入)

  1. TXT文本格式

    • 从Word格式题库转换的文本文件
    • 支持按题型分类(单选题、多选题、判断题)
    • 自动识别答案格式
  2. 网络大学Excel格式

    • 标准网络大学题库格式
    • 题型在F列,题干在G列
    • 选项在H列,答案在I列
  3. 考试宝 Excel

    • 考试宝导出的Excel题库格式
    • 支持解析、章节、难度等扩展字段
    • 支持 .xlsx.xls 输入
  4. 磨题帮 Excel

    • 磨题帮导出的Excel题库格式
    • 支持题库标题、描述和解析字段
    • 支持 .xlsx.xls 输入
  5. 网络大学4列简化格式

    • 简化版网络大学格式
    • 包含4列数据:题型、题干、选项、答案
    • 支持 .xlsx.xls 输入
  6. EXC格式

    • 特定的Excel题库格式
    • 题型在E列,题干在F列
    • 选项在G列,答案在H列
    • 支持 .xlsx.xls 输入
  7. 简单 Excel(5列)

    • 表头:专业、题型、题目、选项、正确答案
    • 选项列用逗号分隔,格式如:A. 选项1,B. 选项2,C. 选项3
    • 答案列可写:A. 选项1A. 选项1,C. 选项3,系统仅提取字母答案
    • 支持 .xlsx.xls 输入
  8. 国电培训 JSON

    • 国电培训系统导出的JSON题库格式
  9. 风控平台格式题库

    • 风控平台导出的Excel题库格式
    • 表头:序号、一级纲要、二级纲要、题目分类、题型、题干、选项、答案等
    • 选项列支持 A-选项1|B-选项2 格式
    • 支持 .xlsx.xls 输入

目标格式(输出)

  1. 考试宝格式

    • 适用于考试宝App的题库格式
    • 支持最多8个选项
    • 包含解析、章节、难度等扩展字段
  2. 磨题帮格式

    • 适用于磨题帮App的题库格式
    • 包含标题、描述、用时等元数据
    • 支持最多5个选项
  3. 小包搜题 Excel

    • 第一列题干,第二列答案字母
    • 第三列起为ABCD及后续选项内容
  4. 小包搜题 TXT

    • 每行一个JSON:{q:题目, a:[选项数组], ans:答案}

项目结构

ModerBox.QuestionBank/
├── Question.cs                    # 题目模型
├── TxtReader.cs                   # TXT文件读取器
├── ExcelReader.cs                 # Excel文件读取器
├── QuestionBankWriter.cs          # 题库导出器
└── ModerBox.QuestionBank.csproj   # 项目文件

ModerBox.QuestionBank.Test/
├── QuestionBankTests.cs           # 单元测试
└── ModerBox.QuestionBank.Test.csproj

使用方法

在UI中使用

  1. 启动ModerBox应用程序
  2. 在导航菜单中选择"题库转换"
  3. 选择源文件(支持.txt、.xlsx、.xls、.json格式;多选文件会进入合并模式)
  4. 选择源格式类型(可以使用"自动检测")
  5. 选择目标格式(考试宝、磨题帮、小包搜题 Excel、小包搜题 TXT)
  6. 选择保存位置
  7. 点击"开始转换"或"开始合并"

在代码中使用

using ModerBox.QuestionBank;

// 从TXT文件读取题库
var questions = TxtReader.ReadFromFile("题库.txt");

// 从Excel文件读取题库
var questions2 = ExcelReader.ReadWLDXFormat("网络大学题库.xlsx");

// 从简单Excel读取题库
var questions3 = ExcelReader.ReadSimpleFormat("简单格式题库.xlsx");

// 导出为考试宝格式
QuestionBankWriter.WriteToKSBFormat(questions, "output.xlsx", "我的题库");

// 导出为磨题帮格式
QuestionBankWriter.WriteToMTBFormat(questions, "output.xlsx", "我的题库");

// 导出为小包搜题Excel格式
QuestionBankWriter.WriteToXiaobaoFormat(questions, "output.xlsx");

// 导出为小包搜题TXT格式
QuestionBankWriter.WriteToXiaobaoTxtFormat(questions, "output.txt");

// 合并多个题库,默认自动检测每个源文件格式并去重
var service = new QuestionBankConversionService();
var summary = service.Merge(
    new[] { "题库1.txt", "题库2.xlsx", "题库3.xls" },
    "合并结果.xlsx",
    QuestionBankSourceFormat.AutoDetect,
    QuestionBankTargetFormat.Mtb);

依赖项

  • ClosedXML: 用于读写 .xlsx Excel 文件
  • ExcelDataReader: 用于读取 .xls 旧版 Excel 文件
  • System.Text.Encoding.CodePages: 用于支持多种文本编码

题目模型

public class Question {
    public string Topic { get; set; }              // 题干
    public QuestionType TopicType { get; set; }    // 题型
    public List<string> Answer { get; set; }       // 选项列表
    public string CorrectAnswer { get; set; }      // 正确答案
    public string? Analysis { get; set; }          // 解析
    public string? Chapter { get; set; }           // 章节
    public string? Difficulty { get; set; }        // 难度
}

public enum QuestionType {
    SingleChoice,      // 单选题
    MultipleChoice,    // 多选题
    TrueFalse          // 判断题
}

注意事项

  1. 编码支持: TXT文件自动检测编码(UTF-8、GB2312等)
  2. 格式兼容: 输入支持 .xlsx.xls;导出为 Excel 时仍生成 .xlsx
  3. 数据验证: 转换前会验证文件格式和数据完整性
  4. 错误处理: 遇到无法解析的行会跳过并在控制台输出警告

测试

运行单元测试:

dotnet test ModerBox.QuestionBank.Test

许可证

本项目是ModerBox工具箱的一部分,遵循项目整体的许可证协议。