⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 viewstusrc.aspx.cs

📁 XStuMan学生管理系统是面向中小学信息化管理的一套学生管理系统
💻 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 + -