2021-06-20 毕业设计——全国居民用电数据可视化(一)

全国居民用电数据可视化(一)

  本文章主要针对数据的获取,以Excel文件的形式存储,随后利用java语言来进行编译,使用到的编译软件为IntelliJ IDEA。当编译器遍历完Excel文件中的数据后,根据自己的需求将文件中有用的数据信息存储在数据库,这里使用到的数据库软件为MySQL。
  在这里,以全国的各个省份,自治区以及直辖市为例。
  首先,在某网站中下载数据,以Excel文档的形式保存下来,文件的后缀名为.xls。为了后面编译器遍历方便,文件的命名都为xx合计居民用电量.xls(其中,xx为全国的某个省份、自治区或者直辖市,例如,上海合计居民用电量.xls)。当数据下载完成后,便利用编译器进行数据的读取。
用电表格数据案例
  随后在MySQL中创建TABLE,命名为china_province_data,主要是为了存储中国各个省份,自治区以及直辖市从2012年至2020年总居民用电量(按照年份)。表结构如下图所示:

类型是否为空是否为主键默认值
cpd_idVARCHAR(2)
cpd_nameVARCHAR(20)
cpd_dateDATE
cpd_dataDOUBLE(10,2)

注:
  cpd_id指各个省份(其中也包括自治区,直辖市)的排序,不同的地方排序是不一样的,主要用以区分不同的地区,例如上海的cpd_id为1;
  cpd_name指各个省份(其中也包括自治区,直辖市)的具体名称,例如上海,浙江省,内蒙古自治区;
  cpd_date指具体的某个地区的某一年份,例如2013-12-31,由此便可清楚了解该地区在这一年的居民用电负荷数据;
  cpd_data指具体的某个地区的某一年份的具体居民用电负荷数据,单位是万千瓦时。
  在用Java编译的过程中需要下载一个jar包(Apache POI),随后利用java的io流读取文件,打开工作表Sheet,首先是读行,然后读列,其中行和列都是从0开始读取的。
  jar包的下载网站链接: link.
  以下代码为Java语言来读取Excel文件中的数据,获取全国各个省份,自治区以及直辖市2012年到2020年的居民用电负荷数据,创建的数据库表格(china_province_data)。
  先对文件数据以字节的形式进行读取操作如读取图片视频等,即 FileInputStream流被称为文件字节输入流。对该字节流建立缓冲区,即BufferInputStream为缓冲字节流。导入jar包,即Apache POI提供给API给Java方程式对Excel文件内的内容进行读取。对读取得到的文件创建一个工作簿,随后通过序号获取得到sheet,并且获取得到最后的行的索引,当没有行或者只有一行的时候返回0。每当遍历一个Excel文件(不同的省份),则实体类china_province_data中province_id加1并且将其输入至该实体类中,同时每个省份的名字也输入至该实体类中。最后,通过序号索引获取得到指定的行,从第2行开始遍历得到每一行,目的是为了去掉表头等无用的数据,如果此行为null,则跳出该循环;当此行不为null的时候,遍历每一行的单元格,并且对数据进行筛选,选出该省份、自治区以及直辖市的年份以及居民用电负荷数据并输入至该实力类中即可。

