Ejemplo n.º 1
0
        public static Hashtable GetPaperSubItemIdMap(int paperid, int level)
        {
            Hashtable result = new Hashtable();
            DataTable dt     = SubItem.GetPaperSubItems(paperid, level).Tables[0];
            Hashtable result2;

            if (dt.Rows.Count <= 0)
            {
                result2 = result;
            }
            else
            {
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    //result.set_Item(dt.get_Rows().get_Item(i).get_Item("Fsubitemname"), dt.get_Rows().get_Item(i).get_Item("Fsubitemid"));
                    result.Add(dt.Rows[i]["Fsubitemname"], dt.Rows[i]["Fsubitemid"]);
                }
                result2 = result;
            }
            return(result2);
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        public static Hashtable GetPaperSubItemIndexMap(int paperid, int level)
        {
            Hashtable result = new Hashtable();
            //DataTable dt = SubItem.GetPaperSubItems(paperid, level).get_Tables().get_Item(0);
            DataTable dt = SubItem.GetPaperSubItems(paperid, level).Tables[0];
            Hashtable result2;

            if (dt.Rows.Count <= 0)
            {
                result2 = result;
            }
            else
            {
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    //result.Item(dtRows.Item[i]["Fsubitemname"], i);
                    result.Add(dt.Rows[i]["Fsubitemname"], i);
                }
                result2 = result;
            }
            return(result2);
        }
Ejemplo n.º 4
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);
        }
Ejemplo n.º 5
0
        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);
        }
Ejemplo n.º 6
0
        protected override bool SubItemTScore(int paperId, int[] scoreArray, string userName, ref string resultText, out int[] subitemIds, out float[] subitemScoreArray)
        {
            Hashtable M = new Hashtable();
            Hashtable S = new Hashtable();

            S.Add("男P", 2.86);
            M.Add("男P", 5.29);
            S.Add("男E", 4.33);
            M.Add("男E", 10.17);
            S.Add("男N", 4.18);
            M.Add("男N", 11.45);
            S.Add("男L", 3.64);
            M.Add("男L", 11.91);
            S.Add("女P", 2.88);
            M.Add("女P", 4.43);
            S.Add("女E", 4.44);
            M.Add("女E", 7.67);
            S.Add("女N", 4.6);
            M.Add("女N", 12.5);
            S.Add("女L", 3.67);
            M.Add("女L", 12.83);
            DataSet ds           = SubItem.GetPaperSubItems(paperId, 1);
            int     subitemCount = ds.Tables[0].Rows.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];
                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]);
                        float[] array;
                        IntPtr  intPtr;
                        (array = X)[(int)(intPtr = (IntPtr)i)] = array[(int)intPtr] + (float)scoreArray[questionId - 1];
                    }
                    string subitemName = dr["Fsubitemname"].ToString();
                    // DataRow drStu = SchoolDB.GetStudent(userName);
                    string key = SchoolDB.GetStudent(userName);
                    key       += subitemName;
                    T[i]       = (float)Math.Round((double)(50f + 10f * (X[i] - float.Parse(M[key].ToString())) / float.Parse(S[key].ToString())), 2);
                    resultText = resultText + subitemName + "的得分是:" + T[i].ToString();
                    if (i != subitemCount - 1)
                    {
                        resultText += "<br/>";
                    }
                }
                subitemScoreArray = T;
                result            = true;
            }
            return(result);
        }
Ejemplo n.º 7
0
        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)
            {
                SubitemScoreEntry[] sses = new SubitemScoreEntry[subitemScoreArray.Length];
                for (int i = 0; i < subitemScoreArray.Length; i++)
                {
                    sses[i] = new SubitemScoreEntry(subitemIds[i], subitemScoreArray[i]);
                }
                Array.Sort(sses);
                int    maxSubitemId = sses[sses.Length - 1].index;
                string subitemName  = SubItem.GetPaperSubItemName(paperId, maxSubitemId);
                string text;
                if ((text = subitemName) != null)
                {
                    text = string.IsInterned(text);
                    if (text != "R")
                    {
                        if (text != "I")
                        {
                            if (text != "A")
                            {
                                if (text != "S")
                                {
                                    if (text != "E")
                                    {
                                        if (text == "C")
                                        {
                                            resultText = "你的职业倾向为现实型(C型)。C型主要是指各类与文件档案、图书资料、统计报表之类相关的各类科室工作。主要特点:①喜欢按计划办事,习惯接受他人指挥和领导,自己不谋求领导职务;\v②不喜欢冒险和竞争;③工作踏实,忠诚可靠,遵守纪律。主要职业:会计、出纳、统计人员;打字员;办公室人员;秘书和文书;图书管理员;旅游、外贸职员、保管员、邮递员、审计人员、人事职员等。";
                                        }
                                    }
                                    else
                                    {
                                        resultText = "你的职业倾向为现实型(E型)。E型主要是指那些组织与影响他人共同完成组织目标的工作。主要特点:①精力充沛、自信、善交际,具有领导才能;②喜欢竞争,敢冒风险;③喜爱权力、地位和物质财富。主要职业:经理企业家、政府官员、商人、行业部门和单位的领导者、管理者等。";
                                    }
                                }
                                else
                                {
                                    resultText = "你的职业倾向为现实型(S型)。S型主要是指各种直接为他人服务的工作,如医疗服务、教育服务、生活服务等。主要特点:①喜欢从事为他人服务和教育他人的工作;②喜欢参与解决人们共同关心的社会问题,渴望发挥自己的社会作用;③比较看重社会义务和社会道德。主要职业:教师、保育员、行政人员;医护人员;衣食住行服务行业的经理、管理人员和服务人员;福利人员等。";
                                }
                            }
                            else
                            {
                                resultText = "你的职业倾向为现实型(A型)。A型主要是指各类艺术创作工作。主要特点:①喜欢以各种艺术形式的创作来表现自己的才能,实现自身的价值;②具有特殊艺术才能和个性;③乐于创造新颖的、与众不同的艺术成果,渴望表现自己的个性。主要职业:音乐、舞蹈、戏剧等方面的演员、艺术家编导、教师;文学、艺术方面的评论员;广播节目的主持人、编辑、作者;绘画、书法、摄影家;艺术、家具、珠宝、房屋装饰等行业的设计师等。";
                            }
                        }
                        else
                        {
                            resultText = "你的职业倾向为现实型(I型)。I型主要是指科学研究和科学实验工作。主要特点:①抽象思维能力强,求知欲强,肯动脑,善思考,不愿动手;②喜欢独立的和富有创造性的工作;③知识渊博,有学识才能,不善于领导他人。主要职业:自然科学和社会科学方面的研究人员、专家;化学、冶金、电子、无线电、电视、飞机等方面的工程师、技术人员;飞机驾驶员、计算机操作员等。";
                        }
                    }
                    else
                    {
                        resultText = "你的职业倾向为现实型(R型)。R型主要是指各类工程技术工作、农业工作,通常需要一定体力,需要运用工具或操作机器。主要特点:①愿意使用工具从事操作性工作;②动手能力强,做事手脚灵活,动作协调;③不善言辞,不善交际。主要职业有:工程师、技术员;机械操作、维修、安装工人,矿工、木工、电工、鞋匠等;司机,测绘员、描图员;农民、牧民、渔民等。";
                    }
                }
            }
            return(res);
        }
