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()); }
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); }
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("该课程信息不完整,无法进行继续查询!", "无法查询"); } } }
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); }