|
@@ -170,9 +170,7 @@ namespace HTEX.Test.Controllers
|
|
|
|
|
|
//读取ExamData
|
|
//读取ExamData
|
|
List<ExamData> examDatas = new List<ExamData>();
|
|
List<ExamData> examDatas = new List<ExamData>();
|
|
-
|
|
|
|
try {
|
|
try {
|
|
-
|
|
|
|
var examPages = timeLineData?.events.Where(x => string.IsNullOrWhiteSpace(x.ExamId));
|
|
var examPages = timeLineData?.events.Where(x => string.IsNullOrWhiteSpace(x.ExamId));
|
|
if (examDatas!=null && examDatas.Count>0)
|
|
if (examDatas!=null && examDatas.Count>0)
|
|
{
|
|
{
|
|
@@ -182,27 +180,45 @@ namespace HTEX.Test.Controllers
|
|
{
|
|
{
|
|
if (examsFile.EndsWith("Exam.json"))
|
|
if (examsFile.EndsWith("Exam.json"))
|
|
{
|
|
{
|
|
- BlobDownloadResult examDataDownload = await _azureStorage.GetBlobContainerClient(item.school).GetBlobClient(examsFile).DownloadContentAsync();
|
|
|
|
- ExamData examData = examDataDownload.Content.ToObjectFromJson<ExamData>();
|
|
|
|
- if (examData.exam.papers.IsNotEmpty())
|
|
|
|
|
|
+ ExamData? examData = null;
|
|
|
|
+ try {
|
|
|
|
+ BlobDownloadResult examDataDownload = await _azureStorage.GetBlobContainerClient(item.school).GetBlobClient(examsFile).DownloadContentAsync();
|
|
|
|
+ examData = examDataDownload.Content.ToObjectFromJson<ExamData>();
|
|
|
|
+ } catch (Exception ex)
|
|
|
|
+ {
|
|
|
|
+ if (!ex.Message.Contains("The specified blob does not exist"))
|
|
|
|
+ {
|
|
|
|
+ _logger.LogError(ex, $"文件不存在:{examsFile}");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if (examData!=null && examData.exam.papers.IsNotEmpty())
|
|
{
|
|
{
|
|
string paperId= examData.exam.papers.First().id;
|
|
string paperId= examData.exam.papers.First().id;
|
|
|
|
|
|
if (_azureStorage.GetBlobContainerClient(item.school).GetBlobClient($"/records/{item.id}/ExamPaper/{paperId}/index.json").Exists())
|
|
if (_azureStorage.GetBlobContainerClient(item.school).GetBlobClient($"/records/{item.id}/ExamPaper/{paperId}/index.json").Exists())
|
|
{
|
|
{
|
|
- BlobDownloadResult paperblobDownload = await _azureStorage.GetBlobContainerClient(item.school).GetBlobClient($"/records/{item.id}/ExamPaper/{paperId}/index.json").DownloadContentAsync();
|
|
|
|
- LessonPaper paperIndex = paperblobDownload.Content.ToObjectFromJson<LessonPaper>();
|
|
|
|
|
|
+ LessonPaper lessonPaper = null;
|
|
|
|
+ try {
|
|
|
|
+ BlobDownloadResult paperblobDownload = await _azureStorage.GetBlobContainerClient(item.school).GetBlobClient($"/records/{item.id}/ExamPaper/{paperId}/index.json").DownloadContentAsync();
|
|
|
|
+ lessonPaper = paperblobDownload.Content.ToObjectFromJson<LessonPaper>();
|
|
|
|
+ examData.paper = lessonPaper;
|
|
|
|
+ } catch (Exception ex) {
|
|
|
|
+ if (!ex.Message.Contains("The specified blob does not exist"))
|
|
|
|
+ {
|
|
|
|
+ _logger.LogError(ex, $"文件不存在:/records/{item.id}/ExamPaper/{paperId}/index.json");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
+ examDatas.Add(examData);
|
|
}
|
|
}
|
|
- examDatas.Add(examData);
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|
|
-
|
|
|
|
}
|
|
}
|
|
-
|
|
|
|
}
|
|
}
|
|
- catch (Exception ex)
|
|
|
|
|
|
+ catch (Exception ex)
|
|
{
|
|
{
|
|
|
|
+ _logger.LogError(ex,ex.Message);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -245,7 +261,7 @@ namespace HTEX.Test.Controllers
|
|
/// <param name="lessonBase"></param>
|
|
/// <param name="lessonBase"></param>
|
|
/// <param name="irsDatas"></param>
|
|
/// <param name="irsDatas"></param>
|
|
/// <returns></returns>
|
|
/// <returns></returns>
|
|
- private List<StudentLessonData> GetIRSData(LessonRecord lessonRecord, LessonBase lessonBase, TimeLineData timeLineData, List<IRSData> irsDatas, List<StudentLessonData> studentLessonDatas)
|
|
|
|
|
|
+ private List<StudentLessonData> GetIRSData(LessonRecord lessonRecord, LessonBase lessonBase, TimeLineData timeLineData, List<IRSData> irsDatas, List<StudentLessonData> studentLessonDatas,List<ExamData> examDatas)
|
|
{
|
|
{
|
|
List<string> interactTypes = new List<string>() { "PopQuesLoad", "ReAtmpAnsStrt", "BuzrAns", "BuzrLoad", "PickupResult" };
|
|
List<string> interactTypes = new List<string>() { "PopQuesLoad", "ReAtmpAnsStrt", "BuzrAns", "BuzrLoad", "PickupResult" };
|
|
//去重页面
|
|
//去重页面
|
|
@@ -257,7 +273,7 @@ namespace HTEX.Test.Controllers
|
|
|
|
|
|
foreach (var item in enventsInteract)
|
|
foreach (var item in enventsInteract)
|
|
{
|
|
{
|
|
- ProcessIRSPageData(irsDatas, studentLessonDatas, item);
|
|
|
|
|
|
+ ProcessIRSPageData(irsDatas, studentLessonDatas,examDatas, item);
|
|
}
|
|
}
|
|
//处理其他,评测类型的互动,因为有可能不会记录在TimeLine.json中
|
|
//处理其他,评测类型的互动,因为有可能不会记录在TimeLine.json中
|
|
var envents_other = timeLineData.events.Where(x => !keys.Contains(x.Pgid)).GroupBy(x => x.Pgid) .Select(x => new { key = x.Key, list = x.ToList() });
|
|
var envents_other = timeLineData.events.Where(x => !keys.Contains(x.Pgid)).GroupBy(x => x.Pgid) .Select(x => new { key = x.Key, list = x.ToList() });
|
|
@@ -265,7 +281,7 @@ namespace HTEX.Test.Controllers
|
|
{
|
|
{
|
|
foreach (var item in envents_other)
|
|
foreach (var item in envents_other)
|
|
{
|
|
{
|
|
- ProcessIRSPageData(irsDatas, studentLessonDatas, item);
|
|
|
|
|
|
+ ProcessIRSPageData(irsDatas, studentLessonDatas,examDatas, item);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -277,7 +293,7 @@ namespace HTEX.Test.Controllers
|
|
{
|
|
{
|
|
foreach (var item in envents_other)
|
|
foreach (var item in envents_other)
|
|
{
|
|
{
|
|
- ProcessIRSPageData(irsDatas, studentLessonDatas, item);
|
|
|
|
|
|
+ ProcessIRSPageData(irsDatas, studentLessonDatas,examDatas, item);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -310,13 +326,15 @@ namespace HTEX.Test.Controllers
|
|
return studentLessonDatas;
|
|
return studentLessonDatas;
|
|
}
|
|
}
|
|
|
|
|
|
- private static List<StudentLessonData> ProcessIRSPageData(List<IRSData> irsDatas, List<StudentLessonData> studentLessonDatas, dynamic item)
|
|
|
|
|
|
+ private static List<StudentLessonData> ProcessIRSPageData(List<IRSData> irsDatas, List<StudentLessonData> studentLessonDatas, List<ExamData> examDatas, dynamic item)
|
|
{
|
|
{
|
|
var irsDataPages = irsDatas.Where(y => item.key.Equals(y.pageID));
|
|
var irsDataPages = irsDatas.Where(y => item.key.Equals(y.pageID));
|
|
foreach (var irsDataPage in irsDataPages)
|
|
foreach (var irsDataPage in irsDataPages)
|
|
{
|
|
{
|
|
//检查是否设置正确答案。
|
|
//检查是否设置正确答案。
|
|
var answers_q = irsDataPage.question?["exercise"]?["answer"]?.ToJsonString().ToObject<List<string>>();
|
|
var answers_q = irsDataPage.question?["exercise"]?["answer"]?.ToJsonString().ToObject<List<string>>();
|
|
|
|
+ var question_id = $"{irsDataPage.question?["id"]}";
|
|
|
|
+ var xs= examDatas.Where(x =>x.paper!=null && x.paper.slides.Exists(x =>!string.IsNullOrWhiteSpace(x.url) && x.url.Equals($"{question_id}.json"))).FirstOrDefault();
|
|
List<string> answers = new List<string>();
|
|
List<string> answers = new List<string>();
|
|
answers_q?.ForEach(x => {
|
|
answers_q?.ForEach(x => {
|
|
if (!string.IsNullOrWhiteSpace(x))
|
|
if (!string.IsNullOrWhiteSpace(x))
|
|
@@ -875,326 +893,112 @@ namespace HTEX.Test.Controllers
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
- public class LessonPaper
|
|
|
|
- {
|
|
|
|
-
|
|
|
|
- public List<LessonPaperSlide> slides { get; set; }= new List<LessonPaperSlide>();
|
|
|
|
- }
|
|
|
|
- public class LessonPaperSlide
|
|
|
|
- {
|
|
|
|
- /// <summary>
|
|
|
|
- /// blob 路徑
|
|
|
|
- /// </summary>
|
|
|
|
- public string? url { get; set; }
|
|
|
|
- /// <summary>
|
|
|
|
- /// 題型
|
|
|
|
- /// </summary>
|
|
|
|
- public string? type { get; set; }
|
|
|
|
- /// <summary>
|
|
|
|
- /// scoring
|
|
|
|
- /// </summary>
|
|
|
|
- public LessonPaperSlideScoring? scoring { get; set; }
|
|
|
|
- }
|
|
|
|
- public class LessonPaperSlideScoring
|
|
|
|
- {
|
|
|
|
- /// <summary>
|
|
|
|
- /// knowledge
|
|
|
|
- /// </summary>
|
|
|
|
- public List<string> knowledge { get; set; } = new List<string>();
|
|
|
|
- /// <summary>
|
|
|
|
- /// 答案
|
|
|
|
- /// </summary>
|
|
|
|
- public List<string> ans { get; set; } = new List<string>();
|
|
|
|
-
|
|
|
|
- }
|
|
|
|
- /// <summary>
|
|
|
|
- /// 学生课中数据
|
|
|
|
- /// </summary>
|
|
|
|
- public class StudentLessonData
|
|
|
|
- {
|
|
|
|
- /// <summary>
|
|
|
|
- /// 课例id
|
|
|
|
- /// </summary>
|
|
|
|
- public string? lessonId { get; set; }
|
|
|
|
- /// <summary>
|
|
|
|
- /// 课程id
|
|
|
|
- /// </summary>
|
|
|
|
- public string? courseId { get; set; }
|
|
|
|
- /// <summary>
|
|
|
|
- /// 科目id
|
|
|
|
- /// </summary>
|
|
|
|
- public string? subjectId { get; set; }
|
|
|
|
- /// <summary>
|
|
|
|
- /// 学生的学号
|
|
|
|
- /// </summary>
|
|
|
|
- public string? id { get; set; }
|
|
|
|
- /// <summary>
|
|
|
|
- /// 学生所在下标
|
|
|
|
- /// </summary>
|
|
|
|
- public int index { get; set; } = -1;
|
|
|
|
- /// <summary>
|
|
|
|
- /// 学生座位号
|
|
|
|
- /// </summary>
|
|
|
|
- public string? seatID { get; set; }
|
|
|
|
- /// <summary>
|
|
|
|
- /// 小组编号
|
|
|
|
- /// </summary>
|
|
|
|
- public string? groupId { get; set; }
|
|
|
|
- /// <summary>
|
|
|
|
- /// 小组下标 ,暂不使用
|
|
|
|
- /// </summary>
|
|
|
|
- //public int groupIndex { get; set; } = -1;
|
|
|
|
-
|
|
|
|
- /// <summary>
|
|
|
|
- /// 学生评测记录相关
|
|
|
|
- /// </summary>
|
|
|
|
- public List<StudentExamRecord> examRecords { get; set; } = new List<StudentExamRecord>();
|
|
|
|
- public StudentCoworkRecord coworkRecord { get; set; } = new StudentCoworkRecord();
|
|
|
|
- /// <summary>
|
|
|
|
- /// 互动记录
|
|
|
|
- /// </summary>
|
|
|
|
- public StudentInteractRecord interactRecord { get; set; } = new StudentInteractRecord();
|
|
|
|
-
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- /// <summary>
|
|
|
|
- /// 学生协作记录
|
|
|
|
- /// </summary>
|
|
|
|
- public class StudentInteractRecord
|
|
|
|
- {
|
|
|
|
- /// <summary>
|
|
|
|
- /// 学生专属的互动次数,单独设置此字段,因为存在挑人的情况,需要单独设置
|
|
|
|
- /// </summary>
|
|
|
|
- public int interactRate { get; set; }
|
|
|
|
- /// <summary>
|
|
|
|
- /// 互动积分
|
|
|
|
- /// </summary>
|
|
|
|
- public double interactScore { get; set; }
|
|
|
|
-
|
|
|
|
- /// <summary>
|
|
|
|
- /// -1表示本次互动未统计分数,0表示本次互动答错为0,大于0 的分数表示本次互动打对为相应的分数。 该分数用于统计成果。
|
|
|
|
- /// 互动积分记录[-1,0,10]
|
|
|
|
- /// </summary>
|
|
|
|
- public List<ItemRecord> interactRecords { get; set; } = new List<ItemRecord>();
|
|
|
|
- }
|
|
|
|
- /// <summary>
|
|
|
|
- /// 学生协作记录
|
|
|
|
- /// </summary>
|
|
|
|
- public class StudentCoworkRecord
|
|
|
|
- {
|
|
|
|
- /// <summary>
|
|
|
|
- /// 协作参与率
|
|
|
|
- /// </summary>
|
|
|
|
- public double coworkRate { get; set; }
|
|
|
|
- /// <summary>
|
|
|
|
- /// 协作得分
|
|
|
|
- /// </summary>
|
|
|
|
- public double coworkScore { get; set; }
|
|
|
|
- /// <summary>
|
|
|
|
- /// 协作参与记录
|
|
|
|
- /// </summary>
|
|
|
|
- public List<ItemRecord> itemRecords { get; set; } = new List<ItemRecord>();
|
|
|
|
- }
|
|
|
|
- /// <summary>
|
|
|
|
- /// 学生课中评测记录
|
|
|
|
- /// </summary>
|
|
|
|
- public class StudentExamRecord
|
|
|
|
- {
|
|
|
|
- /// <summary>
|
|
|
|
- /// 作答率0 未作答,1,所有题目作答,小数点则表示部分作答。 可纳入学习态度计算, 主观题需要确认 是否会在此写入答案。
|
|
|
|
- /// </summary>
|
|
|
|
- public double answerRate{ get; set; }
|
|
|
|
- /// <summary>
|
|
|
|
- /// 评测得分
|
|
|
|
- /// </summary>
|
|
|
|
- public double score { get; set;}
|
|
|
|
- /// <summary>
|
|
|
|
- /// 评测id
|
|
|
|
- /// </summary>
|
|
|
|
- public string? examId { get; set; }
|
|
|
|
- /// <summary>
|
|
|
|
- /// 得分率
|
|
|
|
- /// </summary>
|
|
|
|
- public double scoreRate { get; set; }
|
|
|
|
- /// <summary>
|
|
|
|
- /// 配分
|
|
|
|
- /// </summary>
|
|
|
|
- // public double allocation { get; set; }
|
|
|
|
- /// <summary>
|
|
|
|
- /// 暂不计算,取消{ get; set; }
|
|
|
|
- /// 每个题的得分情况
|
|
|
|
- /// </summary>
|
|
|
|
- public List<ItemRecord> itemRecords /*{ get; set; }*/ = new List<ItemRecord>();
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- public class ItemRecord
|
|
|
|
- {
|
|
|
|
-
|
|
|
|
- /// <summary>
|
|
|
|
- /// { "PopQuesLoad", "ReAtmpAnsStrt", "BuzrAns", "BuzrLoad", "PickupResult","SPQStrt" }; //"SPQStrt" 课中评测专用,不参与互动的统计,会重复
|
|
|
|
- /// </summary>
|
|
|
|
- public string? interactType { get; set; }
|
|
|
|
- /// <summary>
|
|
|
|
- /// 互动结果权重,纳入学习状态计算
|
|
|
|
- /// </summary>
|
|
|
|
- public double resultWeight { get; set; }
|
|
|
|
- /// <summary>
|
|
|
|
- /// 互动结果类型,如:T0没有作答, 没有参与,T1作答错误,有参加,有抢权,TP部分正确,TT作答正确,抢权成功,被抽到
|
|
|
|
- /// </summary>
|
|
|
|
- public string? resultType { get; set; }
|
|
|
|
- /// <summary>
|
|
|
|
- /// 互动积分,试题评分
|
|
|
|
- /// </summary>
|
|
|
|
- public double interactScore { get; set; }
|
|
|
|
- /// <summary>
|
|
|
|
- /// 基准分值
|
|
|
|
- /// </summary>
|
|
|
|
- public double criterion { get; set; }
|
|
|
|
- }
|
|
|
|
- public static class InteractReultType
|
|
|
|
- {
|
|
|
|
- /// <summary>
|
|
|
|
- /// 没有作答, 没有参与0
|
|
|
|
- /// </summary>
|
|
|
|
- public static readonly string T0 = "T0";
|
|
|
|
- /// <summary>
|
|
|
|
- /// 作答错误,有参加,有抢权1
|
|
|
|
- /// </summary>
|
|
|
|
- public static readonly string T1 = "T1";
|
|
|
|
- /// <summary>
|
|
|
|
- /// 部分正确1.3
|
|
|
|
- /// </summary>
|
|
|
|
- public static readonly string TP = "TP";
|
|
|
|
- /// <summary>
|
|
|
|
- /// 作答正确,抢权成功,被抽到1.5
|
|
|
|
- /// </summary>
|
|
|
|
- public static readonly string TT ="TT";
|
|
|
|
-
|
|
|
|
- }
|
|
|
|
- public static class InteractWeight
|
|
|
|
- {
|
|
|
|
- /// <summary>
|
|
|
|
- /// 没有作答, 没有参与0
|
|
|
|
- /// </summary>
|
|
|
|
- public static readonly double T0 = 0;
|
|
|
|
- /// <summary>
|
|
|
|
- /// 作答错误,有参加,有抢权1
|
|
|
|
- /// </summary>
|
|
|
|
- public static readonly double T1 = 1;
|
|
|
|
- /// <summary>
|
|
|
|
- /// 部分正确1.3
|
|
|
|
- /// </summary>
|
|
|
|
- public static readonly double TP =1.3;
|
|
|
|
- /// <summary>
|
|
|
|
- /// 作答正确,抢权成功,被抽到1.5
|
|
|
|
- /// </summary>
|
|
|
|
- public static readonly double TT = 1.5;
|
|
|
|
|
|
+
|
|
|
|
+ /// 互动参与指数(按倍数的权重设计)
|
|
|
|
+ /// 无二次作答的互动,且未设置正确答案:1.未作答0
|
|
|
|
+ /// 2.已作答1
|
|
|
|
+ ///
|
|
|
|
+ /// 无二次作答的互动,且设置了正确答案:3.未作答0
|
|
|
|
+ /// 4.已作答1
|
|
|
|
+ /// 5.不完全正确1.3
|
|
|
|
+ /// 6.作答正确1.5
|
|
|
|
+ ///
|
|
|
|
+ ///
|
|
|
|
+ /// 有二次作答的互动,且未设置正确答案:7.第一次未作答0,第二次未作答0=》0
|
|
|
|
+ /// 8.第一次已作答1,第二次未作答0=》1
|
|
|
|
+ /// 9.第一次未作答0,第二次已作答1=》1
|
|
|
|
+ /// 10.第一次已作答1,第二次已作答1=》2
|
|
|
|
+ ///
|
|
|
|
+ /// 有二次作答的互动,且设置了正确答案:(16种可能)
|
|
|
|
+ /// 11.第一次未作答0,第二次未作答0=》0
|
|
|
|
+ /// 12.第一次已作答,不完全正确1.3,第二次未作答0=》1.3
|
|
|
|
+ /// 13.第一次已作答,作答正确1.5,第二次未作答0=》1.5
|
|
|
|
+ /// 14.第一次已作答,作答错误1,第二次未作答0=》1
|
|
|
|
+ /// 15.第一次未作答0,第二次已作答,不完全正确1.3=》1.3
|
|
|
|
+ /// 16.第一次未作答0,第二次已作答,作答正确1.5=》1.5
|
|
|
|
+ /// 17.第一次未作答0,第二次已作答,作答错误1=》1
|
|
|
|
+ /// 18.第一次已作答,作答错误1,第二次已作答,作答错误1=》2
|
|
|
|
+ /// 19.第一次已作答,不完全正确1.3,第二次已作答,作答错误1=》2.3
|
|
|
|
+ /// 20.第一次已作答,作答正确1.5,第二次已作答,作答错误1=》2.5
|
|
|
|
+ /// 21.第一次已作答,作答错误1,第二次已作答,不完全正确1.3=》2.3
|
|
|
|
+ /// 22.第一次已作答,作答错误1,第二次已作答,作答正确1.5=》2.5
|
|
|
|
+ /// 23.第一次已作答,不完全正确1.3,第二次已作答,不完全正确1.3=》2.6
|
|
|
|
+ /// 24.第一次已作答,不完全正确1.3,第二次已作答,作答正确1.5=》2.8
|
|
|
|
+ /// 25.第一次已作答,作答正确1.5,第二次已作答,不完全正确1.3=》2.8
|
|
|
|
+ /// 26.第一次已作答,作答正确1.5,第二次已作答,作答正确1.5=》3
|
|
|
|
+ ///
|
|
|
|
+ /// 抢权模式: 27.未参与抢权 0
|
|
|
|
+ /// 28.参与抢权 1
|
|
|
|
+ /// 29.抢权成功 1.5
|
|
|
|
+ /// 挑人时被挑到 30.被挑到 1.5
|
|
|
|
+ /// 有三次作答的互动,且设置了正确答案:(64种可能)
|
|
|
|
+ /*
|
|
|
|
+ 1 未作答0 未作答0 未作答0 0
|
|
|
|
+ 2 未作答0 未作答0 不完全正确1.3 1.3
|
|
|
|
+ 3 未作答0 未作答0 作答正确1.5 1.5
|
|
|
|
+ 4 未作答0 未作答0 作答错误1 1
|
|
|
|
+ 5 未作答0 不完全正确1.3 未作答0 1.3
|
|
|
|
+ 6 未作答0 不完全正确1.3 不完全正确1.3 2.6
|
|
|
|
+ 7 未作答0 不完全正确1.3 作答正确1.5 2.8
|
|
|
|
+ 8 未作答0 不完全正确1.3 作答错误1 2.3
|
|
|
|
+ 9 未作答0 作答正确1.5 未作答0 1.5
|
|
|
|
+ 10 未作答0 作答正确1.5 不完全正确1.3 2.8
|
|
|
|
+ 11 未作答0 作答正确1.5 作答正确1.5 3
|
|
|
|
+ 12 未作答0 作答正确1.5 作答错误1 2.5
|
|
|
|
+ 13 未作答0 作答错误1 未作答0 1
|
|
|
|
+ 14 未作答0 作答错误1 不完全正确1.3 2.3
|
|
|
|
+ 15 未作答0 作答错误1 作答正确1.5 2.5
|
|
|
|
+ 16 未作答0 作答错误1 作答错误1 2
|
|
|
|
+ 17 已作答错误1 未作答0 未作答0 1
|
|
|
|
+ 18 已作答错误1 未作答0 不完全正确1.3 2.3
|
|
|
|
+ 19 已作答错误1 未作答0 作答正确1.5 2.5
|
|
|
|
+ 20 已作答错误1 未作答0 作答错误1 2
|
|
|
|
+ 21 已作答错误1 不完全正确1.3 未作答0 2.3
|
|
|
|
+ 22 已作答错误1 不完全正确1.3 不完全正确1.3 3.6
|
|
|
|
+ 23 已作答错误1 不完全正确1.3 作答正确1.5 3.8
|
|
|
|
+ 24 已作答错误1 不完全正确1.3 作答错误1 3.3
|
|
|
|
+ 25 已作答错误1 作答正确1.5 未作答0 2.5
|
|
|
|
+ 26 已作答错误1 作答正确1.5 不完全正确1.3 3.8
|
|
|
|
+ 27 已作答错误1 作答正确1.5 作答正确1.5 4
|
|
|
|
+ 28 已作答错误1 作答正确1.5 作答错误1 3.5
|
|
|
|
+ 29 已作答错误1 作答错误1 未作答0 2
|
|
|
|
+ 30 已作答错误1 作答错误1 不完全正确1.3 3.3
|
|
|
|
+ 31 已作答错误1 作答错误1 作答正确1.5 3.5
|
|
|
|
+ 32 已作答错误1 作答错误1 作答错误1 3
|
|
|
|
+ 33 已作答不完全正确1.3 未作答0 未作答0 1.3
|
|
|
|
+ 34 已作答不完全正确1.3 未作答0 不完全正确1.3 2.6
|
|
|
|
+ 35 已作答不完全正确1.3 未作答0 作答正确1.5 2.8
|
|
|
|
+ 36 已作答不完全正确1.3 未作答0 作答错误1 2.3
|
|
|
|
+ 37 已作答不完全正确1.3 不完全正确1.3 未作答0 2.6
|
|
|
|
+ 38 已作答不完全正确1.3 不完全正确1.3 不完全正确1.3 3.9
|
|
|
|
+ 39 已作答不完全正确1.3 不完全正确1.3 作答正确1.5 4.1
|
|
|
|
+ 40 已作答不完全正确1.3 不完全正确1.3 作答错误1 3.6
|
|
|
|
+ 41 已作答不完全正确1.3 作答正确1.5 未作答0 2.8
|
|
|
|
+ 42 已作答不完全正确1.3 作答正确1.5 不完全正确1.3 4.1
|
|
|
|
+ 43 已作答不完全正确1.3 作答正确1.5 作答正确1.5 4.3
|
|
|
|
+ 44 已作答不完全正确1.3 作答正确1.5 作答错误1 3.8
|
|
|
|
+ 45 已作答不完全正确1.3 作答错误1 未作答0 2.3
|
|
|
|
+ 46 已作答不完全正确1.3 作答错误1 不完全正确1.3 3.6
|
|
|
|
+ 47 已作答不完全正确1.3 作答错误1 作答正确1.5 3.8
|
|
|
|
+ 48 已作答不完全正确1.3 作答错误1 作答错误1 3.3
|
|
|
|
+ 49 已作答正确1.5 未作答0 未作答0 1.5
|
|
|
|
+ 50 已作答正确1.5 未作答0 不完全正确1.3 2.8
|
|
|
|
+ 51 已作答正确1.5 未作答0 作答正确1.5 3
|
|
|
|
+ 52 已作答正确1.5 未作答0 作答错误1 2.5
|
|
|
|
+ 53 已作答正确1.5 不完全正确1.3 未作答0 2.8
|
|
|
|
+ 54 已作答正确1.5 不完全正确1.3 不完全正确1.3 4.1
|
|
|
|
+ 55 已作答正确1.5 不完全正确1.3 作答正确1.5 4.3
|
|
|
|
+ 56 已作答正确1.5 不完全正确1.3 作答错误1 3.8
|
|
|
|
+ 57 已作答正确1.5 作答正确1.5 未作答0 3
|
|
|
|
+ 58 已作答正确1.5 作答正确1.5 不完全正确1.3 4.3
|
|
|
|
+ 59 已作答正确1.5 作答正确1.5作答正确1.5 4.5
|
|
|
|
+ 60 已作答正确1.5 作答正确1.5作答错误1 4
|
|
|
|
+ 61 已作答正确1.5 作答错误1 未作答0 2.5
|
|
|
|
+ 62 已作答正确1.5 作答错误1 不完全正确1.3 3.8
|
|
|
|
+ 63 已作答正确1.5 作答错误1 作答正确1.54
|
|
|
|
+ 64 已作答正确1.5 作答错误1 作答错误1 3.5
|
|
|
|
+ */
|
|
|
|
|
|
- /// 互动参与指数(按倍数的权重设计)
|
|
|
|
- /// 无二次作答的互动,且未设置正确答案:1.未作答0
|
|
|
|
- /// 2.已作答1
|
|
|
|
- ///
|
|
|
|
- /// 无二次作答的互动,且设置了正确答案:3.未作答0
|
|
|
|
- /// 4.已作答1
|
|
|
|
- /// 5.不完全正确1.3
|
|
|
|
- /// 6.作答正确1.5
|
|
|
|
- ///
|
|
|
|
- ///
|
|
|
|
- /// 有二次作答的互动,且未设置正确答案:7.第一次未作答0,第二次未作答0=》0
|
|
|
|
- /// 8.第一次已作答1,第二次未作答0=》1
|
|
|
|
- /// 9.第一次未作答0,第二次已作答1=》1
|
|
|
|
- /// 10.第一次已作答1,第二次已作答1=》2
|
|
|
|
- ///
|
|
|
|
- /// 有二次作答的互动,且设置了正确答案:(16种可能)
|
|
|
|
- /// 11.第一次未作答0,第二次未作答0=》0
|
|
|
|
- /// 12.第一次已作答,不完全正确1.3,第二次未作答0=》1.3
|
|
|
|
- /// 13.第一次已作答,作答正确1.5,第二次未作答0=》1.5
|
|
|
|
- /// 14.第一次已作答,作答错误1,第二次未作答0=》1
|
|
|
|
- /// 15.第一次未作答0,第二次已作答,不完全正确1.3=》1.3
|
|
|
|
- /// 16.第一次未作答0,第二次已作答,作答正确1.5=》1.5
|
|
|
|
- /// 17.第一次未作答0,第二次已作答,作答错误1=》1
|
|
|
|
- /// 18.第一次已作答,作答错误1,第二次已作答,作答错误1=》2
|
|
|
|
- /// 19.第一次已作答,不完全正确1.3,第二次已作答,作答错误1=》2.3
|
|
|
|
- /// 20.第一次已作答,作答正确1.5,第二次已作答,作答错误1=》2.5
|
|
|
|
- /// 21.第一次已作答,作答错误1,第二次已作答,不完全正确1.3=》2.3
|
|
|
|
- /// 22.第一次已作答,作答错误1,第二次已作答,作答正确1.5=》2.5
|
|
|
|
- /// 23.第一次已作答,不完全正确1.3,第二次已作答,不完全正确1.3=》2.6
|
|
|
|
- /// 24.第一次已作答,不完全正确1.3,第二次已作答,作答正确1.5=》2.8
|
|
|
|
- /// 25.第一次已作答,作答正确1.5,第二次已作答,不完全正确1.3=》2.8
|
|
|
|
- /// 26.第一次已作答,作答正确1.5,第二次已作答,作答正确1.5=》3
|
|
|
|
- ///
|
|
|
|
- /// 抢权模式: 27.未参与抢权 0
|
|
|
|
- /// 28.参与抢权 1
|
|
|
|
- /// 29.抢权成功 1.5
|
|
|
|
- /// 挑人时被挑到 30.被挑到 1.5
|
|
|
|
- /// 有三次作答的互动,且设置了正确答案:(64种可能)
|
|
|
|
- /*
|
|
|
|
- 1 未作答0 未作答0 未作答0 0
|
|
|
|
- 2 未作答0 未作答0 不完全正确1.3 1.3
|
|
|
|
- 3 未作答0 未作答0 作答正确1.5 1.5
|
|
|
|
- 4 未作答0 未作答0 作答错误1 1
|
|
|
|
- 5 未作答0 不完全正确1.3 未作答0 1.3
|
|
|
|
- 6 未作答0 不完全正确1.3 不完全正确1.3 2.6
|
|
|
|
- 7 未作答0 不完全正确1.3 作答正确1.5 2.8
|
|
|
|
- 8 未作答0 不完全正确1.3 作答错误1 2.3
|
|
|
|
- 9 未作答0 作答正确1.5 未作答0 1.5
|
|
|
|
- 10 未作答0 作答正确1.5 不完全正确1.3 2.8
|
|
|
|
- 11 未作答0 作答正确1.5 作答正确1.5 3
|
|
|
|
- 12 未作答0 作答正确1.5 作答错误1 2.5
|
|
|
|
- 13 未作答0 作答错误1 未作答0 1
|
|
|
|
- 14 未作答0 作答错误1 不完全正确1.3 2.3
|
|
|
|
- 15 未作答0 作答错误1 作答正确1.5 2.5
|
|
|
|
- 16 未作答0 作答错误1 作答错误1 2
|
|
|
|
- 17 已作答错误1 未作答0 未作答0 1
|
|
|
|
- 18 已作答错误1 未作答0 不完全正确1.3 2.3
|
|
|
|
- 19 已作答错误1 未作答0 作答正确1.5 2.5
|
|
|
|
- 20 已作答错误1 未作答0 作答错误1 2
|
|
|
|
- 21 已作答错误1 不完全正确1.3 未作答0 2.3
|
|
|
|
- 22 已作答错误1 不完全正确1.3 不完全正确1.3 3.6
|
|
|
|
- 23 已作答错误1 不完全正确1.3 作答正确1.5 3.8
|
|
|
|
- 24 已作答错误1 不完全正确1.3 作答错误1 3.3
|
|
|
|
- 25 已作答错误1 作答正确1.5 未作答0 2.5
|
|
|
|
- 26 已作答错误1 作答正确1.5 不完全正确1.3 3.8
|
|
|
|
- 27 已作答错误1 作答正确1.5 作答正确1.5 4
|
|
|
|
- 28 已作答错误1 作答正确1.5 作答错误1 3.5
|
|
|
|
- 29 已作答错误1 作答错误1 未作答0 2
|
|
|
|
- 30 已作答错误1 作答错误1 不完全正确1.3 3.3
|
|
|
|
- 31 已作答错误1 作答错误1 作答正确1.5 3.5
|
|
|
|
- 32 已作答错误1 作答错误1 作答错误1 3
|
|
|
|
- 33 已作答不完全正确1.3 未作答0 未作答0 1.3
|
|
|
|
- 34 已作答不完全正确1.3 未作答0 不完全正确1.3 2.6
|
|
|
|
- 35 已作答不完全正确1.3 未作答0 作答正确1.5 2.8
|
|
|
|
- 36 已作答不完全正确1.3 未作答0 作答错误1 2.3
|
|
|
|
- 37 已作答不完全正确1.3 不完全正确1.3 未作答0 2.6
|
|
|
|
- 38 已作答不完全正确1.3 不完全正确1.3 不完全正确1.3 3.9
|
|
|
|
- 39 已作答不完全正确1.3 不完全正确1.3 作答正确1.5 4.1
|
|
|
|
- 40 已作答不完全正确1.3 不完全正确1.3 作答错误1 3.6
|
|
|
|
- 41 已作答不完全正确1.3 作答正确1.5 未作答0 2.8
|
|
|
|
- 42 已作答不完全正确1.3 作答正确1.5 不完全正确1.3 4.1
|
|
|
|
- 43 已作答不完全正确1.3 作答正确1.5 作答正确1.5 4.3
|
|
|
|
- 44 已作答不完全正确1.3 作答正确1.5 作答错误1 3.8
|
|
|
|
- 45 已作答不完全正确1.3 作答错误1 未作答0 2.3
|
|
|
|
- 46 已作答不完全正确1.3 作答错误1 不完全正确1.3 3.6
|
|
|
|
- 47 已作答不完全正确1.3 作答错误1 作答正确1.5 3.8
|
|
|
|
- 48 已作答不完全正确1.3 作答错误1 作答错误1 3.3
|
|
|
|
- 49 已作答正确1.5 未作答0 未作答0 1.5
|
|
|
|
- 50 已作答正确1.5 未作答0 不完全正确1.3 2.8
|
|
|
|
- 51 已作答正确1.5 未作答0 作答正确1.5 3
|
|
|
|
- 52 已作答正确1.5 未作答0 作答错误1 2.5
|
|
|
|
- 53 已作答正确1.5 不完全正确1.3 未作答0 2.8
|
|
|
|
- 54 已作答正确1.5 不完全正确1.3 不完全正确1.3 4.1
|
|
|
|
- 55 已作答正确1.5 不完全正确1.3 作答正确1.5 4.3
|
|
|
|
- 56 已作答正确1.5 不完全正确1.3 作答错误1 3.8
|
|
|
|
- 57 已作答正确1.5 作答正确1.5 未作答0 3
|
|
|
|
- 58 已作答正确1.5 作答正确1.5 不完全正确1.3 4.3
|
|
|
|
- 59 已作答正确1.5 作答正确1.5作答正确1.5 4.5
|
|
|
|
- 60 已作答正确1.5 作答正确1.5作答错误1 4
|
|
|
|
- 61 已作答正确1.5 作答错误1 未作答0 2.5
|
|
|
|
- 62 已作答正确1.5 作答错误1 不完全正确1.3 3.8
|
|
|
|
- 63 已作答正确1.5 作答错误1 作答正确1.54
|
|
|
|
- 64 已作答正确1.5 作答错误1 作答错误1 3.5
|
|
|
|
- */
|
|
|
|
- }
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
/*
|