Ejemplo n.º 8
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);
        }
Ejemplo n.º 9
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("男Do", 9.15);
            S.Add("男Do", 3.44);
            M.Add("男Cs", 6.11);
            S.Add("男Cs", 2.27);
            M.Add("男Sy", 9.2);
            S.Add("男Sy", 3.23);
            M.Add("男Sp", 8.64);
            S.Add("男Sp", 2.88);
            M.Add("男Sa", 4.75);
            S.Add("男Sa", 2.5);
            M.Add("男Wb", 14.64);
            S.Add("男Wb", 3.16);
            M.Add("男Re", 10.16);
            S.Add("男Re", 2.41);
            M.Add("男So", 13.44);
            S.Add("男So", 3.11);
            M.Add("男Sc", 15.8);
            S.Add("男Sc", 4.6);
            M.Add("男To", 9.7);
            S.Add("男To", 3);
            M.Add("男Gi", 10.5);
            S.Add("男Gi", 3.8);
            M.Add("男Cm", 9.88);
            S.Add("男Cm", 1.85);
            M.Add("男Ac", 8.91);
            S.Add("男Ac", 2.55);
            M.Add("男Ai", 6.9);
            S.Add("男Ai", 2.36);
            M.Add("男Ie", 10);
            S.Add("男Ie", 2.37);
            M.Add("男Py", 5.8);
            S.Add("男Py", 2);
            M.Add("男Fx", 5);
            S.Add("男Fx", 2.5);
            M.Add("男Fe", 7.23);
            S.Add("男Fe", 2.29);
            M.Add("女Do", 8.78);
            S.Add("女Do", 3.11);
            M.Add("女Cs", 5.61);
            S.Add("女Cs", 2.56);
            M.Add("女Sy", 9.24);
            S.Add("女Sy", 3.17);
            M.Add("女Sp", 8.53);
            S.Add("女Sp", 2.69);
            M.Add("女Sa", 4.52);
            S.Add("女Sa", 2.2);
            M.Add("女Wb", 14.52);
            S.Add("女Wb", 3.22);
            M.Add("女Re", 11.06);
            S.Add("女Re", 2.34);
            M.Add("女So", 13.77);
            S.Add("女So", 2.97);
            M.Add("女Sc", 16.19);
            S.Add("女Sc", 4.9);
            M.Add("女To", 10);
            S.Add("女To", 3.12);
            M.Add("女Gi", 10);
            S.Add("女Gi", 3.85);
            M.Add("女Cm", 10);
            S.Add("女Cm", 1.79);
            M.Add("女Ac", 9);
            S.Add("女Ac", 2.35);
            M.Add("女Ai", 6.8);
            S.Add("女Ai", 2.32);
            M.Add("女Ie", 9.76);
            S.Add("女Ie", 2.41);
            M.Add("女Py", 6);
            S.Add("女Py", 2);
            M.Add("女Fx", 5);
            S.Add("女Fx", 2.63);
            M.Add("女Fe", 9.16);
            S.Add("女Fe", 2.41);
            DataSet ds           = SubItem.GetPaperSubItems(paperId, 1);
            int     subitemCount = ds.Tables[0].Rows.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];
                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]);
                        float[] array;
                        IntPtr  intPtr;
                        (array = X)[(int)(intPtr = (IntPtr)i)] = array[(int)intPtr] + (float)scoreArray[questionId - 1];
                    }
                    string subitemName = dr["Fsubitemname"].ToString();
                    // DataRow drStu = SchoolDB.GetStudent(userName);
                    string key = SchoolDB.GetStudent(userName);
                    key       += subitemName;
                    T[i]       = (float)Math.Round((double)(50f + 10f * (X[i] - float.Parse(M[key].ToString())) / float.Parse(S[key].ToString())), 2);
                    resultText = resultText + subitemName + "的得分是:" + T[i].ToString();
                    if (i != subitemCount - 1)
                    {
                        resultText += "<br/>";
                    }
                }
                subitemScoreArray = T;
                result            = true;
            }
            return(result);
        }