基于Java Swing编写的运费计算系统,主要有两个部分实现:1)初始化数据  2)用swing绘制系统并执行业务逻辑

一、初始化数据

从excel中读取数据,转化为对象(只保存基础数据:序列号、始发站、目的站、省份、100kg以下(元/kg)、100kg以上(元/kg)、到货(元/kg)、自提(元/kg)、补贴里程、公路里程、单价(元/吨公里))并保存到map(key为“出发地-目的地城市-省份”,value为AirFreight对象)中 表名和sheet名都是在配置文件中配置的(mango.properties),行和列及特殊字段也是在配置文件中配置的目的地和省份存在cityProvinceList中

 /*** 读取空运数据*/private static void readAirExcel(String fileName) {boolean isE2007 = false; // 判断是否是excel2007格式if (fileName.endsWith("xlsx")) {isE2007 = true;}Workbook wb = null;try {InputStream input = new FileInputStream(new File(UrlUtil.getRootUrl()+ "data/" + fileName)); // 建立输入流// 根据文件格式(2003或者2007)来初始化if (isE2007) {wb = new XSSFWorkbook(input);} else {wb = new HSSFWorkbook(input);}Sheet sheet = wb.getSheet(FreightConst.AIRSHEETNAME); // 获得指定名称的表单// testSheet(sheet);// 从第三行开始取值(从0开始)for (int j = FreightConst.ROWNUMBER; j < sheet.getPhysicalNumberOfRows(); j++) {Row row = sheet.getRow(j);AirFreight af = new AirFreight();af.setId((int) row.getCell(FreightConst.ID).getNumericCellValue());af.setOriginStation(row.getCell(FreightConst.ORIGINSTATION).getStringCellValue());af.setDestinationStation(row.getCell(FreightConst.DESTINATIONSTATION).getStringCellValue());af.setProvince(row.getCell(FreightConst.PROVINCE).getStringCellValue());af.setUnitPriceF(row.getCell(FreightConst.UNITPRICEF).getNumericCellValue());af.setUnitPriceT(row.getCell(FreightConst.UNITPRICET).getNumericCellValue());af.setUnitPriceDH(row.getCell(FreightConst.UNITPRICEDH).getNumericCellValue());af.setUnitPriceZT(row.getCell(FreightConst.UNITPRICEZT).getNumericCellValue());af.setSubsidyMileage(row.getCell(FreightConst.SUBSIDYMILEAGE).getNumericCellValue());af.setLandMileage(row.getCell(FreightConst.LANDMILEAGE).getNumericCellValue());af.setLandUnitPrice(row.getCell(FreightConst.LANDUNITPRICE).getNumericCellValue());// 将相关信息存入container中, 运费信息AirContainer.airFreightMap.put(af.getOriginStation() + "-"+ af.getDestinationStation() + "-" + af.getProvince(),af);// 目的地// AirContainer.airCityList.add(af.getDestinationStation());// 目的地省份// AirContainer.airProvinceList.add(af.getProvince());// 目的地和省份AirContainer.cityProvinceList.add(af.getDestinationStation()+ "-" + af.getProvince());}// 将目的地和对应的省份对应起来// AirContainer.citySelector();} catch (IOException ex) {ex.printStackTrace();} finally {if (wb != null) {try {wb.close();} catch (IOException e) {e.printStackTrace();}}}}

二、用swing绘制系统并执行业务逻辑

建立FreightSwing,并初始化数据从cityProvinceList中获取城市和省份目的地做成可检索的(清除输入框的内容后键盘输入拼音(全拼)或者汉字点击enter键)用JAutoCompleteComboBox实现,其中包括用pinyin4j实现的中文向拼音的转换及输入拼音或者汉字匹配检索功能根据选择目的地、输入卷烟数量、选择的配送方式进行运费的计算,从map中取出AirFreight中的基础数据进行计算。

public static AirFreight computeFreight(String str, String takeType,String quantity) {double quan = Double.valueOf(quantity);AirFreight af = AirContainer.airFreightMap.get(str);af.setQuantity(quan);af.setTakeType(takeType);af.setFacToAirCost(quan * FreightConst.FACTOAIRF);af.setQuantityT(quan * FreightConst.KGF);double kg = af.getQuantityT();if (kg < 100) {af.setAirFreightCost(kg * af.getUnitPriceF());} else {af.setAirFreightCost(kg * af.getUnitPriceT());}af.setInsuranceRate(FreightConst.INSURANCERATE);af.setInsuranceCost(quan * FreightConst.INSURANCECOSTF);af.setInsurance(af.getInsuranceCost() * af.getInsuranceRate());af.setPackingCost(quan * FreightConst.PACKINGCOSTF);if ("自提".equals(takeType)) {af.setTakeCost(af.getUnitPriceZT() * kg);af.setSendCost(0);} else {if (str.contains(FreightConst.DESTINATION)) {af.setSendCost(af.getUnitPriceDH() * kg+ FreightConst.DESTINATIONF);} else {af.setSendCost(af.getUnitPriceDH() * kg);}af.setTakeCost(0);}af.setAirTotalCost(FormatUtil.formatDouble(af.getFacToAirCost()+ af.getAirFreightCost() + af.getInsurance()+ af.getPackingCost() + af.getTakeCost() + af.getSendCost()));// 公路数据af.setTotalMilage(af.getSubsidyMileage() + af.getLandMileage());af.setLandTotalCost(FormatUtil.formatDouble(FreightConst.LANDCOSTF/ FreightConst.LANDCOSTT * af.getTotalMilage()* af.getLandUnitPrice()));af.setMarginCost(FormatUtil.formatDouble(af.getAirTotalCost()- af.getLandTotalCost()));return af;}

三、实现效果

四、代码地址

https://github.com/honghailiang/FreightSystem

基于Java Swing编写的运费计算系统相关推荐

  1. java包裹邮费计算_GitHub - honghailiang/FreightSystem: 基于Java Swing编写的简易运费计算工具...

    FreightSystem 基于java Swing编写的运费计算系统 初始化数据 从excel中读取数据,转化为对象(只保存基础数据:序列号.始发站.目的站.省份.100kg以下(元/kg).100 ...

  2. 基于Java Swing编写的简易运费计算工具

    两年前给媳妇儿做的一个基于Java Swing编写的简易运费计算工具,现开源,关键是思路(https://github.com/honghailiang/FreightSystem).主要有两个部分实 ...

  3. 基于java Swing编写扫雷游戏设计实现(已调试)

    免费领取源码+参考 [javaswing扫雷游戏0806] 博主介绍:

  4. 【java毕业设计】基于java+swing+Eclipse的推箱子游戏设计与实现(毕业论文+程序源码)——推箱子游戏

    基于java+swing+Eclipse的推箱子游戏设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于java+swing+Eclipse的推箱子游戏设计与实现,文章末尾附有本毕业设计的论文 ...

  5. 【java毕业设计】基于java+swing+Eclipse的俄罗斯方块游戏GUI设计与实现(毕业论文+程序源码)——俄罗斯方块游戏

    基于java+swing+Eclipse的俄罗斯方块游戏GUI设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于java+swing+Eclipse的俄罗斯方块游戏GUI设计与实现,文章末尾 ...

  6. 【java毕业设计】基于java+swing+GUI的连连看游戏设计与实现(毕业论文+程序源码)——连连看游戏

    基于java+swing+GUI的连连看游戏设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于java+swing+GUI的连连看游戏设计与实现,文章末尾附有本毕业设计的论文和源码下载地址哦 ...

  7. 【java毕业设计】基于java+swing的模拟写字板设计与实现(毕业论文+程序源码)——模拟写字板

    基于java+swing的模拟写字板设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于java+swing的模拟写字板设计与实现,文章末尾附有本毕业设计的论文和源码下载地址哦.需要下载开题报 ...

  8. Java实现注册登录系统——基于Java Swing实现

    技术简介:Java Swing 介绍 Swing 是一个为Java设计的GUI工具包. Swing是JAVA基础类的一部分. Swing包括了图形用户界面(GUI)器件如:文本框,按钮,分隔窗格和表. ...

  9. java swing登录系统_Java实现注册登录系统——基于Java Swing实现

    技术简介:Java Swing 介绍 Swing 是一个为Java设计的GUI工具包. Swing是JAVA基础类的一部分. Swing包括了图形用户界面(GUI)器件如:文本框,按钮,分隔窗格和表. ...

最新文章

  1. 【每日DP】day12、P1063 能量项链(区间DP又一模板,震惊,只需要4行代码?)难度⭐⭐⭐
  2. 列出AD用户Lockout 位置
  3. 骗子防不胜防,我们该如何安全上网?
  4. Notification(二)——PendingIntent的flag导致数据同样的问题
  5. 北航和哈佛研发软体机器人,抓住各类物体!
  6. Win11开始菜单没反应怎么办 Win11开始菜单点了没反应解决方法
  7. SP104 Highways (矩阵树,高斯消元)
  8. 33.MySQL高可用架构
  9. 企业外贸网站建设的要求及注意事项
  10. OPNsense用户手册-初始安装和配置
  11. 手把手教你如何免费把多张图片合并为PDF文件,一看就懂。
  12. plist中的文件读取
  13. TSL1401 CCD传感器驱动
  14. 老无所依nbsp;(聊后版)
  15. tensorflow下基于DNN实现实时分辨人脸微表情
  16. Xorg Drivers
  17. java的时间日期类_Java基础学习:日期时间类
  18. PLSQL13,登录进去的时候有个弹窗,选择后同时勾选了dont show this message again,下次不再显示了,但是又想让他继续提示怎么办?
  19. LoadRunner参数化
  20. Cookie跨域setDomain

热门文章

  1. 计算机教师道德模范事迹材料,道德模范教师事迹材料:青春无悔,追求永恒
  2. C#(同步调用、异步调用、异步回调)
  3. http://edelivery.oracle.com/?ARU_LANG=ZHS
  4. 【数据挖掘】使用移动平均预测道琼斯、纳斯达克、标准普尔指数——Python中的基本数据操作和可视化
  5. 统计1~N之间所有立方数的个数并输出这个数目(Java编写)
  6. CAN通信(一)——认识CAN总线
  7. 2014年国内餐饮O2O大事件
  8. 【计算机毕设】毕设题分析及设计
  9. 海外抖音tiktok怎么做直播?
  10. 【20211008】为什么分布式服务框架越来越火