网上购票系统平台

发布时间:2025-12-10 11:22:17 浏览次数:162

网上购票系统平台

下面为部分内容

摘要

近年来随着信息技术的进步,网络的快速发展,简单的现实购票已经满足不了用户的需求。通过网上购票系统,避免了传统购票方式给人们带来的长途奔波,长时间排队的疲劳;同时,降低了购票交易时间,提高了工作效率。本系统针对用户的需求,可以注册、登录、查询车票信息、购票、退票、改签等,管理员还可以增加和删除列车信息。通过java EE,将注册用户信息存入数据库,实现了系统的注册登录功能,修改信息功能,查询车票,购买车票功能。

1.系统方案设计

1.1 需求分析

本系统的用户包括:普通用户、管理员。
(1)普通用户可以在网站上完成注册和登录。
(2)普通用户可以根据车站名和车次号查询列车信息。 ,
(3)普通用户在登录后可以在查询列车信息页面进行车票购买。。
(4)普通用户可以查询自己的车票信息,可以在里面完成改签和退票的功 能。
(5)管理员也可以使用以上功能, 管理员还可以根据需求添加和删除列车信息。

1.2 系统流程图

(1).后台业务流程:(管理员操作流程),管理员登录之后,首页会比普通用户多一个“管理”选项, 管理选项下可以执行添加列车信息和删除列车信息的操作,见下图:

(2).前台业务流程:(用户操作流程),注册之后登录会到达首页,用户可以在首页中点击用户信息、车次查询、车站查询、我的车票等选项跳转页面。在用户信息页面中,用户可以进行个人信息的编辑修改。我的车票页面中,用户可以查看个人的购票信息,并可以进行退票和改签。在车次查询页面,用户可以通过车次来查询列车信息。在车站查询页面,用户可以通过出发站和终点站来查询列车信息。见下图:

1.3功能结构分析

此系统主要包含两个方面,一为前台信息显示系统即普通用户空间、二为后台信息管理系统即管理员管理空间。前者是面向公众的一个窗口,通过前台信息显示系统方便普通游客查询列车信息,购买车票,查询已购车票等。后台信息管理系统在管理员登录后,管理员可以完成管理员独有的添加列车信息和删除列车信息的功能。
系统的基本功能结构图如图1.3所示:

用户模块:主要是为了让用户对网上购票系统平台有一个基本的了解。通过用户使用和反馈,管理员可以更好的调整列车信息。起可用模块的功能有:
查询列车:可以通过车次或车站名来查询列车信息。
购买车票:可以在查询列车的页面选择要购买的车票,在购买车票的页面填写个人信息实现购买车票的功能。
我的车票:用户可以查看自己已购车票。
退票、改签:用户可以在我的车票页面实现退票和改签的功能。
管理员模块:主要实现对列车信息的添加和删除。其个管理模块的功能有:
添加列车信息和 删除列车信息。

2.程序设计

2.1数据库设计

本系统采用Navicat Lite for MySQL开发工具。
根据系统需求分析和保证数据统一、完整和高效的原则,需要对数据库进行合理的设计。首先先在Navicat Lite for MySQL中建立一个名为“clks”的数据库来存放本系统所必须的数据表。
本系统数据库中主要的数据表分别为用户表(user),管理员表(administrator), 车票表(ticket),列车信息表(traininfo)。其中uid,Aid,tid,taid,是各个表的主键,Ptype为乘客类型(学生,成人等)。如表2-1至2-4所示:


2.2 后台页面设计

3.部分代码

//根据车次查询列车信息

