问卷星批量导入题目(matlab)

1.适用情景

形如如下格式的题目:

2.matlab脚本

2.1单选、多选、填空

clc,clear
title1={'管理','钢结构','土建'};
title2={'单选','多选','填空'};
%%
for ki=1:3
    for kj=1:2
        path='F:\wjy0907\work\w0910_GaoHan\附件2:中建n局2024年技术质量知识题库';
        fileName=[path,'\',title1{ki},title2{kj},'.txt'];
        fileNameW=[fileName(1:end-4),'_select.txt'];
        %% read
        fid=fopen(fileName,"r");
        tiMuNum=0;
        str=fgetl(fid);
        while strcmp(str,'DFend')==0
            loc=find(str=='.');
            if isempty(loc)
                loc=find(str=='.');
            end
            if isempty(loc)
                qNum=tiMuNum;
                tiMu=str;
            else
                qNum=str2double(str(1:(loc(1)-1)));
                tiMu=str((loc(1)+1):end);
            end
            str=fgetl(fid);
            %
            while strcmp(str(1),'A')==0&strcmp(str(1),'【')==0
                tiMu=[tiMu,str];
                str=fgetl(fid);
            end
            %
            xuanXiangi=1;
            xuanXiang=[];
            while strcmp(str(1),'【')==0
                xuanXiang.("x"+num2str(xuanXiangi))=str;
                xuanXiangi=xuanXiangi+1;
                str=fgetl(fid);
            end
            daAn=str;
            xuanXiangNum=xuanXiangi-1;
            tiMuNum=tiMuNum+1;
            %
            tiMui.qNum=qNum;
            tiMui.tiMu=tiMu;
            tiMui.xuanXiang=xuanXiang;
            tiMui.xuanXiangNum=xuanXiangNum;
            tiMui.daAn=daAn;
            tiMui.qNum_=tiMuNum;
            tiBase.("t"+num2str(tiMuNum))=tiMui;
            %
            str=fgetl(fid);
        end
        fclose( fid);
        %% write
        qSelect=randperm(tiMuNum,fix(tiMuNum/4));
        fid=fopen(fileNameW,"w");
        tiHaoMode=2;
        for i=1:length(qSelect)
            tiMui=tiBase.("t"+num2str(qSelect(i)));
            switch tiHaoMode
                case 0
                    tiMu=tiMui.tiMu;
                case 1
                    tiMu=[num2str(i),'.',tiMui.tiMu];
                case 2
                    tiMu=[num2str(tiMui.qNum),'.',tiMui.tiMu];
            end
            fprintf(fid,'%s\n',tiMu);
            xuanXiang=tiMui.xuanXiang;
            for j=1:tiMui.xuanXiangNum
                fprintf(fid,'%s\n',xuanXiang.("x"+num2str(j)));
            end
            fprintf(fid,'%s\n',tiMui.daAn);
            fprintf(fid,'%s\n','');
        end
        fclose(fid);
    end
end

2.2判断

clc,clear
title1={'管理','钢结构','土建'};
title2={'判断'};
%%
for ki=1:3
    for kj=1:1
        path='F:\wjy0907\work\w0910_GaoHan\附件2:中建n局2024年技术质量知识题库';
        fileName=[path,'\',title1{ki},title2{kj},'.txt'];
        fileNameW=[fileName(1:end-4),'_select.txt'];
        %% read
        fid=fopen(fileName,"r");
        tiMuNum=0;
        str=fgetl(fid);
        while strcmp(str,'DFend')==0
            loc=find(str=='.');
            if isempty(loc)
                loc=find(str=='.');
            end
            qNum=str2double(str(1:(loc(1)-1)));
            tiMu=str((loc(1)+1):end);
            str=fgetl(fid);
            xuanXiangi=1;
            xuanXiang=[];
            while strcmp(str(1),'【')==0
                xuanXiang.("x"+num2str(xuanXiangi))=str;
                xuanXiangi=xuanXiangi+1;
                str=fgetl(fid);
            end
            daAn=str;
            xuanXiangNum=xuanXiangi-1;
            tiMuNum=tiMuNum+1;
            %
            tiMui.qNum=qNum;
            tiMui.tiMu=tiMu;
            tiMui.xuanXiang=xuanXiang;
            tiMui.xuanXiangNum=xuanXiangNum;
            tiMui.daAn=daAn;
            tiMui.qNum_=tiMuNum;
            tiBase.("t"+num2str(tiMuNum))=tiMui;
            %
            str=fgetl(fid);
        end
        fclose( fid);
        %% write
        qSelect=randperm(tiMuNum,fix(tiMuNum/4));
        fid=fopen(fileNameW,"w");
        tiHaoMode=2;
        for i=1:length(qSelect)
            tiMui=tiBase.("t"+num2str(qSelect(i)));
            switch tiHaoMode
                case 0
                    tiMu=tiMui.tiMu;
                case 1
                    tiMu=[num2str(i),'.',tiMui.tiMu];
                case 2
                    tiMu=[num2str(tiMui.qNum),'.',tiMui.tiMu];
            end
            %
            if contains(tiMui.daAn,'√')
                tiMu=[tiMu,'(对)'];
            else
                tiMu=[tiMu,'(错)'];
            end
            %
            fprintf(fid,'%s\n',tiMu);
            % xuanXiang=tiMui.xuanXiang;
            % for j=1:tiMui.xuanXiangNum
            %     fprintf(fid,'%s\n',xuanXiang.("x"+num2str(j)));
            % end
            % fprintf(fid,'%s\n',tiMui.daAn);
            fprintf(fid,'%s\n','');
        end
        fclose(fid);
    end
end

3.导入到问卷星

4.效果展示

很多领导给的题库格式并不统一,如果没有批处理的方法去整理题目的话,就只能挨个粘贴复制到问卷星中。今天刚接到领导任务制作一份试卷基于问卷星,给定了一个题库,从中随机选取1/4的题量。

方法1:挨个粘贴复制的话假如每道题15秒。

方法2:使用脚本批处理的话,从接到任务、分析任务、编写脚本、完成任务一共用时不到4小时,导入了共1344道题目,平均用时不到11秒。

而且当题量增加的时候使用方法1增加的时间和方法2增加的时间是无法比拟的。综上脚本批处理的一劳永逸特点。

图4.1​​​​​​
图4.2
### 使用 Power Automate 将问卷调查数据导入 SQL Server 数据库 #### 创建连接器并获取问卷数据 为了实现这一目标,首先需要创建一个用于访问问卷 API 的自定义连接器。这可以通过 Power Platform 中的“自定义连接器”功能来完成。一旦设置好此连接器,便可以在 Power Automate 流程中调用它以提取所需的数据[^1]。 ```json { "swagger": "2.0", "info": { "title": "Wenjuanxing Connector", "version": "1.0" }, ... } ``` 接着,在 Power Automate 中新建自动化流程,选择触发条件为定期执行或是当新表单提交时触发。随后添加动作项 “Call HTTP with JSON”,利用之前配置好的自定义连接器去请求最新的答卷记录[^2]。 #### 处理和转换数据结构 收到从问卷返回来的原始 JSON 响应之后,可能需要对其进行一些处理才能适应 SQL Server 表格的要求。可以使用表达式或解析 JSON 功能将复杂嵌套的对象扁平化成简单的键值对形式,并映射至相应的字段名上[^3]。 例如: | 调查问题 | 映射后的列名 | | --- | --- | | 用户姓名 | `RespondentName` | | 邮箱地址 | `EmailAddr` | #### 设置与 SQL Server 的集成 现在转向数据库端的操作——建立同 Azure SQL Database 或本地部署版之间的链接。通过内置的支持 ODBC 和 ADO.NET 协议的标准方式轻松达成目的;只需提供必要的认证信息即可成功握手通信[^4]。 最后一步是在工作流里加入 Insert Row 这样的操作符向指定的目标表格内写入经过整理过的条目。确保每一条来自在线调研平台的新回复都能被及时同步保存下来供后续分析所用[^5]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值