/*****班车信息管理系统*****/
#include<iostream>
#include<windows.h>
#include <stdlib.h>
#include<time.h>
#include<stdio.h>
#include <fstream>
#include<iomanip>
#include<string.h>
#include<cstdlib>
using namespace std;
void zjbc(); //增加班次函数
bool bcqx(int); //班次取消函数
void bccx(); //班次查询函数
void bcdp(); //班次订票函数
void bccx_bus_num(); //班次号查询子函数
void bccx_start(); //起点和开车时间查询子函数
void bccx_desti(); //终点和开车时间查询子函数
bool time_compare(int);//时间比较函数
struct bus //班车信息
{
char bus_num[10]; //班交车号
int max_num; //最大载客数
int shengyu; //剩余票数
char starting[20]; //起点
int s_time_hour; //开车时间
int s_time_min;
char desti[20]; //终点
int d_time_hour; //到达终点站时间
int d_time_min;
int price; //单价
}bus[100],busm[100];
struct pa //旅客信息
{
char bus_num[10]; //班交车号
char ID_num[20]; //旅客身份证号
char name[20]; //旅客姓名
char sex[4]; //旅客性别
char birthday[10]; //旅客出生日期
int seat_num; //座位号
}pa[1000]={"","","","","",0};
int i,j=0;
int main() //主函数
{
h: cout<<"欢迎进入班车信息管理系统!"<<endl
<<"请按提示操作:"<<endl
<<"注意:开车前五分钟停止售票!!"<<endl
<<"1、增加班次记录"<<endl
<<"2、班次查询"<<endl
<<"3、班次订票"<<endl
<<"4、退出系统"<<endl
<<"请选择您需要的功能操作:";
f: int a;
cin>>a;
switch(a)
{
case 1:
zjbc();
goto h;
break;
case 2:
bccx();
goto h;
break;
case 3:
system("cls");
bcdp();
system("cls");
goto h;
break;
case 4:
system("cls");
cout<<"谢谢使用!"<<endl;
break;
default:
cout<<"输入有误,重新输入:";
goto f;
}
return 0;
}
void zjbc() //增加班次函数
{
system("cls");
l: ifstream ifile;
ifile.open("d:\\班次信息.txt");
for(int i1=0;!ifile.fail();i1++)
{
char p1,p2;
ifile>>bus[i1].bus_num>>bus[i1].max_num
>>bus[i1].shengyu>>bus[i1].starting
>>bus[i1].s_time_hour>>p1>>bus[i1].s_time_min
>>bus[i1].desti >>bus[i1].d_time_hour>>p2
>>bus[i1].d_time_min>>bus[i1].price ;
}
ifile.close();
i=i1;
cout<<"请输入班交车号:";
cin>>busm[i].bus_num ;
if(i!=0)
{
for(int k=0;k<=i-1;k++)
{
if(strcmp(bus[k].bus_num,busm[i].bus_num )==0)
{
cout<<bus[k].bus_num<<"班次已存在!请重新输入班交车号:";
cin>>busm[i].bus_num;
}
}
}
cout<<"请输入最大载客数:";
cin>>busm[i].max_num;
cout<<"请输入剩余票数:";
cin>>busm[i].shengyu ;
cout<<"请输入起点:";
cin>>busm[i].starting ;
cout<<"请输入开车时间(时、分):";
cin>>busm[i].s_time_hour;
cin>>busm[i].s_time_min;
cout<<"请输入终点:";
cin>>busm[i].desti ;
cout<<"请输入到达终点站时间(时、分):";
cin>>busm[i].d_time_hour;
cin>>busm[i].d_time_min;
cout<<"请输入单价:";
cin>>busm[i].price ;
cout<<"确定增加此班次?(确定按1;放弃按其它键):";
char b;
cin>>b;
if(b=='1')
{
ofstream ofile;
ofile.open("d:\\班次信息.txt",ios::out|ios::app);
ofile<<busm[i].bus_num <<' '<<busm[i].max_num <<' '<<busm[i].shengyu<<' ';
ofile<<busm[i].starting<<' '<<setfill('0')<<setw(2)<<busm[i].s_time_hour<<":"
<<setfill('0')<<setw(2)<<busm[i].s_time_min;
ofile<<' '<<busm[i].desti<<' '<<setfill('0')<<setw(2)<<busm[i].d_time_hour
<<":"<<setfill('0')<<setw(2)<<busm[i].d_time_min
<<' '<<busm[i].price <<endl;
ofile.close();
}
cout<<"是否继续增加班次?(是按1,按其它键返回主菜单):";
char c;
cin>>c;
if(c=='1')
goto l;
system("cls");
}
bool bcqx(int i) //班次取消函数,返回0表示取消班次
{
ifstream ifile;
ifile.open("d:\\班次信息.txt");
for(int i1=0;!ifile.fail();i1++)
{
char p1,p2;
ifile>>bus[i1].bus_num>>bus[i1].max_num
>>bus[i1].shengyu>>bus[i1].starting
>>bus[i1].s_time_hour>>p1>>bus[i1].s_time_min
>>bus[i1].desti >>bus[i1].d_time_hour>>p2
>>bus[i1].d_time_min>>bus[i1].price ;
}
ifile.close();
time_t ti;
struct tm *now;
ti=time(NULL);
now=localtime(&ti);
if((now->tm_hour==bus[i].s_time_hour &&now->tm_min+5>=bus[i].s_time_min )
||(now->tm_hour>bus[i].s_time_hour ))
if(bus[i1].max_num*0.1>bus[i1].max_num-bus[i1].shengyu)
return 0;
return 1;
}
void bccx() //班次查询函数
{
g: system("cls");
cout<<"您可以采用以下方式查询:"<<endl;
cout<<"1、按班次号查询;"<<endl;
cout<<"2、按起点和开车时间查询;"<<endl;
cout<<"3、按终点和开车时间查询;"<<endl;
cout<<"请选择查询方式(按其它数字返回主菜单):";
int a;
cin>>a;
switch(a)
{
case 1:
bccx_bus_num();
goto g;
break;
case 2:
bccx_start();
goto g;
break;
case 3:
bccx_desti();
goto g;
break;
default:
system("cls");
}
}
void bccx_bus_num() //班次号查询子函数
{
system("cls");
ifstream ifile;
ifile.open("d:\\班次信息.txt");
for(int i1=0;!ifile.fail();i1++)
{
char p1,p2;
ifile>>bus[i1].bus_num>>bus[i1].max_num
>>bus[i1].shengyu>>bus[i1].starting
>>bus[i1].s_time_hour>>p1>>bus[i1].s_time_min
>>bus[i1].desti >>bus[i1].d_time_hour>>p2
>>bus[i1].d_time_min>>bus[i1].price ;
}
ifile.close();
r: cout<<"请输入要查询的班次号:";
char d[10];
bool t=0;
cin>>d;
for(int k=0;k<=i1-1;k++)
{
if(strcmp(bus[k].bus_num,d)==0)
{
t=1;
cout<<"班次"<<'\t'<<"最大载客数"<<'\t'<<"剩余票数"
<<'\t'<<"起点"<<'\t'<<"开车时间"<<'\t'<<"终点"<<'\t'
<<"到达终点站时间"<<'\t'<<"单价(元)"<<endl;
cout<<bus[k].bus_num<<'\t'<<bus[k].max_num
<<"\t\t"<<bus[k].shengyu<<"\t\t"<<bus[k].starting
<<'\t'<<setfill('0')<<setw(2)<<bus[k].s_time_hour<<":"
<<setfill('0')<<setw(2)<<bus[k].s_time_min ;
cout<<"\t\t"<<bus[k].desti<<'\t'<<setfill('0')<<setw(2)
<<bus[k].d_time_hour<<":"<<setfill('0')<<setw(2)
<<bus[k].d_time_min<<"\t\t"<<bus[k].price <<endl;
}
}
if(t==0)
cout<<"无信息"<<endl;
cout<<"继续查询?(是按1,否按其它键):";
char w;
cin>>w;
if(w=='1')
goto r;
bcdp();
}
void bccx_start() //起点和开车时间查询子函数
{
system("cls");
ifstream ifile;
ifile.open("d:\\班次信息.txt");
for(int i1=0;!ifile.fail();i1++)
{
char p1,p2;
ifile>>bus[i1].bus_num>>bus[i1].max_num
>>bus[i1].shengyu>>bus[i1].starting
>>bus[i1].s_time_hour>>p1>>bus[i1].s_time_min
>>bus[i1].desti >>bus[i1].d_time_hour>>p2
>>bus[i1].d_time_min>>bus[i1].price ;
}
ifile.close();
c: cout<<"请输入起点:";
char s[20];
cin>>s;
cout<<"请输入开车时间:";
int t_h,t_m;
cin>>t_h;cin>>t_m;
bool m=0;
for(int k=0;k<=i1-1;k++)
{
if((strcmp(bus[k].starting,s)==0)&&(bus[k].s_time_hour==t_h)&&(bus[k].s_time_min==t_m))
{
m=1;
cout<<"班次"<<'\t'<<"最大载客数"<<'\t'<<"剩余票数"
<<'\t'<<"起点"<<'\t'<<"开车时间"<<"终点"<<'\t'
<<"到达终点站时间"<<'\t'<<"单价(元)"<<endl;
cout<<bus[k].bus_num<<'\t'<<bus[k].max_num
<<"\t\t"<<bus[k].shengyu<<"\t\t"<<bus[k].starting
<<'\t'<<setfill('0')<<setw(2)<<setfill('0')<<setw(2)
<<bus[k].s_time_hour<<":"<<setfill('0')<<setw(2)<<bus[k].s_time_min ;
cout<<"\t\t"<<bus[k].desti<<'\t'<<setfill('0')<<setw(2)<<bus[k].d_time_hour<<":"
<<setfill('0')<<setw(2)<<bus[k].d_time_min<<"\t\t"<<bus[k].price <<endl;
}
}
if(m==0)
cout<<"无信息"<<endl;
cout<<"继续查询?(是按1,否按其它):";
char w;
cin>>w;
if(w=='1')
goto c;
bcdp();
}
void bccx_desti() //终点和开车时间查询子函数
{
system("cls");
ifstream ifile;
ifile.open("d:\\班次信息.txt");
for(int i1=0;!ifile.fail();i1++)
{
char p1,p2;
ifile>>bus[i1].bus_num>>bus[i1].max_num
>>bus[i1].shengyu>>bus[i1].starting
>>bus[i1].s_time_hour>>p1>>bus[i1].s_time_min
>>bus[i1].desti >>bus[i1].d_time_hour>>p2
>>bus[i1].d_time_min>>bus[i1].price ;
}
ifile.close();
c: cout<<"请输入终点:";
char s[20];
cin>>s;
cout<<"请输入开车时间:";
int t_h,t_m;
cin>>t_h;cin>>t_m;
bool m=0;
for(int k=0;k<=i1-1;k++)
{
if((strcmp(bus[k].starting,s)==0)&&(bus[k].s_time_hour==t_h)&&(bus[k].s_time_min==t_m))
{
m=1;
cout<<"班次"<<'\t'<<"最大载客数"<<'\t'<<"剩余票数"
<<'\t'<<"起点"<<'\t'<<"开车时间"<<"终点"<<'\t'
<<"到达终点站时间"<<'\t'<<"单价(元)"<<endl;
cout<<bus[k].bus_num<<'\t'<<bus[k].max_num
<<"\t\t"<<bus[k].shengyu<<"\t\t"<<bus[k].starting
<<'\t'<<setfill('0')<<setw(2)<<bus[k].s_time_hour<<":"
<<setfill('0')<<setw(2)<<bus[k].s_time_min ;
cout<<"\t\t"<<bus[k].desti<<'\t'<<setfill('0')<<setw(2)<<bus[k].d_time_hour<<":"
<<setfill('0')<<setw(2)<<bus[k].d_time_min<<"\t\t"<<bus[k].price <<endl;
}
}
if(m==0)
cout<<"无信息"<<endl;
cout<<"继续查询?(是按1,否按其他):";
char w;
cin>>w;
if(w=='1')
goto c;
bcdp();
}
void bcdp() //班次订票函数
{
e:cout<<"是否进入订票功能?(是按1,输入其他返回主菜单):";
char x;
cin>>x;
while(x=='1')
{
char start[20],end[20];
int t_h,t_m;
int num;
bool flag=0;
ifstream ifile;
ifile.open("d:\\班次信息.txt");
for(int i1=0;!ifile.fail();i1++)
{
char p1,p2;
ifile>>bus[i1].bus_num>>bus[i1].max_num
>>bus[i1].shengyu>>bus[i1].starting
>>bus[i1].s_time_hour>>p1>>bus[i1].s_time_min
>>bus[i1].desti >>bus[i1].d_time_hour>>p2
>>bus[i1].d_time_min>>bus[i1].price ;
}
ifile.close();
cout<<"按照要求输入订票信息:"<<endl;
cout<<"请输入起点:";
cin>>start;
cout<<"请输入终点:";
cin>>end;
cout<<"请输入开车时间(时,分):";
cin>>t_h;
cin>>t_m;
cout<<"请输入所需订购的票数:";
cin>>num;
for(int k=0;k<=i1-1;k++)
{
if((strcmp(start,bus[k].starting)==0)&&(strcmp(end,bus[k].desti)==0))
{
if((t_h==bus[k].s_time_hour)&&(t_m==bus[k].s_time_min))
{
if(num<=bus[k].shengyu)
{
flag=1;
char n;
if(!bcqx(k))
{
system("cls");
cout<<"该班次已取消!"<<endl;
Sleep(2000);
system("cls");
goto e;
}
if(!time_compare(k))
{
system("cls");
cout<<"售票时间已过,无法订票!"<<endl;
Sleep(2000);
system("cls");
goto e;
}
cout<<"存在您要购买的车票,是否订票?是按1,输出其他则不订票:";
cin>>n;
if(n=='1')
{
system("cls");
cout<<"请按照要求输入您的个人信息:"<<endl;
cout<<"请输入您的身份证号:";
cin>>pa[j].ID_num ;
cout<<"请输入您的姓名:";
cin>>pa[j].name ;
cout<<"请输入您的性别:";
cin>>pa[j].sex ;
cout<<"请输入您的出生日期(年,月,日):";
cin>>pa[j].birthday ;
pa[j].seat_num+=num;
cout<<"确定订票?(是按1,输入其他不订票):"<<endl;
cin>>n;
if(n=='1')
{
strcpy(pa[j].bus_num ,bus[k].bus_num );
int money;
bus[k].shengyu-=num;
money=num*bus[k].price;
cout<<"订票成功!"<<endl;
cout<<"车票信息:"<<endl;
cout<<"班次号 开车时间 购票数(张) 单价(元) 总计(元)"<<endl;
cout<<pa[j].bus_num <<"\t "<<bus[k].s_time_hour <<":"<<setfill('0')<<setw(2)<<bus[k].s_time_min <<"\t\t"
<<num<<"\t "<<bus[k].price<<"\t "<<money<<endl;
ofstream ofile;
ofile.open("d:\\乘客信息.txt",ios::out | ios::app);
ofile<<pa[j].bus_num <<"\t"<<pa[j].ID_num <<"\t"
<<pa[j].name <<"\t"<<pa[j].sex <<"\t"
<<pa[j].birthday<<"\t"<<pa[j].seat_num<<endl;
ofile.close();
j++;
ofstream wfile;
wfile.open("d:\\班次信息.txt",ios::trunc);
for(int q=0;q<i1-1;q++)
{
ofstream ofile;
ofile.open("d:\\班次信息.txt",ios::out|ios::app);
ofile<<bus[q].bus_num <<'\t'<<bus[q].max_num <<'\t'<<bus[q].shengyu<<'\t';
ofile<<bus[q].starting<<'\t'<<setfill('0')<<setw(2)<<bus[q].s_time_hour<<":"
<<setfill('0')<<setw(2)<<bus[q].s_time_min;
ofile<<'\t'<<bus[q].desti<<'\t'<<setfill('0')<<setw(2)<<bus[q].d_time_hour
<<":"<<setfill('0')<<setw(2)<<bus[q].d_time_min
<<'\t'<<bus[q].price <<endl;
ofile.close();
}
}
}
}
}
}
}
if(flag==0)
{
cout<<"对不起,没有符合您要求的车票!"<<endl;
}
cout<<"确定需要继续订票?(确定则输入“1”,输入其他退出订票):";
cin>>x;
system("cls");
}
}
bool time_compare(int i)//与系统时间比较,返回0表示时间已经过去
{
ifstream ifile;
ifile.open("d:\\班次信息.txt");
for(int i1=0;!ifile.fail();i1++)
{
char p1,p2;
ifile>>bus[i1].bus_num>>bus[i1].max_num
>>bus[i1].shengyu>>bus[i1].starting
>>bus[i1].s_time_hour>>p1>>bus[i1].s_time_min
>>bus[i1].desti >>bus[i1].d_time_hour>>p2
>>bus[i1].d_time_min>>bus[i1].price ;
}
ifile.close();
time_t ti;
struct tm *now;
ti=time(NULL);
now=localtime(&ti);
if((now->tm_hour==bus[i].s_time_hour &&now->tm_min+5>=bus[i].s_time_min )
||(now->tm_hour>bus[i].s_time_hour ))
{
return 0;
}
return 1;
}
课程设计程序(改进程序)
最新推荐文章于 2024-11-17 13:28:46 发布