c++课程设计-车票管理系统
- 格式:doc
- 大小:530.00 KB
- 文档页数:15
c++课程设计-车票管理系统
-标准化文件发布号:(9556-EUATWK-MWUB-WUNN-INNUL-DDQTY-KII
void Bus_link::input()
{
Bus_infor *p,*p2=NULL;
p=head;
int n;
while(p->next)
p=p->next;
while(n)
{
p2=new Bus_infor;
p2->input();
p->next=p2;
p2->next=NULL;
p=p->next;
Bus_link::setkey(1);
cout<<"\t\t\t按1继续,按0返回:";
cin>>n;
}
}
#include
#include
#include
#include
#include
using namespace std; //命名空间
class Bus_infor
{
private:
static int Bus_No; //静态数据成员,统计当前所有的Bus_infor对象的数目
char start[20]; //起点站
char end[20]; //终点站
int Bus_order; //班次号
int all_tickted; //额定载量
int tickted; //已定票人数
int Hour_start,Minute_start; //发车时间
float GoHour; //行车时间
public:
Bus_infor();
~Bus_infor();
Bus_infor *next;
void input(); //录入函数
void input(ifstream & is); //读取函数
void output(); //输出函数
void output(ofstream & os); //写入函数
void Order_tickt(int n); //定票函数
void Unorder_tickt(int n); //退票函数
void GetTime_start(); //获取发车时间函数
bool GetTime(); //判断当前班次状况函数
int Get_all_tickted() { return all_tickted; } //内联函数,返回额定载量
int Get_tickted() { return tickted; } //返回已定票人数
int Get_bus_order() { return Bus_order; } //返回班次号
string Get_end()const; //返回终点站的字符串
};
int Bus_infor::Bus_No=1;
Bus_infor::Bus_infor()
{
Bus_No++;
tickted=0;
}
Bus_infor::~Bus_infor()
{
Bus_No--;
}
void Bus_infor::input()
{
cout<<"\t\t\t按提示输入:"<
while(1)
{
cin>>Bus_order;
if (cin.fail()) //判断输入的数据类型是否有错
{
cout << "\n班次输入错误,请重新输入:";
cin.clear();
cin.get();
}
else
break;
}
cout<<"请输入车的额定座位数: ";
while(1)
{
cin>>all_tickted;
if (cin.fail()) //判断输入的数据类型是否有错
{
cout << "\n座位数输入错误,请重新输入:";
cin.clear();
cin.get();
}
else
break;
}
GetTime_start();
cout<<"请输入行车时间:";
while(1)
{
cin>>GoHour;
if (cin.fail()) //判断输入的数据类型是否有错
{
cout << "\n行车时间输入错误,请重新输入:";
cin.clear();
cin.get();
}
else
break;
}
cout<<"请输入起始站与终点站:";
cin>>start;cin>>end;
cout<<"是否清空售票(y/n)
";
char a;cin>>a;
if(a=='y'||a=='Y') tickted=0;
}
void Bus_infor::input(ifstream & is)
{
is>>Bus_order>>Hour_start>>Minute_start>>start>>end>>GoHour>>all_tickted>>tickted;
is.get();
}
void Bus_infor::output()
{
cout<<" "<
显示个,以符合时间格式
{
cout<
else
{
cout<
cout<
cout<<"\t 此班已出发"<
cout<<"\t 此班未出发"<
void Bus_infor::output(ofstream & os)
{
os<
void Bus_infor::GetTime_start()
{
cout<<"请输入始发时间(时分):";
while(1)
{
cin>>Hour_start>>Minute_start;
if (cin.fail()) //判断输入的数据类型是否有错
{
cout << "\n时间输入错误,请重新输入:";
cin.clear();
cin.get();
}
else if(Hour_start<0||Hour_start>24||Minute_start<0||Minute_start>60)
cout<<"\n时间格式出错,请重新输入:"; ////判断时间格式是否出错,小时不能
小于大于,分钟不能小于大于
else
break;
}
}
bool Bus_infor::GetTime()
{
struct tm *local;
time_t t;
t=time(NULL);
local=localtime(&t); //获取当前系统时间
if(local->tm_hour
return 1; //比较当前时间与发车时间,获得班次的当前状况,返回表示班次未出发
else
return 0; //返回表示班次已出发
}
void Bus_infor::Order_tickt(int n)
{
tickted=tickted+n;
}
void Bus_infor::Unorder_tickt(int n)
{
tickted=tickted-n;
}
string Bus_infor::Get_end()const
{
string s=end;
return s;
}
class Bus_link
{
public:
Bus_link(){head=new Bus_infor;head->next=NULL;key=0;} //带参数的构造函数
~Bus_link(){delete head;} //析构函数
void input(); //录入车票信息
void mend(); //修改车票信息
void del(); //删除车票信息
int find(Bus_infor **p,int num,char *pn); //查找函数
void found(); //查询车票信息
void show(); //显示车票信息
void Order(); //定购车票信息
void Unorder(); //退还车票信息
void save(); //保存车票信息
void begin(); //初始化车票信息
void clear(); //清除函数
void about(); //关于车票信息
char mainmenu(); //主菜单函数
void setkey(int k){ key=k; } //设置系统修改标志
int getkey(){ return key;} //返回系统修改标志
private:
Bus_infor *head; //链表指针
int key; //系统修改标志
int password; //管理员登陆标志
};
void Bus_link::input()