Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
E
Education
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
黄奎
Education
Commits
782e4401
Commit
782e4401
authored
Sep 06, 2021
by
黄奎
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
页面修改
parent
234377b4
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
71 additions
and
84 deletions
+71
-84
PaperModule.cs
Edu.Module.Exam/PaperModule.cs
+16
-0
AnalysisQuestionTypeModule.cs
Edu.Module.Question/AnalysisQuestionTypeModule.cs
+55
-84
No files found.
Edu.Module.Exam/PaperModule.cs
View file @
782e4401
...
...
@@ -1254,7 +1254,22 @@ namespace Edu.Module.Exam
foreach
(
var
sItem
in
stuTempList
)
{
var
questionModel
=
gItem
.
DetailsList
.
Where
(
qitem
=>
qitem
.
Id
==
sItem
.
DetailsId
)?.
FirstOrDefault
();
var
QuestionContentObj
=
analysisQuestion
.
ParsingQuestion
(
questionModel
.
QuestionTypeKey
,
sItem
.
StudentContent
,
isEdit
:
true
);
List
<
object
>
answerList
=
new
List
<
object
>();
//填空题、分录题、资料题
if
(
questionModel
.
QuestionTypeKey
==
"fill-in"
||
questionModel
.
QuestionTypeKey
==
"entry-problem"
||
questionModel
.
QuestionTypeKey
==
"data-question"
)
{
var
tempList
=
sItem
.
StundetAnswer
.
Split
(
'★'
);
if
(
tempList
!=
null
&&
tempList
.
Count
()
>
0
)
{
foreach
(
var
tItem
in
tempList
)
{
answerList
.
Add
(
tItem
);
}
}
}
var
qObj
=
new
{
PaperDetailsId
=
sItem
.
DetailsId
,
//试卷问题编号
...
...
@@ -1269,6 +1284,7 @@ namespace Edu.Module.Exam
questionModel
.
Score
,
Answer
=
isShowAnswer
?
questionModel
.
Answer
:
sItem
.
StundetAnswer
,
sItem
.
StundetAnswer
,
AnswerList
=
isShowAnswer
?
answerList
:
new
List
<
object
>
(),
AnswerParse
=
questionModel
.
AnswerParse
,
StundetScore
=
sItem
.
StundetScore
,
sItem
.
IsMarking
...
...
Edu.Module.Question/AnalysisQuestionTypeModule.cs
View file @
782e4401
...
...
@@ -412,13 +412,18 @@ namespace Edu.Module.Question
{
var
optionItems
=
Common
.
Plugin
.
JsonHelper
.
DeserializeObject
<
List
<
optionItem
>>(
QuestionContent
);
message
=
CheckChoose
(
optionItems
);
if
(!
string
.
IsNullOrEmpty
(
message
))
var
tempList
=
optionItems
.
Where
(
qitem
=>
qitem
.
IsAnswer
==
true
);
if
(
tempList
!=
null
&&
tempList
.
Count
()
>
0
)
{
return
message
;
AnalysisAnswer
=
string
.
Join
(
","
,
tempList
.
Select
(
qitem
=>
qitem
.
Name
))
;
}
else
{
AnalysisAnswer
=
string
.
Join
(
","
,
optionItems
.
Where
(
qitem
=>
qitem
.
IsAnswer
==
true
).
Select
(
qitem
=>
qitem
.
Name
));
AnalysisAnswer
=
""
;
}
if
(!
string
.
IsNullOrEmpty
(
message
))
{
return
message
;
}
}
//判断题
...
...
@@ -426,13 +431,18 @@ namespace Edu.Module.Question
{
var
optionItems
=
Common
.
Plugin
.
JsonHelper
.
DeserializeObject
<
List
<
optionItem
>>(
QuestionContent
);
message
=
CheckChoose
(
optionItems
);
if
(!
string
.
IsNullOrEmpty
(
message
))
var
judgeModel
=
optionItems
.
Where
(
qitem
=>
qitem
.
IsAnswer
==
true
)?.
FirstOrDefault
();
if
(
judgeModel
!=
null
)
{
return
message
;
AnalysisAnswer
=
string
.
Join
(
","
,
judgeModel
?.
Name
)
;
}
else
{
AnalysisAnswer
=
optionItems
.
Where
(
qitem
=>
qitem
.
IsAnswer
==
true
)?.
FirstOrDefault
()?.
Name
;
AnalysisAnswer
=
""
;
}
if
(!
string
.
IsNullOrEmpty
(
message
))
{
return
message
;
}
}
//填空题
...
...
@@ -440,66 +450,51 @@ namespace Edu.Module.Question
{
var
fillInList
=
Common
.
Plugin
.
JsonHelper
.
DeserializeObject
<
List
<
fillInItem
>>(
QuestionContent
);
message
=
CheckFillIn
(
fillInList
);
AnalysisAnswer
=
string
.
Join
(
"★"
,
fillInList
.
Select
(
qitem
=>
Common
.
Plugin
.
StringHelper
.
AppHtmlFilterr
(
qitem
.
Content
)));
if
(!
string
.
IsNullOrEmpty
(
message
))
{
return
message
;
}
else
{
AnalysisAnswer
=
string
.
Join
(
"★"
,
fillInList
.
Select
(
qitem
=>
Common
.
Plugin
.
StringHelper
.
AppHtmlFilterr
(
qitem
.
Content
)));
}
}
//简答题
else
if
(
QuestionTypeKey
==
"short-answer"
)
{
message
=
CheckShortAnswer
(
Answer
);
AnalysisAnswer
=
Common
.
Plugin
.
StringHelper
.
AppHtmlFilterr
(
Answer
);
if
(!
string
.
IsNullOrEmpty
(
message
))
{
return
message
;
}
else
{
AnalysisAnswer
=
Common
.
Plugin
.
StringHelper
.
AppHtmlFilterr
(
Answer
);
}
}
//名词解释
else
if
(
QuestionTypeKey
==
"noun-explanation"
)
{
AnalysisAnswer
=
Common
.
Plugin
.
StringHelper
.
AppHtmlFilterr
(
Answer
);
if
(
string
.
IsNullOrEmpty
(
Answer
))
{
message
=
"请填写名词解释答案"
;
return
message
;
}
else
{
AnalysisAnswer
=
Common
.
Plugin
.
StringHelper
.
AppHtmlFilterr
(
Answer
);
}
}
//论述题
else
if
(
QuestionTypeKey
==
"essay-question"
)
{
AnalysisAnswer
=
Common
.
Plugin
.
StringHelper
.
AppHtmlFilterr
(
Answer
);
if
(
string
.
IsNullOrEmpty
(
Answer
))
{
message
=
"请填写论述题答案"
;
return
message
;
}
else
{
AnalysisAnswer
=
Common
.
Plugin
.
StringHelper
.
AppHtmlFilterr
(
Answer
);
}
}
//计算题
else
if
(
QuestionTypeKey
==
"calculation"
)
{
AnalysisAnswer
=
Common
.
Plugin
.
StringHelper
.
AppHtmlFilterr
(
Answer
);
if
(
string
.
IsNullOrEmpty
(
Answer
))
{
message
=
"请填写计算题答案"
;
return
message
;
}
else
{
AnalysisAnswer
=
Common
.
Plugin
.
StringHelper
.
AppHtmlFilterr
(
Answer
);
}
}
//分录题、资料题
else
if
(
QuestionTypeKey
==
"entry-problem"
||
QuestionTypeKey
==
"data-question"
)
...
...
@@ -507,15 +502,12 @@ namespace Edu.Module.Question
var
entryList
=
Common
.
Plugin
.
JsonHelper
.
DeserializeObject
<
List
<
fillInItem
>>(
QuestionContent
);
if
(
entryList
!=
null
&&
entryList
.
Count
>
0
)
{
AnalysisAnswer
=
string
.
Join
(
"★"
,
entryList
.
Select
(
qitem
=>
Common
.
Plugin
.
StringHelper
.
AppHtmlFilterr
(
qitem
.
Content
)));
if
(
entryList
.
Where
(
qitem
=>
string
.
IsNullOrEmpty
(
qitem
.
Content
)).
Count
()
>
0
)
{
message
=
"请输入答案"
;
return
message
;
}
else
{
AnalysisAnswer
=
string
.
Join
(
"★"
,
entryList
.
Select
(
qitem
=>
Common
.
Plugin
.
StringHelper
.
AppHtmlFilterr
(
qitem
.
Content
)));
}
}
else
{
...
...
@@ -529,15 +521,15 @@ namespace Edu.Module.Question
var
sortList
=
Common
.
Plugin
.
JsonHelper
.
DeserializeObject
<
List
<
List
<
matchingItem
>>>(
QuestionContent
);
if
(
sortList
!=
null
&&
sortList
.
Count
>
0
)
{
if
(
sortList
.
Count
>
1
)
{
AnalysisAnswer
=
string
.
Join
(
","
,
sortList
[
1
].
Select
(
qitem
=>
qitem
.
Name
));
}
if
(
sortList
[
0
].
Where
(
qitem
=>
string
.
IsNullOrEmpty
(
qitem
.
Content
)).
Count
()
>
0
)
{
message
=
"请输入选项内容"
;
return
message
;
}
if
(
sortList
.
Count
>
1
)
{
AnalysisAnswer
=
string
.
Join
(
","
,
sortList
[
1
].
Select
(
qitem
=>
qitem
.
Name
));
}
}
else
{
...
...
@@ -579,15 +571,12 @@ namespace Edu.Module.Question
}
if
(
matchList
.
Count
>
2
)
{
AnalysisAnswer
=
Common
.
Plugin
.
JsonHelper
.
Serialize
(
matchList
[
2
]);
if
(
matchList
[
2
].
Where
(
qitem
=>
string
.
IsNullOrEmpty
(
qitem
.
Content
)).
Count
()
>
0
)
{
message
=
"请设置答案"
;
return
message
;
}
else
{
AnalysisAnswer
=
Common
.
Plugin
.
JsonHelper
.
Serialize
(
matchList
[
2
]);
}
}
}
else
...
...
@@ -606,6 +595,8 @@ namespace Edu.Module.Question
string
clozeAnswer
=
""
;
foreach
(
var
subList
in
clozeList
)
{
var
tempModel
=
subList
.
Where
(
qitem
=>
qitem
.
IsAnswer
==
true
)?.
FirstOrDefault
();
clozeAnswer
+=
","
+
tempModel
?.
Name
??
""
;
if
(
subList
.
Where
(
qitem
=>
string
.
IsNullOrEmpty
(
qitem
.
Content
)).
Count
()
>
0
)
{
message
=
string
.
Format
(
"第{0}小题选项内容不能为空!"
,
index
);
...
...
@@ -616,7 +607,6 @@ namespace Edu.Module.Question
message
=
string
.
Format
(
"请设置第{0}小题选项的正确答案!"
,
index
);
return
message
;
}
clozeAnswer
+=
","
+
subList
.
Where
(
qitem
=>
qitem
.
IsAnswer
==
true
)?.
FirstOrDefault
()?.
Name
;
index
++;
}
AnalysisAnswer
=
clozeAnswer
.
TrimStart
(
','
);
...
...
@@ -630,28 +620,22 @@ namespace Edu.Module.Question
//口语题
else
if
(
QuestionTypeKey
==
"spoken"
)
{
AnalysisAnswer
=
Common
.
Plugin
.
StringHelper
.
AppHtmlFilterr
(
Answer
);
if
(
string
.
IsNullOrEmpty
(
Answer
))
{
message
=
"请填写口语题答案!"
;
return
message
;
}
else
{
AnalysisAnswer
=
Common
.
Plugin
.
StringHelper
.
AppHtmlFilterr
(
Answer
);
}
}
//其它题
else
if
(
QuestionTypeKey
==
"other"
)
{
AnalysisAnswer
=
Common
.
Plugin
.
StringHelper
.
AppHtmlFilterr
(
Answer
);
if
(
string
.
IsNullOrEmpty
(
Answer
))
{
message
=
"请填写其它题答案!"
;
return
message
;
}
else
{
AnalysisAnswer
=
Common
.
Plugin
.
StringHelper
.
AppHtmlFilterr
(
Answer
);
}
}
//阅读理解和听力题
else
if
(
QuestionTypeKey
==
"reading-comprehensio"
||
QuestionTypeKey
==
"listening"
)
...
...
@@ -674,51 +658,43 @@ namespace Edu.Module.Question
case
"single"
:
var
singleAnwser
=
Common
.
Plugin
.
JsonHelper
.
DeserializeObject
<
List
<
optionItem
>>(
item
.
SubAnwser
.
ToString
());
string
singleMessage
=
CheckChoose
(
singleAnwser
);
if
(!
string
.
IsNullOrEmpty
(
singleMessage
))
{
return
singleMessage
;
}
else
{
resultList
.
Add
(
new
matchingItem
{
Name
=
Index
.
ToString
(),
Content
=
singleAnwser
.
Where
(
qitem
=>
qitem
.
IsAnswer
==
true
)?.
FirstOrDefault
()?.
Name
Content
=
singleAnwser
.
Where
(
qitem
=>
qitem
.
IsAnswer
==
true
)?.
FirstOrDefault
()?.
Name
??
""
});
if
(!
string
.
IsNullOrEmpty
(
singleMessage
))
{
return
singleMessage
;
}
break
;
//多选题
case
"multiple"
:
var
multipleAnwser
=
Common
.
Plugin
.
JsonHelper
.
DeserializeObject
<
List
<
optionItem
>>(
item
.
SubAnwser
.
ToString
());
string
multipleMessage
=
CheckChoose
(
multipleAnwser
);
if
(!
string
.
IsNullOrEmpty
(
multipleMessage
))
{
return
multipleMessage
;
}
else
{
resultList
.
Add
(
new
matchingItem
{
Name
=
Index
.
ToString
(),
Content
=
string
.
Join
(
","
,
multipleAnwser
.
Where
(
qitem
=>
qitem
.
IsAnswer
==
true
).
Select
(
qitem
=>
qitem
.
Name
))
});
if
(!
string
.
IsNullOrEmpty
(
multipleMessage
))
{
return
multipleMessage
;
}
break
;
//填空题
case
"fill-in"
:
var
r_fillInList
=
Common
.
Plugin
.
JsonHelper
.
DeserializeObject
<
List
<
fillInItem
>>(
item
.
SubAnwser
.
ToString
());
string
r_fillMessage
=
CheckFillIn
(
r_fillInList
);
if
(!
string
.
IsNullOrEmpty
(
r_fillMessage
))
{
return
r_fillMessage
;
}
else
{
resultList
.
Add
(
new
matchingItem
{
Name
=
Index
.
ToString
(),
Content
=
string
.
Join
(
","
,
r_fillInList
.
Select
(
qitem
=>
Common
.
Plugin
.
StringHelper
.
AppHtmlFilterr
(
qitem
.
Content
)))
});
if
(!
string
.
IsNullOrEmpty
(
r_fillMessage
))
{
return
r_fillMessage
;
}
break
;
//判断题
...
...
@@ -727,24 +703,21 @@ namespace Edu.Module.Question
resultList
.
Add
(
new
matchingItem
{
Name
=
Index
.
ToString
(),
Content
=
judgeList
.
Where
(
qitem
=>
qitem
.
IsAnswer
==
true
)?.
FirstOrDefault
()?.
Name
Content
=
judgeList
.
Where
(
qitem
=>
qitem
.
IsAnswer
==
true
)?.
FirstOrDefault
()?.
Name
??
""
});
break
;
//简答题
case
"short-answer"
:
var
shortAnswer
=
Common
.
Plugin
.
JsonHelper
.
DeserializeObject
<
List
<
fillInItem
>>(
item
.
SubAnwser
.
ToString
());
string
r_shortMessage
=
CheckShortAnswer
(
shortAnswer
[
0
].
Content
);
if
(!
string
.
IsNullOrEmpty
(
r_shortMessage
))
{
return
r_shortMessage
;
}
else
{
resultList
.
Add
(
new
matchingItem
{
Name
=
Index
.
ToString
(),
Content
=
Common
.
Plugin
.
StringHelper
.
AppHtmlFilterr
(
shortAnswer
[
0
].
Content
)
});
if
(!
string
.
IsNullOrEmpty
(
r_shortMessage
))
{
return
r_shortMessage
;
}
break
;
}
...
...
@@ -790,16 +763,14 @@ namespace Edu.Module.Question
message
=
string
.
Format
(
"题干不能相同!"
);
return
message
;
}
AnalysisAnswer
=
string
.
Join
(
","
,
shareList
[
1
].
Select
(
qitem
=>
qitem
.
Name
));
//判断题干是否设置正确选项
if
(
shareList
[
1
].
Where
(
qitem
=>
string
.
IsNullOrEmpty
(
qitem
.
Name
)).
Count
()
>
0
)
{
message
=
string
.
Format
(
"请设置题干的正确选项!"
);
return
message
;
}
else
{
AnalysisAnswer
=
string
.
Join
(
","
,
shareList
[
1
].
Select
(
qitem
=>
qitem
.
Name
));
}
}
else
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment