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);
        }
Example #2
0
        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);
        }
Example #4
0
        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);
        }