public static List <ScoreDistributionItem> Query(String semester, String lessonCodeContains
                                                         , String lessonNameContains, String teacherNameContains, int ignoreLessThan, int limit
                                                         , bool ignoreImcompleteInfo, String orderBy)
        {
            List <ScoreDistributionItem> result = new List <ScoreDistributionItem>();
            SQLiteConnection             conn   = GetSqliteConnection();
            SQLiteCommand cmd = conn.CreateCommand();

            cmd.CommandText = createSql(semester, lessonCodeContains, lessonNameContains
                                        , teacherNameContains, ignoreLessThan, limit, ignoreImcompleteInfo, orderBy);
            SQLiteDataReader reader = cmd.ExecuteReader();
            int i = 1;

            while (reader.Read())
            {
                ScoreDistributionItem item = new ScoreDistributionItem();
                item.Id           = i++;
                item.CourseId     = reader.GetInt32(0);
                item.Semester     = reader.GetString(1);
                item.LessonCode   = reader.GetString(2);
                item.LessonName   = reader.GetString(3);
                item.Teacher      = reader.GetString(4);
                item.Credits      = reader.GetDouble(5);
                item.StudentCount = reader.GetInt32(6);
                result.Add(item);
            }
            return(result);
        }
        public static void QueryScoreDistribution(ScoreDistributionItem item)
        {
            int courseId          = item.CourseId;
            SQLiteConnection conn = GetSqliteConnection();
            SQLiteCommand    cmd  = conn.CreateCommand();

            cmd.CommandText = "select scoreValue, studentCount from score where course_id = " + courseId + " order by scoreValue";
            SQLiteDataReader reader = cmd.ExecuteReader();

            if (item.Scores == null)
            {
                item.Scores = new List <ScoreItem>();
            }
            else
            {
                item.Scores.Clear();
            }

            while (reader.Read())
            {
                ScoreItem si = new ScoreItem();
                si.DisplayValue = reader.GetString(0);
                si.StudentCount = reader.GetInt32(1);
                item.Scores.Add(si);
            }
            item.Scores.Sort(new ScoreItem());
        }
Beispiel #3
0
 private void queryDistribution(ScoreDistributionItem args)
 {
     if (args.Scores == null || args.Scores.Count == 0)
     {
         try
         {
             ScoreDistributionHelper.QueryScoreDistribution(args);
         }
         catch (Exception e)
         {
             MessageBox.Show("数据查询出错!\n详细信息:" + e.Message);
         }
     }
     String[][]  listViewItems = new String[args.Scores.Count][];
     DataPoint[] dps           = new DataPoint[args.Scores.Count];
     for (int i = 0; i < args.Scores.Count; i++)
     {
         ScoreItem si         = args.Scores[i];
         String    percentage = ((double)si.StudentCount / args.StudentCount).ToString("P");
         listViewItems[i]        = new String[] { si.DisplayValue, si.StudentCount.ToString(), percentage };
         dps[i]                  = new DataPoint(0, si.StudentCount);
         dps[i].Label            = si.DisplayValue;
         dps[i].AxisLabel        = si.DisplayValue;
         dps[i].LabelBorderWidth = 100;
         dps[i].ToolTip          = si.DisplayValue + " " + si.StudentCount + "人";
     }
     scoreDistributionChartPanel1.SetPanelType(ScoreDistributionChartPanelType.SCORE_DISTRIBUTION_COURSE);
     scoreDistributionChartPanel1.RefreshData(listViewItems, dps);
 }
        public static List <ScoreDistributionItem> QueryLessonSDChangeByTeacher(ScoreDistributionItem item)
        {
            String sql = @"select
                               c.id,
                               s.name,
                               l.lessonCode,
                               l.lessonName,
                               t.name,
                               l.creditPoint,
                               c.totalStudentNumber
                           from
                               course c, lesson l, semester s, teacher t
                           where
                               c.lesson_id = l.id
                               and c.semester_id = s.id
                               and c.teacher_id = t.id
                               and l.lessonName = '" + item.LessonName + "'"
                         + @" and s.name = '" + item.Semester + "'"
                         + @" and t.name != 'Unknown' 
                               order by t.name";
            List <ScoreDistributionItem> result = new List <ScoreDistributionItem>();
            SQLiteConnection             conn   = GetSqliteConnection();
            SQLiteCommand cmd = conn.CreateCommand();

            cmd.CommandText = sql;
            SQLiteDataReader reader = cmd.ExecuteReader();
            int i = 1;

            while (reader.Read())
            {
                ScoreDistributionItem sdItem = new ScoreDistributionItem();
                sdItem.Id           = i++;
                sdItem.CourseId     = reader.GetInt32(0);
                sdItem.Semester     = reader.GetString(1);
                sdItem.LessonCode   = reader.GetString(2);
                sdItem.LessonName   = reader.GetString(3);
                sdItem.Teacher      = reader.GetString(4);
                sdItem.Credits      = reader.GetDouble(5);
                sdItem.StudentCount = reader.GetInt32(6);
                QueryScoreDistribution(sdItem);
                result.Add(sdItem);
            }
            result = ScoreDistributionItem.MergeSameTeacherSemester(result);
            foreach (ScoreDistributionItem sdi in result)
            {
                sdi.CalculateBenchMark();
            }
            result.Sort(new ScoreDistributionItem());
            return(result);
        }
