课程设计程序(改进程序)

/*****班车信息管理系统*****/
#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;
}


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值