简单的车票管理系统

简单的车票管理系统


题目为:
1.车票管理系统:编程实现车票管理系统,车票信息包括车次号、
发车时间、起始站、终点站、行车时间、载客量、已售票等,如:
班次号 发车时间 起始站 终点站 行车时间 载客量 已售票
1 8:00 郫县 广汉 2 45 30
2 6:30 郫县 成都 0.5 40 40
3 7:00 郫县 成都 0.5 40 20
4 10:00 郫县 成都 0.5 40 2
… … … … … … … 具体实现的管理功能如下:
(1)录入车次信息(文本文件保存),可随机地增加班次数据。
(2)浏览车次信息,可显示出所有车次当前状态(如果当前时间
超过了某车次的发车时间,则显示“此班已发出”的信息)。
(3)查询路线:可按车次号查询,可按终点站查询
(4)售票和退票功能:情况A:当查询出已售票数小于额定载量且
当前系统时间小于发车时间时才能售票,自动更新已售票人数;情
况B:退票时,输入退票的车次,当本班车未发出时才能退票,自
动更新已售票人数。
程序要求:
(1)车票的总车次n(n<1000,使用静态数组实现),
(2)定义两个类:管理系统类和车票车次类。
程序所显示的菜单基本内容如下:

1.录入车票信息
2.浏览车票信息
3.查询车票信息
4.售票
5.退票
6.退出系统
代码为:

