问卷星批量导入题目(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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值