gyhlw_dotnet/网站项目/VRS/Management/VSAT/ResultStudentStatistics.asp...

442 lines
16 KiB
C#

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++;
}
}
}
}
/// <summary>
/// 学生成绩统计分数段
/// </summary>
/// <param name="table"></param>
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()
{
}
/// <summary>
/// 导出excel
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnExport_Click(object sender, EventArgs e)
{
var data = getDataSet();
string filePath = Server.MapPath("~/Download/");
if (!Directory.Exists(filePath))
{
Directory.CreateDirectory(filePath);
}
/*
<telerik:GridBoundColumn DataField="grade" HeaderText="入学年度"></telerik:GridBoundColumn>
<telerik:GridBoundColumn DataField="major" HeaderText="专业"></telerik:GridBoundColumn>
<telerik:GridBoundColumn DataField="real_name" HeaderText="姓名"></telerik:GridBoundColumn>
<telerik:GridBoundColumn DataField="login_name" HeaderText="学号"></telerik:GridBoundColumn>
<telerik:GridBoundColumn DataField="xl_count" HeaderText="训练次数"></telerik:GridBoundColumn>
<telerik:GridBoundColumn DataField="kh_count" HeaderText="考核次数"></telerik:GridBoundColumn>
<telerik:GridBoundColumn DataField="xl_avg" HeaderText="训练成绩"></telerik:GridBoundColumn>
<telerik:GridBoundColumn DataField="kh_avg" HeaderText="考核成绩"></telerik:GridBoundColumn>
<telerik:GridBoundColumn DataField="end_avg" HeaderText="总成绩"></telerik:GridBoundColumn>
*/
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();
}
/// <summary>
/// 导出excel
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
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();
}
}
}