#include <iostream>
#include <string>
#include <math.h>
#include <stdio.h>
#include<fstream>
#include <time.h>
#include<iomanip>
using namespace std;
void begine();
void begin1();
struct inform
{
    string a;//班次号
    int  b;//发车小时
    int b1;//发车分钟
    string c;//起始站
    string d;//终点站
    string e;//行车时间
    int f;//载客量
    int g;//已售票
};
class system
{
public:
    struct inform xin[1001];
    int n=0;
    int r=0;
    char w;
    string o;
    string p;
    int y=0;
public:
    void luru();
    void liulan();
    void chaxun();
    void shoupiao();
    void tuipiao();
};
void system::luru()
{
    cout<<"请输入车次总数: ";
    cin>>n;
    fstream f;
    cout<<"请依次输入班次号 发车时间 起始站 终点站 行车时间 载客量 已售票"<<endl;
	f.open("shiyan1.txt",ios::out);
	for(int i=0;i<n;i++)
    {
        cout<<"请输入第"<<i+1<<"个"<<endl;
        cin>>xin[i].a>>xin[i].b;
        getchar();
        cin>>xin[i].b1>>xin[i].c>>xin[i].d>>xin[i].e>>xin[i].f>>xin[i].g;
        f<<xin[i].a<<" "<<xin[i].b<<":"<<setw(2)<<setfill('0')<<xin[i].b1<<" "<<xin[i].c<<" "<<xin[i].d<<" "<<xin[i].e<<" "<<xin[i].f<<" "<<xin[i].g<<endl;
    }
    cout<<"输入完毕,按""Y""键返回首页。";
    r=n;
    cin>>w;
    if(w==89||w==121)begin1();
	f.close();
}
void system::liulan()
{
    if(r==0)
    {
        cout<<"未进行信息录入,按Y键返回首页。";
        cin>>w;
        if(w==89||w==121)begin1();
    }
    if(r!=0)
    {
    for(int i=0;i<r;i++)
    {
        cout<<xin[i].a<<" "<<xin[i].b<<":"<<setw(2)<<setfill('0')<<xin[i].b1<<" "<<xin[i].c<<" "<<xin[i].d<<" "<<xin[i].e<<" "<<xin[i].f<<" "<<xin[i].g<<endl;
    }
    cout<<"输出完毕,按""Y""键返回首页。";
    cin>>w;
    if(w==89||w==121)begin1();
    }
}
void system::chaxun()
{
    if(r==0)
    {
        cout<<"未进行信息录入,按Y键返回首页。";
        cin>>w;
        if(w==89||w==121)begin1();
    }
    if(r!=0){
    cout<<"请输入所要查询的车次号或者终点站:";
    cin>>o;
    for(int i=0;i<r;i++)
    {
        if(o==xin[i].a||o==xin[i].d) cout<<xin[i].a<<" "<<xin[i].b<<":"<<setw(2)<<setfill('0')<<xin[i].b1<<" "<<xin[i].c<<" "<<xin[i].d<<" "<<xin[i].e<<" "<<xin[i].f<<" "<<xin[i].g<<endl;
    }
    cout<<"输出完毕,按""Y""键返回首页。";
    cin>>w;
    if(w==89||w==121)begin1();
    }
}
void system::shoupiao()
{
    if(r==0)
    {
        cout<<"未进行信息录入,按Y键返回首页。";
        cin>>w;
        if(w==89||w==121)begin1();
    }
    if(r!=0)
    {
        cout<<"请输入您想买的票的车次号:";
        cin>>o;
        for(int i=0;i<r;i++)
    {
        if(o==xin[i].a){
        cout<<"该车票的信息为:"<<endl<<xin[i].a<<" "<<xin[i].b<<":"<<setw(2)<<setfill('0')<<xin[i].b1<<" "<<xin[i].c<<" "<<xin[i].d<<" "<<xin[i].e<<" "<<xin[i].f<<" "<<xin[i].g<<endl;
        y=1;
        if(y==0)
        {
            cout<<"未找到该车次号,按Y键返回首页。";
            cin>>w;
            if(w==89||w==121)begin1();
        }
        y=0;
        cout<<"是否确定购买该车票?"<<endl<<"请输入(Y/N):";
        cin>>w;
        if(w==78||w==110)begin1();
        if(w==89||w==121)
        {
            time_t now = time(0);
            tm *ltm = localtime(&now);
            int hour=ltm->tm_hour;
            int minete=ltm->tm_min;
            if(xin[i].g<xin[i].f&&hour*60+minete<xin[i].b*60+xin[i].b1)
            {
                xin[i].g=xin[i].g+1;
                cout<<"购票成功!";
                fstream f;
                f.open("shiyan1.txt",ios::out);
                for(int i=0;i<r;i++)
                {
                f<<xin[i].a<<" "<<xin[i].b<<":"<<setw(2)<<setfill('0')<<xin[i].b1<<" "<<xin[i].c<<" "<<xin[i].d<<" "<<xin[i].e<<" "<<xin[i].f<<" "<<xin[i].g<<endl;
                }
                cout<<"按""Y""键返回首页。";
                cin>>w;
                if(w==89||w==121)begin1();
            }
            if(xin[i].g>=xin[i].f||hour*60+minete>=xin[i].b*60+xin[i].b1)
            {
                cout<<"改火车因售票已满或者时间已过,不能购买!";
                cout<<"按""Y""键返回首页。";
                cin>>w;
                if(w==89||w==121)begin1();
            }
        }
        }
    }
    }
}
void system::tuipiao()
{
    if(r==0)
    {
        cout<<"未进行信息录入,按Y键返回首页。";
        cin>>w;
        if(w==89||w==121)begin1();
    }
    if(r!=0)
    {
        cout<<"请输入您想退的票的车次号:";
        cin>>o;
        for(int i=0;i<r;i++)
    {
        if(o==xin[i].a){
        cout<<"该车票的信息为:"<<endl<<xin[i].a<<" "<<xin[i].b<<":"<<setw(2)<<setfill('0')<<xin[i].b1<<" "<<xin[i].c<<" "<<xin[i].d<<" "<<xin[i].e<<" "<<xin[i].f<<" "<<xin[i].g<<endl;
        y=1;
        if(y==0)
        {
            cout<<"未找到该车次号,按Y键返回首页。";
            cin>>w;
            if(w==89||w==121)begin1();
        }
        y=0;
        cout<<"是否确定退掉该车票?"<<endl<<"请输入(Y/N):";
        cin>>w;
        if(w==78||w==110)begin1();
        if(w==89||w==121)
        {
            time_t now = time(0);
            tm *ltm = localtime(&now);
            int hour=ltm->tm_hour;
            int minete=ltm->tm_min;
            if(hour*60+minete<xin[i].b*60+xin[i].b1)
            {
                xin[i].g=xin[i].g-1;
                cout<<"退票成功!";
                fstream f;
                f.open("shiyan1.txt",ios::out);
                for(int i=0;i<r;i++)
                {
                f<<xin[i].a<<" "<<xin[i].b<<":"<<setw(2)<<setfill('0')<<xin[i].b1<<" "<<xin[i].c<<" "<<xin[i].d<<" "<<xin[i].e<<" "<<xin[i].f<<" "<<xin[i].g<<endl;
                }
                cout<<"按""Y""键返回首页。";
                cin>>w;
                if(w==89||w==121)begin1();
            }
            if(hour*60+minete>=xin[i].b*60+xin[i].b1)
            {
                cout<<"该火车已发车,不能办理退票!";
                cout<<"按""Y""键返回首页。";
                cin>>w;
                if(w==89||w==121)begin1();
            }
        }
        }
    }
    }
}
class chepiao:public system
{
public:
    //void()
};
void begin1()
{
    cout<<"~~~~~欢迎使用车票管理系统!~~~~~"<<endl;
    cout<<"    ====================="<<endl;
    cout<<"        1.录入车票信息"<<endl;
    cout<<"        2.浏览车票信息"<<endl;
    cout<<"        3.查询车票信息"<<endl;
    cout<<"        4.售票"<<endl;
    cout<<"        5.退票"<<endl;
    cout<<"        6.退出系统"<<endl;
    cout<<"    请选择:";
}
void begine()
{
    begin1();
    int a1;
    system b;
    while(cin>>a1&&a1!=6){
    //cin>>a1;
    switch (a1){
        case 1:
        {
            b.luru();
            break;
        }
        case 2:
        {
            b.liulan();
            break;
        }
        case 3:
        {
            b.chaxun();
            break;
        }
        case 4:
        {
            b.shoupiao();
            break;
        }
        case 5:
        {
            b.tuipiao();
            break;
        }
    }}
}
int main()
{
    //begin1();
    begine();
    cout<<"--------感谢您的使用----------";
}
  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