public List<TrainInfo> getTrainNum(String trainNum) {Connection conn = DBUtil.getConn();//连接到数据库PreparedStatement pstmt = null;//MySQL中的预编译,减少SQL的编译错误并增加SQL的安全性。ResultSet rs= null; //结果集,起到的作用是完成查询结果的储存功能。TrainInfo traininfo = null;//TrainInfo 对象的创建String sql="select taid,trainNum,firstStation,finallyStation,launchTime,duringTime,trainType from traininfo where trainNum= ?";//获取traininfo 表中trainNum=?的信息List<TrainInfo> list=new ArrayList<TrainInfo>();try {pstmt = conn.prepareStatement(sql);pstmt.setString(1, trainNum);//将最上方传入的trainNum 放到sql对应的第一个问号中。//查询是否存在rs = pstmt.executeQuery();while(rs.next()) {int taid = rs.getInt("taid");//获取信息并存入trainInfo对象中String trainNum2 = rs.getString("trainNum");String firstStation = rs.getString("firstStation");String finallyStation = rs.getString("finallyStation");String launchTime= rs.getString("launchTime");String duringTime = rs.getString("duringTime");String trainType = rs.getString("trainType");traininfo = new TrainInfo(taid,trainNum2,firstStation,finallyStation,launchTime,duringTime,trainType);list.add(traininfo);}} catch (SQLException e) {e.printStackTrace();}return list;}

//根据车站查询列车信息

public List<TrainInfo> getTrainName(String firstStation, String finallyStation) {Connection conn = DBUtil.getConn();//连接到数据库PreparedStatement pstmt = null;//MySQL中的预编译,减少SQL的编译错误并增加SQL的安全性。ResultSet rs= null; //结果集,起到的作用是完成查询结果的储存功能。//通过 起始站和终点站查询信息String sql = "select taid,trainNum,firstStation,finallyStation,launchTime,duringTime,trainType from traininfo where firstStation=? and finallyStation=?";List<TrainInfo> list =new ArrayList<TrainInfo>();try {pstmt = conn.prepareStatement(sql);pstmt.setString(1, firstStation);pstmt.setString(2, finallyStation);//查询是否存在,存在则进行while中的操作rs = pstmt.executeQuery();while(rs.next()) {int taid = rs.getInt("taid");String trainNum=rs.getString("trainNum");String firstStation2 = rs.getString("firstStation");String finallyStation2 = rs.getString("finallyStation");String launchTime = rs.getString("launchTime");String duringTime = rs.getString("duringTime");String trainType = rs.getString("trainType");TrainInfo trainName = new TrainInfo(taid,trainNum,firstStation2,finallyStation2,launchTime,duringTime,trainType);list.add(trainName);}} catch (SQLException e) {e.printStackTrace();}return list;}/*** 获得车票信息, 传递到reserve.jsp 页面*/public TrainInfo getTrainInfo(int taid) {Connection conn = DBUtil.getConn();//连接到数据库PreparedStatement pstmt = null;//MySQL中的预编译,减少SQL的编译错误并增加SQL的安全性。ResultSet rs= null; //结果集,起到的作用是完成查询结果的储存功能。TrainInfo trainInfo = null;//通过taid获取车票信息String sql="select taid,trainNum,firstStation,finallyStation,launchTime,duringTime,trainType from traininfo where taid=?";try {pstmt = conn.prepareStatement(sql);pstmt.setInt(1,taid);rs = pstmt.executeQuery();while(rs.next()) {//获取信息传入trainInfo对象中int taid1 = rs.getInt("taid");String trainNum=rs.getString("trainNum");String firstStation = rs.getString("firstStation");String finallyStation = rs.getString("finallyStation");String launchTime = rs.getString("launchTime");String duringTime = rs.getString("duringTime");String trainType = rs.getString("trainType");trainInfo = new TrainInfo(taid1,trainNum,firstStation,finallyStation,launchTime,duringTime,trainType);}} catch (SQLException e) {e.printStackTrace();}return trainInfo;}

//用户订票

public int Reserve(Ticket ticket){Connection conn = DBUtil.getConn();PreparedStatement pstmt = null;int i = 0;String sql="insert into ticket(trainNum,seatType,launchTime,firstStation,finallyStation,ticketPrice,name,idNum,telNum,email,duringTime,date,trueName) values(?,?,?,?,?,?,?,?,?,?,?,?,?)";try {pstmt = conn.prepareStatement(sql);//将传入的ticket对象中的相应数值一一对应放进sql语句中。pstmt.setString(1, ticket.getTrainNum());pstmt.setString(2, ticket.getSeatType());pstmt.setString(3, ticket.getLaunchTime());pstmt.setString(4, ticket.getFirstStation());pstmt.setString(5, ticket.getFinallyStation());pstmt.setInt(6, ticket.getTicketPrice());pstmt.setString(7, ticket.getName());pstmt.setString(8, ticket.getIdNum());pstmt.setString(9, ticket.getTelNum());pstmt.setString(10, ticket.getEamil());pstmt.setString(11, ticket.getDuringTime());pstmt.setString(12, ticket.getDate());pstmt.setString(13, ticket.getTrueName());i = pstmt.executeUpdate();//检测信息更新i=1为更新,=0为更新失败} catch (SQLException e) {e.printStackTrace();}return i;}//根据用户name查询车票信息public List<Ticket> getTicketById(String name) {Connection conn = DBUtil.getConn();//连接到数据库PreparedStatement pstmt = null;//MySQL中的预编译,减少SQL的编译错误并增加SQL的安全性。ResultSet rs= null; //结果集,起到的作用是完成查询结果的储存功能。Ticket ticket = null;String sql = "select tid,trainNum,seatType,launchTime,firstStation,finallyStation,ticketPrice,name,duringTime,date,trueName,idNum from ticket where name=?";//获取 ticket表中name=“?”的所有信息。List<Ticket> list = new ArrayList<Ticket>();try {pstmt = conn.prepareStatement(sql);pstmt.setString(1, name);rs = pstmt.executeQuery();if(rs.next()) {int tid = rs.getInt("tid");//将获取的信息传递到Ticket对象当中String trainNum= rs.getString("trainNum");String seatType = rs.getString("seatType");String launchTime= rs.getString("launchTime");String firstStation = rs.getString("firstStation");String finallyStation= rs.getString("finallyStation");int ticketPrice= rs.getInt("ticketPrice");String name1= rs.getString("name");String duringTime = rs.getString("duringTime");String date = rs.getString("date");String trueName = rs.getString("trueName");String idNum = rs.getString("idNum");ticket = new Ticket(tid,trainNum,seatType,launchTime,firstStation,finallyStation,ticketPrice,name1,duringTime,date,trueName,idNum);list.add(ticket);}} catch (SQLException e) {e.printStackTrace();}return list;}//退票public int getTicketDelete(int tid) {Connection conn = DBUtil.getConn();//连接到数据库PreparedStatement pstmt = null;//MySQL中的预编译,减少SQL的编译错误并增加SQL的安全性。int i = 0;String sql="delete from ticket where tid = ?"; 删除ticket表中 tid为“?”的信息try {pstmt = conn.prepareStatement(sql);pstmt.setInt(1, tid); //将传进来的 taid 放到 sql语句的问号中。i = pstmt.executeUpdate();} catch (SQLException e) {e.printStackTrace();}return i;}//管理员删除列车信息public int deleteTrainInfo(int taid) {Connection conn = DBUtil.getConn();PreparedStatement pstmt = null;ResultSet rs = null;String sql = "delete from trainInfo where taid = ?";//删除tranInfo表中 taid为“?”的信息int i = 0;try {pstmt = conn.prepareStatement(sql);pstmt.setInt(1, taid);//将传进来的 taid 放到 sql语句的问号中。i = pstmt.executeUpdate(); //检测是否更新} catch (SQLException e) {e.printStackTrace();}return i;}
需要做网站?需要网络推广?欢迎咨询客户经理 13272073477