一、需求分析

本次工程的需求:

gaode.xlsx

输入邮编可以查询城市,输入省、市,可以查询到它的下一级的邮编和名称

二、分解功能模块

分解功能的模块:

  • 将 excel 导入到 java 中
  • 将导入的 excel 内容,存储到 hashmap 中
  • 实现 I/O 输入输出流
  • 完成单邮编单城市的查询
  • 对 Excel 的排序进行观察,自造算法并完成代码

三、将 excel 导入到 java 中

1.导入代码

  1. //读取Downloads文件夹gaode.xlsx
  2. FileInputStream in = new FileInputStream(new File("/Users/mac/Downloads/gaode.xlsx"));
  3. Workbook workbook = new XSSFWorkbook(in);
  4. Sheet sheet = workbook.getSheetAt(0);
  5. int rowNum = sheet.getLastRowNum();
  6. for (
  7. int i = 2;
  8. i < rowNum; i++)
  9. {
  10. Row row = sheet.getRow(i);
  11. String name = row.getCell(0).getStringCellValue();
  12. String abcode = row.getCell(1).getStringCellValue();
  13. }

2. 添加 pom.xml 依赖

  1. <dependencies>
  2. <dependency>
  3. <groupId>org.apache.poi</groupId>
  4. <artifactId>poi</artifactId>
  5. <version>4.0.0</version>
  6. </dependency>
  7. <dependency>
  8. <groupId>org.apache.poi</groupId>
  9. <artifactId>poi-ooxml</artifactId>
  10. <version>4.0.0</version>
  11. </dependency>

3. 添加import依赖,如果没有自动出现

  1. import org.apache.poi.ss.usermodel.Row;
  2. import org.apache.poi.ss.usermodel.Sheet;
  3. import org.apache.poi.ss.usermodel.Workbook;
  4. import org.apache.poi.xssf.usermodel.XSSFWorkbook;
  5. import java.io.FileInputStream;
  6. import java.io.File;

四、对Excel 的排序进行观察,自造算法并完成代码

1.观察直辖市的邮编

高德地图的导入 - 图1

仔细观察,我们可以看到四个直辖市的邮编都遵循这样的规律,它们是北京、上海、重庆、天津。以 11,12,31,50 开头。

2.观察特别行政区的邮编

高德地图的导入 - 图2

3.观察浙江省和杭州市的邮编

高德地图的导入 - 图3

4.观察内蒙古自治区的邮编结构

高德地图的导入 - 图4

5.小结

所以我们对邮编分为三种情况:直辖市、特别行政区、省(自治区)

一级行政单位的格式为 XX0000

6.分解邮编

我们可以把6位邮编分为 abcdef,其中 ab为前两位,cd为中间两位,ef为后两位,一级行政单位的格式为 ab0000

6.1 直辖市

直辖市本体为 ab0000,下辖区为 ab0100-ab0199,重庆市例外,有ab0200-ab0299情况。

6.2 特别行政区

特别行政区本体为 ab0000,下辖区为ab0001-ab0099

6.3 省/自治区

本体代码为 ab0000,下辖地级市为 ab0100-ab9900,地级市本体(省会城市为例)为ab0100,下辖区/县/县级市邮编为 ab0101-ab0199

7.字符串的拼接

两个test类

  1. String a = null;
  2. String b = "10";
  3. String c = "01";
  4. String d = "02";
  5. a=b+c+d;
  6. System.out.println(a);
  1. String str = "hello";
  2. char[] ch = str.toCharArray();
  3. String a = String.valueOf(ch[0])+ch[1];
  4. System.out.println(a);

五、对代码进行优化,重写算法和方法