模拟火车票管理系统 package com.qdlg.trainticketmanger.service; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import javax.swing.JOptionPane; import com.qdlg.trainticketmanger.model.DBConnection; import com.qdlg.trainticketmanger.model.Ticket; public class TicketManager { /** * * @param train * @return */ public int addTicket(Ticket ticket){ String sql="insert into ticket(ticketNumber,trainNumber,trainDate,startStation,endStation," + "price,carriageNum,seatNum,type,grade,userId,trainTime) values(?,?,?,?,?,?,?,?,?,?,?,?)"; Connection conn=DBConnection.getConn(); PreparedStatement pst=null; int number =0; try { pst = conn.prepareStatement(sql); pst.setString(1,ticket.getTicketNumber()); pst.setString(2,ticket.getTrainNumber()); pst.setString(3,ticket.getTrainDate()); pst.setString(4,ticket.getStartStation()); pst.setString(5,ticket.getEndStation()); pst.setDouble(6,ticket.getPrice()); pst.setInt(7,ticket.getCarriageNum()); pst.setInt(8,ticket.getSeatNum()); pst.setString(9,ticket.getType()); pst.setString(10,ticket.getGrade()); pst.setInt(11,ticket.getUserId()); pst.setString(12,ticket.getTrainTime()); number=pst.executeUpdate(); //JOptionPane.showMessageDialog(null, "存储成功!", "SUCCESS", JOptionPane.INFORMATION_MESSAGE) ; return number; } catch (SQLException e) { e.printStackTrace(); } return number; } /** * 批量添加 * @param list * @return */ public int addAll(List list){ //建立数据库操作 Connection conn=DBConnection.getConn(); Statement sta=null; try { sta=conn.createStatement(); //将自动提交模式转换为手动提交模式 conn.setAutoCommit(false); Iterator iter = list.iterator(); //循环将数据准换成SQL语句 while(iter.hasNext()){ Ticket ticket =iter.next(); sta.addBatch("insert into ticket(ticketNumber,trainNumber,trainDate,startStation,endStation,"+ "price,carriageNum,seatNum,type,grade,userId) values ('"+ ticket.getTicketNumber()+"','"+ ticket.getTrainNumber()+"','"+ ticket.getTrainDate()+"','"+ ticket.getStartStation()+"','"+ ticket.getEndStation()+"','"+ ticket.getPrice()+","+ ticket.getCarriageNum()+","+ ticket.getSeatNum()+","+ ticket.getType()+","+ ticket.getGrade()+","+ ticket.getUserId()+")"); } //执行批量处理,提交事务 int [] batchNumber=sta.executeBatch(); conn.commit(); //将手动提交模式转换为自动提交模式 conn.setAutoCommit(true); return batchNumber.length; } catch (SQLException e) { JOptionPane.showMessageDialog(null, "请检查"+e.getMessage(), "系统不允许您重复录入重名物料", JOptionPane.ERROR_MESSAGE); e.printStackTrace(); try { //操作出现异常时,回滚事务 conn.rollback(); } catch (SQLException e1) { e1.printStackTrace(); } }finally{ try { //关闭Conn conn.close(); } catch (SQLException e) { e.printStackTrace(); } } return 0; } /** * * @param trainId */ public void delete(int ticketId){ String sql="delete from ticket where id=?"; Connection conn=DBConnection.getConn(); PreparedStatement pst=null; try { pst = conn.prepareStatement(sql); pst.setInt(1,ticketId); pst.executeUpdate(); } catch (SQLException e) { e.printStackTrace(); JOptionPane.showMessageDialog(null, "NOthing ", "youqingtishi", JOptionPane.ERROR_MESSAGE); } } public boolean delete(String ticketNumber,String trainNumber){ String sql="delete from ticket where ticketNumber=? and trainNumber=?"; Connection conn=DBConnection.getConn(); PreparedStatement pst=null; try { pst = conn.prepareStatement(sql); pst.setString(1,ticketNumber); pst.setString(2,trainNumber); int number=pst.executeUpdate(); if(number>0){ return true; }else{ return false; } } catch (SQLException e) { e.printStackTrace(); } return false; } /** * * @param train */ public void update(Ticket ticket){ String sql="update ticket set ticketNumber=?,trainNumber=?,trainDate=?,startStation=?,endStation=?," + "price=?,carriageNum=?,seatNum=?,type=?,grade=?,userId=? where id=?"; Connection conn=DBConnection.getConn(); PreparedStatement pst=null; try { pst = conn.prepareStatement(sql); pst.setString(1,ticket.getTicketNumber()); pst.setString(2,ticket.getTrainNumber()); pst.setString(3,ticket.getTrainDate()); pst.setString(4,ticket.getStartStation()); pst.setString(5,ticket.getEndStation()); pst.setDouble(6,ticket.getPrice()); pst.setInt(7,ticket.getCarriageNum()); pst.setInt(8,ticket.getSeatNum()); pst.setString(9,ticket.getType()); pst.setString(10,ticket.getGrade()); pst.setInt(11,ticket.getUserId()); pst.setInt(12,ticket.getId()); pst.executeUpdate(); // JOptionPane.showMessageDialog(null, "OK", "SUCCESS", JOptionPane.INFORMATION_MESSAGE) ; } catch (SQLException e) { e.printStackTrace(); } } public Ticket findById(Integer id) throws SQLException{ Ticket ticket=new Ticket(); String sql="select * from ticket where id=? "; Connection conn=DBConnection.getConn(); PreparedStatement pst=null; ResultSet rs=null; pst = conn.prepareStatement(sql); pst.setInt(1,id); rs=pst.executeQuery(); if(rs.next()){ ticket.setTicketNumber(rs.getString("ticketNumber")); ticket.setTrainNumber(rs.getString("trainNumber")); ticket.setTrainDate(rs.getString("trainDate")); ticket.setStartStation(rs.getString("startStation")); ticket.setEndStation(rs.getString("endStation")); ticket.setPrice(rs.getDouble("price")); ticket.setCarriageNum(rs.getInt("carriageNum")); ticket.setSeatNum(rs.getInt("seatNum")); ticket.setType(rs.getString("type")); ticket.setGrade(rs.getString("grade")); ticket.setUserId(rs.getInt("userId")); ticket.setId(rs.getInt("id")); } return ticket; } public Integer getIdId() throws SQLException{ String sql="select id from ticket"; Integer id=1; Connection conn=DBConnection.getConn(); PreparedStatement pst=null; ResultSet rs=null; pst = conn.prepareStatement(sql); rs=pst.executeQuery(); if(rs.next()){ rs.afterLast(); rs.previous(); id=rs.getInt("id"); } return id; } /** * * @return * @throws SQLException */ public Integer findUserId() throws SQLException{ String sql="select * from ticket"; Connection conn=DBConnection.getConn(); PreparedStatement pst=null; ResultSet rs=null; Integer userId=1; pst = conn.prepareStatement(sql); rs=pst.executeQuery(); if(rs.next()){ rs.afterLast(); rs.previous(); userId=rs.getInt("userId"); } return userId; } //anyonghuchaxun public List findByUserIdId(Integer userId) throws SQLException{ String sql="select * from ticket where userId=? "; Connection conn=DBConnection.getConn(); PreparedStatement pst=null; ResultSet rs=null; pst = conn.prepareStatement(sql); pst.setInt(1,userId); Ticket ticket=null; List list=new ArrayList(); rs=pst.executeQuery(); while(rs.next()){ ticket=new Ticket(); ticket.setTicketNumber(rs.getString("ticketNumber")); ticket.setTrainNumber(rs.getString("trainNumber")); ticket.setTrainDate(rs.getString("trainDate")); ticket.setTrainTime(rs.getString("trainTime")); ticket.setStartStation(rs.getString("startStation")); ticket.setEndStation(rs.getString("endStation")); ticket.setPrice(rs.getDouble("price")); ticket.setCarriageNum(rs.getInt("carriageNum")); ticket.setSeatNum(rs.getInt("seatNum")); ticket.setType(rs.getString("type")); ticket.setGrade(rs.getString("grade")); ticket.setUserId(rs.getInt("userId")); ticket.setId(rs.getInt("id")); list.add(ticket); } return list; } }

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值