图形界面

数据

查询效果

代码

   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. Critical error detected c0000374

    我发现出现上述错误是 free 两次内存 float* dd=new float[2]; delete[] dd; delete[] dd;

  2. 生成式AI:未来的发展方向是什么?

    生成式AI的问世标志着人工智能领域迎来了一个全新时代的开启.今年,ChatGPT的面世引起了广泛的热议和关注,许多人认为这标志着人工智能领域进入了一个大规模探索的时代.然而,事实上,这只是生成式AI发 ...

  3. VsCode运行与freopen与快读

    运行 g++ -o a a.cpp && ./a g++ b.cpp -o b && ./b g++ c.cpp -o c && ./c freopen ...

  4. Java操作Word修订功能:启用、接受、拒绝、获取修订

    Word的修订功能是一种在文档中进行编辑和审阅的功能.它允许多个用户对同一文档进行修改并跟踪这些修改,以便进行审查和接受或拒绝修改.修订功能通常用于团队合作.专业编辑和文件审查等场景. 本文将从以下几 ...

  5. 强!推荐一款自动化神器Autolt:不再重复工作

    随着互联网不断发展,它给我们带来便利的同时,也带来了枯燥.重复.机械的重复工作.今天,我要和大家分享一款老牌实用的自动化工具:AutoIt,它能够让你告别繁琐的重复性工作,提高工作效率. 这里透露一下 ...

  6. ElasticSearch之cat component templates API

    命令样例如下: curl -X GET "https://localhost:9200/_cat/component_templates?v=true&pretty" -- ...

  7. 【OpenCV】在MacOS上源码编译OpenCV

    前言 在做视觉任务时,我们经常会用到开源视觉库OpenCV,OpenCV是一个基于Apache2.0许可(开源)发行的跨平台计算机视觉和机器学习软件库,它具有C++,Python,Java和MATLA ...

  8. UE5: 探究Actor Tick的注册与执行

    1. 前情提要 因工作需要,有在编辑器模式下执行Actor的Tick函数的需求.经过查阅资料,了解到重载Actor::ShouldTickIfViewportOnly函数可以实现在编辑器视口下也可以执 ...

  9. 在Docker上面安装/启动、运行、挂载MySQL5.7

    下载文档请看:https://hub.docker.com/r/mysql/mysql-server 一.下载镜像 执行命令: docker pull mysql/mysql-server:5.7 查 ...

  10. Flink实时处理入门

    Flink实时处理入门 1.Flink框架介绍 Flink 诞生于欧洲的一个大数据研究项目 StratoSphere.它是由 3 所地处柏林的大学和欧洲其他一 些大学在 2010~2014 年共同进行 ...