汽车票售票系统 php,客车网上售票系统(2)

本文介绍了一个在线售票系统的实现,包括车票查询、分页预订、订单提交、付款及退票等功能。核心代码涉及AJAX查询、MyBatis操作数据库进行车票查询、预订、订单创建、座位锁定、订单状态更新以及退票处理。同时,文章指出在业务流程和框架使用上遇到的挑战,并提供了相应的解决方案。项目涉及前端交互、后端处理及数据库操作。
摘要由CSDN通过智能技术生成

一、今日完成任务

车票查询

车票查询分页

预订车票

提交订单

付款、取消订单

退票

二、核心源码:

(1)车票查询:根据出发地、目的地、出发日期查询车票

//查询

$("#searchBtn").click(function(){

//ajax提交后台

$.ajax({

type:"post",

url:"search",

data:{"begin_sta":$("#begin").val(),"end_sta":$("#cf").val(),"start_date":$("#time").val()},

dataType:"json",

success:function(data){

$("#start_y").val(data[0].start);

$("#start_c").val(data[0].count);

$("#start_l").val(data[0].last);

$("#tbody").html("");

$.each(data[1],function(i,item){

var str="

" + item.tnum + ""+item.begin_sta+""+item.end_sta+

"

"+item.start_time+""+item.end_time+""+item.price+""

+item.snum+"

预订";

$("#tbody").append(str);

});

}

});

});

dao

//根据出发地、目的地、出发日期 查票

@Select("select c.*,t.tnum,t.seatnum from carinfo c,traininfo t where c.tid=t.tid and c.begin_sta=#{begin_sta} and c.end_sta=#{end_sta} and start_date=#{start_date}")

public List findByProperty(Carinfo car);

controller

//查票

@RequestMapping(value="/search",produces={"application/json;charset=utf-8"})

@ResponseBody

public String serackCar(Carinfo car,HttpServletRequest request,Page page){

PageHelper.offsetPage(page.getStart(), 5);

List list = carSerivce.findByProperty(car);

System.out.println(list.size());

//总数

PageInfo pageInfo=new PageInfo(list);

int total=(int) pageInfo.getTotal();

page.caculateLast(total);

JSONArray array=new JSONArray();

array.add(page);

array.add(list);

return array.toString();

}

(2)预订车票  查询列车信息显示到预订页面

//点击预订查询列车信息

@Select("select c.*,t.tnum,t.seatnum from carinfo c,traininfo t where c.tid=t.tid and c.cid=#{cid}")

public CarTrain findByCid(int cid);

(3)提交订单     在预订页面点击提交订单,提交订单需要添加一条订单信息,还需锁定座位

//添加订单

@Insert("insert into orderinfo(cid,ucard,urealname,tel,oprice,state,odate,seatnum) values(#{cid},#{ucard},#{urealname},#{tel},#{oprice},#{state},#{odate},#{seatnum})")

public int addOrder(Orderinfo orderinfo);

//座位数减少

@Update("update carinfo set snum=snum-1 where cid=#{cid}")

public int updateSnum(int cid);

controller

//提交订单

@RequestMapping("/addOrder")

public String addOrder(Orderinfo order,HttpServletRequest request){

//获取订单提交时间

Date date=new Date();

SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd");

String d = format.format(date);

order.setOdate(d);

order.setState("0");//未支付

int a = carSerivce.addOrder(order);

carSerivce.updateSnum(order.getCid());

//待确认订单

return "redirect:/confirmOrder";

}

(4)付款、取消订单   提交订单后查询待确认订单(未付款订单),在此页面可以取消订单和付款

取消订单 mapperdao

//取消订单

//删除订单

@Delete("delete from orderinfo where oid=#{oid}")

public int delOrder(int oid);

//座位数增加

@Update("update carinfo set snum=snum+1 where cid=#{cid}")

public int updateSnum2(int cid);

付款

//订单编号查询订单

@Select("select * from orderinfo where oid=#{oid}")

public Orderinfo findOrderByOid(int oid);

//付款 更改订单状态

@Update("update orderinfo set state=1 where oid=#{oid}")

public int updateOrderByOid(int oid);

//添加车票信息

@Insert("insert into ticketinfo(oid) values(#{oid})")

public int addTicket(int oid);

controller

@RequestMapping("/endOrder/{oid}")

@ResponseBody

public String endOrder(@PathVariable("oid")int oid){

carSerivce.updateOrderByOid(oid);

return oid+"";

}

(5)退票 退票需要先查询所有已付款订单,然后需要在发车前两小时钱退票

三、页面展示:

4e2bc734404245950c6d1d2d549e2d3f.png

7bec56a29c18e5f1c9eefe2de84aea09.png

1f18fcc99227629f8776b69085b62b2b.png

四、遇到的问题:

1)业务流程不熟悉,花费时间较多

2)layui框架分页等的使用不熟练

五、解决的方法:

1)浏览售票网站,参考功能设计

2)熟悉layui框架

六、项目燃尽图更新:

c2d845a88e67384254bd730f66535d1e.png

标签:售票,客车,cid,int,oid,订单,item,网上,public

来源: https://www.cnblogs.com/guotongxue/p/13371952.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值