⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tuipiao.java~1~

📁 航班查询与订票系统 用Java与sqlserver2000来编写一个航班查询与订票系统
💻 JAVA~1~
📖 第 1 页 / 共 2 页
字号:
  }

  private void tuiPiao() {
    String dingdan = jtfDingDan.getText().trim();
    if (dingdan.length() == 0) {
      JOptionPane.showMessageDialog(null, "订单号不能为空",
                                    "错误信息", JOptionPane.ERROR_MESSAGE);
      return;
    }

    String id = jtfID.getText().trim();
    if (id.length() == 0) {
      JOptionPane.showMessageDialog(null, "身份证号不能为空",
                                    "错误信息", JOptionPane.ERROR_MESSAGE);
      return;
    }

    boolean isValid = getClientInfo(dingdan, id);

    if (isValid == false) {
      rewrite();
      return;
    }

    else {
      String childTuiPiaoShu = jtfChildTuiPiaoShu.getText().trim();
      String adultTuiPiaoShu = jtfAdultTuiPiaoShu.getText().trim();

      int cTuiPiaoShu = Integer.parseInt(childTuiPiaoShu);
      int aTuiPiaoShu = Integer.parseInt(adultTuiPiaoShu);

      if (cTuiPiaoShu == 0 && aTuiPiaoShu == 0) {
        JOptionPane.showMessageDialog(null, "请输入退票数",
                                      "错误信息", JOptionPane.ERROR_MESSAGE);
        return;
      }

      if (cTuiPiaoShu != 0 && cTuiPiaoShu > Integer.parseInt(childNum)) {
        JOptionPane.showMessageDialog(null, "退票数大于已定票数,请按\"查询\"按钮查看信息",
                                      "错误信息", JOptionPane.ERROR_MESSAGE);
        return;
      }

      if (aTuiPiaoShu != 0 && aTuiPiaoShu > Integer.parseInt(adultNum)) {
        JOptionPane.showMessageDialog(null, "退票数大于已定票数,请按\"查询\"按钮查看信息",
                                      "错误信息", JOptionPane.ERROR_MESSAGE);
        return;
      }

      operationForTuiPiao(cTuiPiaoShu, aTuiPiaoShu);
    }

  }

  private void operationForTuiPiao(int childTuiPiaoShu, int adultTuiPiaoShu) {
    int newChildNum = Integer.parseInt(childNum) - childTuiPiaoShu;
    int newAdultNum = Integer.parseInt(adultNum) - adultTuiPiaoShu;
    float tuiPiaoCost = caculateTuiPiaoCost(childTuiPiaoShu, adultTuiPiaoShu);
    float newCost = Float.parseFloat(cost) - tuiPiaoCost;

    try {
      RandomAccessFile raf = new RandomAccessFile(file, "rw");

      raf.seek(this.locationOfRecord);

      raf.writeUTF(dingdanNum);
      raf.writeUTF(name);
      raf.writeUTF(idNum);
      raf.writeUTF(flight1);
      raf.writeUTF(flight2);
      raf.writeUTF(ticketType);

      leaveTime1 = leaveTime1.substring(0, 4) + leaveTime1.substring(5, 7) +
          leaveTime1.substring(8, 10);
      if (leaveTime2.length() != 0)
        leaveTime2 = leaveTime2.substring(0, 4) + leaveTime2.substring(5, 7) +
            leaveTime2.substring(8, 10);

      raf.writeUTF(leaveTime1);
      raf.writeUTF(leaveTime2);
      raf.writeUTF(String.valueOf(newChildNum));
      raf.writeUTF(String.valueOf(newAdultNum));
      raf.writeUTF(String.valueOf(newCost));

      int totalTuiPiaoShu = childTuiPiaoShu + adultTuiPiaoShu;

      seatInfo.tuiPiao(flight1, leaveTime1, totalTuiPiaoShu);

      if (flight2.length() != 0)
        seatInfo.tuiPiao(flight2, leaveTime2, totalTuiPiaoShu);

      if (newChildNum == 0 && newAdultNum == 0)
        JOptionPane.showMessageDialog(null,
                                      "恭喜你退票成功!" + "\n" + "该订单号已作废!" + "\n" +
                                      "你将获得" + tuiPiaoCost +
                                      "的退票钱" + "\n" + "欢迎你再次选择我们!",
                                      "退票成功", JOptionPane.INFORMATION_MESSAGE);
      else
        JOptionPane.showMessageDialog(null,
                                      "恭喜你退票成功!" + "\n" + "你现在剩余" + newChildNum +
                                      "张儿童票和" + newAdultNum + "张成人票" + "\n" +
                                      "你将获得" + tuiPiaoCost +
                                      "的退票钱" + "\n" + "欢迎你再次选择我们!", "退票成功",
                                      JOptionPane.INFORMATION_MESSAGE);
    }
    catch (Exception e) {
      e.printStackTrace();
    }
  }

  private float caculateTuiPiaoCost(int childTuiPiaoShu, int adultTuiPiaoShu) {
    float tuiPiaoCost = 0;

    try {
      String sqlString =
          "select childFare,adultFare from flight where flight='" + flight1 +
          "'";
      ResultSet rs = sqlBean.executeQuery(sqlString);

      float childFare1 = 0;
      float adultFare1 = 0;
      while (rs.next()) {
        childFare1 = rs.getFloat(1);
        adultFare1 = rs.getFloat(2);
      }

      float childFare2 = 0;
      float adultFare2 = 0;
      if (flight2.length() != 0) {
        String sqlString2 =
            "select childFare,adultFare from flight where flight='" + flight2 +
            "'";
        ResultSet rs2 = sqlBean.executeQuery(sqlString2);

        while (rs2.next()) {
          childFare2 = rs2.getFloat(1);
          adultFare2 = rs2.getFloat(2);
        }
      }

      if (flight2.length() == 0) {
        tuiPiaoCost = (childFare1 * childTuiPiaoShu +
                       adultFare1 * adultTuiPiaoShu) * (float) 0.7;
      }
      else {
        tuiPiaoCost = ( (childFare1 + childFare2) * childTuiPiaoShu +
                       (adultFare1 + adultFare2) * adultTuiPiaoShu) *
            (float) 0.7;
      }
    }
    catch (Exception e) {
      e.printStackTrace();
    }

    return tuiPiaoCost;
  }

  private boolean getClientInfo(String dingdan, String id) {
    RandomAccessFile raf = null;

    try {
      raf = new RandomAccessFile(file, "rw");

      boolean isDingDanExist = false;
      boolean isIDRight = false;

      long tempLocation = 0;

      try {

        while (raf.getFilePointer() < raf.length()) {
          tempLocation = raf.getFilePointer();

          dingdanNum = raf.readUTF();
          name = raf.readUTF();
          idNum = raf.readUTF();
          flight1 = raf.readUTF();
          flight2 = raf.readUTF();
          ticketType = raf.readUTF();
          leaveTime1 = raf.readUTF();
          leaveTime2 = raf.readUTF();
          childNum = raf.readUTF();
          adultNum = raf.readUTF();
          cost = raf.readUTF();

          if (dingdanNum.equals(dingdan)) {
            isDingDanExist = true;

            if (idNum.equals(id)) {
              isIDRight = true;
              this.locationOfRecord = tempLocation;
              break;
            }

            else {
              isIDRight = false;
              break;
            }
          }
        }
      }
      catch (EOFException e) {
        //Break the loop
      }

      boolean isValid = canReturn(leaveTime1);

      if (!isValid) {
        JOptionPane.showMessageDialog(null, "该票已经过期!不能再退!",
                                      "错误信息", JOptionPane.ERROR_MESSAGE);
        return false;
      }

      if (isDingDanExist == true && isIDRight == true) {
        String year = "";
        String month = "";
        String day = "";

        if (leaveTime1.length() != 0) {
          year = leaveTime1.substring(0, 4);
          month = leaveTime1.substring(4, 6);
          day = leaveTime1.substring(6, 8);

          leaveTime1 = year.concat("-").concat(month).concat("-").concat(day);
        }

        if (leaveTime2.length() != 0) {
          year = leaveTime2.substring(0, 4);
          month = leaveTime2.substring(4, 6);
          day = leaveTime2.substring(6, 8);

          leaveTime2 = year.concat("-").concat(month).concat("-").concat(day);
        }

        if (Integer.parseInt(childNum) == 0 && Integer.parseInt(adultNum) == 0) {
          JOptionPane.showMessageDialog(null, "该订单号已经无效!",
                                        "错误信息", JOptionPane.ERROR_MESSAGE);
          return false;
        }

        return true;

      }

      if (isDingDanExist == true && isIDRight == false) {
        JOptionPane.showMessageDialog(null, "身份证号不正确", "错误信息",
                                      JOptionPane.ERROR_MESSAGE);
        return false;
      }

      if (isDingDanExist == false) {
        JOptionPane.showMessageDialog(null, "订单号不存在", "错误信息",
                                      JOptionPane.ERROR_MESSAGE);
        return false;
      }
    }
    catch (Exception e) {
      e.printStackTrace();
    }
    finally {
      try {
        raf.close();
      }
      catch (Exception e) {
        e.printStackTrace();
      }
    }

    return false;
  }

  private boolean canReturn(String time) {
    String year = time.substring(0, 4);
    String month = time.substring(4, 6);
    String day = time.substring(6, 8);

    int y = Integer.parseInt(year);
    int m = Integer.parseInt(month);
    int d = Integer.parseInt(day);

    //Get the present time
    Calendar cal = Calendar.getInstance();

    cal.setTime(new java.util.Date());

    int py = cal.get(Calendar.YEAR);
    int pm = cal.get(Calendar.MONTH) + 1;
    int pd = cal.get(Calendar.DAY_OF_MONTH);

    if (y == py) {
      if (m < pm)
        return false;
      else if (d < pd)
        return false;
    }

    return true;
  }

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -