📄 viewstusrc.aspx.cs
字号:
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.IO;
using System.Xml;
using System.Drawing.Imaging;
namespace stuman
{
/// <summary>
/// viewstusrc 的摘要说明。
/// </summary>
public class viewstusrc : System.Web.UI.Page
{
protected System.Web.UI.WebControls.TextBox Edclass;
protected System.Web.UI.WebControls.Button btnok;
protected System.Web.UI.HtmlControls.HtmlGenericControl selclass;
protected System.Web.UI.HtmlControls.HtmlForm Form1;
protected System.Web.UI.HtmlControls.HtmlGenericControl seldate;
protected System.Web.UI.HtmlControls.HtmlForm Form2;
protected System.Web.UI.HtmlControls.HtmlGenericControl view;
protected System.Web.UI.WebControls.DropDownList Edschooldate;
protected System.Web.UI.WebControls.DropDownList Edsubject;
protected System.Web.UI.WebControls.DropDownList Edsort;
protected System.Web.UI.WebControls.Label lblclass;
protected System.Web.UI.WebControls.DataGrid DataGrid1;
protected System.Web.UI.WebControls.Button btnsort;
protected System.Web.UI.WebControls.ListBox ListBox1;
protected System.Web.UI.WebControls.Button btnselok;
protected System.Web.UI.WebControls.Button btnpic;
protected System.Web.UI.WebControls.Label Mecount;
protected System.Web.UI.WebControls.Label Megood;
protected System.Web.UI.WebControls.Label Mepass;
protected System.Web.UI.WebControls.Label Meping;
protected System.Web.UI.WebControls.Label Metop;
protected System.Web.UI.HtmlControls.HtmlForm Form3;
private void Page_Load(object sender, System.EventArgs e)
{
if (!this.IsPostBack)
{
this.selclass.Visible=true;
this.seldate.Visible=false;
this.view.Visible=false;
}
}
private string datafile_stumain="stumain.xml";
private string datafile_stusrc="stusrc.xml";
private void create_date()
{
try
{
FileStream xmlfile;
xmlfile=new FileStream(Server.MapPath(datafile_stusrc),FileMode.Open,FileAccess.Read,FileShare.ReadWrite);
DataSet ds=new DataSet();
ds.ReadXml(xmlfile,XmlReadMode.ReadSchema);
xmlfile.Close();
DateTime schooldate=new DateTime(Convert.ToInt32(this.Edschooldate.SelectedValue),9,1);
int classnum=Convert.ToInt32(this.Edclass.Text);
string subject=this.Edsubject.SelectedValue;
string sort=this.Edsort.SelectedValue;
Session["schooldate"]=schooldate;
Session["class"]=classnum;
Session["subject"]=subject;
Session["sort"]=sort;
int count=ds.Tables["Tbstusrc"].Rows.Count;
for (int i=0;i<count;i++)
{
if (Convert.ToDateTime(ds.Tables["Tbstusrc"].Rows[i]["schooldate"]).Year==schooldate.Year)
{
if (Convert.ToInt32(ds.Tables["Tbstusrc"].Rows[i]["class"])==classnum)
{
DataRelation rel=ds.Tables["Tbstusrc"].ChildRelations[0];
DataRow[] rows=ds.Tables["Tbstusrc"].Rows[i].GetChildRows(rel);
DataRelation rel1=ds.Tables["srcmain"].ChildRelations[0];
DataRow[] r=rows[0].GetChildRows(rel1);
int c=r.GetLength(0);
for (int j=0;j<c;j++)
{
if ((Convert.ToString(r[j]["subject"])==subject)&&(Convert.ToString(r[j]["sort"])==sort))
{
ListItem newitem=new ListItem(Convert.ToDateTime(r[j]["date"]).ToString("d"),Convert.ToDateTime(r[j]["date"]).ToString());
this.ListBox1.Items.Add(newitem);
}
}
break;
}
}
}
}
catch (Exception ex)
{
this.Response.Write(ex.ToString());
}
}
private void create_data()
{
try
{
FileStream xmlfile;
xmlfile=new FileStream(Server.MapPath(datafile_stusrc),FileMode.Open,FileAccess.Read,FileShare.ReadWrite);
DataSet ds=new DataSet();
ds.ReadXml(xmlfile,XmlReadMode.ReadSchema);
xmlfile.Close();
int count=ds.Tables["Tbstusrc"].Rows.Count;
DataTable dt=new DataTable();
dt.Columns.Add("stuid",typeof(int));
dt.Columns.Add("name",typeof(string));
dt.Columns.Add("src",typeof(double));
dt.Columns.Add("num",typeof(double));
DateTime schooldate=(DateTime)Session["schooldate"];
int classnum=(int)Session["class"];
string subject=(string)Session["subject"];
string sort=(string)Session["sort"];
DateTime date=Convert.ToDateTime(this.ListBox1.SelectedValue);
for (int i=0;i<count;i++)
{
if (Convert.ToDateTime(ds.Tables["Tbstusrc"].Rows[i]["schooldate"]).Year==schooldate.Year)
{
if (Convert.ToInt32(ds.Tables["Tbstusrc"].Rows[i]["class"])==classnum)
{
DataRelation rel=ds.Tables["Tbstusrc"].ChildRelations[0];
DataRow[] rows=ds.Tables["Tbstusrc"].Rows[i].GetChildRows(rel);
DataRelation rel1=ds.Tables["srcmain"].ChildRelations[0];
int c=rows.GetLength(0);
for (int j=0;j<c;j++)
{
DataRow[] r=rows[j].GetChildRows(rel1);
int n=r.GetLength(0);
for (int l=0;l<n;l++)
{
if (Convert.ToDateTime(r[l]["date"])==date)
{
DataRow newrow=dt.NewRow();
newrow["stuid"]=Convert.ToInt32(rows[j]["stuid"]);
newrow["name"]=Convert.ToString(rows[j]["name"]);
newrow["src"]=Convert.ToDouble(r[l]["src"]);
dt.Rows.Add(newrow);
break;
}
}
}
break;
}
}
}
Session["srcdata"]=dt;
this.DataGrid1.DataSource=dt.DefaultView;
this.DataGrid1.DataBind();
int stucount=Convert.ToInt32(dt.Rows.Count);
int goodcount=0;
int passcount=0;
double sum=0.0;
double top=0.0;
for (int i=0;i<stucount;i++)
{
if (Convert.ToDouble(dt.Rows[i]["src"])>=90)
{
goodcount++;
}
if (Convert.ToDouble(dt.Rows[i]["src"])>=60)
{
passcount++;
}
sum+=Convert.ToDouble(dt.Rows[i]["src"]);
if (Convert.ToDouble(dt.Rows[i]["src"])>=top)
{
top=Convert.ToDouble(dt.Rows[i]["src"]);
}
}
double ping=sum/stucount;
this.Mecount.Text=Convert.ToString(stucount);
this.Megood.Text=Convert.ToString(goodcount);
this.Mepass.Text=Convert.ToString(passcount);
this.Meping.Text=Convert.ToString(ping);
this.Metop.Text=Convert.ToString(top);
}
catch (Exception ex)
{
this.Response.Write(ex.ToString());
}
}
private void create_pic()
{
try
{
Bitmap bmp=new Bitmap(500,700,PixelFormat.Format32bppArgb);
//Bitmap bmp=new Bitmap(Server.MapPath("bmp.bmp"));
Graphics gp=Graphics.FromImage(bmp);
gp.Clear(Color.White);
gp.DrawString("成绩统计",new Font("宋体",10),Brushes.Black,new PointF(5,5));
PointF Pmain=new PointF(20,50);
DataTable dt=(DataTable)Session["srcdata"];
int count=dt.Rows.Count;
double[] l=new double[count];
for (int i=0;i<count;i++)
{
l[i]=Convert.ToDouble(dt.Rows[i]["src"]);
}
for (int i=0;i<count;i++)
{
for (int j=i;j<count;j++)
{
if (l[i]<l[j])
{
double t=l[i];
l[i]=l[j];
l[j]=t;
}
}
}
for (int i=0;i<count;i++)
{
gp.FillRectangle(new SolidBrush(this.color(l[i])),(float)Pmain.X,(float)(250-l[i]*2),5,(float)(l[i]*2));
Pmain.X+=5;
}
for (int i=1;i<=10;i++)
{
gp.DrawLine(new Pen(Brushes.White,(float)0.5),20,50+i*20,350,50+i*20);
}
gp.DrawRectangle(new Pen(Brushes.Black,1),350,50,145,200);
gp.DrawString("统计信息",new Font("宋体",10),Brushes.Black,360,60);
int stucount=Convert.ToInt32(dt.Rows.Count);
int goodcount=0;
int passcount=0;
double sum=0.0;
double top=0.0;
for (int i=0;i<stucount;i++)
{
if (Convert.ToDouble(dt.Rows[i]["src"])>=90)
{
goodcount++;
}
if (Convert.ToDouble(dt.Rows[i]["src"])>=60)
{
passcount++;
}
sum+=Convert.ToDouble(dt.Rows[i]["src"]);
if (Convert.ToDouble(dt.Rows[i]["src"])>=top)
{
top=Convert.ToDouble(dt.Rows[i]["src"]);
}
}
double ping=sum/stucount;
gp.DrawString("学生人数:"+Convert.ToString(stucount),new Font("宋体",10),Brushes.Black,360,80);
gp.DrawString("优秀人数:"+Convert.ToString(goodcount),new Font("宋体",10),Brushes.Black,360,100);
gp.DrawString("及格人数:"+Convert.ToString(passcount),new Font("宋体",10),Brushes.Black,360,120);
gp.DrawString("平均成绩:"+Convert.ToString(ping),new Font("宋体",10),Brushes.Black,360,140);
gp.DrawString("最高成绩:"+Convert.ToString(top),new Font("宋体",10),Brushes.Black,360,160);
gp.DrawLine(new Pen(Brushes.Aqua,2),20,50+4*20,350,50+4*20);
int[] ct=new int[10];
for (int i=0;i<count;i++)
{
int t=this.div((int)l[i],10);
ct[t-1]++;
}
PointF Pt=new PointF(50,350);
for (int i=9;i>=5;i--)
{
gp.FillRectangle(new SolidBrush(this.color((double)((i+1)*10))),Pt.X,(float)(400-ct[i]*20),20,ct[i]*20);
gp.DrawString(Convert.ToString((i+1)*10),new Font("宋体",10),Brushes.Black,Pt.X,400);
Pt.X+=25;
}
int m=0;
for (int i=0;i<=4;i++)
{
m+=ct[i];
}
ct[4]=m;
gp.FillRectangle(Brushes.Red,Pt.X,(float)(400-m*20),20,m);
gp.DrawString("60分以下",new Font("宋体",10),Brushes.Black,Pt.X,400);
int cangle=0;
int totalangle=0;
int total=0;
for (int i=0;i<10;i++)
{
total+=ct[i];
}
for (int i=0;i<6;i++)
{
cangle=Convert.ToInt32(((float)ct[9-i])/((float)total)*360F);
gp.FillPie(new SolidBrush(this.color((double)((10-i)*10))),50,450,200,200,totalangle,cangle);
gp.DrawPie(Pens.Black,50,450,200,200,totalangle,cangle);
totalangle+=cangle;
//double pre=Convert.ToDouble((double)ct[9-i]/(double)total*100.0);
//int x=Convert.ToInt32(75.0*Math.Cos(-((double)totalangle/2.0)/360.0*Math.PI)+150.0);
//int y=Convert.ToInt32(-75.0*Math.Sin(-((double)totalangle/2.0)/360.0*Math.PI)+550.0);
//gp.DrawString(Convert.ToString(pre)+"%",new Font("宋体",10),Brushes.Black,x,y);
}
gp.DrawRectangle(Pens.Black,350,330,100,200);
gp.DrawString("图例",new Font("宋体",10),Brushes.Black,360,340);
for (int i=0;i<5;i++)
{
gp.FillRectangle(new SolidBrush(this.color((double)((10-i)*10))),360,355+i*12,10,8);
gp.DrawString(Convert.ToString((10-i)*10),new Font("宋体",10),Brushes.Black,375,355+i*12);
}
gp.FillRectangle(new SolidBrush(this.color(50)),360,355+5*12,10,8);
gp.DrawString("60分以下",new Font("宋体",10),Brushes.Black,375,355+5*12);
Application["pic"]=bmp;
bmp.Save(this.Response.OutputStream,ImageFormat.Gif);
}
catch (Exception ex)
{
this.Response.Write(ex.ToString());
}
}
private int div(int m,int n)
{
return (int)((m-m%n)/n);
}
private Color color(double a)
{
int b=this.div((int)a,10);
Color c=Color.FromArgb(255,255,255);
switch (b)
{
case 10:
{
c=Color.FromArgb(0,138,255);
}
break;
case 9:
{
c=Color.FromArgb(2,157,255);
}
break;
case 8:
{
c=Color.FromArgb(0,234,255);
}
break;
case 7:
{
c=Color.FromArgb(0,255,65);
}
break;
case 6:
{
c=Color.FromArgb(255,255,0);
}
break;
case 5:
case 4:
case 3:
case 2:
case 1:
case 0:
{
c=Color.FromArgb(255,0,0);
}
break;
}
return c;
}
private string getsubject(string s)
{
switch (s)
{
case "ch":return "语文";
break;
case "me":return "数学";
break;
case "en":return "英语";
break;
case "so":return "政治";
break;
case "ph":return "物理";
break;
case "cm":return "化学";
break;
case "ba":return "生物";
break;
case "er":return "地理";
break;
case "hs":return "历史";
break;
case "cp":return "计算机";
break;
case "pe":return "体育";
break;
default:return "语文";
break;
}
}
private string getsort(string s)
{
switch (s)
{
case "mid":return "期中";
break;
case "fnl":return "期末";
break;
case "nom":return "普通";
break;
case "met":return "会考";
break;
default:return "期中";
break;
}
}
#region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.btnok.Click += new System.EventHandler(this.btnok_Click);
this.btnselok.Click += new System.EventHandler(this.btnselok_Click);
this.btnsort.Click += new System.EventHandler(this.btnsort_Click);
this.btnpic.Click += new System.EventHandler(this.btnpic_Click);
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
private void btnok_Click(object sender, System.EventArgs e)
{
this.selclass.Visible=false;
this.seldate.Visible=true;
this.view.Visible=false;
this.create_date();
}
private void btnselok_Click(object sender, System.EventArgs e)
{
this.selclass.Visible=false;
this.seldate.Visible=false;
this.view.Visible=true;
this.create_data();
DateTime schooldate=(DateTime)Session["schooldate"];
int classnum=(int)Session["class"];
string subject=(string)Session["subject"];
string sort=(string)Session["sort"];
DateTime date=Convert.ToDateTime(this.ListBox1.SelectedValue);
this.lblclass.Text=Convert.ToString(schooldate.Year)+"级"+Convert.ToString(classnum)+"班"+this.getsubject(subject)+this.getsort(sort)+"考试"+
"成绩"+" "+"日期:"+date.ToString("d");
}
private void btnsort_Click(object sender, System.EventArgs e)
{
this.DataGrid1.Columns[3].Visible=true;
DataTable dt=(DataTable)Session["srcdata"];
DataView dv=dt.DefaultView;
dv.Sort="src DESC";
this.DataGrid1.DataSource=dv;
this.DataGrid1.DataBind();
int count=this.DataGrid1.Items.Count;
for (int i=0;i<count;i++)
{
this.DataGrid1.Items[i].Cells[3].Text=Convert.ToString(i+1);
}
}
private void btnpic_Click(object sender, System.EventArgs e)
{
this.create_pic();
//this.Response.Redirect("viewpic.aspx");
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -