图形界面

数据

查询效果

代码

   private void button1_Click(object sender, EventArgs e)
{
G++;
DrowFont(this.comboBox1.Text.ToString());
DrowInfo(this.comboBox1.Text.ToString());
DrowPic(this.comboBox1.Text.ToString());
}
        private void DrowFont(string str)
{
using(Graphics GrapFont = this.panel1.CreateGraphics())
{
GrapFont.Clear(Color.SeaShell);
Pen p = new Pen(Color.Blue, 2.0f);
Font f = new Font("华文新魏", 12, FontStyle.Regular);
Brush b = new SolidBrush(Color.Blue);
GrapFont.DrawString("『" + str + "』"+"产品销售走势", f, b, 4.0f, 5.0f);
}
}
private void DrowInfo(string str)
{
Graphics g = this.groupBox2.CreateGraphics(); //创建Graphics对象
g.Clear(Color.SeaShell); //设置背景颜色
Brush b = new SolidBrush(Color.Blue); //创建Brush对象
Font f = new Font("Arial", 9, FontStyle.Regular); //设置Font对象
using (sqlAda = new SqlDataAdapter("select * from tb_merchandise where t_name='" + str + "' order by t_date", con))
{
DataSet ds = new DataSet(); //创建DataSet对象
sqlAda.Fill(ds, "tb_09"); //Fill方法填充对象
g.DrawString("月份: " + "价格", f, b, 10.0f, 25.0f); //绘制标题
for (int i = 0; i < ds.Tables[0].Rows.Count; i++) //绘制月份及相应的产品价格
{
int month = Convert.ToDateTime(ds.Tables[0].Rows[i][2].ToString()).Month;//获取月份
if (month >= 10)
{
//绘制月份及价格
g.DrawString(month + "月: " + "『" + ds.Tables[0].Rows[i][3].ToString() + " 』", f, b, 10.0f, (i + 2) * 25.0f);
}
else
{
g.DrawString("0" + month + "月: " + "『" + ds.Tables[0].Rows[i][3].ToString() + " 』", f, b, 10.0f, (i + 2) * 25.0f);
}
}
}
}
   private void DrowPic(string str)
{
int MaxValue, MinValue; //声明变量记录最大值和最小值
using (cmd = new SqlCommand("select Max(t_price) from tb_merchandise where t_name='" + str + "'", con))
{
con.Open(); //打开数据库连接
MaxValue = Convert.ToInt16(cmd.ExecuteScalar()); //获取最大值
con.Close(); //关闭数据库连接
}
using (cmd = new SqlCommand("select Min(t_price) from tb_merchandise where t_name='" + str + "'", con))
{
con.Open(); //打开数据库连接
MinValue = Convert.ToInt16(cmd.ExecuteScalar()); //获取最小值
con.Close(); //关闭数据库连接
}
Graphics g = this.groupBox1.CreateGraphics(); //创建Graphics对象
g.Clear(Color.SeaShell); //设置背景
Brush b = new SolidBrush(Color.Blue); //创建Brush对象
Font f = new Font("Arial", 9, FontStyle.Regular); //创建Font对象
Pen p = new Pen(b); //创建Pen对象
using (sqlAda = new SqlDataAdapter("select * from tb_merchandise where t_name='" + str + "' order by t_date", con))
{
ds = new DataSet(); //实例化DataSet对象
sqlAda.Fill(ds, "t_date"); //Fill方法填充对象
int M = MaxValue / 50 + 1; //最大值
int N = MinValue / 50; //最小值
int T = N;
for (int i = 0; i <= M - N; i++)
{
g.DrawString(Convert.ToString(T * 50), f, b, 0, 190 - 30 * i);
g.DrawLine(p, 30, 200 - 30 * i, 260, 200 - 30 * i);
T++;
}
int Num = ds.Tables[0].Rows.Count;
int[] Values = new int[Num];
for (int C = 0; C < Num; C++)
{
Values[C] = Convert.ToInt32(ds.Tables[0].Rows[C][3].ToString());
g.DrawString(Convert.ToDateTime(ds.Tables[0].Rows[C][2].ToString()).Month + "月", f, b, 30 * (C + 1) - 10, 15);
g.DrawLine(p, 30 * (C + 1), 200, 30 * (C + 1), 30);
}
Point[] P = new Point[Num];
for (int i = 0; i < Num; i++)
{
P[i].X = 30 * (i + 1);
P[i].Y = 290 - Convert.ToInt32(Values[i] / 50f * 30);
}
g.DrawLines(p, P);
}
}

C#利用折线图分析产品销售走势的更多相关文章

  1. 利用火焰图分析ceph pg分布

    前言 性能优化大神Brendan Gregg发明了火焰图来定位性能问题,通过图表就可以发现问题出在哪里,通过svg矢量图来查看性能卡在哪个点,哪个操作占用的资源最多 在查看了原始数据后,这个分析的原理 ...

  2. 利用JFreeChart生成折线图 (4) (转自 JSP开发技术大全)

    利用JFreeChart生成折线图 (4) (转自 JSP开发技术大全) 14.4 利用JFreeChart生成折线图 通过JFreeChart插件,既可以生成普通效果的折线图,也可以生成3D效果的折 ...

  3. excel制作折线图太麻烦?试试这些折线图在线生成工具

    折线图是以折线的上升或下降来表示统计数量的增减变化的统计图,叫作折线统计图.用折线的起伏表示数据的增减变化情况,不仅可以表示数量的多少,而且可以反映数据的增减变化情况.并且折线图也是目前最方便的一种统 ...

  4. ajax实现highchart与数据库数据结合完整案例分析(三)---柱状折线图

    作者原创,未经博主允许,不可转载 在前面分析和讲解了用java代码分别实现饼状图和折线图,在工作当中,也会遇到很多用ajax进行异步请求 实现highchart. 先展示一下实现的效果图: 用ajax ...

  5. java代码实现highchart与数据库数据结合完整案例分析(二)---折线图

    作者原创:未经博主允许不许转载 在上一篇的博客中,展示和分析了如何做一个饼状图,有疑问可以参考上一篇博客. 现在分析和展示折线图的绘制和案例分析, 先展示效果图: 与饼状图不同的是,折线图展现更多的数 ...

  6. 利用pandas读取Excel表格,用matplotlib.pyplot绘制直方图、折线图、饼图

    利用pandas读取Excel表格,用matplotlib.pyplot绘制直方图.折线图.饼图 数据: 折线图代码: import  pandas  as pdimport  matplotlib. ...

  7. [canvas]利用canvas绘制自适应的折线图

    前段时间学习了用canvas绘制折现图,且当画布变换大小,折现图会随之变化,现附上代码 <!DOCTYPE html> <html lang="en"> & ...

  8. java利用JFreeChart实现各种数据统计图(柱形图,饼图,折线图)

    最近在做数据挖掘的课程设计,需要将数据分析的结果很直观的展现给用户,这就要用到数据统计图,要实现这个功能就需要几个第三方包了: 1.       jfreechart-1.0.13.jar 2.    ...

  9. 利用python进行折线图,直方图和饼图的绘制

    我用10个国家某年的GDP来绘图,数据如下: labels   = ['USA', 'China', 'India', 'Japan', 'Germany', 'Russia', 'Brazil', ...

  10. SAS 画折线图PROC GPLOT

    虽然最后做成PPT里的图表会被要求用EXCEL画,但当我们只是在分析的过程中,想看看数据的走势,直接在SAS里画会比EXCEL画便捷的多. 修改起来也会更加的简单,,不用不断的修改程序然后刷新EXCE ...

随机推荐

  1. SpringBoot内容协商机制

    1.是什么? SpringBoot内容协商机制是一种实现了内容协商(Content Negotiation)的Web服务器,它可以根据客户端请求的不同,将响应返回给客户端. 在传统的Web服务器中,如 ...

  2. Java使用线程池和缓存提高接口QPS

    1.什么是QPS? QPS:Queries Per Second意思是"每秒查询率",是一台服务器每秒可以相应的查询次数,是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标 ...

  3. 如何将Swagger接口导入ApiFox

    先按照如下图操作 在apifox创建一个新项目,点击项目 点击导入数据(可以选择手动或者自动) 复制刚才的url,然后立即导入,保存

  4. 设置ElementUI的el-table组件表格内容居中

    方式一:比较麻烦 // 在每一个el-table-column中添加align='center'属性 <el-table-column prop='createTime' label='创建时间 ...

  5. Diffusion Model扩散模型

    1.扩散模型基本原理: 扩散模型包括两个步骤: 固定的(或预设的)前向扩散过程q:该过程会逐渐将高斯噪声添加到图像中,直到最终得到纯噪声. 2.可训练的反向去噪扩散过程pθ:训练一个神经网络,从纯噪音 ...

  6. Socket.D 基于消息的响应式应用层网络协议

    首先根据 Socket.D 官网的副标题,Socket.D 的自我定义是: 基于事件和语义消息流的网络应用协议. 官网定义的特点是: 基于事件,每个消息都可事件路由 所谓语义,通过元信息进行语义描述 ...

  7. 浅谈webview与js交互

    浅谈下webview与js的交互,项目中因为需要获取页面中的许多属性,所以用到了这些,让后端在方法中传了过来. 下面的demo是本地的html代码,具体可以仿写,都差不多,注重思想. 1:项目目录 2 ...

  8. 我的大数据之路 - 基于HANA构建实时方案的历程

    产品内部前期有一个共识,依据业务要求的时效性来选择技术平台,即: 实时类业务,时效性小于2小时,则使用HANA构建. 离线类业务,时效性大于2小时,则使用大数据平台构建. 经过五月.六月两月的努力,离 ...

  9. CentOS系统中yum的基本用法

    最小化安装系统时,yum可能会因为网卡配置问题,随机启动配置,导致无法使用, 在shell里面输入:yum --help ,结果显示 yum 已经正常安装了!!到底是哪里出了问题呢?经过网友的提示,我 ...

  10. 玩转Sermant开发,开发者能力机制解析

    本文分享自华为云社区<开发者能力机制解析,玩转Sermant开发>,作者:华为云开源 . 前言: 在<Sermant框架下的服务治理插件快速开发及使用指南>中带大家一起体验了S ...