数组、文件和图表的案例分析与知识梳理

案例分析 同时被 3 个专栏收录
2 篇文章 0 订阅
2 篇文章 0 订阅

一、数组

数组是具有类似类型的数据集合。通过使用数组,可以存储大量类似类型的
数据。数组是 Java 提供的一种数据结构,用于处理多个数据。这当然与普通变
量的概念非常不同,普通变量只能存储一个数据。
*如何声明数组

datatype[] ArrayName;
//或者
datatype ArrayName[];

数据引用

int Data[]; //名称为 Data 的 int 类型数组
String Name[]; //名称为 Name 的 String 类型数组

在数组中存储数据可以通过直接初始化数据或将值赋给每个数组索引来完成。如下所示

//声明并初始化数组
int data[] = {1,2,3,4,5,6,10};
//使用数组的索引为其赋值
int Score[] = new int[6];
Score[0] = 3;
Score[1] = 2;
Score[2] = 9;
Score[3] = 8;
Score[4] = 7;
Score[5] = 10;

二、进行对文件的操作

这里将要了解如何执行文件操作,包括读取文本和 excel 文件中的数据,以及如何将处理后的数据存储在文本和 excel 文件中。
读取文件通常是在程序执行相当大的处理时完成的。由于数据量大,不可能存储在数组或普通变量中。针对从文件中读取输入,Java 提供了 IO 库中的几个类。
我们来看个案例大致了解一下读取文本文件的操作:

  • 我们创建一个可以读取文件的小程序:图书信息读取

准备好一个编写有图书信息的文本文件用于读取,文本名自定 添加一个文本为“读取的按钮”,变量名自定

  • 添加一个表,只有一个书名的列,行和你文本中的数据行数一至,这里是10行,用来显示十本书的名字

初步效果如图所示:
编译书籍
我们来看一下代码:
在读取文本文件之前,要做的第一步是使用以下代码从 IO 库引入BufferedReader、File 和FileReader 类:
图书信息读取器
在读取文本文件之前,要做的第一步是使用以下代码从 IO 库引入
BufferedReader、File 和 FileReader 类。
import java.io.BufferedReader; import java.io.File; import java.io.FileReader;
所有这些类都用于处理文本文件操作,包括读写操作。导入类之后,下一步
是在单击按钮时读取文本文件。以下是“Display Data”按钮的事件代码。

 private void DisplayButttonActionPerformed(java.awt.event.ActionEvent evt) {                                               
        // TODO add your handling code here:
        String data;
        FileReader fr;
        BufferedReader br;
        int i = 0;
        try
        {
            fr = new FileReader(new
            File("C:\\Users\\Administrator\\Desktop\\book.txt"));
            br = new BufferedReader(fr);
            data = br.readLine();
            while (data != null)
            {
                tableBook.getModel().setValueAt(data, i, 0);
                data = br.readLine();
                i++;
            }
        } catch (Exception ex)
       {
        }
    }                                              

    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        /* Set the Nimbus look and feel */
        //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
        /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
         * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html 
         */
        try {
            for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                if ("Nimbus".equals(info.getName())) {
                    javax.swing.UIManager.setLookAndFeel(info.getClassName());
                    break;
                }
            }
        } catch (ClassNotFoundException ex) {
            java.util.logging.Logger.getLogger(BookForm.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            java.util.logging.Logger.getLogger(BookForm.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            java.util.logging.Logger.getLogger(BookForm.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
            java.util.logging.Logger.getLogger(BookForm.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        }
        //</editor-fold>

        /* Create and display the form */
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new BookForm().setVisible(true);
            }
        });
    }

编写后点击执行按钮效果如图所示:
显示数据

文件读取涉及到来自 IO 库的 3 个类,分别是 File、FileReader和 BufferedReader 类。fr 是 FileReader 的对象,br 是 BufferedReader 的对象,用于读取文本文件。读取文件的代码就是上面的

 fr = new FileReader(new File("C:\\Users\\dell\\Desktop\\项目文件\\books.txt")); 
                 br = new BufferedReader(fr); 
                 data = br.readLine(); 

这个名为books.txt文件就是我们需要自己编写的书名文件。
读取Excel文件
了解如何读取文本文件后,我们来了解如何
读取excel文件:
读取、创建和写入excel文件将使用一个外部库,即Aphace POI。Apache POI是一个Java API,用于基于 Office Open XML 操作各种文件格式。有了Aphace POI,我们可以在java中读写excel文件,还可以使用 Java 读写 MS Word 和 MS PowerPoint。

这是Aphace POI官网下载链接:
https://poi.apache.org/download.html
下载完后,进入解压目录,必须提取所需目录中的文件。
下图是已解压缩的 Apache POI 文件:
apache poi
安装完成后我们来看一个案例:

准备一个自己备好的Excel文件
添加一个按钮,变量名自定,并修改文本内容为 Read Excel
添加一个表,变量名自定,列名根据你尊卑的Execl表里内容决定
大体如下:
1
这是准备用来读取的Excel文件
2
在设计了应用程序界面之后,要做的第一步是将 Apache POI 添加到项目中。有几个必须添加到项目库中的.jar 文件。以下是必须添加到项目库中的文件
3
添加项目需要右击项目文件,在项目属性窗口 Categories→Libraries→Compile
注意:
这里有些特殊情况,有的人可能没有Libraries这个选项,这里我们需要手动添加
右击项目中的Depebdebcies目录,点击Add Dependecy这个选项,如图所示:
4
照着下面填写添加即可:
Group ID:org.apche.poi
Artifact ID:poi
Version:4.1.2

