📄 tuipiao.java~1~
字号:
}
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 + -