简单的车票管理系统
题目为:
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<<"--------感谢您的使用----------";
}