韩娱我的极品前妻:实例302 饼形图表分析人力资源情况

来源:百度文库 编辑:偶看新闻 时间:2024/05/02 17:24:54
实例302  饼形图表分析人力资源情况
实例说明
开发人力资源管理系统时,需要将企业各类人员占公司比例的情况分别用图表显示出来。本实例利用饼形图表对公司内部人力资源进行统计分析,实例运行结果如图13.15所示。
  
图13.15  饼形图表分析人力资源情况
技术要点
本实例通过SQL语句从数据库中检索出相应数据并进行比例计算。利用Graphics类中的方法FillPie绘制饼形图,通过FillPie方法的参数来控制饼形图绘制的位置。由于该实例中绘制图形用到的方法在实例300中有详细说明,这里就不再赘述。
实现过程
(1)新建一个网站,将其命名为Ex13_15,默认主页名为Default.aspx。
(2)主要程序代码如下。
private void CreateImage( )
{
SqlConnection Con = new SqlConnection
(ConfigurationManager.AppSettings["ConSql"]); //连接数据库
Con.Open( );
string str1 = "select *  from tb_14";
SqlCommand Com = new SqlCommand(str1, Con);
DataSet ds = new DataSet( );
SqlDataAdapter Da = new SqlDataAdapter(Com);
Da.Fill(ds);
Con.Close( );
string str2 = "SELECT SUM(Employee+SellMan+Director+Manager)
AS Number FROM tb_14"; //计算员工总和
SqlDataAdapter Da2 = new SqlDataAdapter(str2, Con);
DataSet ds2 = new DataSet( );
Da2.Fill(ds2);
int Sum = Convert.ToInt32(ds2.Tables[0].Rows[0][0].ToString( ));
//获取普通员工数目
int employee = Convert.ToInt32(ds.Tables[0].Rows[0][1].ToString( ));
//获取销售员工数目
int sellman = Convert.ToInt32(ds.Tables[0].Rows[0][2].ToString( ));
//获取主任数目
int director = Convert.ToInt32(ds.Tables[0].Rows[0][3].ToString( ));
//获取经理数目
int manager = Convert.ToInt32(ds.Tables[0].Rows[0][4].ToString( ));
//创建画图对象
int width = 400, height = 450;
Bitmap bitmap = new Bitmap(width, height);
Graphics g = Graphics.FromImage(bitmap);
try
{
g.Clear(Color.White); //清空背景色
Pen pen1 = new Pen(Color.Red);
Brush brush1 = new SolidBrush(Color.YellowGreen);
Brush brush2 = new SolidBrush(Color.Blue);
Brush brush3 = new SolidBrush(Color.Brown);
Font font1 = new Font("Courier New", 16, FontStyle.Bold);
Font font2 = new Font("Courier New", 8);
g.FillRectangle(brush1, 0, 0, width, height);    //绘制背景图
g.DrawString("公司人力资源饼形图", font1, brush2,
new Point(80, 20));//书写标题
float angle1 = Convert.ToSingle((360/
Convert.ToSingle(Sum)) * Convert.ToSingle(employee)); //普通员工在饼形图中分配的角度
//销售员工在饼形图中分配的角度
float angle2 = Convert.ToSingle((360/
Convert.ToSingle(Sum)) * Convert.ToSingle(sellman));
float angle3 = Convert.ToSingle((360/
Convert.ToSingle(Sum)) * Convert.ToSingle(director)); //主任在饼形图中分配的角度
float angle4 = Convert.ToSingle((360/
Convert.ToSingle(Sum)) * Convert.ToSingle(manager)); //经理在饼形图中分配的角度
g.FillPie(Brushes.Beige, 50, 100, 100, 100, 0,360);
g.FillPie(brush2,50 , 100,100 ,100 , 0, angle1);  //绘制普通员工所占比例
g.FillRectangle(brush2, 50, 220, 20, 10);  //绘制小矩形
g.DrawString("普通员工" + Convert.ToSingle(employee) *
100 / Convert.ToSingle(Sum) + "%", font2, brush2, 80, 220);
g.FillPie(Brushes.Beige, 200, 100, 100, 100, 0,360);
g.FillPie(brush3, 200, 100, 100, 100, 0, angle2);  //绘制销售员工所占比例
g.FillRectangle(brush3, 200, 220, 20, 10);  //绘制小矩形
g.DrawString("销售员工" + Convert.ToSingle(sellman) * 100 /
Convert.ToSingle(Sum) + "%", font2, brush3, 230, 220);
g.FillPie(Brushes.Beige, 50, 260, 100, 100, 0,360);
g.FillPie(Brushes.BlueViolet, 50, 260, 100, 100, 0, angle3);  //绘制普通员工所占比例
g.FillRectangle(Brushes.BlueViolet, 50, 380, 20, 10);  //绘制小矩形
g.DrawString("主任" + Convert.ToSingle(director) * 100 / Convert.ToSingle(Sum) + "%", font2, Brushes.BlueViolet, 80, 380);
g.FillPie(Brushes.Beige, 200, 260, 100, 100, 0,360);
g.FillPie(Brushes.Black, 200, 260, 100, 100, 0, angle4);  //绘制销售员工所占比例
g.FillRectangle(Brushes.Black, 200, 380, 20, 10);  //绘制小矩形
g.DrawString("经理" + Convert.ToSingle(manager) *
100 / Convert.ToSingle(Sum) + "%", font2, Brushes.Black, 230, 380);
}
catch (Exception md)
{
Response.Write(md.Message);
}
System.IO.MemoryStream ms = new System.IO.MemoryStream( );
bitmap.Save(ms, System.Drawing.Imaging.ImageFormat.Gif);
Response.ClearContent( );
Response.ContentType = "image/Gif";
Response.BinaryWrite(ms.ToArray( ));
}
举一反三
根据本实例,读者可以:
利用饼形图分析工作业绩;
利用饼形图分析公司经营成本