using System; using System.Collections.Generic; using System.Configuration; using System.Data; using System.Drawing; using System.IO; using System.Linq; using System.Text; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using Telerik.Web.UI; namespace VRS.Management.VSAT { public partial class ResultStudentStatistics : BaseListPage { DataService.BLL.pro_result bll = new DataService.BLL.pro_result(); protected override void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { start.SelectedDate = DateTime.Today.AddDays(-365); end.SelectedDate = DateTime.Today; BindMajors(dpMajor, ""); BindGrade(grade, ""); DataLoad(); } } public DataSet getDataSet() { var start_date = start.SelectedDate.HasValue ? start.SelectedDate.Value.ToString("yyyy-MM-dd") : ""; var end_date = end.SelectedDate.HasValue ? end.SelectedDate.Value.ToString("yyyy-MM-dd") : ""; if (!string.IsNullOrEmpty(end_date)) { end_date = DateTime.Parse(end_date).AddDays(1).ToString("yyyy-MM-dd"); } //var query = new StringBuilder(" 1 = 1 and subject_id!='00003' "); //排除故障现象考试 var query = new StringBuilder(" 1 = 1 "); //不排除故障现象考试 if (!string.IsNullOrWhiteSpace(start_date)) { query.AppendFormat(" AND examine_time >= '{0}' ", start_date); } if (!string.IsNullOrWhiteSpace(end_date)) { query.AppendFormat(" AND examine_time < '{0}' ", end_date); } //姓名 if (!string.IsNullOrWhiteSpace(real_name.Text.Trim())) { query.AppendFormat(" AND (real_name LIKE '%{0}%' )", real_name.Text.Trim()); } //学号 if (!string.IsNullOrWhiteSpace(login_name.Text.Trim())) { query.AppendFormat(" AND (login_name LIKE '%{0}%' ) ", login_name.Text.Trim()); } if (!string.IsNullOrWhiteSpace(dpMajor.SelectedValue)) { query.AppendFormat(" AND major = '{0}' ", dpMajor.SelectedValue); } if (!string.IsNullOrWhiteSpace(grade.SelectedValue)) { query.AppendFormat(" AND grade = '{0}' ", grade.SelectedValue); } var configModel = GetSystemConfig(ConfigurationManager.AppSettings["SystemName"].ToString()); decimal rate = configModel.xl_rate; var data = bll.GetStudentStatistics(query.ToString(), rate); return data; } public static void compute_score(DataTable table, out decimal man_dn60, out decimal man_bt60_70, out decimal man_bt70_80, out decimal man_bt80_90, out decimal man_up90, out decimal total_score, out decimal total_man) { // 不及格 60分以下 man_dn60 = 0; //及格 60-69 man_bt60_70 = 0; //中等 70-79 man_bt70_80 = 0; //良好 80-89 man_bt80_90 = 0; //优秀 90-100 man_up90 = 0; //总计多少分 total_score = 0; //总计多少人 total_man = 0; var tb = table; int temp = 0; for (int i = 0; i < tb.Rows.Count; i++) { var row = tb.Rows[i]; if (int.TryParse(row["end_avg"].ToString(), out temp)) { total_score = total_score + temp; total_man++; if (temp >= 90) { man_up90++; } else if (temp >= 80 && temp < 90) { man_bt80_90++; } else if (temp >= 70 && temp < 80) { man_bt70_80++; } else if (temp >= 60 && temp < 70) { man_bt60_70++; } else if (temp < 60) { man_dn60++; } } } } /// /// 学生成绩统计分数段 /// /// private void load_score_segment(DataTable table) { // 不及格 60分以下 decimal man_dn60 = 0; //及格 60-69 decimal man_bt60_70 = 0; //中等 70-79 decimal man_bt70_80 = 0; //良好 80-89 decimal man_bt80_90 = 0; //优秀 90-100 decimal man_up90 = 0; //总计多少分 decimal total_score = 0; //总计多少人 decimal total_man = 0; compute_score(table, out man_dn60, out man_bt60_70, out man_bt70_80, out man_bt80_90, out man_up90, out total_score, out total_man); if (total_man > 0) { var avg_score = Math.Round(total_score / total_man, 1); var avg_score_string = avg_score.ToString(); } /* dn60 = 20; bt60_70 = 30; bt70_80 = 40; bt80_90 = 8; up90 = 2; total_has_score = 100; */ span_dn60.InnerHtml = man_dn60.ToString() + "人"; span_bt60_70.InnerHtml = man_bt60_70.ToString() + "人"; span_bt70_80.InnerHtml = man_bt70_80.ToString() + "人"; span_bt80_90.InnerHtml = man_bt80_90.ToString() + "人"; span_up90.InnerHtml = man_up90.ToString() + "人"; if (total_man > 0) { ChartUser.Visible = true; PieChart1.Visible = true; var Series_dn60 = ChartUser.PlotArea.Series[0] as ColumnSeries; Series_dn60.SeriesItems[0].Y = man_dn60; Series_dn60.SeriesItems[1].Y = man_bt60_70; Series_dn60.SeriesItems[2].Y = man_bt70_80; Series_dn60.SeriesItems[3].Y = man_bt80_90; Series_dn60.SeriesItems[4].Y = man_up90; Series_dn60.SeriesItems[0].BackgroundColor = Color.Red; Series_dn60.SeriesItems[1].BackgroundColor = Color.YellowGreen; Series_dn60.SeriesItems[2].BackgroundColor = Color.SkyBlue; Series_dn60.SeriesItems[3].BackgroundColor = Color.BlueViolet; Series_dn60.SeriesItems[4].BackgroundColor = Color.Blue; /* var Series_bt60_70 = ChartUser.PlotArea.Series[1] as ColumnSeries; Series_bt60_70.SeriesItems[0].Y = bt60_70; var Series_bt70_80 = ChartUser.PlotArea.Series[2] as ColumnSeries; Series_bt70_80.SeriesItems[0].Y = bt70_80; var Series_bt80_90 = ChartUser.PlotArea.Series[3] as ColumnSeries; Series_bt80_90.SeriesItems[0].Y = bt80_90; var Series_up90 = ChartUser.PlotArea.Series[4] as ColumnSeries; Series_up90.SeriesItems[0].Y = up90; */ decimal v1 = Math.Round(man_dn60 * 100 / total_man, 1); decimal v2 = Math.Round(man_bt60_70 * 100 / total_man, 1); decimal v3 = Math.Round(man_bt70_80 * 100 / total_man, 1); decimal v4 = Math.Round(man_bt80_90 * 100 / total_man, 1); decimal v5 = Math.Round(man_up90 * 100 / total_man, 1); var Series0 = PieChart1.PlotArea.Series[0] as PieSeries; Series0.SeriesItems[0].Y = v1; Series0.SeriesItems[1].Y = v2; Series0.SeriesItems[2].Y = v3; Series0.SeriesItems[3].Y = v4; Series0.SeriesItems[4].Y = v5; } else { ChartUser.Visible = false; PieChart1.Visible = false; } } protected override void DataLoad() { var data = getDataSet().Tables[0]; dataList.DataSource = data; dataList.Rebind(); load_score_segment(data); } protected override void GridList_PageIndexChanged(object sender, GridPageChangedEventArgs e) { DataLoad(); } protected override void GridList_PageSizeChanged(object sender, GridPageSizeChangedEventArgs e) { DataLoad(); } protected override void GridList_SortCommand(object sender, GridSortCommandEventArgs e) { DataLoad(); } protected override void GrdList_DeleteCommand(object sender, GridCommandEventArgs e) { string Id = (e.Item as GridDataItem).OwnerTableView.DataKeyValues[e.Item.ItemIndex]["Id"].ToString(); bll.Delete(Id); DataLoad(); } protected override void AjaxManager_AjaxRequest(object sender, AjaxRequestEventArgs e) { } protected void btnSelect_Click(object sender, EventArgs e) { DataLoad(); } protected void btnDelete_Click(object sender, EventArgs e) { bll.Delete(IdInput.Value); DataLoad(); } public void getvalue() { } /// /// 导出excel /// /// /// protected void btnExport_Click(object sender, EventArgs e) { var data = getDataSet(); string filePath = Server.MapPath("~/Download/"); if (!Directory.Exists(filePath)) { Directory.CreateDirectory(filePath); } /* */ var table = new DataTable(); //table.Columns.Add("入学年度"); //table.Columns.Add("专业"); table.Columns.Add("姓名"); table.Columns.Add("学号"); table.Columns.Add("训练次数"); table.Columns.Add("考核次数"); table.Columns.Add("训练成绩"); table.Columns.Add("考核成绩"); table.Columns.Add("总成绩"); var source = data.Tables[0]; for (var i = 0; i < source.Rows.Count; i++) { var row = table.NewRow(); var res = source.Rows[i]; //row["入学年度"] = res["grade"]; //row["专业"] = res["major"]; row["姓名"] = res["real_name"]; row["学号"] = res["login_name"]; row["训练次数"] = res["xl_count"]; row["考核次数"] = res["kh_count"]; row["训练成绩"] = res["xl_avg"]; row["考核成绩"] = res["kh_avg"]; row["总成绩"] = res["end_avg"]; table.Rows.Add(row); } if (source.Rows.Count <= 0) { RadAjaxManager1.Alert("导出记录不存在!"); return; } string title = source.Rows[0]["grade"].ToString() + source.Rows[0]["major"].ToString() + "专业考试成绩统计表"; string fileName = string.Format("{0}.xls", title + "_" + DateTime.Now.ToString("yyyyMMddHHmmss")); filePath = filePath + fileName; VRS.Util.Import.DateTableToExcelWithTitle(table, source, filePath, title); FileInfo fileInfo = new FileInfo(filePath); Response.Clear(); Response.ClearContent(); Response.ClearHeaders(); Response.AddHeader("Content-Disposition", "attachment;filename=" + fileName); Response.AddHeader("Content-Length", fileInfo.Length.ToString()); Response.AddHeader("Content-Transfer-Encoding", "binary"); Response.ContentType = "application/octet-stream"; Response.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312"); Response.WriteFile(fileInfo.FullName); Response.Flush(); Response.End(); } /// /// 导出excel /// /// /// protected void btnExport_score_segment_Click(object sender, EventArgs e) { string filePath = Server.MapPath("~/Download/"); if (!Directory.Exists(filePath)) { Directory.CreateDirectory(filePath); } string fileName = string.Format("{0}.xls", "学员总成绩分数段统计_" + DateTime.Now.ToString("yyyyMMddHHmmss")); filePath = filePath + fileName; var table = new DataTable(); table.Columns.Add("分数段"); table.Columns.Add("人数"); var row1 = table.NewRow(); row1["分数段"] = "60分以下"; row1["人数"] = span_dn60.InnerHtml; table.Rows.Add(row1); var row2 = table.NewRow(); row2["分数段"] = "60到70分"; row2["人数"] = span_bt60_70.InnerHtml; table.Rows.Add(row2); var row3 = table.NewRow(); row3["分数段"] = "70到80分"; row3["人数"] = span_bt70_80.InnerHtml; table.Rows.Add(row3); var row4 = table.NewRow(); row4["分数段"] = "80到90分"; row4["人数"] = span_bt80_90.InnerHtml; table.Rows.Add(row4); var row5 = table.NewRow(); row5["分数段"] = "90分以上"; row5["人数"] = span_up90.InnerHtml; table.Rows.Add(row5); VRS.Util.Import.DateTableToExcel(table, filePath); FileInfo fileInfo = new FileInfo(filePath); Response.Clear(); Response.ClearContent(); Response.ClearHeaders(); Response.AddHeader("Content-Disposition", "attachment;filename=" + fileName); Response.AddHeader("Content-Length", fileInfo.Length.ToString()); Response.AddHeader("Content-Transfer-Encoding", "binary"); Response.ContentType = "application/octet-stream"; Response.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312"); Response.WriteFile(fileInfo.FullName); Response.Flush(); Response.End(); } } }