Group ID
org.apche.poi
Artifact ID:poi-ooxml
Version:4.1.2
手动导入这两个即可

导入完成后,我们来看看代码:
在创建按钮的事件之前,必须使用以下代码导入几个类

在这里插入代码片

import java.io.File;
import java.io.FileInputStream;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
导入这些类之后,下一步是为“Read Excel”按钮创建一个事件,下面是“Read Excel”按钮事件的代码

 private void ReadButtonActionPerformed(java.awt.event.ActionEvent evt) {                                           
        // TODO add your handling code here:
         try{ 
           File file = new File("C:\\Users\\dell\\Desktop\\项目文件\\books.xlsx"); 
           FileInputStream fis = new FileInputStream(file); 
           Workbook wb=new XSSFWorkbook(file); 
           Sheet filesheet=(Sheet)wb.getSheet("Sheet1"); 
            int numrows = filesheet.getLastRowNum()-filesheet.getFirstRowNum(); 
            for(int i=1;i<=numrows;i++){ 
               Row row=filesheet.getRow(i); 
            //获取每列的数据 
             int no=(int)row.getCell(0).getNumericCellValue(); 
             String title=row.getCell(1).getStringCellValue(); 
             String author=row.getCell(2).getStringCellValue(); 
             String publisher=row.getCell(3).getStringCellValue(); 
             int year=(int)row.getCell(4).getNumericCellValue(); 
             int totalpage=(int)row.getCell(5).getNumericCellValue(); 
          //将数据展示到表格中 
             tableBook.getModel().setValueAt(no,(i-1),0); 
             tableBook.getModel().setValueAt(title,(i-1),1); 
             tableBook.getModel().setValueAt(author,(i-1),2); 
             tableBook.getModel().setValueAt(publisher,(i-1),3); 
             tableBook.getModel().setValueAt(year,(i-1),4); 
             tableBook.getModel().setValueAt(totalpage,(i-1),5); 
        } 
     }catch(Exception ex) 
     { 
        
javax.swing.JOptionPane.showMessageDialog(rootPane,ex.toString()); 
    } 
    }

执行按钮后效果如图
5
到这里,我们基本上就能了解如何读取Excel文件了

三、创建图表

我们使用 JFreeChart 来创建图形。

JFreeChart 是一个外部库,它是使用 Java 编程语言开发的,并且是开源的。此库可用于在所有基于 Java 的应用程序上创建 2D 或 3D 图形。
要使用 JFreeChart 库,首先要从以下站点链接下载该库:
http://www.jfree.org/jfreechart/download
6
下载完成后解压到自己所需的目录下,图中是解压后文件的样子:
7
用于创建图形的文件是位于 jfreechart-1.0.1/lib 件夹中的 jfreechart-1.0.1.jar 和 jcommon-1.0.0.jar
8
注意:这两个需要我们创建项目时需要加载的,方法在之前介绍过,这里就不重复声明了,特殊情况需要手动载入的,我在这里给出:
Group ID:jfree
Artifact ID:jfreechart:
Version:1.0.1

Group ID:jfree
Artifact ID:jcommon
Version:1.0.0
我们看一下案例:
1.添加一个表,变量名自定
2.添加一个面板,变量名自定,这个面板将3.被用作显示访问者统计图表的地方
4.添加一个按钮,变量名自定
大体如图所示:
9
将 JFreeChart 添加到项目库之后,下一步是使用以下代码导入几个类

package exceldata1;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.JFreeChart;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.chart.plot.PlotOrientation;
import javax.swing.table.DefaultTableModel;

从上面的代码中可以看到,JFreeChart 有 5 个类将用于创建线性图。这些类ChartPanel 、 ChartFactory 、 JFreeChart 、 DefaultCategoryDataset 和PlotOrientation

以下是“显示统计数据”按钮的事件代码
private void DisplayButtonActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
Integer[][]visitordata={{2004,1500},{2005,1450},{2006,2000},{2007,2050},{2008,2500},{2009,2000},{2010,1600},{2011,3000},{2012,3200},{2013,4000},{2014,3500},{2015,5000},{2016,2300}};
String []title = {“年份”,“访问人数”};
//显示数据到表格中
DefaultTableModel model = new DefaultTableModel();
model.setDataVector(visitordata, title);
tablevisitor.setModel(model);

    //创建访问人数的图表
    DefaultCategoryDataset chart_dataset = new DefaultCategoryDataset();
    for(int i=0;i<12;i++){
      chart_dataset.addValue(visitordata[i][1], "图书部访问人员统计数据", visitordata[i][0]);
    }
    JFreeChart lineChart = ChartFactory.createLineChart("图书馆访问人员统计表图","年份","访问人数",chart_dataset,PlotOrientation.VERTICAL, true,true, false);
    ChartPanel chartpanel = new ChartPanel(lineChart);
    chartpanel.setSize(panelChart.getSize());
    panelChart.removeAll();
    panelChart.add(chartpanel);
    panelChart.validate();
}                                             

执行后结果如图,需先点击显示数据,再点击一下面板位置才能出现图表
10
这就是如何创建图标的基本操作了。
学习到此处完毕~感谢参考!

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

参与评论 您还未登录,请先 登录 后发表或查看评论
©️2022 CSDN 皮肤主题:数字20 设计师:CSDN官方博客 返回首页

打赏作者

⺌北城南笙。

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值