Beispiel #5
0
 private void toolStripMenuItem5_Click(object sender, EventArgs e)
 {
     if (listView1.SelectedIndices.Count > 0)
     {
         ScoreDistributionItem i = courseList[listView1.SelectedIndices[0]];
         if (i != null && !string.IsNullOrEmpty(i.Teacher) && !string.IsNullOrEmpty(i.LessonName))
         {
             tSDThread = new Thread(new ParameterizedThreadStart(queryAnalyticsSD));
             tSDThread.Start(new object[] { i, "Teacher" });
         }
         else
         {
             MessageBox.Show("该课程信息不完整,无法进行继续查询!", "无法查询");
         }
     }
 }
Beispiel #6
0
        private void queryAnalyticsSD(Object o)
        {
            ScoreDistributionItem args = (ScoreDistributionItem)((Object[])o)[0];
            String analyticsType       = (String)((Object[])o)[1];
            bool   isSemesterAnalytics = "Semester".Equals(analyticsType);

            busyAnalysticView();
            List <ScoreDistributionItem> list = null;

            try
            {
                if (isSemesterAnalytics)
                {
                    list = ScoreDistributionHelper.QueryTeacherSDChangeBySemester(args);
                }
                else
                {
                    list = ScoreDistributionHelper.QueryLessonSDChangeByTeacher(args);
                }
            }
            catch (Exception e)
            {
                unBusyAnalysticView();
                MessageBox.Show("数据查询出错!\n详细信息:" + e.Message);
                return;
            }
            String[][]  listViewItems = new String[list.Count][];
            DataPoint[] dps           = new DataPoint[list.Count];
            for (int i = 0; i < list.Count; i++)
            {
                ScoreDistributionItem sdi = list[i];
                dps[i]             = new DataPoint(0, sdi.AverageScore);
                dps[i].AxisLabel   = " ";
                listViewItems[i]   = new String[] { isSemesterAnalytics?sdi.Semester : sdi.Teacher, sdi.AverageScore.ToString("0.00"), sdi.Remark };
                dps[i].ToolTip     = (isSemesterAnalytics ? "学期:" + sdi.Semester : "教师:" + sdi.Teacher) + "\n平均成绩:" + sdi.AverageScore.ToString("0.00") + " (" + Lesson.GetScoreDetailString(sdi.AverageScore) + ")\n比例最大的成绩:" + sdi.Remark;
                dps[i].MarkerStyle = MarkerStyle.Circle;
                dps[i].MarkerSize  = 10;
            }
            this.setSDChartPanelHandler(isSemesterAnalytics ? ScoreDistributionChartPanelType.SCORE_DISTRIBUTION_SEMESTER : ScoreDistributionChartPanelType.SCORE_DISTRIBUTION_TEACHER
                                        , listViewItems, dps);
            unBusyAnalysticView();
        }
 private void queryDistribution(ScoreDistributionItem args)
 {
     if (args.Scores == null || args.Scores.Count == 0)
     {
         try
         {
             ScoreDistributionHelper.QueryScoreDistribution(args);
         }
         catch (Exception e)
         {
             MessageBox.Show("数据查询出错!\n详细信息:" + e.Message);
         }
     }
     String[][] listViewItems = new String[args.Scores.Count][];
     DataPoint[] dps = new DataPoint[args.Scores.Count];
     for (int i = 0;i<args.Scores.Count;i++)
     {
         ScoreItem si = args.Scores[i];
         String percentage = ((double)si.StudentCount / args.StudentCount).ToString("P");
         listViewItems[i] = new String[] { si.DisplayValue, si.StudentCount.ToString(), percentage };
         dps[i] = new DataPoint(0, si.StudentCount);
         dps[i] .Label = si.DisplayValue;
         dps[i] .AxisLabel = si.DisplayValue;
         dps[i] .LabelBorderWidth = 100;
         dps[i] .ToolTip = si.DisplayValue + " " + si.StudentCount + "人";
     }
     scoreDistributionChartPanel1.SetPanelType(ScoreDistributionChartPanelType.SCORE_DISTRIBUTION_COURSE);
     scoreDistributionChartPanel1.RefreshData(listViewItems,dps);
 }