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增加的时间是无法比拟的。综上脚本批处理的一劳永逸特点。

