public override bool Diagnose(int paperId, string answers, string userName, int[] scoreArray, float totalScore, float[] subitemScoreArray, ref string resultText) { Hashtable subitemIndexMap = SubItem.GetPaperSubItemIndexMap(paperId, 1); bool result; if (subitemScoreArray.Length <= (int)subitemIndexMap["R"]) { result = false; } else { char[] subItems = new char[] { 'M', 'N', 'O', 'P', 'Q', 'R' }; float subItemSum = 0f; char[] array = subItems; for (int i = 0; i < array.Length; i++) { char subitem = array[i]; subItemSum += subitemScoreArray[(int)subitemIndexMap[subitem.ToString()]]; } if (totalScore >= 40f && subItemSum >= 20f) { resultText = "您的健康有问题"; } else { resultText = "您的健康没有问题"; } result = true; } return(result); }
public override bool SeniorScore(int paperId, string answers, int[] scoreArray, string userName, ref string resultText, out int[] subitemIds, out float[] subitemScoreArray) { Hashtable M = new Hashtable(); Hashtable S = new Hashtable(); M.Add("女l", 4.12); M.Add("女f", 2.73); M.Add("女k", 12.37); M.Add("女hs", 12.95); M.Add("女d", 19.25); M.Add("女hy", 19.01); M.Add("女pd", 18.8); M.Add("女mf_m", 28.66); M.Add("女pa", 8.03); M.Add("女pt", 25.2); M.Add("女sc", 22.39); M.Add("女ma", 16.6); M.Add("女si", 24.62); S.Add("女l", 2.94); S.Add("女f", 4.55); S.Add("女k", 5.26); S.Add("女hs", 4.92); S.Add("女d", 5.15); S.Add("女hy", 5.63); S.Add("女pd", 4.24); S.Add("女mf_m", 4.81); S.Add("女pa", 3.49); S.Add("女pt", 6.08); S.Add("女sc", 6.52); S.Add("女ma", 4); S.Add("女si", 9.62); DataSet ds = SubItem.GetPaperSubItems(paperId, 1); int subitemCount = ds.Tables[0].Rows.Count;// ds.get_Tables().get_Item(0).get_Rows().get_Count(); bool result; if (subitemCount <= 0) { subitemIds = null; subitemScoreArray = null; result = false; } else { resultText = ""; subitemIds = new int[subitemCount]; float[] T = new float[subitemCount]; float[] X = new float[subitemCount]; string[] answerArray = answers.Split(new char[] { '|' }); for (int i = 0; i < subitemCount; i++) { DataRow dr = ds.Tables[0].Rows[i]; subitemIds[i] = (int)dr["Fsubitemid"]; X[i] = 0f; string[] questionIds = dr["Fquestions"].ToString().Split(new char[] { '|' }); for (int j = 0; j < questionIds.Length; j++) { int questionId = int.Parse(questionIds[j]); int select = int.Parse(answerArray[questionId - 1]); int score = this.GetScore(questionId, dr["Fsubitemname"].ToString(), select, scoreArray); float[] array; IntPtr intPtr; (array = X)[(int)(intPtr = (IntPtr)i)] = array[(int)intPtr] + (float)score; } } Hashtable subitemIndexMap = SubItem.GetPaperSubItemIndexMap(paperId, 1); float K = X[(int)subitemIndexMap["k"]]; float[] array2; IntPtr intPtr2; (array2 = X)[(int)(intPtr2 = (IntPtr)((int)subitemIndexMap["hs"]))] = array2[(int)intPtr2] + 0.5f * K; float[] array3; IntPtr intPtr3; (array3 = X)[(int)(intPtr3 = (IntPtr)((int)subitemIndexMap["pd"]))] = array3[(int)intPtr3] + 0.4f * K; float[] array4; IntPtr intPtr4; (array4 = X)[(int)(intPtr4 = (IntPtr)((int)subitemIndexMap["pt"]))] = array4[(int)intPtr4] + 1f * K; float[] array5; IntPtr intPtr5; (array5 = X)[(int)(intPtr5 = (IntPtr)((int)subitemIndexMap["sc"]))] = array5[(int)intPtr5] + 1f * K; float[] array6; IntPtr intPtr6; (array6 = X)[(int)(intPtr6 = (IntPtr)((int)subitemIndexMap["ma"]))] = array6[(int)intPtr6] + 0.2f * K; for (int k = 0; k < subitemCount; k++) { DataRow dr2 = ds.Tables[0].Rows[k]; string subitemName = dr2["Fsubitemname"].ToString(); string key = "女" + subitemName; T[k] = (float)Math.Round((double)(50f + 10f * (X[k] - float.Parse(M[key].ToString())) / float.Parse(S[key].ToString())), 2); resultText = resultText + subitemName + "的得分是:" + T[k].ToString(); if (k != subitemCount - 1) { resultText += "<br/>"; } } subitemScoreArray = T; result = true; } return(result); }
public override bool SeniorScore(int paperId, string answers, int[] scoreArray, string userName, ref string resultText, out int[] subitemIds, out float[] subitemScoreArray) { bool res = base.SeniorScore(paperId, answers, scoreArray, userName, ref resultText, out subitemIds, out subitemScoreArray); if (res) { Hashtable subitemIndexMap = SubItem.GetPaperSubItemIndexMap(paperId, 1); float 行动力 = subitemScoreArray[(int)subitemIndexMap["行动力"]]; float 自我管理能力 = subitemScoreArray[(int)subitemIndexMap["自我管理能力"]]; if (25f <= 行动力 && 行动力 < 41f && 0f <= 自我管理能力 && 自我管理能力 < 25f) { resultText = "你是坐落在右上角第一象限的人。你的行动力弱,自我管理能力差,较感性,性格方面较内敛,不大喜欢变化,但服从性和配合性比较好,具有支持与服务的能力,属于支援型人才,比较适合从事有关例行性的工作,像公务员、文秘一类行政性的创意性不强的工作,不鼓励你往业务方向发展。"; } else { if (25f <= 行动力 && 行动力 < 41f && 25f <= 自我管理能力 && 自我管理能力 < 41f) { resultText = "你是坐落在右下角的第二象限里的人。你的行动力比较弱,但自我管理能力非常强,通常你的分析能力很强,学习能力很好,数字及逻辑观念也很棒,往往能够想到、看到,但因为行动力不够,因此通常自己不会去做,所以你比较适合从事技术型或研究型工作,譬如工程师、学者、电脑程序设计师等,可以坐在那里一整天。因此,也不太鼓励你往业务方面发展。另外,大多数专业人士,如律师、咨询师、会计师等,也都属于这个象限。"; } else { if (0f <= 行动力 && 行动力 < 17f && 0f <= 自我管理能力 && 自我管理能力 < 17f) { resultText = "你是坐落在左上角第三象限的小2格里的人。你的行动力很强,很多时候别人还在犹豫的时候你就已冲出去行动了;你的思维非常活跃,天马行空,不受约束,所以很多演艺界的艺人、艺术家等都出自这个象限;但你的自我管理能力又非常差,十分情绪化,常常跟着感觉走,只要灯光美、气氛佳、心情好时没什么不可以;当心情不好时,你又会经常改变主意,所以你也容易转换工作。你喜欢有挑战性和刺激性的工作,具有很强的个人魅力,往往是天生的业务高手,假如从事业务工作的话,业绩会非常出色。因此,公司经常站在领奖台上,拿奖拿到手软的业务精英多数都落在这个区域。"; } else { if (0f <= 行动力 && 行动力 < 17f && 17f <= 自我管理能力 && 自我管理能力 < 25f) { resultText = "你是坐落在左上角第三象限的小4格里的人。你有潜质成为不错的业务主管,具有很强的行动力,但又不会过分感性或理性,属于比较中性和客观的一类人。你的管理风格偏感性,管理的方式较人性化,在决策的时候多以人为中心,所以你带出来的团队人情味较浓,而且较热闹,凝聚力也很强。因此,公司很多优秀的业务主管大多落在这个区域。"; } else { if (0f <= 行动力 && 行动力 < 17f && 25f <= 自我管理能力 && 自我管理能力 < 34f) { resultText = "你是坐落在左下角第四象限的小6格里的人。你有潜质成为不错的业务主管,具有很强的行动力,但又不会过分感性或理性,属于比较中性和客观的一类人。你的管理风格比较偏理性,你往往以事为中心,注重成本概念,喜欢建立一定的纪律、秩序和系统来管理团队,所以团队越大,越能显示你的管理才能。因此,公司许多高级的主管大多属于这个区域。"; } else { if (0f <= 行动力 && 行动力 < 17f && 34f <= 自我管理能力 && 自我管理能力 < 41f) { resultText = "你是坐落在左下角第四象限的小8格里的人。你非常厉害,也很少见,一方面你有非常强的分析能力和决策力,同时又有非常强的理性,在作决策时不会受感情和环境的困扰;另一方面你的行动力又很快,想到马上就会去做,执行力特别好,所以你作决策往往是三个字形容:快!狠!准!你往往不容易被人管理,适合自己出来创业。因此,很多大老板、大企业家如李嘉诚之类的就出自这个区域。"; } else { if (17f <= 行动力 && 行动力 < 25f && 0f <= 自我管理能力 && 自我管理能力 < 17f) { resultText = "你是坐落在左上角第三象限的小1格里的人,是小2格人的隐形。如果有意识地加以培训与训练,你会往小2格的人显性发展。小2格的人的特点是:他的行动力很强,很多时候别人还在犹豫的时候他们就已冲出去行动了;他的思维非常活跃,天马行空,不受约束,所以很多演艺界的艺人、艺术家等都出自这个象限;但他们的自我管理能力又非常差,十分情绪化,常常跟着感觉走,只要灯光美、气氛佳、心情好时没什么不可以;当心情不好时,他又会经常改变主意,所以也容易转换工作。他们喜欢有挑战性和刺激性的工作,具有很强的个人魅力,往往是天生的业务高手,假如从事业务工作的话,业绩会非常出色。因此,公司经常站在领奖台上,拿奖拿到手软的业务精英多数都落在这个小2格区域。"; } else { if (17f <= 行动力 && 行动力 < 25f && 17f <= 自我管理能力 && 自我管理能力 < 25f) { resultText = "你是坐落在左上角第三象限的小3格里的人,是小4格人的隐形。如果有意识地加以培训与训练,你会往小4格的人显性发展。小4格的人的特点是:他有潜质成为不错的业务主管,具有很强的行动力,但又不会过分感性或理性,属于比较中性和客观的一类人。他们的管理风格偏感性,管理的方式较人性化,在决策的时候多以人为中心,所以他带出来的团队人情味较浓,而且较热闹,凝聚力也很强。因此,公司很多优秀的业务主管大多落在这个小4格区域。"; } else { if (17f <= 行动力 && 行动力 < 25f && 25f <= 自我管理能力 && 自我管理能力 < 34f) { resultText = "你是坐落在左下角第四象限的小5格里的人,是小6格人的隐形。如果有意识地加以培训与训练,你会往小6格的人显性发展。小6格的人的特点是:他有潜质成为不错的业务主管,具有很强的行动力,但又不会过分感性或理性,属于比较中性和客观的一类人。他们的管理风格比较偏理性,往往以事为中心,注重成本概念,喜欢建立一定的纪律、秩序和系统来管理团队,所以团队越大,越能显示他们的管理才能。因此,公司许多高级的主管大多属于这个小6格区域。"; } else { if (17f <= 行动力 && 行动力 < 25f && 34f <= 自我管理能力 && 自我管理能力 < 41f) { resultText = "你是坐落在左下角第四象限的小7格里的人,是小8格人的隐形。如果有意识地加以培训与训练,你会往小8格的人显性发展。小8格的人的特点是:他们非常厉害,也很少见,一方面他有非常强的分析能力和决策力,同时又有非常强的理性,在作决策时不会受感情和环境的困扰;另一方面他们的行动力又很快,想到马上就会去做,执行力特别好,所以他们作决策往往是三个字形容:快!狠!准!他往往不容易被人管理,适合自己出来创业。因此,很多大老板、大企业家如李嘉诚之类的就出自这个小8格区域。"; } } } } } } } } } } } return(res); }
public override bool SeniorScore(int paperId, string answers, int[] scoreArray, string userName, ref string resultText, out int[] subitemIds, out float[] subitemScoreArray) { bool result; if (!base.SeniorScore(paperId, answers, scoreArray, userName, ref resultText, out subitemIds, out subitemScoreArray)) { result = false; } else { if (subitemScoreArray.Length != 16) { result = false; } else { Hashtable standScorers = StandScorer.CreateStandScorerK16(); Hashtable subitemIndexMap = SubItem.GetPaperSubItemIndexMap(paperId, 1); subitemScoreArray[(int)subitemIndexMap["A"]] = ((StandScorer)standScorers["A"]).Translate(subitemScoreArray[(int)subitemIndexMap["A"]]); subitemScoreArray[(int)subitemIndexMap["B"]] = ((StandScorer)standScorers["B"]).Translate(subitemScoreArray[(int)subitemIndexMap["B"]]); subitemScoreArray[(int)subitemIndexMap["C"]] = ((StandScorer)standScorers["C"]).Translate(subitemScoreArray[(int)subitemIndexMap["C"]]); subitemScoreArray[(int)subitemIndexMap["E"]] = ((StandScorer)standScorers["E"]).Translate(subitemScoreArray[(int)subitemIndexMap["E"]]); subitemScoreArray[(int)subitemIndexMap["F"]] = ((StandScorer)standScorers["F"]).Translate(subitemScoreArray[(int)subitemIndexMap["F"]]); subitemScoreArray[(int)subitemIndexMap["G"]] = ((StandScorer)standScorers["G"]).Translate(subitemScoreArray[(int)subitemIndexMap["G"]]); subitemScoreArray[(int)subitemIndexMap["H"]] = ((StandScorer)standScorers["H"]).Translate(subitemScoreArray[(int)subitemIndexMap["H"]]); subitemScoreArray[(int)subitemIndexMap["I"]] = ((StandScorer)standScorers["I"]).Translate(subitemScoreArray[(int)subitemIndexMap["I"]]); subitemScoreArray[(int)subitemIndexMap["L"]] = ((StandScorer)standScorers["L"]).Translate(subitemScoreArray[(int)subitemIndexMap["L"]]); subitemScoreArray[(int)subitemIndexMap["M"]] = ((StandScorer)standScorers["M"]).Translate(subitemScoreArray[(int)subitemIndexMap["M"]]); subitemScoreArray[(int)subitemIndexMap["N"]] = ((StandScorer)standScorers["N"]).Translate(subitemScoreArray[(int)subitemIndexMap["N"]]); subitemScoreArray[(int)subitemIndexMap["O"]] = ((StandScorer)standScorers["O"]).Translate(subitemScoreArray[(int)subitemIndexMap["O"]]); subitemScoreArray[(int)subitemIndexMap["Q1"]] = ((StandScorer)standScorers["Q1"]).Translate(subitemScoreArray[(int)subitemIndexMap["Q1"]]); subitemScoreArray[(int)subitemIndexMap["Q2"]] = ((StandScorer)standScorers["Q2"]).Translate(subitemScoreArray[(int)subitemIndexMap["Q2"]]); subitemScoreArray[(int)subitemIndexMap["Q3"]] = ((StandScorer)standScorers["Q3"]).Translate(subitemScoreArray[(int)subitemIndexMap["Q3"]]); subitemScoreArray[(int)subitemIndexMap["Q4"]] = ((StandScorer)standScorers["Q4"]).Translate(subitemScoreArray[(int)subitemIndexMap["Q4"]]); if (subitemScoreArray.Length != 16) { result = false; } else { float A = subitemScoreArray[(int)subitemIndexMap["A"]]; float B = subitemScoreArray[(int)subitemIndexMap["B"]]; float C = subitemScoreArray[(int)subitemIndexMap["C"]]; float E = subitemScoreArray[(int)subitemIndexMap["E"]]; float F = subitemScoreArray[(int)subitemIndexMap["F"]]; float G = subitemScoreArray[(int)subitemIndexMap["G"]]; float H = subitemScoreArray[(int)subitemIndexMap["H"]]; float I = subitemScoreArray[(int)subitemIndexMap["I"]]; float L = subitemScoreArray[(int)subitemIndexMap["L"]]; float M = subitemScoreArray[(int)subitemIndexMap["M"]]; float N = subitemScoreArray[(int)subitemIndexMap["N"]]; float O = subitemScoreArray[(int)subitemIndexMap["O"]]; float Q = subitemScoreArray[(int)subitemIndexMap["Q1"]]; float Q2 = subitemScoreArray[(int)subitemIndexMap["Q2"]]; float Q3 = subitemScoreArray[(int)subitemIndexMap["Q3"]]; float Q4 = subitemScoreArray[(int)subitemIndexMap["Q4"]]; float X = (38f + 2f * L + 3f * O + 4f * Q4 - (2f * C + 2f * H + 2f * Q2)) / 10f; float X2 = (2f * A + 3f * E + 4f * F + 5f * H - (2f * Q2 + 11f)) / 10f; float X3 = (77f + 2f * C + 2f * E + 2f * F + 2f * N - (4f * A + 6f * I + 2f * M)) / 10f; float X4 = (4f * E + 3f * M + 4f * Q + 4f * Q2 - (3f * A + 2f * G)) / 10f; float Y = C + F + (11f - O) + (11f - Q4); float Y2 = 2f * Q3 + G * 2f + C * 2f + E + N + Q2 + Q; float Y3 = (11f - A) * 2f + B * 2f + E + (11f - F) * 2f + H + I * 2f + M + (11f - N) + Q + Q2 * 2f; float Y4 = B + G + Q3 + (11f - F); int[] newSubitemIds = new int[24]; float[] newSubitemScoreArray = new float[24]; for (int i = 0; i < subitemIds.Length; i++) { newSubitemIds[i] = subitemIds[i]; newSubitemScoreArray[i] = subitemScoreArray[i]; } Hashtable subitemIdMap = SubItem.GetPaperSubItemIdMap(paperId, 2); int Base = subitemIds.Length; newSubitemIds[Base] = (int)subitemIdMap["X1"]; newSubitemIds[Base + 1] = (int)subitemIdMap["X2"]; newSubitemIds[Base + 2] = (int)subitemIdMap["X3"]; newSubitemIds[Base + 3] = (int)subitemIdMap["X4"]; newSubitemIds[Base + 4] = (int)subitemIdMap["Y1"]; newSubitemIds[Base + 5] = (int)subitemIdMap["Y2"]; newSubitemIds[Base + 6] = (int)subitemIdMap["Y3"]; newSubitemIds[Base + 7] = (int)subitemIdMap["Y4"]; newSubitemScoreArray[Base] = X; newSubitemScoreArray[Base + 1] = X2; newSubitemScoreArray[Base + 2] = X3; newSubitemScoreArray[Base + 3] = X4; newSubitemScoreArray[Base + 4] = Y; newSubitemScoreArray[Base + 5] = Y2; newSubitemScoreArray[Base + 6] = Y3; newSubitemScoreArray[Base + 7] = Y4; subitemIds = newSubitemIds; subitemScoreArray = newSubitemScoreArray; resultText = "A:乐群性得分:" + Math.Round((double)A, 2).ToString(); resultText = resultText + "<br/>B:聪慧性得分:" + Math.Round((double)B, 2).ToString(); resultText = resultText + "<br/>C:稳定性得分:" + Math.Round((double)C, 2).ToString(); resultText = resultText + "<br/>E:恃强性得分:" + Math.Round((double)E, 2).ToString(); resultText = resultText + "<br/>F:兴奋性得分:" + Math.Round((double)F, 2).ToString(); resultText = resultText + "<br/>G:有恒性得分:" + Math.Round((double)G, 2).ToString(); resultText = resultText + "<br/>H:敢为性得分:" + Math.Round((double)H, 2).ToString(); resultText = resultText + "<br/>I:敏感性得分:" + Math.Round((double)I, 2).ToString(); resultText = resultText + "<br/>L:怀疑性得分:" + Math.Round((double)L, 2).ToString(); resultText = resultText + "<br/>M:幻想性得分:" + Math.Round((double)M, 2).ToString(); resultText = resultText + "<br/>N:世故性得分:" + Math.Round((double)N, 2).ToString(); resultText = resultText + "<br/>O:忧虑性得分:" + Math.Round((double)O, 2).ToString(); resultText = resultText + "<br/>Q1:实验性得分:" + Math.Round((double)Q, 2).ToString(); resultText = resultText + "<br/>Q2:独立性得分:" + Math.Round((double)Q2, 2).ToString(); resultText = resultText + "<br/>Q3:自律性得分:" + Math.Round((double)Q3, 2).ToString(); resultText = resultText + "<br/>Q4:紧张性得分:" + Math.Round((double)Q4, 2).ToString(); resultText = resultText + "<br/>X1:适应与焦虑型得分:" + Math.Round((double)X, 2).ToString(); resultText = resultText + "<br/>X2:内向与外向型得分:" + Math.Round((double)X2, 2).ToString(); resultText = resultText + "<br/>X3:感情用事与安详机警型得分:" + Math.Round((double)X3, 2).ToString(); resultText = resultText + "<br/>X4:怯懦与果断型得分:" + Math.Round((double)X4, 2).ToString(); resultText = resultText + "<br/>Y1:心理健康因素得分:" + Math.Round((double)Y, 2).ToString(); resultText = resultText + "<br/>Y2:专业有成就者的个性因素得分:" + Math.Round((double)Y2, 2).ToString(); resultText = resultText + "<br/>Y3:创造能力个性因素得分:" + Math.Round((double)Y3, 2).ToString(); resultText = resultText + "<br/>Y4:在新环境中有成长能力的个性因素得分:" + Math.Round((double)Y4, 2).ToString(); result = true; } } } return(result); }