火车票管理系统c++

这是一个使用C语言编写的火车票管理系统,采用面向对象的方法实现。系统包括录入车次信息、浏览信息、查询车票和售票功能。用户可以录入车次的详细信息如车次号、发车时间和到达时间等,并将数据保存到文本文件中。查询车票时,用户可以按出发地和到达地查找。此外,系统还提供了售票功能,能够自动更新剩余车票数量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

学习目标:

折腾


学习内容:

c语言


学习时间:

暑假


学习产出:

火车票管理系统: 要求用面向对象的方法实现火车票管理系统, 车票信息包
括车次号、 发车时间、 到站时间、 出发地、 到达地、 行车时间、 剩余车票
数、 票价等, 如:

车次发车时间到站时间出发地到达地行车时间剩余车票数票价
G67146:408:30石家庄站北京西站1时50分9129
Z507:2810:05石家庄站北京西站2时37分1843.5
T1467:4811:18石家庄站北京西站3时30分1743.5
................................................

具体实现的管理功能如下:
(1) 录入车次信息(文本文件保存) , 可随机地增加车次数据。
(2) 浏览车次信息, 途径站。
(3) 查询车票: 按照出发地、 到达地查询车次.
(4) 售票功能: 自动更新剩余车票数。
程序所显示的菜单内容如下:
请选择下面的菜单:
1.录入车次信息
2.浏览车次信息
3.查询车票信息
4.售票
5.退出
请选择

#include <iostream>
#include<string.h>
#include<fstream>
using namespace std;

int number;//功能键
int n;//车次的个数


class Ticket
{
public:
    char no[10];//车次号
    int month;//发车时间
    int day;//发车时间
    int hour;//发车时间
    int minute;//发车时间
    char start_station[20];//出发地
    char last_station[20];//到达地
    float time;//行车时间
    int price;//票价
    int last_ticket;//剩余车票数
    char tu_station[20];//途径站
};
Ticket t[1000];

void menu();//菜单
void chose(int);//功能的选择
void input(Ticket t[]);//录入车次信息,可随机地增加车次数据
void show(Ticket t[]);//浏览车次信息,途径站。
void findtic(Ticket t[]);//查询车票:按照出发地、到达地查询车次.
void selltic(Ticket t[]);//售票功能,自动更新剩余车票数

int main()
{
    cout<<"输入车次数:"<<endl;
    cin>>n;
    while(1)
    {
        menu();
        cin>>number;
        chose(number);
    }
    return 0;
}


void chose(int number)
{
    switch(number)
    {
    case 1:
        input(t);// 录入车次信息
        break;
    case 2:
        show(t);//可在最后追加一批学生信息
        break;
    case 3:
        findtic(t);//查询车票信息
        break;
    case 4:
        selltic(t);//售票功能
        break;
    case 5:
        exit(0);//退出
        break;
    default:
        break;
    }
}



void  menu()//菜单
{
    cout<<"\n***********请选择下面的菜单:***********\n";
    cout<<"\t 1.录入车次信息\n";//
    cout<<"\t 2.浏览车次信息\n";//可在最后追加一批学生信息
    cout<<"\t 3.查询车票信息\n";//输入数据
    cout<<"\t 4.售票\n";// 按总分降序进行排序
    cout<<"\t 5.退出\n";//任意输入一个学号,能显示该学生的基本信息。
    cout<<"\t 请选择";
    cout<<"\n***************************************\n";
}



void input(Ticket t[])//录入车次信息
{
    int k;
    cout<<" 录入输1 增加输2 "<<endl;
    cin>>k;
    if(k==1)
    {
        for(int i=0; i<n; i++)
        {
            cout<<"请输入车次号:"<<endl;
            cin>>t[i].no;

            cout<<"请输入发出时间:"<<endl;
            cout<<"月:"<<endl;
            cin>>t[i].month;
             cout<<"日:"<<endl;
            cin>>t[i].day;
             cout<<"时:"<<endl;
            cin>>t[i].hour;
            cout<<"分:"<<endl;
            cin>>t[i].minute;

            cout<<"请输入始发站:"<<endl;
            cin>>t[i].start_station;

            cout<<"请输入途径站:"<<endl;
            cin>>t[i].tu_station;

            cout<<"请输入终点站:"<<endl;
            cin>>t[i].last_station;

            cout<<"请输入行车时间:"<<endl;
            cin>>t[i].time;

            cout<<"请输入票价:"<<endl;
            cin>>t[i].price;

            cout<<"请输入剩余车票数"<<endl;
            cin>>t[i].last_ticket;
        }
    }
    if(k==2)
    {
        int x;
        cout<<"请输入要添加的车次数:"<<endl;
        cin>>x;
        for(int i=n; i<(n+x); i++)
        {
            cout<<"请输入车次号:"<<endl;
            cin>>t[i].no;

            cout<<"请输入发出时间:"<<endl;
            cin>>t[i].month>>t[i].day>>t[i].hour>>t[i].minute;

            cout<<"请输入始发站:"<<endl;
            cin>>t[i].start_station;

            cout<<"请输入途径站:"<<endl;
            cin>>t[i].tu_station;

            cout<<"请输入终点站:"<<endl;
            cin>>t[i].last_station;

            cout<<"请输入行车时间:"<<endl;
            cin>>t[i].time;

            cout<<"请输入票价:"<<endl;
            cin>>t[i].price;

            cout<<"请输入剩余车票数"<<endl;
            cin>>t[i].last_ticket;
        }

        n=n+x;
    }
    char c;
    cout<<"你要保存到文本文件中吗(y/n)"<<endl;
    cin>>c;
    if(c=='y')
    {

        ofstream ofs;//写到文本文件当中去
        ofs.open("ticket.txt",ios::out);
        for(int i=0; i<n; i++)
        {
            ofs<<"车次号:"<<t[i].no<<endl;
            ofs<<"发出时间:"<<t[i].month<<"月"<<t[i].day<<"日"<<t[i].hour<<"时"<<t[i].minute<<"分"<<endl;
            ofs<<"始发站:"<<t[i].start_station<<endl;
            ofs<<"途径站:"<<t[i].tu_station<<endl;
            ofs<<"终点站:"<<t[i].last_station<<endl;
            ofs<<"行车时间:"<<t[i].time<<endl;
            ofs<<"票价:"<<t[i].price<<endl;
            ofs<<"剩余车票数:"<<t[i].last_ticket<<endl;
        }
        cout<<"保存成功!"<<endl;
    }

}



void show(Ticket t[])//浏览车次信息,
{

    for(int i=0; i<n; i++)
    {
        cout<<"车次号:"<<t[i].no<<endl;
        cout<<"发出时间:"<<t[i].month<<"月"<<t[i].day<<"日"<<t[i].hour<<"时"<<t[i].minute<<"分"<<endl;
        cout<<"始发站:"<<t[i].start_station<<endl;
        cout<<"途径站:"<<t[i].tu_station<<endl;
        cout<<"终点站:"<<t[i].last_station<<endl;
        cout<<"行车时间:"<<t[i].time<<endl;
        cout<<"票价:"<<t[i].price<<endl;
        cout<<"剩余车票数:"<<t[i]. last_ticket<<endl;
        cout<<endl;
    }


}



void findtic(Ticket t[])//查询功能:
{
//    int i;//按时间的
//    int m,d;
//    cout<<"请输入发车时间(*月*日):"<<endl;
//    cin>>m>>d;
//    for( i=0;i<n;i++)
//    {
//        if((t[i].month==m)&&(t[i].day==d))
//        {
//        cout<<"车次号:"<<t[i].no<<endl;
//        cout<<"发出时间:"<<t[i].hour<<":"<<t[i].minute<<endl;
//        cout<<"始发站:"<<t[i].start_station<<endl;
//        cout<<"终点站:"<<t[i].last_station<<endl;
//        cout<<"行车时间:"<<t[i].time<<endl;
//        cout<<"票价:"<<t[i].price<<endl;
//        cout<<"剩余车票数:"<<t[i].last_ticket<<endl;
//        }
//
//    }
    char startplace[20];
    char getplace[20];
    cout<<"请输入出发站:"<<endl;
    getchar();
    gets(startplace);
    cout<<"请输入到达站"<<endl;;
    getchar();
    gets(getplace);
    for(int i=0; i<n; i++)
    {
        if((strcmp(startplace,t[i].start_station)==0)&&(strcmp(getplace,t[i].last_station)))
        {
            cout<<"车次号:"<<t[i].no<<endl;
            cout<<"发出时间:"<<t[i].month<<"月"<<t[i].day<<"日"<<t[i].hour<<"时"<<t[i].minute<<"分"<<endl;
            cout<<"始发站:"<<t[i].start_station<<endl;
            cout<<"途径站:"<<t[i].tu_station<<endl;
            cout<<"终点站:"<<t[i].last_station<<endl;
            cout<<"行车时间:"<<t[i].time<<endl;
            cout<<"票价:"<<t[i].price<<endl;
            cout<<"剩余车票数:"<<t[i].last_ticket<<endl;
            cout<<endl;
        }

    }

}
void selltic(Ticket t[])//售票功能
{
    char cc[20];
    int k;
    cout<<"请输入你要买的车次号:"<<endl;
    getchar();
    gets(cc);
    cout<<"你要买几张:"<<endl;
    cin>>k;
    cout<<"购买成功!"<<endl;
    for(int i=0; i<n; i++)
    {
        if(strcmp(cc,t[i].no)==0)
        {
            t[i].last_ticket-=k;
        }
    }
}

#include <iostream> #include <fstream> #include <string> #include<time.h> using namespace std; void welcome(); //欢迎子函数 void choose(); //选择子函数 void banciluru(); //班次录入子函数 void liulanbancixinxi(); //浏览班次信息子函数 void shoupiao(); //售票子函数 void tuipiao(); //退票子函数 void quit(); //退出子函数 void chaxun(); //查询子函数 int loading(); //文件载入子函数 const int MAX=20; //使数组最大值可调 const int N=50; struct time //时间结构体,为了与系统时间做比较. { int hour; int minutes; }; struct ticket //车票结构体,包含车次,时间结构体,起点,终点,行车时间,额定载客量,已订票人数 { int Number; struct time Setout; char Qidian[MAX]; char Zhongdian[MAX]; float Lasttime; int Fixnumber; int Fixednumber; }car[N]; //主函数 int main() { welcome(); return 0; } //欢迎子函数 void welcome() { cout<<"________________________________________________________"<<endl; cout<<"| 欢 * 迎 * 使 * 用 * 火 * 车 * 票 * 管 * 理 * 系 * 统 |"<<endl; cout<<"| |"<<endl; cout<<"| 本管理系统有以下功能: |"<<endl; cout<<"| |"<<endl; cout<<"| 1 班次录入 |"<<endl; cout<<"| 2 浏览班次信息 |"<<endl; cout<<"| 3 查询火车信息 |"<<endl; cout<<"| 4 购买火车票 |"<<endl; cout<<"| 5 退订火车票 |"<<endl; cout<<"| 6 退出系统 |"<<endl; cout<<"|______________________________________________________|"<<endl; cout<<"请输入所要执行功能前的数字: "<<endl; choose(); } //选择子函数 void choose() { string i; cin>>i; if(i=="1") banciluru(); if(i=="2") liulanbancixinxi(); if(i=="3") chaxun(); if(i=="4") shoupiao(); if(i=="5") tuipiao(); if(i=="6") quit(); else { cout<<"输入有误!请在数字1-5之间重新您的输入选择!"<<endl; choose(); } } //班次录入子函数 void banciluru() { string t="1"; ofstream outfile; outfile.open("班次信息.txt",ios::app); for(int i=0;t=="1";i++) { cout<<"请输入需要添加的火车班次:"<<endl; cin>>car[i].Number; cout<<"请输入此班次发车时间(格式:先输入小时,回车,再输入分钟):"<<endl; cin>>car[i].Setout.hour; cin>>car[i].Setout.minutes; cout<<"请输入出发站:"<<endl; cin>>car[i].Qidian; cout<<"请输入终点站:"<<endl; cin>>car[i].Zhongdian; cout<<"请输入行车时间:"<<endl; cin>>car[i].Lasttime; cout<<"请输入额定载客量:"<<endl; cin>>car[i].Fixnumber; cout<<"请输入已订票人数:"<<endl; cin>>car[i].Fixednumber; outfile<<car[i].Number<<" "<<car[i].Setout.hour<<" "<<car[i].Setout.minutes<<" "<<car[i].Qidian<<" "<<car[i].Zhongdian<<" "<<car[i].Lasttime<<" "<<car[i].Fixnumber<<" "<<car[i].Fixednumber<<endl; cout<<"是否继续录入?(是请输1,否请输任意键返回主菜单)"<<endl; cin>>t; if(t!="1") { welcome(); } } outfile.close(); cout<<"输入回车键返回"<<endl; getchar(); getchar(); welcome(); } //浏览班次子函数 void liulanbancixinxi() { int c; c=loading(); cout<<"班次"<<" "<<"发车时间"<<" "<<"起点站"<<" "<<"终点站"<<" "<<"行车时间"<<" "<<"额定载客量"<<" "<<"已订票人数"<<endl; for(int i=0;i<c;i++) { cout<<car[i].Number<<" "<<car[i].Setout.hour<<":"<<car[i].Setout.minutes<<" "<<car[i].Qidian<<" "<<car[i].Zhongdian<<" "<<car[i].Lasttime<<" "<<car[i].Fixnumber<<" "<<car[i].Fixednumber<<endl; time_t tval; struct tm *now; tval = time(NULL); now = localtime(&tval); if((now->tm_hour==car[i].Setout.hour&&now->tm_min>car[i].Setout.minutes)||(now->tm_hour>car[i].Setout.hour)) cout<<"此车已发出"<<endl; } cout<<"输入回车键返回"<<endl; getchar(); getchar(); welcome(); } //车次查询子函数 void Numbersearch(); void Finalsearch(); void chaxun() { string t; cout<<"1.按班次查询"<<endl; cout<<"2.按终点站查询"<<endl; cout<<"请输入您想选择的查询方法前的数字:"<<endl; cin>>t; if(t=="1") Numbersearch(); if(t=="2") Finalsearch(); if(t!="1"||t!="2") { cout<<"输入有误,请重新输入"<<endl; chaxun(); } }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值