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