//若非目录(即文件),则打印
if (!f.isDirectory()) {
	try {
		// FileInputStream流被称为文件字节输入流,对文件数据以字节的形式进行读取操作如读取图片视频等
		FileInputStream fileInputStream = new FileInputStream(f);
		// BufferInputStream缓冲字节流
		BufferedInputStream bufferedInputStream = new BufferedInputStream(fileInputStream);
		// Apache POI提供给API给Java方程式对Excel文件内的内容进行读取
		POIFSFileSystem fileSystem = new POIFSFileSystem(bufferedInputStream);
		// 创建一个工作簿
		HSSFWorkbook workbook = new HSSFWorkbook(fileSystem);
		// 通过序号获取得到sheet
		HSSFSheet sheet = workbook.getSheetAt(0);
		// 获取得到最后的行的索引,没有行或者只有一行的时候返回0
		int lastRowIndex = sheet.getLastRowNum();
		//打印每一个excel文件中的行数
		province_id++;
		//将每个省份的编号输入至china_province_data实体类中
        chinaProvinceData.setCpd_id(String.valueOf(province_id));
		//将每个省份的名字输入至china_province_data实体类中
        chinaProvinceData.setCpd_name(f.toString().substring(35, 37));
		// 遍历得到每一行
		for (int i = 2; i <= lastRowIndex; i++) {
		// 通过序号索引获取得到指定的行
		HSSFRow row = sheet.getRow(i);
		if (row == null)
			break;
		// 获取得到该行不为空的单元格
		short lastCellNum = row.getLastCellNum();
		// 遍历得到该行的每一个单元格
		String cellValue_date = row.getCell(1).getStringCellValue();
		chinaProvinceData.setCpd_date(cellValue_date);
		String cellValue_data = row.getCell(2).getStringCellValue();
        chinaProvinceData.setCpd_data(Double.valueOf(cellValue_data));
		System.out.println(chinaProvinceData);
        chinaProvinceDataDao.insertChinaProvinceData(chinaProvinceData);
	}
	System.out.println();
} catch (FileNotFoundException e) {
	e.printStackTrace();
} catch (IOException e) {
	e.printStackTrace();
}

  遍历的结果为(以上海为例遍历得到的部分结果示例):
示例
  数据库的结果为(以上海为例遍历得到的部分结果示例):
数据库结果
  下一期学习记录为利用Apache Echarts实现全国数据的可视化。

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
一、本课题的目的和意义 目前我国的信息数字化工作也进入一个全新发展时期,特别是高校的信息化建设已进入了全面的发展阶段,诸多高校充分地认识到,信息化建设己经成为了高校提高自身管理水平、提升综合竞争实力的重要手段。学校作为一个教育单位,成绩管理是学校日常管理不可缺少的部分,这就需要有一个能够提供这类服务的工具,因此课程成绩管理系统的开发就成为了必然。现在我国的大部分学校的成绩管理水平还停留在纸介质的基础上,这样的机制已经不能适应时代的发展,因为它浪费了许多人力和物力,在信息时代这种传统的管理方法必然被计算机为基础的信息管理所取代。同时,因特网的出现和发展,使信息交流进入到一个崭新的历史时期,它打破了时空的障碍,使生活在不同国度的人们可共享网络信息资源,进而极大地促进全球经济的发展。 随着学生人数的增加,对于学生的信息管理也越来越复杂,要求也越来越高,因此需要一个全面、详细的课程成绩管理系统,以便完成对学生成绩信息的管理。 课程成绩管理系统,可以用集中的数据库将与人力资源管理相关的信息全面、有机地联系起来,有效地减少了信息更新和查找中的重复劳动,保证了信息的相容性,从而大大地提高了工作效率,还能使原来不可能提供的分析报告成了可能。在采用和实施课程成绩管理系统之后,就会将依赖于人的过程改为依赖于计算机系统的过程。学校管理人员只要获取了相应的权限,就可以随时进入系统,直接查阅相应的信息。 采用和实施学生课程成绩管理系统不仅仅是为了提高工作效率。同时在使用课程成绩管理系统后,学校相关领导可以较为全面、准确的了解到同学们的综合信息,然后方便更具各种信息对学校的管理做出各种决策。 二、课题的国内外开发动态 人类已进入21世纪,科学技术突飞猛进,经济知识和信息产业初见端倪,特别是信息技术和网络技术的迅速发展和广泛应用,对社会的政治、经济、军事、文化等领域产生越来越深刻的影响,也正在改变人们的工作、生活学习、交流方式。信息的获取、处理、交流和应用能力,已经成为人们最重要的能力之一。在不久的将来知识经济将占世界经济发展的主导地位,国家综合国力和国际竞争能力越来越取决于教育发展,科学技术和知识创新的水平,教育在经济和社会的发展过程中将呈现出越来越突出的重要作用。课程成绩管理系统是一个教育单位不可缺少的部分,它的内容对于学校的决策者和管理者来说都至关重要,所以课程成绩管理系统应该能够为用户提供充足的信息和快捷的查询手段。 三、课题的基本内容 课程成绩管理系统作为一款教学管理工作的系统,它将复杂的工作便捷化、高效化。本系统按功能分为以下几个模块: (1)基础数据的维护模块:实现最基本的数据信息维护,其中包括对系部信息、班级信息、课程信息、教师信息、学生信息的维护。 (2)班级课程设置模块:实现对班级所要上的课程进行设置功能。 (3)班级单科成绩录入模块:实现按班级录入每学期、每一课程的学生各类成绩的功能。 (4)单个学生全部成绩录入模块:实现可能由于某种原因,需要按单个学生全部各类成绩输入的功能。 (5)单科课程全部学生成绩录入模块:实现按课程录入选修该课程全部学生各类成绩功能。 (6)个人全部成绩查询,个人单科成绩查询模块:实现按个人信息查询个人的全部成绩,按个人信息和课程信息查看个人的单科成绩的功能。 (7)班级单科成绩查询,班级全部成绩查询模块:实现按班级查询单科成绩和所有已考成绩的功能。 (8)按课程查询成绩模块:实现按课程查询选修该门课程所有学生的成绩功能。 (9)成绩修改模块:实现按学号和课程号修改学生的成绩的功能。 (10)重修处理模块:实现对需要重修或者清考的学生名单的查询功能。 (11)打印班级成绩表模块:实现按班级打印每学期所有成绩表的功能。 (12)打印个人成绩通知单模块:实现打印每个人每学期所有成绩的通知单的功能。 (13)打印班级花名册模块:实现打印班级花名册的功能。 (14)用户管理模块:实现对系统用户的经行添加、修改、删除的功能。 (15)修改个人登录信息模块:实现修改个人的登录密码的功能。 (16)查询个人信息模块:实现教师或者查看自身信息的功能。 (17)查询个人课程模块:实现教师或者学生查看自身所教或者所学课程的功能。 四、拟解决的主要问题 本系统开发的技术难点主要有两个方面:一是业务逻辑的理解;二是数据库逻辑结构的设计。只要在准确理解一个系统的业务逻辑之后才可能开发出适应其应用的应用系统来,并且在系统之间模块的科学划分与结构组织都是在正确理解实际应用中的业务逻辑需求的前提下完成的。 此外、利用SQL 2000建立好关系数据库和建好客户端和服务器之间的连接又是另一个难点。建立良好的数据库要从科学性、安全性、规范性、结构性等各个方面进行考虑。客户端和服务器之间的连接要配置好数据库服务器等。 五、课题设计的实现方案 (

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值